#### v4.3.2 (2025-05-12)

##### Chores

*  up mentions (fcf9e8b7)
*  incrementing version number - v4.3.1 (308e6b9f)
*  update changelog for v4.3.1 (2310a7b8)
*  incrementing version number - v4.3.0 (bff291db)
*  incrementing version number - v4.2.2 (17fecc24)
*  incrementing version number - v4.2.1 (852a270c)
*  incrementing version number - v4.2.0 (87581958)
*  incrementing version number - v4.1.1 (b2afbb16)
*  incrementing version number - v4.1.0 (36c80850)
*  incrementing version number - v4.0.6 (4a52fb2e)
*  incrementing version number - v4.0.5 (1792a62b)
*  incrementing version number - v4.0.4 (b1125cce)
*  incrementing version number - v4.0.3 (2b65c735)
*  incrementing version number - v4.0.2 (73fe5fcf)
*  incrementing version number - v4.0.1 (a461b758)
*  incrementing version number - v4.0.0 (c1eaee45)

##### Bug Fixes

*  sql injection in sortedSetScan (16504bad)
*  escape flag filters (285d438c)
*  #13407, don't restart user jobs (31be083e)
*  closes #13405, catch errors in ap.verify (8174578c)
*  send proper accept header for outgoing webfinger requests (20ab9069)
*  wrap generateCollection calls in try..catch to send 404 if thrown (64fdf91b)
*  #13397, null values in category sync list (26e6a222)
*  #13392, regression from c6f2c87, unable to unfollow from pending follows (401ff797)
*  #13397, update getCidByHandle to work with remote categories, fix sync with handles causing issues with null entries (a9a5ab5e)
*  correct stage name in dev dockerfile (#13393) (10077d0f)

##### Refactors

*  wrap ap routes in try/catch (00668bdc)
*  call verify if request is POST (dfa21329)

#### v4.3.1 (2025-05-07)

##### Chores

*  node 18 eol (800426d6)
*  up widgets (ee2f91ad)
*  up themes (18867fb1)
*  update bundled plugins to use eslint9 (343f13e1)
*  incrementing version number - v4.3.0 (bff291db)
*  update changelog for v4.3.0 (76c03019)
*  incrementing version number - v4.2.2 (17fecc24)
*  incrementing version number - v4.2.1 (852a270c)
*  incrementing version number - v4.2.0 (87581958)
*  incrementing version number - v4.1.1 (b2afbb16)
*  incrementing version number - v4.1.0 (36c80850)
*  incrementing version number - v4.0.6 (4a52fb2e)
*  incrementing version number - v4.0.5 (1792a62b)
*  incrementing version number - v4.0.4 (b1125cce)
*  incrementing version number - v4.0.3 (2b65c735)
*  incrementing version number - v4.0.2 (73fe5fcf)
*  incrementing version number - v4.0.1 (a461b758)
*  incrementing version number - v4.0.0 (c1eaee45)

##### Other Changes

* //github.com/NodeBB/NodeBB/issues/13367 (d35aad31)

##### Tests

*  fix android test (31af05c7)
*  fix android test (25979294)
*  fix a test (7ef79981)

#### v4.3.0 (2025-05-01)

##### Chores

* **i18n:**
  *  fallback strings for new resources: nodebb.category, nodebb.world (2827498d)
  *  fallback strings for new resources: nodebb.error (c889d60c)
  *  fallback strings for new resources: nodebb.admin-settings-user, nodebb.user (d3409b40)
  *  fallback strings for new resources: nodebb.global (6c163f7c)
  *  fallback strings for new resources: nodebb.notifications (dcf34e3d)
  *  fallback strings for new resources: nodebb.error (b1e95bc6)
*  v4.3.0-beta.2 (e3e78445)
*  v4.3.0-beta.1 (0689da81)
*  cut 4.3.0-alpha.3 (2e3e675b)
*  cut v4.3.0-alpha.2 (c4690392)
*  cut v4.3.0-alpha (4379df68)
*  up pg, pg-cursor (#13351) (b57ce29d)
*  incrementing version number - v4.2.2 (17fecc24)
*  update changelog for v4.2.2 (ce196589)
*  up eslint-nodebb (853244a1)
*  up themes (4301bf97)
*  incrementing version number - v4.2.1 (852a270c)
*  up dbsearch (bc8126c7)
*  up dbsearch (4b9331d9)
*  incrementing version number - v4.2.0 (87581958)
*  incrementing version number - v4.1.1 (b2afbb16)
*  incrementing version number - v4.1.0 (36c80850)
*  incrementing version number - v4.0.6 (4a52fb2e)
*  incrementing version number - v4.0.5 (1792a62b)
*  incrementing version number - v4.0.4 (b1125cce)
*  incrementing version number - v4.0.3 (2b65c735)
*  incrementing version number - v4.0.2 (73fe5fcf)
*  incrementing version number - v4.0.1 (a461b758)
*  incrementing version number - v4.0.0 (c1eaee45)
* **deps:**
  *  update redis docker tag to v7.4.3 (#13358) (7800016f)
  *  update dependency sass-embedded to v1.87.0 (#13347) (bee79784)
  *  update dependency @eslint/js to v9.25.1 (#13344) (25e4e844)
  *  update dependency eslint-config-nodebb to v1.1.3 (#13343) (d687fe60)
  *  update dependency @eslint/js to v9.25.0 (#13342) (0cc492c6)
  *  update dependency lint-staged to v15.5.1 (#13319) (9046acea)
  *  update dependency jsdom to v26.1.0 (#13330) (3f000ed6)
  *  update dependency @eslint/js to v9.24.0 (#13310) (41be539f)
  *  update dependency sass-embedded to v1.86.3 (#13301) (0bd43940)
  *  update dependency sass-embedded to v1.86.2 (#13291) (fdcd2a84)
  *  update dependency @apidevtools/swagger-parser to v10.1.1 (#13037) (3305c7b0)

##### Documentation Changes

*  update openapi spec with new (missing) properties (b32b7fcc)

##### New Features

*  upgrade script to remote duplicate remote users and categories as per #13352 (5aee2f26)
*  add new mixin clamp-fade, and handler for expanding it in category description (decc9cf1)
*  handle Announce(Update(Note)) as well, #13320 (04473669)
*  #13255, proper handling of upvotes shared by group actors (74e32a17)
*  send the whole post content in `summary` as well (5c5fd3d4)
*  show/hide categories on world page, #13255 (804208b7)
*  notice on remote categories that have no local followers, #13255 (93a5b35f)
*  add new option to categorySearch module, `defaultCategories`, use to populate the category list when you don't want to poll backend for the main category list (a487d5f6)
*  category quick search on world page, theme version updates, #13255 (17909516)
*  show tracked/watched remote categories in world page, #13255 (34ab6771)
*  remote user to category migration should also migrate local user follows into category watches (ac7b7f81)
*  allowing manual group assertion via category search input (23b3148c)
*  remote group actors migrated to categories if they were previous asserted as remote users (d19f692b)
*  #13255 new topics in remote category addresses remote category, tests, fixes to tests (b8c531d5)
*  #13255, deliver asserted topics to remote category followers (9c1d5cd3)
*  #13255, add category name and handle to category search zset (876d1b04)
*  integrate remote category pruning into actor pruning logic (9b5855f7)
*  migration of group-as-user to group-as-category, remote category purging, more tests (4be0f73a)
*  asserted topics and posts to remote categories will notify and add to unread based on remote category watch state (f483e883)
*  also include category in `to` field when mocking post for federation (f73f727d)
*  chat allow/deny list, closes #13359 (a5afad27)
*  show topic follower counts (#13326) (bf2d4c46)
*  federate out as:Article with `preview` for root-level posts in a topic, instead of `as:Note` (3c4be773)
*  body-parser-2.x test (#13278) (389bc062)
*  upgrade commander, get rid of custom color & wrapping code (485562d5)
*  testing eslint9 (#13266) (68136641)

##### Bug Fixes

*  bump harmony (2bf2e556)
*  #13352, also do the webfinger backreference check when calling assertGroup (2572cbf5)
*  regression that caused non-public content with source.content to fail parsing (e9b3306e)
*  closes #13360, catch error in buildAccountData middleware (537a7428)
*  bug where disparate ids all claiming to be the same handle were causing duplicate remote users due to collisions, #13352 (c2a3ef81)
*  posts incorrectly excluded from results if result pid is in a remote category (a0a8c462)
*  ap helpers.makeSet to handle undefined property values (d020e334)
*  add back localCategories to categorySearch when defaultCategories is supplied (d58d5861)
*  remote bare hash for remote users on prune as well (f02d9661)
*  missing teasers for remote categories on /world (695312f1)
*  remove superfluous privilege filter in markAllRead (0fab4255)
*  reversed image and icon for remote categories, omit fa icon if remote category has icon property set, #13255 (dabcefaf)
*  closes #13289, id can be null (f1d1d082)
*  marking remote category topics as read (4a7111d0)
*  markAllRead to get tids based on same logic as unread page, instead of marking all recent posts read (b0236735)
*  key ownership cross-check to also work with remote categories, #13255 (6dee3e56)
*  #13255, assert all recipients of the main post when asserting a note, so that remote categories can be discovered (1f046782)
*  remote categories should not show up in a user's follow lists (4d1d7c3d)
*  #13255, remote user-to-category migration should not move shares that are already in an existing cid (3213da1c)
*  proper handling of actors.qualify response (f2e0ba21)
*  missing dep (2cb6d10d)
*  topics in remote categories showing up in /recent (c4274a3d)
*  regression that caused resolveInboxes to always return empty, added tests for resolveInboxes (0246c146)
*  spread fail, @julianlam (c1b71964)
*  filter out non-asserted targets when sending ap messages, diff. getter method when passed-in ID is a remote category (309deb0d)
*  tag whitelist check socket call for remote categories (c5901e0d)
*  migrate topics as system user instead of uid 0 (ee34396c)
*  do not send out ap (undo:)follow if local user or category is (not)already following (c6f2c874)
*  allow category controller to respond also by remote category id (0b333fb7)
*  #13255, update category search logic to allow for remote categories (6e23de46)
*  delete shares zset on account deletion (7ccd6b73)
*  persona tooltip so it doesn't appear when dropdowns are open (ea9f7903)
*  lang keys (4277765b)
*  closes #13353, don't use index for finding plugin data (ed92ffaf)
*  regression on search query that is a url, via 3526c937ccec843d4637efa894f49efc9bac5493 (41252197)
*  closes #13313, add error:post-deleted (b49a4586)
*  upgrade script (52ca086b)
*  tag urls getting double escaped (#13306) (3526c937)
*  notifications.markAllRead (bf243e07)
*  posts.uploads.usage since paths changed (c41c7e8a)
*  req.body can be undefined (cd70e6c6)
*  closes #13298, catch exceptions in webfinger and nodeinfo (bbfd6445)
*  closes #13205, make parent post font-size small until expanded (ef98f8f9)
*  closes #13275, set 'announces' after adding to zset to prevent race condition (2c59007b)
*  use slug instead of groupname in acp for groups (d9f33204)
*  do not await the batch call to sendMessage (aa4f23bf)
*  commenting out outward federation of Add activity, pending forumwg discussion (4b22f297)
*  on user deletion during assertion (due to 410), if delete fails, just run ap post-deletion to clean up (4bbe27d4)
*  race condition in test (807a8c66)
* **deps:**
  *  update dependency pg to v8.15.6 (#13362) (7f533167)
  *  update dependency pg-cursor to v2.14.6 (#13363) (03e06784)
  *  update dependency webpack to v5.99.7 (#13361) (0a3e4d61)
  *  update dependency pg to v8.15.5 (#13356) (74558b0f)
  *  update dependency ace-builds to v1.40.1 (#13354) (4eec053a)
  *  update dependency esbuild to v0.25.3 (#13355) (43d7d47f)
  *  update dependency pg-cursor to v2.14.5 (#13350) (00be573d)
  *  update dependency pg to v8.15.2 (#13349) (b49436de)
  *  update dependency sass to v1.87.0 (#13348) (50a58bbc)
  *  update dependency connect-redis to v8.0.3 (#13345) (8d84206f)
  *  update dependency mongodb to v6.16.0 (#13346) (3c24810d)
  *  update dependency chart.js to v4.4.9 (#13328) (0c5ef0e8)
  *  update dependency nconf to v0.13.0 (#13333) (6f8c7aba)
  *  update dependency ace-builds to v1.40.0 (#13331) (5d461f04)
  *  update dependency nodemailer to v6.10.1 (#13329) (6fbb2b4b)
  *  update dependency ioredis to v5.6.1 (#13318) (74d9806d)
  *  update dependency cron to v4.3.0 (#13332) (f96ce25a)
  *  update dependency sanitize-html to v2.16.0 (#13339) (24a5f407)
  *  update dependency webpack to v5.99.6 (#13341) (cac1c37b)
  *  update dependency bootbox to v6.0.3 (#13327) (8f784bb3)
  *  update dependency nodebb-theme-harmony to v2.1.6 (#13314) (1bd12622)
  *  update dependency nodebb-theme-persona to v14.1.5 (#13316) (6de89952)
  *  update dependency webpack to v5.99.5 (#13312) (140440cc)
  *  update dependency cron to v4.1.4 (#13307) (5fa09a67)
  *  update dependency nodebb-theme-persona to v14.1.2 (#13311) (6f3e9853)
  *  update dependency nodebb-theme-harmony to v2.1.3 (#13309) (9905e6aa)
  *  update dependency bootswatch to v5.3.5 (#13308) (4b511546)
  *  update dependency bootstrap to v5.3.5 (#13304) (22b3dc65)
  *  update dependency sass to v1.86.3 (#13302) (70e788ba)
  *  update dependency spdx-license-list to v6.10.0 (#13303) (cd2ed209)
  *  update dependency bootstrap to v5.3.4 (#13299) (d9074dbc)
  *  update dependency nodebb-plugin-mentions to v4.7.3 (#13294) (dd3d1917)
  *  update dependency bootbox to v6.0.2 (#13293) (dfd2621e)
  *  update dependency sass to v1.86.2 (#13295) (1a763cbb)
  *  update dependency benchpressjs to v2.5.5 (#13292) (311cbec2)
  *  update dependency nodebb-theme-harmony to v2.1.0 (#13296) (5caadd2d)
  *  update dependency esbuild to v0.25.2 (#13284) (e6a02176)
  *  update dependency cron to v4.1.3 (#13282) (c46c2623)
  *  update dependency cron to v4.1.2 (#13281) (11f7b42c)
  *  update dependency satori to v0.12.2 (#13280) (28ec8a79)
  *  update dependency cron to v4.1.1 (#13276) (57819810)
  *  update dependency nodebb-plugin-composer-default to v10.2.49 (#13272) (40ecffa0)
  *  update dependency nodebb-theme-harmony to v2.0.42 (#13274) (5b40c149)
  *  bump mentions (7d32cdac)
  *  update dependency validator to v13.15.0 (#13273) (d275af60)
  *  update dependency csrf-sync to v4.1.0 (#13268) (92caab97)
  *  update dependency nodebb-theme-persona to v14.0.17 (#13263) (ca479efc)
  *  update dependency nodebb-theme-harmony to v2.0.41 (#13262) (33c25ce6)
  *  update dependency nodebb-plugin-composer-default to v10.2.48 (#13261) (5b98af9f)
  *  update dependency sanitize-html to v2.15.0 (#13264) (e17163ad)
  *  update dependency ace-builds to v1.39.1 (#13260) (532fea99)

##### Other Changes

*  yup. (28b7a203)
*  fix tabs (4cdfcf95)
*  fix typo (352c42d8)

##### Refactors

*  use promise.all (74661381)
*  categories.sortTidsBySet to not take cid, retrieve from tids themselves (bfc7daf2)
*  allow topics to be asserted directly into a remote category, or -1 otherwise (0fa98237)
*  ability to browse to remote categories, group actor assertion logic, etc. -- no logic to assign topics to remote categories yet (1f40995f)
*  remove datepicker (be7959e5)
*  add sping/ping into openapi (8ffbc359)
*  moved these rules to nodebb-config (e184c910)
*  switch eslint configs to esm (92d6e022)
*  move topic/post menu lists to core (9f93cc9b)
*  show topic tools if plugins add them (87aacc89)
*  remove reply icons (b73fb67b)
*  remove debug log (021b3af0)
*  break long line (c93dc589)
*  only write to db on runJobs processes (a6839b61)
*  use bulk increment (667367a6)
*  remove spammy error log (9637abca)

##### Reverts

*  use of vanity domains, needs rethinking. Originally added in 709a02d97ae7acbab08c7fa1fecfd01e0dcadcc7 (55c89969)

##### Tests

*  article for new topic, note for replies (3e508d6c)
*  missing clear ap send cache (512f889e)
*  additional test for ensuring handle:uid is continually set even after re-assertion (39fc9bae)
*  additional test for remote category topic assertion when ignoring category (c2f77cee)
*  #13255, reply to topic in remote category addresses remote category (85e7c1a2)
*  remote user pruning tests (53dc79a1)
*  introduce overrides into person and group mocks (4f748158)
*  have ap helper mocks for person and group auto-save to ap cache (80069a19)
*  add failing tests for actor/group assertion via wrong method, remote user to category migration (afc47643)
*  add tests for topics slotting into remote categories if addressed (804052f2)
*  group actor assertion tests (ca9a5b6d)
*  shorter test (e0235a1e)
*  eslint for tests (f864a5a4)
*  fix tests (321defb9)
*  fix test expecting Note when it is now Article (5d94f2ca)

#### v4.2.2 (2025-04-22)

##### Chores

*  incrementing version number - v4.2.1 (852a270c)
*  update changelog for v4.2.1 (4cee37b9)
*  incrementing version number - v4.2.0 (87581958)
*  incrementing version number - v4.1.1 (b2afbb16)
*  incrementing version number - v4.1.0 (36c80850)
*  incrementing version number - v4.0.6 (4a52fb2e)
*  incrementing version number - v4.0.5 (1792a62b)
*  incrementing version number - v4.0.4 (b1125cce)
*  incrementing version number - v4.0.3 (2b65c735)
*  incrementing version number - v4.0.2 (73fe5fcf)
*  incrementing version number - v4.0.1 (a461b758)
*  incrementing version number - v4.0.0 (c1eaee45)

##### Bug Fixes

*  escape displayname in topic events (42a5a127)
*  closes #13336, allow main post deletion from "delete posts" tool (4f13eb03)
*  bug where generateHandle would throw when passed in an invalid slug (2a98a9b3)

##### Other Changes

*  fix semi (6832541c)
*  fix missing comma (d59a5728)

##### Refactors

*  use sortedSetsCard (46ed56cf)

#### v4.2.1 (2025-04-10)

##### Chores

*  up harmony (d161eb6f)
*  up persona (2237e17a)
*  up persona (75f1f6fb)
*  incrementing version number - v4.2.0 (87581958)
*  update changelog for v4.2.0 (c9e0198d)
*  incrementing version number - v4.1.1 (b2afbb16)
*  incrementing version number - v4.1.0 (36c80850)
*  incrementing version number - v4.0.6 (4a52fb2e)
*  incrementing version number - v4.0.5 (1792a62b)
*  incrementing version number - v4.0.4 (b1125cce)
*  incrementing version number - v4.0.3 (2b65c735)
*  incrementing version number - v4.0.2 (73fe5fcf)
*  incrementing version number - v4.0.1 (a461b758)
*  incrementing version number - v4.0.0 (c1eaee45)

##### Bug Fixes

*  closes #13317, fix email confirm for changing email (33d50637)
*  check if latestversion is valid before using semver.gt (6fe066ce)
*  closes #13256, allow keyboard access to icon colors (c6620170)

##### Refactors

*  get rid of async.parallel (e722e869)
*  remove pointless true (747457d7)
*  make register intro heading (c258f597)

#### v4.2.0 (2025-03-19)

##### Chores

* **deps:**
  *  update commitlint monorepo to v19.8.0 (#13244) (ee3c0bf4)
  *  update dependency lint-staged to v15.5.0 (#13245) (f4fe3f5f)
  *  update dependency sass-embedded to v1.86.0 (#13251) (3bb861ae)
*  up widgets (ed57f896)
*  incrementing version number - v4.1.1 (b2afbb16)
*  update changelog for v4.1.1 (2c3f8561)
*  add missing file to az lang (d7116adc)
*  language labels for az/pl (61d17c95)
*  alphabetize transifex config file languages (b7bb35f8)
*  incrementing version number - v4.1.0 (36c80850)
*  incrementing version number - v4.0.6 (4a52fb2e)
*  incrementing version number - v4.0.5 (1792a62b)
*  incrementing version number - v4.0.4 (b1125cce)
*  incrementing version number - v4.0.3 (2b65c735)
*  incrementing version number - v4.0.2 (73fe5fcf)
*  incrementing version number - v4.0.1 (a461b758)
*  incrementing version number - v4.0.0 (c1eaee45)
* **i18n:**
  *  fallback strings for new resources: nodebb.admin-settings-email (866cd539)
  *  fallback strings for new resources: nodebb.error (b4dfd7fe)
  *  fallback strings for new resources: nodebb.admin-settings-chat (2f957655)
  *  fallback strings for new resources: nodebb.user (78a2c087)
  *  fallback strings for new resources: nodebb.admin-manage-categories (c3993018)
  *  fallback strings for new resources: nodebb.admin-manage-categories (efdb416c)
  *  fallback strings for new resources: nodebb.category (8314d8ba)

##### Documentation Changes

*  openapi schema for admin/extend/plugins (f2a16422)
*  update openapi schema from 6c26d9f4a3c398b4d7add0a2d9c91685a0336a74 (128dd2d3)

##### New Features

*  1b12 category announce on post move to a new tid, #13236 (254f0738)
*  add Azerbaijani localisations, təşəkkür edirəm! (825e4c70)
*  if an incoming remote message is too long, don't create the room, but notify the local recipients instead (885b83e5)
*  new ACP config for max length of remote chat messages, #13174 (81509b13)
*  add `federatedDescription` property to a category. (dfabadbe)
*  add link to category edit page in acp category sidebar (fa8216f2)
*  add additional logic that checks whether a cid follows the activity actor, and asserts note into that category if so (3589c570)
*  move category sidebar to ACP partial, add sidebar to category-federation (dc2dcaf1)
*  add line to description exposing a category's handle if accessible by fediverse pseudo-user, closes #13126 (6c26d9f4)
*  call announceObject on topic fork, #13215 (e3edfef8)

##### Bug Fixes

*  wrong property name used (08796a0a)
*  #13254, configurable ap content prune (80e03c85)
*  only 1b12 announce topic fork if OP is local, fix race condition in tests (945617cb)
*  bug where remote post was attempted to be announced on post move (291af926)
*  handling of `href` in remote object attachments, #13169 (44354dac)
*  #13100, direct access to a tag page no longer excludes cid -1 (14fd33ce)
*  expose remote url in user object (78c9239b)
*  hide disable and purge buttons from category-federation.tpl (43248578)
*  show 'copy settings from' button in acp category sidebar only on category.tpl (1f6871e5)
*  improper cc and object fields in announceObject (deb5ee5e)
*  move AP send logging earlier (dca3c35d)
*  #13224, handle note attributedTo when it is of type object (d9483347)
*  allow actor assertion of loopback actors depending on ACP setting (73aaa990)
* **deps:**
  *  update dependency mongodb to v6.15.0 (#13253) (1c23d0cf)
  *  update dependency pg to v8.14.1 (#13247) (4d6d71d8)
  *  update dependency nodebb-widget-essentials to v7.0.36 (#13250) (dbd0fd22)
  *  update dependency sass to v1.86.0 (#13252) (a1465268)
  *  update dependency esbuild to v0.25.1 (#13243) (ce3bb8b5)
  *  update dependency ioredis to v5.6.0 (#13246) (b96f532b)
  *  update dependency connect-redis to v8.0.2 (#13242) (e90a8b26)
  *  update dependency autoprefixer to v10.4.21 (#13241) (4e69ed56)
  *  update dependency pg-cursor to v2.13.1 (#13248) (92727549)
  *  update fontsource monorepo to v5.2.5 (#13226) (8ca1d6e6)
  *  update dependency mongodb to v6.14.2 (#13229) (b39e4d19)
  *  update dependency terser-webpack-plugin to v5.3.14 (#13230) (7b40e210)
  *  update dependency mongodb to v6.14.1 (#13225) (a58af228)
  *  update dependency tough-cookie to v5.1.2 (#13217) (e19109ad)
  *  update dependency mongodb to v6.14.0 (#13214) (ad680d6a)
  *  update dependency terser-webpack-plugin to v5.3.12 (#13213) (4c22af8c)
  *  update dependency cron to v4.1.0 (#13200) (f56838a3)

##### Refactors

*  remove announceObject in favour of feps.announce, added create activity mock to support (74443c3b)
*  move all input note normalization into helper method, have assertPrivate mock a message object (with said normalization) before sending message (4ec7552c)

##### Tests

*  add url/statusCode to failing test (8982923e)
*  fix remoteUrl property generation, tests for topic moving (0e1006fb)
*  fix actor tests (537880d2)
*  openapi schema for remoteUrl (fc64e89f)
*  add failing test for #13215 (feb94215)
*  adjust test runner detection in AP code (7ceb6d69)
*  new test file for feps (e510e826)
*  log outgoing AP messages for local test runner (6e872b5f)
*  allow ap/notes tests to be run in isolation (98aafaaf)

#### v4.1.1 (2025-03-12)

##### Chores

*  up themes (34414f16)
*  up mentions (39ff5dde)
*  up markdown (1d4be475)
*  incrementing version number - v4.1.0 (36c80850)
*  update changelog for v4.1.0 (3292a858)
*  incrementing version number - v4.0.6 (4a52fb2e)
*  incrementing version number - v4.0.5 (1792a62b)
*  incrementing version number - v4.0.4 (b1125cce)
*  incrementing version number - v4.0.3 (2b65c735)
*  incrementing version number - v4.0.2 (73fe5fcf)
*  incrementing version number - v4.0.1 (a461b758)
*  incrementing version number - v4.0.0 (c1eaee45)

##### New Features

*  allow self-signed certs, closes #13238 (de502cd2)

##### Bug Fixes

*  lang typo (fc9cc8d6)
*  check if folder exists when uploading files in acp (76896859)
*  sanitize category svg image files (810e8dbb)
*  #13094, update unread chats on reconnect (1e6c6f4e)
*  don't update topic lastposttime by announce (6b9f166c)
*  closes #13078, toggle /world navItem when AP is toggled (bef17920)
*  closes #13231, add some text-truncate, match width (bb13ea30)
*  #13228, use timestamp from mainpost/lastpost (48f0f47a)
*  add starterPlan check (40a5314e)
*  closes #13219, only delete local user folder (8dbd50d4)
*  don't crash if there are exceptions in action hooks (30068245)

##### Other Changes

*  missing semi (c4e31395)
*  fix ) (9549f1fa)

##### Refactors

*  prevent following symlinks (e775564f)
*  show simple error if path doesn't exist (6d74ee2f)
*  use navAdmin (b517f05e)
*  dont generate UUID if no email (c83f91bd)
*  show warning if there is no email for validation (84d3fe79)

##### Tests

*  fix inf loop if dirname results in same dir, ie \ (1ca7b7ec)
*  #13078, add nav test (04279718)

#### v4.1.0 (2025-02-27)

##### Chores

*  incrementing version number - v4.0.6 (4a52fb2e)
*  update changelog for v4.0.6 (78bbea30)
*  comment out testing helper call (bad0a4c2)
*  incrementing version number - v4.0.5 (1792a62b)
*  incrementing version number - v4.0.4 (b1125cce)
*  incrementing version number - v4.0.3 (2b65c735)
*  up harmony (ea110a0e)
*  incrementing version number - v4.0.2 (73fe5fcf)
*  incrementing version number - v4.0.1 (a461b758)
*  bump emoji for #13077 as well (ff0de097)
*  fix ap dev helper (b14494b0)
*  add helper method to ease in dev (d7d64a14)
*  add helper method to ease in dev (7d5482b2)
*  incrementing version number - v4.0.0 (c1eaee45)
* **deps:**
  *  update dependency sass-embedded to v1.85.1 (#13208) (3907e6c8)
  *  update postgres docker tag to v17.4 (#13196) (cba2bc5e)
  *  update postgres docker tag to v17.3 (#13162) (47e28a0e)
  *  update dependency sass-embedded to v1.85.0 (#13161) (2258e145)
  *  update commitlint monorepo to v19.7.1 (#13123) (ca6734b3)
  *  update coverallsapp/github-action action to v2.3.6 (#13089) (84b28fae)
  *  update dependency lint-staged to v15.4.3 (#13079) (1d846134)
  *  update dependency mocha to v11.1.0 (#13069) (8e99c97a)
  *  update dependency lint-staged to v15.4.1 (#13060) (153e65bc)
  *  update dependency lint-staged to v15.4.1 (#13060) (37b2b83d)
* **i18n:**
  *  fallback strings for new resources: nodebb.category (00253821)
  *  fallback strings for new resources: nodebb.error (589be143)
  *  fallback strings for new resources: nodebb.themes-harmony (25049714)
  *  fallback strings for new resources: nodebb.admin-settings-advanced (ad6b6132)
  *  fallback strings for new resources: nodebb.themes-harmony (fc063bb0)
  *  fallback strings for new resources: nodebb.admin-settings-general (d41109a0)

##### New Features

*  support remote "Video" type objects in note assertion, #13120 (95f2c4ed)
*  1b12 compatibility (7dc1e8ab)
*  remove activities older than a week (d9e86c7b)
*  federate out Announce of a tid's mainPid if the tid is moved out of cid -1 (b7f9983a)
*  syncUserInboxes to take into account remote topic tags, closes #13074 (637addc4)
*  allow search bar to load remote 7888 Conversations, aka nodebb topics (7687da00)
*  introduce new 'markdown' post parsing type, closes #13077 (b386e4a6)
*  #13066, report canonical URL in user agent for outgoing requests (c3e9cb68)
*  changes to how a topic is presented via ActivityPub; conformance with upcoming changes to 7888 (4fd7a9dc)
*  changes to how a topic is presented via ActivityPub; conformance with upcoming changes to 7888 (adeaff4b)

##### Bug Fixes

*  scheduled topics and posts should return 404 on AP request (428300de)
*  tag handling when remote objects contain tags without leading # symbol (5c3f1cfe)
*  handle multiple types in remote actor payload (65895651)
*  missing db (058befb3)
*  remove handle on category purge (adb430f2)
*  restrict feps methods to real cids (8b717d54)
*  restore old behaviour of 1b12 federating both object and activity (f0ee43dc)
*  send `actor` with 1b12 announce, fixes #13072 again (86b0e591)
*  isArray check (5f3ed76d)
*  delete from payload instead of setting null (489c5ce2)
*  send `actor` with 1b12 announce, fixes #13072 (3cd87f1b)
*  #13139, payload.version can be null (be1598d1)
*  tidChanged (bfd4e68b)
*  bad logic that invisibly broke outgoing user follows completely (334be721)
*  #13076, allow pulling in of topics by their topic URL fix: reapply fixes that were part of since-reverted 4fd7a9dc59b65e8654d704c493f2254793e8d6a9 (c6e6ab43)
*  call relativeToAbsolute helper when generating markdown source content in mocks.notes.public/private (02fb99eb)
*  extend remoteAnchorToLocalProfile ap helper to handle markdown content (db1f8959)
*  incorrect `posts` url in topic posts collection (812ec73e)
*  incorrect `posts` url in topic posts collection (b2530e61)
* **deps:**
  *  update dependency sass to v1.85.1 (#13209) (386ab89f)
  *  update dependency bcryptjs to v3 (#13160) (6ea65678)
  *  update dependency cron to v4 (#13184) (41eec8d7)
  *  update dependency xregexp to v5.1.2 (#13195) (23621eca)
  *  update dependency ace-builds to v1.39.0 (#13197) (a3f5721a)
  *  update dependency chart.js to v4.4.8 (#13182) (474d267e)
  *  update dependency postcss to v8.5.3 (#13183) (5fc4c806)
  *  update dependency mongodb to v6.13.1 (#13187) (77b0160c)
  *  update dependency nodebb-plugin-web-push to v0.7.3 (#13178) (000ceee4)
  *  update dependency sass to v1.85.0 (#13163) (75a7188a)
  *  update dependency pg to v8.13.3 (#13157) (f3c156e9)
  *  update dependency pg-cursor to v2.12.3 (#13158) (6b8e4b39)
  *  update dependency webpack to v5.98.0 (#13159) (db74c1e8)
  *  update dependency nodebb-widget-essentials to v7.0.33 (#13156) (af7f4242)
  *  update dependency pg-cursor to v2.12.2 (#13150) (b5ce9e14)
  *  update dependency compression to v1.8.0 (#13152) (1e52cf34)
  *  update dependency ace-builds to v1.38.0 (#13151) (db0b816c)
  *  update dependency pg to v8.13.2 (#13149) (bea1367d)
  *  update dependency postcss to v8.5.2 (#13144) (3449e76d)
  *  update dependency benchpressjs to v2.5.3 (#13098) (6688edde)
  *  update dependency esbuild to v0.25.0 (#13141) (d7fdd80c)
  *  update dependency tough-cookie to v5.1.1 (#13140) (33ce7239)
  *  update dependency ioredis to v5.5.0 (#13138) (b337e999)
  *  update dependency sass to v1.84.0 (#13128) (f872a768)
  *  update dependency semver to v7.7.1 (#13122) (5f3c5a55)
  *  update dependency mongodb to v6.13.0 (#13106) (31ff6c2e)
  *  update dependency semver to v7.7.0 (#13099) (a348e808)
  *  update dependency nodemailer to v6.10.0 (#13073) (8ab71e4f)
  *  update dependency nodebb-theme-persona to v14.0.2 (#13064) (8ec3ceae)
  *  update dependency nodebb-theme-harmony to v2.0.3 (#13063) (b98d047a)

##### Other Changes

*  remove unused db (06b3d9ad)
*  remove tab (54bc54e1)
*  fix tab (397d28e3)

##### Performance Improvements

*  closes #13145, reduce calls in actors.prune (676acb7e)

##### Refactors

*  remove cid:-1:tids (and variants) from intersection in /world, fixes #13125 (d0561a60)
*  single remove (0784e11b)
*  move 1b12 announce logic out of inbox and into separate feps module (9fd6ac6b)
*  acceptable types in context.js to index.js, allow searching for remote topis by topic url (d644c0f4)
*  Posts.relativeToAbsolute so that the regexes passed to it no longer need a pre-defined length, it is now calculated from the match result, added new regex for markdown image/anchors (f64e6f0f)

##### Tests

*  moved AP actor tests to separate actors.js file, added failing test for scheduled topics (01be4d79)
*  update test to assert the note assertion itself (c6ba56a5)
*  update bcrypt hash for 3.x (bfffbfbe)
*  update pwd test for bcrypt3.x (ca0fa1d3)
*  add sourceContent to spec (d1d55461)
*  adjust webfinger test for updated 404 status code (59afd193)

#### v4.0.6 (2025-02-27)

##### Chores

*  up dbsearch (9e1a0a13)
*  add sourceContent to schema (b2cdd5fd)
*  up harmony (f94cf5ce)
*  up deps (a9563d75)
*  up harmony (08014e7c)
*  up harmony (8385d4ae)
*  up harmony (0a9d28d5)
*  up harmony (c920836a)
*  up esbuild (2ab6a368)
*  up widgets (02a8d9b6)
*  up harmony (05bbefd1)
*  incrementing version number - v4.0.5 (1792a62b)
*  update changelog for v4.0.5 (f84b9fc7)
*  incrementing version number - v4.0.4 (b1125cce)
*  incrementing version number - v4.0.3 (2b65c735)
*  incrementing version number - v4.0.2 (73fe5fcf)
*  incrementing version number - v4.0.1 (a461b758)
*  incrementing version number - v4.0.0 (c1eaee45)

##### New Features

*  match events and parent style (e38d1531)
*  merge consecutive share events (9153f8cf)
* **config:**  add `acpPluginInstallDisabled` option (#13189) (577eee2f)

##### Bug Fixes

*  add missing file (04d5edbb)
*  #13202, private note assertion failure when cc property is missing (c65e1ebb)
*  tests for public and private note assertion, failing test for private note assertion with missing cc prop (efb27ce0)
*  closes #13206, truncate long usernames (51872d54)
*  closes #13207, add localComments (13a13e1d)
*  handle multiple types in remote actor payload (d91b80d2)
*  don't send validation email for pending emails (07957e82)
*  missing db (52b23313)
*  #13198, use email from confirmObj (b4dfc48b)
*  summary post parse (e9d4c7b9)
*  add sourceContent to getPostSummaryByPids (ad92e931)
*  #13193, add lang strings (2c830567)
*  #13194, dont notify about cid=-1 (b8c8ae09)
*  old upgrade script so it doesn't create settings objects (fe980688)
*  escape confirm email in acp manage users (9bfa8853)
*  add missing await on filter:user.logout (c6b8256f)
*  relaxing strict allowedTags configuration for incoming AP content (allowing picture, source, and additional attributes for img) (2ad48f17)

##### Other Changes

*  fix (ec11b0c2)

##### Refactors

*  use sortedSetRemoveBulk (349084d8)
*  don't make db request if there is no code (53a2be9d)

##### Tests

*  remove extra .only, add basic tests for public note assertion (64267f7d)

#### v4.0.5 (2025-02-20)

##### Chores

*  bump composer to 10.2.46 for #13132 (7520e4f6)
*  up harmony (f82f00e5)
*  up widgets (e23a14c1)
*  up harmony (c0996a80)
*  up dbsearch (d0a9ddea)
*  up dbsearch (310fab65)
*  add test helper to activitypub file (4bc0031f)
*  incrementing version number - v4.0.4 (b1125cce)
*  update changelog for v4.0.4 (d3b69a39)
*  incrementing version number - v4.0.3 (2b65c735)
*  incrementing version number - v4.0.2 (73fe5fcf)
*  incrementing version number - v4.0.1 (a461b758)
*  incrementing version number - v4.0.0 (c1eaee45)

##### New Features

*  add upload button to quickreply (f67a0a12)
*  remove activities older than a week (9997189a)

##### Bug Fixes

*  typo (e63f1234)
*  #13136, do not log 404s for AP requests (93f48409)
*  #13129, serve category backgroundImage as actor `icon`, not `image` (b8200095)
*  escape ip blacklist rules (625f4751)
*  closes #13180, don't execute cron jobs if ap disabled (a410587c)
*  #13172, Topics.addParentPosts not sending sourceContent in calling parsePosts (bb9687bd)
*  #13179, fix context resolution failure bug with frequency (6245e33d)
*  add back chronological sorting of asserted notes (de6e63bb)
*  #13170, remove mime-type and regex test for "Emoji" attachment, wrap tag name in colons if not provided (92708d2f)
*  closes #13176, check if uid is number when creating tokens (80cc1d34)
*  notes.assertPrivate sanity checks (5e71d597)
*  page index for single page, closes #13173 (b0e8058f)
*  remove handle on category purge (4134a075)

##### Tests

*  dont clear local when testing (669755d1)
*  show objects on fail (f2824073)
*  wait after post request (64318242)

#### v4.0.4 (2025-02-17)

##### Chores

*  up harmony (0fed9a76)
*  up harmony (ef2c606d)
*  up harmony (f1da510f)
*  up deps (fa366095)
*  up harmony (df07fcfa)
*  up harmony (de5caf8f)
*  up harmony (d1f78295)
*  incrementing version number - v4.0.3 (2b65c735)
*  update changelog for v4.0.3 (123e1635)
*  incrementing version number - v4.0.2 (73fe5fcf)
*  incrementing version number - v4.0.1 (a461b758)
*  incrementing version number - v4.0.0 (c1eaee45)
* **i18n:**  fallback strings for new resources: nodebb.themes-harmony (99210918)

##### Bug Fixes

*  clear parsed post cache when updating a post's attachments, #13164 (33d7b9b3)
*  logic failure causing remote posts with image to not parse properly, #13164 (d936d5c0)
*  change the passed-in notificatiom id for `notifyTagFollowers` to contain the list of matched tags (04f51cc6)
*  actor.prune, dont try deleting same users (ffbe4b7b)
*  getLocalFollowCounts, show non existing deletes (cfbb8ff8)
*  return null if field isn't in hash (70a9f6d3)
*  getUserField so that it always returns null (e85662a5)
*  isArray check (224910b1)
*  sanity-check the id when mocking a post (5cbf3dd7)
*  missing actor on some local activities when federating out (040584f0)

##### Performance Improvements

*  closes #13145, reduce calls in actors.prune (d590c2af)

##### Refactors

*  single remove (77dd6dd0)
*  cleanup ip:recent (d8724708)
*  hooks button (c4b01330)

#### v4.0.3 (2025-02-09)

##### Chores

*  up harmony (2ee0cda2)
*  update persona (b6b76639)
*  bump persona to fix theme description issue (cd88cce0)
*  up harmony (a01bf73e)
*  forgot to remove bad code (865c09a5)
*  up harmony (c3f8222f)
*  up harmony (f07f3801)
*  up harmony (67a789ad)
*  up themes (c1c5cc6e)
*  up themes (b2b0ed35)
*  up peace (55eedcbe)
*  up themes (38a21e29)
*  up harmony (58e551fe)
*  incrementing version number - v4.0.2 (73fe5fcf)
*  update changelog for v4.0.2 (75588ffe)
*  incrementing version number - v4.0.1 (a461b758)
*  incrementing version number - v4.0.0 (c1eaee45)

##### Bug Fixes

*  delete from payload instead of setting null (1b4e0c87)
*  regression :tmi: (f5328aa8)
*  #13139, payload.version can be null (bfe6d9d8)
*  tidChanged (1f8e2f9a)
*  #13135, tids are not numeric for ap topics (d687f081)
*  handle cases where url passed to mime does not pass because url contained a query string (5baa46d0)
*  isDraft logic, closes #13119 (21156673)
*  path on windows, #13119 (36063d1f)
*  #13115, prevent messages from getting duplicated (1ff8e1e4)
*  #13115, limit bodyLength length (8e9fdb5f)

##### Other Changes

*  remove log (a8e7bf35)

##### Refactors

*  events are returned inside post objects (3ab22c2c)
*  move dropdown search inputs into dropdown (b993be6f)
*  server.destroy (72091ec4)
*  remove deprecated methods (265e44f0)

##### Tests

*  search endpoint with start & end (c1b630d4)

#### v4.0.2 (2025-02-02)

##### Chores

*  up persona (0298a3af)
*  up harmony (d77d2055)
*  up themes, closes #13102 (6672de00)
*  incrementing version number - v4.0.1 (a461b758)
*  update changelog for v4.0.1 (3dbd2b30)
*  incrementing version number - v4.0.0 (c1eaee45)

##### New Features

*  allow selecting empty for custom selects (be62ae24)
*  add uid to post.parent (4d733590)
*  add description and keywords to api/config (933c18f4)

##### Bug Fixes

*  bad logic that invisibly broke outgoing user follows completely (51e660d5)
*  closes #13096, fix regression from renaming language files (0b92d525)

##### Refactors

*  remove old comment (d4a1b4da)

##### Tests

*  fix schema (ef5ae006)
*  fix schema (47734d4c)

#### v4.0.1 (2025-01-29)

##### Chores

*  up dbsearch (88fa4553)
*  up benchpress (c9584800)
*  up harmony (10409e0e)
*  up themes (6918c3f3)
*  up themes (050effe2)
*  up harmony (90e0a2d6)
*  incrementing version number - v4.0.0 (c1eaee45)
*  update changelog for v4.0.0 (ae8f58d6)

##### New Features

*  use text-danger if chat over limit (2f5b4b29)

##### Bug Fixes

*  #13087, disallow following cid -1 (ddb6e0f3)
*  encoding of pid in notifyCategoryFollowers, #13087 (6d88dcb2)
*  #13084 bump persona (4feda224)
*  closes #13091, dont show world category (4c66eed9)
*  #13088, up dbsearch (8644565a)
*  #13090, update themes fix selector (822bff62)
*  #13086 move rateLimit check (487d9f73)
*  null checks for category sync and actor assertions (b3b8b9e9)
*  #13067, add sourceContent to teasers (679fcb71)
*  #13065, send missing `actor` property when 1b12 announcing local posts (e61df4de)
*  closes #13068, encodeURIComponent X-Redirect (f3b8ed27)
*  #13062 add displayname to email tpl data (f0c2090d)

##### Other Changes

*  missing ; (8b38cb3a)
*  reduce image size (#12702) (a95a51c6)

##### Refactors

*  🤡 (4ba01d18)

##### Tests

*  adjust webfinger test for updated 404 status code (4a827b7e)
*  fix x-redirect tests (b80440aa)
*  add sourceContent to spec (526a9521)
*  change test to 404 (52f7f0a7)
*  remove only (0ba4ba65)

#### v4.0.0 (2025-01-20)

##### Breaking Changes

*  add new `escape` option to getPostSummaryByPids [breaking] (16c8a652)
*  core html stripping on plaintext, remove 'filter:teasers.configureStripTags' hook, remove html stripping from teaser generation (c01f1549)

##### Chores

* **i18n:**
  *  fallback strings for new resources: nodebb.error (e53b3737)
  *  fallback strings for new resources: nodebb.aria (d04bdd9d)
*  update changelog for v3.12.4 (e7e682ed)
*  bump persona (3e08eb39)
*  bump markdown, harmony, and persona to new major versions (499df8ab)
*  remove now-unneeded v4 upgrade scripts (487e7be5)
*  add type to webpack config file (#12072) (d79dfd03)
*  rc4 (aa1f65e9)
*  bump harmony for #12938 (8ec388af)
*  rc3 (754ef9b2)
*  upgrade script to fix outdated slugs for users with periods in their usernames (d1c27b4d)
*  bump to rc.2 (e2b653b0)
*  bump version to rc.1 (5aab151e)
*  up persona (b25aa336)
*  beta.4 (c1079356)
*  up harmony (098836c1)
*  beta.3 (27fb01f7)
*  up harmony (34353bdb)
*  beta.2 (cc267714)
*  beta tag (86f624f8)
*  up themes (471fbd3a)
*  up themes (d4cf5e7e)
*  restore activity history check in AP inbox middleware now that NodeBB sends unique IDs with applicable activities (7e23e192)
*  up harmony (16fe85e2)
*  up themes (789520e4)
*  up harmony (7a5588da)
*  bump version to 4.0.0-alpha (b691d2a9)
*  up harmony (aae0b5b0)
*  up harmony (b540ecd3)
*  up harmony (18f9baff)
*  info -> verbose logging in ap inbox.js (931a0f0a)
*  make getParentChain logging verbose (6069bee0)
*  lint (f6d4d563)
*  up mentions (68c91650)
*  up mentions (2b6e31a6)
*  commenting out logic that drops requests if the id has already been seen, due to a regression in interoperability between NodeBB instances (bb0360bf)
*  up mentions (2c87c6e8)
*  up mentions (bad094e8)
*  up markdown (58668b46)
*  up markdown (dbd901d3)
*  update ap cron job config (c680fa67)
*  up mentions (c4c3c207)
*  bump harmony (4cec6783)
*  bump mentions (5ec24977)
*  bump markdown (4fd0d27e)
*  up mentions (78e11d6e)
*  bump harmony (228c9173)
*  some linting (fdba6840)
*  debug log (3636dec7)
*  up widgets (1ce986f7)
*  lint (5e776088)
*  minor cleanup (1253ded7)
*  add verbose logging to middleware.validate (719bb0a0)
*  up harmony (550e522f)
*  move assertTopic to top of file, rename to assert (4ee8519d)
*  up harmony (a84dba27)
*  lint (c5c0c473)
*  remove now-unused notes.assert (c6624b63)
*  up harmony (66b4dc2c)
*  up harmony (d31978b3)
*  lint (0c2cfbe7)
*  removed unused requires (911177ce)
*  remove debug log (92c990f2)
*  remove debug log (403bf3e1)
*  update log verbiage (9c15b02a)
*  additional logging (641a94d6)
*  move assertNote to separate file in preparation for additional note-based methods (2b3b6e56)
*  small var rename (8a5fb86d)
*  minor re-shuffling of code (5e693702)
*  reorganize controllers for clarity (2e899008)
*  update AP helpers export, 404 logic reversal, no slugify in userslug in mock profile from remote instance (0cbbce8c)
* **deps:**
  *  update dependency lint-staged to v15.4.0 (#13059) (1c4c4f57)
  *  update dependency sass-embedded to v1.83.4 (#13045) (be2098d8)
  *  update dependency @commitlint/config-angular to v19.7.0 (#13030) (03432960)
  *  update dependency jsdom to v26 (#13040) (d12d9efb)
  *  update redis docker tag to v7.4.2 (#13033) (fd6f3ee6)
  *  update dependency lint-staged to v15.3.0 (#13031) (3340d984)
  *  update dependency sass-embedded to v1.83.1 (#13025) (b9364de2)

##### Documentation Changes

*  add `resizeImageWidth` to openapi definition for /api/config route (7c1b9000)
*  fix comment (e5331b84)
*  schema update for activitypub acp route (3a05171f)
*  update comment to reflect new behaviour (2cbd63dc)

##### New Features

*  fix activitypub toggler to be more complete; tests. #13054 (af4d07fb)
*  add activitypub file to translations (74831034)
*  save audience into post hash (for remote posts) (b537437c)
*  add `filter:topics.hasThumbs` filter hook (f4835695)
*  append uploaded images into thumbnail set (cc65214d)
*  #12976, shares collection (e83036a9)
*  pending follows and logic for remote users, #12938 (2851e56b)
*  #12935, show 'shared this to x' in topic event when moving topics out of cid -1 (fcf0f799)
*  support for FEP fb2a (new-style account metadata) (549a6b7d)
*  #12924, parse incoming custom fields from remote users (0f351ba7)
*  #12924, custom user fields for local users now federating out (62fe70f2)
*  add title property to custom emoji markup (3968c822)
*  #12683, parse incoming emoji tags and replace in content prior to storage in database (09b1e119)
*  fire new hook `filter:activitypub.mocks.note` on note mocking (4ba41a68)
*  handle receipt of `Add` activity #12707 (3023b251)
*  associate new topics created from asserted notes with their originating context, if that context is resolvable (6f237c57)
*  #12822, send all outgoing links to `/ap` first to see if it's activitypub enabled, parse if able, otherwise redirect as normal (069c8228)
*  normalization middleware to ensure incoming objects' data types are as expected (simplifies later logic) (13c048a5)
*  send Update(Note) on chat message deletion and restoration, serving Tombstone if deleted (61445d3d)
*  handle Update(Note) when object has limited visibility, #12834 (e5948464)
*  check room counts on actor prune, #12834 (e0e2051d)
*  federate  on chat message edit, #12834 (1659015c)
*  notify users on new message from remote users, fix use of parseInt in generating chat notification (2464d13c)
*  handle incoming non-public activities as chat message, #12834 (b82e20df)
*  federating out chat messages (2ab5ea39)
*  update mdidleware.assert.message so roomId is optional (2b71434e)
*  #12647, federate out `Add` activity on inbox.create and local post creation (bd44783e)
*  send 308 when activitypub request for remote post comes in, #12831 (7f1f4859)
*  dynamic category icon generation (edff3394)
*  enable web-push plugin on first install (34c4cefe)
*  service worker icon and badge support (4ae86145)
*  update `buildRecipients` to include all topic participants and their followers, #12735 (6752a541)
*  notification rescind support (d6bab253)
*  update service worker to handle push and notificationclick (5109b539)
*  add onmessage handler for service worker (40fe4d88)
*  extend activitypubApi.create.note to accept a post object to reduce unnecessary calls to retrieve post summary (b63440cb)
*  moving a topic out of cid -1 federates an Announce activity, #12734 (daa665eb)
*  additional copy re: editing remote posts, #12732 (c3e14912)
*  allow use of vanity domains pointing to an account hosted elsewhere (709a02d9)
*  show local users who follow (or are followed) by a remote user, on a remote user's profile (a884681a)
*  additional logic to handle special case where a queried object id reports a context, but it is not actually contained in the resolved context's collection (f9937a84)
*  #12695 Topic Synchronization via resolvable `context` (ff0c289e)
*  activitypub.get; allow the passing-in of custom headers via existing `options` parameter (da25fd21)
*  add post attachments to topic thumbnails (2aeabce5)
*  icon replacing user status for remote users, denoting that they are from outside the local instance, #12688 (a81ef609)
*  allow activitypub request cache to be ignored (485b7758)
*  send join date in local actor mock (3c9337b7)
*  AP note replies collection, closes #12675 (26a7c51a)
*  topic backfill logic via resolvable context #12647 (e75ec39b)
*  send out `Update(Actor)` when a category is edited (09d8fbf9)
*  instance-level allow andd deny list for federatioN (6e2178b0)
*  store encountered instances by last seen date (d0a1ebcf)
*  sending out 1b12-style Announce activities on incoming Create/Update/Like/Delete/Undo(Like) activities, when they pertain to notes (6569066e)
*  assert actors when mocking post (f5b856f4)
*  check to/cc/audience for local category and put topic there instead (overrides passed-in cid) (b6ffc47c)
*  plumb audience into _activitypub when mocking posts (d9f1fa3a)
*  send cause to ap.get error handler, delete local account representation if assertion fails with a 410 (3567f55a)
*  #12589, add nodeinfo endpoint (578a53dd)
*  add timestamp to most activity ids (42f514b7)
*  show category followers in category federation ACP page (7313d5c6)
*  logic for remote user deletion, cronjob, and ACP options for pruning options (4bb2c1a8)
*  remote user deletion logic, #12611 (539300ff)
*  allow user.exists to respond to requests for remote uids too (3dca79dd)
*  pruning of stale notes older than 30 days with no engagement (709c9132)
*  save remote user urls backreference (ff53f3c0)
*  add another sanitization round before federating to remove classes from all tags in output html, closes #12573 (7c79e231)
*  passing in types to parsePost for more specific handling by plugins (8cf96176)
*  track incoming requests by id, analytics increment for some metrics, ignore repeated requests by id (4e9cd8ef)
*  added analytics.peek (b106a6a0)
*  Note deletion logic and refactoring, #12551 (ccd187e0)
*  handle receipt of Update(Tombstone) (f4043959)
*  on post delete, federate out an Update(Tombstone) (96db519b)
*  serve Tombstone objects for soft deleted posts (5e9d47a1)
*  ability to query remote users by webfinger handle (97615267)
*  support the ability to search for posts and users by url (4cbb1f2a)
*  basic retry queue (50bc9a37)
*  on post edit, also target anyone who announced the post and their followers (807c3eac)
*  add id to reject activity (32d1adf6)
*  openapi spec for acp category federation page (fc3f3a78)
*  support rescinding user flags (61a595de)
*  slightly better title generation (b9d6aa46)
*  help modal for world page (cf291a51)
*  remove `/world/all` route, add intro header to `/world` (af324dae)
*  add id to Like (ab055a77)
*  handle 1b14 announce for remote content too (2ce3a116)
*  resolve Crate and Announce activities (f802564e)
*  utility functions to get local followers/counts given a remote actor uri, plumb cid into notes.assert via inbox.announce if a local cid is following the sending actor (452cb0a9)
*  send id back during accepts (b7629c6e)
*  handle Undo(Flag) (a1a7fb77)
*  send undo when rescinding/deleting a report (c1dfa8d2)
*  federate flag creation (2a2b855f)
*  bulk purge flags (7bacbf76)
*  rescind post flags (9ab1a2d1)
*  integrate post uploads into attachments for outgoing note mocks (fdbd30dc)
*  add id to profile updates (4d07ca4c)
*  noremalize actor property in middleware (18ba2e38)
*  save remote post url into hash for use (525b7c2c)
*  note attachments via link preview plugin (6fc6cc33)
*  add ids for undoing follows (3cc09d20)
*  send back follow id in Accept (66b0d81c)
*  add id to follows and verify accepts (72dbcfe3)
*  resolve objects from ids in middleware (102c174e)
*  filter out topics in cid -1 from tagged topics page, closes #12489 (d437d969)
*  sign public key requests (fcd5447c)
*  populate and send link tag/header respectively for activitypub-enabled content (4e0d7dd3)
*  basic AP Flag support (d9eba6d2)
*  send unique identifiers for note activities (9fc194e3)
*  upgrade script to re-assert all known actors to save URL into hash, and bump mentions (943cef6d)
*  sorting an filtering in /world (d1fa6a59)
*  make the /api/world data more category-like (e266b447)
*  add more properties from /category to /world (3c6966fb)
*  follow redirects in API (e0138cbe)
*  add checks to only continue with topic assertion if there is a relation to existing content, #12442 (55e947a0)
*  add assertion lock on activitypub.notes.assert (2688b6bb)
*  have category actor send Announce(Note) on remote replies to topics in a cid (04c743eb)
*  have category actor send Announce(Note) activity on posts from that cid (7df5cabb)
*  ability to update category handles (9dc20d0c)
*  category handles, #12434 (3cc99a17)
*  rename 'world' category to 'uncategorized' (9a5d4ffb)
*  plumb pid into return data from posts.loadPostTools, add link to view original post, for remote content (17f62f24)
*  add TTL cache for Actors.assert (d75894eb)
*  log all post edits to the event log, return eid when logging events, plumb eid into Update(Note) to federate out as a unique id (83392f3c)
*  if Update(Note) is received for a post that does not already exist, assert it (0bfdbb6a)
*  return count of new notes in assertTopic (519e025e)
*  add /world and /world/all to available nav items (f31d8c2e)
*  mentions support (e4c1ca1e)
*  allow user.search to handle remote handles, beginning of mentions support (1b64fdb5)
*  integrate notifications for remote likes, follows, and announces. (c707a32a)
*  federate tags out on new post (if new topic) (e1c43112)
*  restrict loopback calls (77a3efb4)
*  fine-grained privileges integration for fediverse users and world pseudo-category (1bd8f9a1)
*  temporarily deny handling non-public notes (eaba2aa3)
*  shared inbox (49c69a0f)
*  security, cross-check key ownership against received actor (a94341f4)
*  attachments support (e5b6ee97)
*  save tids to individual user inboxes based on recipient list, new /world/all route (89128634)
*  save actor follower URL backreference and sorted set backreference (da085b0e)
*  infinite scrolling for /world (874b24cb)
*  record remote Announce(Note) (6508287d)
*  handle Announce(Note) when Note is a piece of remote content (94dcd29e)
*  Announce(Note) and Undo(Announce) (415b4fe1)
*  exposed method to find topic events based on a subset of saved info, returns topic event ids (b9821c52)
*  topic and category S2S get responses (a461e5dd)
*  send proper content-type on AP S2S responses (d18e65c4)
*  category actors, stub outbox (88733a51)
*  returning following and follower collections upon request (ae042ce3)
*  Like(Note) and Undo(Like); federating likes (607c4623)
*  origin checking on received Update activities (6930973d)
*  Update(Note) (0e59f312)
*  Update(Person) (6e87cf57)
*  activitypub response to note retrieval via pid (6b517252)
*  added mocks.actor and Update(Person) activity on profile update (8453b83e)
*  Create(Note) on new topic or reply (0e016c6e)
*  proper webfinger response for instance actor (da0211b1)
*  application actor + public key for uid 0 signs, moved homepage route to after core routes are generated (9885f94a)
*  native parsing of title for topics (981b4f14)
*  beginnings of the /world route (04423232)
*  handle Update(note) (ac672f08)
*  handle Create(note) (f7477536)
*  flesh out more topic info, fix navigator (7e89eadb)
*  some additional work to properly save and retrieve remote topic data (4bd7a574)
*  ability to browse to any ActivityPub note and have the entire topic chain render (485cf200)
*  add activitypub request cache (326bb995)
*  assertNotes method (ab40ba61)
*  ability to load remote post data in a topic (3ce84b39)
*  plumb uid into .addParentPosts() so .assertNotes() can be properly called (0d478b2c)
*  stub lib for retrieving and mocking posts (f1e5e5a0)
*  send name property in getActor response (5e1e8099)
*  ability to browse follower/following lists of remote accounts (2a77ae55)
*  expose following/follower counts in actor response (7fd15d66)
*  show remote followers/following in user profile pages (739b0548)
*  update mockProfile to accept actor uris as well as actor objects (672c7014)
*  accept and undo support (4c1b2b3f)
*  update activitypub helper resolveLocalUid to accept both webfinger name and full URL as input (1f79f542)
*  follow/unfollow logic and receipt (c02271c7)
*  actor cache, method to resolve inboxes, stub code for sending requests. Now base64 encoding digest as expected by Mastodon (cdc4275f)
*  http signatures support, .sign() and .verify() AP helper methods (e7184eb8)
*  add webfinger ttl cache (4f5f025d)
*  add .has() call to cache/ttl (57895b72)
*  ability to view federated profiles via url manipulation (a05b674e)
*  followers and following endpoints (7e1dac39)
*  inbox and outbox routes, stub controllers (81b6260f)
*  global switch for disabling federation, + test (099124c4)
*  activitypub actor endpoint for user accounts (2dec357a)
* **activitypub:**  show world category in selectors (953231fc)

##### Bug Fixes

*  ap webfinger test (3e33e1a3)
*  if user is logged in after registration don't go back to /login (23b37f62)
*  closes #13056, guard against undefined keyid,compare (6073a25b)
*  bug where newly create cids were not responding via webfinger, 404 on webfinger errors, not 400 (c17809e4)
*  #12990, local references via remote posts are not linkified properly, + tests for helper (98280d30)
*  #12984, fix pids numeric sorting, handle non-integers (4dc740a2)
*  add deprecation note re: as:audience (3cf3f93a)
*  #13021, save details of follow request before sending the follow, avoid race condition (16616814)
*  handle ap send errors with object body (450322d1)
*  thumbs.get to handle null case from mime.getType (50b510e3)
*  post upload sync duplication bug (cfeb49dd)
*  language fallbacks for activitypub-related strings (37a4fd7c)
*  add sourceContent prop to posts API; fix other tests (e1db9642)
*  add sourceContent prop to posts API (8ebe6de1)
*  add missing file for openapi tests (e6b20ed3)
*  activitypub tests (12fb205b)
*  broken tests (9c78255e)
*  #13014, possible fix for peertube incompatibility: strip hash value from key IDs during check (0ad8ed9d)
*  #12996, invalid title generation when remote post content has markdown source (1d36ab6d)
*  #13017, probe redirection if url is identical to id (39705a17)
*  #13016, remote account deletion frontend UI bug (2005a02a)
*  add missing catch, closes #13012 (45021b5b)
*  check if url is undefined (fa81078a)
*  #12941, inherit audience from earlier posts in the chain so as to send a coherent value to Lemmy instances, re: lemmynet/lemmy#5278 (97384b2c)
*  add 10s timeout for AP message send (25d6ef43)
*  ignore subsequent shares of the same topic by that user (d734ce49)
*  #12972, allow bridgyfed accounts to pass isWebfinger regex validation (a7e6cfe8)
*  bump harmony (ee8ec61e)
*  fix double thumb due to post attachments (755b9855)
*  lemmy integration, handle `image` property as topic thumb (b15a684a)
*  wrap try..catch around topics.reply in note assertion to output errors (b551abce)
*  have options.update also trigger handle and search updates on actor assertion (050acb4f)
*  separate out removals vs. additions in actor assertion in order to hopefully resolve #12959 (546ffed2)
*  openapi schema for ap routes (c86b6f24)
*  get version directly from package.json (3340720e)
*  set linkValue for remote user fields (3d653cbb)
*  crash due to missing param when calling getCustomUserFields (e5fdf9f1)
*  set a user-agent when sending requests (64339e61)
*  persist `sourceContent` into post hash when ingesting remote posts, update markdown so that field is parsed instead of ignoring content (1839388b)
*  use fediverse pseudo-user for webfinger privilege checks (f32184b2)
*  regression on remote deletes, received object is not always a simple id (d7fe3558)
*  thrown exception from failed note assertion (830aab66)
*  one more (304fa554)
*  another fix re: 3780fdc6ff9fb23048266b43ceae86646fb795cc (69d5544a)
*  thrown exception from failed note assertion (f7a294a7)
*  additional fixes re: 3780fdc6ff9fb23048266b43ceae86646fb795cc (97861dd1)
*  regression on remote deletes, received object is not always a simple id (3780fdc6)
*  #12939 convert custom emoji in actor summary into images (78a9e86c)
*  translate custom field names and values when federating out (e6edcefd)
*  bump emoji-android version (552298f8)
*  bump harmony and re-tag (593a1933)
*  bump emoji to 6.0.1 (efa0cac3)
*  bump harmony (00b2dd49)
*  strip html from remote custom fields, linkify if url detected in now-plaintext field value (065f84b6)
*  handling of empty custom user fields from remote users (1bebb82b)
*  don't send custom fields in remote user actor object if no value is entered (09f00f8e)
*  hotfix for empty user fields (ce1efd39)
*  bump mentions (e5f804ff)
*  #12928, topic showing wrong queued posts in-topic when topic is remote (7b747c8f)
*  replace parseInt that was excluding remote pids from calculation (93bb73c1)
*  #12923, inability to start chat with remote users via profile (b6a2520f)
*  inability to directly post to a nodebb category from the fediverse (55ab85ac)
*  #12919, handle when buildTopicsSortedSet returns a non-array (e4e6b1d2)
*  #12912, strip custom emoji from remote content titles (7adc3140)
*  don't chop off colons when generating titles as they could interfere with emoji (f449fafc)
*  #12893, topic with pages returning OrderedCollectionPage instead of OrderedCollection. (d685b20e)
*  missing return (cf3555fa)
*  #12887, strip target attribute from remote posts' html (3eb0a0ed)
*  #12866 again, more tests (a59dae3f)
*  raise probe timeout to 2s (94e34907)
*  topic count not showing up on category page (dd363446)
*  #12882, view original post circles back to same topic (93844321)
*  #12883, activitypub probe timeout (f8729571)
*  errant mention detection via actors.note (22dbf15e)
*  #12880, refactored ap controller.list to use `buildTopicsSortedSet`, moved out poor man's intersect to internal method (05c8ee9f)
*  don't trust timestamps on received items (b1d779ca)
*  use `categories.getTopicIds` instead of duplicating existing logic to get world tids (7bf41138)
*  #12866, improve title generator, refactor tests (beb85604)
*  one more fix (eccad588)
*  debug return not restored back (0e982fcf)
*  #12865, crash on liking a chat message (fc3243d6)
*  possible fix to escaped emoji in titles (f5324501)
*  #12707 ensure actor matches context attributedTo (998273cd)
*  federate out an Add on post creation even if there are no category followers (15516862)
*  accidental sending of Set to ActivityPub.send (3030a720)
*  #12857 byebye cheerio (8492b5f4)
*  inputIndex check (cac4f8e7)
*  convert some more verbose logging to use ap logging helper (6208ab8d)
*  regression introduced by 903d03891941902ddac80b380552530e1853c306 (d451adaf)
*  lint (c34407d8)
*  errant parseInt in canEditDelete (0f1b1164)
*  guard against missing to/cc (1d5f490d)
*  object not array (873d033b)
*  backend logic fixes for #12853 (b472c589)
*  groups not showing up on new reply (1bf09907)
*  re-enable logging only for dev mode (a226ee9e)
*  defer postdata retrieval (9062691a)
*  `inReplyTo` incorrectly including system messages, #12834 (7ad7bc47)
*  remote debug log (e9a27db2)
*  error on replying to remote mids #12834 (adf33cfa)
*  proper urls in `to`, #12834 (94ac57ea)
*  simplify uid logic, explicitly mention all participants, even local users, #12834 (70fe8689)
*  adjust timestamp after message creation instead of passing timestamp in, #12834 (0346e92b)
*  limited visibility remote posts with greater scope than asserted roomId should add those users to the chat room, #12834 (22931be1)
*  empty mid on frontend for remote posts (8abfd951)
*  recent chats string generation to handle remote users #12834 (0a17a0b9)
*  inReplyTo bug, #12834 (fc1d064d)
*  remove sender from recipients, #12834 (8f7d0499)
*  private note `inReplyTo` url, #12834 (f3045309)
*  `inReplyTo` for private notes so that refer to the immediately previous message if not explicitly defined (f4a02d9c)
*  duplicate logic and double-parsing issue, #12834 (8a1abe68)
*  federate out a Create(Note) instead of just the note... doi... (74d5ced2)
*  chat room kicking of remote users, (un)read logic for remote users (there is none), sendNotification to only apply to local uids (52080ba2)
*  restrict the ability to make a remote user a chat room owner (b610b520)
*  display of remote users in chat room search (f5129017)
*  also ignore non-public notes on Update activity (2713d13c)
*  bump web-push (f57758b9)
*  logic tweak (15f60b24)
*  fall back to inReplyTo traversal on context resolution failure (903d0389)
*  tests (45a0b818)
*  null defense (3d25a079)
*  #12821, improvements to search bar and search logic (0b83e5b8)
*  lint (c265666c)
*  parse aboutme when mocking a user (c5e10c1a)
*  remove superfluous service-worker code (90cc7e61)
*  explicitly set `updated` property when federating notes out (6fe4d446)
*  buttons for general settings (5bc907a0)
*  bump mentions (e0c410cd)
*  actors.assert attempting to process things that aren't actors, #12809 (6b4b4b1a)
*  carry out mime-type guessing on incoming attachments (71ce3089)
*  re-use already parsed html in api.posts.edit's call to getPostSummaryByPids, delay federating out edit activity for 5s to give link preview a chance to resolve (b04a1105)
*  id on 1b12 announces (047d5992)
*  better handling for remote posts that do not contain content (3c55d102)
*  #12799 add externally linked images to `attachment` (1a0a2cd1)
*  remove includeUncontrolled as we are posting messages, and that only works with windows you control lol (028b6d74)
*  add logic to automatically take over clients from old service workers (1fbf9114)
*  closes #12787, filter null topics (c2600b12)
*  remove use of jquery $(this) in ajaxify (176f4d0d)
*  crash when AP S2S call made to retrieve a remote user account (not allowed); now returning 404 (d42d3b1c)
*  prevent crash if items is undefined (a80e3141)
*  regression that caused replies to not get federated (652d6c6e)
*  #12760, add proper security context for application actor (045e16d3)
*  on topic move out of cid -1, also federate to the public address (909437c3)
*  bump harmony (6ed32f67)
*  type casting in user block logic (0f63f67b)
*  restrict announce activity to topic moving OUT of cid -1 (f3eb6d50)
*  #12751, topics:recent zset not updated when tid moved in/out of cid -1 (76551c71)
*  bump mentions (e6d8e059)
*  bump composer (22952c54)
*  bump composer (e2879563)
*  #12732 editing of remote post content (25bf97ae)
*  #12733, html present in generated title for remote topics (34747122)
*  #12729, replies to existing topics from Pixelfed not asserting properly due to incorrect `toPid` (f481cde1)
*  move topic reply call in notes.assert to its own line (95e6d2b4)
*  #12510, blocking of a single remote user causes content from all remote users to be blocked (53aee401)
*  serve category actor image instead of nothing, serve brand logo in icon (cbe0a0ad)
*  lint (d33fb92d)
*  have note federation call .parsePost instead of firing plugin hook (93536386)
*  always send replies uri instead of null if no replies exist, @trwnh (ff08fbb7)
*  send `null` instead of empty array in `replies` property if mocked note has no replies (9bd6896d)
*  bug that caused remote replies to other remote content to not always assert (2ced3502)
*  bugs in user searching causing remote lookups to fail (1f896fb6)
*  `audience` property in topic actor response (9a54f6bc)
*  updating of post counts for remote users (3e494dc7)
*  add privilege check to user follows (399d4103)
*  accidental passing of string instead of constant (7bf349b6)
*  lint (fc5a829c)
*  update upgrade script date (b9f37c5c)
*  include follower sets for reassertion (be393d57)
*  missing await (5c9ac5d3)
*  null check for note attachments for thumbs view (2aa04837)
*  incorrect parsing of context items during note assertion, logic error with slicing (60408f23)
*  logging in topic actor logic (bc00835c)
*  issue with topic actors not returning proper json (609035b5)
*  off by one error @barisusakli (cfbaf145)
*  map to actual mainPid value (7bdf3769)
*  skip topic retrieval when cid is -1, as it is done again later (92191995)
*  flawed logic in generating topic context collection (31c7226e)
*  rename announcers to shares (3c0d7616)
*  catch thrown errors in src/api/activitypub (fdc0d670)
*  federating category mentions (00a26679)
*  send html in category description (f605e188)
*  Update activity handling for non-Person actors (5e343a83)
*  remove await from category update federation call (bacbfba9)
*  issue where incrementing user hash fields didn't use the right key name for remote announce @barisusakli (e84cfd8c)
*  lint (b0eec67d)
*  send back empty array if no direct replies, bug with reply generation (af6ae6ee)
*  accidental passing-in of an array into getUserField, breaks in pgsql? (8e1fccf0)
*  hardcoded tid in topic thumbs test (78a6c60c)
*  tighten up logic in checkToPid internal method (f629b20f)
*  partial revert to fix url_parsed not being available at top of file @barisusakli (8ecbb5cc)
*  removal of topics from applicable user inboxes when synced (46341673)
*  tweak logic for topic counters sorted sets, #12642 (0d549f1d)
*  #12667; handle cases where received id is not a URL (d92efb8a)
*  #12673 fullname not defined in some remote actors (f662a606)
*  only send Update(Actor) to followers, #12674 (26946c7f)
*  missing sorted set member removal on category unfollow (a748068c)
*  add timestamp to follow activity to make it unique (eab231ee)
*  additional logging for activities with no context property (cb5e5b4b)
*  update handling of Announce(Create(Note)) to also handle non-note types (600b1a86)
*  push instead of unshift, now that order is reversed (cc0bbcb7)
*  wrong property name for OrderedCollection items (a2fb939b)
*  improper sourceContent in mocks (615aaa01)
*  #12662, add original activity actor to Announced activity's cc (d6f44d8e)
*  remove duplicate 1b12 announce in notes.assert (already handled in inbox) (4dbb73a4)
*  #12652, incorrect user, post, topic counters with AP enabled (fe70a2b8)
*  incorrect activity id sent out on 1b12 announce (ef97a784)
*  #12654, incorrect location of `sharedInbox` property (b66d998d)
*  regression that caused new notes to have undefined cid and fail privilege check (a371c9fc)
*  move call to retrieve cid followers out of loop (89dd2fb0)
*  do not retrieve remote outbox count when asserting actor (16f8f536)
*  double sanitization (d9ac7f49)
*  dont load  cid=-1 in tag filter dropdown (7d679db2)
*  change setImmediate to a 5s timeout to give plugins (or anything waiting for the return value of the API call) a chance to finish execution (7fada44b)
*  openapi spec for v3 posts get (4b86b378)
*  wrap ap note creation in setImmediate to let internal hooks have a chance to wrap up first (a3c6c872)
*  improper sanitization and parsing in mocks.note (59818031)
*  remove parseInt on users controller (5a2fa52c)
*  send additional @context entry for `publicKey` support, fixes #12604 (4eb998d5)
*  null case handling (e6e6c2a2)
*  category follow schema test (4b8a9e58)
*  getCidByPid call returning improper values because a remote url to a local post was passed in (4030c09e)
*  1b12 conformance for inbox.create as well (c8bc6e55)
*  re-add sending of Announce(Note) for microblog support, #12434 (89d2363d)
*  FEP 1b12 conformance, federate Announce(Create(Note)) instead of Announce(Note), #12434 (be95b5b1)
*  missing openapi schema change (e9a0d495)
*  eliminate infinite loop in actors.assert via user.getUsersFields (18e58318)
*  minor adjustment in logic to work around relation logic (1219d7d3)
*  introduce artificial 5s delay for 1b12 announces (101062cb)
*  move logic to move topic on note assertion earlier in the flow so it actually runs (acd1630b)
*  post count (badb7e2c)
*  skip follower count check if cid follower is found (f29214e0)
*  don't crash process on error in cronjobs (89465ec6)
*  handle missing fullname in actor removal logic (ae3fa85f)
*  guard against infinite loop during topic purge batch call (6272d059)
*  unintentional parseInt during post purge (bcfac00b)
*  pid in api call (70625133)
*  missing await on topic purge (6ecc791d)
*  don't attempt user reset token cleaning if uid is not a number (8d790964)
*  set (f83a3672)
*  incorrect use of .map on a Set (c6f2155f)
*  another crash (f8d9f644)
*  closes #12618, handle missing selector (35eb2d0d)
*  crash in mocks.profile (6f37825b)
*  bug that stopped remote users with dashes in their handle from being properly asserted (76290e37)
*  parse incoming HTML to remove useless classes too (47406d13)
*  update post cache clearing logic to call helper function (547fc17d)
*  have replies provide `name` when mocked (b6653d15)
*  lint (f93b237e)
*  remove .only (a0054400)
*  minor cleanup (129017f7)
*  Notes.delete to delete announcer zsets too (b5b89038)
*  rename api.activitypub.create.post to .note() (2d7ca48d)
*  canPurge logic fault (d40d0b06)
*  allow remote content to skip isReady check on topic creation/reply (5bfde4c4)
*  Topic.isOwner check to handle remote users (0a1ad87d)
*  special handling for privsTopics.canPurge for remote posts (b67a7c3c)
*  Posts.isMain cast pid to String instead (9fbd48b1)
*  special logic for purge privilege checks (9f44e99f)
*  unnecessary parseInt in post purge api method (eda97da1)
*  type error in attachment emptying method (336ea1ee)
*  tag notification if pid is not int (baada2fc)
*  encode most uses of pid to avoid more bugs like #12545 (c973a9ca)
*  allow quoting AP posts, fixes #12545 (43dfb60f)
*  Update(Note) federation should only apply to local content (6f9fa660)
*  attach announcers and their followers to cc, not to targets, only attach announcers to targets (51089a34)
*  bump harmony (2cd9088c)
*  inability to query local content via remote url (ac74d9c5)
*  ensure consistent return type from notes.assert (a7aeabc8)
*  remove unnecessary check and guard against unsupported URIs before fetching (af986758)
*  handle retry queue invalidation across a cluster (22b42f11)
*  use batch.processArray properly (729f0fca)
*  if an unknown post is navigated to by a logged-in user, automatically assert the post and add it to their inbox (4e7b12b9)
*  bump harmony (e341a5d8)
*  bump composer-default (4e006adb)
*  save followersUrl to remote user hashes (738d47c7)
*  notifications for tag followers not being sent if author is a remote user (8de2352e)
*  send topic title in context object (05cdb7d9)
*  partOf and type (109f4232)
*  if post count is less than posts per page, don't paginate in ordered collection (1a21c8ad)
*  send id for category announces (0336e8f0)
*  post deletion of remote posts (5e203197)
*  update title generator to include the punctuation, and also take into account question marks and exclamation marks (6ac5a779)
*  remove unneeded `flagged` property in favour of flagId, use existing language key for rescind-report (449ffd66)
*  have category sync routes return full api response, openapi schema for that pair of routes (b7ad4317)
*  update signature parsing logic to handle values with equal signs in them, closes #12538 (596a5e4b)
*  unintentional object pollution by buildForSelectCategories (40b9dabd)
*  better logic for choosing webfinger lookups (ed84eed8)
*  don't look up webfinger when it's not necessary (dd71340a)
*  update hasRelation condition to be true if cid is passed in in options (6964b1fd)
*  handle requests to URI IDs correctly (1ecbf02a)
*  handle URI actor IDs (70001664)
*  percent-encode outgoing webfinger requests (3d1e2cde)
*  bump harmony (59021d8a)
*  icon:text and icon:bgColor for remote users (3721f819)
*  handle Announce(Create(Note)) (a9a7fd1e)
*  use system pseudo-user for topic move call (dce33446)
*  if the topic already existed in -1, move it to another category if one was passed in options (49a64dc7)
*  add back reverse lookup for notes assertion checking via cids (407dda78)
*  actors.assert should return false if webfinger cannot resolve to an id (b7ff7be2)
*  support reporting remote content in Flag (026449dc)
*  #12505, convert relative urls in links and images into absolute urls, uses same logic as for emails (7c4ae8eb)
*  #12502, improper decrement (6befff5e)
*  send userslug in preferredUsername (64258dac)
*  wrong variable name (50f31b23)
*  change default attachment type to Link, or Image if mediaType matches (bb4e418d)
*  save modified actor back to req.body (c3365908)
*  you scurvy cur! (52271cae)
*  handle (created) and (expires) in http signatures (4d23a837)
*  #12496, url in schema (f7833386)
*   handle remote userslugs with non-lowercase letters (f5ea470d)
*  send hs2019 as algo (to match cavage-12, handle incoming algorithm value (8d0876b8)
*  bump harmony (b8daa02f)
*  throw errors when local objects don't exist (959e1820)
*  #12493, send unescaped fullname through via AP if displayname is set/used (e0f542c9)
*  send only the id into actors.assert (465a46f2)
*  use a slightly better error code to indicate object resolution failure (c92b5e07)
*  assume object is full object and not just id everywhere (e0166ccc)
*  use resolved object in likes (962c6351)
*  reject accepts of invalid follows and return when already following (b6168202)
*  handle resolved objects in flag (41f77f8f)
*  additional verbose logging for signature verification (464dd806)
*  bump mentions (6b169e04)
*  default to showing alternate as link to the post object (86107535)
*  pid via index calculation (de83d6b0)
*  support ldjson with ActivityStreams profile in actor queries (c30c1288)
*  early return on invalid actor (2d1524ee)
*  use actor id in flags (e25f0621)
*  make sort work with world filters (cd8a91fe)
*  uppercase digest algorithm name for compatibility reasons (5c1c1d21)
*  better handle null return from notes.assert (cbfc8d25)
*  bump mentions (86caf237)
*  actor assertion logic to ignore loopback urls (f40df387)
*  lol (983153fb)
*  maybe last tweak (42bdffdc)
*  tweak upgrade script again (ae146024)
*  tweak upgrade script again (166e3e2f)
*  add timeout on activitypub.get, tweak upgrade script (442e98e4)
*  tests, save actor URL into userRemote hash (59709a3c)
*  show locally captured remote posts when browsing remote profiles (1084f21d)
*  have getCidsByPrivilege include cid -1 when set is categories:cid (e828e87e)
*  updateLastOnlineTime for remote uids (893788a2)
*  bump harmony (2cbc3913)
*  adjust world schema (a3dce463)
*  redirect to /api/world for API requests (495d5435)
*  lint (f078e1e2)
*  skip notes.assert checks for Announce(Note) if it's a remote object, do our own checks; #12442 (4fcd2bb2)
*  getSortedTopics; filter out topics in cid -1 unless explicitly asked for (dff5d1c6)
*  #12444 add uncategorized topics counted stats to separate sorted set (8dcdf8ef)
*  undefined object in notes.assert (1fb3c4fd)
*  typo (bab41d12)
*  restore userOrGroupExists, as alias to slugTaken (e0f6b707)
*  send handle as category actor's preferredUsername, #12434 (803975fd)
*  use CategoryObject in admins-mods schema def (aafdefa7)
*  only send activitypub+json links via webfinger if activitypub is global enabled (65bb8666)
*  bump harmony (9c03e6e9)
*  resolve interoperability issues with Misskey, et al. (003c6469)
*  bump harmony (da2a1e20)
*  issue where cid -1 appeared in all category searches (8f131b71)
*  bump harmony (2756aae7)
*  post urls to use  prefix instead of linking out directly to origin server, exposed encodeURIComponent as a template helper for themes (2408ecd8)
*  regression that caused S2S calls to topics to return with a 404 (5a2d17df)
*  restore accidentally removed calls to updateLocalRecipients and saveAttachments (5f60f75f)
*  properly handle empty fields param (c76d4018)
*  circular object ref. (7af07151)
*  tweak maxTags handling (ccd9c7ed)
*  bump mentions (ff6cc90c)
*  send topic notif on reply (1a92239c)
*  typo (44a183dd)
*  double-OP issue when remote reply comes in to local mainPid (0a2482cf)
*  filter out system tags and prune extra tags beyond number allowed, when creating topic from remote data (7aa56c72)
*  resolve toPid to local pid if able (ebd750b4)
*  tweak user.search to better handle local usernames with colons in them (c346177b)
*  accidental saving of ephemeral _activitypub object into db, should plumb into hooks only (81b319f4)
*  handle actor assertion failure if mocked profile does not have a fullname (338c568c)
*  template helper (52c143aa)
*  tests (4b2495b5)
*  remove unused param in addParentPosts (01f7af92)
*  only dereference id if it doesn't exist locally — fewer calls (eb8ff75b)
*  specify param for api test for /world (b1491ca3)
*  AP S2S handling for /user/:userslug route (9cd6b496)
*  handle fetch failures on helpers.query (5768a437)
*  more duplicate detection in to/cc (ceab77e4)
*  markAsRead to handle remote topics (17c55922)
*  parse questions like a post (90e7d3a1)
*  properly build recipients... old logic was just plain wrong :shipit: (1e663239)
*  reallow topic:read privilege for fediverse group (97e5b0fd)
*  only serve local posts via S2S when queried (00101d9e)
*   note not federated out to mentioned users' inboxes (6423d514)
*  update styling of available nav items in ACP (6aece689)
*  remove unresolvable actors from parsing prior to mocking profile (39da3ab6)
*  send explicitly empty array for attachment prop in mocks.note (4a8b06e8)
*  remove some privs from fediverse in world category (6999bd68)
*  inability to retrieve previously-unknown remote users via url manipulation (28f38b26)
*  tags received via AP should only be of type Hashtag (as mentions are also in tag prop (81b81e54)
*  data schema of reject activities (beaedc86)
*  fallbacks for if preferredUsername is not set (9f8c706f)
*  pass proper uid to privilege check in AP note federation (95427c4a)
*  remove console logging (4c2cbb5b)
*  move fallback 0 return in parseIntFields to other side of ternary conditional (5b74f6da)
*  remove intFields hack and update db.parseIntFields to only parseInt if field value is a number (f368a1a8)
*  truthy check in notes.assert (6671b511)
*  remote user avatars in notifications (aef1215f)
*  bump mentions (ae09aa20)
*  properly handle if mainPid is not a number (1ca9994f)
*  mainPid detection in unprocessed ids in assertTopic (b529610b)
*  redir on bad world filter (0cf6af9b)
*  serve fallback images on category actor (8cb984d4)
*  bump markdown (44452a3b)
*  missing invocation of generatePostUrl in generateRepliedTo helper (a08b2efb)
*  unable to process Update(Person) (96a3a746)
*  crash in resolveLocalId if Number is passed in (d51f5e59)
*  missing await, and handle local posts with no toPid (i.e. reply to OP) (0b6b86d1)
*  don't overwrite title if present, on assertTopic (a3368a69)
*  bump markdown (b1894276)
*  copy fixes, rename upgrade script, disable federation on upgrades (281e9d6e)
*  update ap-related deps to prerelease versions (10abb82e)
*  defer federation of new topics when topic is scheduled, tie activitypub api module to global enable toggle (5f85e700)
*  lint (563db78f)
*  put postcount retrieval behind try..catch so errors are handled appropriately (28370b10)
*  side-effects from adding toPid to post intFields (now removed) (b0115951)
*  revert introduction of toPid into post intFields, manually cast toPid as int in getPostSummaryByPids if present and numeric (3a870360)
*  check origin only if object is a string (92a8951b)
*  send string to validator (893dd523)
*  regression re: attachment handling (53d1c10e)
*  parseIntFields for tids (31fd135f)
*  handle undo(Announce) of remote notes (cfbbf4ca)
*  assert actors on note assertion, resolve crash if announcing something that's already been announced (6a7f8f14)
*  don't crash when no attachment, oops (0edaf17c)
*  sanitize post remote post content regardless (8b0ccc80)
*  wrong id parsed in announce (068c4fa9)
*  accidental overwrite of hoisted internal variable (56cfae07)
*  include mainPid in topic counts calculation (5c04e805)
*  guests visiting /world should see all remote topics (19d017b9)
*  timestamp calculation (6a11c89b)
*  better handling of missing of invalid to, cc, timestamp values (76d5feb7)
*  remote announces not showing up in local inboxes (814c4794)
*  handle inaccessible boosts (9439987e)
*  remove invalid/inaccessible object from parent traversal chain on get error (672a907d)
*  handle invalid score (609a9a37)
*  mainPid accidental int (22da3a6a)
*  getParentChain error handling (69f1ace3)
*  take mainPid into account in syncUserInboxes (d13980c8)
*  typo (de71b733)
*  stringify error body in ap.send (401b4c5f)
*  activitypub.get failure handling (12968b62)
*  only log warning on ap.send failure (ce4b5679)
*  rejig some tertiary conditionals, fix broken inReplyTo when toPid is not defined and mainPid is a remote post (5fee4e33)
*  resolveLocalId to return null values instead of throwing for no resolution (11dba85d)
*  don't crash on activitypub.send non-2xx, better logging for successful sends (ac56289f)
*  replies to remote content overriding mainPid in topic (2b1a3477)
*  assertTopic incorrectly creating new id if passed-in id did not match the actual object's id (f1b8f3fe)
*  urls in posts and announces (4fb6574c)
*  remove now unused world/:tid route and assoc. controller (a61e7fe7)
*  cast cids passed in to getCategoriesFields as ints (aafdebd2)
*  logic error (80377599)
*  logic derp (9795abbf)
*  new language source file for activitypub text (21a2876e)
*  getUserInfo internal method in topic events to not filter out uids because getUsersFields already does it (f7259ccb)
*  category following and acceptance logic (25f0d484)
*  properly assert resources in AP router (d2f14c36)
*  update preferredUsername in category actor to match webfinger representation (d213ce79)
*  follower calls to return empty item list unless a page is explicitly passed in (94361721)
*  move all actor object urls to immutable variants (86a607ce)
*  send proper @context value for posts (was missing) (457bfe16)
*  remote follows, yet again (fef18824)
*  a bunch of broken things, added test for Create(Note) (a3a0edb7)
*  error handling for actor.assert (fa1c5490)
*  missing break statement (2c834263)
*  reject spiders on remote profile GETs (a355c05d)
*  send back correct actor id on webfinger calls (25434d2a)
*  parseInt on timestamp from post (ddf17ee5)
*  /uid/:uid route to return actor (0b3ca8e3)
*  the id of an actor should be its immutable uri (/uid/:uid) and not userslug (e07c3131)
*  unused require, tests (3c24cfb4)
*  send full as:Image object for icon and image in mocked actor object (0af97dd4)
*  clear post cache on Update(Note) (f51bbe91)
*  webfinger loopback (1ee03f2b)
*  revert home page routing change and moved instance actor endpoint to (e00a03bb)
*  restore avatars in topic list (3bdaa8a8)
*  send preferredUsername in application actor response (f8cfe64c)
*  note assertion on Create(Note) and Update(Note) to use instance key instead of uid 1's user key (4cc7ee65)
*  add workaround for nodejs/undici#1305 required to remove sec-fetch-mode header (2cb37088)
*  response, not res (9e58b04c)
*  automatically reject unsigned POSTs to inbox (a3e1a666)
*  handle case where pubKey cannot be found (33f3da8a)
*  user data in /world (518169fe)
*  bookmark in topic data is nullable now (970a5a6e)
*  saving teaserPid, timestamp, lastposttime in topic, fixed post index issue in loading topics (60bc27ec)
*  preserve cid if set (e038eb05)
*  incorrect author uid saved in topic (75654852)
*  infinite scroll for posts (8cd3ff1a)
*  reply expansion (5ac02765)
*  issues related to adding new reply chains to an existing topic, resolveId method in notes module (2981f663)
*  simplify increasePostCount logic by combining methods (81d81098)
*  have mocks.posts return same number of items as received (d992239d)
*  show full names for remote users (d1cdb8f8)
*  improper params sent to get and getActor (9221506b)
*  restore hostname prop in getActor method (ec3c6b67)
*  ActivityPub.get now throws on failure, handle in getActor (7ec75f58)
*  send in mocked profile data in follow routes as well (942a9b7e)
*  tests (c66b1867)
*  isUri helper so that it passes ci tests (27e256d2)
*  frontend follow logic, as uid is no longer webfinger slug (fcca9259)
*  use simpler getSortedSetRevRange instead of unnecessary zunion call (283e460a)
*  accept and undo logic saving improper id into database, updated follow logic so remote follow is not added to collection until an accept is received (759d69e0)
*  relax activity-failed condition (3339baac)
*  additional refactors and updates to follow/unfollow logic (6a54e009)
*  bug where body wasn't properly sent on ap-style content-types (ac344011)
*  send actor uris in follow instead of webfinger ids (543daee8)
*  some wip code regarding handling a follow activity, remove unfollow activity as that does not exist (f3b0794d)
*  accidental double-hash in sign/verify (0eadad84)
*  incorrect logic (71e3d26b)
*  update proceedOnActivityPub middleware to handle how Mastodon doesn't send the 'Accepts' header (dd480aa4)
*  another bad call to request lib (88527884)
*  broken call to request lib, tests (8d796170)
*  update isJSON test in request lib (510763af)
*  handle null actor uri in helpers.query (a21110fd)
*  unused require (7f46f07c)
*  store remote followed users count separately from local (e794f1d2)
*  icon text and bgColor in remote profiles (4324f09c)
*  add basic sanity-checking to middleware.validateActivity (99cc60c8)
*  incorrect host/hostname usage in well-known test (bcee1c8d)
*  save remote follower count separately from local follower count (4218ecc4)
*  missing req.body when parsing ActivityPub requests (e6753ce5)
*  bugs, more prep to start making calls to self (5d95765e)
*  moved .well-known assets to separate router file, added basic webfinger implementation (51d8f3b1)
* **deps:**
  *  update dependency ace-builds to v1.37.5 (#13058) (76a14de3)
  *  update dependency fs-extra to v11.3.0 (#13055) (9a401b5b)
  *  update dependency postcss to v8.5.1 (#13050) (3ba1d264)
  *  update dependency nodebb-plugin-web-push to v0.7.2 (#13049) (e9a4c42b)
  *  update dependency nodebb-plugin-2factor to v7.5.8 (#13048) (3827f438)
  *  update dependency sass to v1.83.4 (#13046) (8e62800b)
  *  update dependency postcss to v8.5.0 (#13044) (c4c89116)
  *  update dependency cron to v3.5.0 (#13042) (5e5d920b)
  *  pin dependencies (#12987) (430d1479)
  *  update dependency satori to ^0.12.0 (#12995) (05f7b58c)
  *  update dependency tough-cookie to v5.1.0 (#13039) (34b0cf6b)
  *  update fontsource monorepo to v5.1.1 (#13029) (b1e87aa9)
  *  update dependency fetch-cookie to v3.1.0 (#13006) (df69b399)
  *  update dependency ace-builds to v1.37.4 (#12988) (3a33cd5b)
  *  update dependency esbuild to v0.24.2 (#12989) (701780fe)
  *  update dependency sanitize-html to v2.14.0 (#12994) (bfc962b9)
  *  update dependency ioredis to v5.4.2 (#12993) (7943fcde)
  *  update dependency cron to v3.4.0 (#13026) (de571d24)
  *  update dependency sass to v1.83.1 (#13028) (438f4e0a)
  *  update dependency nodebb-widget-essentials to v7.0.32 (#13027) (de076a21)
  *  #12683 bump emoji plugin to v6 (e8fda4c0)
  *  swap ntfy for web-push plugin (aa060d31)
  *  persona v4 support (83993cad)
  *  bump markdown (daed7413)

##### Other Changes

*  fix paranthesis (8fd8079a)
*  remove unused utils (7e450e1d)
*  remove unused function (26765fe9)
*  remove unused (530241e0)
*  comment out actor assertion call in Users.getUsersFields (691f6917)
*  fix some but not all tests (76453650)
*  fix privileges in test runner (aadac705)
*  unused requires, linting fixes (3e02efcd)
*  additional logging (08f8babd)
*  fix eslint errors (47b3ffb9)

##### Performance Improvements

*  ~18x speedup of /world route (f6f01ba3)
*  get rid of exists call, load all attachments  in one call (9b8c834e)
*  use batch in resolveInboxes (644bcec5)
*  get rid of getPidByIndex, use postAtIndex (ad22b54e)
*  '-inf' faster (c95075e1)
*  move attachments to post hash (291bf7db)

##### Refactors

*  use helpers.log (40257663)
*  add `thumbsOnly` option to thumbs retrieval method so that embeds/attachments don't show up in composer thumbnail modal (51fd65ab)
*  split (and remove) activitypub.json file and move strings to more appropriate locations (e4e10636)
*  topic thumb logic so that `isDraft` is based on topic existence, and not whether it is a UUID, as remote topics are also UUIDs. (3439fdb6)
*  post object schema to its own reference object, added sourceContent as optional value in post data (3073abd9)
*  prolly dont need exists check (a42c9a6b)
*  buildTopicsSortedSet (c1093c92)
*  expose buildRecipients as a main activitypub lib method, call buildReceipients in ap controller actors for notes (5e47b194)
*  followers url filtering logic, #12834 (ca683c6d)
*  check HTTP signatures on all activitypub requests (8ef0df57)
*  simplified ajaxify.check and likely made it equally more confusing (cf6c4c52)
*  split out logic to determine ajaxification into exported method (fc4f6a4c)
*  standardization; onNewPost internal method to return a superset of post summary (9357e718)
*  follow/accept/undo logic to pass the same timestamp throughout the follow's lifetime (e015339c)
*  store local follow backreferences for remote users (both followers and following), update actor pruning to take local follow counts into consideration, fixes #12701 (39f92eac)
*  collection logic out to an activitypub helper (352857cf)
*  context item retrieval logic (20aee8e9)
*  announces (c021e7e8)
*  single db call (c231ab78)
*  actor pruning logic (6227ab90)
*  catch errors (f76a5863)
*  add method from mentions into core (3eca9785)
*  dont need exist check, if post doesnt exist getPostData returns null (b2d03da9)
*  User.getUidsByUserslugs, so it works with multiple slugs (eb6fe339)
*  suggest topics, use strings for tids (3488a4bf)
*  unused winston (869df3c2)
*  change to info (d1625d5f)
*  remove verbose logs, (2ae58570)
*  comment out verbose logs (ba2d1841)
*  get rid of noop (eaf43541)
*  single cache.del call (9868a728)
*  #12553, buildRecipients so that it is separate from addressing in mocks.js (1fa93465)
*  use batch.processArray for sending AP messages (ea6e15bf)
*  context actor to serve an as:OrderedCollection instead of as:Page, and added context property (as per FEP-7888) to refer to it, changed audience to point to category (4b29a1b9)
*  post announce logic to save to separate zset instead of to topic events, closes #12536 (119800d9)
*  remove unnecessary flag routes added in 9ab1a2d (53b352d0)
*  split activitypub tests to subfolder files (94eafe1d)
*  use URLSearchParams instead of multiple encodeURIComponent (844d1402)
*  stub routes for category synchronization, refactor remote follow logic to allow categories to conduct follows as well (59a9dd84)
*  use a helper to resolve actor URI (b921f8d1)
*  use getSortedSetUnion in syncUserInboxes instead (6c1a0fb1)
*  use one internal rejection method (ac765f1e)
*  use topics.post, topics.reply, and posts.edit in Create(Note), Create(Note), and Update(Note), respectively (f7c8967e)
*  use topics.create internal method instead of directly setting topic hash, handle incoming tags for OP (f5a61079)
*  assertTopic to only call setObject when it is a new topic (bdcd862c)
*  resolveId method, add hostname verification (ed4ccbfc)
*  use existing sets for topics (instead of topicRemote, etc.) (ec2b375a)
*  activitypub sending to handle signed requests from categories (35819cc9)
*  replace JIT actor retrieval with actor assertion and storage logic (ef8cd34b)
*  added mocks.note in preparation for AP note retrieval logic, inReplyTo is always populated now, unless new topic (5de4f084)
*  simplify remote (un)follow controller (c9feb925)
*  guard dispatcher definition so non-Node runtimes won't have issues (2ce14f50)
*  generate a topic id when asserting a new topic (2ff70fdd)
*  move activitypub-related middlewares to their own file (538776f9)
*  simplify mocks.post as it only needs minimal data for saving into db (2bd9e984)
*  move mockProfile and mockPost to separate mocks.js (06e15834)
*  update ActivityPub.get and all methods calling it to take a uid so that requests can be signed (a1c8c3a0)
*  validator check to helper method (2e330d8b)
*  move profile mocking logic to discrete method in main activitypub lib (8d4fd9c0)
*  update ap libs to use core request lib (5c881d3f)
*  update activitypub.getActor to accept either url or webfinger id (68d5e4a8)
*  minor restructure to move logic out of main controller file to src/api (c803b212)
*  acp tpl + config option (ab3ff320)

##### Code Style Changes

*  remove unused variable (9f94653b)

##### Tests

*  fix spec (b80f0dab)
*  missing ; (866588f7)
*  fix guest handles in onNewPost (81f7371a)
*  have actor assertion always use cache for tests (ad05f06b)
*  fix broken test in category follows (4949d6c4)
*  add attachments (6042f4a7)
*  refactor tests to support additional Note tests (0c0f01b5)
*  use encoded parameters in webfinger tests (8fd4ae2d)
*  fix well-known error code repsonse (175521ba)
*  refactor AP tests (42a09241)
*  fix tests (e138b915)
*  fix tests to reflect new immutable IDs, and added new tests for resource retrieval (42bb3c33)
*  fix error copy (91a509c4)
*  allow http proto on ci (24c1dfac)
*  fixed improper signed_string reconstruction in `.verify()` (cc0d1886)
*  fix webfinger test (9dfa1b72)
*  added passing test cases for .sign() and .verify() (a10df987)
*  updated activitypub test suite (1c8e13bb)
*  added test cases for activitypub integration, WIP (4bd8d28a)

#### v3.12.4 (2025-01-20)

##### Chores

*  up harmony (cfb22da1)
*  up harmony (d0715ca4)
*  incrementing version number - v3.12.3 (abb2417e)
*  update changelog for v3.12.3 (0cc94bbe)
*  incrementing version number - v3.12.2 (a1269b39)
*  incrementing version number - v3.12.1 (944c4e66)
*  incrementing version number - v3.12.0 (052c195e)
*  incrementing version number - v3.11.1 (0c0dd480)
*  incrementing version number - v3.11.0 (acf27e85)
*  incrementing version number - v3.10.3 (57d54224)
*  incrementing version number - v3.10.2 (2f15f464)
*  incrementing version number - v3.10.1 (cca3a644)
*  incrementing version number - v3.10.0 (b60a9b4e)
*  incrementing version number - v3.9.1 (f120c91c)
*  incrementing version number - v3.9.0 (4880f32d)
*  incrementing version number - v3.8.4 (4833f9a6)
*  incrementing version number - v3.8.3 (97ce2c44)
*  incrementing version number - v3.8.2 (72d91251)
*  incrementing version number - v3.8.1 (527326f7)
*  incrementing version number - v3.8.0 (e228a6eb)
*  incrementing version number - v3.7.5 (6882894d)
*  incrementing version number - v3.7.4 (6678744c)
*  incrementing version number - v3.7.3 (2d62b6f6)
*  incrementing version number - v3.7.2 (cc257e7e)
*  incrementing version number - v3.7.1 (712365a5)
*  incrementing version number - v3.7.0 (9a6153d7)
*  incrementing version number - v3.6.7 (86a17e38)
*  incrementing version number - v3.6.6 (6604bf37)
*  incrementing version number - v3.6.5 (6c653625)
*  incrementing version number - v3.6.4 (83d131b4)
*  incrementing version number - v3.6.3 (fc7d2bfd)
*  incrementing version number - v3.6.2 (0f577a57)
*  incrementing version number - v3.6.1 (f1a69468)
*  incrementing version number - v3.6.0 (4cdf85f8)
*  incrementing version number - v3.5.3 (ed0e8783)
*  incrementing version number - v3.5.2 (52fbb2da)
*  incrementing version number - v3.5.1 (4c543488)
*  incrementing version number - v3.5.0 (d06fb4f0)
*  incrementing version number - v3.4.3 (5c984250)
*  incrementing version number - v3.4.2 (3f0dac38)
*  incrementing version number - v3.4.1 (01e69574)
*  incrementing version number - v3.4.0 (fd9247c5)
*  incrementing version number - v3.3.9 (5805e770)
*  incrementing version number - v3.3.8 (a5603565)
*  incrementing version number - v3.3.7 (b26f1744)
*  incrementing version number - v3.3.6 (7fb38792)
*  incrementing version number - v3.3.4 (a67f84ea)
*  incrementing version number - v3.3.3 (f94d239b)
*  incrementing version number - v3.3.2 (ec9dac97)
*  incrementing version number - v3.3.1 (151cc68f)
*  incrementing version number - v3.3.0 (fc1ad70f)
*  incrementing version number - v3.2.3 (b06d3e63)
*  incrementing version number - v3.2.2 (758ecfcd)
*  incrementing version number - v3.2.1 (20145074)
*  incrementing version number - v3.2.0 (9ecac38e)
*  incrementing version number - v3.1.7 (0b4e81ab)
*  incrementing version number - v3.1.6 (b3a3b130)
*  incrementing version number - v3.1.5 (ec19343a)
*  incrementing version number - v3.1.4 (2452783c)
*  incrementing version number - v3.1.3 (3b4e9d3f)
*  incrementing version number - v3.1.2 (40fa3489)
*  incrementing version number - v3.1.1 (40250733)
*  incrementing version number - v3.1.0 (0cb386bd)
*  incrementing version number - v3.0.1 (26f6ea49)
*  incrementing version number - v3.0.0 (224e08cd)

##### Bug Fixes

*  404 request if payload invalid (de021bda)
*  add HEAD check to unsub route (205bf477)

#### v3.12.3 (2025-01-15)

##### Chores

*  up harmony (5120d117)
*  up 2factor (c6eaea30)
*  incrementing version number - v3.12.2 (a1269b39)
*  update changelog for v3.12.2 (98e5d1b5)
*  incrementing version number - v3.12.1 (944c4e66)
*  incrementing version number - v3.12.0 (052c195e)
*  incrementing version number - v3.11.1 (0c0dd480)
*  incrementing version number - v3.11.0 (acf27e85)
*  incrementing version number - v3.10.3 (57d54224)
*  incrementing version number - v3.10.2 (2f15f464)
*  incrementing version number - v3.10.1 (cca3a644)
*  incrementing version number - v3.10.0 (b60a9b4e)
*  incrementing version number - v3.9.1 (f120c91c)
*  incrementing version number - v3.9.0 (4880f32d)
*  incrementing version number - v3.8.4 (4833f9a6)
*  incrementing version number - v3.8.3 (97ce2c44)
*  incrementing version number - v3.8.2 (72d91251)
*  incrementing version number - v3.8.1 (527326f7)
*  incrementing version number - v3.8.0 (e228a6eb)
*  incrementing version number - v3.7.5 (6882894d)
*  incrementing version number - v3.7.4 (6678744c)
*  incrementing version number - v3.7.3 (2d62b6f6)
*  incrementing version number - v3.7.2 (cc257e7e)
*  incrementing version number - v3.7.1 (712365a5)
*  incrementing version number - v3.7.0 (9a6153d7)
*  incrementing version number - v3.6.7 (86a17e38)
*  incrementing version number - v3.6.6 (6604bf37)
*  incrementing version number - v3.6.5 (6c653625)
*  incrementing version number - v3.6.4 (83d131b4)
*  incrementing version number - v3.6.3 (fc7d2bfd)
*  incrementing version number - v3.6.2 (0f577a57)
*  incrementing version number - v3.6.1 (f1a69468)
*  incrementing version number - v3.6.0 (4cdf85f8)
*  incrementing version number - v3.5.3 (ed0e8783)
*  incrementing version number - v3.5.2 (52fbb2da)
*  incrementing version number - v3.5.1 (4c543488)
*  incrementing version number - v3.5.0 (d06fb4f0)
*  incrementing version number - v3.4.3 (5c984250)
*  incrementing version number - v3.4.2 (3f0dac38)
*  incrementing version number - v3.4.1 (01e69574)
*  incrementing version number - v3.4.0 (fd9247c5)
*  incrementing version number - v3.3.9 (5805e770)
*  incrementing version number - v3.3.8 (a5603565)
*  incrementing version number - v3.3.7 (b26f1744)
*  incrementing version number - v3.3.6 (7fb38792)
*  incrementing version number - v3.3.4 (a67f84ea)
*  incrementing version number - v3.3.3 (f94d239b)
*  incrementing version number - v3.3.2 (ec9dac97)
*  incrementing version number - v3.3.1 (151cc68f)
*  incrementing version number - v3.3.0 (fc1ad70f)
*  incrementing version number - v3.2.3 (b06d3e63)
*  incrementing version number - v3.2.2 (758ecfcd)
*  incrementing version number - v3.2.1 (20145074)
*  incrementing version number - v3.2.0 (9ecac38e)
*  incrementing version number - v3.1.7 (0b4e81ab)
*  incrementing version number - v3.1.6 (b3a3b130)
*  incrementing version number - v3.1.5 (ec19343a)
*  incrementing version number - v3.1.4 (2452783c)
*  incrementing version number - v3.1.3 (3b4e9d3f)
*  incrementing version number - v3.1.2 (40fa3489)
*  incrementing version number - v3.1.1 (40250733)
*  incrementing version number - v3.1.0 (0cb386bd)
*  incrementing version number - v3.0.1 (26f6ea49)
*  incrementing version number - v3.0.0 (224e08cd)

##### Bug Fixes

*  closes #13051, catch errors from widget render (168e6b2c)
*  for attribute label (e89b7ec8)
*  don't confirm emails on HEAD request (45eabbf5)

##### Performance Improvements

*  closes #13052, only call loadConfig once per page (539693a4)

#### v3.12.2 (2025-01-08)

##### Chores

*  remove log (2f5effda)
*  up markdown (0a135d88)
*  up deps (48944a86)
*  up composer-default (80ddc03a)
*  up harmony (5b2dfd74)
*  incrementing version number - v3.12.1 (944c4e66)
*  update changelog for v3.12.1 (22606767)
*  incrementing version number - v3.12.0 (052c195e)
*  incrementing version number - v3.11.1 (0c0dd480)
*  incrementing version number - v3.11.0 (acf27e85)
*  incrementing version number - v3.10.3 (57d54224)
*  incrementing version number - v3.10.2 (2f15f464)
*  incrementing version number - v3.10.1 (cca3a644)
*  incrementing version number - v3.10.0 (b60a9b4e)
*  incrementing version number - v3.9.1 (f120c91c)
*  incrementing version number - v3.9.0 (4880f32d)
*  incrementing version number - v3.8.4 (4833f9a6)
*  incrementing version number - v3.8.3 (97ce2c44)
*  incrementing version number - v3.8.2 (72d91251)
*  incrementing version number - v3.8.1 (527326f7)
*  incrementing version number - v3.8.0 (e228a6eb)
*  incrementing version number - v3.7.5 (6882894d)
*  incrementing version number - v3.7.4 (6678744c)
*  incrementing version number - v3.7.3 (2d62b6f6)
*  incrementing version number - v3.7.2 (cc257e7e)
*  incrementing version number - v3.7.1 (712365a5)
*  incrementing version number - v3.7.0 (9a6153d7)
*  incrementing version number - v3.6.7 (86a17e38)
*  incrementing version number - v3.6.6 (6604bf37)
*  incrementing version number - v3.6.5 (6c653625)
*  incrementing version number - v3.6.4 (83d131b4)
*  incrementing version number - v3.6.3 (fc7d2bfd)
*  incrementing version number - v3.6.2 (0f577a57)
*  incrementing version number - v3.6.1 (f1a69468)
*  incrementing version number - v3.6.0 (4cdf85f8)
*  incrementing version number - v3.5.3 (ed0e8783)
*  incrementing version number - v3.5.2 (52fbb2da)
*  incrementing version number - v3.5.1 (4c543488)
*  incrementing version number - v3.5.0 (d06fb4f0)
*  incrementing version number - v3.4.3 (5c984250)
*  incrementing version number - v3.4.2 (3f0dac38)
*  incrementing version number - v3.4.1 (01e69574)
*  incrementing version number - v3.4.0 (fd9247c5)
*  incrementing version number - v3.3.9 (5805e770)
*  incrementing version number - v3.3.8 (a5603565)
*  incrementing version number - v3.3.7 (b26f1744)
*  incrementing version number - v3.3.6 (7fb38792)
*  incrementing version number - v3.3.4 (a67f84ea)
*  incrementing version number - v3.3.3 (f94d239b)
*  incrementing version number - v3.3.2 (ec9dac97)
*  incrementing version number - v3.3.1 (151cc68f)
*  incrementing version number - v3.3.0 (fc1ad70f)
*  incrementing version number - v3.2.3 (b06d3e63)
*  incrementing version number - v3.2.2 (758ecfcd)
*  incrementing version number - v3.2.1 (20145074)
*  incrementing version number - v3.2.0 (9ecac38e)
*  incrementing version number - v3.1.7 (0b4e81ab)
*  incrementing version number - v3.1.6 (b3a3b130)
*  incrementing version number - v3.1.5 (ec19343a)
*  incrementing version number - v3.1.4 (2452783c)
*  incrementing version number - v3.1.3 (3b4e9d3f)
*  incrementing version number - v3.1.2 (40fa3489)
*  incrementing version number - v3.1.1 (40250733)
*  incrementing version number - v3.1.0 (0cb386bd)
*  incrementing version number - v3.0.1 (26f6ea49)
*  incrementing version number - v3.0.0 (224e08cd)

##### New Features

*  add -y flag to upgrade, closes #13023 (4f682a31)
*  add missing default notification settings (d155da3c)
*  closes #13001, allow keyboard to change cover position (45c5351f)
*  use displayname for user image titles (52366101)

##### Bug Fixes

*  closes #13036, if image isn't loaded yet width is 0 (d05c203b)
*  closes #13024, on register dont auto login with user doesn't have local:login privilege (238a3ed5)
*  closes #13022, don't do anything if notif setting isnt set to email (fcf50a3c)
*  closes #13019, use displayname in vote tooltip (dcc2342c)
*  overflow on dashboard/searches (1b13cce2)
*  #13011, catch errors (25655d5a)
*  truncate popular search terms, closes #13010 (2f72e32d)
*  #13007, replace $ with \uFF04, like . (c60cee59)
*  dont stripEXIF from gifs (f478adac)
*  closes #13008, catch errors in post redirect (77521494)
*  test on redis (a6f0eba5)
*  convert to str than filter (c69fa811)
*  closes #13002, make chats keyboard focusable (e71feeec)
*  js error when clicking a notification (d40762b7)
*  don't close search if children have focus, closes #13004 (1cb7bb6a)
*  #12991, switch to nodemailer address object (a489abc7)
*  make fork/move dropdowns go up (89b8de50)

##### Other Changes

*  whitespace (27e945fd)
*  index.js (7bfca7ba)
* //github.com/NodeBB/NodeBB/issues/13018 (68f73fd0)

##### Refactors

*  silence deprecations in prod (d75b169c)
*  check if useragent exists firt (a0e66816)
*  get rid of RegExp (e4dd697a)
*  remove debug (646b9ea7)

##### Tests

*  fix spec (23298060)
*  remove resizeImageWidth (25f1fa67)
*  editor tests (82538ca3)
*  missing service worker test (e845afc1)
*  add last one (54233dcd)
*  custom fields tests (ae2bd5ab)
*  fix controller tests (b129c6c0)
*  missing translator tests (0d3a8757)
*  fix relative path in tests (127e0e22)
*  add translateInPlace test (225c91ed)
*  subfolder in category link (407b0cc6)
*  add helper tests (95b42f83)
*  debounce/throttle (d5ae91a3)
*  add back disabled test since node 18 is minimum (8864e658)
*  fix user picture test (29804a10)
*  fix thumb test (fa24f1dd)

#### v3.12.1 (2024-12-20)

##### Chores

*  up harmony (18904bbb)
*  up persona (b4ec3a6a)
*  incrementing version number - v3.12.0 (052c195e)
*  update changelog for v3.12.0 (5395062d)
*  incrementing version number - v3.11.1 (0c0dd480)
*  incrementing version number - v3.11.0 (acf27e85)
*  incrementing version number - v3.10.3 (57d54224)
*  incrementing version number - v3.10.2 (2f15f464)
*  incrementing version number - v3.10.1 (cca3a644)
*  incrementing version number - v3.10.0 (b60a9b4e)
*  incrementing version number - v3.9.1 (f120c91c)
*  incrementing version number - v3.9.0 (4880f32d)
*  incrementing version number - v3.8.4 (4833f9a6)
*  incrementing version number - v3.8.3 (97ce2c44)
*  incrementing version number - v3.8.2 (72d91251)
*  incrementing version number - v3.8.1 (527326f7)
*  incrementing version number - v3.8.0 (e228a6eb)
*  incrementing version number - v3.7.5 (6882894d)
*  incrementing version number - v3.7.4 (6678744c)
*  incrementing version number - v3.7.3 (2d62b6f6)
*  incrementing version number - v3.7.2 (cc257e7e)
*  incrementing version number - v3.7.1 (712365a5)
*  incrementing version number - v3.7.0 (9a6153d7)
*  incrementing version number - v3.6.7 (86a17e38)
*  incrementing version number - v3.6.6 (6604bf37)
*  incrementing version number - v3.6.5 (6c653625)
*  incrementing version number - v3.6.4 (83d131b4)
*  incrementing version number - v3.6.3 (fc7d2bfd)
*  incrementing version number - v3.6.2 (0f577a57)
*  incrementing version number - v3.6.1 (f1a69468)
*  incrementing version number - v3.6.0 (4cdf85f8)
*  incrementing version number - v3.5.3 (ed0e8783)
*  incrementing version number - v3.5.2 (52fbb2da)
*  incrementing version number - v3.5.1 (4c543488)
*  incrementing version number - v3.5.0 (d06fb4f0)
*  incrementing version number - v3.4.3 (5c984250)
*  incrementing version number - v3.4.2 (3f0dac38)
*  incrementing version number - v3.4.1 (01e69574)
*  incrementing version number - v3.4.0 (fd9247c5)
*  incrementing version number - v3.3.9 (5805e770)
*  incrementing version number - v3.3.8 (a5603565)
*  incrementing version number - v3.3.7 (b26f1744)
*  incrementing version number - v3.3.6 (7fb38792)
*  incrementing version number - v3.3.4 (a67f84ea)
*  incrementing version number - v3.3.3 (f94d239b)
*  incrementing version number - v3.3.2 (ec9dac97)
*  incrementing version number - v3.3.1 (151cc68f)
*  incrementing version number - v3.3.0 (fc1ad70f)
*  incrementing version number - v3.2.3 (b06d3e63)
*  incrementing version number - v3.2.2 (758ecfcd)
*  incrementing version number - v3.2.1 (20145074)
*  incrementing version number - v3.2.0 (9ecac38e)
*  incrementing version number - v3.1.7 (0b4e81ab)
*  incrementing version number - v3.1.6 (b3a3b130)
*  incrementing version number - v3.1.5 (ec19343a)
*  incrementing version number - v3.1.4 (2452783c)
*  incrementing version number - v3.1.3 (3b4e9d3f)
*  incrementing version number - v3.1.2 (40fa3489)
*  incrementing version number - v3.1.1 (40250733)
*  incrementing version number - v3.1.0 (0cb386bd)
*  incrementing version number - v3.0.1 (26f6ea49)
*  incrementing version number - v3.0.0 (224e08cd)

##### Bug Fixes

*  check install.values, it can be undefined (9bb8002a)

#### v3.12.0 (2024-12-18)

##### Chores

* **deps:**
  *  update dependency @commitlint/cli to v19.6.1 (#12981) (f25312a8)
  *  update dependency sass-embedded to v1.83.0 (#12974) (c4399dd0)
  *  update dependency lint-staged to v15.2.11 (#12964) (607d1895)
  *  update dependency sass-embedded to v1.82.0 (#12951) (6e2b33b7)
  *  update dependency mocha to v11 (#12954) (55ad7af8)
*  up harmony (831422d0)
*  up peace, refactor widgets (0f5e1457)
*  up themes (a79426f9)
*  up harmony (5045a1ae)
*  up harmony (03b9df08)
*  remove lines re: incrementing version number, in changelog (cc6963f2)
*  up themes (e0c345b2)
*  up persona (2a085cdb)
*  incrementing version number - v3.11.1 (0c0dd480)
*  update changelog for v3.11.1 (fee57816)
*  up themes (e532dcb4)
*  up spam-be-gone (3a7e9733)
*  up peace (a72c067f)
*  up themes (a4a752bb)
*  up mentions (4db5a5b6)
*  incrementing version number - v3.11.0 (acf27e85)
*  incrementing version number - v3.10.3 (57d54224)
*  incrementing version number - v3.10.2 (2f15f464)
*  incrementing version number - v3.10.1 (cca3a644)
*  incrementing version number - v3.10.0 (b60a9b4e)
*  incrementing version number - v3.9.1 (f120c91c)
*  incrementing version number - v3.9.0 (4880f32d)
*  incrementing version number - v3.8.4 (4833f9a6)
*  incrementing version number - v3.8.3 (97ce2c44)
*  incrementing version number - v3.8.2 (72d91251)
*  incrementing version number - v3.8.1 (527326f7)
*  incrementing version number - v3.8.0 (e228a6eb)
*  incrementing version number - v3.7.5 (6882894d)
*  incrementing version number - v3.7.4 (6678744c)
*  incrementing version number - v3.7.3 (2d62b6f6)
*  incrementing version number - v3.7.2 (cc257e7e)
*  incrementing version number - v3.7.1 (712365a5)
*  incrementing version number - v3.7.0 (9a6153d7)
*  incrementing version number - v3.6.7 (86a17e38)
*  incrementing version number - v3.6.6 (6604bf37)
*  incrementing version number - v3.6.5 (6c653625)
*  incrementing version number - v3.6.4 (83d131b4)
*  incrementing version number - v3.6.3 (fc7d2bfd)
*  incrementing version number - v3.6.2 (0f577a57)
*  incrementing version number - v3.6.1 (f1a69468)
*  incrementing version number - v3.6.0 (4cdf85f8)
*  incrementing version number - v3.5.3 (ed0e8783)
*  incrementing version number - v3.5.2 (52fbb2da)
*  incrementing version number - v3.5.1 (4c543488)
*  incrementing version number - v3.5.0 (d06fb4f0)
*  incrementing version number - v3.4.3 (5c984250)
*  incrementing version number - v3.4.2 (3f0dac38)
*  incrementing version number - v3.4.1 (01e69574)
*  incrementing version number - v3.4.0 (fd9247c5)
*  incrementing version number - v3.3.9 (5805e770)
*  incrementing version number - v3.3.8 (a5603565)
*  incrementing version number - v3.3.7 (b26f1744)
*  incrementing version number - v3.3.6 (7fb38792)
*  incrementing version number - v3.3.4 (a67f84ea)
*  incrementing version number - v3.3.3 (f94d239b)
*  incrementing version number - v3.3.2 (ec9dac97)
*  incrementing version number - v3.3.1 (151cc68f)
*  incrementing version number - v3.3.0 (fc1ad70f)
*  incrementing version number - v3.2.3 (b06d3e63)
*  incrementing version number - v3.2.2 (758ecfcd)
*  incrementing version number - v3.2.1 (20145074)
*  incrementing version number - v3.2.0 (9ecac38e)
*  incrementing version number - v3.1.7 (0b4e81ab)
*  incrementing version number - v3.1.6 (b3a3b130)
*  incrementing version number - v3.1.5 (ec19343a)
*  incrementing version number - v3.1.4 (2452783c)
*  incrementing version number - v3.1.3 (3b4e9d3f)
*  incrementing version number - v3.1.2 (40fa3489)
*  incrementing version number - v3.1.1 (40250733)
*  incrementing version number - v3.1.0 (0cb386bd)
*  incrementing version number - v3.0.1 (26f6ea49)
*  incrementing version number - v3.0.0 (224e08cd)
* **i18n:**
  *  fallback strings for new resources: nodebb.admin-extend-plugins (6b5b9a4e)
  *  fallback strings for new resources: nodebb.admin-extend-plugins (26a1a2f1)
  *  fallback strings for new resources: nodebb.admin-settings-uploads (0c665342)
  *  fallback strings for new resources: nodebb.admin-manage-user-custom-fields (1c33285a)

##### New Features

*  add support for saas_plan (68198e8a)
*  add some missing canonical tags, closes #12961 (e6bdbb6b)
*  use displayname in chat teasers/userlist, in digest email (69a08c0f)
*  add "keep original image after resize" option (9a635870)
*  add visibility option to, closes #12942 (77382e3b)

##### Bug Fixes

* **deps:**
  *  update dependency ace-builds to v1.37.0 (#12983) (808e483e)
  *  update dependency @fortawesome/fontawesome-free to v6.7.2 (#12982) (69214d79)
  *  update dependency terser-webpack-plugin to v5.3.11 (#12973) (a054cbd7)
  *  update dependency sass to v1.83.0 (#12975) (7f020037)
  *  update dependency nodebb-theme-peace to v2.2.30 (#12970) (645bddb8)
  *  update dependency cron to v3.3.1 (#12969) (b8a0a502)
  *  update dependency jsesc to v3.1.0 (#12968) (3a8ae12c)
  *  update dependency cron to v3.3.0 (#12965) (0913c307)
  *  update dependency mongodb to v6.12.0 (#12966) (3d33c5cb)
  *  update dependency nodebb-theme-peace to v2.2.29 (#12967) (6b77441b)
  *  update dependency express to v4.21.2 (#12955) (55a07bcb)
  *  update dependency chart.js to v4.4.7 (#12950) (300ca704)
  *  update dependency sass to v1.82.0 (#12952) (3bd447be)
  *  update dependency webpack to v5.97.1 (#12953) (122d3841)
  *  update dependency connect-redis to v8.0.1 (#12944) (38d904b2)
  *  update dependency sortablejs to v1.15.6 (#12943) (694827cf)
*  closes #12980, properly reset all plugins with `./nodebb reset -a` (f0aa960c)
*  chat header line-height (8883eaf7)
*  make sure theme screenshot starts with themeDir (3b713afe)
*  closes #12963, change translation to general (04eb9e1a)
*  race condition that results in 2x localReset call the same process (c25fd40a)
*  closes #12962, fix js error for guests on /users (4568ec3e)
*  closes #12957, don't overflow thumbs modal if filename is too long (c8a38667)
*  escape about me on user flags (26026fb2)
*  issue where clicking on a topic thumb caused a page nav, fixes #12948 (5b60aee6)
*  users page QoL improvements (2e0a1751)

##### Other Changes

*  missing semi (0495842f)
*  long line (c69765e3)
*  update connect-redis to 8 (8c5d7c4d)

##### Refactors

*  closes #12979, show plugin id/version on semver error (abcb200f)
*  move to saas plugin (27867d77)
*  check if caches have the requested cache name (38520769)
*  add csrf protection to webinstall POST route (8f465afc)
*  explicit settings/appearance routes (bb0ff6d6)
*  only send required fields in query (76caa92c)
*  replace math.random with crypto (9d2af7e1)
*  remove "password" in comments (fe811537)

##### Tests

*  fix spec (68f87ccf)
*  add missing field (456373c5)
*  add missing spec files (6eb28077)
*  remove routes that no longer exist (468d930a)
*  fix test (b05dc7f7)

#### v3.11.1 (2024-12-09)

##### Chores

* **config:**  migrate config renovate.json (#12960) (14f698f9)
*  up spam-be-gone (e5c8deb8)
*  update changelog for v3.11.0 (0333d263)

##### Bug Fixes

*  escape about me on user flags (4e69bff7)

#### v3.11.0 (2024-11-27)

##### Chores

* **i18n:**
  *  fallback strings for new resources: nodebb.admin-settings-reputation, nodebb.error (985e5e3d)
  *  fallback strings for new resources: nodebb.admin-manage-user-custom-fields, nodebb.error (174be398)
  *  fallback strings for new resources: nodebb.error (b676c220)
  *  fallback strings for new resources: nodebb.admin-manage-user-custom-fields (b89036cd)
  *  fallback strings for new resources: nodebb.admin-settings-uploads (e3ef858b)
  *  fallback strings for new resources: nodebb.admin-manage-users, nodebb.error (15e16704)
  *  fallback strings for new resources: nodebb.topic (9fd5ca27)
  *  fallback strings for new resources: nodebb.pages, nodebb.user (1c26048f)
*  migrate admin/settings/social.json into admin/settings/general.json (206613dd)
*  migrate admin/settings/languages.json into admin/settings/general.json (ab143b1d)
*  migrate admin/settings/homepage.json into admin/settings/general.json (a7678185)
*  combine admin/settings/guest.json language file into admin/settings/user.json (3f14373c)
*  up themes (388a156d)
*  up harmony (2324a5bf)
*  up harmony (03cea237)
*  up themes (2ec3d1af)
*  up themes (965ca636)
*  up persona (1a4a9d08)
*  up peace (acd42c23)
*  up peace (7179a280)
*  up peace (bcf8dee2)
*  up peace (524b2b76)
*  up themes (4ad082b4)
*  up peace (953ea609)
*  up widgets (6a71fd24)
*  up harmony (f13b7f8d)
*  up persona (6f89bf6b)
*  up persona (79c93c85)
*  up themes (d63a828d)
*  up themes (6aa8f1b6)
*  up peace (a4d8baf3)
*  up themes (24e9adf6)
*  up persona (baff68b4)
*  up peace (c4b50607)
*  up lavender (c32c63aa)
*  up lavender (66214bea)
*  update tx config (4ce387b9)
*  up themes (65f64eba)
*  up themes (280e7613)
*  up widgets (b13bd803)
*  update changelog for v3.10.3 (83965385)
*  up harmony (f6f1d906)
*  up harmony (9426fd1a)
* **deps:**
  *  update commitlint monorepo to v19.6.0 (#12920) (151e0164)
  *  update postgres docker tag to v17.2 (#12931) (036f4564)
  *  update postgres docker tag to v17.1 (#12915) (0d0f9144)
  *  update dependency sass-embedded to v1.81.0 (#12914) (ff258028)
  *  update dependency sass-embedded to v1.80.6 (#12894) (37f877b3)
  *  update dependency sass-embedded to v1.80.5 (#12889) (383f332c)
  *  update dependency mocha to v10.8.2 (#12884) (d86bedf8)
  *  update coverallsapp/github-action action to v2.3.4 (#12867) (351bcdbf)
  *  update dependency sass-embedded to v1.80.4 (#12861) (be0c92ec)
  *  update dependency smtp-server to v3.13.6 (#12859) (a0804485)
  *  update coverallsapp/github-action action to v2.3.3 (#12854) (48b09f1d)
  *  update coverallsapp/github-action action to v2.3.2 (#12846) (c16192dc)
  *  update dependency sass-embedded to v1.79.5 (#12850) (6f227264)
  *  update dependency eslint-plugin-import to v2.31.0 (#12832) (cc2e0e9f)
  *  update redis docker tag to v7.4.1 (#12836) (e7cba341)
  *  update mongo docker tag to v8 (#12810) (2fd89558)
  *  update dependency sass-embedded to v1.79.4 (#12825) (24928b17)
  *  update postgres docker tag to v17 (#12829) (d7299f90)

##### New Features

*  use displayname in chat system messages, closes #12937 (e6f78d25)
*  move website/location fields into custom user fields (669c9c50)
*  add pagination to groups page, api routes (49e0e1ab)
*  add date and multiselect custom fields (9cf85ced)
*  new language file for user custom fields (05fb8aa5)
*  closes #12902, allow adding users as post editors (bc00df3c)
*  added nn_NO, takk\! (b9eff72d)
*  add read topics route (757d7101)

##### Bug Fixes

*  update acp template to use new lang keys (bc5b91aa)
*  spec, dont show registered-users, verified-users, unverified-users in manage groups (8605584f)
*  #12927, give more right padding on FF (5b3b003d)
*  dont show chat upload btn if maxFileSize is 0, #12926 (14125858)
*  dont allow core user fields to be used as custom fields (836e8458)
*  button to match category dropdown (5e9b7b44)
*  filter undefined posts/topics (db291ecd)
*  don't crash if post is undefined (d4770908)
*  spec (d5c9c0ba)
*  block search showing old matches (a9fc13dd)
*  missing template (008ad1e3)
*  naive checking to handle uploaded images whose filenames end with '-resized' (1268ed50)
*  update copy to reflect real default value of 2000px for `resizeImageWidthThreshold` (4614958b)
*  editor removal (977d80c1)
*  add warning txt file for nn-NO (23b3a64a)
*  incorrect folder syntax for nn_NO (396c7766)
*  use postData.topic.title instead of topicData.title (d24bc5c5)
*  another missing await (10a85e94)
* **deps:**
  *  update dependency sortablejs to v1.15.4 (#12934) (2db5b815)
  *  update dependency nodebb-plugin-2factor to v7.5.7 (#12930) (f9c4815a)
  *  update dependency @fortawesome/fontawesome-free to v6.7.1 (#12929) (80b4d10b)
  *  update dependency mongodb to v6.11.0 (#12932) (c3b42c85)
  *  update dependency @fortawesome/fontawesome-free to v6.7.0 (#12921) (a3042479)
  *  update dependency ace-builds to v1.36.5 (#12913) (68637633)
  *  update dependency sass to v1.81.0 (#12916) (ee91e516)
  *  update dependency cron to v3.2.1 (#12911) (42791287)
  *  update dependency postcss to v8.4.49 (#12910) (85f55695)
  *  update dependency winston to v3.17.0 (#12906) (87c276dd)
  *  update dependency postcss to v8.4.48 (#12907) (aa57b248)
  *  update dependency nodebb-theme-peace to v2.2.8 (#12901) (8af37a7d)
  *  update dependency cron to v3.1.9 (#12899) (87ec8637)
  *  update dependency ace-builds to v1.36.4 (#12898) (3aa0fa61)
  *  update dependency winston to v3.16.0 (#12896) (a4f75ca1)
  *  update dependency compression to v1.7.5 (#12890) (f5439d95)
  *  update dependency webpack to v5.96.1 (#12895) (3d847a5a)
  *  update dependency sass to v1.80.6 (#12892) (c5dd8b67)
  *  update dependency jquery-ui to v1.14.1 (#12891) (3fb6587a)
  *  update dependency nodebb-plugin-composer-default to v10.2.42 (#12888) (2cb2ac3a)
  *  update dependency cron to v3.1.8 (#12881) (8ae2f503)
  *  update dependency chart.js to v4.4.6 (#12876) (89bd1a24)
  *  update dependency nodemailer to v6.9.16 (#12874) (51cb249e)
  *  update dependency pg-cursor to v2.12.1 (#12870) (e3203b66)
  *  update dependency pg to v8.13.1 (#12869) (b628013d)
  *  update socket.io packages to v4.8.1 (#12871) (cdd9caa7)
  *  update dependency nodebb-theme-harmony to v1.2.77 (#12868) (d30e1f91)
  *  update dependency mongodb to v6.10.0 (#12862) (6da24583)
  *  update dependency ace-builds to v1.36.3 (#12860) (8d8243c4)
  *  update dependency sass to v1.80.4 (#12855) (80034ae8)
  *  update socket.io packages to v4.8.0 (#12815) (4788e2a3)
  *  update dependency chart.js to v4.4.5 (#12852) (c504b49f)
  *  update dependency workerpool to v9.2.0 (#12851) (8dfb2237)
  *  update dependency sass to v1.79.5 (#12847) (ab859aec)
  *  update dependency cookie-parser to v1.4.7 (#12842) (526faf07)
  *  update dependency express to v4.21.1 (#12843) (0e7f11bd)
  *  update dependency express-session to v1.18.1 (#12844) (38c1072f)
  *  update dependency sanitize-html to v2.13.1 (#12839) (5159552d)
  *  update dependency winston to v3.15.0 (#12840) (29826cf2)
  *  update dependency webpack to v5.95.0 (#12828) (55faa8a2)
  *  update dependency sass to v1.79.4 (#12826) (376ac905)
  *  update dependency helmet to v7.2.0 (#12827) (5acf0398)
  *  update dependency nodebb-theme-harmony to v1.2.71 (#12820) (b1993ff0)

##### Other Changes

*  remove unused utils (0e4fc531)
*  remove unused utils (b6a79365)
* //github.com/NodeBB/NodeBB/issues/12824 (c4a60dbb)

##### Refactors

*  shorter check for showfullname (6ebff2e1)
*  remove unused uids (20da7148)
*  no category sharing for a long time (6af5cef7)
*  move flags into core (3dff083d)
*  add some margin bottom to bs tags (40758b32)
*  post queue btn and dropdown (038fb71e)
*  search logic to use switch..case (bd76ccf0)

##### Tests

*  fix tests (173c604a)
*  fix crash due to excludeGroups (61d43ee1)
*  fix spec (70d99501)
*  fix spec (c586854a)
*  update spec on plugins (f9178a39)

#### v3.10.3 (2024-10-23)

##### Chores

*  update changelog for v3.10.2 (e780120a)

##### Bug Fixes

*  add missing await (0082ac98)
*  closes #12858 (e6ab4b07)
*  don't crash if profile folder doesn't exist (8a89c5d7)

#### v3.10.2 (2024-10-18)

##### Chores

*  update changelog for v3.10.1 (d63a8cca)

##### Bug Fixes

*  closes #12848, add missing purge class (64779352)

##### Performance Improvements

*  make unread faster if there are 60k+ unread topics (f53f1394)

##### Refactors

*  single line (120b184e)
*  hide modal and show alert on success (a309918e)
*  more immediate feedback on category purge (72ccb870)

#### v3.10.1 (2024-10-09)

##### Chores

*  up composer (a5f3d097)
*  update changelog for v3.10.0 (a9da495d)

##### Bug Fixes

* **deps:**  bump 2factor (712767f6)

##### Refactors

*  don't block ./nodebb upgrade if suggested modules are not loaded (39f57f9e)

#### v3.10.0 (2024-09-25)

##### Chores

*  move service worker generation code to its own controller file (c153c469)
* **deps:**
  *  update dependency jsdom to v25.0.1 (#12816) (9a24eb7e)
  *  update dependency sass-embedded to v1.79.3 (#12813) (e0cb1d26)
  *  update dependency sass-embedded to v1.79.2 (#12811) (8a6ced2d)
  *  update dependency nyc to v17.1.0 (#12806) (d55c3f03)

##### New Features

*  port updated service worker code to `develop`, allow plugins to define scripts to import into service worker (979954c2)

##### Bug Fixes

* **deps:**
  *  update dependency esbuild to v0.24.0 (#12817) (8c148bc4)
  *  update dependency commander to v12.1.0 (#12587) (c7d4db8c)
  *  update dependency sass to v1.79.3 (#12814) (f0cdc249)
  *  update dependency sass to v1.79.2 (#12812) (2a5d481f)
  *  update dependency nodebb-widget-essentials to v7.0.29 (#12805) (86c2caed)

##### Refactors

*  silence saas deprecations on prod (3fdec51a)

#### v3.9.1 (2024-09-25)

##### Chores

*  up themes (8bca9768)
*  up widgets (41c73de5)
*  update changelog for v3.9.0 (c3d97c6c)

##### Bug Fixes

*  closes #12819, add helper to escape tx strings (7d0c2cb6)
*  closes #12807, fix quick reply js error (06ac0c99)

##### Refactors

*  silence saas deprecations on prod (05e4307e)
*  remove deprecation warnings, still used from widgets (3cee59f9)

#### v3.9.0 (2024-09-18)

##### Chores

* **deps:**
  *  update dependency sass-embedded to v1.79.1 (#12803) (fa75a7e0)
  *  update dependency eslint to v8.57.1 (#12800) (fc9f0e8c)
  *  update commitlint monorepo to v19.5.0 (#12790) (b25e7639)
  *  update dependency smtp-server to v3.13.5 (#12781) (98957726)
  *  update dependency eslint-plugin-import to v2.30.0 (#12771) (2460b050)
  *  update redis docker tag to v7.4.0 (#12712) (a2a30ebd)
  *  update dependency sass-embedded to v1.78.0 (#12772) (fde0a65a)
  *  update dependency lint-staged to v15.2.10 (#12767) (a55b985e)
  *  update commitlint monorepo to v19.4.1 (#12762) (f608f786)
  *  update dependency jsdom to v25 (#12756) (e8abf502)
  *  update dependency jsdom to v24.1.3 (#12755) (07151f8a)
  *  update dependency lint-staged to v15.2.9 (#12730) (1b6572bb)
  *  update dependency mocha to v10.7.3 (#12723) (e0850ef7)
  *  update postgres docker tag to v16.4 (#12726) (948d3080)
  *  update dependency @commitlint/cli to v19.4.0 (#12725) (bf5c1855)
  *  update dependency lint-staged to v15.2.8 (#12717) (d0e6cd8f)
  *  update dependency jsdom to v24.1.1 (#12705) (f35068e6)
  *  update dependency mocha to v10.7.0 (#12704) (4609083e)
  *  update dependency sass-embedded to v1.77.8 (#12691) (39bcc903)
  *  update dependency mocha to v10.6.0 (#12672) (8ea9b4a8)
  *  update dependency mocha to v10.5.2 (#12657) (1933b765)
  *  update dependency mocha to v10.5.1 (#12651) (35053887)
  *  update docker/build-push-action action to v6 (#12641) (a78cd1b4)
  *  update dependency lint-staged to v15.2.7 (#12638) (d023933d)
  *  update dependency nyc to v17 (#12627) (31186b8c)
  *  update dependency sass-embedded to v1.77.5 (#12639) (66f66ede)
  *  update dependency jsdom to v24.1.0 (#12601) (91e79c22)
  *  update dependency lint-staged to v15.2.5 (#12598) (3f904986)
  *  update postgres docker tag to v16.3 (#12576) (8f6ef987)
  *  update dependency lint-staged to v15.2.4 (#12592) (0b004b4b)
  *  update redis docker tag to v7.2.5 (#12588) (fc29ea85)
  *  update dependency sass-embedded to v1.77.2 (#12583) (42754e39)
*  up harmony (5cd68c0b)
*  up composer (b0d9664b)
*  up themes (3e5a8d1c)
*  up deps (5220503c)
*  up persona (8af4a184)
*  up persona (1abececa)
*  up themes (35e92d6d)
*  up persona (c9cadbad)
*  up persona (db84d04a)
*  up widget essentials (675ea0f9)
*  up widgets (a4aea98c)
*  up widgets (a6a99553)
*  up widgets (9e673a41)
*  up widgets (f759a07d)
*  up widgets (bf6be3ef)
*  up widgets (32d4ac84)
*  up harmony (780db9e2)
*  update changelog for v3.8.4 (693bac5b)
* **i18n:**
  *  fallback strings for new resources: nodebb.users (d348d1df)
  *  fallback strings for new resources: nodebb.admin-extend-widgets (16ee1ad7)
  *  fallback strings for new resources: nodebb.themes-harmony (90e0013c)
  *  fallback strings for new resources: nodebb.modules (3531617d)
  *  fallback strings for new resources: nodebb.admin-settings-reputation (28c0abf9)
  *  fallback strings for new resources: nodebb.notifications (6fbc6040)
  *  fallback strings for new resources: nodebb.post-queue (b46a82db)
  *  fallback strings for new resources: nodebb.admin-development-info (cfedfc2d)
  *  fallback strings for new resources: nodebb.admin-settings-reputation (1bb47280)

##### New Features

*  give category selector input min-width for mobile (2a15856b)
*  add action:topics.scheduled.notify (705796f6)
*  add followed users lang string (d6643160)
*  add a new widget container (1c2afcc1)
*  show a friendly message on invalid or expired code, closes #12738 (01a2f0e7)
*  allow chat rooms in widgets (f80b7b87)
*  migrate topic move socket call to api v3 (2d14a798)
*  add allow and frameborder to allow attrs (c3f02b74)
*  add missing event type (334c8c9d)
*  send topic title into user-posted-topic-with-tag notification type, unbold tags in copy (1611b17b)

##### Bug Fixes

* **deps:**
  *  update dependency sass to v1.79.1 (#12804) (ff77a7ab)
  *  update dependency pg to v8.13.0 (#12801) (1ad1e0ba)
  *  update dependency pg-cursor to v2.12.0 (#12802) (c8627f05)
  *  update dependency connect-pg-simple to v10 (#12798) (64b21674)
  *  update dependency postcss to v8.4.47 (#12797) (2473e57d)
  *  update dependency nodebb-plugin-ntfy to v1.7.7 (#12796) (d67ebafe)
  *  update dependency mongodb to v6.9.0 (#12792) (edc468d4)
  *  update dependency nodebb-plugin-2factor to v7.5.5 (#12794) (63589d50)
  *  update dependency tough-cookie to v5 (#12782) (396dd38b)
  *  update dependency express to v4.21.0 (#12784) (1d9812e0)
  *  update fontsource monorepo to v5.1.0 (#12791) (03f13433)
  *  update fontsource monorepo (#12779) (6dc58177)
  *  update dependency body-parser to v1.20.3 (#12783) (8943a54d)
  *  update dependency diff to v7 (#12778) (e97e1373)
  *  update dependency mongodb to v6.8.1 (#12777) (0784683d)
  *  update dependency diff to v6 (#12774) (0dda1f34)
  *  update dependency nodemailer to v6.9.15 (#12768) (70f01acb)
  *  update dependency sortablejs to v1.15.3 (#12770) (84b483c6)
  *  update dependency postcss to v8.4.45 (#12769) (81757595)
  *  update dependency sass to v1.78.0 (#12773) (e8cc695d)
  *  update dependency ace-builds to v1.36.2 (#12765) (25deb062)
  *  update dependency ace-builds to v1.36.1 (#12764) (ee715f36)
  *  update dependency rtlcss to v4.3.0 (#12759) (da61bd49)
  *  update dependency webpack to v5.94.0 (#12752) (1f88b551)
  *  update dependency ace-builds to v1.36.0 (#12750) (fbd09b2a)
  *  update dependency nodebb-widget-essentials to v7.0.21 (#12749) (23eb3538)
  *  update dependency chart.js to v4.4.4 (#12748) (dc24e5ba)
  *  update dependency async to v3.2.6 (#12747) (e578dfca)
  *  update dependency ace-builds to v1.35.5 (#12746) (3d0e55d5)
  *  update dependency esbuild to v0.23.1 (#12745) (6297322c)
  *  update dependency @fontsource/poppins to v5.0.15 (#12744) (51b9c5b4)
  *  update dependency winston to v3.14.2 (#12741) (6300d849)
  *  update dependency nodebb-plugin-ntfy to v1.7.6 (#12724) (42aa8786)
  *  update dependency winston to v3.14.1 (#12727) (0e547405)
  *  update dependency postcss to v8.4.41 (#12718) (f54519f1)
  *  update dependency jquery-ui to v1.14.0 (#12719) (4e97a091)
  *  update dependency autoprefixer to v10.4.20 (#12716) (89c87f51)
  *  update dependency rimraf to v5.0.10 (#12715) (7b1dc6a7)
  *  update dependency @fontsource/inter to v5.0.20 (#12714) (703951d3)
  *  update dependency postcss to v8.4.40 (#12710) (48d52840)
  *  update dependency rtlcss to v4.2.0 (#12709) (5aa4c219)
  *  update dependency ace-builds to v1.35.4 (#12706) (405264d9)
  *  update dependency @fortawesome/fontawesome-free to v6.6.0 (#12696) (7723e4af)
  *  update dependency ace-builds to v1.35.3 (#12700) (ee8fd06e)
  *  update dependency semver to v7.6.3 (#12697) (2bcf7f79)
  *  update dependency compare-versions to v6.1.1 (#12693) (c52364a5)
  *  update dependency webpack to v5.93.0 (#12692) (710bf2f8)
  *  update dependency sass to v1.77.8 (#12687) (50030473)
  *  update dependency winston to v3.13.1 (#12690) (5678430e)
  *  update dependency lru-cache to v10.4.3 (#12681) (38e9bbba)
  *  update dependency rimraf to v5.0.9 (#12684) (335bc685)
  *  update dependency lru-cache to v10.3.1 (#12678) (fcfe1f57)
  *  update dependency nodebb-theme-persona to v13.3.25 (#12679) (871367c1)
  *  update dependency rimraf to v5.0.8 (#12680) (48bd5519)
  *  update dependency webpack-merge to v6 (#12670) (d39c05ab)
  *  update dependency @fontsource/inter to v5.0.19 (#12677) (540a05d2)
  *  update dependency esbuild to v0.23.0 (#12668) (088217f3)
  *  update dependency ace-builds to v1.35.2 (#12669) (18f9b1d6)
  *  update dependency postcss to v8.4.39 (#12666) (ba65f193)
  *  update dependency workerpool to v9.1.3 (#12665) (cba80283)
  *  update dependency mongodb to v6.8.0 (#12663) (48f8e464)
  *  update dependency lru-cache to v10.3.0 (#12664) (12e0aecb)
  *  update dependency ace-builds to v1.35.1 (#12659) (3c46c5f4)
  *  update dependency nodemailer to v6.9.14 (#12643) (94691372)
  *  update dependency webpack to v5.92.1 (#12644) (115f236f)
  *  update dependency sass to v1.77.6 (#12640) (b80a8dec)
  *  update dependency webpack to v5.92.0 (#12631) (21e061a0)
  *  update dependency esbuild to v0.21.5 (#12626) (e29bcbce)
  *  update dependency ace-builds to v1.35.0 (#12630) (0053c788)
  *  update dependency nodebb-plugin-markdown to v12.2.8 (#12624) (c3ff16e5)
  *  update dependency pg-cursor to v2.11.0 (#12617) (24d0999f)
  *  update dependency pg to v8.12.0 (#12616) (bee05fe2)
  *  update dependency workerpool to v9.1.2 (#12612) (bff0f0e8)
  *  update dependency sass to v1.77.4 (#12608) (eba8179e)
  *  update dependency mongodb to v6.7.0 (#12603) (606342c5)
  *  update dependency sass to v1.77.3 (#12605) (f783ce30)
  *  update dependency esbuild to v0.21.4 (#12600) (c1a6293f)
  *  update dependency ace-builds to v1.34.2 (#12599) (5595a35e)
  *  update dependency nodebb-plugin-2factor to v7.5.2 (#12577) (72a0fe93)
  *  update dependency sitemap to v8 (#12595) (9ebd96e8)
  *  update dependency nodebb-plugin-markdown to v12.2.7 (#12590) (333ebd9b)
  *  update dependency ace-builds to v1.34.1 (#12591) (7a6b70f0)
  *  update dependency chart.js to v4.4.3 (#12585) (95023355)
  *  update dependency sass to v1.77.2 (#12584) (f6509266)
  *  update dependency mongodb to v6.6.2 (#12579) (984717a8)
  *  update dependency esbuild to v0.21.3 (#12580) (d66118bb)
  *  update dependency nodebb-theme-harmony to v1.2.56 (#12581) (2dd6b148)
*  closes #12795, don't crash if there is an error in auto approve from queue (6ccf40bf)
*  closes #12780, 404 in api/v3 if topic doesn't exist (220af706)
*  vague description for harmony settings.enableBreadcrumbs, help text (17029952)
*  closes #12758, show different error message for block (c0b30ea4)
*  reset form/invalid code style (20053af6)
*  #12754, throw if currentPwd == newPwd (f361df01)
*  #12736, merged notifications use username instead of displayname (ad68809b)
*  #12728, don't display unread badge if nav link doesn't exist (6f7eecd1)
*  bump composer (a7934f36)
*  closes #12721, export all users (6e1c6436)
*  bump 2factor and ntfy (79c4eadd)
*  crash if error objecft passed to handleErrors contains no message (e630f006)
*  don't allow joining topic_<tid> & category_<cid> (503a97e5)
*  sanitize-html configuration passed in src/posts/parse.js (db30834e)
*  handle unhandled exception at handleErrors (598c10c6)

##### Other Changes

*  up themes fix btn-ghost-sm (106291fa)

##### Performance Improvements

*  don't load unread page again if everything already loaded (4aad6019)

##### Refactors

*  change the path of follow notif to go to the user (cf405b18)
*  move textcomplete to core (20fd75bf)
*  don't use composer directly, use the post hook (da7044e4)
*  fix whitespace (609a9878)
*  fix btn-ghost usage to match bootstrap (c58e09f9)
*  remove unused (feefd733)
*  remove log (c5b2f988)
*  #12713, update chat teasers even if chat notifications are disabled (ac644ac2)

##### Tests

*  fix spec (5fa8ddbc)
*  since admin pwd changes in test, login with new pwd (be32cf44)
*  add logs for test failures (33587358)
*  create topic for socket.io tests (ed2f3b75)

#### v3.8.4 (2024-08-01)

##### Chores

*  up widgets (d1663ac2)
*  up widgets (cb4bf9dd)
*  up persona (324610de)
*  update changelog for v3.8.3 (2a239a79)

##### New Features

*  update chat teasers when a new chat starts, closes #12713 (0204f2aa)
*  add downvoteVisibility setting, closes #12698 (269fc068)

##### Bug Fixes

*  prevent category filter to go to selected cid (10c5cd4c)
*  add sizes to maskable so it doesnt crash chrome application tab (ccc86825)
*  post preview not working on parent post (a28dd70f)

##### Refactors

*  hooks page design (cea18d0c)
*  closes #12699, allow boolean false for log-colorize (42ac1f9d)

##### Tests

*  test fix maybe (a73f269f)

#### v3.8.3 (2024-06-27)

##### Chores

*  up themes (b15a5894)
*  up harmony (3eb69c58)
*  up harmony (b98333f3)
*  up dbsearch (8a42db6f)
*  use nodebb fork of spider-detector (3a1b39c9)
*  up 2factor (142de2ca)
*  update changelog for v3.8.2 (3854a434)

##### New Features

*  closes #12656, only send required meta/link tags on /api calls (64875b3f)
*  show links in post queue (500e3342)
*  show connetion count on /info (60b4bc66)
*  make upload scores descending for ordering (3ec44d64)
*  add isACP to config, closes #12623 (c51b772f)
*  allow passing min,max to sortedSetsCardSum (70b4a0e2)
*  add voters/upvoters v3 routes (1aaa6cbb)

##### Bug Fixes

*  wront topic events showing up in topic (54b01395)
*  dont show self in suggested topics (381bbb04)
*  #12645, use titleRaw like reply button (3332480c)
*  update follower/following counts after removing uid from zsets (6f6cfb1a)
*  suggested topic tid (351ee71d)
*  #12633, don't check post index (6e3b012b)
*  recent chat pagination, closes #12637 (f7c9b7ae)
*  info.tpl table (6f79d305)
*  closes #12632, dont load data twice (66adfa29)
*  don't error if file required too early (4430de8c)
*  require of spider-detector (be86d8ef)
*  return early for guests/spiders (8d56e097)
*  dont show error alert when user user mouse overs votes (6bbe3d1c)
*  dont load chat rooms for quests/spiders (ca4a7751)
*  set uid in case its spider(-1), closes #12621 (9d74539a)
*  dont add spiders to online_guests room (bcd4997d)
*  dont autoconnect for spiders, closes #12620 (b6671d16)
*  #12614 fix html markup for widget containers (56b5850a)

##### Other Changes

*  remove unused winston (69ce3bf0)
*  remove unused (adb0566f)
*  fix semicolons (795a0daa)
*  fix whitespace (b4db2f7f)

##### Performance Improvements

*  cleanup sessions every 30 seconds (26feb2bb)
*  change revokeSession to work with an array of sids (172bc249)
*  dont make db call if posts is already loaded client side (461e95d8)
*  if sigs disabled dont filter uids (73241bd5)
*  cache isAdmin, isGlobalMod checks (fedfce7b)
*  get rid of async call in user load for expiring bans (023d52a3)
*  call getIconbackgrounds once (1dadd16f)
*  get rid of more calls, fix other profile pages #12632 (5c6a853e)

##### Refactors

*  sessionUUID (#12658) (d6c946cf)
*  move delete call (65a91ea5)
*  use array.some (85b329af)
*  add placeholders on demand (8f486b1b)
*  move getTopicData call to avoid db calls when its not in cache (252d0df7)
*  remove exits check (74dd2844)
*  move als requires, move autoLocale to api/page routes (3356022a)
*  move requires down (8eccdb48)
*  posts cache to get rid of require in functions (236ac323)
*  closes #12629, allow passing arrays to meta.userOrGroupExists (bad15643)
*  suggest topics, use strings for tids (8ded36f2)
*  #12623, add filter:config.get.admin (2d86552b)
*  add sanity checks to sio (e98f1848)

##### Tests

*  dont track session for api/v3 (#12660) (61e5293a)
*  move set (9108c900)
*  spec (41f1cd69)
*  spec (b148d0fc)
*  fix path replace (9ecee782)
*  update openapi spec (9af3a2da)
*  fix tests (c2f63090)
*  return empty array on db.exists([]); (1b283ccc)
*  fix test only set for spiders (7c2a3a6e)
*  fix post test (42230300)

#### v3.8.2 (2024-05-29)

##### Chores

*  up composer (83facb7d)
*  up harmony (17ea61a0)
*  update changelog for v3.8.1 (5ef3e0f3)

##### New Features

*  show ignored/watched topics in topic list, closes #10974 (29dbe92d)
*  convert "All Votes Are Public" toggle to vote visibility (e0515080)

##### Bug Fixes

*  wrong var for ignored (7969e62d)
*  reduce docker image size again and speed up build (56ef2bdd)
*  update thumb count when removing thumbs (6214336c)

##### Refactors

*  render (2c0f8c91)

#### v3.8.1 (2024-05-15)

##### Chores

*  update changelog for v3.8.0 (2ef2750d)

##### Bug Fixes

*  wrong mention version (1d1f499b)

##### Tests

*  use node 20 (a40f54aa)
*  remove node 18 (6bd22e53)

#### v3.8.0 (2024-05-15)

##### Chores

* **deps:**
  *  update redis docker tag to v7.2.4 (#12272) (7a8116a4)
  *  update actions/cache action to v4 (#12563) (88ff9f9d)
  *  update postgres docker tag to v16.3 (#12560) (339f6267)
  *  update dependency sass-embedded to v1.77.1 (#12565) (07160062)
  *  update postgres docker tag to v16.3 (#12555) (b8a52863)
  *  update dependency sass-embedded to v1.77.0 (#12548) (0fa11561)
  *  update coverallsapp/github-action action to v2.3.0 (#12554) (b4023ff9)
  *  update dependency sass-embedded to v1.76.0 (#12542) (7ee42724)
  *  update commitlint monorepo to v19.3.0 (#12526) (dad57e04)
  *  update commitlint monorepo to v19.2.2 (#12515) (97519ca4)
  *  update dependency smtp-server to v3.13.4 (#12516) (4c468b5c)
  *  update dependency sass-embedded to v1.75.0 (#12499) (a2229e71)
  *  update dependency sass-embedded to v1.74.1 (#12468) (97a649e3)
  *  update dependency mocha to v10.4.0 (#12445) (449c0fcd)
  *  update dependency @commitlint/cli to v19.2.1 (#12420) (dc19c840)
  *  update dependency @commitlint/cli to v19.2.0 (#12412) (41212e8f)
  *  update dependency sass-embedded to v1.72.0 (#12406) (6d62e592)
  *  update commitlint monorepo to v19.1.0 (#12403) (3d095a6b)
*  up themes (1e3a321d)
*  update changelog for v3.7.5 (febeede5)
*  up harmony (80a1a0e0)
*  up harmony (1a000eae)
* **i18n:**
  *  fallback strings for new resources: nodebb.flags, nodebb.user (19f8a77c)
  *  fallback strings for new resources: nodebb.user (7ad477af)
  *  fallback strings for new resources: nodebb.admin-settings-navigation (18eec147)
  *  fallback strings for new resources: nodebb.admin-advanced-events (213db951)
  *  fallback strings for new resources: nodebb.admin-manage-users (43f52737)

##### New Features

*  track uid for email/username changes, closes #12454 (325d00ea)
*  closes #12477, allow editing moderation notes (af205cc4)
*  parse moderation notes as markdown (7d24b04b)
*  closes #12490, show profile flags on account info page (b429045f)
*  closes #12491, add unban & unmute history (985663fa)
*  new client-side hook to allow plugins to modify relogin url (c778f6eb)
*  closes #12453, filter events by user/group (4030f18a)
*  move all user profile pics to folder, closes #12449 (#12450) (8f9ac5c1)
*  allow customizing uploads.upload socket methods (dc67f54e)
*  allow custom fields in user csv export, closes #12401 (83ca23ca)

##### Bug Fixes

* **deps:**
  *  update dependency ace-builds to v1.33.2 (#12572) (19602dcd)
  *  update dependency esbuild to v0.21.2 (#12569) (dc4f32af)
  *  update dependency rimraf to v5.0.7 (#12568) (035ced85)
  *  update dependency sass to v1.77.1 (#12566) (7a64410a)
  *  update dependency rimraf to v5.0.6 (#12562) (185d61fc)
  *  update dependency validator to v13.12.0 (#12556) (7a009445)
  *  update dependency sass to v1.77.0 (#12550) (d3840280)
  *  update dependency mongodb to v6.6.1 (#12547) (751a143e)
  *  update dependency esbuild to v0.21.1 (#12549) (ed07cfcc)
  *  update dependency semver to v7.6.2 (#12552) (5264deca)
  *  update dependency mongodb to v6.6.0 (#12544) (4813772c)
  *  update dependency nodebb-plugin-composer-default to v10.2.35 (#12546) (8fcfb181)
  *  update dependency sass to v1.76.0 (#12541) (8f60603b)
  *  update dependency tough-cookie to v4.1.4 (#12540) (ad708c9f)
  *  update dependency lru-cache to v10.2.2 (#12532) (c036786c)
  *  update dependency jquery-ui to v1.13.3 (#12534) (3f62b892)
  *  update dependency nodebb-widget-essentials to v7.0.16 (#12535) (d5bfe32e)
  *  update dependency nodebb-plugin-composer-default to v10.2.34 (#12530) (bc51968e)
  *  update dependency ace-builds to v1.33.1 (#12527) (18a843bc)
  *  update fontsource monorepo (#12523) (bde9136b)
  *  update dependency ipaddr.js to v2.2.0 (#12522) (d6d0ebd5)
  *  update dependency cropperjs to v1.6.2 (#12524) (5e7ec5b6)
  *  update dependency ioredis to v5.4.1 (#12520) (66a35490)
  *  update dependency ioredis to v5.4.0 (#12519) (da0888e6)
  *  update dependency nodebb-plugin-spam-be-gone to v2.2.2 (#12518) (5b4471bf)
  *  update dependency nodebb-plugin-emoji to v5.1.15 (#12517) (20f8ba78)
  *  update dependency nodebb-theme-harmony to v1.2.49 (#12497) (c4cb9d36)
  *  update dependency nodebb-plugin-mentions to v4.5.2 (#12470) (37bdf753)
  *  update dependency ace-builds to v1.33.0 (#12501) (83a932e6)
  *  update dependency sass to v1.75.0 (#12500) (f5c3d4e1)
  *  update dependency nodebb-theme-harmony to v1.2.47 (#12487) (2bcd5239)
  *  update dependency cron to v3.1.7 (#12484) (6237d5fe)
  *  update dependency workerpool to v9.1.1 (#12475) (b6193629)
  *  update dependency nodebb-theme-persona to v13.3.13 (#12479) (01b3a06a)
  *  update dependency nodebb-theme-harmony to v1.2.46 (#12478) (499514a8)
  *  update dependency nodebb-theme-persona to v13.3.12 (#12467) (0f209fa4)
  *  update dependency nodebb-theme-harmony to v1.2.45 (#12466) (1fef883b)
  *  update dependency sass to v1.74.1 (#12469) (8f771b6f)
  *  update dependency pg-cursor to v2.10.5 (#12462) (dde7a498)
  *  update dependency pg to v8.11.5 (#12461) (623ccc53)
  *  update dependency @fortawesome/fontawesome-free to v6.5.2 (#12460) (1953277b)
  *  update dependency nodebb-plugin-mentions to v4.4.3 (#12463) (d24c4148)
  *  update dependency pg to v8.11.4 (#12455) (a7d9811e)
  *  update dependency @fontsource/poppins to v5.0.13 (#12457) (5c214930)
  *  update dependency pg-cursor to v2.10.4 (#12456) (af10aaaa)
  *  update dependency ace-builds to v1.32.9 (#12451) (deacf366)
  *  update dependency express to v4.19.2 (#12441) (263ca1ca)
  *  update dependency winston to v3.13.0 (#12440) (08be8f3c)
  *  update dependency webpack to v5.91.0 (#12426) (ca82d020)
  *  update dependency ace-builds to v1.32.8 (#12439) (23f46345)
  *  update dependency sanitize-html to v2.13.0 (#12427) (2550f26f)
  *  update dependency postcss to v8.4.38 (#12429) (ace6f12f)
  *  update dependency express to v4.19.1 (#12425) (a27b999f)
  *  update dependency autoprefixer to v10.4.19 (#12428) (fa57b81f)
  *  update dependency nodebb-theme-lavender to v7.1.8 (15c7691c)
  *  update dependency nodebb-plugin-mentions to v4.4.2 (#12410) (a8b631dd)
  *  update dependency postcss to v8.4.37 (#12417) (9c91f093)
  *  update dependency nodemailer to v6.9.13 (#12424) (c7a506a8)
  *  update dependency nodebb-plugin-ntfy to v1.7.4 (#12414) (4e119783)
  *  update dependency esbuild to v0.20.2 (#12411) (93fb1e0f)
  *  update socket.io packages to v4.7.5 (#12409) (6a730312)
  *  update dependency @socket.io/redis-adapter to v8.3.0 (#12405) (05219412)
  *  update dependency sass to v1.72.0 (#12407) (89684786)
  *  update dependency mongodb to v6.5.0 (#12402) (b163264e)
  *  update dependency archiver to v7.0.1 (#12400) (817a5468)
  *  update dependency nodemailer to v6.9.12 (#12398) (27d5aaa5)
  *  update dependency nodebb-theme-harmony to v1.2.38 (#12397) (b9a1fc3f)
  *  update fontsource monorepo (#12390) (8d6ef3d5)
  *  update dependency nodebb-plugin-mentions to v4.4.1 (#12393) (4d18c38b)
  *  update dependency winston to v3.12.0 (#12391) (98ff47ec)
*  chat message search, closes #12571 (49a510e9)
*  chat message search, closes #12571 (d926d9dd)
*  some issues with "small" docker improvements (#12564) (bc807c46)
*  use reference object for post summary v3 api call (2a58d099)
*  unintentional object pollution by buildForSelectCategories (88a5dfb7)
*  getCategoryById to return shallow clone of object (dc35bf8b)
*  #12533, go to post after changing owner (983a35e6)
*  topic selection in merge (f2892385)
*  closes #12474, fix search dropdown on mobile for merge (ce03680f)
*  #12481, remove priv groups from groupslug:groupname mapping (#12482) (7033d11e)
*  bump 2factor (4d2c95ca)
*  date on upgrade script (73f98568)
*  use CategoryObject in admins-mods schema def (4da1e9c4)
*  missing uid for modify event, closes #12394 (7c37f32d)
* **docker:**  support all previously used env variables correctly (#12567) (995b2de5)

##### Refactors

*  add missing form-label class (36016ee1)
*  use groupslug:groupname for search and acp page (ee5c021c)

##### Tests

*  fix schema (5eb8c90b)
*  fix redis tests (57422420)
*  fix moderation note test (fed5165f)
*  add back timestamp (c73f759c)

#### v3.7.5 (2024-05-03)

##### Chores

*  update changelog for v3.7.4 (8a1b281b)

##### Bug Fixes

*  #12543, use PATCH (420c8999)

#### v3.7.4 (2024-04-17)

##### Chores

*  up harmony (18990795)
*  up harmony (c2465a16)
*  up themes (ba86740a)
*  up themes (5d8a5571)
*  update changelog for v3.7.3 (8d450eea)

##### New Features

*  #12495, add unblock button to users on /blocks (afe597a2)

##### Bug Fixes

*  zipObject (110ce66a)
*  index should be cid (8410cec7)
*  uniqCids (de0176ef)
*  if votes are not public, dont show upvoter names in tooltip (5af69dbc)
*  add canView check to /api/v3/users/:uid (5bee324c)
*  is user doesnt have view:users privilege (14f5774f)
*  copy dropdown closing on copy ip/text/link (48281f96)
*  align teaser avatar (5fcd1a8a)
*  if you have chat:privileged the chat icons should show up (ca07e517)
*  #12485, resolve flags on a topics posts on topic delete (d7256796)
*  #12471, remove readable strings (0b1f2546)

##### Refactors

*  add new hooks for notifications/websockets (d2e042d1)
*  move parseInt to filter (52e71522)
*  better label for show to groups (cfd29db0)

##### Tests

*  update spec (6816e39b)
*  fix tests and use action (acab46e6)

#### v3.7.3 (2024-04-03)

##### Chores

*  up ntfy (0058ca68)
*  update changelog for v3.7.2 (277e1787)

##### Bug Fixes

*  change digest to use posts sorting first (3aae9234)
*  #12452, fix admin/mod image change (c206ccdd)

#### v3.7.2 (2024-03-27)

##### Chores

*  up harmony (0171e73a)
*  up harmony (c6915398)
*  update changelog for v3.7.1 (07640389)

##### New Features

*  add hook to modify sorting options/fields (168419cf)
*  add playsinline video attribute (#12419) (5924a6eb)

##### Bug Fixes

*  #12446, fix groups.ownership.rescind (ed41e416)
*  #12415, fix notification escaping for queued posts (4787d013)

##### Refactors

*  remove log (3b2d8551)

##### Tests

*  add test for #12446 (bf4e257c)

#### v3.7.1 (2024-03-14)

##### Chores

*  up harmony (1b24b337)
*  up harmony (b6c3a9d2)
*  up harmony (f107a7ff)
*  update changelog for v3.7.0 (f1f81b17)

##### New Features

*  allow setting max-old-space-size in config (d1ce594c)

##### Bug Fixes

*  #12408, fix mem leak due to mongodb 6.4.0 (285293c4)
*  tids:create  on topic post (3b48695b)

#### v3.7.0 (2024-03-06)

##### Chores

* **i18n:**
  *  fallback strings for new resources: nodebb.admin-settings-post, nodebb.topic (0bd0a740)
  *  fallback strings for new resources: nodebb.themes-harmony (8fb0ed82)
  *  fallback strings for new resources: nodebb.aria (a55fb29e)
  *  fallback strings for new resources: nodebb.aria (e6a358ed)
  *  fallback strings for new resources: nodebb.user (c88811a9)
  *  fallback strings for new resources: nodebb.topic (7e862a78)
  *  fallback strings for new resources: nodebb.topic, nodebb.unread (53ea10a7)
  *  fallback strings for new resources: nodebb.global (73e7d467)
  *  fallback strings for new resources: nodebb.topic (72f1e515)
  *  fallback strings for new resources: nodebb.global (642cd8e2)
  *  fallback strings for new resources: nodebb.global, nodebb.user (a998136c)
  *  fallback strings for new resources: nodebb.tags (4d35cb4e)
  *  fallback strings for new resources: nodebb.global, nodebb.themes-harmony (0bc9ac74)
  *  fallback strings for new resources: nodebb.global, nodebb.topic (a2819e9e)
  *  fallback strings for new resources: nodebb.error (9d5702f8)
  *  fallback strings for new resources: nodebb.admin-settings-reputation, nodebb.error (1230d22d)
  *  fallback strings for new resources: nodebb.admin-dashboard (f3974c0b)
  *  fallback strings for new resources: nodebb.search (43bf1f9b)
*  up harmony (25ef62dc)
*  up peace (3aaa0727)
*  up peace (65f3c734)
*  update changelog for v3.6.7 (caf8722f)
*  up harmony (22cd80b9)
*  up themes (96fc20a3)
*  up themes (421c7fc5)
*  closes #12355 (fadee8d7)
*  up themes (9ee864ce)
*  up composer (8324adc5)
* up composer (0ff7adb4)
*  up themes (43a02c89)
*  up themes (69342342)
*  up harmony (9bbaef84)
*  up harmony (35e98a9f)
*  up harmony (22398d47)
*  up themes (5cbb8bb1)
*  up harmony (3f3f0d66)
*  up harmony (4f42172d)
*  up harmony (c0db10af)
*  up harmony (0743cb3c)
*  up harmony (09414efa)
*  up harmony (bbdefad3)
*  up themes (79ebbee5)
*  up composer (c31e321b)
* **deps:**
  *  update commitlint monorepo to v19 (#12369) (516c8d04)
  *  update dependency smtp-server to v3.13.3 (#12378) (0ab1982c)
  *  update dependency eslint to v8.57.0 (#12362) (6c33c01d)
  *  update dependency sass-embedded to v1.71.1 (#12350) (99ad9d38)
  *  update dependency sass-embedded to v1.71.0 (#12344) (920f787f)
  *  update postgres docker tag to v16.2 (#12338) (254bad89)
  *  update commitlint monorepo to v18.6.1 (#12339) (92ef8548)
  *  update dependency mocha to v10.3.0 (#12334) (9cd299db)
  *  update dependency smtp-server to v3.13.2 (#12324) (048e664c)
  *  update dependency lint-staged to v15.2.2 (#12327) (a7008fb3)
  *  update dependency lint-staged to v15.2.1 (#12319) (264e71d2)
  *  update commitlint monorepo to v18.6.0 (#12305) (7e7bbfa4)
  *  update dependency jsdom to v24 (#12294) (45f02ff0)
  *  update commitlint monorepo to v18.5.0 (#12296) (5a776f9f)
  *  update dependency sass-embedded to v1.70.0 (#12286) (0063dd45)
  *  update dependency jsdom to v23.2.0 (#12269) (7cc69df0)
  *  update dependency jsdom to v23.1.0 (#12265) (12aeb6f7)
  *  update commitlint monorepo to v18.4.4 (#12261) (b25dfd47)
  *  update dependency sass-embedded to v1.69.7 (#12257) (ce78cb0e)
  *  update dependency sass-embedded to v1.69.6 (#12249) (1777ec4b)

##### New Features

*  add new sorting option to categories (2a9b0a3c)
*  add chat widget areas, closes #12375 (53b3c5d6)
*  add hook into user.posts.isReady (7207814b)
*  refactor group title editing (112493fa)
*  cli command for maintenance mode closes #12293 (80960296)
*  fallbacks for aria.json (19bc442b)
*  add new lang keys for a11y (3ce89d1e)
*  add missing aria/role attributes to dropdown elements (7917fd82)
*  add lang keys for hidden labels (e298fb6b)
*  show unread categories based on unread topics (#12317) (45cfb369)
*  limit post/user flags per day closes #12274 (2b1fdc56)
*  search in bookmarks on search page (5213e22a)
*  #12247 (c5730b36)

##### Bug Fixes

*  #12389, update privilege group check (87a79059)
*  dupe id (f4b63790)
*  #12357, properly update lists and counters (f34ebcc9)
*  use lang key for user avatar label (863f5d0a)
*  spec (4bcbf759)
*  move winston logging for plugin hook firing to debug level (e240d0f9)
*  closes #12326 (9302d9b4)
*  some layout fixes for group details page (301eee17)
*  bookmark in topic data is nullable now (d500ebb1)
*  bug where body wasn't properly sent on ap-style content-types (4b87c30f)
*  dont send topic notification to poster (c2239e48)
* **deps:**
  *  update dependency nodebb-theme-harmony to v1.2.36 (#12392) (db2f7c03)
  *  update dependency nodebb-theme-peace to v2.2.4 (#12381) (073a79eb)
  *  update dependency mongodb to v6.4.0 (#12382) (716482b2)
  *  update dependency nodebb-plugin-mentions to v4.4.0 (#12385) (6f04859e)
  *  update dependency ace-builds to v1.32.7 (#12386) (9eb54394)
  *  update dependency autoprefixer to v10.4.18 (#12387) (339e2cfa)
  *  update dependency nodebb-theme-harmony to v1.2.35 (#12388) (7b1b4510)
  *  update dependency nodebb-theme-harmony to v1.2.34 (#12383) (430c6b6c)
  *  update dependency nodemailer to v6.9.11 (#12380) (aa6859df)
  *  update dependency express to v4.18.3 (#12379) (2c3540b2)
  *  update dependency nodebb-plugin-markdown to v12.2.6 (#12371) (fb98dc05)
  *  update dependency archiver to v7 (#12374) (9de0ab31)
  *  update dependency chart.js to v4.4.2 (#12376) (131d2fe7)
  *  update dependency bootswatch to v5.3.3 (#12373) (1ed4d763)
  *  update dependency fetch-cookie to v3.0.1 (#12363) (835820a0)
  *  update dependency sanitize-html to v2.12.1 (#12360) (00bcf935)
  *  update dependency spdx-license-list to v6.9.0 (#12354) (b58dde1c)
  *  update dependency sass to v1.71.1 (#12351) (3094996b)
  *  update dependency sanitize-html to v2.12.0 (#12353) (ee90866a)
  *  update dependency nodemailer to v6.9.10 (#12356) (80ea6eb9)
  *  update dependency bootstrap to v5.3.3 (#12348) (4007882b)
  *  update dependency sass to v1.71.0 (#12345) (faf5a9c8)
  *  update dependency esbuild to v0.20.1 (#12346) (a0021b1d)
  *  update dependency webpack to v5.90.3 (#12347) (748bbab0)
  *  update dependency nodebb-plugin-spam-be-gone to v2.2.1 (#12343) (acad7317)
  *  update dependency webpack to v5.90.2 (#12341) (cb6fe9c7)
  *  update dependency nodebb-theme-harmony to v1.2.25 (#12340) (99474a7e)
  *  update dependency commander to v12 (#12325) (b61486eb)
  *  update dependency diff to v5.2.0 (#12337) (d0f6f0cc)
  *  update dependency postcss to v8.4.35 (#12333) (3bc506f6)
  *  update dependency ace-builds to v1.32.6 (#12332) (523f7ace)
  *  update dependency postcss to v8.4.34 (#12330) (9d036be3)
  *  update dependency semver to v7.6.0 (#12328) (3af04956)
  *  update dependency fetch-cookie to v2.2.0 (#12323) (b56d6a88)
  *  update dependency nodebb-theme-harmony to v1.2.12 (#12318) (65fead81)
  *  update dependency webpack to v5.90.1 (#12322) (98b455ce)
  *  update dependency nodemailer to v6.9.9 (#12321) (3f74cca3)
  *  update dependency ace-builds to v1.32.5 (#12316) (ef06be6d)
  *  update dependency nodebb-theme-harmony to v1.2.10 (#12314) (d648972c)
  *  update dependency ace-builds to v1.32.4 (#12313) (9fb7c163)
  *  update dependency express-session to v1.18.0 (#12311) (6444eeb9)
  *  update dependency esbuild to v0.20.0 (#12309) (aa1344fc)
  *  update dependency nodebb-theme-harmony to v1.2.8 (#12310) (fd20e3a5)
  *  update dependency nodebb-theme-harmony to v1.2.7 (#12307) (eabbf195)
  *  update dependency lru-cache to v10.2.0 (#12306) (400a1aa3)
  *  update dependency webpack to v5.90.0 (#12303) (44a798bc)
  *  update dependency esbuild to v0.19.12 (#12302) (72bb81f0)
  *  update dependency connect-redis to v7.1.1 (#12298) (575f072a)
  *  update dependency nodebb-theme-harmony to v1.2.6 (#12300) (e1adf5b3)
  *  update dependency nodebb-widget-essentials to v7.0.15 (#12295) (876fa4a7)
  *  update dependency nodebb-theme-persona to v13.3.3 (#12290) (f8893cd8)
  *  update dependency nodebb-theme-harmony to v1.2.4 (#12292) (e33e9dea)
  *  update dependency autoprefixer to v10.4.17 (#12285) (9e11b927)
  *  update dependency workerpool to v9.1.0 (#12288) (7a24961d)
  *  update dependency sass to v1.70.0 (#12287) (a1cdec08)
  *  update dependency sortablejs to v1.15.2 (#12283) (cc93caff)
  *  update dependency nodebb-theme-persona to v13.3.2 (#12284) (91ce17c7)
  *  update dependency nodebb-theme-harmony to v1.2.3 (#12280) (34a8069b)
  *  update dependency nodebb-theme-persona to v13.3.1 (#12281) (fe0845b9)
  *  update dependency nodebb-theme-harmony to v1.2.2 (#12279) (fc78b00c)
  *  update socket.io packages to v4.7.4 (#12278) (16598f7f)
  *  update dependency postcss to v8.4.33 (#12264) (3a32fc8f)
  *  update dependency nodebb-theme-harmony to v1.1.108 (#12263) (4924d170)
  *  update socket.io packages to v4.7.3 (#12259) (eb7a3091)
  *  update dependency sass to v1.69.7 (#12258) (d5dc4655)
  *  update dependency nodemailer to v6.9.8 (#12254) (1953a635)
  *  update dependency esbuild to v0.19.11 (#12253) (c8007bf6)
  *  update dependency ace-builds to v1.32.3 (#12252) (c40b2322)
  *  update dependency sass to v1.69.6 (#12250) (f8a0cb9e)
  *  update dependency terser-webpack-plugin to v5.3.10 (#12248) (9101caff)
  *  update dependency workerpool to v9.0.4 (#12244) (8165f454)
  *  update dependency workerpool to v9.0.3 (#12238) (3e08ef81)
  *  update dependency esbuild to v0.19.10 (#12237) (6ef8e767)

##### Other Changes

*  fix (f5586968)

##### Refactors

*  move tomap inside (5e89dfad)
*  shorter tag translation (a9e8c184)
*  search stats (82f6721d)

##### Tests

*  fix test (c8a5e24a)
*  update test (5afc735b)

#### v3.6.7 (2024-02-28)

##### Chores

*  update changelog for v3.6.6 (debaa2b9)

##### Bug Fixes

*  #12372, fix manual digest buttons (107f5613)
*  closes #12365, staticHooks with callbacks (00e29403)
*  #12359, fix api call (c61b3bbd)
*  closes #12358, only load pending/invited for owners (3960d370)
*  retry setAdd on e11000 error (4a405ce0)

##### Tests

*  better test for #12352 (4e51bf81)

#### v3.6.6 (2024-02-14)

##### Chores

*  update changelog for v3.6.5 (04039f76)

##### Bug Fixes

*  closes #12329, fix default value of categoryWatchState (88e9fa37)

##### Tests

*  fix spec (5fec8b23)

#### v3.6.5 (2024-01-31)

##### Chores

*  update changelog for v3.6.4 (6e6c3974)

##### Bug Fixes

*  #12320, .text() gets \n\t characters (67c8bd99)

#### v3.6.4 (2024-01-24)

##### Chores

*  update changelog for v3.6.3 (92ffc57c)

##### New Features

*  add success hook to quick reply (cb21f28b)

##### Bug Fixes

*  if there is no bookmarkThreshold dont init unread indicator (cf40d681)
*  remove leftover code from 2.x, closes #12301 (d5f445f1)
*  copy single line code blocks, closes #12297 (06269cdf)
*  validate plugin id in toggleActive (76f3efff)

##### Tests

*  add plugin id tests (e8befbcc)

#### v3.6.3 (2024-01-12)

##### Chores

*  update changelog for v3.6.2 (82a936c3)

##### Bug Fixes

*  #12275, pin sharp to 0.32.6 (f3927ce7)
*  topic event translations closes #12273 (5f91cc83)

#### v3.6.2 (2024-01-10)

##### Chores

*  up composer (ef8f8db7)
*  up harmony (2bed405c)
*  up harmony (b6dbe1a6)
*  up lavender (16f0affa)
*  up themes (980bfee8)
*  update changelog for v3.6.1 (1e4abdbf)

##### New Features

*  #12247 (0af19afd)

##### Bug Fixes

*  recent loading (d3d6d77d)
*  closes #12246, direction is passed in as string as query param with new api  call (8867f243)
*  stricter selector for sort (a74b5141)

##### Performance Improvements

*  dont load all followed tids on unread/recent?filter=watched (563e03b6)

#### v3.6.1 (2023-12-22)

##### Chores

*  update changelog for v3.6.0 (eb92cee6)

##### Bug Fixes

*  #12243, don' set process.env.config if it doesnt exist (788404c1)
*  lang key for move notification closes #12241 (48a2b5f7)
*  dont send topic notification to poster (e72b26f5)

#### v3.6.0 (2023-12-20)

##### Chores

* **i18n:**
  *  fallback strings for new resources: nodebb.error (d3cfa1b7)
  *  fallback strings for new resources: nodebb.post-queue (64fe1278)
  *  fallback strings for new resources: nodebb.post-queue (f98205c1)
  *  fallback strings for new resources: nodebb.social (081352b6)
  *  fallback strings for new resources: nodebb.modules (4fe84ae8)
  *  fallback strings for new resources: nodebb.admin-settings-chat, nodebb.admin-settings-post, nodebb.admin-settings-user (94777927)
  *  fallback strings for new resources: nodebb.admin-settings-user, nodebb.category, nodebb.notifications (29b3a403)
  *  fallback strings for new resources: nodebb.error (7d8f700f)
  *  fallback strings for new resources: nodebb.modules (83931138)
*  make error:email-taken slightly more descriptive (dd0743d3)
*  up harmony (250cc771)
*  up harmony (9324a75c)
*  update changelog for v3.5.3 (e49ddaf8)
*  up harmony (dbbf3a2c)
*  up harmony (e4656bd4)
*  up themes (0ec9d4c3)
*  added missing deprecation warning for .getTopics (9079ad0b)
*  update note at top of file (2de534fa)
*  up dbsearch (b6981693)
*  up themes (9a1f8e9b)
*  up themes (ed10dda2)
*  up composer (22d7e92f)
*  up themes (fcdd3737)
*  v4 note for deprecations (f4c36b84)
*  minor re-order of routes/controllers in admin api v3 router/controller (181a9399)
*  add in note at top of files ready for deletion in v4 (54a08087)
*  up harmony (1b8dcbc2)
* **deps:**
  *  update dependency eslint-plugin-import to v2.29.1 (#12229) (055b7597)
  *  update dependency eslint to v8.56.0 (#12231) (a7dd0f92)
  *  update dependency eslint to v8.55.0 (#12203) (32a403b2)
  *  update dependency lint-staged to v15.2.0 (#12210) (9763e97f)
  *  update dependency jsdom to v23.0.1 (#12196) (a50b141f)
  *  update dependency jsdom to v23 (#12186) (8c0472a0)
  *  update commitlint monorepo to v18.4.3 (#12177) (fd5d7b65)
  *  update dependency eslint to v8.54.0 (#12172) (b6275453)
  *  update commitlint monorepo to v18.4.2 (#12169) (d6a92d4c)
  *  update postgres docker tag to v16.1 (#12167) (616ff573)
  *  update mongo docker tag to v7 (#12166) (5f8a4f3a)
  *  update redis docker tag to v7.2.3 (#12165) (c41f9a75)
  *  update dependency lint-staged to v15.1.0 (#12161) (1796ed2b)
  *  update dependency @commitlint/cli to v18.4.1 (#12162) (be3d3393)
  *  update commitlint monorepo to v18.4.0 (#12159) (128c24f2)
  *  update dependency eslint to v8.53.0 (#12151) (d1a7ba35)
  *  update redis docker tag to v7.2.3 (#12152) (2eff6912)
  *  update commitlint monorepo to v18 (#12105) (97016f47)
  *  update dependency sass-embedded to v1.69.5 (#12127) (9e8a2116)
* **socket.io:**  deprecate categories.(isModerator|ignore|watch|getSelectCategories|getMoveCategories|getCategoriesByPrivilege) (f1dbfaa2)

##### Documentation Changes

*  fix improper verbiage in category watch schema (f8cc8548)
*  openapi schema for api.search.categories (4ffe0417)
* **socket.io:**
  *  openapi schema for remaining added routes (5399e86a)
  *  added schema for new routes (f279bca0)

##### New Features

*  add 500 page for missing tpls, closes #12230 (06221a0d)
*  remove gif exif stripping exception (f8219aa6)
*  update groups.leave to allow global mods to kick users out of groups (2c6024e0)
*  better layout for manage chat room modal (f4faa0b7)
*  update Messaging.toggleOwner to optionally take a third `state` argument (932bd292)
*  new language strings for post-queue page (5d03321e)
*  add some new social share buttons (ace171a6)
*  docker improvements (#12031) (7f3a9968)
*  closes #12158, add sortable rewards (5ea7dec9)
*  add copy text (4b2491be)
*  closes #12154, add exempt groups (fdff165e)
*  update  moved keys (119c3362)
*  move new user restrrictions (3d505c5c)
*  add tracking categories and make watching send notifications (#12147) (84fed97b)
*  add new lang string for minutes (d8d26c9f)
*  add direct message link (#12138) (4c4f3ac9)
*  closes #5584, setup winston to output to file (87a859aa)
*  batch.processSortedSet min/max (#12129) (6c7e6144)

##### Bug Fixes

*  fix display post history (dc975838)
*  update isJSON test in request lib (506d7be5)
*  503 rendering on ajaxify (f7e0fd0b)
*  #12227, fix crash in redirect (2dc1def5)
*  deprecated emailer hook (565ca3cc)
*  extract all pages when stripping metadata (0b3eb6c0)
*  incorrect call to load additional group members (78835ebb)
*  closes #12185, fix cli user password reset (b9050139)
*  don't require login for listing categories (50a90f8e)
*  #12183, remove ensureLoggedIn middleware (0a4f3c8a)
*  remove unused requires (b5940a5d)
*  remove lodash require (f9c471a0)
*  #12171, bump harmony (89a1134c)
*  update design of post-queue (41bdc9e8)
*  update post-queue template for #12171 (63ba4986)
*  language key (4c7c46f3)
*  another missing state (f4bbc5bd)
*  add missing tracking (3b91e8e2)
*  bump harmony (a5e3754b)
*  #12133 dropdown menus on mobile stay open during ajaxify (4601a6f7)
*  update ajaxifyTimer logic to only drop the request if the URL is the same as the one it's already processing (b4297cd8)
*  #12141, use apiv3 for category search module (cefd4061)
*  made parentCid optional in api.search.categories (581516c8)
*  don't count internal links towards link count when restricting new users from posting links (022fa0e7)
*  closes #12126, fix language keys (075cd598)
*  param (e5a60dc8)
*  handle public chat rooms too (6a696c43)
*  suppress chat message notifications for users who are known to be in the chat room (uid is present in the corresponding socket.io room) (18c27d1a)
* **deps:**
  *  update dependency workerpool to v9 (#12234) (2cccbcf6)
  *  update dependency sharp to v0.33.1 (#12233) (45143000)
  *  update dependency csrf-sync to v4.0.3 (#12232) (9e2a6f86)
  *  update dependency ace-builds to v1.32.2 (#12228) (b6ca117a)
  *  update dependency ace-builds to v1.32.1 (#12226) (6036d144)
  *  update dependency esbuild to v0.19.9 (#12224) (d96d4d09)
  *  update dependency @fontsource/inter to v5.0.16 (#12219) (e32eb8b3)
  *  update dependency chart.js to v4.4.1 (#12217) (b6b569c0)
  *  update dependency nodebb-theme-persona to v13.2.49 (#12218) (6dab99fd)
  *  update dependency postcss to v8.4.32 (#12204) (da879704)
  *  update dependency @fortawesome/fontawesome-free to v6.5.1 (#12198) (b41c7f2a)
  *  update dependency nodebb-theme-harmony to v1.1.101 (#12199) (72d6a4b1)
  *  update dependency sortablejs to v1.15.1 (#12200) (cd625705)
  *  update dependency ace-builds to v1.32.0 (#12197) (75f063ba)
  *  update dependency @fortawesome/fontawesome-free to v6.5.0 (#12193) (a94f4a48)
  *  update dependency sharp to v0.33.0 (#12194) (1f287c74)
  *  update dependency fs-extra to v11.2.0 (#12191) (4eaf2320)
  *  update dependency passport to v0.7.0 (#12190) (bbf7c5e1)
  *  update dependency esbuild to v0.19.8 (#12187) (bc59856e)
  *  update dependency lru-cache to v10.1.0 (#12181) (22932bdb)
  *  update dependency esbuild to v0.19.7 (#12176) (00cb5839)
  *  update dependency lru-cache to v10.0.3 (#12175) (c404ef73)
  *  update dependency ace-builds to v1.31.2 (#12168) (b4a41af9)
  *  update dependency mongodb to v6.3.0 (#12170) (85936a59)
  *  update dependency lru-cache to v10.0.2 (#12160) (9d18d3c7)
  *  update dependency helmet to v7.1.0 (#12155) (50aa1a7c)
  *  update dependency async to v3.2.5 (#12150) (0e9eafa1)
  *  update dependency nodebb-theme-persona to v13.2.44 (#12149) (b489af06)
  *  update dependency nodebb-theme-harmony to v1.1.95 (#12148) (77b0baea)
  *  update dependency connect-pg-simple to v9.0.1 (#12144) (4e23d0d1)
  *  update dependency nodebb-theme-persona to v13.2.43 (#12140) (91e45fa2)
  *  update dependency nodebb-theme-harmony to v1.1.92 (#12131) (a3452c8f)
  *  update dependency nodebb-theme-peace to v2.1.24 (#12139) (29a59b90)
  *  update dependency spdx-license-list to v6.8.0 (2337d641)
  *  update dependency nodebb-plugin-composer-default to v10.2.25 (#12136) (cdb40719)
  *  update dependency cron to v3.1.6 (#12132) (2fb3af3c)
  *  update dependency ace-builds to v1.31.1 (#12135) (6b28f1dc)
  *  update dependency workerpool to v8 (#12121) (9bed7646)
  *  update dependency sass to v1.69.5 (#12128) (b351c00a)
* **socket.io:**  update getPosts controller to return object containing posts instead of straight array (54000aab)

##### Other Changes

* **socket.io:**  deprecate socketGroups.getChatGroups in favour of api.admin.listGroups (dc4cc74f)

##### Refactors

*  line breaks good (4e560ade)
*  replace deprecated call with api call (f91b823e)
*  move async call to parallel (dabc282d)
* **socket.io:**
  *  deprecate SocketModules.chats.typing in favour of api.chats.toggleTyping (c1e6be77)
  *  deprecate SocketModules.chats.loadPinnedMessages in favour of api.chats.getPinnedMessages" (401e8636)
  *  deprecate SocketModules.chats.searchMessages in favour of api.search.roomMessages (f9dc3502)
  *  deprecate SocketModules.chats.setNotificationSetting in favour of api.chats.watch (75c8cda1)
  *  deprecated SocketModules.chats.toggleOwner in favour of api.chats.toggleOwner (b13c6ee4)
  *  deprecated SocketModules.chats.searchMembers in favour of api.search.roomUsers (6e952263)
  *  deprecate SocketModules.sortPublicRooms in favour of api.chats.sortPublicRooms (62b7dfd4)
  *  deprecate SocketModules.chat.getUnreadCount in favour of api.chats.getUnread (5eaffb42)
  *  deprecate SocketModules.chats.getIP in favour of api.chats.getIpAddress (214989a8)
  *  deprecate SocketModules.chats.hasPrivateChat in favour of api.users.getPrivateRoomId (0d3c94e6)
  *  deprecate SocketModules.chats.canMessage and .markAllRead with no alternative. deprecate .getRecentChats in favour of api.chats.list (a4133500)
  *  deprecate SocketModules.chats.isDnD in favour of api.users.getStatus (eebea4df)
  *  deprecate SocketModules.chats.getRaw in favour of api.chats.getRawMessage (c4b4e79b)
  *  deprecate socketGroups.loadMoreMembers in favour of api.groups.listMembers (807d778c)
  *  deprecate socketGroups.searchMembers in favour of api.groups.listMembers (d2f3333a)
  *  deprecate socketGroups.loadMore in favour of api.groups.list (b61e8147)
  *  deprecate categories.categorySearch in favour of api.search.categories (00de9d5b)
  *  deprecate categories.loadMore in favour of api.categories.getTopics (1ce4ca54)
  *  deprecate categories.loadMoreSubCategories in favour of api.categories.getChildren (010727f5)
  *  deprecate categories.setWatchState in favour of api.categories.setWatchState (d7c6b3d6)
  *  deprecate categories.getTopicCount in favour of api.categories.getTopicCount (c442b6e6)
  *  deprecate categories.get in favour of api.categories.list (96046373)
  *  deprecate categories.getRecentReplies in favour of api.categories.getPosts (52b78e83)

##### Tests

*  migrate socket modules tests to v3 api (445b70de)
*  migrate socket.io groups tests to use api v3 (2c1c4dfe)

#### v3.5.3 (2023-12-13)

##### Chores

*  up composer (245e5df3)
*  up composer default (c1f82b78)
*  update changelog for v3.5.2 (e2e85053)

##### Bug Fixes

*  change translator escape (c434262e)

##### Other Changes

*  add types for database abstration layer (#10762) (17cd19c7)

#### v3.5.2 (2023-11-29)

##### Chores

*  up composer (49013f81)
*  update changelog for v3.5.1 (48f7ae99)

##### Bug Fixes

*  closes #12185, fix cli user password reset (6790000d)
*  thumb width (a9ef58a5)

#### v3.5.1 (2023-11-14)

##### Chores

*  up mentions (b1b3dcb6)
*  update changelog for v3.5.0 (5d7c10f1)

##### New Features

*  closes #12123, allow setting hh:mm for pin expiry (1f800747)

##### Bug Fixes

*  update ajaxifyTimer logic to only drop the request if the URL is the same as the one it's already processing (dcb0c4db)
*  closes #12156, missing data for privilege tables (21e59538)
*  thumb width (46f6f9ef)
*  closes #12126, fix language keys (668a355a)

#### v3.5.0 (2023-10-25)

##### Chores

*  up persona (8428cc8d)
*  up harmony (bd9eebd7)
*  up harmony (574f95f5)
*  up harmony (2c996606)
*  up harmony (f619696b)
*  up harmony (0d2e0752)
*  up persona (75170693)
*  up themes (36fe90dd)
*  up themes (4d6a6ff5)
*  up rewards (35d9a78d)
*  up harmony (e09b0332)
*  up harmony (ad72f653)
*  up persona (215ac672)
*  up harmony (560403a9)
*  up harmony (a5a33db7)
*  up harmony (732af96f)
*  up harmony (2af856d8)
*  up harmony (05a9dd4e)
*  up harmony (15a0a196)
*  up deps for lang key change (96c9ccc4)
*  up harmony (cddfdae0)
*  up harmony (90692d95)
*  up harmony (7e75cfaf)
*  up harmony (a5c1b2a0)
*  up harmony (3a108cab)
*  up persona (cc5e9d9c)
*  up harmony (769f879e)
*  up themes (46530337)
*  update changelog for v3.4.3 (08949be9)
*  up themes (e0b29ba9)
*  up emoji (00dd0cb3)
*  up emoji (86de8cb2)
*  up emoji (5081ff48)
*  up emoji (805aaa5e)
*  up emoji (7568be3c)
*  up themes (b7d8fd1e)
*  up themes (d0682905)
*  up deps (f1021542)
*  up composer (45b9803a)
*  up composer (7e5d9b71)
*  up harmony (13ea14f1)
*  up engines (0f9f875b)
*  up dbsearch (b4775b18)
* **deps:**
  *  update actions/setup-node action to v4 (#12114) (762ad161)
  *  update dependency eslint-plugin-import to v2.29.0 (#12112) (2ae031ed)
  *  update redis docker tag to v7.2.2 (#12097) (bb812937)
  *  update dependency eslint to v8.52.0 (#12106) (8acdd355)
  *  update commitlint monorepo to v17.8.1 (#12104) (022e2a10)
  *  update dependency lint-staged to v15.0.2 (#12099) (8549d7de)
  *  update dependency sass-embedded to v1.69.4 (#12093) (f5f1679c)
  *  update dependency lint-staged to v15 (#12086) (d1cd625d)
  *  update commitlint monorepo to v17.8.0 (#12084) (225acb2e)
  *  update dependency sass-embedded to v1.69.2 (#12073) (9967ae6b)
  *  update dependency sass-embedded to v1.69.1 (#12071) (7fe72085)
  *  update dependency eslint to v8.51.0 (#12063) (6c01148e)
  *  update dependency @commitlint/cli to v17.7.2 (#12047) (d10a09a0)
  *  update dependency eslint to v8.50.0 (#12029) (65051066)
  *  update postgres docker tag to v16 (#12012) (6fa6f73b)
  *  update actions/checkout action to v4 (#11978) (b4233366)
  *  update docker/build-push-action action to v5 (#11997) (4ecfe40e)
  *  update docker/login-action action to v3 (#11998) (478f7c74)
  *  update docker/metadata-action action to v5 (#11999) (21b280d2)
  *  update docker/setup-buildx-action action to v3 (#12000) (95f7112a)
  *  update docker/setup-qemu-action action to v3 (#12001) (f286d7fa)
  *  update dependency sass-embedded to v1.67.0 (#12003) (b9d04e2f)
  *  update dependency eslint to v8.49.0 (#11993) (ceed4327)
  *  update coverallsapp/github-action action to v2.2.3 (#11988) (a473b515)
  *  update redis docker tag to v7.2.1 (#11987) (0b231fd3)
* **i18n:**
  *  fallback strings for new resources: nodebb.admin-extend-widgets (990bbd8c)
  *  fallback strings for new resources: nodebb.admin-manage-privileges (3cb6881c)
  *  fallback strings for new resources: nodebb.themes-harmony (67fec93d)
  *  fallback strings for new resources: nodebb.notifications (ed77a0b1)
  *  fallback strings for new resources: nodebb.admin-advanced-database (b517645f)
  *  fallback strings for new resources: nodebb.error, nodebb.flags (19cfd89f)
  *  fallback strings for new resources: nodebb.admin-extend-widgets (8b5f0334)
  *  fallback strings for new resources: nodebb.email (fc8a6b31)
  *  fallback strings for new resources: nodebb.admin-settings-post (8cb2c270)
  *  fallback strings for new resources: nodebb.email, nodebb.notifications (a71378cb)
  *  fallback strings for new resources: nodebb.topic (8df56d60)
  *  fallback strings for new resources: nodebb.notifications, nodebb.pages, nodebb.tags, nodebb.user (2627e974)
  *  fallback strings for new resources: nodebb.modules (ec3ab986)
  *  fallback strings for new resources: nodebb.admin-settings-chat (968ee0c7)

##### New Features

*  show # of widgets on templates (2ca5192b)
*  #12101, dont return rssFeedUrl if feeds are disabled (2955fdb5)
*  add sidebar setting lang key (97a86ba4)
*  award notif filter (9e9046bf)
*  update to mongodb 6.1 (#12087) (e542b27d)
*  add category canonical url (f96b0b7a)
*  update error handler to check for pseudo-standard no-* prefix and route to 404 handler instead (db5b0f47)
*  flag rescinding logic + api method (e012edea)
*  backend methods for rescinding a report, supplemental adds and removing a report now adds to the flag history (bc0f362c)
*  use homePageTitle in breadcrumbs if its set (1a745201)
*  3 column layout for widgets (db9279eb)
*  update all language keys to use - instead of _ (#12059) (844cb91b)
*  closes #12052, ability to disable stale topic warning (f8a3aceb)
*  add .has() method in cache/ttl lib (d478de16)
*  upgrade chartjs to 4.x (fe192b92)
*  closes #11553, add forked from message like merged into (be14f6cc)
*  add workerpool for password, closes #10326 (#12038) (8b25aff7)
*  add new hook action:chat.onMessagesAddedToDom (a7517d88)
*  add composerActions for chat rooms (d906097a)
*  add heading strings (8c977f4c)
*  introduce new ACP setting for newbie chat message delay, defaults to 2 minutes (223e7656)

##### Bug Fixes

* **deps:**
  *  update dependency cron to v3.1.4 (#12117) (3e45788f)
  *  update dependency ace-builds to v1.31.0 (#12113) (aba7eb0f)
  *  update dependency nconf to v0.12.1 (#12111) (91d00979)
  *  update dependency @fontsource/inter to v5.0.15 (#12108) (99c3c874)
  *  update dependency nodemailer to v6.9.7 (#12109) (e546adaa)
  *  update dependency mongodb to v6.2.0 (#11965) (7302e769)
  *  update dependency @fontsource/inter to v5.0.14 (#12103) (c9c6175a)
  *  update dependency cron to v3.1.3 (#12100) (bad9198e)
  *  update dependency sass to v1.69.4 (#12094) (2adc96c2)
  *  update dependency esbuild to v0.19.5 (#12091) (94434125)
  *  update dependency webpack-merge to v5.10.0 (#12088) (d45f506f)
  *  update dependency webpack to v5.89.0 (#12083) (1ebdfaea)
  *  update dependency connect-mongo to v5.1.0 (#12085) (212a3415)
  *  update dependency ace-builds to v1.30.0 (#12082) (8456682c)
  *  update dependency cron to v3.1.1 (#12078) (24d6b73f)
  *  update dependency commander to v11.1.0 (#12079) (7d38e9ed)
  *  update dependency sass to v1.69.3 (#12076) (193e54e2)
  *  update dependency workerpool to v6.5.1 (#12077) (14eede15)
  *  update dependency sass to v1.69.2 (#12074) (0dd4cedf)
  *  update dependency nodemailer to v6.9.6 (#12068) (6c59d72a)
  *  update dependency winston to v3.11.0 (#12064) (fdf279a3)
  *  update dependency cron to v3 (#12049) (f2fad2d3)
  *  update dependency @fontsource/inter to v5.0.13 (#12065) (512ac525)
  *  update dependency ace-builds to v1.29.0 (#12067) (b04fbf89)
  *  update dependency sass to v1.69.1 (#12070) (a5d2871c)
  *  update dependency @fontsource/inter to v5.0.12 (#12053) (1033218c)
  *  update dependency sass to v1.69.0 (#12060) (ecb847fc)
  *  update dependency nodebb-plugin-2factor to v7.4.0 (6c5c1afd)
  *  update dependency nodebb-plugin-ntfy to v1.7.3 (98e58252)
  *  update dependency postcss to v8.4.31 (#12048) (eaa7aff3)
  *  update dependency esbuild to v0.19.4 (#12046) (4289230f)
  *  update dependency rimraf to v5.0.5 (#12036) (3549fbdd)
  *  update dependency nodebb-theme-persona to v13.2.34 (#12043) (339481ca)
  *  update dependency nodebb-plugin-spam-be-gone to v2.2.0 (#12039) (84648db2)
  *  update dependency cron to v2.4.4 (#12033) (c1f873b3)
  *  update dependency ace-builds to v1.28.0 (#12028) (3262923a)
  *  update dependency nodebb-plugin-2factor to v7.3.1 (#12026) (d29ea026)
  *  update dependency nodebb-plugin-ntfy to v1.7.2 (#12024) (360d3257)
  *  update dependency sass to v1.68.0 (#12023) (be600a84)
  *  update dependency autoprefixer to v10.4.16 (#12022) (f6b6e6c7)
  *  update dependency nodebb-plugin-2factor to v7.3.0 (#12021) (639fb33f)
  *  update dependency bootswatch to v5.3.2 (#12020) (5dc368a9)
  *  update dependency ace-builds to v1.27.0 (#12019) (f73ed6dd)
  *  update dependency nodebb-plugin-emoji to v5.1.10 (#12018) (16fe4fde)
  *  update dependency sharp to v0.32.6 (#12016) (f838498b)
  *  update dependency postcss to v8.4.30 (#12015) (7dbc6668)
  *  update dependency rtlcss to v4.1.1 (#12014) (ba894a04)
  *  update dependency nodebb-plugin-ntfy to v1.7.1 (#12011) (4e834a2e)
  *  update dependency ace-builds to v1.26.0 (#12010) (5a003acb)
  *  update dependency mongodb to v5.9.0 (#12008) (5bfcd34c)
  *  update dependency cropperjs to v1.6.1 (#12013) (9f5362c8)
  *  update dependency ace-builds to v1.25.1 (#12006) (1558d7a2)
  *  update dependency bootstrap to v5.3.2 (#12005) (44d120df)
  *  update dependency esbuild to v0.19.3 (#12002) (ef41b8bc)
  *  update dependency sass to v1.67.0 (#12004) (d2e49472)
  *  update dependency ace-builds to v1.24.2 (#11991) (447b7954)
*  closes #12115 , toggle hasmore as well (728d63f9)
*  #10276, only move widgets if area doesn't exist (1739f5a9)
*  #12090, dont award disabled rewards (c1ae879d)
*  rewards fixes (347a43f4)
*  use template name instead of component (f6120ebb)
*  incorrect data passed to api.flags.get (cc8fe435)
*  missing body classes on error pages (54a810dd)
*  edit notification key (bda37ac2)
*  lang key (bffa7880)
*  #12062, relax blockquote selector (99bdad80)
*  allowing forward slash in language keys, temporarily allowing upper case characters (d25a24fc)
*  rename filter-perPage to filter-per-page (872ddc26)
*  upgrade script date (6f5a965a)
*  add upgrade script for notifications (6c3ff86b)
*  lang key, type has _, lang keys changed to use - (1072b38b)
*  #12017, unreliable forum updated messaging (715bdac3)
*  #12057, allow gmods to change user email (344ece8d)
*  only show emailChanged alert for self (56794cf8)
*  closes #12054 handle negative start/stop in psql (0f4e6648)
*  make socket errors and static hook errors less noisy (2a1be01a)
*  restore notificationSendDelay back to 60 (5fe1ad95)
*  breaking tests (857433d1)
*  #12044, only load notifications when opening dropdown (dbd0a715)
*  change `notificationSendDelay` to default to 10 seconds instead of 60, #11445 (cf50b0fe)
*  clear interstitial data if there are no additional interstitials on abort (bdc221eb)
*  #11808, reduce zeal of middleware.registrationComplete (74902e4a)
*  pass in missing uid (d50473df)
*  #12025, validity checking on user-provided toPid value (fe42fd4e)
*  #12032, truncate long category names (b518e036)
*  field name importance (8041f4d1)
*  closes #12007, parseInt notification fields (b8e43143)
*  on shutdown clear locks (615b2f0f)
*  remaining text, when sending with send button (6553e454)
*  nodebb/nodebb-plugin-link-preview#18, remove sup from allowedTags, add source + source attributes (f09f4105)
*  use isPrivileged instead of isAdmin (b9c3cdb6)
*  failing test due to increased chat message delay (ff07fc44)
*  better labels in ACP chat settings, #11983 (88dd21e2)
*  bump chat message delay by 10x to 2000ms, re: #11983 (9b0b33cc)
*  #11981, post immediately when canceling scheduling (aa797f23)
* **i18n:**
  *  added rewards resource and fallbacks (47910d70)
  *  fallbacks for new language keys (2b3d2055)
  *  push fallbacks for modules resource (9b384b98)

##### Other Changes

*  fix quotes (b8705380)
*  fix lint (3b46ad42)

##### Performance Improvements

*  no need to count on every call (130815c7)

##### Refactors

*  get rid of util.promisify on async function (b1ff93f8)
*  fix comment (ff6bfeb8)
*  get rid of async.series (c7c6e8ff)
*  shorter timeago (6149252b)
*  shorter code for pinned topics (ff952e59)
*  change private message email subject (f9fb3c3a)
*  use helpers.isAllowedTo (47c16e90)
*  add email notification delay to chat message notifications (a47b4805)
*  remove chat message notification queue, implement merge IDs for chat message notifications, so they can be grouped together (3ba371f6)
*  update buildCategoryLabel (82ea9192)
*  use esm only import used chart types/plugins (56b31674)
*  get rid of exists db call, use promise.parallel (8895b152)
*  get rid of some async.waterfall/series/parallel calls (e452c097)
*  get rid of async.waterfall/series (8bc2ef22)
*  reduce socket.emits for typing (4d1b8e76)

##### Tests

*  add spec for new notif type (90e10b9c)
*  worked with chatgpt to restrict the i18n test a bit to match requirements (99364427)
*  fix flag tests (6606d96a)
*  added test cases for .addReport and .rescindReport() (da239059)
*  added i18n test to enforce kebab casing (69dde2b9)
*  add reverse list test (66be9826)
*  additional tests for #12034 (d7e9f324)
*  added tests for new logic paths (toPid validation on post creation) (ce740301)
*  💥 i18n tests (8202c555)

#### v3.4.3 (2023-09-27)

##### Chores

*  update changelog for v3.4.2 (f9323de6)

##### Bug Fixes

*  change priv to topics:read (cddac03a)
*  #12035, filter tids in mark all read (77d6d0ab)
*  properly wrap promise to callback-style function (#12030) (aff19a6c)
*  #12009, check if suggested/current versions are valid (7ca37bd6)
* **deps:**  update dependency nodebb-plugin-2factor to v7.3.0 (#12021) (c805824f)

##### Refactors

*  remove nested promise (379ed0e2)

#### v3.4.2 (2023-09-12)

##### Chores

*  up harmony (bd94f263)
*  up harmony (46f260b5)
*  up harmony (62afd0bd)
*  up composer/persona (5c628c56)
*  up harmony (3e07c18d)
*  up deps (3f7de1c7)
*  up harmony (512c44d5)
*  up harmony (319d3b1f)
*  up themes (d7a7c355)
*  update changelog for v3.4.1 (f24a334c)

##### Bug Fixes

* **deps:**  bump 2factor (6bc2b6c5)
*  move database call used to associate a NodeBB session UUID to its express session id into user.auth.addSession, which is the only time it is called (e1bced8c)
*  toMid to posts you cant see (53106c00)
*  closes #11982, fix element in prepEdit (e4ecb96f)
*  prep edit so textarea isn't below text input (f2c4041f)

##### Refactors

*  reduce socket.emits for typing (aebd9278)

##### Tests

*  remove errant .only() (9dc9d5ef)
*  fix room count (66251166)

#### v3.4.1 (2023-09-06)

##### Chores

*  up dbsearch (8357bb2e)
*  update changelog for v3.4.0 (5c023025)

##### Bug Fixes

*  #11981, post immediately when canceling scheduling (19b7cdb2)

#### v3.4.0 (2023-09-06)

##### Chores

*  up ntfy (d79f79e8)
*  up dbsearch (6d27f778)
*  up themes, dont send typing on page load (45ed12c5)
*  up harmony (21ad49fe)
*  up themes (e10a5fa5)
*  up themes (8132d36b)
*  up themes (10d11924)
*  up harmony (0334b389)
*  up harmony (32c870f4)
*  update changelog for v3.3.9 (50d44777)
*  up composer (ffd6ea5a)
*  up composer (c2534287)
*  up composer (540b9f18)
*  up composer (87015e9b)
*  up themes (dd3647ed)
*  markdown dep (03f11a24)
*  up markdown (f399db9d)
*  up deps (a7843a40)
*  up composer (05a7c761)
*  up themes (c4b865e1)
*  up themes (7d9ff9bf)
*  up themes (5c14438d)
*  up themes (cb3252be)
*  up harmony (c7df93b4)
* **deps:**
  *  update coverallsapp/github-action action to v2.2.2 (#11977) (15c6fd6b)
  *  update dependency jquery to v3.7.1 (#11963) (94f07c14)
  *  update dependency eslint to v8.48.0 (#11953) (4d0055f0)
  *  update dependency lint-staged to v14.0.1 (#11936) (1e0661dc)
  *  update dependency eslint-plugin-import to v2.28.1 (#11848) (44a9d88a)
  *  update redis docker tag to v7.2.0 (#11924) (c41a4a0f)
  *  update dependency sass-embedded to v1.66.1 (#11926) (64925578)
  *  update mongo docker tag to v7 (#11928) (7ebdfe71)
* **i18n:**
  *  fallback strings for new resources: nodebb.admin-settings-reputation, nodebb.error (271cf81e)
  *  fallback strings for new resources: nodebb.notifications (69f86747)
  *  fallback strings for new resources: nodebb.email, nodebb.modules, nodebb.notifications (6a1b1141)

##### New Features

*  typing user list in chat (60035744)
*  add data-allow-dupe and data-navigator-ignore (92f5c146)
*  add a filter hook to login (a3d6dba6)
*  use all events in addTopicEvents (4bc21a2e)
*  add socket.data.uid on connect (f026e740)
*  #11949, show alert if posts is going to be queued (731466e5)
*  #6021 add min:rep-post-links (#11938) (979f24b1)
*  add new notif type for public rooms (b65d8e82)
*  better acp sidebar in dark mode (c92ecfb4)
*  check mute when messaging, closes #11932 (9534f9b9)
*  log roomId/roomName on delete (b958a39a)

##### Bug Fixes

* **deps:**
  *  update dependency nodemailer to v6.9.5 (#11980) (d2636989)
  *  update dependency archiver to v6.0.1 (#11976) (0e885a20)
  *  update dependency nodebb-theme-harmony to v1.1.50 (#11975) (b46425b1)
  *  update dependency spdx-license-list to v6.7.0 (#11974) (9138702d)
  *  update dependency postcss to v8.4.29 (#11968) (286dcf9a)
  *  update dependency jsonwebtoken to v9.0.2 (#11972) (4251394f)
  *  update dependency cron to v2.4.3 (#11957) (b25793cd)
  *  update dependency nodebb-theme-peace to v2.1.16 (#11958) (44611e05)
  *  update dependency cropperjs to v1.6.0 (#11956) (521a13f4)
  *  update dependency nodebb-plugin-composer-default to v10.2.17 (#11951) (d20c9cf2)
  *  update dependency nodebb-theme-harmony to v1.1.43 (#11950) (d28b1f4b)
  *  update dependency mongodb to v5.8.1 (#11948) (551e4043)
  *  bump markdown (f9b8a079)
  *  bump ntfy (79703919)
  *  update dependency nodebb-plugin-markdown to v12.2.1 (#11939) (a04d3972)
  *  update dependency mongodb to v5.8.0 (#11940) (76a4fee9)
  *  update dependency pg to v8.11.3 (#11919) (9c837632)
  *  update dependency archiver to v6 (#11929) (0b1b6af3)
  *  update dependency sass to v1.66.1 (#11927) (01c94daf)
  *  update dependency pg-cursor to v2.10.3 (#11920) (c09c29fa)
*  don't create tooltips on mobile (ded596fe)
*  always return string from helper (bdeca049)
*  double escape issue, body is escaped in composer-default (6ae0d207)
*  make selector stricter (9f7a39c5)
*  #11969, match the server side behaviour for filters (887dfd7d)
*  remove og:image value (#11966) (90ac82d0)
*  don't try to parse response if request is head #11960 (440299e6)
*  pinned msgs when switching chats (acee6777)
*  deleted chat messages (#11962) (1a1fd64d)
*  closes #11954, fix custom skins with spaces (965780b7)
*  dont show chat notif if you are already in the room (3d6668e7)
*  #11947, make user message has a numeric timestamp (dc0fb81b)
*  #11944, dont refresh page when uninstalling (f5baca14)
*  closes #11921 (e3969706)
*  bookmark scroll doing ajaxify (2e0964e6)
*  closes #11937, add dropup early based on position on screen (a7a266d7)
*  improper SSO format (regression), update openapi schema (4a846803)
*  return empty array for 'sso' otherwise (db15e7c4)
*  #11906, remove retrieval of SSO data in getAllData internal method, only retrieve for calling user or admins, and only on edit page (a6c98de6)
*  language string (4e0c6329)
*  admins should see public chats (aeb27f4b)
*  show access denied instead of internal error (7dd143e1)

##### Other Changes

*  remove unused translator (34242e7a)
*  fix spec (c0eefe72)

##### Refactors

*  use map/get (98c3d2e9)
*  add targetUid to email-change event (4e5340d2)
*  how admins change emails (#11973) (8db13d8e)

##### Tests

*  one more fix (8b533d54)
*  fix tests, dont hang if payload is string (6b09b7c7)
*  fix redirect test (35e689cf)

#### v3.3.9 (2023-08-25)

##### Chores

*  up mentions (4ec3a480)
*  update changelog for v3.3.8 (65e16e9f)

##### Bug Fixes

*  isPrivilegeGroup not capturing admin privileges (d13e7cd3)

##### Tests

*  add some tests for isPrivilegeGroup (d5c8bf9e)

#### v3.3.8 (2023-08-23)

##### Chores

*  update changelog for v3.3.7 (1193fa04)

##### Bug Fixes

*  msg ref (4ba76338)
*  #11947, make user message has a numeric timestamp (2d62a772)

#### v3.3.7 (2023-08-23)

##### Chores

*  update changelog for v3.3.6 (a43354c0)

##### Bug Fixes

*  closes #11945, fix skins loading if there are no custom skins (438c4c89)

#### v3.3.6 (2023-08-22)

##### Chores

*  up deps (db55f18a)

#### v3.3.4 (2023-08-20)

##### Chores

*  update changelog for v3.3.3 (38149a57)

##### Bug Fixes

*  upgrade script, get rid of nested processSortedSet (78a7cfe9)

#### v3.3.3 (2023-08-19)

##### Chores

*  update changelog for v3.3.2 (2ecf15c4)

##### Bug Fixes

*  one more fix (51587ca3)
*  one more upgrade script fix (b5d1e917)
*  post preview on skins remove clearfix and floats (5a8e6af4)

##### Refactors

*  add connectionTimeout to psql (90f29571)

#### v3.3.2 (2023-08-18)

##### Chores

*  update changelog for v3.3.1 (6f961f9c)

##### Bug Fixes

*  upgrade script (c02f1d70)

#### v3.3.1 (2023-08-18)

##### Chores

*  up themes (62231baa)
*  update changelog for v3.3.0 (46f7405d)

##### New Features

*  #11930, ability to set custom skins as default (db07ab15)

##### Bug Fixes

*  some more upgrade script fixes (f23b0b5b)
*  #11906, userData.sso — don't serve deauthUrl or non-associated url if caller uid is not same as target uid (19e047e2)
*  include latin-ext subset of fonts in admin styles (#11918) (556a1c48)

##### Other Changes

*  fix lint (d1949cee)

#### v3.3.0 (2023-08-16)

##### Chores

* **deps:**
  *  update dependency smtp-server to v3.13.0 (#11913) (7f6865cc)
  *  update dependency lint-staged to v14 (#11909) (ee78b418)
  *  update dependency lint-staged to v13.3.0 (#11908) (6f3b7bc8)
  *  update dependency eslint to v8.47.0 (#11904) (af3c5e54)
  *  update dependency @commitlint/cli to v17.7.1 (#11896) (1d44b004)
  *  update commitlint monorepo to v17.7.0 (#11892) (d1d38097)
  *  update dependency sass-embedded to v1.64.2 (#11858) (c9c23513)
  *  update dependency eslint to v8.46.0 (#11852) (8a761ff7)
  *  update dependency sass-embedded to v1.64.1 (#11833) (1cca1760)
  *  update commitlint monorepo to v17.6.7 (#11817) (ac65ab42)
  *  update dependency sass-embedded to v1.64.0 (#11821) (560bb29c)
  *  update actions/setup-node action to v3 (#10347) (c8387828)
  *  update mongo docker tag to v6 (#10889) (f2715979)
  *  update dependency eslint to v8.45.0 (#11800) (b53da688)
  *  update coverallsapp/github-action action to v2.2.1 (#11795) (adfde1d4)
  *  update redis docker tag to v7.0.12 (#11789) (40477c85)
  *  update dependency eslint to v8.44.0 (#11771) (0bad8578)
*  up emoji (ffa8b729)
*  up harmony (c83a7023)
*  up composer (c9663718)
*  up harmony/composer (5d030a77)
*  up composer (e151ec86)
*  up composer-default (8d2ac658)
*  up harmony (dfc155e4)
*  up themes (9501d855)
*  up harmony (89968048)
*  harmony (a282f701)
*  up themes (35c97bcb)
*  up themes (8b31815f)
*  up themes (ba2f6031)
*  harmony (e8fb02f3)
*  up harmony (3b125ba2)
*  up harmony (58968353)
*  up themes (8444af1c)
*  up harmony (6faec937)
*  up composer (7bfe327c)
*  up mentions (0495b863)
*  up themes (472fbd85)
*  up harmony (f3776501)
*  up theme (05c1e1f1)
*  up harmony (ee0128d7)
*  up harmony (ba03e223)
*  up themes (6fc80f9f)
*  update changelog for v3.2.3 (afb38c71)
*  up mentions (4b92df75)
*  up composer (48a04eb7)
*  up harmony (efc250f2)
*  up themes (6b017eb1)
*  up harmony (08491053)
*  up harmony (3b7b0d41)
*  remove test log (b93cc788)
*  up plugins (d1132ac4)
*  up themes (35ac434c)
*  up themes (98e0d141)
*  up harmony (ac063fe5)
*  up mentions (d545c143)
*  up themes (b36bec95)
*  up themes (62429252)
*  remove log (954db1ee)
*  up themes (9fda8dce)
*  up markdown (f23cda10)
* **i18n:**
  *  fallback strings for new resources: nodebb.admin-dashboard (80ea4eb0)
  *  fallback strings for new resources: nodebb.admin-settings-chat, nodebb.error (e27d1743)
  *  fallback strings for new resources: nodebb.modules (ab668617)
  *  fallback strings for new resources: nodebb.global (bee5a9b4)
  *  fallback strings for new resources: nodebb.error (eca28302)
  *  fallback strings for new resources: nodebb.admin-dashboard (ac355acd)
  *  fallback strings for new resources: nodebb.admin-dashboard (62b7be1c)
  *  fallback strings for new resources: nodebb.admin-menu (ad9d8f77)
  *  fallback strings for new resources: nodebb.admin-admin, nodebb.admin-manage-categories (f075e12a)
  *  fallback strings for new resources: nodebb.modules (2c54e362)
  *  fallback strings for new resources: nodebb.admin-manage-users (9284b7e4)
  *  fallback strings for new resources: nodebb.modules (4ed0ed45)
  *  fallback strings for new resources: nodebb.topic (9c0b98df)
  *  fallback strings for new resources: nodebb.email (3613d1e6)
  *  fallback strings for new resources: nodebb.modules (a7dae508)
  *  fallback strings for new resources: nodebb.admin-settings-guest (640e32d4)
  *  fallback strings for new resources: nodebb.error, nodebb.modules (2710037c)
  *  fallback strings for new resources: nodebb.admin-admin (58bdedaf)

##### New Features

*  closes #11902, ability to clear search history (7a79fed8)
*  #11897, show guest handles in post queue and after using POST /compose (76fde8ef)
*  #11881, limit room names (9349cb63)
*  add toMid to chat messages (0316f324)
*  add category selector to analytics page (acef5e33)
*  middleware.handleMultipart, applies on API routes — invokes multipart middleware based on content-type header (bcc4b82c)
*  #11868 apply blacklist to routes (#11873) (23404ad1)
*  add icon to invite/accept notifs (78c5dfdc)
*  add flags link to acp manage menu, closes #11867 (99c22942)
*  move to npm fontawesome dependency and support fa pro (#11820) (b709ed9e)
*  password check hook (#11853) (8ac34f8e)
*  #11850, chat msg search (11bfeaf1)
*  #11814, dont check content len for admins (f359a767)
*  closes #11843, refresh search after changing filters (907c5fa6)
*  #11842, ability to change reputation of users (ac027387)
*  closes #11812, add unread public rooms into digest (eb0fcd32)
*  allow multiple room owners, closes #6503 (91642cb3)
*  show online users at the top of userlist and update (911ef058)
*  simplified api module handler logic, content-type detection/parsing (2d016af8)
*  allow FormData object to be passed in to the API module (ed99ea20)

##### Bug Fixes

* **deps:**
  *  update dependency postcss to v8.4.28 (#11915) (eafa03ab)
  *  update dependency sharp to v0.32.5 (#11916) (a013b161)
  *  update dependency ace-builds to v1.24.1 (#11914) (4a97ee0f)
  *  update dependency cron to v2.4.1 (#11911) (6476c4b8)
  *  update dependency esbuild to v0.19.2 (#11910) (d9e08e05)
  *  update dependency autoprefixer to v10.4.15 (#11907) (2a1e33dd)
  *  update dependency nodebb-plugin-2factor to v7.2.1 (#11898) (762658d4)
  *  update dependency nodebb-plugin-ntfy to v1.4.0 (#11905) (b8d926f9)
  *  update dependency lru-cache to v10.0.1 (#11899) (fd385647)
  *  update dependency esbuild to v0.19.1 (#11903) (12771b70)
  *  update dependency sass to v1.65.1 (#11895) (4b04b41e)
  *  update dependency ace-builds to v1.24.0 (#11893) (8f6feb0b)
  *  update dependency compare-versions to v6.1.0 (#11883) (9608b124)
  *  update dependency nodebb-plugin-ntfy to v1.3.0 (#11889) (53006408)
  *  update dependency esbuild to v0.19.0 (#11884) (454a968e)
  *  update dependency nodebb-theme-persona to v13.2.17 (#11888) (70f83075)
  *  update dependency nodebb-theme-harmony to v1.1.33 (#11887) (31ed1a40)
  *  update fontsource monorepo to v5.0.8 (#11880) (4cb0b738)
  *  update dependency esbuild to v0.18.19 (#11882) (2c8fd3b8)
  *  update dependency esbuild to v0.18.18 (#11879) (9a07cdbd)
  *  update dependency nodebb-plugin-ntfy to v1.2.5 (#11876) (7710a5e6)
  *  update dependency @fortawesome/fontawesome-free to v6.4.2 (#11870) (7d5a8666)
  *  update fontsource monorepo to v5.0.7 (#11869) (2c8bf84c)
  *  update dependency validator to v13.11.0 (#11877) (4594cd67)
  *  update dependency nodebb-plugin-ntfy to v1.2.4 (ae8f5398)
  *  update socket.io packages to v4.7.2 (#11871) (d4d339f9)
  *  update dependency pg to v8.11.2 (#11859) (5582fe92)
  *  update dependency pg-cursor to v2.10.2 (#11860) (c79c1e5f)
  *  update dependency sass to v1.64.2 (#11861) (da852139)
  *  update dependency esbuild to v0.18.17 (#11844) (ba379836)
  *  update dependency cron to v2.4.0 (#11839) (b1db67ce)
  *  update dependency postcss to v8.4.27 (#11827) (8d8930f8)
  *  update dependency sharp to v0.32.4 (#11828) (ef9fd345)
  *  update dependency sass to v1.64.1 (#11834) (878fe217)
  *  update dependency esbuild to v0.18.16 (#11838) (ace36434)
  *  update dependency esbuild to v0.18.15 (#11823) (8ab9c72c)
  *  update dependency nodemailer to v6.9.4 (#11819) (fcb99af1)
  *  update dependency sass to v1.64.0 (#11822) (e7626d90)
  *  update dependency nodebb-plugin-ntfy to v1.1.0 (#11815) (465b3e09)
  *  update dependency webpack to v5.88.2 (#11811) (4095cda6)
  *  update dependency esbuild to v0.18.14 (#11813) (de13aae6)
  *  update dependency esbuild to v0.18.13 (#11801) (212f90bb)
  *  update dependency sharp to v0.32.3 (#11799) (406ced79)
  *  update dependency postcss to v8.4.26 (#11798) (8e295464)
  *  update dependency esbuild to v0.18.12 (#11794) (f15265ff)
  *  update dependency winston to v3.10.0 (#11792) (786fff6f)
  *  update dependency sharp to v0.32.2 (#11791) (d156e67e)
  *  update dependency nodebb-plugin-ntfy to v1.0.16 (#11790) (3c5e5d3e)
  *  update fontsource monorepo to v5.0.5 (#11785) (efd784fa)
  *  update dependency compare-versions to v6 (#11784) (50fd242b)
  *  update dependency semver to v7.5.4 (#11783) (3bf10941)
  *  update dependency mongodb to v5.7.0 (#11781) (833a1ba7)
  *  update dependency postcss to v8.4.25 (#11780) (7fb8e414)
  *  update dependency jsonwebtoken to v9.0.1 (#11778) (bb89a12a)
  *  update dependency ace-builds to v1.23.4 (#11782) (b2cabd43)
  *  update fontsource monorepo to v5.0.4 (#11776) (5eedd8eb)
  *  update dependency nodebb-plugin-emoji to v5.1.3 (#11777) (1932a31d)
  *  update dependency nodebb-theme-persona to v13.1.7 (#11769) (d2e6062b)
  *  update dependency @isaacs/ttlcache to v1.4.1 (#11774) (63bbb366)
  *  update dependency esbuild to v0.18.11 (#11772) (335a3619)
  *  update dependency webpack to v5.88.1 (#11764) (a3111e4d)
*  if you send message scrollToBottom (223c85e4)
*  clicking on email consent form label checks the wrong box (2fe93361)
*  clicking on email consent form label checks the wrong box (514af5d6)
*  copy FA fonts to build directory instead of serving them directly (#11891) (ac4623ee)
*  use config.undoTimeout instead of hardcoded value (850cfb33)
*  add missing id/for to all checkboxes (ae747875)
*  #11875, simplify alerts and show progress (881a28eb)
*  bug where api module would throw if response contained no content-type header (007d735f)
*  chat mark read regression (f4e2e617)
*  fix escaped characters in tooltips, fix priv checks in tooltips (82562bec)
*  #11855, remove superfluous password challenge on admin email update (unless they're updating their own) (4ca71f63)
*  register abort can error on weird session state (#11854) (c9511915)
*  #11847, typo in markNotification (5a8b4125)
*  #11837, use userslug for check (e2fa8cf3)
*  #11841, use unique nid per user who flagged (17783440)
*  reset_code.tpl card block expanding to bottom of container (2792d771)
*  closes #11825, user icons in global privileges (dae4f9f7)
*  fallback for room timestamp (77550a50)
*  dont error if timestamp is missing (6cc86b6e)
*  topic postercount field if owner is changed (00be053e)
*  updateOwner (16fe1eb9)
*  unread notif filter (3e7ca4f2)
*  closes #11806, fix code blocks (165b0f85)
*  allow escape to close chat modals (4c311502)
*  on leave/kick remove matching sockets from rooms (a766f74f)
*  spec (79fae26d)
*  lint (1e38a16b)
*  client side js crash (adb3a5e6)
*  #11797, update title on chat switch (840792ae)
*  always return empty array if its not set (5c208610)
*  mobile back button (9149a9a2)
*  clear cache on sort (e03fdcd6)
*  #11787 (bf2c429a)
*  fetch handler not passing back errors or success payloads (8a531826)
*  group membership methods for guests/spiders (2791eb8a)

##### Other Changes

*  new filter to filter skins (c1361ee5)
* //github.com/NodeBB/NodeBB/issues/11818 (f7ae8963)
* //github.com/NodeBB/NodeBB/issues/11818 (0dce4c46)

##### Performance Improvements

*  faster upgrade script (43060f3c)

##### Refactors

*  ip blacklist.test (38c0c8de)
*  dont load all tokens in verify token (2fe193d6)
*  dont sleep if iteration is done on first one (0136e924)
*  use fetch() throughout, instead of jQuery .ajax() (7415b16d)

##### Tests

*  fix test if ip is invalid (38377982)
*  fix tests to use regular uid (d615273d)
*  fix tests since nid format changed (e41042ee)
*  fix test (9e574e07)
*  log e11000 errors (934df69e)
*  fix spec (b63cd548)
*  fix (e31f5c42)

#### v3.2.3 (2023-07-19)

##### Chores

*  downgrade harmony to correct version (7c94506b)
*  update changelog for v3.2.2 (91a432ad)

##### Bug Fixes

*  typo in replied to link (3024dac1)
*  logs page whitespace (2a3d6d5c)
*  version alert in acp (05c9cca7)
*  #11804, fix direction of dropdown on rtl (a4dba8d3)
*  #11802, fix anchor ids in acp settings (562e4d6e)
*  #11803, fix rtl in acp (a0478c70)

#### v3.2.2 (2023-07-12)

##### Chores

*  up themes (f1170b18)
*  up spam-be-gone (eed34d04)
*  remove log (509faa5e)
*  update changelog for v3.2.1 (c7f8cee9)

##### Bug Fixes

*  #11787 (6ae0df4f)
*  #11786 fix selector for upgradable plugins (bf114c11)

#### v3.2.1 (2023-07-05)

##### Chores

*  up harmony (9fc5ae08)
*  up composer (82d37702)
*  up spider-detector (97d8f858)
*  update changelog for v3.2.0 (080f9e75)

##### Bug Fixes

*  #11766, allow privileged users to vote and chat (1bda9073)
*  #11775, trim -rtl from targetSkin (0183e5f8)
*  #11773, fix create token button (64d30182)
*  add ?page= to canonical urls (4045681a)
*  group membership methods for guests/spiders (7d5fe20b)
* **deps:**  update dependency nodebb-plugin-emoji to v5.1.3 (#11777) (a1110f10)

#### v3.2.0 (2023-06-28)

##### Chores

* **deps:**
  *  update dependency lint-staged to v13.2.3 (#11762) (26af152a)
  *  update commitlint monorepo to v17.6.6 (#11750) (a19e7b5c)
  *  update dependency sass-embedded to v1.63.6 (#11742) (8a961794)
  *  update dependency sass-embedded to v1.63.5 (#11738) (94d1dbc7)
  *  update dependency eslint to v8.43.0 (#11722) (7beadb6b)
  *  update coverallsapp/github-action action to v2.2.0 (#11690) (9282bc58)
  *  update dependency eslint to v8.42.0 (#11672) (55e5467d)
  *  update commitlint monorepo to v17.6.5 (#11648) (3b53f415)
  *  update dependency jsdom to v22.1.0 (#11640) (9a5d39c0)
  *  update dependency smtp-server to v3.12.0 (#11628) (57e3f999)
  *  update dependency eslint to v8.41.0 (#11616) (70bb50cd)
  *  update redis docker tag to v7 (#10830) (f1e2342d)
  *  update dependency jquery to v3.7.0 (#11591) (12c03130)
*  up harmony (94013139)
*  up persona (8b4e2ca9)
*  up deps (b1de9472)
*  up harmony (db5016cc)
*  up harmony (8f6889e0)
*  up harmony (c4c06be5)
*  up harmony (777c7d09)
*  up deps (7f465006)
*  up harmony (f9e37829)
*  update changelog for v3.1.7 (8744e412)
*  up persona (7a0e5c6d)
*  up harmony (be474fb4)
*  up harmony (1896b486)
*  up persona (09d42076)
*  up harmony (cce42fec)
*  up markdown (4107d6b8)
*  up themes (b2f70a2e)
*  up composer (21919524)
*  up harmony (64441602)
*  up themes (61420fdc)
*  up themes (f9990cab)
*  bump themes for da02361b13d064763223533368f9b71d998ecf37 (c97977f8)
*  up harmony (0f84f597)
*  up emoji (4b0d3940)
*  up emoji (291aa58e)
*  up harmony (56ac610b)
*  up themes (0bfe361c)
*  up themes (67ab222d)
*  update lang key (1cc079f3)
*  up harmony (590a7237)
*  up harmony (ed54c7c0)
*  up harmony (91760eef)
*  up emoji (7ab05f5d)
*  up harmony (43887328)
*  up emoji (9a3c62f7)
*  up emoji (783fbfd8)
*  up emoji (7a3468a1)
*  up emoji (933f5a90)
*  up harmony (61f4202e)
*  up themes (5d089363)
*  scroll up alert (ca6f43c5)
*  harmony (c48f15c5)
*  up themes (14c93cd5)
*  up harmony (6188d8be)
*  up harmony (9e416d7f)
*  up persona (78c2e29c)
*  up markdown (7f5ec0ef)
*  up themes (cdfc1bfe)
*  up harmony (fd80b612)
* **i18n:**
  *  fallback strings for new resources: nodebb.admin-appearance-skins (7ca85c60)
  *  fallback strings for new resources: nodebb.admin-advanced-cache, nodebb.admin-advanced-errors, nodebb.admin-development-logger (fa8e656d)
  *  fallback strings for new resources: nodebb.admin-appearance-customise (0863afd0)
  *  fallback strings for new resources: nodebb.user (195b09d5)
  *  fallback strings for new resources: nodebb.admin-manage-users (934b6792)
  *  fallback strings for new resources: nodebb.themes-harmony (619c4ff7)
  *  fallback strings for new resources: nodebb.topic (639eeb44)
  *  fallback strings for new resources: nodebb.admin-appearance-customise, nodebb.admin-appearance-skins, nodebb.admin-appearance-themes, nodebb.admin-settings-api (d508772c)
  *  fallback strings for new resources: nodebb.admin-manage-groups (e53929fc)
  *  fallback strings for new resources: nodebb.users (1ffc9221)
  *  fallback strings for new resources: nodebb.modules (54a683bb)
  *  fallback strings for new resources: nodebb.themes-harmony (0aef9a91)
  *  fallback strings for new resources: nodebb.admin-settings-api (78bc71aa)

##### New Features

*  closes #11747, add pagination to tokens page (4b11cd0d)
*  add vote privs to topic (#11734) (86faed6f)
*  custom skins panel in acp (556fd65d)
*  add req and socket to als, closes https://github.com/NodeBB/NodeBB/pull/10304 (68ddca1e)
*  #11714, add page title (1a5e18cd)
*  #11714, add registrationQueue flag (3080eb7e)
*  do not show the replies container in a post's footer if the only reply present is the next post (da02361b)
*  add new tab to define bs variables (de68f749)
*  bring back noskin option (2edfe0ef)
*  add not validated/expired (5fae09f3)
*  closes #11671, allow custom classes on body (e89cfd44)
*  upgrade fonts (392a7d28)
*  allow more params to app.newTopic/newReply (325c1955)
*  update progress bar more frequently (99aaa9f1)
*  closes #11630 (8c9ab01f)
*  add hidden-empty utility (63ae03b4)
*  translate bodyShort (ed15cbb0)
*  add lang string and drag fix (db9b807c)
*  center chat modal attr (4833a2b9)
*  token rolling API for admins (4f524e9f)
*  token editing and deletion (ce23caf7)
*  api token migration, new ACP tokens list, token creation (e4888dea)
*  internal utility functions for token management (creation, deletion, etc) (7b8bffd7)

##### Bug Fixes

* **deps:**
  *  update socket.io packages to v4.7.1 (#11763) (1de2d632)
  *  update dependency ace-builds to v1.23.1 (#11759) (53ab5931)
  *  update dependency esbuild to v0.18.10 (#11760) (e7f68aec)
  *  update dependency pg-cursor to v2.10.1 (#11757) (a814440c)
  *  update dependency pg to v8.11.1 (#11758) (8b56fa2f)
  *  update dependency esbuild to v0.18.9 (#11755) (3adc7505)
  *  update socket.io packages to v4.7.0 (#11744) (b25e7247)
  *  update dependency semver to v7.5.3 (#11745) (9d0edc36)
  *  update dependency esbuild to v0.18.8 (#11751) (a7243790)
  *  update dependency esbuild to v0.18.7 (#11749) (85e5619c)
  *  update dependency sass to v1.63.6 (#11743) (939e5818)
  *  update dependency webpack to v5.88.0 (#11741) (c45854d9)
  *  update dependency sanitize-html to v2.11.0 (#11740) (9d5fadad)
  *  update dependency esbuild to v0.18.6 (#11736) (e0c137c9)
  *  update dependency sass to v1.63.5 (#11737) (61e45cb3)
  *  update dependency ace-builds to v1.23.0 (#11739) (a53e7d21)
  *  update dependency esbuild to v0.18.5 (#11730) (2a56d21c)
  *  update dependency esbuild to v0.18.4 (#11721) (ae349004)
  *  update dependency commander to v11 (#11719) (d454c5c4)
  *  update dependency lru-cache to v10 (#11716) (b3bdb9d0)
  *  update dependency semver to v7.5.2 (#11718) (770021e0)
  *  update dependency esbuild to v0.18.3 (#11715) (9f94b56f)
  *  update dependency webpack to v5.87.0 (#11713) (f95929b2)
  *  update dependency nodebb-plugin-2factor to v7.1.3 (#11711) (c9e41e10)
  *  update dependency sass to v1.63.4 (#11709) (dfcef322)
  *  update dependency esbuild to v0.18.2 (#11705) (9521c8de)
  *  update dependency nodebb-plugin-2factor to v7.1.1 (#11703) (fe96d6f8)
  *  update dependency ace-builds to v1.22.1 (#11699) (b0d91a55)
  *  update dependency esbuild to v0.18.1 (#11701) (5247f763)
  *  update dependency nodebb-theme-harmony to v1.0.47 (#11700) (96a7add5)
  *  update dependency sass to v1.63.3 (#11693) (1512a37d)
  *  update dependency @fontsource/poppins to v5.0.3 (#11696) (1bd8f898)
  *  update dependency @fontsource/inter to v5.0.3 (#11695) (ddb41fbe)
  *  update dependency esbuild to v0.18.0 (#11698) (2b419f93)
  *  update dependency webpack to v5.86.0 (#11691) (744f399c)
  *  update dependency connect-pg-simple to v9 (#11692) (32cebaa6)
  *  update dependency mongodb to v5.6.0 (#11670) (1738f3c5)
  *  update dependency lru-cache to v9.1.2 (#11668) (09fff40c)
  *  update dependency nodebb-plugin-emoji to v5.1.0 (#11683) (bf76989e)
  *  update dependency nodebb-plugin-dbsearch to v6.1.0 (#11689) (9ef40569)
  *  update dependency nodebb-theme-persona to v13.1.0 (#11688) (6240a8c6)
  *  update dependency nodebb-plugin-composer-default to v10.2.0 (#11686) (bfdb72ca)
  *  update dependency nodebb-plugin-mentions to v4.2.0 (#11687) (d58c9d8c)
  *  update dependency nodebb-plugin-2factor to v7.1.0 (#11685) (64557680)
  *  update dependency nodebb-plugin-markdown to v12.1.0 (#11684) (ed2d9a96)
  *  update dependency nodebb-theme-lavender to v7.1.0 (#11682) (c23deb87)
  *  update dependency nodebb-plugin-spam-be-gone to v2.1.0 (#11681) (5d8d0946)
  *  update dependency nodebb-theme-harmony to v1.0.43 (#11680) (601a0363)
  *  update dependency webpack to v5.85.1 (#11678) (ccf3d3bc)
  *  update dependency nodebb-theme-harmony to v1.0.42 (#11674) (d41651dc)
  *  update dependency nodebb-plugin-composer-default to v10.1.9 (#11676) (929835de)
  *  update dependency nodebb-theme-harmony to v1.0.40 (#11669) (b5ee0247)
  *  pin dependencies (#11660) (1033cd1c)
  *  update dependency webpack to v5.85.0 (#11663) (e6344db8)
  *  update dependency @fontsource/inter to v5 (#11661) (e5e8debf)
  *  update dependency nodebb-theme-harmony to v1.0.39 (#11659) (6d4ab1d0)
  *  update socket.io packages to v4.6.2 (#11658) (fe10356c)
  *  update dependency ipaddr.js to v2.1.0 (#11653) (a13b5c40)
  *  update dependency nodebb-plugin-composer-default to v10.1.8 (#11656) (032425b2)
  *  update dependency nodebb-plugin-markdown to v12.0.5 (#11657) (a7a1cda5)
  *  update dependency nodebb-theme-persona to v13.0.73 (#11652) (e4c2015f)
  *  update dependency nodebb-plugin-composer-default to v10.1.7 (#11654) (d242bc29)
  *  update dependency nodemailer to v6.9.3 (#11644) (bd93ab8b)
  *  update dependency nodebb-theme-harmony to v1.0.38 (#11646) (f9ba518a)
  *  update dependency nodebb-theme-persona to v13.0.72 (#11647) (c474841e)
  *  update dependency nodebb-widget-essentials to v7.0.13 (#11645) (5daa733c)
  *  update dependency webpack to v5.84.1 (#11635) (7c333fb1)
  *  update dependency @popperjs/core to v2.11.8 (#11636) (14ac1206)
  *  update dependency winston to v3.9.0 (#11637) (45af9333)
  *  update dependency postcss to v8.4.24 (#11642) (1bc3c384)
  *  update dependency nodebb-theme-persona to v13.0.71 (#11641) (a6be0cd7)
  *  update dependency nodebb-plugin-composer-default to v10.1.6 (#11638) (3c9a960e)
  *  update dependency cron to v2.3.1 (#11633) (f5bcdc87)
  *  update dependency nodebb-theme-persona to v13.0.70 (#11632) (73d8ac66)
  *  update dependency webpack to v5.84.0 (#11631) (23532464)
  *  update dependency nodebb-theme-peace to v2.0.27 (#11629) (b10227dc)
  *  update dependency ace-builds to v1.22.0 (#11621) (70d0fc1a)
  *  update dependency nodebb-plugin-emoji to v5.0.16 (#11626) (21b61b37)
  *  update dependency webpack-merge to v5.9.0 (#11622) (5c70b428)
  *  update dependency nodebb-theme-peace to v2.0.25 (#11615) (f0336af4)
  *  update dependency webpack to v5.83.1 (#11608) (a4ae2e08)
  *  update dependency rimraf to v5.0.1 (#11610) (d1ccfac1)
  *  update dependency terser-webpack-plugin to v5.3.9 (#11611) (af00ebbe)
  *  update dependency ace-builds to v1.21.1 (#11607) (d26c9bf8)
  *  update dependency pg-cursor to v2.10.0 (#11605) (10ed33f1)
  *  update dependency @socket.io/redis-adapter to v8.2.1 (#11602) (49b3badb)
  *  update dependency ace-builds to v1.21.0 (#11603) (3d9f6f41)
  *  update dependency pg to v8.11.0 (#11604) (9840289c)
  *  update dependency semver to v7.5.1 (#11597) (18606f9c)
  *  update dependency esbuild to v0.17.19 (#11598) (28fb4e10)
  *  update dependency mongodb to v5.5.0 (#11593) (88e891fc)
  *  update dependency nodemailer to v6.9.2 (#11590) (3a883e3f)
  *  update dependency connect-redis to v7.1.0 (#11592) (97ec0c75)
  *  update dependency webpack to v5.82.1 (#11585) (90e53177)
  *  update dependency ace-builds to v1.20.0 (#11587) (326d820f)
*  #11761, don't escape topic title twice (01c36f8b)
*  use btn instead of icon (aefef763)
*  rollback ace-builds 1.23.0 doesnt work (ea150162)
*  #11756, fix unique visitor stats in acp table (e45f513b)
*  dont overwrite postIndex (c21d7dbc)
*  closes #11731, set postIndex on pagination (cbd98c1b)
*  pinned topic ordering if parent element has non topic elements (cfedd087)
*  delete events not working (281078f5)
*  if reply is in different topic dont hide in parent (9ee1d7b0)
*  web (6d5f6a15)
*  var name (b48a6e26)
*  error toast on lost connection (2c89d784)
*  dont send 200 status on admin upload errors (#11707) (8ca65b0c)
*  #11702, don't escape backgroundImage twice (6740a51e)
*  closes #11697, remove min attribute from rep thresholds (4a6249a4)
*  skins page revert (33a6b3e1)
*  dont add deleted users to users:online (d0e9eb2c)
*  #11679, fix username change (db3bff09)
*  closes #11673, topic search for harmony (ee8cb378)
*  #11664, dont create backlinks for quotes (d3c5a79d)
*  wrap on events page (a5b080ea)
*  app.newTopic usage (9f3bdf75)
*  rtl fixes for code and long text (05460d8e)
*  topic count in tools after purge closes #11651 (1974abeb)
*  add loadingMore flag to chat infinite load (e0300ab7)
*  #11619, fix selector (cdeaef6b)
*  text area height calculation in chats (c52916de)
*  textarea on error (c77b6224)
*  closes #11612 (3cef2535)
*  edge case in category filter (5daaa5ea)
*  #11572 (29303f4a)
*  browser title if options.title is undefined (adf14ea5)
*  lang strings (d6ead3d4)
*  #11594 (11d315df)
*  relocated upgrade script, removed outdated code that called core.api for tokens (3e6dd78d)

##### Other Changes

*  fix whitespace (4768d06b)
*  fix unused (dcc2bb10)
* //github.com/NodeBB/NodeBB/issues/11612 (cf7d9334)
*  up peace (0da8b506)
*  use csrf_token in ws handshake (#11573) (63b859f0)
*  closes #11577 (ad1ae291)

##### Performance Improvements

*  make less db calls to load indices (0b2feb9e)

##### Refactors

*  show both emails in user list (daa5ac85)
*  move async call to promise.all (e56e44ab)
*  remove script (2360d296)
*  remove log (9522951f)
*  remove log (32f60df1)
*  use new params (2cf865e8)
*  use app.parseAndTranslate (b1fbc194)
*  remove return (e0149462)

##### Reverts

*  remove emoji email css (7b8ebd0a)

##### Tests

*  fix spec (94f06301)
*  make email requirement flag changes more explicit in tests, so cases do not rely on variable values from other cases (a8399aa2)
*  fix another test (c638186b)
*  fix email tests @julianlam (64718d0c)
*  openapi (2f94eb21)
*  openapi (bc74afaf)
*  remove is touch test (1ab0faa4)
*  remove socket.io test (366b18e0)
*  log socket.io error (3cb4edf1)
*  fix another test (12e75ff4)
*  fix test (c201bf45)
*  add back missing tests (031ffe49)
*  add missing tests (a75fd636)
*  fix digest test (aff6d20f)
*  add email (4bfebc81)
*  digest (61563b01)
*  additional tests for .roll() (6765d053)
*  fix authentication tests to use new token saving utility functions (f42b636a)

#### v3.1.7 (2023-06-21)

##### Chores

*  update changelog for v3.1.6 (f10a2d2e)

##### Bug Fixes

*  #11735, crash when making guest reply (f2fe7c06)
*  #11729, only check registered users (090a7921)
*  #11723, fix pagination on following/follower page (4e146eb5)

#### v3.1.6 (2023-06-15)

##### Chores

*  update changelog for v3.1.5 (b0d16861)

##### Bug Fixes

*  #11717 prevent crash in messaging (8620a2cd)
*  closes #11708, fix quick reply check (a757716d)

#### v3.1.5 (2023-06-13)

##### Chores

*  fix persona (74174414)
*  up themes (97ff1f11)
*  update changelog for v3.1.4 (633dc2de)

##### New Features

*  add back support for req.body._csrf (67f44a32)

##### Bug Fixes

*  improper neutralization of user input in image wrapping code (1d1639d4)
*  don't update edit data if edited timestamp is not available (c5cd76e7)
*  filter null nav items (b73f307a)
*  rimraf usage in user image delete (3256fb30)
*  closes #11620, fix copy code when line numbers are enabled (82e26829)
*  logins dashboard user images (8cb6ebb9)

##### Refactors

*  change welcome headers to be smaller (0c4870ec)

##### Tests

*  remove socket.io test (24ebb153)

#### v3.1.4 (2023-05-18)

##### Chores

*  up markdown (51bf5e95)
*  update changelog for v3.1.3 (9924fde6)

##### Bug Fixes

*  textarea on error (469aa551)
*  closes #11613, closes #11614 (d8d486a6)
*  closes #11612 (8f6a68ca)
*  #11572 (2910cb2b)

##### Other Changes

* //github.com/NodeBB/NodeBB/issues/11612 (24bd9d4e)

##### Refactors

*  remove unused require (05b58c70)
*  remove log (ca2be0e8)

#### v3.1.3 (2023-05-15)

##### Chores

*  update changelog for v3.1.2 (5b398782)

##### Continuous Integration

*  use GitHub Actions expression instead of handlebars template (#11599) (412a1ecf)
*  tag with branch name if not default branch (cd7fdfce)

##### Bug Fixes

*  #11601, dont trigger edit if chat input has text (d55cd464)
*  #11600, prevent helmet crash on startup (8eed5a84)
*  #11594 (85d104c3)

##### Other Changes

*  use csrf_token in ws handshake (#11573) (51096ad2)

#### v3.1.2 (2023-05-12)

##### Chores

*  update changelog for v3.1.1 (ccd6f48c)

##### Bug Fixes

*  #11595, use default value (28740de7)

#### v3.1.1 (2023-05-11)

##### Chores

*  update changelog for v3.1.0 (2c515dc3)

##### Documentation Changes

*  updating changelog to move line re: breaking change down to new features (b259a000)

##### Bug Fixes

*  failing test case (3251bca2)
*  #11589, regression where a user could not confirm their email if requireEmailAddress was enabled (686ecea1)

#### v3.1.0 (2023-05-10)

##### Chores

*  up themes (14a5c1aa)
*  up harmony (f9997b27)
*  up dbsearch (2b259b20)
*  up harmony (9064920f)
*  up harmony (622d75d7)
*  up markdown (c92a14ab)
*  up harmony (475ecf42)
*  up emoji (ca7ff292)
*  up deps (64add3e3)
*  up harmony (048fbcaa)
*  up deps (f337ca65)
*  up widgets (68283bcd)
*  up harmony (eab2679f)
*  up harmony (7f19913b)
*  up themes (832fe95a)
*  update changelog for v3.0.1 (fd30af10)
*  whopps (ec0da196)
*  up harmony (2caf4afc)
*  up harmony (9e4bd4e9)
*  up composer (01960f27)
*  up deps (b6915247)
*  up themes (4b374f04)
*  up harmony (ee085c1d)
*  up widgets (2588853b)
*  up harmony (01669fa5)
*  up harmony (c58d07f4)
* **i18n:**
  *  fallback strings for new resources: nodebb.themes-harmony, nodebb.themes-persona (48a4fd50)
  *  fallback strings for new resources: nodebb.admin-settings-email (489163aa)
  *  fallback strings for new resources: nodebb.user (6a2c6de0)
  *  fallback strings for new resources: nodebb.admin-extend-widgets (5f728445)
  *  fallback strings for new resources: nodebb.groups (db802db6)
  *  fallback strings for new resources: nodebb.global, nodebb.pages (819ded6f)
  *  fallback strings for new resources: nodebb.global (6fe660a3)
  *  fallback strings for new resources: nodebb.error, nodebb.tags, nodebb.topic (a908bed8)
  *  fallback strings for new resources: nodebb.global (6e7465de)
  *  fallback strings for new resources: nodebb.global (28a1df16)
  *  fallback strings for new resources: nodebb.modules (3b0b2b2f)
  *  fallback strings for new resources: nodebb.global (6f573c27)
  *  fallback strings for new resources: nodebb.global (da5bfacd)
  *  fallback strings for new resources: nodebb.admin-admin, nodebb.admin-appearance-customise, nodebb.admin-dashboard, nodebb.admin-extend-widgets, nodebb.admin-manage-groups, nodebb.admin-manage-privileges, nodebb.admin-settings-api, nodebb.admin-settings-navigation, nodebb.admin-settings-user, nodebb.error, nodebb.flags, nodebb.global, nodebb.groups, nodebb.modules, nodebb.pages, nodebb.post-queue, nodebb.recent, nodebb.register, nodebb.search, nodebb.tags, nodebb.topic, nodebb.user, nodebb.users (de282c0b)
  *  fallback strings for new resources: nodebb.topic (ab17e5c3)
* **deps:**
  *  update dependency eslint to v8.40.0 (#11574) (54f4aba0)
  *  update commitlint monorepo to v17.6.3 (#11568) (fe041498)
  *  update dependency jsdom to v22 (#11551) (76cc1cf3)
  *  update dependency jsdom to v21.1.2 (#11547) (f0d989e4)
  *  update commitlint monorepo to v17.6.1 (#11478) (c4c55684)
  *  update dependency lint-staged to v13.2.2 (#11521) (2e2bc54b)

##### Continuous Integration

*  add 3.x docker tag (163c977d)
*  only publish latest from master (c588d741)
*  multi-platform docker image (#11479) (0417e5f1)

##### Documentation Changes

*  openapi schema for newly added routes (02f567ff)

##### New Features

*  update transifex config with new language strings (529f2d17)
*  #11584 (f6b2d376)
*  add helper to convert isostrings to localeString (e1bb277f)
*  up emoji, remove title parse code (78f79347)
*  add getSortedSetMembersWithScores (#11579) (f083cd55)
*  add app.newReply (101fe81d)
*  expiration date for widgets (fbf44a10)
*  closes #11549, new error pages (83fca316)
*  write API shorthand to query post routes by their topic index (requires tid in either query string or request body) (d814e281)
*  allow tag editing from topic tools (e3551d80)
*  #11537, copy ip on click (4aa87366)
*  #7096, improve chat editing (eb0c77fd)
*  Change Date translation string (e42967d7)
*  #11431 (3099d57f)
*  add missing i18n (e83a9a72)
*  show even uninstalled active plugins if set via config (2bfdd761)
*  add option to autoinstall plugins on setup (74cb2243)
*  closes #11428, add a copy code button to code blocks (0a292fc1)
*  closes #11432, use edited time if its greater (c3854b78)
*  move topic thumb to template (84a78c2d)
*  open topic thumbs on click in a bootbox dialog instead of opening in same page; complements nodebb/nodebb-theme-harmony#12 (04219c4c)
*  closes #11424, add category selector to fork modal (#11491) (6b51dd5a)
*  started work on porting socket methods to write API (f2082d7d)

##### Bug Fixes

*  reset password (8a1ec4d6)
*  strip html tags from browser title (e1473bcc)
*  chat ip button not doing anything if clicked outside of icon (f974c230)
*  add an additional check on page load to enforce `requireEmailAddress` setting (84313712)
*  selector for nav scroll (34730caf)
*  gdrp checkboxes (ca93084c)
*  #11570 (18e76ba5)
*  closes #11559, fix some rtl issues (093ec0e8)
*  closes #11561, close dialogs on escape/backdrop click (0af2b800)
*  show edit indicator after an edit without reloading the page (24e0e502)
*  add back removed socket method, added deprecation warnings, as there are no breaking changes allowed in v3.1.0 (cdd77480)
*  closes #11511 (ec8d8ec4)
*  outgoing style (e070b851)
*  #11541, fix leave chat error (8e0f9ce5)
*  closes #11539 (d0a15e9e)
*  add check for no tids (156b8e77)
*  remove positions (9f485ce6)
*  scroll on edit textarea (5ead9b73)
*  #11531, fix teasers (c23689d3)
*  #11530, fix topic rescheduling (2720a692)
*  #10594, move counter code (#11529) (5607e5bc)
*  only add copy button to multiline codeblocks (619e910f)
*  go back to post queue after deleting an account in post queue (#11513) (c3ebda22)
* **deps:**
  *  update dependency helmet to v6.2.0 (#11576) (77b05b73)
  *  update dependency terser-webpack-plugin to v5.3.8 (#11575) (f6db5f60)
  *  update dependency nodebb-theme-persona to v13.0.63 (#11571) (84548edb)
  *  update dependency mongodb to v5.4.0 (#11569) (bac0b7b2)
  *  update dependency @isaacs/ttlcache to v1.4.0 (#11567) (ae7547e2)
  *  update dependency nodebb-theme-persona to v13.0.61 (#11566) (5f4197a9)
  *  update dependency nodebb-theme-harmony to v1.0.15 (#11565) (e630cf25)
  *  update dependency ace-builds to v1.19.0 (#11557) (0813ee78)
  *  update dependency webpack to v5.82.0 (#11564) (cdebc0d1)
  *  update dependency nodebb-plugin-spam-be-gone to v2.0.7 (#11563) (80bcd938)
  *  update dependency nodebb-theme-harmony to v1.0.11 (#11556) (904adf57)
  *  update dependency @socket.io/redis-adapter to v8.2.0 (#11555) (700d1da9)
  *  update dependency nodebb-plugin-composer-default to v10.1.4 (#11552) (efadd714)
  *  update dependency nodebb-plugin-emoji to v5.0.8 (#11550) (602f0520)
  *  update dependency nodebb-plugin-mentions to v4.1.1 (#11548) (72bc471e)
  *  update dependency nodebb-widget-essentials to v7.0.11 (#11536) (e0f0c08a)
  *  bump composer-default, closes #11534 (b0005f18)
  *  update dependency sharp to v0.32.1 (#11527) (ce05e743)
  *  update dependency yargs to v17.7.2 (#11528) (1d7e981f)
  *  update dependency webpack to v5.81.0 (#11523) (e9d30f76)
  *  update dependency nodebb-plugin-emoji to v5.0.7 (#11522) (81799777)
  *  update dependency nodebb-plugin-mentions to v4.1.0 (#11518) (42bd1a63)
  *  update dependency lru-cache to v9.1.1 (#11493) (d4bf0ae7)
  *  update dependency webpack to v5.80.0 (#11503) (6413efbb)
  *  update dependency mongodb to v5.3.0 (#11496) (e55f1b55)
  *  update dependency sass to v1.62.1 (#11517) (d8829872)

##### Other Changes

*  fix comma (073f4d37)

##### Refactors

*  removed parsing for taskbar (e832d365)
*  move to modals (8e63e43a)
*  topic mark read/unread routes (36895421)
*  migrate `posts.getReplies` to write API (69b40938)
*  deprecate socket method posts.getPidIndex (ee9f53f1)
*  if position (87047210)
*  remove position classes (503fab51)

##### Tests

*  added test cases for #11562 (393a8913)
*  fix assert.reject calls (e0db9a89)
*  fix brackets (0c20d7cd)
*  remove log (9800d65a)
*  increase delay after export (8a359d63)
*  replace calls to getReplies socket call to api method (82b4984b)
*  fix group tests (b891c5ac)

#### v3.0.1 (2023-05-02)

##### Chores

*  update changelog for v3.0.0 (56ad381f)

##### Bug Fixes

*  #11554, email requirement bypass by sending in whitespace (2b8dd3d2)
*  update openapi spec to specify optional `expiry` argument available to be passed in via request body. (b3787bd5)
*  #11545, wrong message shown to new users re: email confirmation (2b70063e)
*  black on red coloration on error when a bad reset code is received (604a8f7e)
*  use query param sort over user setting if it's set (9484ddc3)

#### v3.0.0 (2023-04-26)

##### Breaking Changes

*  #11426, proper v3 style error on maintenance mode [breaking] (2615c1e5)
*  #11362, regular mods are also subject to post queue [breaking] (c843984d)

##### Chores

* **deps:**
  *  update dependency eslint to v8.39.0 (#11507) (e74e76b1)
  *  update coverallsapp/github-action action to v2.1.2 (#11497) (fec552d2)
  *  update coverallsapp/github-action action to v2.1.1 (#11494) (f8ae6ef7)
  *  update dependency sass-embedded to v1.62.0 (#11467) (1dc6eb51)
  *  update coverallsapp/github-action action to v2.1.0 (#11458) (88b02d90)
  *  update dependency eslint to v8.38.0 (#11448) (afa37d6d)
  *  update dependency sass-embedded to v1.61.0 (#11442) (c7ccf9b8)
  *  update dependency lint-staged to v13.2.1 (#11444) (1a888f50)
  *  update dependency eslint to v8.37.0 (#11410) (defc01d9)
  *  update dependency @commitlint/cli to v17.5.1 (#11408) (0e57afa9)
  *  update dependency sass-embedded to v1.60.0 (#11392) (034666b4)
  *  update dependency @commitlint/cli to v17.5.0 (#11384) (69a7bfbe)
  *  update postgres docker tag to v15 (#10976) (f286b66f)
  *  update dependency @apidevtools/swagger-parser to v10 (#11207) (f21c8ca4)
  *  update docker/build-push-action action to v4 (#11245) (8ddb302f)
  *  update dependency sass-embedded to v1.59.3 (#11371) (2cde7231)
  *  update coverallsapp/github-action action to v2 (#11369) (a5a4b307)
  *  update dependency jsdom to v21.1.1 (#11355) (ae53a6e0)
  *  update dependency eslint to v8.36.0 (#11349) (50f14768)
  *  update dependency lint-staged to v13.2.0 (#11346) (d8f787eb)
  *  update dependency jquery to v3.6.4 (#11339) (87be2694)
  *  update coverallsapp/github-action action to v1.2.4 (#11323) (e8e35de3)
  *  update dependency eslint to v8.35.0 (#11324) (f155eedb)
  *  update commitlint monorepo to v17.4.4 (#11317) (a4aeee96)
  *  update dependency lint-staged to v13.1.2 (#11298) (45c3b9df)
  *  update dependency lint-staged to v13.1.1 (#11268) (4d68b0d4)
  *  update dependency eslint to v8.34.0 (#11291) (330f7ec8)
  *  update commitlint monorepo to v17.4.3 (#11293) (558c1c98)
  *  update dependency grunt to v1.6.1 (#11244) (9f0c352e)
  *  update dependency eslint to v8.33.0 (#11243) (eeca887b)
  *  update dependency jsdom to v21.1.0 (#11202) (09712b57)
  *  update commitlint monorepo to v17.4.2 (#11186) (5648c8ea)
  *  update dependency eslint to v8.32.0 (#11189) (56731d89)
  *  update dependency @apidevtools/swagger-parser to v9.0.1 (c1785080)
  *  update dependency eslint-plugin-import to v2.27.5 (f8461538)
  *  update dependency @commitlint/cli to v17.4.1 (#11137) (66b41d67)
  *  update dependency jsdom to v21 (#11134) (7905d573)
  *  update commitlint monorepo to v17.4.0 (#11123) (2ea1510f)
  *  update dependency husky to v8.0.3 (19c2b350)
  *  update dependency eslint to v8.31.0 (#11118) (8f83f790)
  *  update dependency jquery to v3.6.3 (#11107) (0665834d)
  *  update dependency eslint to v8.30.0 (#11102) (18bcc3cf)
  *  update dependency mocha to v10.2.0 (#11094) (ad96a4d8)
  *  update dependency lint-staged to v13.1.0 (#11082) (7a1c258d)
  *  update dependency eslint to v8.29.0 (#11074) (49143328)
  *  update dependency lint-staged to v13.0.4 (#11064) (ac14099b)
*  up harmony (a405343d)
*  up deps (1767fe3d)
*  up composer (0962c063)
*  up harmony (2c91c4e1)
*  up harmony (cef9e791)
*  up harmony (bea1826f)
*  up harmony (52f32b0b)
*  up widgets (22cb918c)
*  up deps (445a4752)
*  up composer (d1b9f83d)
*  up harmony (d5636df2)
*  up harmony (1fcbee0f)
*  up harmony (4363c0bb)
*  up harmony (24c24e6c)
*  up harmony (eff9f98d)
*  up harmony (9020cd40)
*  up harmony (5dc1d6d5)
*  up harmony (b912a132)
*  up harmony (6962d206)
*  rc.2 (654abb48)
*  harmony beta.102 (3a50ad3a)
*  up harmony (90e2e0bf)
*  up harmony (0e3d34cc)
*  up harmony (5cc1dd51)
*  up harmony (e18d0df8)
*  up harmony (4fb021a7)
*  up harmony (ec106d91)
*  up harmony (f1f32a47)
*  up deps (08d159f5)
*  up harmony (fe73c007)
*  up harmony (764aca62)
*  up harmony (2d75625b)
*  up harmony (cc138c93)
*  up harmony (a44f170a)
*  up harmony (80f7dce8)
*  remove logs (68db271d)
*  up harmony (3f834480)
*  up themes (7b7f473e)
*  up harmony (361441bd)
*  bump version tag for RC (e6e08d56)
*  up harmony (4305c0a1)
*  up rimraf to 4.x (#11377) (1502068e)
*  up connect-redis to 7.x, drop node 14 (#11376) (fafa1304)
*  up harmony (7d831f0b)
*  up mongo deps (#11375) (5db037f1)
*  add back missing dep upgrades (95ab5c41)
*  fallbacks for new language string (830a20f1)
*  up jquery (babe7fac)
* **i18n:**
  *  fallback strings for new resources: nodebb.topic (30234cf7)
  *  fallback strings for new resources: nodebb.error (026f2d94)
  *  fallback strings for new resources: nodebb.global (7ff9e494)
  *  fallback strings for new resources: nodebb.error (3bcfef5e)
  *  fallback strings for new resources: nodebb.recent (d1789206)
  *  fallback strings for new resources: nodebb.topic (04652ceb)
  *  fallback strings for new resources: nodebb.post-queue (eaa5454f)
  *  fallback strings for new resources: nodebb.user (92ec5bd9)
  *  fallback strings for new resources: nodebb.admin-settings-api (44c2d402)
  *  fallback strings for new resources: nodebb.admin-dashboard (58552300)
  *  fallback strings for new resources: nodebb.post-queue (7439d0a6)
  *  fallback strings for new resources: nodebb.error (7bc22a59)
  *  fallback strings for new resources: nodebb.admin-settings-user (0767ed57)
  *  fallback strings for new resources: nodebb.admin-settings-email (d8b45c61)
  *  fallback strings for new resources: nodebb.admin-settings-email (80cf05d8)

##### Documentation Changes

*  update api introductions (5ab4d2fc)
*  openapi schema for newly added routes (be323255)
*  update readme with new screenshot and updated copy for Harmony (7599870f)
*  fix openapi spec for new property in post queue route (ddd03248)

##### New Features

*  add hits/sec for cache (94f2e508)
*  i18n post-later (655a11d0)
*  update mkdirp to 3.x, closes #11455 (132476d5)
*  update rimraf to 5.x, closes #11456 (43c6087b)
*  update lru-cache to 9.x, closes #11454 (c3cedefe)
*  #11420, add new GET routes to retrieve pending and invited members of a group, plus accept/reject pending (0788fb51)
*  fallbacks for social.json (ac2aefd8)
*  add social.json #11419 (c22c6e12)
*  allow multiple topic selects in topic-list (645ebec8)
*  update thumbs modal styling (c0b62346)
*  add support for selected topic count (69f24ed9)
*  change chat notification delivery (2c5a5bf3)
*  add placeholder for category search (9c0996e4)
*  closes #11139, move sort settings to user settings page (77ddfc64)
*  display when an api key was last used, in ACP, #10873 (40222984)
*  log the last time a valid api token was seen, have v3 ping route go through setupApiRoute helper (efa64032)
*  add rel="author" to topic route (4cf04f06)
*  search dashboard time range (ebb5d2d2)
*  allow file uploads on mobile chat (79731735)
*  api v3 route to add email to user, optionally bypassing validation email, closes #11009 (fdc41646)
*  fire filter:topics.getUnreadTids even if there are no urnead topics (b81fd81a)
*  add force flag to plugin install in cli (#11089) (d447236b)
*  update transifex config (for use with new cli) (21a366ec)
*  integrating basic client-side form validity checking in settings v1 and v2 (07a3cee6)
*  add ./nodebb install <plugin_name> (6fe87975)

##### Bug Fixes

*  bump mentions and harmony (d2066f59)
*  #11512, filter by cid (e8fb6711)
*  closes #11511, reset skin if it was removed from bootswatch (7d7904b0)
*  closes #11508, update selector (9894d05f)
*  add composer:showHelpTab to api (5c26cb58)
*  numeric strings in mongo (#11498) (6bed65dd)
*  regression in toolmodal category selector (91851364)
*  don't crash if taskbar.tasklist is not defined yet (5feb509b)
*  closes #11473, kudos to @pitaj (57d64b35)
*  closes #11466 (59b14978)
*  #11438, show flag history to mods (6eb1dd86)
*  topic thumbnail removal error Relaxed DOM selector to accommodate changed tpl (70f4d7f0)
*  upload modal error handler (dd8719a1)
*  #11451 , use bookmark from localstorage for guests (2235f6c2)
*  closes #11446, add alert-link to 403,404,400 messages (2830d681)
*  closes #11447, fix timestamp of fork event (0cd657ff)
*  #11440, update timestamp on lastpost button (0e5ae212)
*  throw generic not-allowed error on groups.join if a non-owner tries to add another user to a group (0fc9fdd5)
*  remove socketGroups.addMember; update admin checks to allow admin:groups privilege, hide add member controls if not admin (18447b06)
*  remove socketGroups.kick (f043dcec)
*  remove socketGroups.issueMassInvite (9d49ec60)
*  handle client-side acceptAll and rejectAll (b53f92fa)
*  use api routes for group accept/reject (34d99c15)
*  updating user bookmark when entering topic at the end from teaser (cc1c493b)
*  closes #11437, link to queued post from event (8680ea4d)
*  direct replies on dynamic posts (5d9b23ca)
*  topic labels on topics_list (2615192f)
*  #11396, removal of base_templates_path variable (7cb2e02c)
*  dont show search input if user doesn't have tag search priv (a83734fb)
*  add missing delete (2a9b3ee4)
*  buttons for post queue content editing (33ad5a72)
*  #9397, trash the active session on account lockout, if there is one (03e05b51)
*  #11381, bug where the call to `action:settings.sorted-list.itemLoaded` did not properly pass in the correct element (2614b95c)
*  #11357 clear cache on thumb remove (1e7f32b1)
*  missing postAtIndex handling (e6d7e55f)
*  update main post timestamp when rescheduling (5a2c6c1c)
*  add back req.query fallback for backwards compatibility (83d36336)
*  update csrf parser to accept csrf_token form value if present (ea95668a)
*  schema changes for #11206 (9007ace1)
*  new language keys for #11206 (966724ad)
*  remove unneeded assignment, as req and locals will not likely ever be completely reassigned (a69bc2cf)
*  move call to `filter:middleware.buildHeader` out of parallel so that req can be overridden by plugins prior to loading config (0a691e67)
*  relax selectors for client-side form validation so that all form elements are checked (52e7ad4d)
*  change hsts-maxage back to numeric input type, change API token uid input to numeric text type (13738888)
*  replace input type number with text/pattern (cde4c6ac)
* **deps:**
  *  update dependency mkdirp to v3.0.1 (#11516) (f66eba29)
  *  update dependency semver to v7.5.0 (#11492) (a8a2ebbe)
  *  update dependency esbuild to v0.17.18 (#11509) (f0408ea9)
  *  update dependency nodebb-plugin-emoji to v5.0.6 (#11510) (04f77ada)
  *  update dependency postcss to v8.4.23 (#11504) (967b9840)
  *  update dependency ace-builds to v1.18.0 (#11505) (22f6b8f6)
  *  update dependency nodebb-plugin-2factor to v7.0.5 (#11495) (666fe04e)
  *  update dependency lru-cache to v9.0.3 (#11481) (d2b8512c)
  *  update dependency commander to v10.0.1 (#11486) (ba2b7f5b)
  *  update dependency ioredis to v5.3.2 (#11487) (90fca08e)
  *  update dependency postcss to v8.4.22 (#11488) (fe4e9383)
  *  update dependency esbuild to v0.17.17 (#11489) (4cd8c2ff)
  *  update dependency webpack to v5.79.0 (#11476) (455de50d)
  *  update dependency ace-builds to v1.17.0 (#11472) (550d125d)
  *  update dependency helmet to v6.1.5 (#11464) (4e5fbc54)
  *  update dependency sass to v1.62.0 (#11468) (c1164544)
  *  update dependency semver to v7.4.0 (#11461) (1ab7fdc8)
  *  update dependency rtlcss to v4.1.0 (#11460) (c0d92961)
  *  update dependency helmet to v6.1.4 (#11459) (415f8781)
  *  update dependency helmet to v6.1.3 (#11452) (d165164a)
  *  update dependency esbuild to v0.17.16 (#11457) (bdacd1c6)
  *  update dependency helmet to v6.1.1 (#11449) (5d880e9d)
  *  update dependency lru-cache to v8.0.5 (#11434) (d7125a0c)
  *  update dependency webpack to v5.78.0 (#11436) (62a84f63)
  *  update dependency sass to v1.61.0 (#11443) (248c5f62)
  *  bump mentions (f49fc5ca)
  *  update dependency mongodb to v5.2.0 (#11433) (4bede9fb)
  *  update dependency nodebb-plugin-composer-default to v10.0.44 (#11430) (569944f1)
  *  update dependency esbuild to v0.17.15 (#11429) (0187e177)
  *  update dependency nodebb-plugin-mentions to v4.0.5 (#11417) (1ac37b43)
  *  update dependency webpack to v5.77.0 (#11415) (e9039018)
  *  update dependency nodebb-rewards-essentials to v0.2.3 (#11406) (9f5dc9ad)
  *  update dependency nodebb-theme-persona to v13.0.55 (#11407) (609c0558)
  *  update dependency esbuild to v0.17.14 (#11399) (89060027)
  *  update dependency nodebb-theme-persona to v13.0.53 (#11401) (415da6c2)
  *  update dependency sharp to v0.32.0 (#11395) (b17ab944)
  *  update dependency esbuild to v0.17.13 (#11397) (4ab60c88)
  *  update dependency csrf-sync to v4.0.1 (#11398) (e753603e)
  *  update dependency @popperjs/core to v2.11.7 (#11394) (6947e60b)
  *  update dependency sass to v1.60.0 (#11391) (400a7abf)
  *  update dependency rimraf to v4.4.1 (#11388) (5d2900e9)
  *  update dependency @isaacs/ttlcache to v1.2.2 (#11389) (96305e12)
  *  update dependency html-to-text to v9.0.5 (#11390) (5a7104f1)
  *  update dependency helmet to v6 (#10891) (97f08135)
  *  update dependency nodebb-widget-essentials to v7.0.7 (#11387) (98b58bcc)
  *  update dependency mkdirp to v2.1.6 (#11386) (8c07a8d7)
  *  update dependency webpack to v5.76.3 (#11385) (7f54709d)
  *  update dependency fs-extra to v11.1.1 (#11380) (7c780210)
  *  update dependency commander to v10 (#11208) (a2d3f674)
  *  update dependency lru-cache to v8.0.4 (#11378) (238a7809)
  *  update dependency lru-cache to v8 (#11356) (0d236adf)
  *  update dependency ace-builds to v1.16.0 (#11372) (75436dc0)
  *  update dependency sass to v1.59.3 (#11373) (b0b060da)
  *  update dependency nodebb-plugin-spam-be-gone to v2.0.6 (#11370) (6edb908b)
  *  update dependency cron to v2.3.0 (#11368) (ae9d6d77)
  *  update dependency graceful-fs to v4.2.11 (#11367) (f90696de)
  *  update dependency esbuild to v0.17.12 (#11366) (2273a822)
  *  update dependency webpack to v5.76.2 (#11361) (a5f19ee6)
  *  update dependency webpack to v5.76.1 (#11348) (967c0ccf)
  *  update dependency autoprefixer to v10.4.14 (#11344) (5afea4b7)
  *  update dependency terser-webpack-plugin to v5.3.7 (#11345) (29fbecfc)
  *  update dependency webpack to v5.76.0 (#11341) (b543a0d0)
  *  update dependency nodebb-plugin-spam-be-gone to v1.0.3 (#11340) (5fa38fbe)
  *  update dependency pg-cursor to v2.9.0 (#11338) (34cf64f5)
  *  update dependency pg to v8.10.0 (#11337) (9a7f73ca)
  *  update dependency mkdirp to v2.1.5 (#11336) (a85276a6)
  *  update dependency lru-cache to v7.18.3 (#11335) (b70716f1)
  *  update dependency esbuild to v0.17.11 (#11333) (18b3ac6e)
  *  update dependency ace-builds to v1.15.3 (#11332) (b8efa466)
  *  update dependency mkdirp to v2.1.4 (#11330) (a6f22afa)
  *  update dependency lru-cache to v7.18.1 (#11327) (b526d42e)
  *  update dependency nodebb-plugin-mentions to v3.0.13 (#11320) (22a3ba65)
  *  update dependency yargs to v17.7.1 (#11316) (b75212f7)
  *  update dependency sanitize-html to v2.10.0 (#11319) (3d855842)
  *  update socket.io packages to v4.6.1 (#11318) (17c2467d)
  *  update dependency lru-cache to v7.17.0 (#11315) (4211e4dd)
  *  update dependency body-parser to v1.20.2 (#11313) (02d69920)
  *  update dependency esbuild to v0.17.10 (#11314) (865e1506)
  *  bump theme versions (c76e344f)
  *  update dependency lru-cache to v7.15.0 (#11305) (affac569)
  *  update dependency ace-builds to v1.15.2 (#11304) (01b2915e)
  *  update dependency nodebb-plugin-composer-default to v9.2.5 (#11301) (0ad5f476)
  *  update dependency logrotate-stream to v0.2.9 (#11300) (e29b9b1d)
  *  update dependency ace-builds to v1.15.1 (#11299) (1a0910bb)
  *  update dependency ioredis to v5.3.1 (#11294) (75bd6caa)
  *  update socket.io packages to v4.6.0 (#11272) (b9bb0532)
  *  update dependency html-to-text to v9.0.4 (#11290) (3ef49223)
  *  update dependency benchpressjs to v2.5.1 (#11270) (e4e01f47)
  *  update dependency esbuild to v0.17.8 (#11289) (2f5f47ea)
  *  update dependency @socket.io/redis-adapter to v8.1.0 (#11269) (7abcf80a)
  *  update dependency mongodb to v4.14.0 (#11271) (98395d18)
  *  update dependency esbuild to v0.17.6 (#11266) (145dcb2f)
  *  update dependency sanitize-html to v2.9.0 (#11261) (0e9cfcad)
  *  update dependency validator to v13.9.0 (#11262) (7cdbf77d)
  *  bump persona theme (5dc4d285)
  *  update dependency pg-cursor to v2.8.0 (#11236) (6c872a05)
  *  update dependency nodebb-rewards-essentials to v0.2.2 (#11234) (c271762c)
  *  update dependency pg to v8.9.0 (#11235) (972d1770)
  *  update dependency esbuild to v0.17.5 (#11233) (1a28598b)
  *  update dependency ace-builds to v1.15.0 (#11223) (9b34ab66)
  *  update dependency ioredis to v5.3.0 (#11224) (37493514)
  *  update dependency nodebb-theme-persona to v12.1.14 (#11221) (94074e90)
  *  update dependency nodemailer to v6.9.1 (#11222) (0e0176a1)
  *  update dependency mkdirp to v2 (#11211) (466c7a3a)
  *  update dependency ioredis to v5.2.6 (#11210) (557198a3)
  *  update dependency nodemailer to v6.9.0 (#11205) (69f4ff75)
  *  update dependency ioredis to v5.2.5 (#11187) (a2b00534)
  *  update dependency esbuild to v0.17.4 (#11204) (d0e3eadb)
  *  update dependency nodebb-theme-persona to v12.1.13 (2994c42b)
  *  update dependency @socket.io/redis-adapter to v8.0.1 (aa873e80)
  *  update dependency jsonwebtoken to v9 (79cd4a36)
  *  update dependency nodebb-plugin-2factor to v5.1.3 (8dc96894)
  *  update dependency cron to v2.2.0 (#11140) (aaf9abed)
  *  update dependency esbuild to v0.16.16 (#11135) (4b147ee2)
  *  update dependency commander to v9.5.0 (#11133) (aced93de)
  *  update dependency postcss to v8.4.21 (#11130) (aa6788b7)
  *  update dependency esbuild to v0.16.15 (#11132) (581960de)
  *  update dependency esbuild to v0.16.14 (#11127) (95897197)
  *  update dependency esbuild to v0.16.13 (#11121) (ca434647)
  *  update dependency esbuild to v0.16.12 (#11116) (e3fa0152)
  *  update dependency esbuild to v0.16.11 (0ec6d6c2)
  *  update dependency nodebb-theme-slick to v2.0.4 (#11113) (a634481b)
  *  update dependency esbuild to v0.16.10 (#11104) (048f5674)
  *  update dependency mongodb to v4.13.0 (#11105) (3f5bda7e)
  *  update dependency esbuild to v0.16.8 (#11101) (db7ea20c)
  *  update dependency sanitize-html to v2.8.0 (#11098) (65241b1a)
  *  update dependency ace-builds to v1.14.0 (#11095) (10056e5b)
  *  update dependency nodebb-plugin-2factor to v5.1.2 (#11096) (cc376656)
  *  update dependency postcss to v8.4.20 (#11097) (d4f04511)
  *  update dependency compare-versions to v5.0.3 (#11092) (32fecad7)
  *  update dependency html-to-text to v9.0.3 (#11093) (6aab1c58)
  *  update dependency @socket.io/redis-adapter to v8 (#11084) (a82c6743)
  *  update dependency nodebb-widget-essentials to v6.0.1 (#11085) (6774b35f)
  *  update dependency esbuild to v0.16.7 (#11086) (27a049fb)
  *  update dependency nodebb-theme-lavender to v6.0.1 (#11081) (c749f38c)
  *  update dependency esbuild to v0.16.3 (#11083) (8eb880f6)
  *  update dependency html-to-text to v9 (#11075) (aa3a51b1)
  *  update dependency ace-builds to v1.13.2 (#11080) (67ede5c6)
  *  update dependency fs-extra to v11 (#11072) (fa3e6540)
  *  update dependency esbuild to v0.15.16 (#11069) (ced87417)
  *  update dependency mongodb to v4.12.1 (#11062) (3c5b0210)
  *  update dependency mongodb to v4.12.1 (#11062) (643dce38)

##### Other Changes

* //github.com/NodeBB/NodeBB/issues/11501 (2055aae1)
* //github.com/NodeBB/NodeBB/issues/11500 (9ec5f1f5)
*  remove chalk (a0bac74e)
* //github.com/NodeBB/NodeBB/issues/11329 (661a6e04)
*  satisfy lint errors (bb0397cb)

##### Refactors

*  get rid of floats in deleted-message.tpl (f055b7fb)
*  remove log, to much noise (9806d89f)
*  group invitations; issuing, accepting, rejecting; now via API (18c45b44)
*  replace rimraf glob doesn't work on windows (d36aad07)
*  simple load new posts (45addcf5)
*  post-queue frontend logic (ddcdaacc)
*  `helpers.loginUser` to be fully async (fecdab8b)
*  flag states so that they are not hardcoded, allow plugins to add additional states, deprecated filter:flags.getFilters hook, closes #11065 (14091de8)

##### Tests

*  Blob doesnt exist in node 16 (3c6f225a)
*  no need for this check (bb4be716)
*  fix utils (eacbad7f)
*  missing utils tests (699c3bdf)
*  remove history test (9c162186)
*  fix escaping (c5e83eb9)
*  fix lang test (a8efe3df)
*  fix openapi schema to reflect new route (92073cf2)
*  fix broken test (38175b5e)

#### v2.8.12 (2023-04-26)

##### Chores

*  removing superfluous changelog items (5343d2a0)
*  update changelog for v2.8.11 (f2ca93f6)

##### New Features

*  name theme on error:theme-not-set-in-configuration (ae5afdbc)

##### Bug Fixes

*  #11519, clear parent cache all the way to root (30b6bcfc)
*  only remove deleted tag, closes #11515 (de2669a2)
*  NodeBB#11482 thumbs Post Can not upload a thumbnail, only multip… (#11483) (c9311832)

##### Tests

*  remove old comment (21fb8590)

#### v2.8.11 (2023-04-11)

##### Chores

*  update changelog for v2.8.10 (188ec62f)

##### Continuous Integration

*  publish to ghcr instead of docker hub (c2756728)

##### Documentation Changes

*  update readme with new screenshot and updated copy for Harmony (67055006)

##### Bug Fixes

*  don't crash on objects with toString property (4d2d7689)
*  fire action:user.online on user login (7397873d)

##### Tests

*  update socket.io test (e0b20658)

#### v2.8.10 (2023-03-27)

##### Chores

*  up composer-default (e9a8e195)
*  update changelog for v2.8.9 (18b2150e)

##### Bug Fixes

*  #11403, remove loader.js crash counter logic (830f142b)
*  don't crash if event name is not a string (37b48b82)
*  closes #11173, move cache clear code (c2961ad4)

##### Other Changes

*  fix arrow (1aff9cad)
*  whitespace (894f392b)

#### v2.8.9 (2023-03-19)

##### Chores

*  up cron (73a50d17)
*  update changelog for v2.8.8 (c03d5db7)

##### Bug Fixes

*  thumb remove on windows, closes #11357 (767c1d1f)
*  #11357 clear cache on thumb remove (a3a38e4b)
*  closes #11352, try/catch rss feeds (cfd50272)
*  closes #11343, don't crash if tags array is empty (56427e4f)

##### Code Style Changes

*  more fixes (93aa43f7)

##### Tests

*  openapi for thumbs (9e685e65)

#### v2.8.8 (2023-03-09)

##### Chores

*  update changelog for v2.8.7 (2ca38e7b)

##### Bug Fixes

*  stop topic navigation hotkeys from firing if in a mousetrap-enabled form element (22fc8fe3)
*  stop topic navigation hotkeys from firing if in a mousetrap-enabled form element (17d0b40e)
*  tag filtering when changing filter to watched topics (1545223e)
*  get cid from pid instead of passing in (f054a4f4)
*  closes #11331, allow 0 length content if set to 0 in acp (8c762d32)

#### v2.8.7 (2023-03-01)

##### Chores

*  update changelog for v2.8.6 (f3306d03)

##### Documentation Changes

*  update openapi spec to include info about passing in timestamps for topic creation, removing timestamp as valid request param for topic replying (40e7b86d)

##### Bug Fixes

*  display 25 topics on category feed (79155109)
*  object destructuring overwriting type parameter (ec58700f)
*  alert on page load (8cf4a6f6)
*  show error alert if password change fails (3bd9a871)
*  update main post timestamp when rescheduling (edd2fc38)
*  show admins/globalmods if content is purged (326b9268)
*  email expiry timestamps (e335d0f6)
*  #11259, clean old emails when updating via admin (#11260) (845c8013)
*  #11257, onSuccessfulLogin called with improper uid (7a5bcc21)

##### Tests

*  add dummy emailer hook in authentication test (1b29dbb6)

#### v2.8.6 (2023-02-03)

##### Chores

* **i18n:**  fallback strings for new resources: nodebb.error (8335f90a)
*  update changelog for v2.8.5 (24e58c28)

##### New Features

*  add sitemap filter hooks for categories/topic pages (bf92ee0e)
*  closes #11241, add missing error lang keys (c241baf6)
*  #11240, only show relevant users in flags assignee list (0713482b)

##### Bug Fixes

*  #11254, return check for reroll property (202378b9)
*  closes #11249, notification uses displayname (705cd13a)
*  wrong link to topics in acp dashboard (b5598a6e)
*  https://github.com/NodeBB/NodeBB/issues/11239 (1d3c0e5a)
*  notif filter selecte field (6d819b05)

##### Other Changes

*  remove unused (d68352cc)

#### v2.8.5 (2023-01-27)

##### Chores

*  update changelog for v2.8.4 (c13f0e21)

##### Bug Fixes

*  import resolution within plugin modules (#11219) (f6c96948)

#### v2.8.4 (2023-01-26)

##### Chores

*  update changelog for v2.8.3 (eb2841ee)

#### v2.8.3 (2023-01-25)

##### Chores

*  remove extraneous lines from changelog (48c9f447)
*  update changelog for v2.8.2 (66aa3169)

##### Bug Fixes

*  import resolution within plugin modules (#11200) (89e059a0)
*  #11195, allow users with admin:users privilege to delete users in acp (0bffd3d9)
*  #11194, allow access to sub dashboard pages (7d04e952)
*  #11136, tests, and returning the proper number of arrays (459bc523)
*  #11136, only show mods of active categories when getModeratorUids is called (39e009c0)
*  closes #11173, clear require cache if wrong dependency is installed (747cb1f0)
* **deps:**
  *  downgrade swagger-parser to v9 (00e48803)
  *  pinning sub dependency json-schema-ref-parser to 9.0.9 (9c250b78)

##### Reverts

*  a788bd1344825ad4759e39d6e98d8bf3695bd639 (fecd84d1)
*  9c250b78b05ca2abf31a79971ed0c60ca07664ec, fix: comment out broken test for now (a788bd13)

##### Tests

*  fix broken test (f295174e)

#### v2.8.2 (2023-01-13)

##### Chores

*  update changelog for v2.8.1 (d17d4ec0)

##### Bug Fixes

*  move call to `filter:middleware.buildHeader` out of parallel so that req can be overridden by plugins prior to loading config (25ae58e8)

#### v2.8.1 (2022-12-30)

##### Chores

*  fallbacks for new language string (8a69e740)
*  remove extraneous lines from changelog (bbaf26ce)
*  update changelog for v2.8.0 (a5c2edb9)

##### Bug Fixes

*  vulnerability in socket.io nested namespaces (#11117) (586eed14)
*  lock post/reply similar to user.create (1ea9481a)

#### v2.8.0 (2022-12-21)

##### Chores

* **deps:**
  *  update dependency jquery to v3.6.3 (#11107) (13a3faa0)
  *  update dependency eslint to v8.30.0 (#11102) (485ee130)
  *  update dependency mocha to v10.2.0 (#11094) (c4cc1e61)
*  up jquery (3e8f5378)
*  remove extraneous lines from changelog (e213dbc3)
*  update changelog for v2.7.0 (4701c96d)
* **i18n:**
  *  fallback strings for new resources: nodebb.admin-settings-email (717b3612)
  *  fallback strings for new resources: nodebb.admin-settings-email (4f4b4800)

##### New Features

*  add force flag to plugin install in cli (#11089) (de31cb1a)
*  integrating basic client-side form validity checking in settings v1 and v2 (33af2d9c)

##### Bug Fixes

* **deps:**
  *  update dependency sharp to v0.31.3 (#11110) (ef500af8)
  *  update dependency sanitize-html to v2.8.1 (#11109) (7ab46b78)
  *  update dependency esbuild to v0.16.10 (#11104) (eb6a9c47)
  *  update dependency mongodb to v4.13.0 (#11105) (05443dbe)
  *  update dependency esbuild to v0.16.8 (#11101) (18ff6caa)
  *  update dependency sanitize-html to v2.8.0 (#11098) (faaf09f7)
  *  update dependency ace-builds to v1.14.0 (#11095) (cde44587)
  *  update dependency nodebb-plugin-2factor to v5.1.2 (#11096) (5dda9a5b)
  *  update dependency postcss to v8.4.20 (#11097) (0a5adb41)
  *  update dependency compare-versions to v5.0.3 (#11092) (8b209f16)
  *  update dependency html-to-text to v9.0.3 (#11093) (7bcfe38e)
  *  update dependency @socket.io/redis-adapter to v8 (#11084) (7b9bbef5)
  *  update dependency nodebb-widget-essentials to v6.0.1 (#11085) (7b48156c)
  *  update dependency esbuild to v0.16.7 (#11086) (65ef722e)
  *  update dependency esbuild to v0.16.3 (#11083) (4f67fc1a)
  *  update dependency esbuild to v0.15.16 (#11069) (22493ffb)
*  change hsts-maxage back to numeric input type, change API token uid input to numeric text type (896493db)
*  replace input type number with text/pattern (2bc23a95)

##### Refactors

*  flag states so that they are not hardcoded, allow plugins to add additional states, deprecated filter:flags.getFilters hook, closes #11065 (9f531f95)
*  remove debug log closes #11090 (06f4801e)

#### v2.7.0 (2022-12-14)

##### Chores

*  added stub file in hy (9ee8502d)
* **deps:**
  *  update dependency lint-staged to v13.1.0 (#11082) (693d4783)
  *  update dependency eslint to v8.29.0 (#11074) (eab5b754)
  *  update dependency lint-staged to v13.0.4 (#11064) (f947ac6d)
* **i18n:**
  *  fallback strings for new resources: nodebb.admin-settings-email (0e319a58)
  *  fallback strings for new resources: nodebb.admin-settings-email (9676b192)

##### New Features

*  update transifex config (for use with new cli) (f11094cb)
*  integrating basic client-side form validity checking in settings v1 and v2 (dadbcd73)
*  add ./nodebb install <plugin_name> (4efc19d5)

##### Bug Fixes

* **deps:**
  *  update dependency nodebb-theme-lavender to v6.0.1 (#11081) (df3f1c5e)
  *  update dependency esbuild to v0.16.3 (#11083) (85d38158)
  *  update dependency html-to-text to v9 (#11075) (d8e9738d)
  *  update dependency ace-builds to v1.13.2 (#11080) (35be4594)
  *  update dependency fs-extra to v11 (#11072) (aafb7f6e)
  *  update dependency esbuild to v0.15.16 (#11069) (7bc4b836)
  *  update dependency mongodb to v4.12.1 (#11062) (e14d4abc)
*  relax selectors for client-side form validation so that all form elements are checked (43e7c988)
*  change hsts-maxage back to numeric input type, change API token uid input to numeric text type (db8d3a94)
*  replace input type number with text/pattern (45ae31f8)
*  categories.js not showing custom privileges (#10856) (8c4d6bbe)
*  #11077, add admin uploads paths to priv mapping (07a02125)

##### Tests

*  dont try to load admin upload routes (c2bb2b30)

#### v2.6.1 (2022-11-28)

##### Chores

*  update changelog for v2.6.0 (eedd84ae)

##### Documentation Changes

*  remote extraneous lines from changelog (8a15e58d)

##### Bug Fixes

*  prototype vulnerability in socket.io onMessage (48d14392)
*  #11066, fix custom privilege/path in routePrefixMap (0e495f9e)

##### Refactors

*  not deprecated on 2.x (91c2e5ac)

#### v2.6.0 (2022-11-23)

##### Chores

* **i18n:**
  *  fallback strings for new resources: nodebb.admin-settings-advanced (1d7dbf14)
  *  fallback strings for new resources: nodebb.admin-settings-advanced (05b6758e)
  *  fallback strings for new resources: nodebb.admin-settings-user, nodebb.admin-settings-email (9ad3b214)
* **deps:**
  *  update commitlint monorepo to v17.3.0 (#11058) (f4784205)
  *  update dependency eslint to v8.28.0 (#11059) (d480f26b)
  *  update dependency jsdom to v20.0.3 (#11054) (5750ded1)
  *  update dependency jquery to v3.6.1 (#11048) (6611d44c)
  *  update dependency eslint-config-nodebb to v0.2.1 (#11043) (07c81d5d)
  *  update commitlint monorepo to v17.2.0 (#11026) (26be289e)
  *  update dependency husky to v8.0.2 (#11018) (4b3978be)
  *  update dependency eslint to v8.27.0 (#11004) (4fcef7c5)
  *  update dependency jsdom to v20.0.2 (#11014) (a6e4fee1)
  *  update dependency mocha to v10.1.0 (#10980) (ffa117ab)
  *  update dependency eslint to v8.25.0 (3719233a)
  *  update dependency jsdom to v20.0.1 (#10934) (241b7c4f)
  *  update dependency eslint to v8.24.0 (#10922) (8bcbff33)
  *  update commitlint monorepo (#10888) (3f30056a)
  *  update postgres docker tag to v14 (#10829) (5aa55d29)
  *  update dependency eslint to v8.23.1 (#10885) (0c6fb6e3)
*  remove derpy extra changelog bits (445f09f0)
*  update changelog for v2.5.8 (c9cd8975)

##### New Features

*  add permissions-policy header (864fe0f9)
*  allow groups to be exempt from maintenance mode (3c85b944)
*  add search data to filter:search.inContent (be92be4e)
*  add relevant topic events to post objects (a584dae6)
*  client-side hooks for navigator scroll action (135fe55b)
*  j and k hotkeys in topic to navigate through it quickly (aeb94c32)
*  a couple utility methods in navigator module to get and set count and index (9f9a835f)
*  paginate recentposts.rss and (ebd7c05c)
*  add quiet to action:settings.set (665f36b7)

##### Bug Fixes

*  https://github.com/NodeBB-Community/nodebb-plugin-custom-pages/issues/68 (110311b2)
*  https://github.com/NodeBB-Community/nodebb-plugin-custom-pages/issues/68 (fc49665f)
*  #11052, add missing await (bb82eb71)
*  pin jquery version for all packages that include it as a subdependency (a87f64b4)
*  #10877, define a resolution for jquery subdependency of timeago (5aaebdd3)
*  #11044, allow banned users to post (abcfb631)
*  check schedule privilege, closes #11032 (61090615)
*  mixing of old and new bch syntax (1e484643)
*  category ordering add test (61d32bde)
*  use `--omit=dev` flag for npm instead of `--production` (53d47a58)
*  update nav thumb on setIndex call (thx @barisusakli) (664bc5f5)
*  do not call `navigator.update()` when `scrollToElement` is explicitly passed a new index value (b7287c1e)
*  race condition where `navigator.update` was called when it should not be (fa643eb8)
*  be tidier and explicitly clean up ctrl-f hotkey on topic page (5b9de0e5)
*  listen to -d flag on cli upgrade (fe249fa5)
*  automatically remove `lang` parameter if it matches the forum default (881c7c4d)
* **deps:**
  *  update socket.io packages to v4.5.4 (#11061) (709ca59d)
  *  update dependency esbuild to v0.15.15 (#11056) (d449710e)
  *  update dependency nodebb-theme-persona to v12.1.12 (#11057) (18eb35a1)
  *  update dependency cropperjs to v1.5.13 (#11055) (13f3a048)
  *  update dependency nodebb-plugin-markdown to v10.1.1 (#11047) (62a60cbf)
  *  update dependency mongodb to v4.12.0 (#11049) (59b4d95f)
  *  update dependency connect-pg-simple to v8 (#11033) (ca162c04)
  *  update dependency ace-builds to v1.13.1 (#11045) (e0b9240d)
  *  update dependency esbuild to v0.15.14 (a5355d78)
  *  update dependency nodebb-theme-persona to v12.1.11 (2af7fd5f)
  *  update dependency postcss to v8.4.19 (#11028) (b94bb1bf)
  *  update dependency ace-builds to v1.13.0 (#11031) (313d0c32)
  *  update dependency webpack to v5.75.0 (#11027) (40c9cc05)
  *  update dependency yargs to v17.6.2 (#11025) (8d3907b5)
  *  update dependency lru-cache to v7.14.1 (#11023) (1ea2a32b)
  *  update dependency sharp to v0.31.2 (#11024) (51919f7a)
  *  update dependency esbuild to v0.15.13 (#11021) (c4a1905b)
  *  update dependency ioredis to v5.2.4 (#11022) (e144debb)
  *  update dependency ace-builds to v1.12.5 (#11019) (de507f72)
  *  update dependency mongodb to v4.11.0 (#10994) (9ca2482a)
  *  update dependency autoprefixer to v10.4.13 (#11020) (35d67ad3)
  *  update dependency nodebb-plugin-composer-default to v9.2.4 (#10998) (5a5771e1)
  *  update dependency sanitize-html to v2.7.3 (#11008) (73a60854)
  *  update dependency nodebb-plugin-composer-default to v9.2.3 (#10997) (ee4fde13)
  *  update dependency esbuild to v0.15.12 (#10996) (29fddd65)
  *  update dependency nodebb-plugin-composer-default to v9.2.2 (1fc2f1e8)
  *  update dependency nodebb-theme-persona to v12.1.9 (6471b698)
  *  bump composer-default (7b9e0847)
  *  update dependency ace-builds to v1.12.3 (1e930f9d)
  *  update dependency nodebb-theme-persona to v12.1.8 (#10982) (9900e5f4)
  *  update dependency ace-builds to v1.12.2 (4260f0c2)
  *  update dependency ace-builds to v1.12.1 (6485bc25)
  *  update dependency ace-builds to v1.12.0 (#10978) (00ce8fd8)
  *  update socket.io packages to v4.5.3 (#10977) (fb41fbe7)
  *  update dependency nodebb-plugin-emoji to v4.0.6 (dcca3397)
  *  update dependency esbuild to v0.15.11 (ff69c3e1)
  *  update dependency @isaacs/ttlcache to v1.2.1 (647bbd57)
  *  update dependency nodebb-plugin-mentions to v3.0.12 (60d0145b)
  *  update dependency postcss to v8.4.18 (3c2a636c)
  *  update dependency nodebb-plugin-spam-be-gone to v1.0.2 (#10958) (b68faa09)
  *  update dependency body-parser to v1.20.1 (#10941) (0f63947b)
  *  update dependency express to v4.18.2 (#10948) (ff53064c)
  *  update dependency semver to v7.3.8 (#10937) (1b89b661)
  *  update dependency nodebb-theme-persona to v12.1.7 (1873b527)
  *  update dependency commander to v9.4.1 (#10928) (855a2bad)
  *  update dependency postcss to v8.4.17 (#10929) (d84ee308)
  *  update dependency nodemailer to v6.8.0 (#10925) (222ab6ae)
  *  update dependency yargs to v17.6.0 (#10931) (7c3c3d02)
  *  update dependency nodebb-plugin-spam-be-gone to v1.0.1 (#10912) (28d1844e)
  *  update dependency ace-builds to v1.11.2 (#10923) (87c84fe8)
  *  update dependency sharp to v0.31.1 (#10926) (8e23e410)
  *  update dependency ace-builds to v1.11.1 (#10920) (ce77605a)
  *  update dependency ace-builds to v1.11.0 (#10909) (d900fd17)
  *  update dependency autoprefixer to v10.4.12 (#10911) (54294871)
  *  update dependency compare-versions to v5 (#10890) (f971385b)
  *  bump persona #10907 (846eda0a)
  *  bump persona, #10907 (27c80d39)
  *  update dependency mongodb to v4.10.0 (#10908) (bbe7f779)
  *  update dependency nodebb-theme-persona to v12.1.3 (#10903) (0debc51b)
  *  update dependency nodebb-plugin-2factor to v5.1.1 (02fe6875)
  *  update dependency nodebb-theme-persona to v12.1.2 (425bf87b)
  *  update dependency sanitize-html to v2.7.2 (#10893) (bfeb0368)
  *  update dependency autoprefixer to v10.4.11 (#10892) (0758655a)
  *  update dependency sharp to v0.31.0 (#10887) (2836be5c)
  *  update socket.io packages to v4.5.2 (#10884) (22f3d0bb)
  *  update dependency nodebb-plugin-2factor to v5.1.0 (#10886) (335990be)
  *  update dependency autoprefixer to v10.4.10 (#10883) (0c2a88de)
  *  update dependency winston to v3.8.2 (#10882) (d911a1bf)
  *  update dependency pg to v8.8.0 (#10863) (01129a39)
  *  update dependency nodebb-plugin-emoji to v4.0.5 (#10881) (34d243e4)
  *  update dependency ioredis to v5.2.3 (#10861) (5e375e4a)
  *  update dependency pg-cursor to v2.7.4 (#10862) (86b63fab)
  *  update dependency mongodb to v4.9.1 (#10880) (5583ab95)
  *  update dependency autoprefixer to v10.4.9 (#10879) (cc6798bb)
  *  update dependency postcss to v8.4.16 (#10824) (8c680db5)
  *  update dependency jquery to v3.6.1 (#10868) (6687f49b)
  *  update dependency ace-builds to v1.10.1 (#10840) (c0c3ee01)
  *  bump composer-default to v9.2.0 (29ddeaa1)

##### Refactors

*  don't prevent startup if staticDir is undefined (b34e859c)
*  added new ajaxify method .cleanup, called before ajaxify.start. (3700174c)

#### v2.5.8 (2022-11-09)

##### Chores

*  really fix indents this time (c2024f34)
*  fix indents (d50512e7)
*  add bootstrap5 to test runner for now (be5d6d29)
*  update changelog for v2.5.7 (17e948ab)

##### New Features

*  new search hooks (b5d38bc6)
*  add search data to filter:search.inContent (e3f21562)

##### Bug Fixes

*  pass csrf_token into calls to /register/abort, #11017 (2f9d8c35)
*  check for csrf token on /register/abort, + theme changes for v2.x branches of themes (55a197a7)
*  upgrade script to work from 0.x to 2.x (a31ba824)
*  #10519, image height in emails (673261ff)
*  fallback language strings for #10987 (b9c8c02f)
*  #10993, apply autoLocale middleware to guests only (6f673f80)
*  check cid as well as template (9227b82e)
*  revert breaking change, add back SocketUser.emailConfirm (9ee30fe7)
*  in appropriately named language key `email-confirm-email2` (09f3ac65)
*  correctly pass dev flag to package installer (7672194c)
*  use `--omit=dev` flag for npm instead of `--production` (09cfd0bd)

##### Refactors

*  use utils.debounce (d264c6ac)

##### Tests

*  fix tests again (06d15391)
*  fix test (c833d3cd)

#### v2.5.7 (2022-10-14)

##### Chores

*  update changelog for v2.5.6 (e92238d0)

##### Performance Improvements

*  speed up build (dd4e9cce)

#### v2.5.6 (2022-10-13)

##### Chores

*  update changelog for v2.5.5 (e7d0040d)

##### Bug Fixes

*  use admin:groups priv for groups (#10960) (b879b6a0)
*  https://github.com/NodeBB/NodeBB/issues/10525 (e35b0a86)

#### v2.5.5 (2022-10-11)

##### Chores

*  up plugins (b91ef6dd)
*  update changelog for v2.5.4 (aabf073c)

#### v2.5.4 (2022-10-11)

##### Chores

*  🤔 (7240e8ce)
*  update changelog for v2.5.3 (fdf240f6)

##### Continuous Integration

*  add minimum GitHub token permissions for workflows Signed-off-by: Ashish Kurmi <akurmi@stepsecurity.io> (fe0020fb)

##### Bug Fixes

*  EEXISTS error on linux if plugin/theme overrides core js file (ebd5dcc6)
*  category ordering add test (177d9048)
*  crash in category drag, closes #10932 (989b55d0)
*  broken flag history on flag update (803398e9)
*  scroll to post if theme doesn't have top navbar (aad0a618)
*  add lru-cache to checked packages, to fix upgrade issue with lru-cache (14515f60)

#### v2.5.3 (2022-09-19)

##### Chores

*  remove duplicate version increment lines in changelog (5dbcfef9)
*  bring back treding plugins (8aa1596d)
*  update changelog for v2.5.2 (84b6a7c7)

##### New Features

*  store topic title and tags in diffs (#10900) (b5dd89e1)

##### Bug Fixes

*  #10906, allow `middleware.checkAccountPermissions` to be called with either uid or userslug in params (cf4f5447)
*  #10896, unescape / in taskbar (8e2129f8)
*  add back timeago to post history modal (d3e38df8)
* **deps:**  bump composer-default to v9.1.1 (1d80a07e)

##### Other Changes

*  fix lint (3d5a6b39)

##### Performance Improvements

*  disable trending plugins, too slow due to nbbpm (b392450c)

##### Tests

*  add back /admin/extend/plugins test (1c9c39a8)

#### v2.5.2 (2022-09-04)

##### Chores

*  update changelog for v2.5.1 (2b2fd4f3)

##### Bug Fixes

*  registration regression, closes #10875 (f6f37dc1)

##### Other Changes

*  fix lint error (b45e2413)

##### Tests

*  disable nbbpm test temporarily (1dc79d76)

#### v2.5.1 (2022-09-02)

##### Chores

*  update changelog for v2.5.0 (1076285d)

##### Bug Fixes

*  missing escape on ACP category backgroundImage property (67cb7035)
* **deps:**  temporarily add back old textcomplete dependencies so emoji plugin can import them (61d1e9e0)

#### v2.5.0 (2022-09-01)

##### Breaking Changes

*  reduce nodebb.min.js size by around 800kb (b7addffc)

##### Chores

* **i18n:**
  *  fallback strings for new resources: nodebb.admin-settings-reputation (e20433ec)
  *  fallback strings for new resources: nodebb.admin-settings-post (fcbbb4d6)
  *  fallback strings for new resources: nodebb.admin-advanced-cache (90fc50e1)
*  move @textcomplete and its modules to composer-default (3cbb7a3d)
*  remove client-side js file for tpl that no longer exists (bc2ea860)
*  update changelog for v2.4.5 (d505cc47)

* **deps:**
  *  update dependency eslint to v8.22.0 (#10835) (8fce68d3)
  *  update mongo docker tag to v3.7 (8afaed22)
  *  update docker/setup-qemu-action action to v2 (4aecf399)
  *  update redis docker tag to v2.8.23 (#10811) (269382e0)
  *  update redis docker tag to v2.8.23 (#10811) (59fd0efe)

##### Documentation Changes

* **openapi:**  v3 spec for new user export routes (70652ad4)

##### New Features

*  remove visibilityjs (#10870) (19207325)
*  introduce ACP defined option to rescind notif or do nothing on flag resolve/reject (15b1561f)
*  allow v3 api to handle 202 and 204 response codes as well. (0cda5aa3)
*  don't show signatures again in pagination mode in same topic (0a6900fc)
*  setting to show signatures only once in topics, closes #10071 (aba420a3)
*  add event type to topic event component (bcb94ede)
*  allow plugins to add to admin cache list (#10833) (a9bbb586)

##### Bug Fixes

* **deps:**
  *  update dependency compare-versions to v4.1.4 (884d4075)
  *  update dependency mongodb to v4.9.0 (e51004e2)
  *  update dependency lru-cache to v7.14.0 (d8a52f81)
  *  bump composer-default to v9 (81f8d84f)
  *  remove textcomplete in favour of @textcomplete/core (same package, just refactored) (b7bcc367)
  *  update dependency nodebb-theme-persona to v12.1.1 (#10838) (444b4d57)
  *  update dependency ace-builds to v1.9.5 (4c44d125)
  *  update dependency lru-cache to v7.13.2 (4ddc0c7a)
  *  update dependency nodemailer to v6.7.8 (dd385184)
  *  pin dependency @isaacs/ttlcache to 1.2.0 (150a7488)
  *  update dependency nodebb-plugin-composer-default to v8.0.1 (#10819) (9a7dd3a3)
  *  update dependency nodebb-plugin-composer-default to v8.0.1 (#10819) (69c87c2c)
*  empty thread tools container on open (a088eb19)
*  add dropup handler to thread tools menu, updated how post tools menu adds dropup handler (c1936e87)
*  empty thread tools container on open (df36d967)
*  add dropup handler to thread tools menu, updated how post tools menu adds dropup handler (3dd3cd82)
*  removing duplicate session rerolling code (as it is in passport@^0.6 now) (65b3996a)
*  don't crash if post is undefined (e06e526e)
*  return at least one in sizeCalculation (#10832) (3975fa2e)

##### Refactors

*  remove console.log (a2d0cd16)
*  move export generation logic to v3 controller, GET/HEAD routes for exports (d0570518)
*  use group.slug on acp group urls closes #8277 (14c79763)

##### Tests

*  have some build tests not pollute build folder (7c5a915d)
*  User.hidePrivateData (b424ba46)
*  passport0.6 (#10638) (33458701)

#### v2.4.5 (2022-08-22)

##### Chores

*  update changelog for v2.4.4 (77e492b8)

##### Bug Fixes

*  wrap passport.authenticate to pass in keepSessionInfo if not already set (9b96c33d)
*  parseInt caller.uid closes #10849 (bc37a5c5)

#### v2.4.4 (2022-08-18)

##### Chores

*  update changelog for v2.4.3 (06da15a5)

##### Bug Fixes

*  missing req, closes #10847 (489fb3a3)

#### v2.4.3 (2022-08-18)

##### Chores

*  update changelog for v2.4.2 (ba7a3466)

##### Bug Fixes

*  #10845, disallow inline viewing of uploaded html files (4dc7fa05)

#### v2.4.2 (2022-08-17)

##### Chores

*  update changelog for v2.4.1 (4b6baabb)

##### Documentation Changes

*  explain what export routes actually do in OpenAPI documentation (#10836) (72e7b9f7)

##### Bug Fixes

*  #10841, incorrect conditional in email interstitial partial (ec048a01)
*  don't crash if post is undefined (4a3e36a7)

##### Tests

*  passport0.6 (#10638) (6b2a6f90)

#### v2.4.1 (2022-08-14)

##### Chores

* **deps:**
  *  update docker/build-push-action action to v3 (bfd6318c)
  *  update docker/login-action action to v2 (3d68accf)
  *  update docker/setup-buildx-action action to v2 (371ac032)
*  update changelog for v2.4.0 (c4714ff7)

##### Bug Fixes

*  return at least one in sizeCalculation (#10832) (15ca460c)

#### v2.4.0 (2022-08-10)

##### Chores

* **deps:**
  *  update dependency eslint to v8.21.0 (13a17bd1)
  *  bump commander from 7.2.0 to 9.4.0 in /install (993b7747)
*  update to new transifex project url (659cfe85)
*  re-order interstitial tests so email and gdpr tests are in sub-blocks (342cca35)
*  opt-out of dependabot, due to conflicts with renovate (70d60289)
*  update changelog for v2.3.1 (2f487175)
* **i18n:**
  *  fallback strings for new resources: nodebb.admin-settings-email (cdaa8f21)
  *  fallback strings for new resources: nodebb.admin-settings-email (3e56c547)
  *  fallback strings for new resources: nodebb.user (bcf7ef67)

##### New Features

*  support packageManager property in package.json (b3a37a7f)
*  automatically enable the SMTP transport option if the SMTP service is changed (4055e3bd)
*  present a password challenge on email update flow (7fcee42b)
*  add client side filter:chat.send, closes #10729 (cb084cbd)
*  fire hook to allow plugins to filter the pids returned in a user profile (17e44ff5)
*  closes #10719, don't trim children if category is marked section (be917e8d)
*  closes #10719, don't trim children if category is marked section (0bec52bc)

##### Bug Fixes

*  adapt to breaking change in commander (38bf30c8)
*  move panel-offset setting code back to theme header (d0255fc6)
*  #10808; tweak copy for gmail app passwords support (7082291b)
*  don't require password challenge if no password is set in user account (9d27e907)
*  do not throw if password passed into `isPasswordCorrect` is invalid, just return false (287f4c2c)
*  don't crash if req.body.username is not string (7e8ad785)
*  don't crash if target/user is undefined (55c5588a)
*  race condition causing undefined ajaxify.data (4586f68e)
*  #10809, test runner to only run tests for plugins included in `test_plugins` (1ca09b63)
*  #10805, hide unconfirmed emails from user data retrieval methods (cba9047f)
*  use different emoji on NodeBB Ready — again because procrastination (3e062a7f)
*  unnecessary escape (cd438b32)
*  remove socket.io cluster adapter (#10742) (456b8798)
*  #10783, do not purge files without a timestamp prefix (dc3a6a29)
* **deps:**
  *  bump persona v12.1.0 (1465598d)
  *  bump 2factor to v5.0.2 (bd18004d)
  *  update dependency sanitize-html to v2.7.1 (#10792) (f02492bd)
  *  update dependency html-to-text to v8.2.1 (f22790c0)
  *  update dependency webpack to v5.74.0 (e748e31f)
  *  update dependency autoprefixer to v10.4.8 (#10799) (4ca0d571)

##### Performance Improvements

*  make single db call (d73f0f9c)

##### Tests

*  additional tests for password challenge on email update (65c59cc1)
*  add dummy emailer hook to suppress sendmail error logging (8e1a4bb5)
*  fix one last failing test (68bcd7f4)
*  fix user email tests (06f089af)
*  fix tests so that when user.create is called, email is set prior to confirmation (f93a0b83)

#### v2.3.1 (2022-07-29)

##### Chores

* **deps:**
  *  bump sanitize-html from 2.7.0 to 2.7.1 in /install (7b606d2e)
  *  bump webpack from 5.73.0 to 5.74.0 in /install (a9900625)
* **i18n:**  fallback strings for new resources: nodebb.admin-settings-advanced, nodebb.admin-menu, nodebb.error (17120e03)
*  update changelog for v2.3.0 (a6f7fff0)

##### New Features

*  add emoji to startup logs, because procrastination. (5176fb15)

##### Bug Fixes

*  #10798, logic error in COEP header; helmet config (89173f17)
*  #10795, early return for selection tooltip based on calling user privilege (847d2b91)
* **deps:**  update persona to v12.0.14 (9f225e70)

#### v2.3.0 (2022-07-28)

##### Chores

* **deps:**
  *  update dependency lint-staged to v13 (07ce0c39)
  *  bump ace-builds from 1.7.1 to 1.8.1 in /install (f397d968)
  *  bump ioredis from 5.2.0 to 5.2.2 in /install (067a5110)
*  have renovate work off of `develop` branch instead (f334e398)
*  update changelog for v2.2.5 (6c3ebf3b)

##### New Features

*  add client side filter:chat.send, closes #10729 (b2da02d6)
*  UI changes for ACP > Manage > Categories (#10782) (820bc994)
*  show an informative message when no plugins are found after filtering (6840a742)
*  Allow defining active plugins in config (#10767) (23cb67a1)
*  allow plugins to toggle whether IPs are shown in the users CSV export (a6af47da)
*  fire hook to allow plugins to filter the pids returned in a user profile (c26be43a)
*  closes #10719, don't trim children if category is marked section (7e80cc10)

##### Bug Fixes

* **deps:**
  *  update dependency mongodb to v4.8.1 (8384b7cf)
  *  update dependency helmet to v5.1.1 (03a173bb)
*  bug where fallback to forum search was not working due to client-side error (25046642)
*  better looking placeholder text for ACP search (1b9c6819)
*  use `user.hidePrivateData();` more consistently across user retrieval endpoints (0529f2fb)
*  minor margin tweak for alert in acp header (4faf0cdf)
*  cannot turn off all networks (bbc7f2af)
*  cannot setting networks for sharing posts (2e088a8e)

##### Refactors

*  invert helmet configuration (dcacd815)

#### v2.2.5 (2022-07-21)

##### Chores

* **deps-dev:**
  *  bump eslint from 8.19.0 to 8.20.0 in /install (8d109fef)
  *  bump @commitlint/config-angular in /install (2a88a50f)
* **deps:**
  *  bump cron from 2.0.0 to 2.1.0 in /install (4c1bda32)
  *  bump jquery-ui from 1.13.1 to 1.13.2 in /install (abb19e98)
  *  bump nodebb-theme-persona in /install (9e52b8c6)
  *  bump ioredis from 5.1.0 to 5.2.0 in /install (8c20fdad)
*  update changelog for v2.2.4 (52f7ed64)

##### Bug Fixes

*  expire email validation tokens on password change (c93bd010)
*  remove extraneous console.log (0d58e8a6)
* **deps:**  update dependency mongodb to v4.8.0 (bff239da)

#### v2.2.4 (2022-07-12)

##### Chores

* **deps:**
  *  update docker/metadata-action action to v4 (42a45a71)
  *  bump ace-builds from 1.5.3 to 1.7.1 in /install (d568d2f5)
  *  bump winston from 3.8.0 to 3.8.1 in /install (26b73b39)
  *  bump ioredis from 5.0.6 to 5.1.0 in /install (0d55c42d)
  *  bump nodemailer from 6.7.5 to 6.7.7 in /install (bd37b286)
* **deps-dev:**
  *  bump @commitlint/cli from 17.0.2 to 17.0.3 in /install (9e44cdad)
  *  bump eslint from 8.18.0 to 8.19.0 in /install (7139ad5f)
*  update changelog for v2.2.3 (8719a93f)

##### Bug Fixes

* **deps:**  update dependency diff to v5.1.0 (452e5bf7)
*  #10733, extraneous apostrophes in plugin upgrader (3c41ae04)
*  get version from install/package.json instead (60114219)
*  #10739, always re-add theme to active plugins, on theme set (8d701ec3)

#### v2.2.3 (2022-07-05)

##### Chores

*  update changelog for v2.2.2 (f59ddc34)

##### Bug Fixes

*  move call to `ajaxify.parseData` out to root level (b778e38c)
*  move `ajaxify.parseData` back out to DOMContentLoaded (2582cb53)

##### Refactors

*  rewrite ajaxify.parseData in vanilla (165b804d)

#### v2.2.2 (2022-06-30)

##### Chores

* **deps-dev:**
  *  bump eslint from 8.17.0 to 8.18.0 in /install (bfd626b0)
  *  bump jsdom from 19.0.0 to 20.0.0 in /install (d037c2c9)
*  update changelog for v2.2.1 (667780cf)

##### Bug Fixes

*  improper handling of single vs. multiple inputs for hidePrivateData (f38b2a73)
*  observe user-specific and ACP-specific hiding rules for fullname (ecf0e8ce)

##### Refactors

*  allow user.hidePrivateData() to handle an array of `userData` (3f5ae893)

#### v2.2.1 (2022-06-24)

##### Chores

* **i18n:**
  *  fallback strings for new resources: nodebb.admin-settings-uploads (da481163)
  *  fallback strings for new resources: nodebb.admin-settings-advanced (34d75e96)
*  add in warning in language directories about not editing files directly (06074e8c)
*  update changelog for v2.2.0 (bb3766df)

##### Documentation Changes

*  remove the redundant security policy template (7f5b285e)

##### New Features

*  cross origin opener policy options (#10710) (88132358)

##### Bug Fixes

* **deps:**
  *  update dependency winston to v3.8.0 (#10725) (d4a5039e)
  *  update dependency sharp to v0.30.7 (#10724) (0a07c2c0)
*  handle ENOENT on file deletion, closes #10645 (43f9e6c8)

##### Tests

*  fix i18n tests (05c30677)

#### v2.2.0 (2022-06-15)

##### Chores

* **i18n:**
  *  fallback strings for new resources: nodebb.admin-settings-uploads (f5afb5c3)
  *  fallback strings for new resources: nodebb.admin-manage-users (b1dc0531)
  *  fallback strings for new resources: nodebb.topic (d7d32a8a)
*  remove unnecessary `affected` set from deprecated plugin hook (bef236f3)
*  bump persona, #10699 (c7fa73b1)
*  bump vanilla (d90fc18b)
*  bump persona, closes #10566 (5bc972df)
*  update changelog for v2.1.1 (ca038b84)
* **deps:**
  *  bump less from 4.1.2 to 4.1.3 in /install (#10685) (78322636)
  *  bump nodebb-plugin-2factor from 5.0.0 to 5.0.1 in /install (#10686) (701d8d76)
  *  bump spdx-license-list from 6.5.0 to 6.6.0 in /install (c82d34c8)

##### New Features

*  new cronjob and ACP option to delete orphans after configurable number of days, closes #10659 (88aee439)
*  allowed plugins to modify email verification details prior to db saving or email send/plugin fire (b9d4724e)
*  pass absolute url to post into post tools response, #10566 (ece733ed)

##### Bug Fixes

*  no need to pass in empty Set in deprecated hooks (3a015eb8)
*  #10696, fix alert for password reset email (2da188fe)
*  #10692 (b6f8e2fd)
*  #10690, all uploads in `uploads/files` showing orphaned (a04da673)
*  bug where post associations are not shown when the directory is `files` (7f870beb)

##### Refactors

*  move orphan cleaning logic to its own method, added tests for getOrphans and cleanOrphans (22368b99)

##### Tests

*  add more asserts to failing test (ea1ed667)

#### v2.1.1 (2022-06-08)

##### Chores

* **deps:**
  *  bump nodebb-theme-persona from 12.0.8 to 12.0.9 in /install (bb39dfba)
  *  bump mongodb from 4.6.0 to 4.7.0 in /install (a8987856)
  *  bump async from 3.2.3 to 3.2.4 in /install (ce38f711)
  *  bump xregexp from 5.1.0 to 5.1.1 in /install (eb9a46f8)
  *  bump webpack from 5.72.1 to 5.73.0 in /install (#10677) (6239a1ff)
  *  bump nodebb-theme-slick from 2.0.1 to 2.0.2 in /install (557648e6)
* **deps-dev:**
  *  bump @commitlint/config-angular in /install (e5e788d2)
  *  bump eslint from 8.16.0 to 8.17.0 in /install (52c86dba)
*  update changelog for v2.1.0 (7121949d)

##### Documentation Changes

*  fix changelog to more accurately reflect new changes (a9744416)

##### Bug Fixes

*  #10675, don't ajaxify to /assets/ urls (48564cfa)

##### Other Changes

* //github.com/pichalite/nodebb-theme-slick/issues/60 (6a0339de)

#### v2.1.0 (2022-06-02)

##### Chores

*  update changelog for v2.1.0 (7121949d)
*  bump persona (91f32487)
*  update changelog for v2.0.1 (abd8e216)
*  remove optional `middleware` parameter from setupPageRoute and setupAdminPageRoute calls (54ff768f)
*  add note re: sort module (5aca106b)
*  up emoji (265a0139)
*  update changelog for v2.0.0 (60fc3f5d)
* **deps:**
  *  bump nodebb-plugin-2factor from 4.0.1 to 5.0.0 in /install (6e95e5c5)
  *  update dependency lint-staged to v12.5.0 (01f607a5)
  *  update dependency lint-staged to v12.4.3 (8885d228)
  *  update dependency eslint to v8.16.0 (#10654) (f6728404)
  *  bump sharp from 0.30.4 to 0.30.5 in /install (#10651) (d9f2096d)
  *  bump postcss from 8.4.13 to 8.4.14 in /install (#10652) (0772ec07)
  *  bump socket.io-client from 4.5.0 to 4.5.1 in /install (#10653) (a13a523b)
  *  update dependency lint-staged to v12.4.2 (#10647) (18e76c21)
  *  bump nodebb-plugin-mentions in /install (#10648) (e894147c)
  *  bump helmet from 5.0.2 to 5.1.0 in /install (#10641) (5faaf6a1)
  *  bump socket.io from 4.5.0 to 4.5.1 in /install (#10639) (9d9b3f4e)
  *  bump ioredis from 5.0.4 to 5.0.5 in /install (#10637) (f9c9ac9c)
  *  bump ace-builds from 1.4.14 to 1.5.1 in /install (#10636) (acf188b0)
  *  bump yargs from 17.4.1 to 17.5.1 in /install (#10624) (c7aefe9c)
  *  update dependency @commitlint/cli to v16.3.0 (1dc96717)
  *  bump mongodb from 4.5.0 to 4.6.0 in /install (#10603) (aee74bd6)
  *  bump express-session from 1.17.2 to 1.17.3 in /install (#10604) (b1967681)
  *  bump webpack from 5.72.0 to 5.72.1 in /install (#10600) (06edb6e6)
* **deps-dev:**
  *  bump @commitlint/cli from 17.0.1 to 17.0.2 in /install (#10672) (5f6e9f67)
  *  bump @commitlint/cli from 16.3.0 to 17.0.1 in /install (#10644) (fe873182)
  *  bump @commitlint/config-angular in /install (#10614) (9c4ef133)
  *  bump husky from 8.0.0 to 8.0.1 in /install (#10595) (54876583)
  *  bump grunt from 1.5.2 to 1.5.3 in /install (fcb6c191)
  *  bump husky from 7.0.4 to 8.0.0 in /install (#10591) (03453a62)
  *  bump eslint from 8.14.0 to 8.15.0 in /install (#10592) (0d75c6cb)
* **i18n:**
  *  fallback strings for new resources: nodebb.user (2bace634)
  *  fallback strings for new resources: nodebb.admin-manage-admins-mods (192aa2d3)

##### New Features

*  add clipboard to runtime modules (39d61061)
*  add mute history, closes #10596 (c926358d)
*  allow unban/unmute on flag details page. closes  #10593 (9acdc680)
*  paginaton for admins-mods, closes #10610 (b860c260)
*  fix typo, show route in deprecation notice for third-param removal in `setupPageRoute` (14110596)
*  add button to see category children, closes #10606 (a5831412)
*  closes #10601, ability to prevent alerts on topic list (dc320c89)
*  add post to hook params (f07b4484)
*  add sorted-list.parse (e904f438)
*  add new hook that fires when sorted-set list modal is shown (8faa6f23)
*  #10585, ability to mute from flag details (7867ccd7)
*  send back missing parameters as array of missing properties, in API response (0c19b1e5)
*  add hook for user invite (323dbc97)

##### Bug Fixes

* **deps:**
  *  update dependency ace-builds to v1.5.3 (#10667) (e7fd1861)
  *  update dependency ioredis to v5.0.6 (#10668) (5bafab79)
  *  update dependency nodebb-theme-persona to v12.0.8 (#10669) (e47a63f0)
  *  update dependency nodebb-plugin-2factor to v4.0.1 (#10665) (356f9a18)
  *  update dependency ace-builds to v1.5.2 (#10664) (7b5f53fc)
  *  update dependency nodebb-theme-persona to v12.0.7 (#10666) (a9a26836)
  *  update dependency sharp to v0.30.6 (#10662) (23232508)
  *  update dependency nodebb-theme-persona to v12.0.5 (#10649) (1fd68281)
  *  update dependency cron to v2 (#10568) (ad370202)
  *  update dependency clipboard to v2.0.11 (#10574) (db67a50a)
  *  update dependency nodebb-theme-slick to v2.0.1 (#10578) (d98f4ea9)
  *  update dependency nodebb-theme-persona to v12.0.2 (#10577) (930aefcf)
  *  update dependency nodemailer to v6.7.5 (#10573) (6eef08f9)
*  buildBreadcrumbs naively prepending relative path even if absolute paths are passed in (a3564260)
*  more generic copy for notif/chat button labels (f6a7582c)
*  #10642, fix order of dom ready events (2bfccac7)
*  get rid of math.random in utils.generateUUID (e802fab8)
*  #10528, gray out disabled nav items (7e4d2852)
*  encode privilege name for API call (92abb352)
*  #10631, fix user digest setting display acp (0084b563)
*  translate api error messages to user lang, closes #10623, (b17a81bf)
*  alert template error. closes #10620 (24a640d9)
*  closes #10621, convert \r\n to \n so it isn't counted as 2 characters (3a009f96)
*  remove ev, hooks don't pass event, closes #10611 (082a9e1d)
*  'unread' postIndex regression closes #10607 (0e60a704)
*  clear dragging on mouseup as well (70ad4a52)
*  #10588 exit code 1 on failed plugin activation (e2ff1e39)
*  #10584, dont show backlinks if you dont have read privilege (5e7d366f)
*  #10586, fix webinstaller folders (1928a186)
*  closes #10583, replace removed socket method with api method (5e82cf23)
*  add missing fs-extra, #10580 (e7077393)

##### Other Changes

*  unnecessary escape (60eeae95)
*  fix semicolon (3a77e714)

##### Refactors

*  return module if it doesn't have default export (12b58fcf)
*  deprecate middleware param (#10513) (84f27263)

##### Tests

*  fix tests again (191fb9f4)
*  fix UUID test (6677efd7)

#### v2.0.1 (2022-05-28)

##### Bug Fixes

*  get rid of math.random in utils.generateUUID (a4ab49c2)

#### v2.0.0 (2022-05-04)

##### Chores

*  update changelog for v1.19.7 (a764df52)
* **deps:**
  *  update dependency mocha to v10 (a7986773)
  *  bump nodebb-plugin-dbsearch from 5.1.3 to 5.1.4 in /install (#10545) (a2e263a1)
  *  update dependency smtp-server to v3.11.0 (62f1c78a)
* **i18n:**
  *  fallback strings for new resources: nodebb.post-queue (d617c665)
  *  fallback strings for new resources: nodebb.post-queue (3492dd11)
  *  fallback strings for new resources: nodebb.error, nodebb.flags (72d47a0b)

##### New Features

*  show number of selected posts in reject confirm (012860a4)
*  post queue bulk actions closes #10520, fix #10555, (23175110)
*  output canonical URL as last line on NodeBB boot (e4a9c078)

##### Bug Fixes

* **deps:**
  *  update dependency @socket.io/redis-adapter to v7.2.0 (#10571) (c3c77915)
  *  update dependency autoprefixer to v10.4.7 (#10563) (68168a7d)
  *  update dependency nodebb-theme-persona to v12.0.1 (#10561) (1d446e14)
  *  update dependency nodebb-plugin-mentions to v3.0.10 (#10560) (eb3c398e)
  *  update dependency nodebb-plugin-dbsearch to v5.1.5 (#10559) (c3ff28ff)
  *  update dependency nodebb-plugin-mentions to v3.0.9 (#10554) (1acbe4c1)
  *  update dependency postcss to v8.4.13 (#10553) (6217db00)
  *  update dependency express to v4.18.1 (#10550) (b0dc5615)
  *  pin dependency webpack to 5.72.0 (#10549) (672ab25a)
  *  update dependency cron to v1.8.3 (#10543) (d6843294)
  *  update dependency bootbox to v5.5.3 (#10531) (8d47f352)
  *  update dependency nodemailer to v6.7.4 (#10540) (afefee08)
*  #10569, fix category move event text (ea01ba01)

##### Refactors

*  not used anymore (d2e6f317)

#### v1.19.7 (2022-04-28)

##### Breaking Changes

*  #10443, regression where sorted-list items did not render into the DOM in the predicted order [breaking] (46fbe156)

##### Chores

*  update changelog for v1.19.6 (acca7811)
* **deps:**
  *  update commitlint monorepo to v16.2.4 (0d9179f7)
  *  update dependency lint-staged to v12.4.1 (#10527) (804542e4)
  *  bump socket.io from 4.4.1 to 4.5.0 in /install (#10523) (0c2d015c)
  *  update dependency eslint to v8.14.0 (#10514) (40b7ff4b)
  *  update dependency lint-staged to v12.4.0 (fff818c6)
  *  update dependency lint-staged to v12.3.8 (7c1d98c7)
* **i18n:**  fallback strings for new resources: nodebb.admin-settings-reputation, nodebb.error (01e65395)

##### New Features

*  make it simpler to use redis sentinels (82389469)
*  closes #10501, minimum reputation to chat (b28f9f77)

##### Bug Fixes

*  typo in hook name (21dbd476)
*  upload test for latest sharp (424db9ff)
*  #10502, allow unblocking admin/mod (b9f91643)
* **deps:**
  *  update dependency express to v4.18.0 (#10526) (5ae690a6)
  *  update socket.io packages to v4.5.0 (#10522) (d86c447a)
  *  update dependency autoprefixer to v10.4.5 (#10521) (5ce4c874)
  *  update dependency nodebb-plugin-2factor to v3.0.7 (#10510) (b81a0cfe)
  *  update dependency nodebb-widget-essentials to v5.0.11 (#10517) (a767d623)
  *  update dependency sharp to v0.30.4 (#10504) (a36911fc)
  *  update dependency prompt to v1.3.0 (#10487) (07678fb5)
  *  update dependency nconf to v0.12.0 (#10496) (fe492b11)
  *  update dependency archiver to v5.3.1 (#10500) (6c727859)

##### Refactors

*  closes #10509 (7f241dbb)
*  show invalid uri (ac125538)
*  skip content length check if submitting from post-queue (a8e642ad)

##### Tests

*  remove node18 until nodemailer is fixed (50658a82)
*  remove node 12, add 18 (976914e7)

#### v1.19.6 (2022-04-13)

##### Chores

*  update changelog for v1.19.5 (05032ca2)
* **deps:**
  *  bump semver from 7.3.6 to 7.3.7 in /install (#10493) (65cec8d0)
  *  update dependency grunt to v1.5.2 (9f496659)
  *  update dependency grunt to v1.5.1 (0a8bf44e)
  *  update dependency grunt to v1.5.0 (e82d8bb6)
  *  update dependency eslint to v8.13.0 (bc3aabb4)
  *  update dependency eslint-plugin-import to v2.26.0 (a2ebf53b)
  *  bump nodebb-theme-persona from 11.4.3 to 11.4.4 in /install (#10437) (5b1789c1)
  *  bump nodebb-plugin-composer-default in /install (#10438) (c8c42933)
  *  update dependency eslint to v8.12.0 (a6590e20)
  *  update dependency lint-staged to v12.3.7 (#10407) (5f36ad39)
* **i18n:**  fallback strings for new resources: nodebb.post-queue (a06d1246)

##### New Features

*  #10460, add cutoff to suggested topics (799e94e0)
*  add response:helpers.notAllowed (e8058ca3)
*  add filter:image.stripEXIF (b8765df5)
*  add confirm to reject, closes #10427 (538ad9e1)
*  allow client-side hook registration chaining (b88bb3cf)
*  delete flagId field from post/user on flag purge (31251282)
*  add flags.purge (3b529b84)
*  new admin events, closes #10405 (421ba6e1)
*  add Albanian localisation :tada: (309968bf)

##### Bug Fixes

*  dont add caller to arrays (5316029f)
*  #10491, don't leak deleted message in cleanedContent (c52401da)
*  #10473, trim trailing slashes on config url (9f91db16)
*  closes #10436, fix DST issue on acp dashboard (39877763)
*  delete history as well (002a241c)
*  handle purge posts as well (93b60532)
*  byCid removal, targetCid not stored in flagObj (03fdb5be)
*  upgrade script (55be4202)
*  column counts for other privileges (2b9b2b4a)
* **deps:**
  *  update dependency nodebb-plugin-mentions to v3.0.8 (#10490) (7c733e9c)
  *  update dependency winston to v3.7.2 (#10454) (dc03a2f9)
  *  update dependency nconf to v0.11.4 (#10481) (f253bbdd)
  *  update dependency yargs to v17.4.1 (#10480) (bbf2b73e)
  *  update dependency ioredis to v5.0.4 (#10479) (88200ec1)
  *  update dependency html-to-text to v8.2.0 (#10471) (91026e5f)
  *  update dependency semver to v7.3.6 (#10466) (c50de911)
  *  update dependency html-to-text to v8.1.1 (#10470) (b3ec8059)
  *  update dependency nodebb-widget-essentials to v5.0.10 (#10461) (b6517cfd)
  *  update dependency body-parser to v1.20.0 (#10450) (26511185)
  *  update dependency spdx-license-list to v6.5.0 (#10452) (5e37f34e)
  *  update dependency graceful-fs to v4.2.10 (#10457) (947fa193)
  *  update dependency mongodb to v4.5.0 (#10458) (30f728ca)
  *  update dependency ioredis to v5.0.3 (#10446) (0d744d30)
  *  update dependency ioredis to v5 (#10434) (060ad1b0)
  *  update dependency nodebb-plugin-2factor to v3.0.6 (#10435) (0ac426e0)
  *  update dependency nodebb-plugin-composer-default to v7.0.21 (#10429) (898e0e89)
  *  update dependency nodebb-plugin-spam-be-gone to v0.8.1 (#10425) (47399bfe)
  *  update dependency sortablejs to v1.15.0 (#10418) (12cd1df2)
  *  update dependency nodemailer to v6.7.3 (#10421) (7e542495)
  *  update dependency yargs to v17.4.0 (#10416) (eaa05517)
  *  update dependency nodebb-theme-persona to v11.4.3 (#10414) (720a9dba)
  *  update dependency connect-redis to v6.1.3 (#10390) (06594131)
* **security:**
  *  explicitly declare cache-control header instead of using middleware (38ca73c4)
  *  cache-control on all pages using setupPageRoute or setupApiRoute, and 404 controllers. (1f6f389f)
  *  explicitly set cache-control 'private' on any page where a header is built (e39cdd49)

##### Performance Improvements

*  WIP #10449, allow array of pids for posts.purge (#10465) (76797371)
*  #10410, faster upgrade script (dab22d5f)

##### Refactors

*  replace deprecated String.prototype.substr() (#10432) (200f0b2e)
*  remove some verbose logging (9abe22a0)
*  :trollface: (29b86b32)
*  shorter generateTopicClass (f76c0e89)

#### v1.19.5 (2022-03-16)

##### Chores

*  update changelog for v1.19.4 (0e6e49b2)
* **deps:**
  *  bump less from 3.13.1 to 4.1.2 in /install (#9856) (d33485f6)
  *  bump autoprefixer from 10.4.2 to 10.4.4 in /install (#10403) (90094935)
  *  update dependency lint-staged to v12.3.6 (0a4522a2)
  *  update commitlint monorepo to v16.2.3 (0a97015d)
  *  bump nodebb-plugin-spam-be-gone in /install (#10387) (445e3d70)
  *  bump connect-redis from 6.1.1 to 6.1.2 in /install (#10391) (145621f7)
  *  update dependency eslint to v8.11.0 (feaf3068)
  *  update dependency mocha to v9.2.2 (#10383) (4ffbd78d)
* **i18n:**
  *  fallback strings for new resources: nodebb.admin-manage-users (2f09c22c)
  *  fallback strings for new resources: nodebb.admin-manage-privileges, nodebb.admin-manage-users, nodebb.error, nodebb.user (15508bac)
  *  fallback strings for new resources: nodebb.admin-settings-reputation, nodebb.error (5274a6aa)

##### New Features

*  collect hook logs in order to reduce console noise, flush on ajaxify loadScript completion (935704a8)
*  add support for PATCH method in api module (4b79dfd2)
*  on online users page override timeago cutoff to 24 hours (7c946570)
*  ability to mute users (be6bbabd)
*  min:rep:upvote, and other limits similar to downvotes (3414a23b)
*  post-queue hooks, closes #10381 (2056ac04)

##### Bug Fixes

*  topic events if there is a blocked user in topic (3935a86b)
*  topic events disappearing if there are queued posts (2808c952)
*  #10393, move 'Create User' control to overflow menu (cd687cff)
*  don't append to history on refresh or ajaxify to same url (c83987bd)
*  global privs (7d063d73)
*  #10384 -- mixed up sizes for fallback touch icons (cb113208)
*  #10377, remove logging of env vars (997ab7d4)
* **deps:**
  *  update dependency postcss to v8.4.12 (#10396) (bdbc168d)
  *  update dependency sharp to v0.30.3 (#10389) (b4213859)

##### Refactors

*  closes #10301 (c8e986d6)

##### Tests

*  skip i18n tests if the github event is a pull request (e578c605)
*  fix middleware test (24c1f879)
*  fix category tests (6344c3b6)
*  fix one more test (a5511425)

#### v1.19.4 (2022-03-09)

##### Chores

*  delay `filter:email.send` removal to v2.0.0 (83fd4311)
*  up persona (c23b2089)
*  update changelog for v1.19.3 (0b48ec54)
* **deps:**
  *  bump postcss from 8.4.7 to 8.4.8 in /install (#10372) (d7a4ae1f)
  *  update dependency lint-staged to v12.3.5 (517ae926)
  *  bump nodebb-plugin-spam-be-gone in /install (81e7ca20)
  *  update dependency eslint to v8.10.0 (e83c8be2)
  *  bump postcss from 8.4.6 to 8.4.7 in /install (52ee5ce8)
  *  bump json2csv from 5.0.6 to 5.0.7 in /install (e44cbb24)
  *  update dependency smtp-server to v3.10.0 (67e4df78)
  *  update dependency mocha to v9.2.1 (00eebf10)
  *  bump prompt from 1.2.1 to 1.2.2 in /install (21913b5b)
  *  bump express from 4.17.2 to 4.17.3 in /install (5321ba4d)
* **i18n:**
  *  fallback strings for new resources: nodebb.admin-settings-reputation, nodebb.flags (a5fe8350)
  *  fallback strings for new resources: nodebb.topic (dc0f9a73)

##### New Features

*  add hook filter:posts.getUserInfoForPosts (df46ab48)
*  add translateKeys (e841d59a)
*  post auto flagging on downvotes #10029 (#10367) (62187caa)
*  closes #10324, show recently online users as well (eac9cd03)
*  resolve paths for staticDirs as well (e0b1c374)
*  ability to go through your posts in a topic (b517b376)
* **sorted-list:**  add new client-side hook `filter:settings.sorted-list.loadItem` (92d613e4)

##### Bug Fixes

*  apply some DRY (a3b4c668)
*  optional params (e9a86cb9)
*  #10374, use quick search in setting (70e613f8)
*  #10366, remove dupe /files (371b4658)
*  always show self on /users?online (56345777)
*  db call (21cd1e61)
*  lastonline timestamps and display for guests (cc665fd6)
*  #10357 (7ee4e4e0)
*  #10358, bad uploads path (5479f364)
*  #10360, only take top level posts (37ef8366)
*  #10354, flag actions regression (fec907d9)
*  dont overwrite asset_base_url if its set (0e12f82d)
*  allow calls to api module without a defined payload (914733e4)
*  #10334, use the correct env vars for web install (6b22d0e1)
*  persona test fail (10a5901e)
*  #10316, fix quoting regression (0b813d60)
*  #10322 (5694e62e)
*  #10329, select elements in sorted-list not showing proper values (1fa41342)
*  allow translation keys in `label` attributes (52836f3a)
*  don't load setup.json into nconf if setup.json doesn't exist (6e156daa)
*  regression caused by 94b79ce4024f72a3eee2cfa06b05d8f66898149f (4164898d)
* **deps:**
  *  update dependency nodebb-plugin-markdown to v9.0.10 (bcb68ee9)
  *  update dependency mongodb to v4.4.1 (#10364) (4b730df9)
  *  update dependency nodebb-theme-persona to v11.4.2 (#10361) (4d590f65)
  *  update dependency body-parser to v1.19.2 (#10298) (c75714b7)
  *  update dependency sharp to v0.30.2 (#10359) (1a6c2c55)
  *  update dependency nodebb-plugin-mentions to v3.0.7 (#10355) (3e5a0f0d)
  *  update dependency nodebb-plugin-2factor to v3.0.5 (f30c65a4)
  *  update dependency nodebb-theme-persona to v11.4.1 (#10337) (b84e61d5)
  *  update dependency nodebb-theme-persona to v11.4.0 (#10325) (244d8801)
  *  update dependency nodebb-plugin-mentions to v3.0.6 (#10328) (31cbff19)
  *  update dependency nodebb-plugin-dbsearch to v5.1.3 (#10330) (1c1062e1)
  *  update dependency nodebb-plugin-markdown to v9.0.8 (#10327) (c17b9bd4)
  *  update dependency mongodb to v4.4.0 (#10319) (afd2993d)
  *  update dependency nodebb-plugin-emoji to v3.5.17 (#10314) (04900291)
  *  update dependency nodebb-plugin-dbsearch to v5.1.2 (#10313) (0e30362b)
  *  update dependency nodebb-widget-essentials to v5.0.9 (#10307) (5666c103)
  *  update dependency nodebb-widget-essentials to v5.0.8 (#10306) (636f1baf)
* **sorted-list:**
  *  call loadItem hook on add/edit items as well as on item retrieval, refactor edit to call parse() (1c8d1d23)
  *  only call `.stripHTMLTags()` on string values (fb4f89f3)

##### Refactors

*  show a louder deprecation notice, alert once for each hook, not per plugin per hook (93b80f17)
*  move header unread code to separate module (40230725)
*  remove code that doesn't do anything (4a1e761a)
*  wrap around if at end (3acd2ac8)
*  change lang string (94961196)

##### Tests

*  possible fix random psql test failure (50ed3a32)
*  log configJSON (9db90a30)
*  check contents of config.json in tests (32f69301)

#### v1.19.3 (2022-02-16)

##### Chores

* **i18n:**
  *  fallback strings for new resources: nodebb.admin-settings-uploads (4043f179)
  *  fallback strings for new resources: nodebb.user (775d9077)
* **deps:**
  *  update dependency lint-staged to v12.3.4 (9577ef8d)
  *  update commitlint monorepo to v16.2.1 (2290cee5)
  *  update dependency eslint to v8.9.0 (763cd193)
*  remove punycode dep (e9cb1452)
*  update changelog for v1.19.2 (f012984d)

##### New Features

*  delete diffs on post purge, closes #10291 (e9e48a75)
*  closes #10296 (58b5781c)
*  deleting a user upload dissociates from posts, and vice versa (d5ed8736)
*  #10276, dont change/revert theme if its current (398d25c2)

##### Bug Fixes

*  #10302, fix regression (503e27f7)
*  one last try (9205169f)
*  doggy.gif (2f64d633)
*  one more fix (cfdfbf32)
*  dupe key errors (770fcd9e)
*  #10292, delete missing fields (dbf7a458)
*  local deleteUploads() method in `src/user/delete.js` to call `User.deleteUpload()` (b9edee14)
*  #10144, automatically delete uploads from disk on post purge, ACP option to keep uploads on disk if desired (84dfda59)
*  four-space indents in package.json (9aa3e442)
*  #10289, remove lodash dependency in src/cli/package-install.js (81fa2e22)
*  non-functional upgrade script (1c7fb8fe)
*  language keys (350052ec)
*  #10273, properly calculate item count for best/controversial (d70ce3a9)
* **deps:**
  *  update dependency nodebb-plugin-emoji to v3.5.16 (#10297) (b47ca86d)
  *  update dependency nodebb-plugin-markdown to v9.0.7 (#10293) (5b0d4a8e)
  *  update dependency nodebb-plugin-emoji to v3.5.14 (#10295) (7af057fa)
  *  update dependency nodebb-plugin-mentions to v3.0.5 (#10294) (55a98183)
  *  update dependency winston to v3.6.0 (#10285) (22da7a10)
  *  update dependency nodebb-plugin-markdown to v9.0.6 (3225a1af)
  *  update dependency nodebb-plugin-spam-be-gone to v0.7.13 (#10280) (3dc108d3)
  *  update dependency nodebb-plugin-emoji to v3.5.12 (#10279) (2c0b6322)
  *  update dependency nodebb-plugin-emoji to v3.5.11 (#10274) (766ef4e5)

##### Refactors

*  lazy load slugify (946d351f)
*  .deleteUpload() to accept array of paths (7ef9c7d2)
*  fix user uploads paths, and associate uid with user uploads (ea36016d)
*  change the post uploads' hash seeds to have the `files/` prefix (6489e9fd)
*  abstract some common code out to local utility methods (aad0c5fd)
*  move post upload tests to its own file (d92da828)
*  remove extra zset remove, closes #10277 (489c0d30)

##### Code Style Changes

*  linting errors (5d7e1ebc)

##### Tests

*  fix topic thumb tests and topic thumbs to work properly with post upload assoc. (fb78570c)
*  user uploads.js tests (8c2752ba)
*  testing user upload methods, already fixed one bug (11275d68)

#### v1.19.2 (2022-02-09)

##### Chores

*  up persona (14ecafb6)
*  up markdown (8a4b7dc4)
*  add missing quote (b98758d3)
*  use source and current local vars, + docs (9e4147f0)
*  up persona (1eaae1d0)
*  up emoji (106ef7cf)
*  persona (3b4cf971)
*  persona (78db61cf)
*  up deps (c7a56439)
*  add punycode dependency (452f29c0)
*  up persona (d50d4a9e)
*  up persona (458606bc)
*  up persona (cfe53305)
*  up persona (f29bed27)
*  up packages (b4a4e60e)
*  up persona (3e30b6cd)
*  update changelog for v1.19.1 (55df683a)
* **deps:**
  *  bump ioredis from 4.28.4 to 4.28.5 in /install (#10254) (b496ad44)
  *  bump nodebb-widget-essentials in /install (#10219) (b71025ce)
  *  update dependency lint-staged to v12.3.3 (6ba25557)
  *  update dependency eslint to v8.8.0 (153693e0)
  *  bump nodebb-theme-persona in /install (#10199) (2db54e67)
  *  update dependency lint-staged to v12.3.2 (814cb66b)
  *  update dependency mocha to v9.2.0 (05e2b354)
  *  bump helmet from 5.0.1 to 5.0.2 in /install (1f037bf6)
  *  update dependency lint-staged to v12.3.1 (ac244af3)
  *  update dependency lint-staged to v12.3.0 (7060837b)
  *  bump helmet from 4.6.0 to 5.0.1 in /install (5d3900dc)
* **i18n:**
  *  fallback strings for new resources: nodebb.modules (a71b8e59)
  *  fallback strings for new resources: nodebb.global, nodebb.pages (aa812f03)
  *  fallback strings for new resources: nodebb.users (70eeb204)
  *  fallback strings for new resources: nodebb.admin-settings-email (e9588ca7)
  *  fallback strings for new resources: nodebb.admin-settings-advanced (2ec4e31f)

##### Documentation Changes

*  openapi spec for new route (9b912db7)
*  some tweaks to cli help (c869d7db)

##### New Features

*  handle array of keys in psql exists for zsets (5143ca33)
*  upgrade script to clean up leftover :thumb zsets (0ac28435)
*  more tests for ensuring downvoted posts are added to the :votes zset (1b8eeaf8)
*  upgrade script to store downvotes posts in the user :votes sorted set (cf88483f)
*  new accounts route to show most downvoted ('controversial') posts (5afd5de0)
*  v3 user email tests (aa8914a1)
*  allow gif profile images, sharp 0.30.0 supports gifs (7f1c4477)
*  detect alternative package managers based on lockfile (8ba9e67c)
*  new language key for user search in chat (766ad6b7)
*  remove colors in favour of chalk (#10142) (cf8f62ae)
*  add upload helper module for drag&drop, paste, closes #6388 (cf5c0968)
*  no more sending emails to banned users, + feature flag (ea27eaf1)
*  push the theme name into body class (e1e1d522)
*  add ACP toggles for COEP and CORP headers (d91aeea3)

##### Bug Fixes

* **deps:**
  *  update dependency sharp to v0.30.1 (#10270) (8e52abe8)
  *  update dependency nodebb-widget-essentials to v5.0.7 (#10269) (6c0f7034)
  *  update dependency nodebb-theme-persona to v11.3.37 (#10265) (78d48c37)
  *  update dependency ioredis to v4.28.5 (#10252) (721a70c0)
  *  update dependency connect-redis to v6.1.1 (#10260) (a10e4940)
  *  update dependency nodebb-theme-persona to v11.3.36 (#10253) (0e2a4a2d)
  *  update dependency nodebb-theme-persona to v11.3.35 (#10251) (6465e012)
  *  update dependency pg-cursor to v2.7.3 (#10244) (e6185883)
  *  update dependency nodebb-theme-persona to v11.3.33 (#10248) (32477676)
  *  update dependency nodebb-theme-vanilla to v12.1.17 (#10249) (8f5b5ef1)
  *  update dependency nodebb-plugin-emoji to v3.5.9 (#10250) (1eb0939e)
  *  update dependency sanitize-html to v2.7.0 (#10246) (845717b8)
  *  update dependency pg to v8.7.3 (#10243) (531a3b1e)
  *  update dependency connect-redis to v6.1.0 (#10245) (c343b631)
  *  update dependency nodebb-theme-persona to v11.3.31 (#10241) (f1bed441)
  *  update dependency nodebb-plugin-composer-default to v7.0.20 (#10231) (a4702959)
  *  update dependency nodebb-theme-persona to v11.3.30 (#10232) (916a0db3)
  *  update dependency nodebb-plugin-emoji to v3.5.8 (#10239) (ebf4e12b)
  *  update dependency sharp to v0.30.0 (#10221) (2924cd3b)
  *  update dependency ioredis to v4.28.4 (#10224) (cda07cb7)
  *  update dependency clipboard to v2.0.10 (2c605d1c)
  *  update dependency sitemap to v7.1.1 (1bf938da)
  *  update dependency winston to v3.5.1 (b0dd68bb)
  *  pin dependency punycode to 2.1.1 (e7ba24c5)
  *  update dependency postcss to v8.4.6 (322f1033)
  *  update dependency nodebb-plugin-markdown to v9 (7d5080cd)
  *  update dependency ace-builds to v1.4.14 (#10200) (c50f6512)
  *  update dependency winston to v3.5.0 (#10202) (a7f142be)
  *  update dependency clipboard to v2.0.9 (#10203) (c6164e48)
*  remove extraneous devDependencies on package merge (a2c7d69e)
*  #10257, topic thumbs not deleting on topic deletion (0f788b8e)
*  #10256, allow quote tooltip on mobile (fb3f4f9a)
*  #10255, create verified/unverified groups on install (08f2a050)
*  controversial posts/bests posts not showing anything (079c487d)
*  regression in package.json merging logic that caused extraneous packages to not be removed (d34471f6)
*  #10229, package merging should deep merge nested objects (689c125c)
*  use fs.promises (a0a38706)
*  bug where .reduce() exploded due to no initial value, if input value was an empty array (5cff6e3f)
*  https://github.com/NodeBB/NodeBB/issues/10242 (dcb201df)
*  missing early return (ad635175)
*  handle case where email is explicitly passed into user.create, and thus is set in user hash, but confirmation request may have expired (936562c3)
*  #10236, don't check email:uid, instead verify an email confirmation is active (0322e984)
*  don't crash if requestedFields is undefined (98839108)
*  a missed invocation of colors (c3d926ff)
*  proactively guard against homograph characters in website values (fa7dcdb9)
*  #10208, don't use leading slash in directory names (1d01741a)
*  don't crash if quick search doesn't return posts (93d18383)
*  properly unregister hooks in emailer tests (fc2c755c)
*  email ban tests (dee9cca3)
*  update usage of emailer.send to not catch (as errors are no longer thrown), email error throttler (d4e5259f)
*  derp (b3f7b742)
*  bug where page wouldn't complete loading if data.scripts was emptied (578145ac)
*  use escaped group names in invite modal (2a89ad82)
*  https://github.com/julianlam/nodebb-plugin-mentions/issues/170 (dc6e629d)
*  #10197, fix relative path urls for dashboard pages (92a249c9)
*  actually, CORP is ok (df8c8ad8)
*  update defaults for corp and coep to be more permissive, for now, to be reverted for v1.20.0 (4467299e)
*  if no group label is selected, select no group title option (94da5026)

##### Other Changes

*  remove unused require (6be330f2)

##### Performance Improvements

*  increase batch size (b548083b)

##### Refactors

*  update chat plcaeholder message (fbd9ba79)
*  updated package-install.js exports style, new exported method 'getPackageManager' for use in cases where nconf is unreliable, fix bug where nconf was not correctly set up in cli tools, proper installation of dev dependencies based on global env value (9a169085)
*  emailer.send and emailer.sendToEmail returns Boolean based on message being successfully sent (f0e32ff1)
*  sorted-list .get() to be async fn (89b559a2)

##### Tests

*  fix occasional test failure (2dbdd181)
*  add test to verify that a sorted set is automatically deleted if its last element is removed (#10261) (60680876)
*  stricter isValidationPending check (d1b1f50b)
*  fix derp (680e36da)
*  up acp plugin page timeout (a214f9a6)

#### v1.19.1 (2022-01-21)

##### Chores

* **deps:**
  *  bump compare-versions from 4.1.2 to 4.1.3 in /install (#10154) (4a5182e4)
  *  update dependency lint-staged to v12.2.2 (f090de36)
  *  update dependency @commitlint/cli to v16.1.0 (44d81a95)
  *  update dependency lint-staged to v12.2.1 (857ac480)
  *  update dependency @commitlint/cli to v16.0.3 (9c63d076)
  *  update dependency lint-staged to v12.2.0 (1a0c117d)
  *  update dependency eslint to v8.7.0 (8abaf3f6)
  *  update dependency mocha to v9.1.4 (f5ad173b)
*  up persona (89871d71)
*  add test.sh to gitignore (d7796f0b)
*  delete test script (250274c7)
*  remove unused lang key #10180 (2fe91e36)
*  update changelog for v1.19.0 (c8f1bc53)
* **i18n:**
  *  fallback strings for new resources: nodebb.admin-settings-user (78cd6de7)
  *  fallback strings for new resources: nodebb.user (3ec9197c)
  *  fallback strings for new resources: nodebb.email (354aa1a5)

##### New Features

*  revert label js change (1c80adf1)
*  hide all categories link on flags filters (e9d0db28)
*  nicer error handling for bad jwt in unsubscribe template (31ea2266)

##### Bug Fixes

* **deps:**
  *  update dependency jquery-ui to v1.13.1 (#10186) (55b3a355)
  *  update dependency multiparty to v4.2.3 (#10188) (7fa2ba70)
  *  update dependency nodebb-theme-persona to v11.3.15 (#10155) (e03d4747)
  *  update dependency mongodb to v4.3.1 (#10178) (693ca1f1)
  *  update dependency nodebb-plugin-composer-default to v7.0.18 (#10164) (2c75cce6)
*  urls used when recent/unread/popular/top is used as the homepage (28359665)
*  mark unread button showing the selected category (fdfafb44)
*  catch exceptions from sendNotifications (c1ec2047)
*  multiple cid filter on flags page (3e8cb732)
*  post indices if there is a blocked user in topic (f9279b63)
*  dont add duplicate link backs (3b72ff87)
*  #10175, fix topic linkbacks duplicating on post edit (b06c6329)
*  #10173, don't show optional message if email is required (d1eb21c5)
*  #10172, fix postqueue accept/reject notification text (6a75ed50)
*  #10167, fix regression prevent guest post (4799efc7)
*  CSRF handler to go back to saving in session (#10159) (e9ee843b)
*  #10158, fix extra padding (03f5cbcc)

##### Refactors

*  add method to error messages (c9fabb0e)

##### Tests

*  add failing guest csrf test (#10169) (10949184)

#### v1.19.0 (2022-01-13)

##### Breaking Changes

*  `GET /chats/:roomId/users` [breaking] (6eea6451)
*  remove socket.emit('user.exists') (1f063058)
*  remove socket.emit('user.changeUsernameEmail') (6b45dee9)
*  #10077, store nav items in objects (69c96078)
*  remove socket.emit('topics.follow') (f918a381)
*  remove socket.emit('topics.post') (6ad04721)
*  remove socket.emit('user.banUsers'); (49641a32)
*  remove socket.emit('posts.reply') (4604a572)
*  remove socket.emit('user.changePicture') (6d95684b)
*  remove socket.emit('user.search') (0d694c78)
*  remove socketHelpers.setDefaultPostData (99f865c6)
*  remove deprecated groups socket calls (02ea17ea)
*  remove deprecated methods (0d1e57dc)
*  remove socket.emit('posts.delete') (bd1cb2d4)
*  remove socket.emit('posts.upvote') (ec1d5e38)
*  remove socket.emit('posts.move') (8427c5d9)
*  remove socket.emit('posts.edit') (4247f624)
*  remove socket.emit('posts.bookmark/unbookmark') (f7418ccd)
*  remove deprecated admin.groups methods (07e2741e)
*  remove socket.emit('categories.getCategory') (45d755b6)
*  remove socket.emit('admin.categories.setPrivilege') and socket.emit('admin.categories.getPrivilegeSettings') (cc3f82bc)
*  remove deprecated socket.emit('admin.categories.update') (0b9c01f9)
*  remove deprecated socket.emit('admin.categories.purge') (ba5d2e7b)
*  remove deprecated socket.emit('admin.categories.create') (b3353723)
*  remove deprecated socket.emit('admin.categories.getAll') (10c19af2)
*  remove getTopicPosts(tid, ...) usage (170e5dd9)
*  remove deprecated post diff socket calls (8117b7f2)
*  remove deprecated user middlewares (1a7fffc7)
*  remove action:category.loaded, use action:topics.loading (36aa6034)
*  remove setTopicSort/setCategorySort (6dcdf1d3)
*  remove deprecated socket user create/delete functions (a7d1dfb6)
*  remove deprecated uploads.delete (c93d7fdb)
*  remove deprecated methods (79de48c5)
*  remove socket.io/flags.js (c5f08fdc)

##### Chores

*  org; merge consecutive await calls into one Promise.all (be4dbe34)
*  fix #9213 (0a5420ed)
*  revert engines change in install/package.json (487f25ba)
*  update renovate config (f95acce3)
*  update renovate range strategy... (bc0f33df)
*  remove debug logs in test/api.js (82768fcf)
*  use apiv3 for room rename tests (e745e212)
*  trigger lang (540eeae9)
*  up themes (71fa8175)
*  right dropdown (7aa85882)
*  right dropdown (a998cc1c)
*  update readme mongodb version (af5393ec)
*  update changelog for v1.18.6 (3c8109e2)
* **deps:**
  *  update commitlint monorepo (56d134c3)
  *  update dependency lint-staged to v12.1.7 (40e7007f)
  *  update dependency lint-staged to v12.1.6 (f78108ac)
  *  update dependency eslint-plugin-import to v2.25.4 (a69afdb6)
  *  update dependency lint-staged to v12.1.5 (12038039)
  *  update dependency eslint to v8.6.0 (b546ff4e)
  *  update dependency lint-staged to v12.1.4 (87779fc8)
  *  update dependency jsdom to v19 (#10053) (ee05b762)
  *  update dependency lint-staged to v12.1.3 (c0dd8dcb)
  *  update dependency eslint to v8.5.0 (55b9fab1)
  *  update dependency eslint to v8.4.1 (ba02f015)
  *  update dependency eslint to v8.4.0 (4b113715)
  *  update dependency lint-staged to v12 (b3423389)
  *  update dependency eslint to v8 (e9aadde1)
  *  update commitlint monorepo to v15 (f6c6425d)
  *  update dependency jsdom to v18.1.1 (87433b79)
  *  bump compare-versions from 3.6.0 to 4.1.1 in /install (ea9f2c73)
  *  update dependency jsdom to v18.1.0 (d7c2a311)
* **i18n:**
  *  fallback strings for new resources: nodebb.user (d79d7e80)
  *  fallback strings for new resources: nodebb.admin-settings-uploads (e6a46ef6)
  *  fallback strings for new resources: nodebb.error (207ae8cd)
  *  fallback strings for new resources: nodebb.post-queue (edba10e2)
  *  fallback strings for new resources: nodebb.modules, nodebb.notifications (fd939f8b)
  *  fallback strings for new resources: nodebb.admin-admin (4a53adf6)
  *  fallback strings for new resources: nodebb.admin-admin (b052a8e7)
  *  fallback strings for new resources: nodebb.topic (23c915ba)
  *  fallback strings for new resources: nodebb.admin-settings-user, nodebb.login (eecd02fb)
  *  fallback strings for new resources: nodebb.admin-settings-email (72e1c281)

##### Documentation Changes

*  comment hint :shipit: (ffdf26af)
*  fix description for route (47ab9526)
*  roomId is number (0aa25f20)
*  openAPI documentation for routes (55e68e2f)
*  use social media card in readme header (33c8b197)
*  add social media card (f7b3f69f)
*  add docs link higher up (1a85aaad)
*  update readme blurb (e325aa93)

##### New Features

*  bundling nodebb-plugin-2factor with all NodeBB installations, v1.19.0 onwards :tada: (31b4b8fd)
*  revoke user sessions on successful password reset (6ca216ab)
*  allow % in tags, #10135 (a75a043b)
*  allow isCluster, isPrimary, and jobsDisabled to be passed in as numbers in addition to string/bool (b5b188fd)
*  `GET /api/v3/chats/:roomId/messages` (2fe53cf8)
*  `DELETE /api/v3/chats/:roomId/users` and `DELETE /api/v3/chats/:roomId/users/:uid` (fe17c94c)
*  `POST /chats/:roomId/users` (d62ee846)
*  `POST /chats/:roomId/:mid` and `DELETE /chats/:roomId/:mid` (d5fd098e)
*  middleware.assert.message (90fcbe44)
*  `GET /chats/:roomId/:mid` (b2929605)
*  `PUT /chats/:roomId/:mid` (f48ed365)
*  allow API checkRequired middleware error to be internationalized (74f1905e)
*  `PUT /api/v3/chats/:roomId` (9a4fd5dc)
*  `POST /api/v3/chats/:roomId` (eeffb9d9)
*  `GET /api/v3/chats/:roomId` (09cf9c77)
*  `POST /api/v3/chats`, chat room creation, plus openAPI docs update (40b4544e)
*  `GET /api/v3/chats` (94bead71)
*  stub code for v3 chats api (02e878be)
*  #9506, allow seeing and editing your queued posts (c4042c70)
*  pass in all query params to category search filter (599bffd8)
*  add data param to filter:categories.search (c4156bdd)
*  ensure that all requests handled by NodeBB fall under the relative_path as configured (a3bdb706)
*  show 10 members (d9c42c00)
*  closes #10018 (1e535528)
*  #10018 add href (06bfec88)
*  #10018 , wip (0f14f23b)
*  autocomplete for activate/reset (f0d192fb)
*  #10008, add history entry for note deletion (c26870d2)
*  #9957, don't remove existing fields form config.json (0532c1b2)
*  add feature flag to disable verification emails, closes #9996 (09e0c6d5)

##### Bug Fixes

* **deps:**
  *  update dependency nodebb-plugin-markdown to v8.14.6 (ad6f6051)
  *  update dependency winston to v3.4.0 (#10150) (2fee1d07)
  *  update dependency ioredis to v4.28.3 (#10151) (bfad04ab)
  *  pin dependencies (da2bb340)
  *  pin dependency socket.io-adapter-cluster to 1.0.1 (#10146) (15bf3db2)
  *  update dependency nodebb-theme-vanilla to v12.1.15 (#10149) (2fa3cd0d)
  *  update dependency nodebb-theme-slick to v1.4.23 (#10148) (762de2d8)
  *  update dependency nodebb-theme-persona to v11.3.13 (#10147) (385d4c71)
  *  update dependency winston to v3.3.4 (4bada01b)
  *  update dependency autoprefixer to v10.4.2 (a47883e8)
  *  update dependency mongodb to v4.3.0 (50eb4556)
  *  update socket.io packages to v4.4.1 (9eb00cb2)
  *  update dependency nodebb-rewards-essentials to v0.2.1 (0a15c99e)
  *  update dependency autoprefixer to v10.4.1 (f1aa5f7d)
  *  update dependency yargs to v17.3.1 (5c3335b7)
  *  update dependency nodebb-theme-vanilla to v12.1.14 (#10102) (dd8b1f75)
  *  update dependency nodebb-theme-slick to v1.4.22 (#10101) (dd1633ff)
  *  update dependency nodebb-theme-lavender to v5.3.2 (#10099) (eccdfc9d)
  *  update dependency nodebb-theme-persona to v11.3.12 (#10100) (4f6fc10b)
  *  update dependency nodebb-theme-persona to v11.3.11 (32cbf760)
  *  update dependency nodebb-theme-slick to v1.4.21 (9253519c)
  *  update dependency nodebb-theme-slick to v1.4.20 (#10084) (019804e1)
  *  update dependency nodebb-theme-vanilla to v12.1.13 (#10085) (66c759ed)
  *  update dependency nodebb-theme-persona to v11.3.10 (#10083) (d276c9cd)
  *  update dependency nodebb-plugin-composer-default to v7.0.17 (#10082) (0ef9c7ab)
  *  update dependency nodebb-theme-vanilla to v12.1.12 (dda7c075)
  *  update dependency nodebb-theme-slick to v1.4.19 (4577600e)
  *  update dependency nodebb-theme-persona to v11.3.8 (5e2281c3)
  *  update dependency mongodb to v4.2.2 (0551a19e)
  *  update dependency postcss to v8.4.5 (16398dd9)
  *  update dependency compare-versions to v4.1.2 (de1ed01d)
  *  bump persona (16c88a97)
  *  bump persona (c90a8926)
  *  update dependency nodebb-plugin-mentions to v3.0.4 (#10063) (07217762)
  *  update dependency nodebb-plugin-spam-be-gone to v0.7.12 (#10064) (a5840c5a)
  *  update dependency nodebb-theme-slick to v1.4.18 (#10065) (5477cf32)
  *  update dependency nodebb-plugin-markdown to v8.14.5 (#10062) (60d778f0)
  *  update dependency nodebb-theme-persona to v11.3.5 (#10059) (8695d370)
  *  update dependency nodebb-plugin-dbsearch to v5.1.1 (70068d6c)
  *  update dependency nodebb-plugin-composer-default to v7.0.15 (84b03a34)
  *  update dependency nodebb-theme-persona to v11.3.3 (8cbe0df2)
  *  bump emoji plugin (14e35247)
  *  update dependency ioredis to v4.28.2 (597d826b)
  *  update dependency yargs to v17.3.0 (115de4e5)
  *  update dependency mime to v3 (#9963) (49813cce)
  *  update dependency mongodb to v4.2.1 (f72af319)
  *  update dependency @socket.io/redis-adapter to v7.1.0 (ed4b0cf7)
  *  update dependency postcss to v8.4.4 (b34b8aa9)
  *  update dependency postcss to v8.4.3 (2dadf786)
  *  update dependency postcss to v8.4.1 (6a273798)
  *  update dependency postcss to v8.4.0 (29345275)
  *  update dependency ioredis to v4.28.1 (9966a00f)
  *  update dependency nodebb-theme-persona to v11.3.1 (fdae6991)
  *  update socket.io packages to v4.4.0 (f05d308a)
  *  update dependency nodebb-theme-vanilla to v12.1.10 (68dddbd9)
  *  update dependency nodebb-theme-persona to v11.2.22 (3eb91a20)
  *  update dependency nodebb-plugin-mentions to v3.0.3 (5ec32c31)
  *  update dependency mongodb to v4.2.0 (#10011) (2378fc84)
  *  update dependency @socket.io/redis-adapter to v7.0.1 (aae7be02)
  *  update dependency sharp to v0.29.3 (46162537)
*  lint (c9592e17)
*  icon alignment issue that was also bugging me :shipit: (37a71291)
*  #10143, add back ace editor searchbox (42caef7f)
*  #10095, add login info to email interstitial (5eb02f59)
*  #10121, fix error messages in user creation (8ad64ec0)
*  #10115, fix chat autocomplete hook (69a7634a)
*  notice links in subfolder installs (cc27a324)
*  move authenticateRequest before interstitial and maintenance mode middlewares, allowed plugins to disable authentication on certain routes (d89fc44c)
*  retry incrObjtFieldBy (07232a8c)
*  use component instead of class name (b179f0fc)
*  assertion check to ensure messages are in the room when editing/deleting, etc (d95b4ee2)
*  rename language key for incorrect parameter type error (aeb43b9b)
*  deprecate chats.leave (16ba16cd)
*  re-allow kicking of the other party in a 1-to-1 chat (6294beea)
*  isFinite check for room assertion, more test migrating (140f9d24)
*  #10096, don't display preview for links if hostname doesnt match (a115b771)
*  only render preview on topic page (a9f81215)
*  don't crash server if analytics fails to save (8fb89d76)
*  upgrade script to handle strings as well (e332acf3)
*  #10090, remove left over necro posts messages (fdaf8274)
*  #10086, if pidfile is empty delete (59214ca2)
*  utils method (91e21ecc)
*  prevent crash if groups is not valid json (cc0a087a)
*  upgrade script (968d4616)
*  delete left over nav items after removal of some (737e1c19)
*  targetBlank/dropdown not getting cleared (10e890e4)
*  prettier bulk method usage (3b0c42a5)
*  bug where groupChat property was not set for chat rooms (42959df0)
*  #9484 show user history only to admins and gmods (bc7707aa)
*  no need to pass 'img' to teaser tags stripping as images are already converted to alt text (45c9dde3)
*  #10069, don't modify fields array (a8afdc60)
*  #10068, update data-index values after sort (236d4e80)
*  #10068, baseIndex should be read before sort update fix off by one error (9af23351)
*  tests (45d8157f)
*  #10067, count posts instead of incr/decr (830166d1)
*  handle start=0 stop=0 for topics.getTopicPosts (906dc567)
*  wrong usage of is ACP (4f423610)
*  don't throw on invalid session, just return early so socket is not opened. (fa01801f)
*  #10052, dont use spaces in tag class name (a2953583)
*  don't crash if tid is falsy (1cdb0b1e)
*  regression from https://github.com/NodeBB/NodeBB/commit/27c05448e1532ce466658513af0e2ff65576b410 (50063fe2)
*  keep query params on /me redirects (941ecaf8)
*  403/400/500 page not generating csrf_token (65c55041)
*  error pages dont have config.csrf_token (3dd681eb)
*  quote button staying on screen on slow computers (d378bf4c)
*  removed unused var (e0caa5e0)
*  #10027, properly auto confirm first user (2473d5d8)
*  cli password reset (71e34be5)
*  #10023, bump persona (a10ea03c)
*  #10020, /api/post/upload returns v3 style response (242f8e95)
*  consolidate plugin reset logic (449366ca)
*  search crash (9245f71a)
*  #10010, handle reverse sorting for topic events (d5bfd512)
*  #10006, dont allow new rooms or adding to a room if target is blocked (047f031d)

##### Other Changes

*  remove unused (afc75ba4)
*  fix (682f6089)
*  missing ; (20e76699)
*  remove unused (cbf198fe)
*  remove unused (a20abdce)
*  fix (0a6eeb93)
*  remove unused utils (82b72f7e)
*  fix (fa1ac04d)

##### Performance Improvements

*  only add middleware if relativePath is set (41db9436)
*  don't load all set members to get count (0414356c)
*  create user tooltips on demand (23147235)
*  closes #9994, bulk methods for settings (d412ba44)
*  remove createUserTooltips (facc10e4)

##### Refactors

*  remove unused language key (5278b11a)
*  put message api calls behind `/messages` prefix, #10097 (aaa6f752)
*  rewrite messaging tests to use API v3 calls when available, rewrote a bunch of tests to async..await (c990211c)
*  only write analytics data on nbb that has runJobs=true (35fea58a)
*  remove knonwOwner param (42781467)
*  remove console.log (a7644466)
*  remove unused validator (4e1d4217)
*  only pass qs (b8896d13)
*  change error message (1e60ae87)
*  use hasOwnProperty (9f1b8a3b)
*  remove object.create (dbba0c39)
*  remove unused args (3d3ae82f)
*  remove comment (633061f4)
*  use .map to return promises (d4f3ee67)
*  async (cfd47448)
*  async (f0394c49)
*  use async (8491f67d)
*  remove unused (e3c0f0be)
*  always returns array (9627fa90)
*  use async/await (f4aa249d)
*  change var name (36eb47d9)
*  alerts (621c142f)
*  use alerts.error/success (cba78aee)
*  use lang keys, fix typo (dd02c49f)
*  use alerts module (1980feed)
*  dont need local function (2bb0828a)
*  DRY (324262cb)
*  use routePrefixMap instead of routeRegexpMap, +tests (#10035) (6c07433d)
*  use hasOwnProprety (daf385cd)
*  tab rules (fb363957)
*  change category feed so it is not updated on every reply (697dd376)
*  dont expost entire res._locals to client side (e368feef)
*  shorter meta.settings.get (190532b3)
*  clone settings before returning (51cbeccb)
*  remove another async.series (27c05448)
*  remove tabs after declaration (4359e5c9)
*  update dates (6d38eab6)
*  clone before returning (f729e519)
*  add filter:topic.getPosts (258f368e)
*  setObjectBulk to match sortedSetAddBulk (8379c11b)
*  remove more async.eachSeries/mapSeries (d1964095)
*  make a single call to set widgets per template (8750ee04)
*  remove jshint, remove async.parallel (80f9963b)

##### Code Style Changes

*  eslint (d960f601)

##### Tests

*  fix util test (6c1e184c)
*  update tag tests, fix linux symlink error (9b75b1ed)
*  fix restore test (0d9ec9d3)
*  fix user tests calling deprecated socket methods (e747998c)
*  add email interstitial tests (1264dcb5)
*  don't use csrf_token for get,head, options (5e08f7e6)
*  fix tests (0e273ab2)
*  remove old test (68fd0875)
*  make it async (5c3d5f1f)
*  fix (26f00ffb)
*  one more getTopicPosts test (f8f0a83b)
*  utils.params (7b99dc46)
*  regular user shouldn't see admin:privileges (cd2040ac)
*  add missing tests (58431221)
*  add api token tests (7434cbf6)
*  add missing tests (404a8774)
*  upgrade.runParticular (2bdb4906)
*  add missing acp root category test (c17ec996)
*  cache dump test (217aae4c)
*  add missing controllers (bc120dba)
*  fix tpl name (edf7c647)
*  add mising email.test tpls (6d186ff1)
*  debug routes in dev (754cdab8)
*  add digest route test (1280d9ae)
*  digest (f11bc33a)
*  fix function name (0e725125)
*  submitUsage (d375dcb8)
*  remove log (d7c32ccb)
*  middleware/expose.js (29b3587d)
*  up mongodb version (500cad78)
*  mainPost removed from inf scroll (aac0792a)

#### v1.18.6 (2021-11-10)

##### Chores

*  make it a link (a0f0dd02)
*  update badges, remove david doesnt work (dad31c8e)
*  up themes (b1d6c9ba)
*  up mentions (98b98a11)
*  up mentions (3e4d477e)
*  fix type.yaml example and summary (591424ce)
*  update changelog for v1.18.5 (82eda23a)
*  remove .opacity() mixin as it is supported cross-browser (28efcb59)
* **deps:**
  *  update dependency eslint-plugin-import to v2.25.3 (45a0895c)
  *  update commitlint monorepo to v14 (dc78125a)
  *  update dependency jsdom to v18.0.1 (7d468e72)
* **i18n:**
  *  fallback strings for new resources: nodebb.admin-development-info (91676c6c)
  *  fallback strings for new resources: nodebb.admin-settings-navigation (3727e39f)
  *  fallback strings for new resources: nodebb.admin-settings-post (46789910)

##### New Features

*  #9992, hooks.one (96f13e4f)
*  use auto-generated meta and link tags in ACP, closes #9991 (1719bff8)
*  add node 16 (#9847) (d27c9696)
*  #9967, allow dropdowns in navigation (2e623dd2)
*  show number of events per type in acp (b916e42f)
*  show posts previews if enabled on mouse over (8c670316)

##### Bug Fixes

* **deps:**
  *  update dependency nodebb-theme-slick to v1.4.16 (#9990) (cf30876f)
  *  update dependency nodebb-plugin-composer-default to v7.0.14 (#9989) (ef02bdc4)
  *  update dependency nodebb-plugin-composer-default to v7.0.13 (#9988) (654c8e61)
  *  update dependency nodebb-plugin-mentions to v3.0.2 (1a22b0ec)
  *  update dependency socket.io to v4.3.2 (98ebc4d9)
  *  update dependency html-to-text to v8.1.0 (c1f5889f)
  *  update dependency nodebb-plugin-dbsearch to v5.1.0 (#9983) (4f1ee1fc)
  *  update dependency nodebb-plugin-composer-default to v7.0.12 (7fee0e32)
  *  update dependency nodebb-plugin-mentions to v3.0.1 (#9979) (8224a2a9)
  *  update dependency nodebb-plugin-spam-be-gone to v0.7.11 (91293ecc)
  *  update dependency nodebb-theme-lavender to v5.3.1 (f7295aaa)
  *  update dependency nodebb-plugin-mentions to v3 (#9966) (0888aae6)
  *  update dependency mongodb to v4.1.4 (#9968) (f5993731)
  *  update dependency nodebb-theme-persona to v11.2.21 (#9969) (8fac8d61)
  *  update dependency nodebb-plugin-mentions to v2.15.1 (0f8a68c0)
  *  update dependency validator to v13.7.0 (81c8d70c)
  *  update dependency autoprefixer to v10.4.0 (755860f1)
*  ability to enumerate email via updateProfile method (c1ac2912)
*  accidentally not clearing email when said email is confirmed for a different uid (b912a564)
*  #9976 (28dd31a8)
*  #9976, handle array or object (9bfb6c72)
*  dont show previews on mobile (41e02400)
*  category load more btn visibility (05468526)
*  #9973, ignore if assigning to same parent (66e7cdac)
*  #9972 (67cb2491)
*  remove tooltip on ajaxify (f728abda)
*  don't highlight external nav items (8a88295d)
*  don't use # for previews (5a0efd2d)
*  events for just topic with main post (3d611ab7)
*  #9954, get next post timestamp (89399c0e)
*  topic events not rendered in infinitescroll (a7f235db)
*  broken post uploads due to 6a976a9db0340e34577961ce8d5d9479c78f7856 (485b6ced)
*  #9950, rename account export routes to remove `uid/` prefix (0ee85d5a)
*  double invocation of authenticateRequest (60352eca)
*  #9945, call authenticateRequest middleware for mount points in /api (6a976a9d)
*  hooks is sometimes undefined (74aa12c9)
*  typo in flags (bc4b19b4)
*  remove unused code (50b2ebf8)
*  handle undefined data.query (8f08d9ca)

##### Performance Improvements

*  only load posts once (9fbb3b11)

##### Refactors

*  shorter require (41c3eb82)
*  deprecate app.alert functions user alerts module directly (0428912c)
*  deprecate app.logout (8b4510cc)
*  simpler rejoin (61903448)
*  deprecate app.openChat/newChat (f352be63)
*  move search functions from app.js to search module (1a9b1598)
*  move session messages (666fe209)
*  move warnings/messages out of app.js (51855254)
*  remove jshint (0a7ff208)
*  cleanup info, better cpu usage % (4b738c8c)
*  acp only uses 3 modes and a single theme (890bf03f)
*  display errors from category drag/drop (c1cc35a9)
*  use utils.debounce (e8c17fee)

##### Tests

*  add another assert for random failing test (ae64b9f4)
*  socket.emit doesnt exist in tests (61d1f565)
*  show body when test fails (e3f5b706)
*  lint (3d2398ac)
*  fix tpl test (30cce142)
*  dbsearch no longer has staticDir (3386893b)
*  increase timeout (4ac9270a)
*  fix account export test routes (10bb8cf7)
*  add test aliases.buildTargets (62ac9a8b)
*  empty query params for search (bda5d144)

#### v1.18.5 (2021-10-27)

##### Breaking Changes

*  disable javascript in custom less tab (719cfc0d)

##### Chores

*  remove .opacity() mixin as it is supported cross-browser (28efcb59)
*  up themes (463b2076)
*  up persona (1438f409)
*  update changelog for v1.18.4 (7cbcb521)
* **deps:**
  *  update dependency lint-staged to v11.2.6 (8d4bb8bb)
  *  update dependency lint-staged to v11.2.5 (0728a994)
  *  update dependency lint-staged to v11.2.4 (f76a7882)
  *  update dependency husky to v7.0.4 (2a3e13f3)
  *  update dependency mocha to v9.1.3 (4784f016)
  *  update dependency eslint-plugin-import to v2.25.2 (3c3f45d9)
  *  update dependency jsdom to v18 (4b8dcd4c)
  *  update dependency eslint-plugin-import to v2.25.1 (7c4aebbd)
  *  update dependency lint-staged to v11.2.3 (288b5456)
  *  update dependency lint-staged to v11.2.2 (f96c8c4d)
  *  update dependency @commitlint/cli to v13.2.1 (52c38a1d)
  *  update dependency lint-staged to v11.2.1 (022e8df0)
  *  update dependency eslint-config-nodebb to v0.0.3 (4b92df82)
* **i18n:**
  *  fallback strings for new resources: nodebb.admin-settings-email, nodebb.error (9b68dc37)
  *  fallback strings for new resources: nodebb.admin-dashboard (ff962b5d)
  *  fallback strings for new resources: nodebb.admin-dashboard, nodebb.admin-menu (abe59131)
  *  fallback strings for new resources: nodebb.admin-manage-digest, nodebb.admin-settings-user, nodebb.user (2bed40be)

##### Documentation Changes

*  update verbiage re: login API route (94c4f87b)

##### New Features

*  new ACP option `emailPrompt` ... which allows administrators to disable the client-side prompt to encourage users to enter or confirm their email addresses (80ea12c1)
*  show popular searches (f4cf482a)
*  new plugin hook  to allow plugins to reject email address on new registration or email change (6b4f35c2)
*  utilities login API route now starts an actual login session, if requested (806a1e50)
*  add method name to deprecation message (b91ae088)
*  quote tooltip (66fca4e0)
*  additional quality options for jpeg uploads, added quality and compression settings for png uploads (d22b076b)
*  #8053, biweekly digest option (f7967bdf)
*  core submit button dropdown (605a5381)
*  added failing i18n tests (35af7634)
*  confirm before deleting all events (#9875) (56d05b4e)

##### Bug Fixes

* **deps:**
  *  update dependency nodebb-theme-vanilla to v12.1.7 (#9944) (bf20965f)
  *  update dependency nodebb-theme-persona to v11.2.19 (#9943) (bcf85fcf)
  *  update dependency nodebb-rewards-essentials to v0.2.0 (7c2ecb12)
  *  update dependency nodebb-theme-vanilla to v12.1.6 (49b8b983)
  *  update dependency nodebb-theme-persona to v11.2.18 (ed0adf2c)
  *  update dependency nodebb-theme-persona to v11.2.17 (78661079)
  *  update dependency postcss to v8.3.11 (a5f4e206)
  *  update dependency nodebb-theme-vanilla to v12.1.5 (d74a6bd3)
  *  update dependency sharp to v0.29.2 (8b8fe393)
  *  update dependency postcss to v8.3.10 (b18a24e9)
  *  update dependency nodebb-theme-persona to v11.2.15 (f3c8d7da)
  *  update dependency nodebb-theme-persona to v11.2.14 (#9919) (5e08e67b)
  *  update dependency socket.io-client to v4.3.2 (deba3e27)
  *  update dependency socket.io to v4.3.1 (e1554f61)
  *  update socket.io packages (ce5a0a21)
  *  update dependency nodebb-plugin-spam-be-gone to v0.7.10 (600a8720)
  *  update dependency nodebb-plugin-composer-default to v7.0.10 (b0128f85)
  *  update dependency nodebb-plugin-markdown to v8.14.4 (f8f35d7e)
  *  update dependency nodebb-plugin-composer-default to v7.0.9 (ed874662)
  *  update dependency nodebb-theme-persona to v11.2.13 (1dba75e9)
  *  update dependency ioredis to v4.28.0 (4ff5452d)
  *  update dependency nodebb-theme-persona to v11.2.12 (fe9f82f6)
  *  update dependency ioredis to v4.27.11 (6d2e0aa9)
  *  update dependency nodebb-plugin-mentions to v2.14.1 (820f8cdf)
  *  update dependency jquery-ui to v1.13.0 (b0eb2aed)
*  remove loading="lazy", fixes inf. scroll loaded images (01572785)
*  windows tests (25ebbd65)
*  undefined query showing in searches (6cfaea06)
*  don't repeat search if on same page (89f5e06b)
*  api session revoke test (0926ae6e)
*  crash (da64810a)
*  add missing translation (eb075c73)
*  move record to controller (ee8e0480)
*  profile edit fields showing translated values (63572c23)
*  #9934, fix translator test (8d316d18)
*  token verify (04dab1d5)
*  guard against prototype pollution (1783f918)
*  translator path traversal (c8b2fc46)
*  there is no alltime digest, fixes translation in test email (e62948f7)
*  clicking outside postContainer should close tooltip (47df62e7)
*  minification regression (998b9e79)
*  tooltip (fec7ebed)
*  biweekly digest #8053 (9cb4de50)
*  restore plugin upgrade checking logic (44687394)
*  fallbacks for new langauge key (ed4ebd22)
*  #9917, show topics as unread for guests (4333d217)
*  clarify site settings urls vs config.json url (#9912) (6436aa65)
*  clarify SMTP enable toggle (#9911) (09f198fc)
*  don't overwrite reloadRequired with false (9e0ce027)
*  delete translations in admin/general folder (since general was removed and relocated elsewhere) (b460e590)
*  pushed missing key to tx and pulled fallbacks (21b61082)
*  adding missing language namespace "top" (0f9b0b78)
*  extra debug log (bd893cda)
*  have renovate add `dependencies` label to its PRs (eddb9868)
*  no global bootbox (#9879) (227456fb)
*  #9872 update app badge with notification count if applicable (3e69bcdf)
*  better nomenclature (c1149d04)
*  html attributes (#9877) (3acaac4c)
*  escape thumbs, allow robots meta tag (4f9717fb)
*  missing translations (#9876) (7935bd9e)

##### Performance Improvements

*  dont fs.open if plugin doesnt have language namespace (#9893) (1feb111a)

##### Refactors

*  wider value field (c428ba80)
*  dont save partial searches (c7e078d4)
*  use search api for topic search (64192731)
*  slowdown quick search (19ee7174)
*  typo (a5287906)
*  add callback to loadNotifications (f02fba29)
*  simplified utilities API > login rout (506c34a8)
*  log error as well (1d62bd6d)
*  catch errors from buildHeader in error handler :fire: (73a9ca09)
*  add missing helpers.tryRoute (d4da9840)
*  shorter middleware (ee0282f5)
*  meta/minifier use async/await (b2429ef0)
*  remove unused var (90b81262)
*  catch errors from digest (8e319a9b)
*  less.render returns promise (14bc83a8)
*  less.render already returns promise (6da32392)
*  prompt.get already returns promise (c70eaa0a)
*  no need for async/callbacks (057d1d58)
*  no more :cow: (38756a0c)
*  allow array of uids for blocks.is/list (a9bc6a09)
*  show full url on error log (8e6bd7e9)
*  var to const and let (#9885) (b0a24d6d)
*  remove unused code (997fb2b3)
*  remove unused colorpicker (543d8521)

##### Reverts

*  lazy load (3d1cf168)

##### Tests

*  fix broken openapi3 schema (7ef5214e)
*  restore commented-out i18n test (fa1afbcf)
*  moved topic event and topic thumb tests to subfolder for better organisation (154ffea0)
*  remove escape (6c25b9db)
*  possible fix to timeout (63109c07)
*  increase timeout (8654a996)

#### v1.18.4 (2021-10-06)

##### Chores

*  up persona (f4e62fb1)
*  update changelog for v1.18.3 (f066ddb8)
* **deps:**
  *  update dependency lint-staged to v11.2.0 (840b49b9)
  *  update commitlint monorepo to v13.2.0 (aa370310)
  *  update dependency mocha to v9.1.2 (6385b88e)

##### Documentation Changes

*  added link to unofficial IRC channel (c5a48b44)

##### New Features

*  use unread icon in mobile (27e53b42)
*  cli user management commands (#9848) (d1ff3d62)
*  #9855, allow uid for post queue notifications (5aea6c6a)
*  add userData to static:user.delete (f24b630e)
*  closes #9845, sort by views (6399b428)
*  duplicate `requireEmailAddress` settings block to Settings > User (a9645475)
*  mongodb driver 4.x (#9832) (07adb49e)
*  a useless hover effect because raisins (1a61ffc5)

##### Bug Fixes

* **deps:**
  *  update dependency mongodb to v4.1.3 (b4fc2773)
  *  update dependency postcss to v8.3.9 (9455e5b2)
  *  update dependency autoprefixer to v10.3.7 (78895d05)
  *  update dependency nodebb-plugin-composer-default to v7.0.8 (9215c7d1)
  *  update dependency ioredis to v4.27.10 (4694382c)
  *  update dependency nodebb-theme-persona to v11.2.9 (346e0890)
  *  update dependency autoprefixer to v10.3.6 (058fdca4)
  *  update dependency yargs to v17.2.1 (d50dd801)
  *  update dependency postcss to v8.3.8 (193c92e3)
  *  update dependency passport to ^0.5.0 (daea8a86)
  *  update dependency connect-pg-simple to v7 (#9785) (054f3da6)
  *  update dependency yargs to v17.2.0 (c78309b5)
*  #9866, fire vote hooks after reputation changes (#9867) (8ad9a103)
*  #9865, don't display register messages after login (96f5312d)
*  dont show decimails on auto approva minutes (a0df3890)
*  #9864 (e954ca10)
*  delete old topic tags (a70c69fa)
*  switch inf. scroll to xhr (#9854) (4404e819)
*  #9828, max-width (40915105)
*  handle undefined returnTo on registerAbort (ac1b9692)
*  lint (ff850b24)
*  psql tests (123354ca)
*  psql test (f8d4ec6c)
*  possible test fix for subfolder redirect (3605ac81)
*  missing relative path in test (4eacfef0)
*  #9834, missing null email check on new registrations, added tests (58e0a366)
*  crossorigin not showing up on manifest link tag (0faa4937)
*  #9827, fix reward duplication (89af00d1)

##### Performance Improvements

*  convert promise.all to single query (#9851) (ea04aede)

##### Refactors

*  use utils.debounce (a7668a7f)
*  remove async.waterfall from remaining upgrade scripts (6b34065f)

##### Tests

*  dashboard (4f8647a5)
*  add tests for admin privileges (9fe9ab08)
*  add missing tests (34798325)
*  remove debug log (8cb47548)
*  no need to create fake interstitial as NodeBB comes with some by default (cb69934a)

#### v1.18.3 (2021-09-22)

##### Chores

* **deps:**  update docker/build-push-action action to v2.7.0 (ee027719)
*  update changelog for v1.18.2 (27e9282a)

##### New Features

*  move filter:topic.post hook to top of method (f194809f)
*  add client-side static hook to fire immediately before any topic action (hint: delete `action` to stop default behaviour) (66eaae44)
*  allow removing multiple items from list (397835a0)
*  add uid to filter:user.saveSettings (7f48edc0)
*  headers for global privs #9717 (#9762) (84ff1152)
*  add ACP option to require email address on new registration (006fc700)

##### Bug Fixes

* **deps:**
  *  update dependency nodebb-plugin-composer-default to v7.0.7 (98554294)
  *  update dependency postcss to v8.3.7 (6ebe707c)
  *  update dependency autoprefixer to v10.3.5 (25687441)
  *  update dependency nodebb-plugin-composer-default to v7.0.6 (#9815) (c18678ce)
  *  update dependency nodebb-theme-persona to v11.2.8 (#9816) (39d73d0c)
  *  update dependency connect-mongo to v4.6.0 (8e886c85)
  *  update dependency nodebb-plugin-composer-default to v7.0.4 (8af54255)
  *  update dependency mongodb to v3.7.1 (9049dcd7)
  *  update dependency nodebb-theme-persona to v11.2.6 (506035b5)
  *  update dependency nodebb-theme-slick to v1.4.13 (787306a6)
  *  update dependency nodebb-plugin-composer-default to v7.0.3 (732b59c2)
*  fixed element shifting in ACP menu that's been bothering me for 5-ish years (31975a62)
*  #9822, use correct username/pwd (30f38771)
*  remove unused translator (2add84a5)
*  ban info test (07859f7e)
*  #9819, show same time info for ban (9f0e55ad)
*  show local time for ban (7a2f0ae1)
*  crash (c437b336)
*  remove caller from payload after hooks is done (15f9aaa6)
*  bad uid reference (ce8ea6ea)
*  update Topics.post and Topics.reply so that plugins can modify uid (or redirect a reply to a different topic) (7777812e)
*  #9818, fix totalTime calculation (c4fc7bf9)
*  missing microdata in category data (1ed62aa8)
*  #9812, add topics:schedule (c0a52924)
*  for subfolders (31a6d4b3)
*  req.path doesn't have full url (0236ea86)
*  escape moderation note before adding to dom (75ebe786)
*  #9811, send bodyClass on 403 (40c9fca9)
*  also launch docker workflow on release branches (944a7985)
*  xss on flags page via ban reason (ba3582b8)
*  up timeout for psql tests (896ff215)
*  redis batch (0c4b875e)
*  redis processing batch+1 items every iteration (3261edcc)
*  #9560, don't save post diffs if content didn't change (8b576a37)
*  #9790, get baseIndex on update for infinitescroll (6a55c027)
*  #9790, fix sorting of more than one page of pinned topics (2657804c)
*  privileges added by plugins (#9802) (3ecbb624)
*  #9800, don't send all welcome test emails to test@example.org @julianlam (71ed50b9)
*  docker - remove sha tag (b06e8dba)
*  Return QEMU back, remove platforms definition (52eace4b)
*  Docker workflow tweaks (#9792) (e7f4cde4)
*  browsers autocompleting smtp fields when they should not (34afb747)

##### Refactors

*  no regex (18252fb9)
*  remove async.waterfall (58ac55c1)
*  remove async.waterfall (222dccaf)
*  remove async.waterfall (f35a0f43)
*  allow plugins to replace og:image, or specify additional og:image (819917da)

##### Code Style Changes

*  give me an A! :100: (0b4d7d1f)

#### v1.18.2 (2021-09-08)

##### Chores

* **deps:**  update commitlint monorepo to v13 (87ba768f)
*  update changelog for v1.18.1 (0713475d)

##### New Features

*  a slightly less ugly rewards panel (bf0c02a7)

##### Bug Fixes

*  dashboard graph controls (a7855c4c)
*  #9767 ACP change group icon fix (580a016b)
*  #9781 (#9782) (0ce4b87d)
*  replace logic in isPrivilegedOrSelfAndPasswordMatch to use privileges.users.canEdit (856ba78a)
*  handle missing uid in deprecated socket call (cdaea611)
*  use privileges.users.canEdit for image upload priv check (e33e046f)
*  errors from registerComplete (a48bbdbf)
*  simplify logic for fullname and email blanking in user retrieval (getUserDataByUserSlug) (60de0844)
*  lint (1e2bda13)
*  manifest error (488f0978)
*  #9772, regression from https://github.com/NodeBB/NodeBB/commit/70a04bc10577e90e28d66a647d38cafc3307a285 (72710b80)
*  push back some deprecations, remove deprecated stuff scheduled for v1.18.0 (dd4e66e2)
*  deprecate userData.showHidden as it is functionally equivalent to userData.canEdit (4ac701d7)
*  focus on save button on plugin activation (46e5e17d)
*  #9773, fire hooks properly for priv changes (#9774) (6869920e)
* **deps:**
  *  update dependency sharp to v0.29.1 (ac6cd02f)
  *  update dependency nodebb-plugin-dbsearch to v5.0.3 (338f90fc)
  *  update dependency nodebb-theme-vanilla to v12.1.3 (0b3ea5ad)
  *  update dependency nodebb-theme-persona to v11.2.5 (57e54d55)

##### Refactors

*  deprecate picture update socket call, new API routes for picture update (0a41741b)

##### Tests

*  added test for external image via new change picture API (8cbad61e)

#### v1.18.1 (2021-09-03)

##### Chores

*  found some hooks that don't play well docgen (ae793b4a)
*  update changelog for v1.18.0 (2fd9c095)
* **deps:**  update dependency mocha to v9.1.1 (64bac178)

##### New Features

*  create folders in ACP uploads #9638 (#9750) (3df79683)
*  column based view on wide priv. tables (#9699) (61f02f17)
*  als (#9749) (e59d3575)
*  add quick reply key (e9314842)
*  add new lang key for no best posts (6e73d8c9)

##### Bug Fixes

* **deps:**
  *  update dependency autoprefixer to v10.3.4 (67b932f4)
  *  update dependency nodebb-theme-persona to v11.2.4 (fe18e100)
  *  update dependency mongodb to v3.7.0 (31a35d7f)
  *  update socket.io packages to v4.2.0 (f2028d70)
  *  update dependency ioredis to v4.27.9 (6052eb16)
  *  update dependency mongodb to v3.6.12 (#9761) (5fa982c1)
  *  update dependency nodebb-plugin-composer-default to v7.0.2 (33d51201)
  *  update dependency nodebb-theme-slick to v1.4.12 (1b416d7e)
  *  update dependency nodebb-theme-slick to v1.4.11 (65b32fa1)
  *  update dependency nodebb-theme-persona to v11.2.3 (6ce321e4)
  *  update dependency autoprefixer to v10.3.3 (91ba7cdf)
  *  update dependency nodebb-theme-slick to v1.4.9 (d80b378f)
  *  update dependency jquery-deserialize to v2.0.0 (#9744) (7f9451ce)
*  determine indeterminate checkboxes (760ea9df)
*  move app.alert back into the conditionals (ca9bae3a)
*  only show email confirmation warning toast on pages that it applies (1bd1cc74)
*  updated email confirm warning to be more positive (2d1380dd)
*  automated tests are a good thing to have (6afeac37)

##### Refactors

*  consistent jquery element var naming (fc0e655e)
*  var to const (1272da65)

#### v1.18.0 (2021-08-25)

##### Breaking Changes

* **emails:**  restore ability for admins to edit a user's email address [breaking] (c4e3362b)
*  #9670 return 4xx errors instead of 5xx on flag routes, when unauthenticated or not privileged [breaking] (d1959a25)
*  made TopicList.onTopicsLoaded private [breaking] (07f25d8c)
*  return proper API-style response if exception caught by error handler on v3 routes [breaking] (a54a3ee1)

##### Chores

* **deps:**
  *  update dependency husky to v7.0.2 (324c7d48)
  *  update dependency eslint-plugin-import to v2.24.2 (9a34fe18)
  *  update dependency eslint-config-nodebb to v0.0.2 (cd85a55d)
  *  update dependency mocha to v9.1.0 (c5a42273)
  *  update dependency eslint-plugin-import to v2.24.1 (daca09d4)
  *  update dependency @apidevtools/swagger-parser to v10.0.3 (ffdf61b8)
  *  update dependency jsdom to v17 (#9700) (41855375)
  *  update dependency eslint-plugin-import to v2.24.0 (23dafa20)
  *  update dependency lint-staged to v11.1.2 (d47bdde2)
  *  update dependency jsdom to v16.7.0 (9db28b4b)
  *  update dependency eslint to v7.32.0 (03a98f4d)
  *  update dependency mocha to v9.0.3 (40384fcb)
  *  update dependency lint-staged to v11.1.1 (7588aae1)
  *  update dependency lint-staged to v11.1.0 (cb5fe271)
  *  update dependency mocha to v9 (f43291f5)
  *  update dependency husky to v7 (702290c4)
  *  update dependency eslint to v7.31.0 (f5a53b7f)
  *  update dependency lint-staged to v11.0.1 (02101315)
*  up markdown/composer-default, fixes: #9708 (b74eefac)
*  update changelog for v1.17.2 (5c9c0605)

##### Documentation Changes

*  some hook deprecation notices (6bc090f8)

##### New Features

*  add confirmation modal to topic event deletion (e803737a)
*  allow changing default search in (794bf01b)
*  #9705, use radio buttons for flag reasons (382a4c27)
*  Client-side hooks - replace window.trigger (#9679) (342503e0)
*  closes #9684, allow event deletion (358ad740)
*  replace eslint configs on server and client side to inherit rules from eslint-config-nodebb (f653a6ff)
*  re-add FontAwesome font for compatibility (a370c26f)
*  update to FontAwesome 5.15, resolve #6976 (41762e66)
*  removed registerAndLoginUserCallback local helper, added handling if a bad interstitial doesn't go away nor throw errors (70a04bc1)
*  updated email confirmation alert to more closely reflect email usage, remembering dismissal (bbbacd86)
*  allow requirejs modules to be awaited (58adb762)
*  show instructional modal after email change request (0e05cbe1)
*  return back to profile after editing email (324a12b6)
*  allow registration interstitial abort to also follow returnTo (b3c91641)
*  plumb current session id into email removal/confirmation flow, so all other sessions are revoked except for the current session (96398faa)
*  allow revokeAllSessions method to revoke all sessions except that which is passed in (new arg) (b0a4a1d3)
*  return generic 404 on invalid confirm code (f53fc1ad)
*  invites no longer require email (a917210c)
*  show different registration intersitial lead text on new account vs. existing (74aaa0a9)
*  removal of emailExists socket listener (12b2a979)
*  add loggedin/guest class to body (04b1f702)
*  convert _fireStaticHook to async function (auto-refactor by vscode) (21359eab)
*  store topic tags in topic hash (#9656) (4a56388e)
*  new hook `action:topics.loading` (in the same format as `action:posts.loading`) (e0db904b)
*  schedule deprecation for `action:category.loaded` and `action:category.loading`. Use `action:topics.loaded/ing` instead (8ae4c300)
*  internationalize API error messages (7036c375)
*  #9651, change category desc to multiline (5fd190f7)
* **emails:**
  *  pass req in to filter:registration.interstitial (afd2d8da)
  *  display current email in interstitial form (f5291999)
  *  upgrade script for includeUnverifiedEmails (50517020)
  *  +includeUnverifiedEmails ACP setting (be97aa6f)

##### Bug Fixes

*  lint (55693ec1)
*  topic event deletion (1ee92c28)
*  pluginPaths (0743554d)
*  #9730, show warning if plugin is active but not installed (13878e9f)
*  #9729, insert new posts after topic events (60bf5643)
*  #9719, only apply to non https (c354cde3)
*  #9727, addHandlers after hooks (77c3085a)
*  allow smaller than 5mins for admin relogin duration (a288f51f)
*  taskbar icon not pushed via composer/persona (3a81c8fd)
*  #9698, pass along query params in redirect (9de64bf5)
*  lint (8bf2896d)
*  remove unnecessary quote (093ac1c0)
*  parseInt tids (162ebacf)
*  #9681, update posts in queue if target tid is merged (0c816429)
*  email update interstitial to not error on empty email field (on new registration) (4a521ea2)
*  updated ACP > Manage > Users to handle users with no email address (824a72b2)
*  allowed reset and reset_notify emails to go out to unconfirmed email addresses (d5b5b7d5)
*  bug where confirmation email was sent to the old email address, not the new one (414d733d)
*  email validation flow, so that it actually works, fixed event logging bug, new email verification template (3bcd1f14)
*  accidental early return in confirmByCode, tests, race condition (caf89687)
*  test :shipit: (2c06ac9a)
*  failing test from d1959a2 (f71f2951)
*  #9668, add raw info to psql database page (6c47a060)
*  use hooks module instead of window trigger (acb11cc7)
*  tests (0960a814)
*  translate language keys if passed in to formatApiResponse (415416d2)
*  lint (ff78969c)
*  tests (55d7e558)
*  keep query string on redirects (47c8c692)
* **deps:**
  *  bump persona (12e7f8d5)
  *  update dependency nodebb-theme-persona to v11.2.1 (#9734) (2e1562b8)
  *  update dependency nodebb-theme-vanilla to v12.1.2 (#9735) (4bd66a7c)
  *  update dependency nodebb-theme-slick to v1.4.8 (#9732) (096c5a58)
  *  update dependency autoprefixer to v10.3.2 (d44e3a8e)
  *  update dependency nodebb-theme-persona to v11.2.0 (116f9cb5)
  *  update dependency ioredis to v4.27.8 (8461791a)
  *  update dependency nodebb-theme-persona to v11.1.3 (ec103ce8)
  *  update dependency sharp to v0.29.0 (626d5565)
  *  update dependency connect-mongo to v4.5.0 (ce6039f2)
  *  update dependency nodebb-theme-vanilla to v12.1.1 (de83f82e)
  *  update dependency nodebb-theme-persona to v11.1.2 (ee10ae04)
  *  update dependency yargs to v17.1.1 (38e38580)
  *  update dependency nodebb-theme-persona to v11.1.1 (47941418)
  *  update dependency mongodb to v3.6.11 (a0fd0268)
  *  update dependency yargs to v17.1.0 (181c20ba)
  *  update dependency ioredis to v4.27.7 (4c9d6b62)
  *  update theme versions for #9607 (3b34571d)
  *  update dependency postcss to v8.3.6 (ebdba8f1)
  *  update dependency html-to-text to v8 (3f24746c)
  *  update dependency yargs to v17 (1b6b1fe5)
  *  bump composer-default to v7 (51458c75)
  *  update dependency autoprefixer to v10.3.1 (0d3f74b7)
  *  update dependency nodebb-plugin-markdown to v8.14.2 (b6a84712)
  *  update dependency autoprefixer to v10.3.0 (72c9650f)
  *  update socket.io packages to v4.1.3 (f14df0d4)
  *  update dependency nodebb-plugin-composer-default to v6.5.34 (31dae04f)
  *  update dependency nodebb-theme-persona to v11.0.26 (ae14016e)
  *  update dependency nodebb-plugin-markdown to v8.14.1 (8b41684e)
* **emails:**
  *  broken test for api/user/email/:email (81611ae1)
  *  dont allow retrieving user data if showemail is false @julianlam (7d115c8e)
  *  registration tests, email no longer passed-in, API tests (confirm email for test accounts) (6694bdd5)
  *  don't automatically associate email during user creation if passed in at registration (e726048e)
  *  remove debug log (b4b65ecd)
  *  broken test due to sticky registration interstitial (ab9b6716)

##### Refactors

*  remove promisify from redis, ioredis supports promises nati… (#9728) (6659e95a)
*  get rid of async.waterfall/each (8fb53252)
*  remove unused async (42dbd402)
*  remove waterfall (6b6a7d4b)
*  move interstitials into its own file in `src/user/` (e95df2f0)
*  added user.email.remove method, updated email interstitial to handle email removal (ccf004f1)
*  client-side to use flag notes API (ef4e74bf)
*  fix wording (6ed7e937)
* **email:**  validation checking methods, +tests fix (087e6020)
* **emails:**
  *  more work in update email interstitial, interstitial skipping, email change on confirmation, deprecation of requireEmailConfirmation (69c96dd2)
  *  interstitial for adding/updating email (f365bc46)
  *  remove email validation on client and server side (7c1d1c77)

##### Code Style Changes

*  eslint (d2492ef4)
*  lint fix (340ccb24)
*  lint (52229172)

##### Tests

* **emails:**  fixing broken tests introduced by e5ff68acd (a3a3b10f)

#### v1.17.2 (2021-07-07)

##### Chores

* **deps:**
  *  update coverallsapp/github-action action to v1.1.3 (99c23037)
  *  update dependency eslint to v7.30.0 (725e70e9)
  *  update dependency coveralls to v3.1.1 (edefac96)
  *  update dependency eslint to v7.29.0 (2700f717)
  *  update dependency eslint to v7.28.0 (fac0bcbd)
  *  update dependency smtp-server to v3.9.0 (86723292)
  *  update dependency eslint-plugin-import to v2.23.4 (886d65f6)
  *  update dependency eslint-plugin-import to v2.23.3 (c3b0e2fa)
*  lint (2b42e7ed)
*  fix indentation (d07229aa)
*  up rewards (ca9ca876)
*  update changelog for v1.17.1 (1e6ed0ad)

##### Documentation Changes

*  add undoTimeout (2db77b0c)

##### New Features

*  add merge/fork hooks (c9348efb)
*  #9628, allow setting custom icon names (2fe30b6f)
*  #9617 update fa link (52596902)
*  add bodyClass to 500 page (46a454f1)
*  clear reset tokens on successful login (f9728aff)
*  add filter:categories.categorySearch (be19f27f)
*  allow nested properties on category page (#9601) (cc0cf99f)
*  show ip on acp manage users (8ea58432)
*  add undoTimeout to moving posts as well #9599 (e588948f)
*  make undoTimeout configurable, closes #9599 (05cc7ccb)
*  introduce boolean res.locals flag to bypass session reroll (used by session-sharing) (816856b0)
*  allow modifying default category privileges (57e46e41)
*  add filter:notifications.create (ac7b093f)
*  pass req.query to getUnreadData (3d5fef6e)
*  added GET user route for api v3 (d2960aeb)

##### Bug Fixes

* **docs:**  #9648 (e03782f2)
* **deps:**
  *  update dependency mongodb to v3.6.10 (f17625fb)
  *  update dependency nodebb-theme-persona to v11.0.25 (c11927c5)
  *  update dependency sortablejs to v1.14.0 (5ff9319f)
  *  update dependency nodebb-theme-persona to v11.0.24 (c7feea56)
  *  update dependency nodebb-plugin-composer-default to v6.5.33 (3611b04e)
  *  update dependency nodebb-plugin-markdown to v8.14.0 (e40f648f)
  *  update dependency nodebb-plugin-markdown to v8.13.1 (cf6fcc21)
  *  update dependency nodebb-plugin-composer-default to v6.5.32 (#9626) (90e3f5ac)
  *  update dependency nodebb-plugin-composer-default to v6.5.30 (#9624) (2060dc61)
  *  update dependency postcss to v8.3.5 (09aebbda)
  *  update dependency postcss to v8.3.4 (520050da)
  *  update dependency postcss to v8.3.3 (c7006ec6)
  *  update dependency ioredis to v4.27.6 (82b33dc4)
  *  bump persona (f4eb336a)
  *  update dependency postcss to v8.3.2 (88f21e91)
  *  update dependency postcss to v8.3.1 (71b4d634)
  *  update dependency ioredis to v4.27.5 (9f74caf6)
  *  update dependency connect-redis to v6 (#9590) (6632b2b6)
  *  update dependency ioredis to v4.27.4 (4ffd234f)
  *  update dependency nodebb-theme-persona to v11.0.21 (062928d2)
  *  update dependency mongodb to v3.6.9 (d8c64479)
  *  update dependency autoprefixer to v10.2.6 (3aeac357)
*  #9634, re-jig top bar of Admin > Manage > Users (b8964843)
*  hide private user data in api/v3/users/[uid] (97c8569a)
*  numThumb upgrade script (d9e2190a)
*  acp dashboard sometimes not loading on cold load (fee782c4)
*  #9636, sanitize all attributes in meta and link tags (84904976)
*  convert some hooks to use hooks module (09bac6bd)
*  #9627 (acdbd049)
*  #9629, translate content property of meta tags (561ce7d3)
*  prevent crash in expandObjBy #9618 (ab6f062f)
*  dont show system tags in whitelist dropdown to regular users (0d975bc4)
*  #9622 (#9623) (84e06575)
*  #9620, fix notif delay (73f40e96)
*  #9619, add group chat filter to /notifications (c92fc19b)
*  scope (3cd9434b)
*  #9615, catch exceptions in renderOverride (1eda538d)
*  purge uploaded images accordingly #9606 (#9611) (8168c6c4)
*  keep query params when switching chat (7b4c0a16)
*  accidental unnecessarily strict conditional that effectively rendered SSO state checking opt-in instead of opt-out (a2400f6b)
*  introduce artificial delay + delay fudging on invalid email during reset token generation (f6c14d6b)
*  #9605, expire all active reset tokens for a uid if that uid generates a new one (229f96f8)
*  lint (8c952aa3)
*  schema (39e13591)
*  pagination on acp users search (6695927e)
*  #9596, incorrect placeholder string in some translations (93d94564)
*  extra ')' (6f732611)
*  disallow editing of other users' notes (edcba61a)
*  #9592, check session (286644d0)
*  don't crash if session doesn't exist (3717df61)
*  lint (66cae54e)
*  improper use of filename extensions (16e0bca5)
*  return null (d8d6c989)
*  updates navigation menu user icon (f9b248b8)
*  returnOriginal deprecation (3fb74445)
*  error when trying to trim an object (48b8e3bb)
* **post-queue:**  moderatedCids is an array of numbers (#9631) (db65360c)

##### Performance Improvements

*  cache Topics.getTopicsTags (8e0561f2)
*  bypass getMultipleUserSettings (10ddfff3)

##### Tests

*  fixed broken tests from #9605, removed token clean on token usage as it is superceded by token clean on generation (+ associated test) (5c42b3ea)

#### v1.17.1 (2021-05-26)

##### Chores

* **deps:**
  *  update dependency grunt to v1.4.1 (0e37bbfd)
  *  update dependency jsdom to v16.6.0 (60170ad6)
  *  update dependency eslint to v7.27.0 (298af98d)
  *  update dependency eslint-plugin-import to v2.23.0 (1623ba4f)
  *  update commitlint monorepo to v12.1.4 (4a01313d)
  *  update commitlint monorepo to v12.1.3 (b82774c5)
  *  update dependency eslint to v7.26.0 (d1418210)
  *  update dependency lint-staged to v11 (1bf57d40)
  *  update dependency mocha to v8.4.0 (461e187b)
  *  update dependency eslint to v7.25.0 (32c20806)
  *  update dependency grunt to v1.4.0 (a30deef3)
*  update changelog for v1.17.0 (4c441a1b)

##### Documentation Changes

*  update API docs to better outline authentication options (6ef0c8e9)
*  update API authentication verbiage (d08d0c42)

##### New Features

*  keep query string when redirecting category (77dde41f)
*  add req.query to flags.list/getCount (3d6bdeb3)
*  add filter:flags.getFlagIdsWithFilters (d35c64b1)
*  #9559, set order help text (f5847f4f)
*  add filter:user.getWatchedCategories (4afca690)
*  pass req.query to getUserDataByUserSlug (518157d9)
*  #9508, add cluster support (94c12e37)
*  #9551 (a3d6c56e)
*  add template to hook (1f3e6601)
*  add filter:account.getPostsFromUserSet (a2442ee9)
*  automatically attempt reconnection on window focus (8cc61f11)
*  #9533, allow redirect in build hooks (f6b583bb)
*  add _hooks metadata object to all hooks that have object-type params (46899cca)
*  add filter:categories.copySettingsFrom (d8e4fd4c)
*  guard against multiple resolves (084c9851)
*  #9511 send notifications on accept/reject (b40fc4b6)
*  `hidden` class to FOUC (2bfa63ae)
*  add filter:middleware.autoLocale (a478dc7e)
*  remove sync hooks support (01956af4)

##### Bug Fixes

*  #9580, proper 404 when ajaxifying (9ebfdeb7)
*  lint (09f51792)
*  #9567 fix tests (951e71a0)
*  #9567, use regular 404 (5215c30a)
*  ioredis upgrade fix, maybe (1ce59508)
*  bug where interstitial errors were not properly passed to the front-end via req.flash (1d9cfe1e)
*  #9553, use same fields for user search results in acp (0551642a)
*  lint (e8c5c18a)
*  lint (ffa80163)
*  tests (fad5988e)
*  tests (074ee859)
*  wrong error message checked (a9bb1088)
*  #9507 session reroll causes socket.io to become confused (#9534) (ec6d1e23)
*  isObjectField(s) empty field (2c22b06f)
*  do not register SW for Safari until upstream fixes #9193 (ce5fea2a)
*  infinite scroll with small number of items #9524 (#9525) (cb1dd0a3)
*  #9519 unable to properly ajaxify to home on subfolder installs if anchor did not have a trailing slash (db48b952)
*  #9512, fix chat icon if no privileges (6ed8890c)
*  #9503, dont error in markUnread if room doesnt exist (308252f5)
*  use socket.request.headers (9e07efc1)
*  buildReqObject headers for socket.io calls (ed534f34)
* **deps:**
  *  update dependency sharp to v0.28.3 (963a9fe6)
  *  update dependency ioredis to v4.27.3 (075dab27)
  *  update dependency nodebb-theme-vanilla to v12.0.8 (#9574) (10290f54)
  *  update dependency mongodb to v3.6.8 (#9573) (64935787)
  *  update dependency postcss to v8.3.0 (ad4afd59)
  *  update dependency nodebb-theme-persona to v11.0.20 (403bcfac)
  *  update dependency nodebb-plugin-composer-default to v6.5.29 (8d7e4420)
  *  update dependency mongodb to v3.6.7 (f29e4e87)
  *  update dependency textcomplete to ^0.18.0 (9b7653cc)
  *  update socket.io packages to v4.1.2 (#9563) (ca7c77bc)
  *  update dependency nodebb-plugin-dbsearch to v5.0.2 (#9562) (2d0564cb)
  *  update dependency nodebb-theme-slick to v1.4.7 (bf4aa50c)
  *  update dependency nodebb-plugin-composer-default to v6.5.28 (4164b322)
  *  update socket.io packages to v4.1.1 (155a7fb6)
  *  update socket.io packages to v4.1.0 (53335677)
  *  update dependency sharp to v0.28.2 (4bc07a08)
  *  update dependency postcss to v8.2.15 (7770c2a1)
  *  update dependency nodebb-theme-persona to v11.0.19 (3145c7d5)
  *  update dependency nodebb-plugin-mentions to v2.13.11 (7e2ea4df)
  *  update dependency nodebb-plugin-markdown to v8.12.10 (2ac5a085)
  *  update dependency nodebb-plugin-markdown to v8.12.9 (ee3634cc)
  *  update socket.io packages to v4.0.2 (ff98f854)
  *  update dependency postcss to v8.2.14 (22ec1ea5)
  *  update dependency sitemap to v7 (0389dd96)
  *  update dependency nodebb-widget-essentials to v5.0.4 (19f1cbfc)
  *  update dependency nodebb-theme-persona to v11.0.18 (33d91fde)
  *  update dependency connect-redis to v5.2.0 (c0d54a06)
  *  update dependency postcss to v8.2.13 (831e5c26)
  *  update dependency postcss to v8.2.12 (38454df9)
* **#9508:**  switch to ioredis (#9545) (dd81dd03)

##### Refactors

*  cli/upgrade async/await (#9558) (ac86937c)
*  bubble other errors (0096cf17)

##### Reverts

*  sync hooks (5fe97b9c)

##### Tests

*  fix tests (1029a06a)
*  fix redis tests (4e490f60)
*  add test for undefined fields in getObjectsFields (92de49be)

#### v1.17.0 (2021-04-22)

##### Breaking Changes

*  add additional flag hooks [breaking] (00a68a95)
*  remove deprecated `User.emailConfirm` [breaking] (fb84c785)
*  remove deprecated plugin hook `filter:privileges:isUserAllowedTo` [breaking] (5a775e09)
*  remove deprecated plugin hook methods [breaking] (d41de481)
*  more removals of thumb specific backwards-compatibility [breaking] (cc0d562e)
*  remove deprecated `filter:admin/header.build` hook [breaking] (5f9f241e)
*  remove deprecated v2 style responses for thumbs upload route [breaking] (84dfdfe6)
*  remove deprecated getObject routes [breaking] (2ad0d0d0)
*  remove 'filters' and 'categories' from flag details API return [breaking] (8b72479f)
*  filtering logic of flags [breaking] (1603566b)
*  feature flag for auto-resolving a user's flags on ban [breaking] (6b1c97db)
*  allow interstitial callbacks to be async functions [breaking] (280285cd)

##### Chores

* **deps:**
  *  update dependency jsdom to v16.5.3 (0f249aa7)
  *  update dependency eslint to v7.24.0 (60c0c16f)
  *  update dependency husky to v6 (f155f326)
  *  update commitlint monorepo to v12.1.1 (b4d01388)
  *  update dependency jsdom to v16.5.2 (5e2e7a58)
  *  update dependency eslint to v7.23.0 (d600cd94)
  *  update dependency husky to v5.2.0 (77f551a4)
  *  update dependency jsdom to v16.5.1 (28ed579b)
  *  update dependency eslint to v7.22.0 (775c3b91)
  *  update dependency mocha to v8.3.2 (3ce731d8)
  *  update dependency jsdom to v16.5.0 (fd926d61)
  *  update dependency mocha to v8.3.1 (651c629f)
  *  update dependency husky to v5.1.3 (8791b44e)
  *  update dependency husky to v5.1.2 (5f061b94)
  *  update commitlint monorepo to v12 (42f7cd52)
  *  update dependency eslint to v7.21.0 (59518437)
  *  update dependency husky to v5.1.1 (2551295c)
  *  update dependency husky to v5.1.0 (dc06fe22)
  *  update dependency eslint to v7.20.0 (9ec0b2ed)
  *  update dependency mocha to v8.3.0 (73f07958)
  *  update dependency husky to v5 (d89ccf26)
  *  update dependency lint-staged to v10.5.4 (030ecffa)
  *  update dependency eslint to v7.19.0 (3696a199)
*  fix indent (6406e527)
*  benchpress 2.4.1 (3403635c)
*  remove log (a1ee1a2a)
*  bump composer-default (289bfc0b)
*  up themes (d14ba1f4)
*  remove node 10 (8d3ec234)
*  bump composer-default to 6.5.20 (33fbfdfe)
*  add multiparty dep (ef3ec96a)
*  bump composer (30954789)
*  bump deps (#9335) (b9fd2c87)
*  extra console.log (1ae8dda8)
*  up composer (1c9acef6)
*  eslint max-len (cc9d6fd0)
*  eslint no-restricted-syntax (5c2f0f05)
*  eslint prefer-rest-params, prefer-spread (115d19e2)
*  eslint prefer-destructuring (23f212a4)
*  eslint object-curly-newline (8d1462ff)
*  eslint function-paren-newline (62869bae)
*  eslint no-var, vars-on-top (dab3b235)
*  eslint prefer-arrow-callback (b56d9e12)
*  eslint prefer-template (707b55b6)
*  eslint import/newline-after-import (4ee0f145)
*  eslint no-script-url (9f6a682c)
*  eslint no-bitwise (dad01e30)
*  eslint rules matching existing styles (58528d1a)
*  fallbacks (74be1a59)
*  deprecation notices for plugins using plugin old hook methods (3052256d)
*  add deprecation notice in comments for ajaxify.loadExtraScripts (8b09292e)
*  update changelog for v1.16.2 (d3883d4b)

##### Documentation Changes

*  fixed typo (e7550673)
*  added comment re: #9305 (65c57c73)
*  update deprecation-removal version for plugin hook helper methods in 1.18.0 (15ba0abb)

##### New Features

*  lang strings (9b71b087)
*  rate limit file uploads (a9978fcf)
*  filter flags by username #8489 (#9451) (8faa6e45)
*  roll session identifier on login, as security best practice (697ed3bf)
*  allow different slugs (4494728c)
*  remove sort again (fd3bc605)
*  update  hook (f65d2162)
*  add reverse of recent to getSortedTopics (05f22361)
*  allow exists methods to work with arrays and single id (285aa365)
*  pass all data to filter:category.get (d16b45fd)
*  add action:posts.loaded (dbb59228)
*  rescheduling (editing ST) (#9445) (aa0137b1)
*  upgrade sharp (#9442) (f7f46e7c)
*  optional urlMethod param for loginStrategies (9e1f72a4)
*  add hooks to language loading (#9426) (344575dd)
*  doggy.gif (b06f0ea2)
*  allow adding sorted-list items from forms outside of modal (a3e95e79)
*  scheduled topics (#9399) (077330b7)
*  show link if category is a link (a94d9651)
*  make info page full width (dd12c83f)
*  allow optional fields argument on db.getObject(s) (#9385) (4327a09d)
*  closes #9380, add category filtering and topic tools to tag page (668508cc)
*  allow sync function (#9379) (34b9aaed)
*  allow filter functions that return promises or the data directly (e6c52cf2)
*  add resolve flag to post tools (52082e12)
*  hide revert button in ACP > Privileges until privileges change (4cbd13fd)
*  bring back static hook timeout (46270f9f)
*  upgrade connect-mongo, closes https://github.com/NodeBB/NodeBB/pull/9367 (3c60ccfd)
*  pass interstital errors to individual partials as well as to registerComplete (f71cb0e4)
*  add filter:plugins.firehook (5eb3132d)
*  copy default favicon if it doesn't exist (754283d3)
*  add missing translation keys (17184bfa)
*  allow missing (or non-array) middlewares argument in route helper methods (4b545085)
*  pass modified params, only affects filter hooks (e74df539)
*  add back topic id input (696c4895)
*  expose username validation logic to user lib, new hook `filter:username.check` (bfd512b9)
*  add $.deserialize to client side (e5133a78)
*  allow for settings.save/settings.load on client side (66196d2c)
*  remove promise-pollyfil (902a88c2)
*  category privilege API routes (c1b3079d)
*  change uploadCroppedPicture to use updateProfile as well (0af9d26f)
*  use updateProfile for picture change (a598abcd)
*  allow payload to be passed to emailer test method (1155b0c4)
*  add uid of user who created flag to action:flags.create (069ac60f)
*  new client-side hook `filter:api.options` to allow plugins to modify api requests (7d391d47)
*  keep notifs for one month, load 50 notifications instead of 30 (02f08111)
*  also pass in uid to `filter:email.prepare` (86b0c57d)
*  new hook `filter:email.prepare` (27ea3dcb)
*  new hook static:email.send (bf90d158)
*  show time info for upgrade scripts (14a6c349)
*  add dashboard sub-pages to ACP menu (73dc64d9)
*  recent logins sessions table in dashbaord subpage (2f89b0d7)
*  topics dashboard details subpage (e1ed514b)
*  update user list in dashboard/users on graph update (c57c7703)
*  show list of recent users in dashboard/users (cc938224)
*  req.query parsing and dynamically loading data instead (6fdcae73)
*  new hooks for notifications get/getCount (079a13d4)
*  allow hook unregistration, and temporary page-based hooks (d0136074)
*  report login statistics from analytics data, instead of its own zset (16d3c457)
*  track login sessions for admin dashboard reporting (9a9f366d)
*  track successful logins in analytics (504fd107)
*  pass user picture object into change_picture_modal (c96fd3b1)
*  add logout to invalid session (beb14273)
*  category search test (a592ebd1)
*  pass post object to filter:post.tools (ed3d9dcb)
*  allow defining a list of system tags (0e07f3c9)
*  add category search test, #9307 (bbaaead0)
*  add tag filter to getSortedTopics (9ce6f8ad)
*  ability to re-order topic thumbnails (7223074f)
*  add close button to topic thumbnail modal (db027170)
*  #9304, add category/topic/username to post queue notification emails (0738dae8)
*  add failing test for list append/prepend with list (#9303) (8f0386d9)
*  link to post-queue from topic event (a4b4a556)
*  post-queue topic event (8fd78ce5)
*  add post-queue cache (3f35fd33)
*  newsletter opt-in/out in UCP, closes #21 (3c7cd9a6)
*  load user posts/topics via xhr on infinitescroll (35954734)
*  #9294, put new categories at top (4b2bf12f)
*  add invalid event name to error message (670cde78)
*  new notifications load/loaded hooks on client side (7edc8f45)
*  pass req.session into buildReqObject (a6fa351b)
*  new hook `action:login.continue` (4f976390)
*  banned-users group (53e0d4d2)
*  #9109, ability to delete a post's diffs (eb642f40)
*  add .delete() method to api module (501441b7)
*  doc add description (cc560ca3)
*  add doc for query param (ed11e171)
*  #9234, add pagination to /api/recent/posts/:term? (fffdc4e0)
*  allow sorted-lists on multiple pages (d5d24594)
*  #9232, add profile picture into exported zip (f6cd2862)
*  new hook `filter:login.override`, deprecate `action:auth.overrideLogin` (b820d234)
*  guard password fields in login/register against accidental caps lock (4bb3b032)
*  ability to search categories, #8813 (34c42c6f)
*  restore action:script.load, allow modifying loaded module via static:script.init (05be1c66)
*  async/await redis connection (fdfbc902)
*  async/await psql connection (33bf1b0e)
*  add group name to csv event (672959c1)
* **user:**  icon background selector in change picture modal (95502124)
* **remountable-routes:**
  *  allow category and account routes to be remounted (9021f071)
  *  allow /admin and /post to be remountable (f01af62b)
* **topic-events:**
  *  topic events GET route in write API (dc84559d)
  *  server-side tests for topic events (449c379d)
  *  clear out topic events when a topic is purged (0d4a3775)
  *  client-side handling on topic event log (8e93bf73)
  *  handle newest_to_oldest sort in topic events, WIP (882e6a15)
  *  generic css for timeline-event (2293a07a)
  *  support for uids in topic event payloads (611d1f87)
  *  work in progress topic events logic and client-side implementation (ab2e1ecb)
* **hooks:**
  *  update action:ajaxify.end to use new hooks module (1d775721)
  *  client-side hooks module (01c9b184)

##### Bug Fixes

*  regress. rescheduling shouldn't add to sets that pinning removed… (#9477) (8b79c7f1)
*  logic is hard (4dd38446)
*  run in series (bc0ca61c)
*  wrong variable for cache (2e9efc0e)
*  accidentally committed this (13fa983e)
*  tests (eb240c90)
*  eslint (fa0c92a7)
*  use req.ip instead, since guests can upload as well (ea22cd30)
*  #9492, keep query params on redirect (36f119a9)
*  stripTags for editing sorted list items as well (93598982)
*  #9487, session data gathered during a session is lost upon login (1fee6a70)
*  failure on session reroll 🍣 test (f4c5050a)
*  registration interstitials not handling promise rejections properly (e845c34b)
*  stripHTMLTags for sorted list entries (75073c0e)
*  restore original behavior for up/downvoting when logged out (e50408b4)
*  let recent replies respect oldest/newest sort settings (60eed8d8)
*  #9483, fix events count display (6907837f)
*  escape flag reason (161081e9)
*  copy change on plugin activate to instruct admins to rebuild as well as restart (95d5359c)
*  updateCategoryTagsCount (2dc3283f)
*  #9473 (#9476) (036f935f)
*  #9474, load hooks on page load (1af34b43)
*  spec (d09cdc04)
*  #9466, don't call leaveRoom in maintenance mode (f32ea173)
*  exempt ST from being del/res via last main posts (#9468) (a0dd9080)
*  #9462, on install copy default favicon (784600d9)
*  #9463 (c5ae8a70)
*  #9465 (4041e786)
*  #9450 express session saved even if saveUninitialized explicitly passed in (9c52fd2e)
*  acp crash (cb53a64c)
*  #9447, include query params in previousUrl (536591f8)
*  thumb count not updated when uploading multiple thumbs at a time (1ad1787e)
*  change email button stays disabled if user submitted an invalid email (01f63e5d)
*  use app.logout() to clear session after deleting user (cfdef77b)
*  ./nodebb help with commander@7 (#9434) (2a03012e)
*  hide titleRaw for deleted topics as well (edf80cfb)
*  #9410, fix post queue (c5dda64f)
*  privilege tables (9052db93)
*  #9420, paginate after loading notifications (67b09cba)
*  hooks for alert animate, no more fadein/fadeout for reconnect alert (d9e20290)
*  #9414, use posts:view_deleted (e42b152f)
*  preserve order when changing parent (2ceda70a)
*  #9411 (3c4e93a3)
*  #9412 (cef58d1d)
*  #9406, update flag post tools (93c595d9)
*  typo in switch..case (d8ff9851)
*  #9404, show signatures if the target user has signature privilege (801570e4)
*  selector (ee69c1f8)
*  sorting when filtering by uid (75553b24)
*  allow local (and overridden) login strategies to pass Error objects back (98b72ca5)
*  category search not using uid (6aa60b63)
*  inf scroll with subfolder install (262e059f)
*  flicker on dashboard (2041b808)
*  #9398, crash on post flag (90d64fe1)
*  #9395, pass all data from client to Topics.reply (#9396) (a8f7b244)
*  lint (4ac38ab2)
*  #9394, fix guest handles (eb360351)
*  #9387, don't try to load undefined images (03e30634)
*  #9389, allow admins to add themselves to private groups (5c59354c)
*  #9386, add missing translation string (482641e3)
*  #9383, don't show deleted topic titles in inf scroll (e789fe8d)
*  #9378, crash on verifyToken if API Token settings not saved (null case error) (cc489708)
*  closes #9382, fix digest topic links (35700d16)
*  spec (1e1127bd)
*  regression from filter hook change (53f67ff3)
*  crash if unreadTopics is undefined (617f4730)
*  dont crash if login el doesnt exist (f45c0aab)
*  regression via c1b3079d93fb4c49ba62a4be5279b7bff8e5a54d (2a939aad)
*  change notification updateCount to use client-side hooks (84725130)
*  tests (39b0e0fb)
*  #9370, show correct teaser index if sorting is newest to oldest (9382fc6d)
*  don't copy if src doesn't exist (ebccc794)
*  #9362 best not to check file exists on every page load; copying favicon to uploads/system folder instead (771a8955)
*  #9362 (ad565495)
*  regression where login redirect for admin routes didn't go to local=1 (678e8f0f)
*  lint (f4f61b92)
*  if no in passed use "titles" to match header search (e787e6ea)
*  add back middleware.authenticateOrGuest (166d65a1)
*   request authentication called twice in account routes (e3b2c00d)
*  #9354, don't close quicksearch results if mouse is down on them (8a4c361e)
*  #9339, only log email errors once per digest, notification push (3aa26c4d)
*  winston.info (3f42d40c)
*  #9351 bad logic when inserting rows to privilege tables, also a missing tfoot :foot: (c5e25788)
*  app.parseAndTranslate to always return promise (c2650169)
*  bug where fallback window trigger was not firing if there were no hook listeners attached (1e579428)
*  bad assignment (c8b78654)
*  #9348 incorrect redirect via connect-ensure-login (fbe9215b)
*  bug where loginSeconds setting was ignored for local login (f806befd)
*  remove old dep (b58bacaf)
*  notif pruning (2737f653)
*  notification prune test (ca817631)
*  user icon text overflow in some cases (2b7d0b5a)
*  use components for toggleNavbar instead (114e3a1e)
*  allow interstitial callbacks to be functional (no cb required) (9bf94ad5)
*  don't publish before pubClient is connected (cdf5d18f)
*  remove unused async (48f1e265)
*  in setupPageRoute helper, buildHeader after plugin hooks have fired (984c9dd9)
*  timeago missing on table update (655e2c67)
*  wrong qs param, allow string to be passed to util.getDaysArray (f8e1a74c)
*  wrong call to sortedSetAdd (dbe5f702)
*  session not persisting to database in some scenarios (020f0b83)
*  allow hidden inputs in user settings page (beaac0a1)
*  use root context if buildAvatar context is undefined (b4c0b32b)
*  use bootbox module (fa91525a)
*  #9307, use _.flatten (25c8f026)
*  awaiting res.render in send404 controller > > A plugin wanted to use `response:rotuer.page` to 404 a specific page on some condition. res.render returns early in send404 and so must be awaited otherwise multiple responses will be sent (2fef4627)
*  do not overwrite `config.port` from URL, if it's already set (34096b73)
*  switch back to getSortedSetRange (8686fbfa)
*  settings v3 (91734a64)
*  another topic thumb test fix (782bef5e)
*  thumbs.associate logic fix + tests (7ebb6d30)
*  missing awaits, possible test fix (7665adf7)
*  #9301, dont call sitemapstream if there are no entries in categories/pages/topics.xml (9a6cf3d9)
*  properly incase its the same path (807b0d43)
*  numThumbs count on associate (76bcc0c9)
*  missing cache deletion calls for post-queue cache (1490b32d)
*  use of removed URL to get post data (36e8d251)
*  init topic events from webserver.js (b81508c4)
*  check null topics (b753c69c)
*  guard against null topics (58cd797e)
*  tests, new categories go to top now (fc90f32e)
*  #9292, messageobj.content already parsed (c953b1b3)
*  clear category cache on copy parent (765db86d)
*  delete category cache key on category create (ed3e9ce2)
*  typo (c61cc37b)
*  wait for event.log to finish before killing process (a5fa212f)
*  tests, only generate csrf_token on 404 gets (b6493f89)
*  #9287, generate csrf_token on 404 (94f72d60)
*  do not blindly escape a notification's bodyLong (783786cf)
*  pass jquery object in to action:notifications.loaded hook (16610b2d)
*  #9275, (0cca6893)
*  don't use global bootbox obj (cfa0d423)
*  remove console.log (550cd995)
*  move service worker back to relative_path/service-worker.js (fca17cb7)
*  spec (ab0ef442)
*  markread selector (a4878a5b)
*  position when scrolling up (3090a2ae)
*  cache key collision (e40af441)
*  tests breakage due to 67e3fb64981fe2310b17515e1f18c32021a5e983 (5c21c33e)
*  register returnTo logic to match login route (67e3fb64)
*  tests (492cbc62)
*  posts.uploads.sync dissociates uploaded thumbs of the main pid (f79aeef8)
*  update grammar on unban text (68da1c55)
*  privileges page - tweak icon position and width, group name wrapping (c729adeb)
*  autofocus on search field in ACP > Manage > Plugins (4af9c2fc)
*  openapi test specs (cabec378)
*  include admins (7c9674de)
*  include admins, limit to category mods, correct privilege name (eaf9d2e4)
*  http 200 test for api routes (bd583963)
*  invalid API call when unfollowing a user (58655e9a)
*  example (833c73e8)
*  #9127, scope service worker to relative_path for the forum (#9239) (2bc74cff)
*  update docs (4c12e0aa)
*  broken test after sorted-lists logic change (d6f60f45)
*  clear all locks on restart (9834f72f)
*  `action:admin.settingsLoaded` to use new hooks lib (5131eb6b)
*  crash on firing action hook that had no listeners registered (b0f5d5a5)
*  bug where `action:settings.sorted-list.loaded` fired early (1a04ec64)
*  regression where `filter:settings.set` no longer received sorted-lists (a8be6fb8)
*  #9231, fix redis pubsub connection (5bc1f5b4)
*  don't translate message on every ajaxify (a29dd21d)
*  tests (05c53394)
*  improper override of req.body.username in login logic (74199220)
*  full settings hash not passed through to action:settings.set (473d5f4a)
*  #9223, don't overwrite stmp settings (a5bf9779)
*  multiple sorted-lists do not save to the correct set (4029ec37)
*  pass module name to `static:script.init`, +comments (f8bf9e99)
*  handle delete and update for categories:name zset (e8429f50)
*  tests remove old routes (faeb6373)
*  removed object routes (d41ce873)
*  removed methods (647d3ba8)
*  incorrect return for Thumbs.get() if thumbs were disabled (7b090c58)
*  script failure if client-side page script does not exist (7da1b43f)
*  bug where `action:ajaxify.end` was never called if there were no init scripts (faf59603)
*  update js concatenation logic to bundle scripts.rjs into minfile regardless of build environment (8ff07bc1)
*  #7125, allow list for page route, configurable via plugin hook (f975063b)
*  error on flag list if no flag filters were saved in session (942d9247)
*  mod cid filter accidentally saved in session (35c92d0c)
*  more tests for #9217 (ce7c74b2)
*  tests for #9217 (f2a5cd0b)
*  missing return for #9217 (27cae0d5)
*  #9217, render 400 error page on bad access to /register (b2b1450e)
*  redis check compat tests (78896fc6)
*  registration completion overriding returnTo if it was already set (a186ea0f)
*  add missing user delete event types (5c1b7429)
*  missing option for user-deleteAccount on ACP Events page (1c420602)
* **deps:**
  *  update dependency html-to-text to v7.1.1 (427e4f47)
  *  update dependency redis to v3.1.2 (35a4d0be)
  *  update dependency validator to v13.6.0 (e3d5d8d7)
  *  update dependency nodebb-plugin-composer-default to v6.5.27 (1b846271)
  *  update dependency redis to v3.1.1 (286a63e3)
  *  update dependency nodebb-theme-persona to v11.0.17 (51d58ce6)
  *  update dependency nodebb-theme-vanilla to v12.0.7 (16a1ba57)
  *  update dependency postcss to v8.2.10 (31cec2de)
  *  update dependency nodebb-plugin-mentions to v2.13.9 (fe087806)
  *  update dependency mongodb to v3.6.6 (#9467) (4264b236)
  *  update dependency sharp to v0.28.1 (34cbc9e2)
  *  update dependency nodebb-theme-persona to v11.0.16 (a8330b6d)
  *  update dependency nodebb-theme-vanilla to v12.0.6 (c02310b8)
  *  update dependency nodebb-theme-persona to v11.0.15 (316c71d7)
  *  update socket.io packages to v4.0.1 (e7776f8d)
  *  update dependency redis to v3.1.0 (fd9ff334)
  *  update dependency nodebb-plugin-composer-default to v6.5.26 (#9446) (8d9afbc6)
  *  update dependency postcss to v8.2.9 (6f51c460)
  *  update dependency nodebb-theme-persona to v11.0.14 (#9443) (fecfcd81)
  *  update dependency nodebb-theme-persona to v11.0.13 (#9437) (e5cc6e40)
  *  update dependency nodebb-theme-slick to v1.4.6 (dfdb0050)
  *  update dependency nodebb-theme-persona to v11.0.11 (27de58f2)
  *  update dependency benchpressjs to v2.4.3 (382f75bc)
  *  update dependency nodebb-plugin-composer-default to v6.5.25 (24236718)
  *  update dependency nodebb-theme-vanilla to v12.0.5 (89973d80)
  *  update dependency nodebb-plugin-composer-default to v6.5.24 (dec34446)
  *  update dependency nodebb-theme-persona to v11.0.10 (f78b4ba6)
  *  update dependency nodebb-plugin-composer-default to v6.5.23 (#9422) (e35d0741)
  *  update dependency nodebb-theme-persona to v11.0.8 (124cb9d9)
  *  update dependency benchpressjs to v2.4.2 (1dddcb49)
  *  update dependency nodebb-plugin-mentions to v2.13.8 (d511216c)
  *  update dependency connect-mongo to v4.4.1 (29ff5bb9)
  *  update dependency nodebb-theme-persona to v11.0.7 (c5734063)
  *  update dependency nodebb-theme-vanilla to v12.0.4 (#9409) (870e6c2c)
  *  update dependency nodebb-theme-slick to v1.4.5 (#9408) (24be8642)
  *  update dependency nodebb-theme-persona to v11.0.6 (#9407) (b50739c1)
  *  update dependency nodebb-plugin-spam-be-gone to v0.7.9 (#9405) (9359cae9)
  *  update dependency nodebb-theme-persona to v11.0.5 (47b2b97f)
  *  update dependency nodebb-plugin-composer-default to v6.5.21 (#9401) (2f70ac5a)
  *  update dependency mongodb to v3.6.5 (fcd887fd)
  *  update dependency nodebb-plugin-composer-default to v6.5.19 (#9391) (1631f159)
  *  update dependency nodebb-plugin-composer-default to v6.5.17 (#9384) (8d401760)
  *  update dependency nodebb-theme-persona to v11.0.3 (27facadb)
  *  update dependency socket.io-redis to v6.1.0 (adaddde6)
  *  update dependency nodebb-plugin-composer-default to v6.5.16 (a98e92b4)
  *  update dependency nodebb-plugin-markdown to v8.12.7 (#9371) (56b0bfd5)
  *  update dependency nodebb-theme-vanilla to v12.0.2 (#9369) (8923d34c)
  *  update dependency nodebb-theme-persona to v11.0.2 (#9368) (fa71c483)
  *  update socket.io packages to v4 (#9363) (13f3c504)
  *  update dependency postcss to v8.2.8 (680cf5ef)
  *  update dependency nodebb-theme-persona to v10.5.17 (2645bf55)
  *  update dependency connect-mongo to v4.3.1 (59459074)
  *  update dependency connect-mongo to v4.3.0 (f388086a)
  *  update dependency autoprefixer to v10.2.5 (4f4cdacc)
  *  update dependency postcss to v8.2.7 (72db3754)
  *  update dependency nodebb-plugin-composer-default to v6.5.13 (017af7cb)
  *  update dependency jquery to v3.6.0 (dd6082a0)
  *  update dependency connect-mongo to v4.2.2 (ec0912cc)
  *  update dependency nodebb-plugin-spam-be-gone to v0.7.8 (#9337) (536bae70)
  *  update dependency nodebb-plugin-composer-default to v6.5.12 (2674de01)
  *  update socket.io packages to v3.1.2 (510eb1f9)
  *  update dependency nodebb-theme-persona to v10.5.16 (217d3afd)
  *  update dependency nodebb-plugin-emoji-android to v2.0.5 (e8209341)
  *  update dependency sharp to v0.27.2 (c5231f10)
  *  update dependency nodebb-theme-vanilla to v11.4.5 (8596dcc4)
  *  update dependency nodebb-theme-persona to v10.5.15 (753ab0a0)
  *  update dependency nodebb-theme-persona to v10.5.14 (ed503b80)
  *  update dependency nodebb-theme-persona to v10.5.12 (ddd8fa31)
  *  update dependency benchpressjs to v2.4.1 (4ee3a8e8)
  *  update dependency nodebb-theme-persona to v10.5.10 (7f8fd4b0)
  *  update dependency nodebb-theme-persona to v10.5.9 (5dd748c6)
  *  require xregexp 5.0.1 (86e911ba)
  *  update dependency xregexp to v5 (513cd1c3)
  *  update dependency nodebb-theme-persona to v10.5.8 (54b4dc1d)
  *  update dependency postcss to v8.2.6 (4d92af5a)
  *  update dependency nodebb-theme-persona to v10.5.7 (#9288) (c2459fd5)
  *  update dependency nodebb-plugin-composer-default to v6.5.10 (b312725f)
  *  update dependency nodebb-theme-persona to v10.5.6 (4599144f)
  *  update dependency nodebb-widget-essentials to v5.0.3 (#9284) (eb9f058f)
  *  update dependency nodebb-plugin-composer-default to v6.5.9 (6e14014b)
  *  update dependency nodebb-plugin-composer-default to v6.5.8 (674a31d1)
  *  update dependency nodebb-theme-slick to v1.4.3 (#9278) (d3923585)
  *  update dependency nodebb-theme-vanilla to v11.4.4 (#9279) (1f28e8c3)
  *  update dependency nodebb-theme-persona to v10.5.5 (#9277) (a7b46adc)
  *  update dependency connect-redis to v5.1.0 (#9276) (83a0b6b8)
  *  update dependency nodebb-theme-persona to v10.5.4 (#9270) (dc145284)
  *  update dependency nodebb-theme-vanilla to v11.4.3 (#9272) (2fda6774)
  *  update dependency nodebb-theme-slick to v1.4.2 (2b12905d)
  *  update dependency nodebb-theme-lavender to v5.2.1 (fb2f1143)
  *  update dependency nodebb-theme-slick to v1.4.1 (#9262) (2cfab367)
  *  update socket.io packages to v3.1.1 (#9253) (2147d386)
  *  update dependency postcss to v8.2.5 (1fa0d4f4)
  *  update dependency nodebb-plugin-emoji-android to v2.0.1 (42e365d9)
  *  update dependency nodebb-plugin-markdown to v8.12.6 (4fd6027b)
  *  update dependency nodebb-plugin-mentions to v2.13.7 (8a2fe3d9)
  *  update dependency nodebb-theme-vanilla to v11.4.2 (2326e9a6)
  *  update dependency nodebb-theme-persona to v10.5.3 (9245ffaf)
  *  update dependency nodebb-plugin-dbsearch to v4.2.0 (389690c3)
  *  update dependency nodebb-plugin-composer-default to v6.5.7 (13e12c95)
  *  update dependency json2csv to v5.0.6 (0aa8e03f)
  *  bump theme deps for #9244 (44019e28)
  *  update dependency mongodb to v3.6.4 (56e4e56b)
  *  update dependency nodebb-theme-persona to v10.5.1 (04411449)
  *  update dependency nodebb-theme-vanilla to v11.4.0 (#9238) (897d29ec)
  *  update dependency nodebb-theme-slick to v1.4.0 (#9237) (8e2deab4)
  *  update dependency nodebb-theme-persona to v10.5.0 (#9236) (4f842a79)
  *  update dependency nodebb-theme-lavender to v5.2.0 (47fd1634)
  *  update dependency nodebb-plugin-dbsearch to v4.1.3 (1e10ebfb)
  *  update dependency nodebb-plugin-composer-default to v6.5.6 (0e2b329b)
  *  update dependency autoprefixer to v10.2.4 (6c3b1fde)
  *  update dependency nodebb-plugin-markdown to v8.12.5 (05901fcd)
  *  update dependency nodebb-theme-persona to v10.4.1 (a9b3fb37)
  *  update dependency sharp to v0.27.1 (a90773a6)
  *  bump persona to get timeline style (ca14c0e2)
  *  update dependency postcss to v8.2.4 (5b2f0be0)
  *  update dependency autoprefixer to v10.2.3 (d99cb1cf)
  *  update dependency postcss-clean to v1.2.0 (4232d97b)
* **#9315:**  api v3 post, put, del JSON (0d59fe3d)
* **remountable-routes:**
  *  more fixes to remountable routes (9d17f397)
  *  bug with user routes remounting to itself (bc68e990)
* **#9252:**  pass site domain to nodemailer (#9254) (5e5d37c3)
* **topic-events:**
  *  topicEvents.init() test (aa8b84bb)
  *  repeated invocations of Posts.addTopicEvents caused dupes to be added to DOM (df2fdd56)
* **hooks:**
  *  bug where hook firing would fail if there were no listeners (efff8e2a)
  *  fallback handling for core invocations of hooks.fire (412d2858)

##### Other Changes

*  schema docs for new ACP dashboard subpage routes (0804d547)

##### Performance Improvements

*  increase batch size for notifs, run parallel (728ac5ff)
*  faster category tags upgrade script (0dad568c)
*  use setObjectBulk (95033ef7)
*  make upgrade script faster (a07509f7)
*  make upgrade script faster (0959b124)
*  cache base_url (cf4002bc)
*  single call to get digest topics, dont send duplicate topics (5ce28207)
*  single db call to add all uids (90d5c9da)
*  make digests a little bit faster (0185ea1b)
*  only load thumbs for topics that actually have thumbs (7eebcbdb)

##### Refactors

*  make debug handler async (1db8920b)
*  widgets (#9471) (397baf02)
*  style, no need to convert length to string (d00268c9)
*  deprecate action:script.load, use filter:script.load instead (d1685600)
*  remove uncessary check (f316c4d4)
*  remove async.each/reduce from hooks for better stack traces (d05d7091)
*  use hooks.fire (0d3979ef)
*  fix variable name (1982edfd)
*  account edit logic and template, closes #9364 (98bf4064)
*  automatically authenticate all requests setup through route helpers (#9357) (7da061f0)
*  async listen testSocket (0021c601)
*  remove startsWith/endsWith (48bc23c0)
*  app.parseAndTranslate to return promise if no callback passed (b5a6a314)
*  privileges, export modules directly (#9325) (293b7c26)
*  have Graph.init and Graph.update return promises (3fa2e3ce)
*  abstract out some client side dashboard code into modules, analytics subpages for users, topics, and logins (f561799f)
*  move picture change client-side logic to its own rjs module (28f6931e)
*  remove dupe code (5286f208)
*  thumbs.associate accepts both relative path and url in path arg (3e6640ef)
*  move post queue retrival code to posts.getQueuedPosts (36f20211)
*  call topic events init from within file itself (6074a0fb)
*  improvements (970bd06f)
*  update dom after diff deletion better (a2a7557c)
*  removed 3 lines (4447a64e)
*  use Map to track sorted lists in Settings.set() (65de2e76)
* **user:**  all plugins to change list of icon background colours (fbccf6e2)
* **remountable-routes:**
  *  rename `src/routes/accounts.js` to `src/routes/user.js` to better match the route prefix (1f28713f)
  *  allow certain route prefixes to be mounted elsewhere (92758ec5)
* **topic-events:**
  *  expose addTopicEvents method in topic posts lib (9559fad8)
  *  break out some logic in events.get into local modifyEvent method (cec3fc93)
  *  fire topic event logging in topics/tools instead, pass uid into payload (425eca14)
* **hooks:**
  *  deprecate `action:script.load` client-side hook (8e5687a4)
  *  better error handling (e7bd038d)

##### Reverts

*  revert tag sort (f9df6431)
*  change toPid truthy (56523aa1)
*  bring back backwards compat (a1c01446)

##### Code Style Changes

*  eslint (b5ce8d25)
* **remountable-routes:**  abstract removable routes code to a separate local fn (16c1d6e9)

##### Tests

*  remove logs (435067aa)
*  clear cache between runs, require middleware later in helpers (2ea468da)
*  log (d15e2710)
*  remove equals (354e0a82)
*  test times (2f401d7d)
*  log (80ef1082)
*  added test for session id reroll on login (a3a7ab3a)
*  add missing test (8ef38cb2)
*  double filter test (70a653d0)
*  admin/manage/users tests (0e67ab01)
*  fix spec for topic thumbs (4c078084)
*  added missing properties to topicObject (1d9ade4c)
*  added missing test file (b31f6dd2)
*  topic reordering tests (ad54b174)
*  additional tests for topic thumbs (50664487)
*  added more topic thumbnail tests (28b30134)
*  post diff deletion tests (72b050b4)
* **user:**  added additional tests for icon background colour (d3a9e76a)

#### v1.16.2 (2021-01-21)

##### Breaking Changes

*  unescape header navigation originalRoute [breaking] (6cb5888c)
*  allow override of local fns in login controller, 400 instead of 500 for wrong login type [breaking] (1cf0032d)

##### Chores

* **deps:**
  *  update dependency husky to v4.3.8 (a6f5de86)
  *  update dependency eslint to v7.18.0 (afbef95f)
  *  update dependency husky to v4.3.7 (d3e041e2)
*  update changelog for v1.16.1 (b6d71710)

##### New Features

*  add filter:email.cancel to allow plugins to cancel sending emails (c2e23706)
*  grant plugins the ability to specify options to the SSO handler (ab11435e)
*  add unread-count badge if navigator contains /flags route (c07e1e16)
*  handle HTTP 429 as a response code (8bbb3208)
*  add write API route for checking login credentials (56f929ed)
*  #8813, faster category search dropdown (072a0e32)
* **api:**  schema definition for new credential checking route (0da28432)

##### Bug Fixes

* **deps:**
  *  update dependency bootbox to v5 (#8751) (b5cb2f8b)
  *  update dependency nodebb-theme-persona to v10.3.19 (f16cdc9f)
  *  update socket.io packages to v3.1.0 (3d1224e1)
  *  update dependency nodebb-theme-slick to v1.3.8 (1901ecb2)
  *  update dependency sortablejs to v1.13.0 (36069da2)
  *  update dependency autoprefixer to v10.2.1 (5b3c48fd)
*  https://github.com/NodeBB/nodebb-plugin-webhooks/issues/3 (c608b0e8)
*  restored sanity checks for post move socket calls (d85ad10d)
*  don't chagne scrollTop if at the top of page (0fa4c11e)
*  #9206, fix double escaped arguments (1590cdf1)
*  regression caused by 77ab46686db62871f149419a368c35628453884e (f5fcd232)
*  don't crash if fullname is not a string (4fb90787)
*  #9204, bypass groupname length check for system group in upgrade script (00ba89b6)
*  add missing await (9938a139)
*  ssoState passed to strategies even if not called for (9b289eca)
*  use max (0a471b76)
*  keep 60 topics minimum on topic list (c30b40ab)
*  access checks for tags and thumbs get route (77ab4668)
*  #9194 global mods unable to pin or unpin topics (c0fb1cb5)
*  #9192, exit after logging error (ef16cd2e)
*  make sure inviter user exists (69419571)
*  #9178 missing language strings (and fallbacks) for post-queue (a407a51d)
*  #9185, fix string boolean values (89e6c75d)
*  test for topicThumbs (e817d5be)
*  #9184 proper relative_path usage in topic thumbs.get (66da6bcd)
*  #9169, re-adding v2-style behaviour so as to not break the API... yet (b742229e)
*  #9177, handled multiple deleted users properly (eaf62d39)
*  broken test caused by errant .pop(), missing await (4ede18ce)
*  missing error message (d83d40cf)
*  test for https://github.com/NodeBB/NodeBB/pull/9180 (8ece64ab)
*  #9176, limit description size (da546970)
*  broken test due to change in response code (9534d956)
*  return a user object, not an array of user objects (in v3 login check route) (97d678fd)
*  bad execution flow in utilities.login (8c86f5bc)
*  missing breadcrumbs in schema (87a7d85e)
*  random loadFiles added by errant vscode autocompletion (53422413)
*  add missing breadcrumb on /user/<slug>/categories (6cbb77af)
*  `--help` usage info (a51c5698)

##### Performance Improvements

*  use only required calls (f0dd302c)

##### Refactors

* **api:**
  *  post move to write API (966c4117)
  *  post diffs to use write API (e118e59c)
*  change var to const (1374e0ee)
*  single remove call (25ab99b9)
*  flags lib to have a separate getFlagIdsWithFilters method (6a1311b4)
*  split out logic dedicated to calculating unread counts, to a separate local method (03a0e72f)

##### Code Style Changes

*  update codeclimate config to be less sensitive to duplicate code blocks (fdf03472)

#### v1.16.1 (2021-01-06)

##### Chores

*  increase test timeout (0d7dfeeb)
*  add deprecation notice to topic thumb tpl value (05d8b3c3)
*  minor reordering of lines (8e5a413e)
*  update changelog for v1.16.0 (1437c62f)
* **deps:**
  *  update dependency eslint to v7.17.0 (18ae7cf7)
  *  update dependency eslint to v7.16.0 (2610dfcf)
  *  update actions/setup-node action to v2 (#9115) (55a55ea2)
* **api:**  add deprecation notices re: #9123 (cdff8d28)

##### New Features

*  #9173, show installed plugin versions in ./nodebb plugins (8c31afae)
*  added note that you can now upload videos (4d6ddf6d)
*  automatically attempt socket.io reconnection on ajaxify (e5edbc6f)
*  #9135, don't try to reconnect forever (c1ecfd1e)
*  add confirmation modal when assigning admin:admins-mods privilege (d90aa958)
*  allow dashes in privilege group names (5b8558e9)
*  allow multiple privileges to be defined for a given admin socket call (3aa5beb8)
*  rename admin middleware header hook (fcc1e24a)
*  explicitly add filter:admin/header.build hook (75b1bbd0)
*  fix more tests, add more routes, update api test suite (cb32e32a)
*  add registration/complete route, fix some other tests (14c51e3c)
*  add missing schemas for various ACP settings routes (9de35ec5)
*  add missing schema for category update and deletion (d6de9253)
*  add schema for api ping routes (d85181e0)
*  normalize paths before comparison (df8d62ba)
*  additional test to ensure any new routes added to express have a corresponding schema doc (dbe85630)
*  update html-to-text closes https://github.com/NodeBB/NodeBB/pull/8810 (a2152dd1)
* **api:**
  *  closes #9123 category and topic routes migrated to Write API (edb8da1e)
  *  #9123, migrate rest of the getObject controllers to Write API (9ecfac9b)
  *  #9123, migrate /api/post/pid/:pid to Write API (e267f295)
  *  group ownership API route, switch client-side to use API route (32e36f7b)
  *  add schema for groups update route (98550d61)
  *  added schema for email unsubscribe token (4fc13377)
* **acp:**
  *  admin tags privilege (223f0a55)
  *  admins-mods privilege (fb46a8d9)
  *  added new admin privilege for groups management (da191341)

##### Bug Fixes

*  #9130, remove timestamp prefix from thumbnail names in API response (171017c3)
*  #9166 missing relative path in topic thumbs modal and topic list (b9ba44ed)
*  #9163, fix total connection count on ACP (1968bf50)
*  genericise .necro-post, bump persona to latest (041d45c3)
*  #9126, skip base64 and long values (33290850)
*   #9127, use assets path (3121215e)
*  inability for admins with setting privilege to save plugin settings (a555f024)
*  #9149, server-side handling of disableChatMessageEditing (895e3d93)
*  #9149, incorrect client-side `disableChatMessageEditing` value for admins/gmods (d27815a8)
*  #9151, dont use service worker for posts requests (20c1b684)
*  #9150, fix selector so it doesn't add img-responsive to profile pics (183cabe9)
*  tests (28740360)
*  dont show deleted posts in navigator (931105e6)
*  bug in api path existence test (501a7b77)
*  #9136, fix move topic/post timeout errors (2ef72a94)
*  bad assignment logic in middleware.renderHeader (34ccabe3)
*  #9113, wrong path separator used in thumbs.get (da4f9118)
*  email testing and settings change from ACP (2be396ff)
*  removing ability to specify deprecated topic 'thumb' on topic creation (713f029d)
*  #9129, event is fired on socket.io (b369dc88)
*  subfolder handling in tests (bbd97ccb)
*  .flat() not defined in v10, added debug router to exclusion list (6062039d)
*  all tests, wrap up work (f416dc17)
*  two more routes (9c2de86a)
*  api tests (b9a61d2d)
*  don't return deleted: 0 for ephemeral groups (600807fb)
*  send fewer items to client-side for ACP settings/email page (438fa5c8)
*  errors in write-api schema (c079051b)
*  broken tests from last round of fixes (990f1077)
*  bad error message for request body api test (a9629357)
*  modify backreference test to not check router.all() calls (7fc329de)
*  add missing token generation route to write api spec (eef052c1)
*  trigger action:posts.edited (b7b588f5)
* **deps:**
  *  update dependency autoprefixer to v10.2.0 (e445ae5a)
  *  update socket.io packages to v3.0.5 (fd045c67)
  *  update dependency nodebb-theme-persona to v10.3.16 (87e333b4)
  *  update dependency benchpressjs to v2.4.0 (4524f825)
  *  update dependency nodebb-theme-persona to v10.3.15 (189be9e0)
  *  update dependency nodebb-widget-essentials to v5.0.2 (1dd1d3b0)
  *  update dependency nodebb-widget-essentials to v5.0.1 (#9144) (f55dddb2)
  *  update dependency nodebb-plugin-composer-default to v6.5.5 (6d980d26)
  *  update dependency sharp to v0.27.0 (4919e596)
  *  update dependency nodebb-theme-persona to v10.3.12 (37b35f7d)
  *  update dependency nodebb-theme-persona to v10.3.11 (db4c6863)
* **tests:**  handle nested allOf blocks (77a5adb6)
* **api:**
  *  failing test due to missing file (3959a7bd)
  *  tests (80ee3dfb)
* **pwa:**  #9127 service-worker.js missing on subfolder installs (b8d4709e)

##### Refactors

* **openapi:**  update TopicObject component to reference TopicObjectSlim in its schema (fb3f3f72)
* **api:**
  *  deprecated groups update socket in favour of API lib (1cd2689c)
  *  update group deletion calls to use write API (e640a41a)
*  schema backreference test to use map instead of reduce, properly check write-api routes (878ee067)

##### Tests

*  changed test a bit to see what is going on (5f038dff)

#### v1.16.0 (2020-12-17)

##### Breaking Changes

*  enable topic thumbnails across the board [breaking] (9342d611)
*  #8808, remove utils.slugify (4a0d8833)

##### Chores

* **deps:**
  *  update dependency husky to v4.3.6 (2371b432)
  *  bump persona to 10.3.9 (91899329)
  *  bump composer to 6.5.1, re: #9067 (228cfa67)
  *  update dependency husky to v4.3.5 (48a31763)
  *  update dependency husky to v4.3.4 (cf5c482d)
  *  update dependency eslint to v7.15.0 (f4c4d671)
  *  update dependency lint-staged to v10.5.3 (3e6f7359)
*  appease codeclimate (9f62df15)
*  add comment for clarification (6037f5ee)
*  update changelog for v1.15.5 (b0299326)
* **i18n:**  fallbacks for new topic thumb keys (15f1a089)

##### New Features

*  add new client side hooks (a15ef53c)
*  remove max age since cache is cleared when thumbs change (ab96f526)
*  show alt text instead of images in teasers (#9107) (d28581eb)
*  migration of old topic thumbs to new format (74d73313)
*  allow plugins to override ACP relogin challenge (4c87f301)
*  add user.email.confirmByUid for sso plugins (80de572a)
*  add thumbs to category data return (24e754d1)
*  broken test for bad topic thumbs logic (ce8057f3)
*  clent-side modal for managing topic thumbs (a30c8ab5)
*  raise maximum thumb size to 512 (37c367d6)
*  associate topic thumbs with post uploads (for the mainPid) (1c5cdb51)
*  helper method to get thumbs by pid (cb7e4cda)
*  closes #9048, tests for topic thumbs routes, write API schema (59506833)
*  tests for topic thumbs (4152aa55)
*  server-side work for #9047 (ef7d6db9)
*  core work for #9042, thumb deletion now accepts uuids (b5d910f5)
*  more work on topic thumbs refactor (90497e3e)
*  expose uploaded thumbnails to client-side via API (1257aa98)
*  server-side routes for handling multiple topic thumbnails (7e9e08f7)
*  allow uploadThumb controller to be called in code (98cd9e35)
*  move upgrade script and make it shorter (60e7de0d)
*  allow clicks on navigator, clean dupe code (74274b60)
*  socket.io 3 changes (#8845) (1c45fa1b)
* **deps:**  update lavender to allow category sections (6d186be0)

##### Bug Fixes

* **deps:**
  *  update dependency nodebb-plugin-composer-default to v6.5.4 (#9120) (fff0cea6)
  *  update dependency nodebb-theme-slick to v1.3.7 (#9112) (30688b1b)
  *  update dependency nodebb-theme-lavender to v5.0.17 (#9111) (877f4673)
  *  update dependency nodebb-theme-vanilla to v11.3.10 (ff18cdfa)
  *  update dependency validator to v13.5.2 (#9094) (5d718348)
  *  update dependency nodebb-theme-vanilla to v11.3.9 (#9091) (f37dbeed)
  *  update dependency nodebb-plugin-composer-default to v6.5.3 (d036408d)
  *  update dependency nodebb-plugin-composer-default to v6.5.2 (b07fb9ab)
  *  bump composer-default to 6.5.0 (0db49121)
  *  update dependency autoprefixer to v10.1.0 (024d1fef)
  *  update dependency nodebb-theme-persona to v10.3.8 (#9084) (25f697b1)
  *  update socket.io packages to v3.0.4 (62463430)
  *  update dependency nodebb-theme-persona to v10.3.7 (c22cdb51)
  *  update dependency nodebb-theme-persona to v10.3.6 (#9077) (5937fbaf)
  *  update dependency nodebb-plugin-mentions to v2.13.6 (#9071) (a535350f)
  *  update dependency nodebb-theme-slick to v1.3.6 (#9072) (19c438c6)
  *  update dependency nodebb-widget-essentials to v5 (#9070) (d7f5efd9)
  *  update dependency nodebb-plugin-markdown to v8.12.4 (8fb814ba)
  *  update dependency nodebb-theme-persona to v10.3.5 (#9060) (0d082280)
  *  update dependency nodebb-theme-persona to v10.3.4 (#9059) (84e4e480)
  *  update dependency nodebb-theme-persona to v10.3.3 (3d7e2e1e)
  *  update dependency nodebb-theme-persona to v10.3.2 (#9056) (f49ce4ad)
  *  update dependency nodebb-theme-persona to v10.3.1 (#9054) (344caf5c)
  *  update dependency nodebb-theme-lavender to v5.0.15 (#9053) (e7d72d8a)
  *  update dependency nodebb-theme-persona to v10.3.0 (#9052) (dcd6fbaf)
*  api usage (feecd665)
*  #9117, lower query before search (4404e32e)
*  #9114, fix client side groups update for memberPostCids (3ed55799)
*  test (2dee3cbe)
*  don't check "select all" if there are no enabled checkboxes (3ba05755)
*  #9074, fix svg uploads (8f938eba)
*  #9100 topic thumbs in OG image tags (ab987408)
*  update version removal comments to 1.17 for some features (378a3a69)
*  postgres is slow:tm: (05dd8597)
*  derp? (f8dff94a)
*  attempted fix for psql test in topic thumbs (9a4ea04a)
*  use getSortedSetRange instead of getSortedSetsMembers (edf67f34)
*  tests (bd5c4a5c)
*  bad topic thumbs logic on local thumb upload (e83baa97)
*  #9092, Topic thumbnails do not work with third-party uploaders (3e54b70c)
*  move topic thumb tests to root level, so they actually get run by mocha (dd448e2b)
*  tests for topic thumbs (9681557f)
*  iteration logic bug (2170c400)
*  spec (ae943974)
*  changes to thumb resizing logic (67cf5e83)
*  use file lib instead of direct fs module access (08736b18)
*  added back missing topic thumb tests that were removed in last commit (c043cfeb)
*  tests (5ec3b3d0)
*  hack uploader to handle a response from v3 write api (41379e27)
*  #9055, non-standard API response from addThumbs route (340387c1)
*  do not allow thumb deletion route to arbitrarily delete other files in uploads folder (c09c238e)
*  missing file added (ef10b6b7)
*  references to since-removed Topics.thumbs.resizeAndUpload (1f0c1cd2)
*  #9041, remove Topics.thumbs.resizeAndUpload() (43dc3e3e)
*  #9040 (708b1c33)
*  spec (1949d20a)
*  #9085, dont prevent admins from deleting other users (0f480be6)
*  show errors when user delete fails (ff2aa17b)
*  dont start logout timer if adminReloginDuration is disabled (dd9ed236)
*  #9045, no post usage info if '/files/' path received (efa4eca0)
*  reconnectin no longer fires on socket.io 3 (13d5a144)
*  default values, clamp postsPerPage/topicsPerPage to max (1f32d387)
*  #9081, load raw settings before merging (9da0ed40)
*  #9068 (86f0f82b)
*  remove old utils.slugify tests (10cfdd4c)
*  dont strip tags (792e9e70)
*  #9065, settings v2/v3 conflict (91c20cec)
*  #9063, missing handler for passwordless accounts in admin.checkPrivileges middleware (970ccb5a)
*  timeago in navigation (a389a31b)
*  navigation fixes (163d1a39)
*  cache some jquery objects (73d2f51d)
*  add ev.cancelable (63d08395)
*  #9046, pretranslate string (790f4e45)
*  redirect external with absolute urls (648f6215)
*  external path for subfolder installs (458bfc0f)
* **spec:**  broken link to status component (d31aae16)

##### Performance Improvements

*  don't load thumbs if disabled globally, cache thumb results (2d5a224b)
*  dont build identical langs (bb6cc49c)

##### Refactors

*  topic thumbs lib to topics.thumbs (4fc9da81)

#### v1.15.5 (2020-12-03)

##### Chores

*  up persona (c111bde1)
*  update changelog for v1.15.4 (252dddfc)

##### New Features

*  add socket connect/disconnect action hooks (fcb10ebd)
*  allow modifiying browser title on ajaxify (698718f8)

##### Bug Fixes

*  #9032 (64ac483d)
*  sso redirect on /login & /api/login (5d00b089)
*  use file lib instead of directly accessing fs (for Assert.path) (3ea66f84)
*  check uid as well (ef6c3b00)
*  #7597, fix progress bar of cover/profile uploads (7e867cf9)
* **deps:**  update dependency nodebb-plugin-spam-be-gone to v0.7.7 (#9039) (c7f2640a)

#### v1.15.4 (2020-12-02)

##### Chores

*  up persona (dde3171c)
*  fallbacks for nodebb.error (82ca3760)
*  fallbacks for nodebb.topic (5b269bc5)
*  remove test code (07fe959c)
*  update changelog for v1.15.3 (cf157c9b)

##### New Features

*  #9005, use timestamp in profile/cover images (5f0f476b)
*  #8983, update pin tooltip in topic (954dc5b7)
*  option to allow auto-joining of groups (optionally skip the "request membership" step) (685f3c6a)
*  user notification settings for group.leave event (c1a7968d)
*  add defaults for composer help (0cba2691)
*  #8900, postQueue setting for category (1eb5fabd)
*  #8960, update view count after merge (14bb0a44)
*  use correct code (557f0f56)
*  #8989, convert widget nav to dropdown (4c650aee)
*  add handler for 501 api response (007a3258)
*  add translation key for pin icon label with expiry (12b3aa0d)
*  add pinExpiry and pinExpiryISO to topic data (ad8e7700)
*  add cancel button to pin expiration modal (e1432caf)

##### Bug Fixes

*  #9032, fix login redirect for sso plugins (6f68f4d2)
*  #8962, dont show null for purged targets (86b7f8a5)
*  selector on hooks page (3488daa1)
*  notification on group.leave incorrectly showing "Guest has left X group" (f7558c60)
*  #9019, add missing lang strings (b46d2f93)
*  #9018 (e45b5cba)
*  #9015, add default value for dailyDigestFreq (0f1fc10f)
*  spec (cfb7b113)
*  #8997, don't send notifications if uids already in group (f7c738de)
*  #9002 ban templates not user friendly (4317cdea)
*  #9010, show rest of info even if clusterMonitor priv is not granted (202dcef4)
*  #9007 revoke old sessions after adding (d46740f8)
*  guests dont always have sid (70073653)
*  allow guests to see their replies immediately (a4fe4d3c)
*  privs headers (92d1b8a6)
*  pwd reset test (f25000cb)
*  #8991, logout on password reset, dont verify email if password expired (5080f357)
*  don't show topic search if no search privilege (8adbf54a)
*  #8998, allow guests to use write api to post/reply (3cd0c9a4)
*  guest handles to user displayname as well (5a137a0d)
*  timestamp in queue, add post queue strings (546f58bf)
*  #8992, set email:confirmed for first admin user (7f5efc3e)
*  typo in upgrade script, closes #8990 (80f0750b)
*  #8984, post-queue ux (1269103f)
*  order (9ab4fb41)
*  #8982, copy color on tag rename, dont copy if target exists (d3c04afb)
*  tests (b596e948)
*  api test (77a6dbac)
*  remove dupe (cbbda451)
*  csv test (3de692cd)
*  spec, remove old tests (4afdf8bc)
*  #8969, export csv to file (6e6a7a8f)
*  spec for /tag (88e5cda5)
*  #8980, fix lang string (f4d217d8)
*  #8979 (bf171adc)
*  #8971, disallow flags of privileged users (mods, gmods, admins) (1e7cf1cb)
*  #8974, with password login for approval queue (dadb2527)
*  #8974, dont show wrong message on register queue (fdca8b16)
*  #8973, fix timestamp on ban modal (5c3deb4b)
*  #8968, don't show topic search if search is not enabled (c8554b78)
*  flicker on tooltips if server call takes long time (4c7374ea)
*  missing select/clear all checkbox added to category privileges template (#8967) (a56a6577)
*  use package.name for theme.id (#8965) (ba3981e2)
*  winston usages (b8cafefc)
*  #8957 (414caac0)
*   dont go back after delete account actions (7e6427bc)
*  error message (47a19d67)
*  #8954, clear purged replies and toPids (#8959) (5bb5ec46)
*  #8955, popstate to purged topic should go to homepage (39dae0aa)
*  'already-deleting' error on subsequent account content deletions (21d6225c)
*  #8949, faster upgrade script (93863bb3)
* **deps:**
  *  update dependency nodebb-theme-vanilla to v11.3.8 (#9031) (18707940)
  *  update dependency nodebb-theme-slick to v1.3.5 (#9030) (4085f3e6)
  *  update dependency nodebb-theme-persona to v10.2.98 (#9029) (f7d60c43)
  *  update dependency nodebb-theme-persona to v10.2.97 (42b23a3b)
  *  update dependency nodebb-plugin-composer-default to v6.4.10 (#9025) (43bbfb67)
  *  update dependency nodebb-theme-vanilla to v11.3.7 (#9024) (3f597a55)
  *  update dependency nodebb-plugin-composer-default to v6.4.9 (#9023) (110186b9)
  *  update dependency nodebb-theme-slick to v1.3.4 (#9022) (8dc1437e)
  *  update dependency nodebb-theme-persona to v10.2.96 (#9021) (2c9cd286)
  *  update dependency nodebb-plugin-composer-default to v6.4.8 (#9017) (1f5f2e1d)
  *  update dependency nodebb-plugin-markdown to v8.12.3 (9004319e)
  *  update dependency validator to v13.5.1 (7b39cf4b)
  *  update dependency nodebb-theme-persona to v10.2.95 (#9001) (4ddab380)
  *  update dependency nodebb-theme-persona to v10.2.94 (#9000) (877d8554)
  *  update dependency nodebb-theme-persona to v10.2.93 (#8999) (c44d9d2f)
  *  update dependency nodebb-theme-persona to v10.2.92 (#8995) (346b91eb)
  *  update dependency nodebb-theme-vanilla to v11.3.6 (#8987) (6c980db1)
  *  update dependency nodebb-theme-persona to v10.2.91 (#8986) (8258536a)
  *  update dependency autoprefixer to v10.0.4 (#8985) (fad2d342)
  *  update dependency nodebb-plugin-markdown to v8.12.2 (f5714452)
  *  update dependency nodebb-theme-persona to v10.2.90 (5664807d)
  *  update dependency nodebb-theme-vanilla to v11.3.5 (19fe2493)
  *  update dependency nodebb-theme-persona to v10.2.89 (ad60bc06)
  *  update dependency autoprefixer to v10.0.3 (b2f0d38f)
  *  update dependency benchpressjs to v2.3.0 (6c316be4)
* **openapi:**
  *  spec for c1a7968d23f0809e7012edfccf49b193749998ec (69864b87)
  *  spec for 685f3c6aa6173383d6c31b87ed51cf8ed0ca44ce (1bb75e76)
* **acp:**
  *  #9008 undefined link for "no users browsing" state on dashboard (54dc449f)
  *  #9009 no-users-browsing untranslated on dashboard (286243cd)
* **spec:**
  *  from 6e6a7a8f8a9a75500ba1f336cabc882234212f88 (acb57666)
  *  breaking tests (88a60473)
  *  broken test due to canFlag addition (1b1205a9)

##### Refactors

*  remove old hack (73746bb4)
*  add TopicObjectSlim common schema (22715d54)
*  pin/lock threadTools to use topicCommand, rewrote topicCommand to match categoryCommand signature (15c6f32c)

#### v1.15.3 (2020-11-26)

##### Chores

*  bump persona (720170a9)
*  remove console.log (6a819944)
*  move topic route schema up two levels as slug and index are optional (ae402e21)
*  move category route schema up two levels as slug and index are optional (b3b501d7)
*  up persona (0ffc091b)
*  up persona (2f2f0ab7)
*  up persona (5c9ff18e)
*  add missing plugin hook deprecation warning (98a05e4d)
*  pin autoprefixer to latest (46eb7701)
*  up persona (81984285)
*  up slick (5f2fe883)
*  update changelog for v1.15.2 (37965d45)
* **spec:**  replace ugly hack with another hack for optional properties (45a4f136)
* **deps:**
  *  update dependency lint-staged to v10.5.2 (db205e2e)
  *  update dependency eslint to v7.14.0 (80404216)

##### New Features

*  add topicOwnerPost #8778 (c037779f)
*  clear reset tokens on user delete (4f37eddc)
*  select/clear all checkboxes in privilege table (#8941) (00e75de7)
*  show ban reason and expiry in write api responses, if user is banned (afb26bfe)
*  automatically unban users in onSuccessfulLogin (6e5ec3f8)
*  #8925, #8924 (3f337b5d)
*  human readable uptime (672d4da0)
*  allow ACP API access to bearer tokens (3b1c03ed)
*  allow pins to expire (if set) (#8908) (046d0b16)
*  #8637 (903e9d82)
*  add displayname into user obj #8637 (#8909) (9ca44e6f)

##### Bug Fixes

* **deps:**
  *  update dependency nodebb-theme-persona to v10.2.87 (#8946) (167ab3a4)
  *  update dependency nodebb-theme-persona to v10.2.86 (#8945) (5af5cb85)
  *  update dependency nconf to ^0.11.0 (58152606)
  *  update dependency postcss to v8.1.10 (5363ebbb)
  *  update dependency nodebb-theme-persona to v10.2.85 (#8928) (abc32d62)
  *  update dependency postcss to v8.1.9 (d1cb5d48)
  *  update dependency postcss to v8.1.8 (b47a470b)
  *  update dependency nodebb-theme-vanilla to v11.3.4 (#8914) (589f7a56)
  *  update dependency nodebb-theme-persona to v10.2.80 (#8913) (38127b04)
  *  update dependency nodebb-theme-persona to v10.2.79 (#8907) (8e1b2458)
  *  update dependency nodebb-theme-persona to v10.2.75 (b9856179)
*  add topic uid to infinitescroll (6771ca15)
*  #8943, session mismatch modal thrown on login (race condition) (d5845169)
*  #8912 (ac734b83)
*  #8918 (e32cd31e)
*  basepath for r.js modules (3af4d13f)
*  test (61c6a762)
*  move meta.getServerTime call to admin namespace (1c0e8c16)
*  add client side check for userslug #8939 (f20c12ee)
*  #8939, fix username change notification getting filtered out (0ca40af8)
*  #8931, fix lang string (cf903e4e)
*  #8932, fix client side error when updating username (95a3f030)
*  bug with Topics.resizeAndUploadThumb not checking for extension validity (eab4ca71)
*  #8933 (2b73a14e)
*  #8929, fix popular, top rss feed urls (77f0bff5)
*  a derp (5dd3b031)
*  spec (b18e7e31)
*  improper handling of scheme-relative URLs in topic thumb logic (4ca62dc4)
*  https://github.com/NodeBB/NodeBB/pull/8685 (5fa09832)
*  on OP edit, call helper method to upload and resize thumb (f33a9185)
*  https://github.com/NodeBB/NodeBB/pull/8759 (9ee1fb49)
*  spec (c2bb6123)
*  guest displayname (1be08b2e)
*  show messages after app load (46acbfda)
*  restart on js changes in vendor (814771bd)
*  #8915, fix queue not being cleared after firing click events (6ef7e867)
*  spec, only call modifyUser on unique user objects (dbd814c2)
*  setting (ae5d4405)
*  spec (8d060065)
*  group userTitles translation escapes (e9585b9b)
*  remove params from error log (965671a9)
* **spec:**  always show thumb in topic response (493c568a)

##### Refactors

*  remove unused require (db1c140f)
*  move API banned response handler to separate internal method (906d7d73)
*  move plugin hook methods to plugin.hooks.* (6e2da996)
*  remove breaking change in pin expiry (ef3df47a)
*  use categoryCommand local method for pin/lock in category tools (#8917) (00aee84b)

#### v1.15.2 (2020-11-18)

##### Chores

*  remove debug log (0a0b4661)
* **deps:**  update dependency smtp-server to v3.8.0 (5f5f0edb)

##### Documentation Changes

*  openapi schema for user/group exist check, session deletion (bcccb331)

##### New Features

*  #5274 (4e9b10ab)
*  #4456 (fb567a7a)
*  #8475, allow flagging self posts (a6afcfd5)
*  #7550, show message if post is queued when js is disabled (120999bf)
*  #8171, add oldCategory if topic is moved (35f932cd)
*  #8204, separate notification type for group chats (b44ddecd)
*  add test for custom translations (7928036a)
*  https://github.com/NodeBB/NodeBB/issues/8147 (1d6bcbeb)
*  invites regardless of registration type, invite privilege, groups to join on acceptance (#8786) (3ccebf11)
*  add nodejs version to issue template (29c2ca94)
*  allow groups to specify which cids to show member posts from (#8875) (8518404e)
* **api:**  account deletion routes for the Write API (#8881) (a0b7a823)
* **deps:**  benchpressjs@2.2.1 (#8887) (d30ea256)

##### Bug Fixes

*  #6407, fix feeds (fa4177c3)
*  navigation highlight (62b62821)
*  benchpress warnings (a87ccccc)
*  benchpress warnings (dfdc0c42)
*  internal helper method hasGlobalPrivilege, DRY (e1d7c4d8)
*  spec (2f4653a3)
*  #8884, remove header/footer cache (e4d2764d)
*  check tid in event handlers client side (9dac9630)
*  #8883 (f14e42d8)
*  #8872 missing admin/menu language key+fallback (fdab76f8)
*  run every hour, dont show message if average_time is 0 (51b7eca1)
*  add back test timeout for exports (b3e00489)
*  pass length to messaging checkContent hook (dc9668e4)
* **deps:**
  *  update dependency nodebb-theme-persona to v10.2.74 (#8905) (5f6137f0)
  *  update dependency nodebb-theme-persona to v10.2.73 (#8904) (c2019b7b)
  *  update dependency nodebb-plugin-composer-default to v6.4.7 (#8902) (b7b1f203)
  *  update dependency nodebb-theme-persona to v10.2.72 (#8903) (bee8cfe4)
  *  update dependency nodebb-theme-vanilla to v11.3.3 (422aa7f0)
  *  update dependency nodebb-theme-persona to v10.2.71 (3b6e71d5)
  *  update dependency nodebb-theme-persona to v10.2.70 (d6dd1cb6)
  *  update dependency nodebb-theme-slick to v1.3.2 (2ce1fcd3)
  *  update dependency nodebb-theme-vanilla to v11.3.2 (9f2d0d42)
  *  update dependency nodebb-theme-persona to v10.2.69 (15810643)
  *  update dependency sharp to v0.26.3 (84d54577)
  *  update dependency nodebb-plugin-mentions to v2.13.5 (dde9f189)
  *  update dependency json2csv to v5.0.5 (b63b7ae5)
  *  update dependency benchpressjs to v2.2.2 (d1e804aa)
  *  update dependency nodebb-theme-vanilla to v11.3.1 (#8878) (85aaeded)
  *  update dependency nodebb-theme-slick to v1.3.1 (bbfb276a)
  *  update dependency nodebb-theme-persona to v10.2.68 (ec70329a)
  *  update dependency nodebb-plugin-spam-be-gone to v0.7.6 (#8877) (45922fae)
  *  update dependency nodebb-plugin-spam-be-gone to v0.7.5 (#8876) (48e82520)
  *  update dependency nodebb-plugin-spam-be-gone to v0.7.4 (#8874) (eab27f23)

##### Refactors

*  client-side handlers for user invitations (d83eb7f8)
*  async/await controllers/index.js (5598130a)
*  less dupe code (8fbe8324)

##### Tests

*  new api test to ensure each path's parameters are defined in context (97842c43)
*  updated test name to be more specific (319cfeaa)

#### v1.15.1 (2020-11-11)

##### Chores

*  fallback l10n for admin-settings-api (8368c25b)
* **deps:**
  *  update dependency eslint to v7.13.0 (bcbc0854)
  *  update dependency eslint-config-airbnb-base to v14.2.1 (d227fe9f)
  *  update commitlint monorepo to v11 (90bcfa6d)

##### New Features

*  #8864, add action:events.log (9c5c32d4)
*  show db info side by side (62c0454c)
*  add language keys for admin-settings-api (d32e4e02)
*  #8824, cache refactor (#8851) (f1f9b225)
*  move mkdirp to beforeBuild so it doesnt get called twice (6255874e)
*  group exists API call in write api (d2631922)
*  user exist route in write api (1446cec7)
*  new shorthand route /api/v3/users/bySlug/:userslug (60e1e99b)
*  allow passwords with length > 73 characters (#8818) (512f6de6)
*  #8821, allow guest topic views (9e3eb5d4)

##### Bug Fixes

*  #8869, dont escape category title,description twice (567c5f20)
*  refresh flags list on bulk action success (769aba0a)
*  test breakage from f300c933a50263039a57811f8cc716df39a138b0 (ee4d90f6)
*  remove some unnecessary jquery wrappers (9f7902ef)
*  send back jquery object to keep backwards compat (978f1ee0)
*  use header/footer cache in prod (a0164b1c)
*  add missing maxAge to cache (05a92885)
*  clear header-cache after each suite (3f5f38dd)
*  show msg on fail (255cf43e)
*  spec (fe63c6ae)
*  guest header/footer cache (2e446392)
*  #8846, possible fix (74951f59)
*  winston error message (16d03975)
*  permanent redirect on user api redirect shorthand (6b196a20)
*  user exist route needs no authentication (f2bb42c0)
*  #8840, don't crash if /compose route is called with no query params (c61dee4b)
*  XSS in event:banned messaging modal (f68bce86)
*  #8838, fix chat dropdown timestamps (78ee8332)
*  #8836, truncate fullname (76cd5b0f)
*  #8827, do not require admin:users privilege to ban users (891a1ea2)
* **deps:**
  *  update dependency nodebb-plugin-mentions to v2.13.4 (1460a7a8)
  *  update dependency diff to v5 (72d1b3cd)
  *  update dependency nodebb-theme-persona to v10.2.67 (#8847) (e250c3f1)
  *  update dependency json2csv to v5.0.4 (#8865) (ba7b23ac)
  *  update dependency postcss to v8.1.7 (#8866) (2946bb16)
  *  update dependency nodebb-theme-slick to v1.2.40 (#8863) (20f4fe08)
  *  update dependency nodebb-plugin-mentions to v2.13.3 (#8862) (c18f4491)
  *  update dependency benchpressjs to v2.1.0 (14ba6383)
  *  update dependency benchpressjs to v2.0.9 (381a32ab)
  *  update dependency mongodb to v3.6.3 (#8841) (7e273e77)
  *  update dependency nodebb-theme-persona to v10.2.66 (#8839) (00f90cd9)
  *  update dependency nodebb-plugin-mentions to v2.13.2 (#8835) (064c99cd)
  *  update dependency postcss to v8.1.6 (e0cf9740)
  *  update dependency @nodebb/socket.io-adapter-mongo to v3.1.1 (#8831) (40eb658b)
  *  update dependency @nodebb/mubsub to v1.7.1 (#8830) (7b8a5567)
  *  update dependency postcss to v8.1.5 (9f5ef9d0)
* **#8828:**  web install templates now compiled (#8832) (de5a21f1)
* **acp:**  max-height for plugin menu list (eec630f1)

##### Refactors

*  move session revocation route to write api (f300c933)
*  change Benchpress.parse to .render (#8856) (e128264b)

#### v1.15.0 (2020-11-04)

##### Breaking Changes

*  remove toolsVisible in post tools' menu [breaking] (7e7366be)

##### Chores

*  update changelog for v1.15.0-rc.5 (69f4d5ac)
*  add info log into tests (b6d86878)
*  update renovate config to automatically merge non-major version bumps #yolo (1c8b8ce1)
*  update changelog for v1.15.0-rc.4 (16882941)
*  update changelog for v1.15.0-rc.3 (2738041b)
*  bump persona (e0b67817)
*  update changelog for v1.15.0-rc.2 (c3a7ab54)
*  update changelog for v1.15.0-rc.1 (4f49b3da)
*  update changelog for v1.15.0-rc.0 (aab5f018)
*  update changelog for v1.15.0-beta.30 (39648722)
*  some optimizations for codeclimate (4a63c20a)
*  update changelog for v1.15.0-beta.29 (63696c40)
*  refactor src/emailer.js (75459517)
*  update changelog for v1.15.0-beta.28 (fd975a66)
*  update changelog for v1.15.0-beta.27 (70673824)
*  lint notifications.js (4fc84e9f)
*  update changelog for v1.15.0-beta.26 (5e01d288)
*  up persona (ff8a833a)
*  up persona (4a0f54ae)
*  update changelog for v1.15.0-beta.25 (240a04b4)
*  up persona (032e6001)
*  update changelog for v1.15.0-beta.24 (72ab5ba1)
*  up persona (5407bf48)
*  up persona (4c2eab4b)
*  up persona (91133b0f)
*  up persona (bcac0805)
*  up persona (9dc4db1f)
*  up persona (ba70a1bf)
*  update changelog for v1.15.0-beta.23 (e6ea208c)
*  update changelog for v1.15.0-beta.22 (59ee74c2)
*  update changelog for v1.15.0-beta.21 (8089542e)
*  update changelog for v1.15.0-beta.20 (1650f303)
*  update changelog for v1.15.0-beta.19 (9cde5105)
*  update changelog for v1.15.0-beta.18 (b2ca9686)
*  update changelog for v1.15.0-beta.17 (d6178158)
*  update changelog for v1.15.0-beta.16 (e08297ff)
*  update changelog for v1.15.0-beta.15 (f878b92c)
*  update changelog for v1.15.0-beta.14 (5e60d092)
*  update commitlint config (61a8c6f0)
*  update changelog for v1.15.0-beta.13 (ca8d492b)
*  update changelog for v1.15.0-beta.12 (0a242605)
*  update changelog for v1.15.0-beta.11 (f07ba866)
*  update changelog for v1.15.0-beta.10 (9c34eced)
*  update changelog for v1.15.0-beta.9 (affc7927)
*  update changelog for v1.15.0-beta.8 (3b960c3b)
*  update changelog for v1.15.0-beta.7 (e449ff9a)
*  update changelog for v1.15.0-beta.6 (a7f03b64)
*  update changelog for v1.15.0-beta.5 (0e90064e)
*  update changelog for v1.15.0-beta.4 (6c4aed8c)
*  update changelog for v1.15.0-beta.3 (11e2ccab)
*  update changelog for v1.15.0-beta.2 (d8a9f1c3)
*  update changelog for v1.15.0-beta.1 (aeca19d5)
*  update changelog for v1.14.2 (cd94c24a)
*  update changelog for v1.14.2 (488e69fd)
* **deps:**
  *  update dependency mocha to v8.2.1 (35e725d1)
  *  update dependency lint-staged to v10.5.1 (2fa78e43)
  *  update dependency eslint to v7.12.1 (#8799) (224502d8)
  *  update dependency lint-staged to v10.5.0 (#8797) (1f2eca6a)
  *  update dependency eslint to v7.12.0 (#8791) (3108f628)
  *  update dependency lint-staged to v10.4.2 (#8773) (4bfd0087)
  *  update dependency eslint to v7.11.0 (#8747) (bb85c059)
  *  update dependency lint-staged to v10.4.1 (#8771) (08a240fa)
  *  update dependency mocha to v8.2.0 (#8772) (a471b1af)
  *  update dependency eslint-plugin-import to v2.22.1 (aacf8f22)
  *  update dependency eslint to v7.10.0 (#8687) (119ab719)
  *  update dependency lint-staged to v10.4.0 (2833624e)
  *  update dependency eslint to v7.9.0 (b1d781e8)
  *  update dependency eslint to v7.8.1 (#8597) (39110276)
  *  update dependency lint-staged to v10.3.0 (#8608) (dc1f1db9)
  *  update dependency mocha to v8.1.3 (#8588) (05efeff6)
  *  update dependency eslint to v7.8.0 (#8594) (e1b98142)
  *  update dependency lint-staged to v10.2.13 (efc30e97)
  *  update dependency mocha to v8.1.2 (#8579) (c722b0e5)
  *  update dependency grunt to v1.3.0 (df61d080)
  *  update commitlint monorepo to v9.1.2 (877cdfb9)
  *  update dependency eslint to v7.7.0 (#8564) (f1398da2)
  *  update dependency jsdom to v16.4.0 (#8554) (bb8f7c74)
  *  update dependency eslint-config-airbnb-base to v14.2.0 (#8396) (fde4f110)
  *  update dependency eslint-plugin-import to v2.22.0 (#8390) (788a8bfe)
  *  update dependency mocha to v8.1.1 (fe352eb1)
  *  update dependency eslint to v7.6.0 (#8540) (37418375)
  *  update dependency mocha to v8.1.0 (#8536) (72a78833)
  *  update dependency @apidevtools/swagger-parser to v10.0.1 (#8517) (8c498fa1)
  *  update dependency nyc to v15.1.0 (#8353) (c872bd8b)
  *  update dependency eslint to v7.5.0 (#8463) (b2be329c)
  *  update dependency jsdom to v16.3.0 (#8483) (82ada1bd)
  *  update dependency grunt to v1.2.1 (#8462) (b2dc6d60)
  *  update dependency @apidevtools/swagger-parser to v10 (9e2c3ce0)
* **writeapi:**  cleanup (f6782471)

##### New Features

*  add back error handling for a number of api calls (1afd2150)
*  #8823, remove hardcoded write concern (a338f527)
*  #8817, add login clientside hooks (715775a7)
*  use github actions for ci (#8811) (eddf4a4f)
*  allow mods/admins to see deleted posts on user profile (6e85920c)
*  rearrange buttons on manage/users (27016d22)
*  #8801, disable express compression by default (6ac73ccb)
*  allow passing subset of user settings on update route (ec03af7a)
*  wip, write api tests framework (b156b8b5)
*  add filter:category.getFields (88a07e69)
*  move postercount to topic hash (0db0231c)
*  add free and total mem usage to info (a7b6d0df)
*  new filter filter:teasers.configureStripTags (177a9610)
*  send 'Vary' header when ACAO header set (d68ffea8)
*  add filter.topics.getPostReplies (7a019494)
*  topic reply to use api lib (also + missing file) (21974a77)
*  send 401 for invalid-uid (ede9435f)
*  async/await admin/search (c913900e)
*  ignore test folder (2927509a)
*  send back 403 on no-privileges error (14f9d8b0)
*  refactor groups.delete (8ae1f81c)
*  move groups.join to api (d69e503d)
*  allow plugins to define api routes (9dd3cc04)
*  require https if nodebb is configured with https url (a4ba2389)
*  add nyc config (3326d80c)
*  change user search to use filters array (a2edb86d)
*  add filter (959314c9)
*  require csrf token if not using bearer token (1e07886f)
*  #8662, verified/unverified user groups (682e926c)
*  more fixes (700e1e43)
*  more work (40a05b70)
*  wip admin/users (b038ac07)
*  set unread false for guests (7beaf490)
*  add stack to deprecate message (01265d08)
*  add checkbox tests (d76229c0)
*  add test for serialize/deserialize form (e92d4719)
*  disable write api tests until fixed (ae5fb103)
*  #8734, add slugify module, deprecate utils.slugify (bddfcb58)
*  #8734, move bootstrap-tagsinput to package.json (f16c8268)
*  #8734, move deserialize/serialize to package.json (eab7489e)
*  #5964, #8734 remove colorpicker (948f2614)
*  #8734 remove unused files (c721625a)
*  #8734, move sortable to package.json (cc705e5e)
*  #8734, move bootbox to package.json (300a8755)
*  load jquery-form before using (3b231360)
*  #8734, jquery-ui, jquery-form, timeago (#8748) (fda2aedf)
*  remove unused textcomplete file (59311a63)
*  #8734, remove semver.browser (ae3a231f)
*  #8734, move slideout to package.json (2c1897b3)
*  #8734, move tinycon to package.json (9c157de0)
*  #8734, move visibilityjs to package.json (43589a74)
*  #8734, move nprogress to package.json (a46cbb62)
*  #8734 move r.js to package.json (aa08f882)
*  revoke user sessions above threshold (#8731) (b3ed26ac)
*  filter:settings.get plugin hook (c7d15dfa)
*  topic delete/restore/purge/(un)pin/(un)lock (da25ce4d)
*  add new api page to ACP menu (5fc7e7bf)
*  management of API tokens via ACP (49652e6f)
*  added DELETE /api/v1/categories/:cid route (3072de48)
*  added PUT /api/v1/categories/:cid route (e942ad81)
*  added POST /api/v1/categories route (dc666fd8)
*  added PUT/DELETE /api/v1/users/:uid/ban routes (a5af2dc8)
*  added POST and DELETE /api/v1/users/:uid/follow routes (b5bbcbae)
*  added PUT /api/v1/users/:uid/password route (7aed174e)
*  added DELETE /api/v1/users/:uid and DELETE /api/v1/users (a1ddc210)
*  added openapi.yaml file for BEST documentation (91b79f17)
*  added checkRequired middleware for API calls (7b6d43bc)
*  migrating write-api skeleton into core (ec5c48b1)
*  remove post/header selector (1542a5d7)
*  category filter on post queue (#8710) (5d9a8681)
*  #6594, add top/popular sections to digest email (#8709) (e60357d2)
*  dedicated sorting buttons for plugin ordering in ACP (1761e13d)
*  #8233, search sub categories (54737d30)
*  move service-worker.js into its own file (f4d76f1e)
*  analytics:maxCache setting in ACP (14ba1a6d)
*  #8695, allow sort for guests (ea0f3262)
*  up recommended size to 512x512 + ACP labels for PWA (9c5b6907)
*  upload maskable icon for PWA (6478b32d)
*  show top 5 trending plugins in new tab in Extend > Plugins (b12e8d63)
*  register service worker, #8126 (aa268d5e)
*  add theme-color meta tag for browser address bar (5172d731)
*  basic service worker, minimum requirement for for a2hs; see #8126 (f69697b3)
*  option in ACP to configure notification/email delay for chats (5b427a0c)
*  allow autocomplete to pass optional params to user.search (611f3c61)
*  upon plugin installation via ACP, check against nbbpm first (5ddf7022)
*  up benchpress (8e88ccd6)
*  add row highlighting for popular and unread (2cd5f959)
*  return to previous page and/or category after marking topic unread (48a8ec4a)
*  add missing lang key (bd9b6c99)
*  add number of posters to topic (83d4e7ef)
*  hightlight matches in quick search (f2f3ba49)
*  add loading indicator (d38c8722)
*  allow plugins to override tags and tag counts (81595095)
*  edit test (ccddbb15)
*  add x-posts/x-votes keys (23de5613)
*  allow adding nested replies to a target component (ddc0ac37)
*  hotkey "/" to open ACP search (43571bac)
*  ctr-s for save on privileges page too (763cec31)
*  ctrl-s now saves on settingsv1/v2 forms (80931423)
*  single href (6669b23d)
*  allow passing in container to threadTools (7148be2f)
*  expose calculateTopicPostCount and getChildrenTree (43742437)
*  allow custom req.query.filter on /unread /recent (de824007)
*  fullname search (#8641) (4be693f2)
*  sorted set lex test (9389749b)
*  add topicIndex to category page (c1c617b3)
*  up lavender/slick (34eb1bd2)
*  switch to using topic/select component for merge (f6d56466)
*  undo for posts move (762e9fe8)
*  #8626, new move posts modal (5a40d26b)
*  refactor app.js (5002e0f6)
*  remove global RELATIVE_PATH (19c44861)
*  remove app.template (3cd3b7a1)
*  remove global window.templates (630bac2a)
*  remove app.isConnected, use socket.connected (fddeb5c0)
*  use const/let (6fc31df0)
*  allow nbb to work with cloudflare rocket loader :rocket: (4d665955)
*  move code (53a5f151)
*  #8602, dont send emails to unconfirmed addresses (b6917b9d)
*  add partials/footer/js.tpl (94da9fe5)
*  add missing name to profile image upload (54b49725)
*  add action:user.removeCoverPicture (b0a75922)
*  add user data to action:user.removeUploadedPicture (962446a5)
*  add userData to action:user.delete (9542ef12)
*  force upgrade scripts for test (1b7ba2c8)
*  replace relative urls to absolute before sending email notifs (1e5981c0)
*  add client side action:flag.create (09de364e)
*  additional sorting options for flags (0c203517)
*  new filter hook prior to post queue addition (8cc36de2)
*  add replies to getPostSummaryByPids (a9dfc9a7)
*  add reply count to getPostSummaryByPids (de0f4aad)
*  theme work for #8580, closes #8580 (6e805c1b)
*  allow undo of topic move (abb5e81d)
*  added alert.timeoutfn (cd8e7963)
*  sort dependencies alphabetically (a4dbbc37)
*  up persona (af9f328c)
*  banning a user will resolve their post flags (354e6ccc)
*  theme changes for #8571 (5415c01c)
*  logic for bulk actions in flags list, #8571 (a3a22793)
*  expose global/admin privileges to all routes (4737f937)
*  additional tests for #8569 (e047b72c)
*  flags list sorting, closes #8569 (346db0d8)
*  up theme (bd557af2)
*  allow adding multiple users to group (35a538ec)
*  add filter:group.getOwnersAndMembers (f1e82b64)
*  pass uid into filter:flags.list (9c70b662)
*  added security policy for github (45c8de12)
*  up deps (b97b51a8)
*  one more test (a333cb6c)
*  tests for password change (ecda4ad8)
*  limit privileges column to superadmins only (0903eb4b)
*  use nodebb-scoped bootswatch (12edd18b)
*  use assetBaseUrl instead of hardcoding (6e918858)
*  load timeago strings client-side (558a2d73)
*  +assetBaseUrl, -l10BaseUrl, -requireBaseUrl (9adaccd0)
*  #8550, add upgrade script test (b61a4da5)
*  #8493, plugin helper for standardised link/button injection (0bbb813e)
*  show event/params on error (d6baf5c2)
*  introduce overridable l10nBaseUrl config value (def16f9e)
*  allow multiple empty lines (58933c4c)
*  remove administrator property from public routes (dfabd0a3)
*  focus username when modal is shown (4216c277)
*  add helmet middlewares (774e5d04)
*  more discrete commit-on-save instead of commit-on-change w/ confirm modals (#8541) (a716a552)
*  add ability to search groups in group details page (e7a502e0)
*  use category selector in category page (fb7bb8d4)
*  css fixes (560f3eb1)
*  add privileges shortcut to groups list (91411cc4)
*  allow passing groupName to user.search (f89ec205)
*  #8531, closes #8531 (292d4904)
*  allow direct link to flag from post tools, #8531 (c705e08a)
*  allow changing requirejs base url (c4829fd8)
*  ability to clear cache from acp (bbc7737e)
*  reduce amount of data loaded on acp admin page (8d8117ff)
*  remove require fallback for plugins (303bffdb)
*  remove /assets/stylesheet.css (762b0be4)
*  add node 14 (6250a2e2)
*  make category tools in acp a dropdown (24535a62)
*  series upload (37e56d94)
*  resolve flag on delete/purge/ban/delete account (8bd63f61)
*  8502, don't change topics sitemaps on every reply (e045436c)
*  allow building custom languages during dev (0a9ea91f)
*  add link-plugins.sh (cc86f079)
*  remove deprecated utils.walk (609e37a6)
*  consolidation of flags to reduce flagspam, #8510 (55b0e902)
*  change invalid language codes to default lang (3761f05c)
*  add npx, fixes ghfw (a294e1cd)
*  remove topics.async.getTopicData usage (ce6b20c4)
*  remove deprecated checkGlobalPrivacySettings (0cea7136)
*  remove deprecated isAdmin method (a0da2ba7)
*  remove file.isFileTypeAllowed (2cdb935f)
*  remove deprecated hooks (4eae927d)
*  update readme (9869064e)
*  up node version to 10 (b39e0140)
*  highlight privs row if group is added / navigating from group page (10e4ae62)
*  prevent navigation away from groups page if changes are unsaved (53f6139b)
*  quick access dropdown on groups page to access privileges page (2c83278f)
*  #8524, allow editing category of queued topic (844f2b4e)
*  remove js-enabled (ff3c3435)
*  remove js-enabled.css (ec057835)
*  dont load all subscribers at once (2a5f8ab2)
*  short more info (23a9a334)
*  #8521, allow editing title before posting from queue (2485a550)
*  show language when key isn't found (764969ab)
*  allow searching categories in ACP (1e7397b1)
*  #8509, don't scroll chat to bottom if user scrolled up (320008cd)
*  added quick link to edit privileges on the category edit page (06143ca7)
*  hide some filters behind 'more filters' button (9fb9185f)
*  collapsible daily flags graph (d52d7bdb)
* **acp:**  autocomplete user search for welcome notifications (d40779a4)
* **writeapi:**
  *  user settings API (c26f2b65)
  *  commented-out stub code for file upload (cfee431c)
  *  file deletion route (f870721f)
  *  admin settings update route (a55b3817)
  *  token generation/delete routes, ACP updates (2ec838fc)
  *  post bookmarking (0973feea)
  *  post voting (9942c248)
  *  post delete/restore/purge (414169fd)
  *  post editing (f66c2fb6)
  *  topic tags (1605e5e4)
  *  topic follow/ignore (9be56294)
  *  adding missing files (6096f74a)
  *  topic posting and replying (4c833d0b)
  *  added DELETE /groups/:slug/membership/:uid route (40dc1c38)
  *  added group joining and deletion (952dc211)
  *  abstracted ajax calls out to new api module (d044c322)
  *  added POST /api/v1/groups (ba345e53)
* **openapi:**
  *  schema validation for write api definitions file (87e3f26f)
  *  refactor into indiv. files to match API & tpl routing (ffbf2d6d)
  *  refactor into indiv. files to match API & tpl routing (84f5e4cf)

##### Bug Fixes

* **deps:**
  *  update dependency nodebb-plugin-composer-default to v6.4.6 (b44c7e96)
  *  update dependency nodebb-plugin-spam-be-gone to v0.7.3 (f06d4878)
  *  update dependency nodebb-theme-vanilla to v11.3.0 (0d80190f)
  *  update dependency textcomplete to ^0.18.0 (df5d66e5)
  *  update dependency nodebb-theme-persona to v10.2.65 (0c7d5860)
  *  update dependency jsesc to v3.0.2 (#8802) (c4431294)
  *  update dependency nodebb-plugin-composer-default to v6.4.5 (7d0d0005)
  *  update dependency nodebb-theme-persona to v10.2.63 (b3ca7de0)
  *  update dependency nodebb-theme-persona to v10.2.62 (#8798) (12c590ad)
  *  update dependency nodebb-plugin-mentions to v2.13.1 (#8790) (8353857b)
  *  update dependency nodebb-theme-persona to v10.2.61 (#8794) (9de8497d)
  *  update dependency benchpressjs to v2.0.8 (#8767) (3b88545b)
  *  update dependency sharp to v0.26.2 (#8765) (42aed15b)
  *  update dependency nodebb-rewards-essentials to v0.1.4 (#8764) (25c447df)
  *  update dependency nodebb-theme-persona to v10.2.60 (dcf72354)
  *  update dependency nodebb-plugin-mentions to v2.13.0 (#8758) (411fa8bc)
  *  update dependency nodebb-theme-persona to v10.2.59 (#8755) (cd34bfb1)
  *  update dependency nodebb-theme-persona to v10.2.58 (#8754) (a77ba71e)
  *  update dependency nodebb-plugin-composer-default to v6.4.4 (#8752) (0399ffaf)
  *  update dependency benchpressjs to v2.0.7 (#8733) (f8e2324c)
  *  update dependency nodebb-plugin-composer-default to v6.4.3 (#8750) (666064bf)
  *  update dependency nodebb-theme-persona to v10.2.57 (#8749) (1c94220b)
  *  update dependency nodebb-theme-persona to v10.2.56 (414fe19c)
  *  update dependency nodebb-theme-slick to v1.2.39 (1bc99411)
  *  bump vanilla/persona (944a7e0e)
  *  update dependency nodebb-theme-lavender to v5.0.14 (#8739) (43df4b8e)
  *  update dependency socket.io-client to v2.3.1 (#8700) (ba62ebb6)
  *  update dependency nodebb-theme-slick to v1.2.37 (#8741) (45aceb26)
  *  update dependency nodebb-theme-vanilla to v11.2.21 (#8740) (0c7af502)
  *  update dependency nodebb-theme-persona to v10.2.54 (#8736) (4207dde4)
  *  update dependency nodebb-theme-persona to v10.2.52 (#8735) (70c085ba)
  *  update dependency nodebb-theme-persona to v10.2.51 (#8729) (bae2eada)
  *  update dependency nodebb-theme-persona to v10.2.50 (#8727) (804729fc)
  *  update dependency nodebb-theme-persona to v10.2.49 (#8722) (b01bc2ae)
  *  update dependency nodebb-theme-persona to v10.2.48 (#8721) (01702613)
  *  update dependency nodebb-theme-persona to v10.2.47 (#8720) (04b1daac)
  *  update dependency nodebb-theme-persona to v10.2.46 (#8719) (ba906d7d)
  *  update dependency nodebb-plugin-composer-default to v6.4.2 (#8718) (229421ed)
  *  update dependency nodebb-plugin-composer-default to v6.4.0 (#8716) (b3a24f74)
  *  update dependency nodebb-plugin-mentions to v2.11.0 (#8714) (c95a3898)
  *  update dependency nodebb-theme-slick to v1.2.36 (#8713) (fc2795d3)
  *  update dependency nodebb-theme-vanilla to v11.2.20 (#8715) (2b0deeb7)
  *  update dependency nodebb-theme-persona to v10.2.45 (#8711) (f14b4945)
  *  update dependency nodebb-theme-persona to v10.2.43 (#8701) (1d0eaafb)
  *  update dependency nodebb-theme-persona to v10.2.42 (2a1da61c)
  *  update dependency nodebb-theme-vanilla to v11.2.18 (#8697) (9bdef707)
  *  update dependency nodebb-theme-slick to v1.2.34 (#8696) (3e2816ae)
  *  bump persona (f17d42ed)
  *  update dependency sanitize-html to v2 (1e5621c0)
  *  update dependency nodebb-theme-persona to v10.2.39 (#8684) (d0010c40)
  *  update dependency nodebb-theme-persona to v10.2.38 (#8683) (bb04f149)
  *  update dependency json2csv to v5.0.3 (30aa7e83)
  *  update dependency nodebb-theme-persona to v10.2.36 (#8680) (07172b6f)
  *  update dependency nodebb-theme-persona to v10.2.35 (#8679) (68a5e7e3)
  *  update dependency json2csv to v5.0.2 (5a2adb42)
  *  update dependency nodebb-theme-persona to v10.2.33 (#8675) (abe83773)
  *  update dependency nodebb-theme-persona to v10.2.31 (#8673) (80dbf97a)
  *  update dependency nodebb-plugin-composer-default to v6.3.57 (#8672) (7ecac97a)
  *  update dependency nodebb-theme-persona to v10.2.30 (#8671) (c8a75631)
  *  update dependency nodebb-theme-persona to v10.2.24 (#8663) (72cd5f13)
  *  update dependency postcss to v8.0.6 (#8657) (55921ccf)
  *  update dependency validator to v13.1.17 (#8659) (01232090)
  *  update dependency sharp to v0.26.1 (#8660) (b175d671)
  *  update dependency nodebb-widget-essentials to v4.1.2 (#8658) (dc0a4a49)
  *  postcss and autoprefixer version incompatibility (70d3ad02)
  *  update dependency nodebb-plugin-mentions to v2.10.0 (5ea172f9)
  *  update dependency autoprefixer to v10 (60679481)
  *  bump theme versions (685633d0)
  *  update dependency nodebb-plugin-composer-default to v6.3.56 (#8648) (8089387b)
  *  update dependency nodebb-theme-persona to v10.2.22 (c5ca2609)
  *  update dependency nodebb-theme-vanilla to v11.2.16 (8acdf3f6)
  *  update dependency nodebb-theme-persona to v10.2.21 (ed0469b5)
  *  update dependency nodebb-theme-vanilla to v11.2.15 (134ebba6)
  *  update dependency nodebb-theme-vanilla to v11.2.14 (31635e3e)
  *  update dependency nodebb-theme-persona to v10.2.20 (2a13e583)
  *  update dependency mongodb to v3.6.2 (#8634) (4969c869)
  *  update dependency nodebb-theme-vanilla to v11.2.13 (#8633) (8137cdc2)
  *  update dependency nodebb-theme-persona to v10.2.19 (#8632) (37e37c86)
  *  update dependency nodebb-theme-vanilla to v11.2.12 (#8628) (7ab87072)
  *  update dependency nodebb-theme-persona to v10.2.18 (#8627) (2740655d)
  *  update dependency nodebb-theme-vanilla to v11.2.11 (#8624) (fd6259c8)
  *  update dependency nodebb-theme-persona to v10.2.17 (#8623) (a1d310bd)
  *  update dependency nodebb-theme-slick to v1.2.30 (#8620) (251ea79b)
  *  update dependency nodebb-theme-persona to v10.2.16 (#8618) (0d85dc48)
  *  update dependency nodebb-theme-vanilla to v11.2.10 (#8619) (b52301b1)
  *  update dependency nodebb-theme-vanilla to v11.2.9 (#8616) (69373fde)
  *  update dependency nodebb-theme-persona to v10.2.15 (#8614) (3c0540c1)
  *  update dependency socket.io-redis to v5.4.0 (#8600) (5ba23f24)
  *  update dependency nodebb-theme-vanilla to v11.2.8 (#8599) (97e3543e)
  *  update dependency nodebb-theme-persona to v10.2.12 (#8598) (1bb0896e)
  *  update dependency nodebb-plugin-composer-default to v6.3.55 (#8606) (dfeb65bb)
  *  update dependency nodebb-plugin-markdown to v8.12.1 (27426c06)
  *  update dependency nodebb-theme-vanilla to v11.2.5 (64f4179a)
  *  update dependency nodebb-theme-persona to v10.2.10 (777419b2)
  *  update dependency sharp to v0.26.0 (#8578) (7ca967ee)
  *  update dependency ipaddr.js to v2 (49aeda01)
  *  update dependency nodebb-theme-lavender to v5.1.0 (87674d68)
  *  update dependency nodebb-theme-persona to v10.2.5 (8032c8bd)
  *  update dependency helmet to v4 (#8543) (ad68a338)
  *  update dependency mongodb to v3.6.0 (#8535) (4160e828)
  *  update dependency nodebb-theme-persona to v10.2.4 (#8544) (b30ecffb)
  *  update dependency nodebb-theme-persona to v10.2.1 (#8529) (7a59c2fc)
  *  update dependency nodebb-plugin-composer-default to v6.3.53 (d24a4bd3)
  *  bump themes (b714ed22)
  *  update dependency commander to v6 (#8518) (75fb2a47)
  *  update dependency archiver to v5 (#8523) (f1cc4e29)
  *  update dependency lru-cache to v6 (#8490) (2941b9f9)
  *  update dependency connect-redis to v5 (#8480) (9c17a677)
  *  update dependency nodebb-plugin-composer-default to v6.3.52 (#8522) (ac257a65)
  *  update dependency nodebb-theme-persona to v10.1.68 (#8520) (f06b1cec)
  *  update dependency nodebb-plugin-mentions to v2.9.3 (#8516) (b5df5766)
  *  update dependency nodebb-plugin-dbsearch to v4.1.2 (649c64e4)
  *  update dependency nodebb-plugin-mentions to v2.9.2 (91bdc12a)
  *  update dependency nodebb-plugin-composer-default to v6.3.51 (0e13fd0f)
*  check is banned in buildHeader (4b63f993)
*  undefined call (518d4fa1)
*  missing await (08ff4041)
*  client side crash when creating groups (5a2b14b7)
*  disallow registration attempts with password length > 4096 (c0f699e6)
*  missing await (4818ec37)
*  broken test (87bff6cd)
*  updated commitlint config to allow longer subjects, because nobody anywhere uses an email client that limits subject lines to 72 characters (a53d49a2)
*  restore old behaviour of empty json w/ 401 code in admin middleware (dda5d426)
*  deprecate middleware.isAdmin (15e0731d)
*  post editing not taking plugin hook results into account (4439864c)
*  #8805 define our own name for write API v3 (57ed6be7)
*  removed superfluous assignment (a08fb8e5)
*  createNewPosts to build tpl with ajaxify.data (0b6ef61e)
*  handle ACP category enable/disable states after call success (bff53de0)
*  remove setCategorySort and setTopicSort (a6a52430)
*  sort setting not using correct field name (9082062e)
*  update readme to include psql (2d29e603)
*  breaking test from 0db0231cff097a6e983683e61284a72d42bd594d (cc1c7220)
*  indentation (04185d94)
*  add back derpy 20 second sleep (8e7914ff)
*  missing method in test error output (3ebb3a34)
*  topic object in post editing data return (3c98cd3d)
*  bug where token generation route would fail on null case (618e0983)
*  typo (2e9f27d8)
*  return early for guests/spiders (203db47b)
*  #8789,cache meta.settings (156e1396)
*  spec (7a318352)
*  tests (63e07c94)
*  #8781 (db63f5e3)
*  reset button loading html (1a4c0dec)
*  #8779, fix move all (e6440c0d)
*  allow admins adding users to global moderators (1f43e98f)
*  incorrect logic for post history editable bool (a691be59)
*  [breaking] send configured config URL as origin if not custom (205a1030)
*  #8776 some users unable to restore old versions via history (7a8f7049)
*  #8595, dont save escaped data when renaming groups (b26e9b59)
*  keep sortBy while searching (3ee4936d)
*  autocomplete.user on search page (85cfe49d)
*  spec (cf474ab2)
*  sortby (7bddec93)
*  #8774 (b3619d3d)
*  #8732 (c107649b)
*  #8630, sort extra deps (e362c342)
*  missing doTopicAction, fix wrong api params (e78c498e)
*  test (8fd3c044)
*  appropriate 404 handling for write API calls (b6cce75d)
*  redis hget (b2ff1594)
*  reimplementing isPrivilegedOrSelfAndPasswordMatch (e98285db)
*  socket user bans (3f347baa)
*  broken tests from api change (222b4c95)
*  tests (7d86be2b)
*  handler for group.join (51a60d3d)
*  add missing file (d07f0081)
*  #8768 (4418ff07)
*  api bug where user profile editing continued even if not allowed (cc6e995e)
*  module build (bae0f343)
*  tests (b295d15e)
*  csrf token only on non-GET routes (20bb9c7e)
*  avatar selector (4b9444f1)
*  test (e6ea71c9)
*  timestamp (8c6a5591)
*  #8763 (331d236f)
*  lastonline again (a481024d)
*  caret (71d82ec8)
*  lastonline values (97628e2f)
*  upgrade script (1289c105)
*  cant join system groups (59bbede8)
*  tests (a411df13)
*  update server param to /api/v3 (0e0f1506)
*  typo (c68653d0)
*  testing openapi write tests (7aa4d104)
*  enable tests (7b2301ff)
*  test fix for write API (54e6003a)
*  password reset to invalidate all existing reset tokens for that uid (30b3fedc)
*  show more lines (ba2e1c4c)
*  #8756, pass missing req to mock (30d6a2b8)
*  #8757, allow all slashes in category route (1ee93848)
*  timeago test for dev/prod (7db224f6)
*  timeago test (cecdd291)
*  undefined api require, @julianlam (931d44b5)
*  watch tooltip (e2d407b7)
*  module name (aedd28e0)
*  pin sortablejs (8f436eb8)
*  admin jquerui requires (75c96686)
*  timeago locale switch (8c019a6a)
*  category RSS feed was displaying deleted topics (9a5b8a79)
*  #8734 make nprogress module (45e8a4d5)
*  regression caused by 754595172549ba39b406bd36fc3387d95782d84f (8af30a51)
*  dont allow adding duplicates to privileges page (12c8b1c2)
*  #8728, dont add admins to table (f259063f)
*  remove debug log (675a62da)
*  tests (adcadbb2)
*  bad merge w/ category ACP page (cb9369f1)
*  bad logic in group assertion middleware (8e89f34d)
*  errors thrown if no password sent in to profile edit route (7757f965)
*  bug where middlewares seemingly ran in parallel (549ca110)
*  follow route to match spec (db5c5b2c)
*  missing one property in openapi doc (af2e424f)
*  error handling with POST /api/v1/users (d8879d21)
*  use POST call for user creation in ACP (58043e07)
*  user creation POST route returns user data, updated openapi spec (bba2a463)
*  selector, so it doesnt effect suggested topics (7138d433)
*  use proper api url (264818e5)
*  tests, get latest release tag recursively (8eb62e22)
*  use app.parseAndTranslate instead of benchpress.parse (fc603a53)
*  sorted list delete button (20e0cc5c)
*  unable to register async method as response hook listener (dde5b6b8)
*  dont allow sorting pinned topics on recent (b955fd36)
*  use console.info instead of console.log for sw registration (3c7f79cb)
*  spec (7cd83b9a)
*  spec (6924eb6c)
*  test (cb2f6f7c)
*  dont let mods load postqueue for a cid they are not a mod of (7bf6d3b8)
*  show disabled categories in admin&mods (2ea9768e)
*  prevent mutiple highlighted rows on category/topic pages (60afb110)
*  spec (fbd85680)
*  do not show TOC if fewer than 2 headings (f1de084d)
*  params cached in autocomplete module (caa8c00f)
*  #8686, deprecate `plugin.json/library` (#8705) (017af63f)
*  updating minimum node version in readme (d3951ebe)
*  update "install plugins" link to go to the download tab (5441651e)
*  overflow on submitPluginUsage field (c56236f0)
*  #8699 tags route is case sensitive, though tags are not (38f88fc5)
*  early button/anchor clicks do nothing (8437130e)
*  early button/anchor clicks do nothing (966d3f76)
*  error on `reset -p` if plugin is not active (7f58e3ab)
*  manifest test + remove duplicate test (bf3c1c08)
*  typo in getCompatiblePlugins (07af6213)
*  typo (54705cc4)
*  manifest - use absolute URL for start_url (31528a52)
*  prefer webmanifest extension over json (46800b66)
*  update notification delay ACP help text (4c1e717b)
*  #8681 change owner modal's search should check if user is banned (b6f2f0e5)
*  add img-responsive to post queue post items (f8032cd0)
*  language key in reset password (2ad33058)
*  issue where the last flag filter could not be removed (0fffe289)
*  multiword match highlight (f8ef380b)
*  tooltip placement on navbar search (82ab6cd3)
*  rogue tooltip on navbar profile icon (683c01b0)
*  #8580, @julianlam (445a840b)
*  topic count on category page if filter is author (bbf6889e)
*  match api when modifying ajaxify.data.deleted (int, not bool) (703ac1b6)
*  lock/unlock toggle issue (9a7c3c68)
*  #8665, trim email before checking validity (ac43cd8b)
*  editing posts saving uncessary data (e72fe259)
*  api spec (654d5830)
*  #8640, add bookmarks to intFields (4f14dc7a)
*  change user tooltip container to content (02a48e1c)
*  auth tests (fe2dc310)
*  #8656, rename /api/me to /api/self (af43f0e4)
*  add user tooltips to body (047c4148)
*  tests (22cd2654)
*  use correct topic count for category (220297d5)
*  clear old value on focus (42298fe6)
*  skip elements if they dont have proper index (c9c9dd2f)
*  call to reskin (99f24c59)
*  move necro-post to be in-line with posts (44309ee6)
*  tests, because redis is TOO FAST (4fca7938)
*  remove old test (5e8c3761)
*  client side crash if there are no topics (a8e18fdb)
*  #8418 (38d3982b)
*  typo (08912361)
*  tests (65d049c6)
*  check if unread_tids are followed (2d5bd153)
*  openapi (e9094094)
*  dont use hardcoded fontawesome icons for lock pin (632793b0)
*  #8629 and change undo timeout to 10 seconds (65d94a3b)
*  alert_id selector (2bebdf01)
*  use text-right (a78e1df9)
*  remove lang keys, remove sounds menu (a34b685c)
*  lavender version (8a752364)
*  tests (e3a0b4b1)
*  wider widget area (4bace773)
*  bypass nbbpm for now (33c1bd5f)
*  #8432, add CSP frame-ancestors (46ab2711)
*  allow setting maximumAboutMeLength to 0 (4588e521)
*  additional commit for CF rocket loader (a38784f5)
*  stack trace (4031a8ca)
*  #8604 (a2638976)
*  don't toggle elements if there is no inputEl (57f67e2b)
*  don't crash on outdated redis instances (896fe9d6)
*  update post-queue hook names (0e58d2b8)
*  accept/reject in post-queue instead of accept/delete (694f4b2b)
*  new openapi def for replies addition (b5871275)
*  #8582 (9f9164a9)
*  debug logging :dog: (fb3b4a02)
*  ip-blacklist not working after #8580 (56101ae5)
*  ip-blacklist not working after #8580 (c681b4b2)
*  post-queue not working after #8580 (dc5bd760)
*  #8411 missing language sources for ip-blacklist/post-queue (a93e1955)
*  removed invalid options for the sendmail transport (#8576) (2b785628)
*  missing localisation for topic move error (bacee6b4)
*  select all checkbox does not re-enable bulk actions button (5d60dce3)
*  dupes in unread followed topics (55533b11)
*  wrong data passed to getCategories (39f4bbaa)
*  openapi spec (4f7cfd53)
*  api spec (c4ad14cb)
*  username, email history disappering if content was deleted (91d9333a)
*  up composer (9fd37753)
*  package-install clobbering scoped nodebb plugins (840cb510)
*  empty "manage" menu showing in ACP (4b0cb26b)
*  hide nodebb version in ACP for non-superadmins (cc268605)
*  change how admin middlewares are exported (f00595b3)
*  one less return, to appease codeclimate (ae68a254)
*  inability to access /admin if not superadmin (03bd76de)
*  #8560, fix old upgrade script (29e3ab24)
*  use promises in privilege save (9cbe9389)
*  overzealous click handler on flag list row (7a5daff4)
*  +comment, -debug log (9608b44f)
*  multiple alerts in the same millisecond overwrite each other (589216e7)
*  reintroduce 20s delay for api tests (56393795)
*  client-side error in flags/detail (b2271eb6)
*  #8570 (7daba7dd)
*  sorting the flags list by newest is not considered a filter (3efe2362)
*  flag list tests due to breaking change in API (360aa00d)
*  no-widgets messaging in ACP + copy (334be113)
*  #8568 perPage not acting like a filter (cabe62a0)
*  #8562 (31c2b7d9)
*  progress bar clobbering upgrade script name (2adae879)
*  tweak upgrade script progress bar to only update 100 times in total (ac75c9a0)
*  navigation title unescape upgrade script tweak (80a2a700)
*  new language key for error handling (7456a0e3)
*  upgrade scripts not run properly if schemaDate is present (de8eebbd)
*  #8556, catch errors from admin check (bfaf648e)
*  upgrade script for 1.15.0 (32682738)
*  improper targetUid check during password change (16cee1b0)
*  #8547, remove old deps during upgrade (#8557) (1d170e0c)
*  #8558, only navigate if user is in same topic (79e847d4)
*  upgrade script (231d34d0)
*  don't allow duplicate upgrade script names (8887f0ed)
*  tests (d6297b28)
*  send hard 404 instead of soft 404 for missing modules (9f3b7811)
*  #8549 send 308 Permanent Redirect on topic/category shortlinks (68f8d6e3)
*  remove default helmet (c39c5113)
*  map instead of forEach in privileges save (a7071bb8)
*  remove duplicate configuration for helmet-hsts (0f10e083)
*  don't process invalid topics, fallback to 0 score (335169f2)
*  tests (6924a222)
*  #8539, enforce content checks for post queue (bb224184)
*  bug; additional reports could be added by the same user repeatedly (0f2b6f1f)
*  #8538, go to first unread instead of last read (519e6659)
*  #8533, validate and retry password during setup (0d698a07)
*  #8534, dont show modal on search (9e80a9ef)
*  language string (9f346c53)
*  api test (8415d2f0)
*  tests (9df871be)
*  tests (69fb1527)
*  reverse uid checks (7331faed)
*  acp view category button if category is a link (2dfe9d49)
*  remove old test (52718ce0)
*  #8515, fix login redirect on subfolder (5e5815f0)
*  tests (f48d1556)
*  #4695, remove new notif alert (fd4c3cda)
*  too small sortable handle for ACP>Manage>Categories (8473e165)
*  less fixes for category dropdown (db07dd85)
*  move check inside lock (57135761)
*  #7351, display less errors with location and error message (d1cb405d)
*  use shorter git url, #8527 (345fd72b)
*  cursor for category select (4c90fac4)
*  api docs for admin/manage/groups/x (8769e28b)
*  edge case in test (b9cff577)
*  api tests (42af4b57)
*  #8500, allow regular users select topics on unread (7260646d)
*  don't crash if content is undefined (4658121a)
*  crash if csrfToken does not exist (a3c8d456)
*  try again (6f889c9c)
*  more tests (a46adb3f)
*  tests (65395ae5)
*  tests (72c60d19)
*  tests (67ca5e32)
*  #8508, dont allow moving topics if not moderator of target category (36531511)
*  composer textarea placeholder l10n /cc @pitaj (1e14af45)
* **openapi:**
  *  final fixes to schemas (14e5c24e)
  *  users.yaml (16873800)
  *  moved write-api to public/openapi (49994f3a)
  *  test for new trending plugins in ACP (3fbddbe2)
  *  tests (d935f036)
  *  new api definition (8ff09630)
* **writeapi:**
  *  more tweaks to schema files (b2e9e3e0)
  *  fix components, + tag object schema (9f9e3c15)
  *  missing files for tests (a4f3270f)
  *  normalizing data (1392d064)
  *  tests (b092f65d)
  *  added examples to all parameter objects in schema (93f65f89)
  *  tests (ebcb664b)
  *  tests (229eb2c2)
  *  tests (b8703ba9)
  *  tests (41f55b7a)
  *  calls to profile editing routes 200 even if user DNE (8e7baac6)
  *  client-side group join API call (68ecf41e)
  *  authenticate middleware logic to work better with await (fd67355b)
* **refactor:**
  *  patching helpers.tryRoute for API routes, some re-org (d15d9e44)
  *  merging write-api auth middlewares with core middlewares (f6433ef2)
* **bug:**  #8611, custom route logic corrected (#8612) (64a457a4)
* **docs:**  updating changelog (6e34b9ef)

##### Performance Improvements

*  reorder async calls (93bdfe2f)

##### Refactors

*  simpler check in user.blocks.filter (a02ae6f5)
*  remove usage of middlewares (266d7587)
*  remove /users/{uid}/settings/{setting} route (aa8faf58)
*  api test suite to accept methods other than GET (843aff58)
*  remove unnecessary wrapper (a512d994)
*  remove console.log, extra require (75024c35)
*  show more lines of stack trace (ea31f505)
*  posts api (d9a16855)
*  post restore/delete/purge (272e73da)
*  merge post.edit (9738e202)
*  deprecate socket.emit('users.search') use api route (2279e372)
*  api categories (083c74e0)
*  remove sockets.reqFromSocket (bc880ee0)
*  topic follow/ignore to use api lib (9ee3cb9b)
*  topic tools' actions to use api lib (68d6818b)
*  topic creation to use api lib (40598b36)
*  setupApiRoute signature (bf480ee5)
*  remove unused middleware (688d7a2c)
*  user bans to use api lib (2d252f2f)
*  move groups.leave, fix some tests (e367c540)
*  change password/user follow to use api lib (960e925e)
*  user deletion to use api lib (430e7f58)
*  socket profile update to use api lib (77481947)
*  socket profile update to use api lib (31ae8a83)
*  user create and profile update to use api lib (23086dae)
*  use single function for api code (5e2caf19)
*  async/await src/user/approval (43afe7ff)
*  async/await install/web.js (3881ac30)
*  async/await (1fd2eba6)
*  use app.render (d89477ca)
*  api module (3673accd)
*  api module returns promise, error-first cb if cb passed in (a784d10f)
*  remove unused search call (dd7424e5)
*  switch to using slugify module (dc29f4dc)
*  require style (c954db84)
*  middleware.assert.* (8ecef7b8)
*  rewrite modules/api.js in AMD style (a905d7f0)
*  remove posts.tools.purge (ed092bf6)
*  shared constants (#8707) (1aa336d8)
*  post edit (16039b11)
*  expose new method for appending moderation note (29b357bc)
*  socket posts delete/restore/purge so tid is not necessary (#8607) (f743f920)
*  ip-blacklist and post-queue language files (4dc6e64a)
*  moved ip-blacklist and post-queue styles/tpls to themes (b6b94a56)
*  changed way middleware was exported (cf2f1e95)
*  remove util.promisify calls (01899459)
*  change pwd change logic (846b7d24)
*  rewrite src/upgrade.js with async/await (33c5988c)
*  change incrementViewCount and markAsRead to async/await (2c35d0ba)
*  for codeclimate (2ee62483)
*  rewrite src/install with async/await (776e34a8)
*  removed rather redundant flag reporters zset (6c00ec84)
*  flags object in post tools (fcdbdf63)
*  pass only needed data (f1974fb9)
*  startup (c54b6b9c)
*  get rid of bind calls (af91c26a)
*  setting codeclimate to A (bc26883a)
*  make msg pretty (8ddc8dd1)
*  flag sanity checks, +feat: flag limits (e3e55f25)
* **writeapi:**
  *  update route prefix to api/v3, default error option (3ea1aa47)
  *  post.tools.purge no longer a method (5e2a3ea6)

##### Code Style Changes

* **openapi:**
  *  break write API routes into individual files (dbb4cfe9)
  *  move schemas and responses out of write.yaml (ffac3c79)
*  updates to openapi files (2928b9b8)
*  allowing some es6 features client-side (e1c40b27)
*  linting (cdb79488)

##### Tests

* **openapi:**  missing commonprops addition (0dc55bbc)

#### 1.14.3 (2020-07-08)

##### Bug Fixes

*  improper targetUid check during password change (c2477d9d)

#### 1.14.2 (2020-07-15)

##### Chores

*  update changelog for v1.14.2 (488e69fd)
*  up theme (63fb2ad7)
*  up theme (15aabfd3)
*  up theme (599c5015)
*  update changelog for v1.14.1 (d4c16086)
* **deps:**  update commitlint monorepo to v9.1.1 (0ca7e28a)

##### New Features

*  logic for flag note editing, #8499 (14417209)
*  logic for flag note deletion, #8499 (f85a45c7)
*  #8460, export groups members as csv (00d39fb3)
*  pass connection options to socket.io-adapter-mongo (393f19b4)
*  #8023, allow wildcard search for uid/email (3dcf5387)
*  up composer (6235b31c)
*  #8427, daily downvote limits (c513b88d)
*  warn user if whitelisted tags are less than minTags (4adbf87c)

##### Bug Fixes

* **deps:**
  *  update dependency nodebb-plugin-mentions to v2.9.1 (c54287fe)
  *  update dependency nodebb-plugin-mentions to v2.9.0 (7730e7da)
  *  update dependency nodebb-theme-persona to v10.1.62 (#8485) (4e9743ab)
  *  update dependency nodebb-plugin-composer-default to v6.3.49 (#8479) (ab244ca6)
*  #8499 (65240a17)
*  #8500 (5e984d10)
*  invalid session error modal during logout (2286ee2a)
*  #8488 (b3a88331)
*  category search in selector (46a66863)
*  groups.updateCover (73ddf1cb)
* **docs:**  bad changelog (60bf488f)

##### Other Changes

*  update changelog for v1.14.2" (e085c846)
* flag.showModal on flag modal appearance (3379d65f)
* NodeBB/NodeBB (2fba0a14)
*  update changelog for v1.14.1" (26c74409)

#### 1.14.1 (2020-07-08)

##### Chores

*  update changelog for v1.14.1 (d4c16086)
*  update changelog for v1.14.0 (cffae0f1)

##### New Features

*  add tools to recent/unread (#8477) (658dd03b)
*  fire new hooks on chat message editing (4f51838d)
*  add back redis tests (bdc4d9e7)
*  remove redis test (8461a179)
*  use covered query (057b783d)
*  add js-enabled.css to list of preloaded css files (da29b947)
*  zscan (#8457) (723fe8e8)
*  fix blocksCount not being returned on user profile (bd228d5e)

##### Bug Fixes

* **deps:**
  *  update dependency nodebb-theme-persona to v10.1.60 (#8478) (14eafcb6)
  *  bump nodebb-plugin-composer-default to 6.3.48 (943a344a)
  *  update dependency nodebb-plugin-dbsearch to v4.1.1 (#8476) (9f06f12c)
  *  update dependency nodebb-plugin-composer-default to v6.3.47 (#8473) (857900f1)
  *  update dependency nodebb-plugin-dbsearch to v4.1.0 (#8471) (eb51cfd4)
  *  update dependency nodebb-theme-persona to v10.1.59 (#8468) (ee38e05d)
  *  update dependency nodebb-widget-essentials to v4.1.1 (#8466) (519e035d)
  *  update dependency @nodebb/socket.io-adapter-mongo to v3.0.1 (#8464) (412ca4ae)
*  #8474 (c2ca02df)
*  show stack properly (7b04d897)
*  editing chat messages does not go through content sanity checks (9a6b87d2)
*  don't show blocked users under nested replies (d6c619cf)
*  tests (87dd6c83)
*  handle scan/zscan returning duplicate elements on redis (746222d6)
*  #8467, fix url to merged topic in subfolder installs (9eb748b9)
*  openapi (5f1865c0)
*  openapi (65c0adc7)
*  dont allow searching by email/ip if not privileged (ac6b571e)
*  missing backgroundImage #8386 (fef04fcf)
*  dont allow searching by ip/banned/flagged for regular users (02ac44cc)
*  admin privileges client-side regression (f3441fce)
*  only add blocksCount for self and admins (59a2ace6)
*  tests (fd20e5c6)
*  better changelog (f992af05)
* **tests:**
  *  another shot in the dark (8853cd1a)
  *  shot in the dark (9458d90b)
* **openapi:**  tests (c468942f)

##### Other Changes

*  update changelog for v1.14.1" (26c74409)
* //github.com/NodeBB/NodeBB (0d9461b1)
* //github.com/NodeBB/NodeBB (ace312e0)
* post.changeOwner (b60e1cbf)

##### Reverts

*  bad changelog (a761e31f)

#### 1.14.0 (2020-07-02)

##### Chores

*  update changelog for v1.14.0 (cffae0f1)
*  bump persona (19f9af94)
*  latest translations and fallbacks (22879633)
*  bump persona (d2bd746c)
* **deps:**
  *  update dependency smtp-server to v3.7.0 (e80100b5)
  *  update dependency eslint to v7.3.1 (#8417) (33492744)
  *  update commitlint monorepo to v9 (569b7664)
  *  update dependency lint-staged to v10.2.11 (157e7444)
  *  update dependency lint-staged to v10.2.10 (102a6004)
  *  update dependency mocha to v8 (#8393) (f4bace03)
  *  update dependency eslint to v7.2.0 (cd1375cb)
  *  update dependency eslint-plugin-import to v2.21.1 (4b577a52)
  *  update dependency lint-staged to v10.2.9 (#8369) (124125f7)
  *  update dependency lint-staged to v10.2.8 (331b1a85)
  *  update dependency lint-staged to v10.2.7 (d1df0826)
  *  update dependency mocha to v7.2.0 (ecaa9b76)
  *  update dependency eslint to v7.1.0 (e62d892a)
  *  update dependency lint-staged to v10.2.6 (78d562b3)
  *  update dependency lint-staged to v10.2.4 (a26011e7)
  *  update dependency eslint to v7 (28df9aba)
  *  update dependency coveralls to v3.1.0 (5ed4a108)
  *  pin dependency @apidevtools/swagger-parser to 9.0.1 (51eccef5)
  *  update dependency husky to v4.2.5 (30a25983)
  *  update dependency husky to v4.2.4 (0a650118)
  *  update dependency lint-staged to v10.1.3 (a9e68639)
  *  update dependency nyc to v15.0.1 (#8231) (a3789e28)
  *  update dependency lint-staged to v10.1.2 (#8235) (e1919c90)
  *  update dependency lint-staged to v10.1.1 (944a6f58)
  *  update dependency lint-staged to v10.1.0 (30bd233b)
  *  update dependency eslint-config-airbnb-base to v14.1.0 (811c3aee)
  *  update dependency jsdom to v16.2.2 (c5a7242d)
  *  update dependency eslint-plugin-import to v2.20.2 (b92c1600)
  *  update dependency lint-staged to v10.0.10 (0ad4b556)
  *  update dependency coveralls to v3.0.11 (14458087)
  *  update dependency smtp-server to v3.6.0 (22681945)
  *  update dependency mocha to v7.1.1 (#8215) (c5356541)
  *  update dependency grunt to v1.1.0 (#8214) (b0864e7c)
  *  update dependency husky to v4.2.3 (#8162) (776fe9d2)
  *  update dependency lint-staged to v10.0.8 (#8180) (13d8f6f1)
  *  update dependency eslint-plugin-import to v2.20.1 (#8081) (4cdb3131)
  *  update dependency jsdom to v16.2.1 (#8165) (fbd95a50)
  *  update dependency husky to v4.2.2 (#8160) (f4ed35c9)
  *  update dependency jsdom to v16 (#8114) (1037de02)

##### Documentation Changes

*  updated changelog (146388aa)

##### New Features

*  polish for user blocks UX (6cb31791)
*  #8450, next/prev link tags on /unread /recent (eb9704f8)
*  allow flagging of user acounts from post tools menu (6931f29d)
*  closes #8440, allow configuring max topic count (e09ab3dc)
*  add missing translation key (bffb830d)
*  #3783, min/max tags per category (c718b729)
*  use tags partial instead of post_bar (0482fb29)
*  hide elements if search element is a direct child of dropdown (4f6b6c56)
*  increase wait (6aecc177)
*  move export functions into child processes (8383992d)
*  display stack trace on winston.error (e80379dc)
*  show more relevant snippets (f70d1648)
*  #8412 breadcrumbs for ip-blacklist/post queue/flags (35a06a84)
*  show editor in post diffs if available (f909ed25)
*  #8408 flags' quick assignment (d5af9769)
*  bump themes, closes #8406 (cb5ba76b)
*  allow post diffs to be restored, #8406 (58b3d608)
*  add missing translation (3a80a165)
*  up composer (96cb94dc)
*  more search changes (6349fa03)
*  more merge/search fixes (4b38533b)
*  merge changes (bb3aa540)
*  more search & merge fixes (5fd05dc9)
*  merge improvements wip (c4bdeae0)
*  #8387 expose global and admin privs to flags detail page (4acb3fb2)
*  redirect /me to user profile (3be4d5f7)
*  #8384 options to delete account, content, or both (4d60eac6)
*  account content deletion, closes #8381 (67aca822)
*  add missing language files for #8347 (656b391f)
*  privileges for Admin Control Panel (#8355) (a82e9bd7)
*  add buildHeaderAsync (#8367) (842b8abb)
*  #8360 flag quick actions for delete/restore/purge (8ea16348)
*  #8349, remove user posts from queue if user is deleted (5a2b5154)
*  up plugins (5b009e07)
*  add results into results container (9ffcb6f7)
*  quick search changes (f12d448e)
*  move quick search into search module (bb1a56f0)
*  fix session mismatch errors by clearing cookie on logout (#8338) (5781a2dc)
*  add getSortedSetMembers (0009f54e)
*  add privilege give/rescind hooks (#8336) (ec5582b5)
*  filter followed tids by category (f3afba61)
*  use getSortedSetsMembers to load followed tids (1b9e8928)
*  add batch size to cursors (a015af4a)
*  up cache size (9600ede5)
*  tweak intersection code, add tests (4ee3543e)
*  change to contains to match scoped modules (6108064e)
*  improve grunt restart/rebuild speed (cb662e15)
*  don't overwrite req.query.lang if it exists (4263efa0)
*  convert queries so they used indices directly (12c6bc2e)
*  cookie SameSite property (ae2db423)
*  if only one value is passed used faster function (2587112f)
*  closes #8316, add more data to export profile (f0323b6c)
*  throw error if uid is missing for update (1d3fa3bc)
*  ignore mongodb playground file (a219285e)
*  parse quick search tpl even if no results (765b8156)
*  match hook property to topic property (0e58fa33)
*  add methods for adding/removing tags from topics (bfad4572)
*  write-api update, WIP (9fd5c439)
*  closes #8308, edit post notif for watched topic posts (a73c755b)
*  add null tests for sorted sets (edf9fe3b)
*  Add hooks for user blocks (#8296) (c4545381)
*  allow activating additional plugins for testing via config.json (a969c5ce)
*  move plugin tests to separate file (3a23ddab)
*  remove node14 for now (a72e4429)
*  reduce infinite scroll area (3fcbd691)
*  manifest.json improvements from #8126 (#8264) (6e5ebb61)
*  show error if json is invalid (15345627)
*  moved component specs into separate files (cd506557)
*  added UserObject, UserObjectFull, Breadcrumb, Pagination component (64d79fe5)
*  added some summary and descriptions (ae3e90d6)
*  add some descriptions (442c018e)
*  common schema (eade13f9)
*  openapi component (1af5507a)
*  add page query param to docs (9987813f)
*  tag route doc (bbddaadf)
*  local redoc view on development mode only (1136a369)
*  added auto-generated, slimmed-down openapi 3.0 file for read api (7b155dab)
*  add parent cids to body class (23571224)
*  add 2 hooks for modifying privileges (d080c7b0)
*  add user ip to admin/dev/info (5e91a67e)
*  change option name (cba5b23e)
*  add no-build to ./nodebb setup (476f6717)
*  add awaitable socket.emit (4083a6e3)
*  settings sorted list (#8170) (3c9689a5)
*  guard against accidental ommision (79737c53)
* **docs:**  updated changelog (87c1687d)
* **openapi:**
  *  merging openapi-test branch into master (8387178b)
  *  move all commonprops out for commonprops component (65c78de6)
  *  added template to commonprops (2425f453)

##### Bug Fixes

* **deps:**
  *  update dependency nodebb-plugin-composer-default to v6.3.46 (5a713d85)
  *  update dependency nodebb-plugin-mentions to v2.8.3 (#8449) (bbd85049)
  *  update dependency nodebb-plugin-mentions to v2.8.0 (d40720f9)
  *  update dependency nodebb-plugin-composer-default to v6.3.44 (#8436) (c1991abe)
  *  update dependency winston to v3.3.3 (#8431) (6a8f54fd)
  *  update dependency nodebb-theme-persona to v10.1.55 (#8434) (a860a793)
  *  update dependency nodebb-theme-vanilla to v11.1.30 (#8435) (272b4992)
  *  update dependency nodebb-theme-vanilla to v11.1.29 (#8429) (b5a68a44)
  *  update dependency nodebb-theme-persona to v10.1.54 (#8428) (3ffb6fde)
  *  update dependency winston to v3.3.2 (54310d69)
  *  update dependency nodebb-plugin-spam-be-gone to v0.7.2 (11244348)
  *  update dependency winston to v3.3.1 (#8421) (fd628570)
  *  #8412 bump themes (365996e7)
  *  bump persona/vanilla, closes #8408 (225cac18)
  *  update dependency sharp to v0.25.4 (#8403) (3c3e1515)
  *  update dependency nodebb-theme-vanilla to v11.1.25 (#8405) (90446365)
  *  update dependency nodebb-theme-persona to v10.1.50 (#8404) (44273a64)
  *  update dependency mongodb to v3.5.9 (#8402) (90570660)
  *  update dependency nodebb-plugin-composer-default to v6.3.43 (78b7382c)
  *  update dependency validator to v13.1.1 (#8397) (2ae68f9b)
  *  update dependency validator to v13.1.0 (#8391) (ad6e3634)
  *  update dependency nodebb-theme-vanilla to v11.1.24 (#8395) (eec03de8)
  *  update dependency nodebb-theme-persona to v10.1.49 (#8394) (90846740)
  *  update dependency postcss to v7.0.32 (87ce31d1)
  *  update dependency nodebb-plugin-composer-default to v6.3.41 (dde830db)
  *  update dependency nodebb-plugin-composer-default to v6.3.40 (#8388) (cf0f8f64)
  *  bump themes, closes #8387 (e97a2b71)
  *  bump themes (ccac6a35)
  *  update dependency nodebb-theme-persona to v10.1.46 (#8382) (036e6ef5)
  *  update dependency nodebb-theme-vanilla to v11.1.21 (#8383) (7caeb273)
  *  update dependency nodebb-plugin-composer-default to v6.3.39 (aeefc60b)
  *  update dependency nodebb-plugin-composer-default to v6.3.37 (7f6ff0b1)
  *  update dependency nodebb-plugin-composer-default to v6.3.36 (6b2ea077)
  *  update dependency nodebb-plugin-composer-default to v6.3.35 (2d582df7)
  *  update dependency nodebb-theme-persona to v10.1.45 (#8372) (771ea194)
  *  update dependency nodebb-theme-vanilla to v11.1.20 (#8373) (f8ee981b)
  *  update dependency socket.io-redis to v5.3.0 (#8370) (d2463bb4)
  *  update dependency nodebb-theme-vanilla to v11.1.19 (f6ad9605)
  *  update dependency nodebb-theme-persona to v10.1.44 (cb28e6cf)
  *  update dependency nodebb-plugin-composer-default to v6.3.34 (#8357) (d7ab0894)
  *  update dependency nodebb-plugin-composer-default to v6.3.33 (c4047179)
  *  update dependency nodebb-plugin-spam-be-gone to v0.7.1 (27ab36ac)
  *  update dependency nodebb-theme-persona to v10.1.43 (#8343) (dabff972)
  *  update dependency mongodb to v3.5.8 (#8342) (8224127f)
  *  update dependency nodebb-theme-persona to v10.1.40 (#8332) (a20af6e2)
  *  update dependency nodebb-plugin-spam-be-gone to v0.7.0 (cc206b4d)
  *  bump composer-default (827d42a9)
  *  bump composer-default (a665881b)
  *  update dependency nodebb-plugin-composer-default to v6.3.29 (bf8a2c2e)
  *  update dependency postcss to v7.0.30 (#8288) (a532e2bb)
  *  update dependency sharp to v0.25.3 (0437ecc2)
  *  update dependency nodebb-plugin-composer-default to v6.3.28 (#8309) (f246057a)
  *  update dependency nodebb-plugin-composer-default to v6.3.27 (#8307) (6d57d844)
  *  #8298 bump persona (158d9231)
  *  update dependency nodebb-plugin-composer-default to v6.3.25 (89d17647)
  *  update dependency jquery to v3.5.1 [security] (#8281) (a69f0b29)
  *  update dependency nodebb-rewards-essentials to v0.1.3 (#8289) (919034a7)
  *  update dependency mongodb to v3.5.7 (#8279) (25d509c4)
  *  actually, swagger-parser is a dev dependency (d09c6ae0)
  *  missing @apidevtools/swagger-parser (f1720735)
  *  update dependency nodebb-theme-persona to v10.1.37 (#8258) (b0c30ceb)
  *  update dependency archiver to v4 (28777f67)
  *  update dependency mongodb to v3.5.6 (#8256) (49236067)
  *  bump dependencies (#8239) (e68156e1)
  *  update dependency jsesc to v3.0.1 (#8243) (92b55ef5)
  *  update dependency jsesc to v3 (bb70cebb)
  *  update dependency pg to v8 (#8227) (ac98775f)
  *  update dependency validator to v13 (f497ee62)
  *  update dependency sharp to v0.25.2 (#8220) (dd660c87)
  *  bump markdown (ee6cb412)
  *  update dependency mongodb to v3.5.5 (#8205) (5535c50c)
  *  update dependency sitemap to v6 (#8198) (2052f14c)
  *  update dependency nodebb-plugin-composer-default to v6.3.23 (6d98d5a1)
  *  update dependency sharp to v0.25.1 (#8199) (21e91c91)
  *  update dependency nodebb-plugin-composer-default to v6.3.22 (#8193) (e01f05e3)
  *  update dependency nodebb-theme-slick to v1.2.29 (#8177) (9daa21ff)
  *  update dependency nodebb-theme-vanilla to v11.1.16 (#8178) (7d6a983b)
  *  update dependency nodebb-theme-persona to v10.1.35 (#8176) (3acc24b0)
  *  update dependency sharp to v0.24.1 (#8164) (7cc63f7d)
  *  update dependency mongodb to v3.5.3 (#8161) (4b907137)
  *  update dependency nodebb-widget-essentials to v4.1.0 (#8159) (a5f3c2a2)
  *  update dependency request to v2.88.2 (#8158) (7fde180a)
  *  update dependency redis to v3 (#8152) (ef964b11)
  *  update dependency rimraf to v3.0.2 (#8153) (d8efc6b6)
*  don't show in unreplied if score is null (fd400a00)
*  lint (0d0b9513)
*  upgrade script to unescape navigation titles (37b6b8fd)
*  test (f0ce309d)
*  show controls @julianlam (023de94e)
*  #8437, #8433 (e53a18f2)
*  copy settings showing empty category selection (ed4b5caf)
*  don't init autocomplete if user doesn't have privs (8482a54a)
*  only allow valid uids (00d8ce26)
*  tests (f03ca086)
*  vulnerability in cover and admin uploads (#8419) (48b41deb)
*  reverse tabnabbing exploit in post images (040e6a9a)
*  follower count going out of sync with real follower count (2bcf7f72)
*  test lock for user create (#8415) (bef37e27)
*  add mising timestamp (f0526bff)
*  ban (bfd7eafe)
*  remove use of 'hidden' class in navbar toggling (5a367ecb)
*  bug where category privs page thought it was on admin (2515aa77)
*  #8410 (b3115ea8)
*  tests breaking due to #8406 (d5578c99)
*  add missing translations (42466d3c)
*  #8401, #8237 (7ed1a014)
*  add timestamp to initial username history (18d89239)
*  crash in export posts if post content is undefined (53a9517d)
*  messaging unread (0041c024)
*  whitespace (a024cc13)
*  typo (0595e710)
*  #8392, clear group member cache when group is renamed (89b01024)
*  return false (8591f5d2)
*  language (a255c8f6)
*  #8386, use backgroundImage everywhere (8627bee5)
*  prevent logout form from submitting (d92032da)
*  missing space in ACP menu dropdown (daeceb45)
*  #8385 (942cc4b1)
*  acp language keys from #8347 not updated in tx config (9ae7fd3e)
*  #8363, dont break history (50703db8)
*  #8363, go to hash when entering topic (0c265a41)
*  #8374, revert event delete (30cc83c0)
*  new language tag for select_tags (09184f40)
*  remove duplicate link to manage/tags in settings/tags (260a482c)
*  tests (3a078f59)
*  handle search tag permission as well (1b5d5425)
*  checking correct permissions for user search (#8371) (f6b92d24)
*  change event name so it doesnt trigger complete event (7786187e)
*  clear error log before checking (75b3a81d)
*  #8323, let admins send validation emails without timeout (e603ebc0)
*  #8352, remove webfonts (#8354) (de7ec47f)
*  more tests (da90fd56)
*  tests due to 0633ad327 (98dffa3a)
*  retry failed setObject calls (2c9e8657)
*  acp menu items (0633ad32)
*  re-jigged tags acp pages (a83f4259)
*  move checks into timeout (47d73a2a)
*  #8339, add missing translation (a9315aee)
*  don't explode if server sends `checkSession` (84c20f91)
*  eliminate unnecessary try..catch (f0e59c14)
*  test breakages from 8d995d1eb609837e4e6e4c77cd855766830378fa (a66fe013)
*  #8320, dont load moderators separately for each category (0a31e3e6)
*  show stack trace on startup errors (11bb6abb)
*  don't trigger quick search if val doesn't change (d6c2764f)
*  prevent duplicate search triggers (6f78113e)
*  user faster method if sorting by smallest set (3ec05eea)
*  add txt to list of default allowed file extensions (01bff2ae)
*  search post snipets incase content is plain text (ada45a34)
*  derp includes (d484731d)
*  another test fix (f2907908)
*  tests (feb748a4)
*  tests on redis (7a801aba)
*  tests, handle no sessions (8bf980cb)
*  #8318, clean expired sessions on login and get (a0d76ff0)
*  tests (a032e12b)
*  #8317 (81e33b93)
*  #8142 invalid session warning if server-side session destroyed (526b3cd9)
*  check privileges before exporting post/topic data (5fd81c5c)
*  exporting posts (dfae664e)
*  undefined uid when downloading posts (bdda0222)
*  #8311, fix allowUserHomePage value (1ba6929c)
*  dont crash if topic is null (e20ad5c5)
*  if category in selector has url use it (1f992cf3)
*  convert cids to string for comparison (c47a1c4d)
*  missing await (97c086ab)
*  add missing schema item (4e14cb57)
*  category selector disabled categories (337be368)
*  #8305, don't use null values (6a5e86dc)
*  #8302, send string to writeFileSync (d09bd2cf)
*  winston showing json object (7d081843)
*  sortable topics even if only 1 pinned topic (6765de3d)
*  #8298, use class name added by jQueryUI instead (dd2bc189)
*  topic search shortcut for macs (f2c725c6)
*  #8297, uids.length is different than topics.length (0431d75f)
*  #8297 guest handles shown in category.tpl (fcb81cb8)
*  only add to set if numRecentReplies>0 (16a98eaf)
*  #8293, don't show error if there are no self messages (be305410)
*  failing tests @julianlam (ecd622fd)
*  #3321, run plugin tests for installed plugins (a6bb9f43)
*  remove deprecated mocha.opts (3d0db963)
*  spec (84383d39)
*  #8290, if there are no filters go to ?reset=1 (9839346e)
*  #8283, update gdpr link again (2d076344)
*  add missing await (4f1128fd)
*  #8287, dont readd user after deletion (9d153fd3)
*  missing await (4d6b2ec3)
*  #8286, rescind notif when its resolved/rejected (0391856d)
*  #8284, parse ToS on register (0ca84bd9)
*  #8283, point to official site (17d664e0)
*  jquery xhtml violations (275e837b)
* #8274 Don't escape HTML in manage users (#8275) (4855f1de)
*  crash in topic controller (0c7c70ed)
*  crash when res.locals.linkTags is undefined (7cab2b0f)
*  #8272 user link in digest email (e80b8101)
*  tag of /api/unread/total (9ffdab02)
*  response hook logic (5a1c6ee7)
*  remove upload picture test (avatars) (6edf02d4)
*  remove tests related to group covers, as route is gone (442fe65f)
*  #8269, return array of topics from hook (4eafe0f0)
*  remove dead picture upload code #8260 (ef52461f)
*  path.resolve to logs file (5bcaf715)
*  only trigger infinitescroll on scroll end (ba6d3fd3)
*  wrong data returned in available.groups (c7ea84a2)
*  no focus on find user modal (1b425ef1)
*  accidental fp precision on flag and acp dash graphs (bcbf98aa)
*  #8232, unresolvable session mismatch on register cancel (f2f6fbf1)
*  pin jquery to 3.4.1, #8252 (e440d617)
*  #8249, don't send move notifications for deleted posts/topics (d77036db)
*  missing descriptions for common properties (7b31fb34)
*  some definitions in read API spec (03739b6f)
*  tagged all routes in read api spec (455d42bc)
*  override ACAO header for read API spec file (240d9091)
*  throw error if topic does not exist (59cf0e80)
*  hookname (e93578b8)
*  #8230, add hook getUserDataByUserSlug (0d1b5a7f)
*  ignore case for group details route (15d6975e)
*  lint (740e598a)
*  lint (8e23dec8)
*  #8221, fix parent selection (08031730)
*  invite properly (071506eb)
*  admins not seeing invite button (8f4b99a4)
*  #8217, add missing lang key (0b5fac75)
*  #8206 first message in chat has false `newSet` (93acd139)
*  #8203, fix user invites refreshing page (2f9c7c62)
*  #8202, filter non-existing users in search by uid (f07f4f8e)
*  notification bodyShort truncated if there is a comma in topic title (266061c3)
*  hsts max-age missing translation (b67af70d)
*  call next (80f1bcad)
*  try travis fix again (05bee629)
*  try fixing psql on travis (bc9e92a1)
*  dont let regular users see other users watched categories (cf6eadb9)
*  also fix updating bookmark if sorting is newest_to_oldest (6e5de39b)
*  #8188, fix bookmark if sorting is newest_to_oldest (32ada7c4)
*  duplicate ID + label (ac241fb8)
*  #8184 global mods unable to revoke other user sessions (f0db240a)
*  return null if field does not exist (e72a29b3)
*  #8179, limit length of location/website/fullname, check grouptitle (14e78667)
*  tag key (32636755)
*  #8175 (bc93b567)
*  #8168 re-allowing slashes in homePageRoute (667608a0)
*  tweak to session validation in addHeaders (eddbd868)
*  only call clearCookie for logged in users (630f5d5b)
*  #6422, update deleted/restored messages (06703408)
*  #8163, prevent account deletion (4d0636f8)
*  register (5a0c7c14)
*  #8157, update recent tid when post is moved (e7495440)
*  tests (b73aa84d)
*  move start/stop every iteration (dd3893b1)
*  #8154, move start/stop every iteration (300c04ce)
*  #8154, respect stop (690bb69d)
*  #8156 dont allow loading members from hidden groups (f23bc347)
*  #8155, don't validate name on update if groupName didn't change (03a02e5d)
*  return correct number of suggested topics (236e1e68)
*  #8151, don't crash if taskbar doesn't have element (2e794801)
*  logic for determining dailyStats hour vars (398f0120)
*  fix daily analytics being one day off (9ecdb92f)
*  remove debug line (0b9ad416)
*  no decimal places for category analytics (14655f87)
*  #8142, broken site if no server-side session (#8148) (d6e3f3f0)
*  #8144 pluginHooks in maintenance mode middleware (0885ec68)
* **openapi:**
  *  tests for #8412 (4cae893f)
  *  api change for #8387 (6a969442)
  *  schema for new flags api (a0e243ee)
  *  broken tests (45dfeeb0)
  *  v14 test fix (23a0b8c5)
  *  remove account and group upload routes (d342a28c)
  *  more fleshing out (058a15db)
  *  fleshed out admin routes (bae88e08)
  *  added some descriptions (ab4bd7e1)
  *  added PostsObject component (2395d2be)
  *  finished moving all category objects out (23dd2727)
  *  changed some descriptions (c939f8c6)
  *  added CategoryObject component (55d0a9ff)
  *  removed repeated breadcrumb blocks in favour of $ref (646fac1e)
  *  remove all repeated pagination blocks in favour of (ac579f9d)
  *  removed warning for category mods route (1cf62095)
  *  normalising the file for programmatic updates (3a5c6e07)
* **style:**
  *  more switch..case (6b1d1acb)
  *  switch..case (922d49be)
  *  enforcing "better" indentation for switch..case (d135b6f7)
* **docs:**  added titles to all routes (aa4ae78b)

##### Other Changes

* id, category fields (2355d9d5)
* //github.com/NodeBB/NodeBB (c3c8b19a)
* //github.com/NodeBB/NodeBB (0ddfb6b0)
* //github.com/NodeBB/NodeBB (d1c1cb2c)
* //github.com/NodeBB/NodeBB (79a7f892)
* user.getFields to match topic/posts (a680a95e)
* //github.com/NodeBB/NodeBB (b459592a)
* //github.com/NodeBB/NodeBB (066b442e)
* //github.com/NodeBB/NodeBB (fd6bf0c9)
* //github.com/NodeBB/NodeBB (c1d8b9bb)
* middleware.renderHeader (2727f472)
* //github.com/NodeBB/NodeBB (69a87933)
* uploadFile (7f24200c)
*  #8142 invalid session warning if server-side session destroyed" (e327d124)
*  ''}) (2a00b0e9)
* //github.com/NodeBB/NodeBB (8c8cdc99)
* categories.getRecentTopicReplies (aad0880f)
*  #8298 (2e57d8ac)
* post.updatePostVoteCount (b25b51bd)
* //github.com/NodeBB/NodeBB (5e140454)
* categories.updateRecentTid (6c59683b)
* categories.updateRecentTid (51933c1f)
* router.page, dep. filter variant (0053e779)
* flags as well (5ebcdb18)
*  crash when res.locals.linkTags is undefined" (fe03effe)
* //github.com/NodeBB/NodeBB (87a6ff0d)
*  cnpm and pnpm (#8222) (e6a1741c)
* //github.com/NodeBB/NodeBB (7ae76477)
*  openapi component" (683e5851)
*  override ACAO header for read API spec file" (c82a2637)
* password.change (00e299e9)
* topic.tools.load (5aa76cdf)
*  #8154, move start/stop every iteration" (4abe5eb7)
* **deps:**  update dependency nodebb-plugin-mentions to v2.8.0" (5c7d37c0)

##### Refactors

*  make code climate happier? (0d112b36)
*  shorter code (af790e3f)
*  shorter code (e8f0da6e)
*  change name to privileges to match other apis (2100a03c)
*  making rendering of header and footer async functions (023942da)
*  remove general menu from ACP (#8347) (a51fff8b)
*  use getSortedSetMembers (7d484fc0)
*  src/flags.js because codeclimate (cf00cda0)
*  flags detail page (8d995d1e)
*  move code (3b6d57e4)
*  remove console.log (40b5cbab)
*  shorter function (7e429884)
*  match core field name pinned (478ed6c1)
*  getUsersCSV to use batch lib (1efb238a)
*  reorganized socket.io admin modules (e1c6c3b2)

##### Reverts

*  bad changelog (a761e31f)

#### 1.13.3 (2020-05-08)

##### Chores

*  bump persona (d2bd746c)
* **deps:**
  *  update dependency coveralls to v3.1.0 (5ed4a108)
  *  pin dependency @apidevtools/swagger-parser to 9.0.1 (51eccef5)
  *  update dependency husky to v4.2.5 (30a25983)
  *  update dependency husky to v4.2.4 (0a650118)
  *  update dependency lint-staged to v10.1.3 (a9e68639)
  *  update dependency nyc to v15.0.1 (#8231) (a3789e28)
  *  update dependency lint-staged to v10.1.2 (#8235) (e1919c90)
  *  update dependency lint-staged to v10.1.1 (944a6f58)
  *  update dependency lint-staged to v10.1.0 (30bd233b)
  *  update dependency eslint-config-airbnb-base to v14.1.0 (811c3aee)
  *  update dependency jsdom to v16.2.2 (c5a7242d)
  *  update dependency eslint-plugin-import to v2.20.2 (b92c1600)
  *  update dependency lint-staged to v10.0.10 (0ad4b556)
  *  update dependency coveralls to v3.0.11 (14458087)
  *  update dependency smtp-server to v3.6.0 (22681945)
  *  update dependency mocha to v7.1.1 (#8215) (c5356541)
  *  update dependency grunt to v1.1.0 (#8214) (b0864e7c)
  *  update dependency husky to v4.2.3 (#8162) (776fe9d2)
  *  update dependency lint-staged to v10.0.8 (#8180) (13d8f6f1)
  *  update dependency eslint-plugin-import to v2.20.1 (#8081) (4cdb3131)
  *  update dependency jsdom to v16.2.1 (#8165) (fbd95a50)
  *  update dependency husky to v4.2.2 (#8160) (f4ed35c9)
  *  update dependency jsdom to v16 (#8114) (1037de02)

##### Documentation Changes

*  updated changelog (146388aa)

##### New Features

*  allow activating additional plugins for testing via config.json (a969c5ce)
*  move plugin tests to separate file (3a23ddab)
*  remove node14 for now (a72e4429)
*  reduce infinite scroll area (3fcbd691)
*  manifest.json improvements from #8126 (#8264) (6e5ebb61)
*  show error if json is invalid (15345627)
*  moved component specs into separate files (cd506557)
*  added UserObject, UserObjectFull, Breadcrumb, Pagination component (64d79fe5)
*  added some summary and descriptions (ae3e90d6)
*  add some descriptions (442c018e)
*  common schema (eade13f9)
*  openapi component (1af5507a)
*  add page query param to docs (9987813f)
*  tag route doc (bbddaadf)
*  local redoc view on development mode only (1136a369)
*  added auto-generated, slimmed-down openapi 3.0 file for read api (7b155dab)
*  add parent cids to body class (23571224)
*  add 2 hooks for modifying privileges (d080c7b0)
*  add user ip to admin/dev/info (5e91a67e)
*  change option name (cba5b23e)
*  add no-build to ./nodebb setup (476f6717)
*  add awaitable socket.emit (4083a6e3)
*  settings sorted list (#8170) (3c9689a5)
*  guard against accidental ommision (79737c53)
* **openapi:**
  *  merging openapi-test branch into master (8387178b)
  *  move all commonprops out for commonprops component (65c78de6)
  *  added template to commonprops (2425f453)

##### Bug Fixes

*  #8302, send string to writeFileSync (d09bd2cf)
*  winston showing json object (7d081843)
*  sortable topics even if only 1 pinned topic (6765de3d)
*  #8298, use class name added by jQueryUI instead (dd2bc189)
*  topic search shortcut for macs (f2c725c6)
*  #8297, uids.length is different than topics.length (0431d75f)
*  #8297 guest handles shown in category.tpl (fcb81cb8)
*  only add to set if numRecentReplies>0 (16a98eaf)
*  #8293, don't show error if there are no self messages (be305410)
*  failing tests @julianlam (ecd622fd)
*  #3321, run plugin tests for installed plugins (a6bb9f43)
*  remove deprecated mocha.opts (3d0db963)
*  spec (84383d39)
*  #8290, if there are no filters go to ?reset=1 (9839346e)
*  #8283, update gdpr link again (2d076344)
*  add missing await (4f1128fd)
*  #8287, dont readd user after deletion (9d153fd3)
*  missing await (4d6b2ec3)
*  #8286, rescind notif when its resolved/rejected (0391856d)
*  #8284, parse ToS on register (0ca84bd9)
*  #8283, point to official site (17d664e0)
*  jquery xhtml violations (275e837b)
* #8274 Don't escape HTML in manage users (#8275) (4855f1de)
*  crash in topic controller (0c7c70ed)
*  crash when res.locals.linkTags is undefined (7cab2b0f)
*  #8272 user link in digest email (e80b8101)
*  tag of /api/unread/total (9ffdab02)
*  response hook logic (5a1c6ee7)
*  remove upload picture test (avatars) (6edf02d4)
*  remove tests related to group covers, as route is gone (442fe65f)
*  #8269, return array of topics from hook (4eafe0f0)
*  remove dead picture upload code #8260 (ef52461f)
*  path.resolve to logs file (5bcaf715)
*  only trigger infinitescroll on scroll end (ba6d3fd3)
*  wrong data returned in available.groups (c7ea84a2)
*  no focus on find user modal (1b425ef1)
*  accidental fp precision on flag and acp dash graphs (bcbf98aa)
*  #8232, unresolvable session mismatch on register cancel (f2f6fbf1)
*  pin jquery to 3.4.1, #8252 (e440d617)
*  #8249, don't send move notifications for deleted posts/topics (d77036db)
*  missing descriptions for common properties (7b31fb34)
*  some definitions in read API spec (03739b6f)
*  tagged all routes in read api spec (455d42bc)
*  override ACAO header for read API spec file (240d9091)
*  throw error if topic does not exist (59cf0e80)
*  hookname (e93578b8)
*  #8230, add hook getUserDataByUserSlug (0d1b5a7f)
*  ignore case for group details route (15d6975e)
*  lint (740e598a)
*  lint (8e23dec8)
*  #8221, fix parent selection (08031730)
*  invite properly (071506eb)
*  admins not seeing invite button (8f4b99a4)
*  #8217, add missing lang key (0b5fac75)
*  #8206 first message in chat has false `newSet` (93acd139)
*  #8203, fix user invites refreshing page (2f9c7c62)
*  #8202, filter non-existing users in search by uid (f07f4f8e)
*  notification bodyShort truncated if there is a comma in topic title (266061c3)
*  hsts max-age missing translation (b67af70d)
*  call next (80f1bcad)
*  try travis fix again (05bee629)
*  try fixing psql on travis (bc9e92a1)
*  dont let regular users see other users watched categories (cf6eadb9)
*  also fix updating bookmark if sorting is newest_to_oldest (6e5de39b)
*  #8188, fix bookmark if sorting is newest_to_oldest (32ada7c4)
*  duplicate ID + label (ac241fb8)
*  #8184 global mods unable to revoke other user sessions (f0db240a)
*  return null if field does not exist (e72a29b3)
*  #8179, limit length of location/website/fullname, check grouptitle (14e78667)
*  tag key (32636755)
*  #8175 (bc93b567)
*  #8168 re-allowing slashes in homePageRoute (667608a0)
*  tweak to session validation in addHeaders (eddbd868)
*  only call clearCookie for logged in users (630f5d5b)
*  #6422, update deleted/restored messages (06703408)
*  #8163, prevent account deletion (4d0636f8)
*  register (5a0c7c14)
*  #8157, update recent tid when post is moved (e7495440)
*  tests (b73aa84d)
*  move start/stop every iteration (dd3893b1)
*  #8154, move start/stop every iteration (300c04ce)
*  #8154, respect stop (690bb69d)
*  #8156 dont allow loading members from hidden groups (f23bc347)
*  #8155, don't validate name on update if groupName didn't change (03a02e5d)
*  return correct number of suggested topics (236e1e68)
*  #8151, don't crash if taskbar doesn't have element (2e794801)
*  logic for determining dailyStats hour vars (398f0120)
*  fix daily analytics being one day off (9ecdb92f)
*  remove debug line (0b9ad416)
*  no decimal places for category analytics (14655f87)
*  #8142, broken site if no server-side session (#8148) (d6e3f3f0)
*  #8144 pluginHooks in maintenance mode middleware (0885ec68)
* **deps:**
  *  #8298 bump persona (158d9231)
  *  update dependency nodebb-plugin-composer-default to v6.3.25 (89d17647)
  *  update dependency jquery to v3.5.1 [security] (#8281) (a69f0b29)
  *  update dependency nodebb-rewards-essentials to v0.1.3 (#8289) (919034a7)
  *  update dependency mongodb to v3.5.7 (#8279) (25d509c4)
  *  actually, swagger-parser is a dev dependency (d09c6ae0)
  *  missing @apidevtools/swagger-parser (f1720735)
  *  update dependency nodebb-theme-persona to v10.1.37 (#8258) (b0c30ceb)
  *  update dependency archiver to v4 (28777f67)
  *  update dependency mongodb to v3.5.6 (#8256) (49236067)
  *  bump dependencies (#8239) (e68156e1)
  *  update dependency jsesc to v3.0.1 (#8243) (92b55ef5)
  *  update dependency jsesc to v3 (bb70cebb)
  *  update dependency pg to v8 (#8227) (ac98775f)
  *  update dependency validator to v13 (f497ee62)
  *  update dependency sharp to v0.25.2 (#8220) (dd660c87)
  *  bump markdown (ee6cb412)
  *  update dependency mongodb to v3.5.5 (#8205) (5535c50c)
  *  update dependency sitemap to v6 (#8198) (2052f14c)
  *  update dependency nodebb-plugin-composer-default to v6.3.23 (6d98d5a1)
  *  update dependency sharp to v0.25.1 (#8199) (21e91c91)
  *  update dependency nodebb-plugin-composer-default to v6.3.22 (#8193) (e01f05e3)
  *  update dependency nodebb-theme-slick to v1.2.29 (#8177) (9daa21ff)
  *  update dependency nodebb-theme-vanilla to v11.1.16 (#8178) (7d6a983b)
  *  update dependency nodebb-theme-persona to v10.1.35 (#8176) (3acc24b0)
  *  update dependency sharp to v0.24.1 (#8164) (7cc63f7d)
  *  update dependency mongodb to v3.5.3 (#8161) (4b907137)
  *  update dependency nodebb-widget-essentials to v4.1.0 (#8159) (a5f3c2a2)
  *  update dependency request to v2.88.2 (#8158) (7fde180a)
  *  update dependency redis to v3 (#8152) (ef964b11)
  *  update dependency rimraf to v3.0.2 (#8153) (d8efc6b6)
* **openapi:**
  *  v14 test fix (23a0b8c5)
  *  remove account and group upload routes (d342a28c)
  *  more fleshing out (058a15db)
  *  fleshed out admin routes (bae88e08)
  *  added some descriptions (ab4bd7e1)
  *  added PostsObject component (2395d2be)
  *  finished moving all category objects out (23dd2727)
  *  changed some descriptions (c939f8c6)
  *  added CategoryObject component (55d0a9ff)
  *  removed repeated breadcrumb blocks in favour of $ref (646fac1e)
  *  remove all repeated pagination blocks in favour of (ac579f9d)
  *  removed warning for category mods route (1cf62095)
  *  normalising the file for programmatic updates (3a5c6e07)

##### Other Changes

*  #8298 (2e57d8ac)
* post.updatePostVoteCount (b25b51bd)
* //github.com/NodeBB/NodeBB (5e140454)
* categories.updateRecentTid (6c59683b)
* categories.updateRecentTid (51933c1f)
* router.page, dep. filter variant (0053e779)
* flags as well (5ebcdb18)
*  crash when res.locals.linkTags is undefined" (fe03effe)
* //github.com/NodeBB/NodeBB (87a6ff0d)
*  cnpm and pnpm (#8222) (e6a1741c)
* //github.com/NodeBB/NodeBB (7ae76477)
*  openapi component" (683e5851)
*  override ACAO header for read API spec file" (c82a2637)
* password.change (00e299e9)
* topic.tools.load (5aa76cdf)
*  #8154, move start/stop every iteration" (4abe5eb7)

##### Refactors

*  match core field name pinned (478ed6c1)
*  getUsersCSV to use batch lib (1efb238a)
*  reorganized socket.io admin modules (e1c6c3b2)

#### 1.13.2 (2020-02-05)

##### Chores

*  bump themes (027f3f22)
*  bump vanilla (236a1730)
*  bump persona (82ace391)
* **deps:**
  *  update dependency eslint to v6.8.0 (#8062) (15783213)
  *  update dependency nyc to v15 (#8094) (976e26a9)
  *  update commitlint monorepo (#8100) (eb4a1a57)
  *  update dependency lint-staged to v10.0.7 (#8132) (cdfbcbb9)
  *  update dependency mocha to v7 (#8106) (b370333c)
  *  update dependency husky to v4 (dd440ce9)
  *  update dependency lint-staged to v10.0.1 (66992a55)
  *  update dependency lint-staged to v10 (d74eecfb)

##### Documentation Changes

*  updated changelog (2edc6960)

##### New Features

*  add test for isOnline (66febb80)
*  add test for change post owner (df2c7851)
*  check flag values on save (assignee and state) (#8122) (8e5a2276)

##### Bug Fixes

*  admin relogin (a5ef6b53)
*  #8135 (c35a21d7)
*  handle mkdirp0.5->1.0x so it doesn't break upgrade (1e50616c)
*  #8134, upgrade mkdirp to 1.0.x (87225a90)
*  onSuccessfulLogin not working (111ed802)
*  #8139, dont allow restore if not deleted by self (8c48f94b)
*  use view_deleted when filtering, closes #8137 (9969dd63)
*  escape invalid rules (d927b763)
*  add missing await (3cca929a)
*  missing await in SocketPosts.changeOwner (0ae1eb4f)
*  #8133, check if user is in room before removing (23810cc6)
*  add missing await (cd1fa27a)
*  missing await (f799f017)
*  dont return flag data to client (418c174d)
*  check if user has read priv before flagging (51236df4)
*  restrict getUsersInRoom to members (1f13ab8a)
*  remove unused conditional, dont add dupe messages (3077eb94)
*  tests for messaging (ecc579a2)
*  #8127 user join system message duplicated (594cd7e1)
*  background-size in taskbar images (106c141f)
*  tests, was using hardcoded message id (1b08f376)
*  typo in #8116 (8bb5e71e)
*  build step defaults to series instead of parallel (3fac09b1)
*  escape system message, don't allow editing system messages (6a63c1a1)
*  escape register query param (c8fb7f92)
*  delete upload (8c6a7954)
*  check uploadName (153b1a0e)
*  #8120, bubble errors from static hooks (01d1ae78)
*  escape bootswatchSkin and homepageRoute (b0f3e48a)
*  change owner missing await (3e525576)
*  hsts always enabled (e3952674)
*  escape topic.thumb (b7a57996)
*  #8112, don't crash hook returns no data (4eb9652a)
*  escape config.userLang/acpLang, don't allow invalid language codes (e06c1bfc)
*  group create/join/update name validation (61da8c29)
*  don't crash if groupData is missing (48f08627)
*  #8105, fix export json on page load (5a8217de)
*  #8103, fix advanced menu not displaying in ACP (52774531)
*  meta description missing if url doesn't have post index (10989ccc)
*  create user modal instantly closing (c1b1ee61)
*  login with weak password (9d074731)
*  dont check password strength on login (f6d7a24a)
* **deps:**
  *  update dependency connect-redis to v4.0.4 (#8143) (16ab641d)
  *  update dependency rimraf to v3.0.1 (#8138) (726ba71c)
  *  update dependency validator to v12.2.0 (#8136) (f07b4bfa)
  *  update dependency nodebb-theme-persona to v10.1.34 (#8140) (6d7131fb)
  *  update dependency nodebb-theme-persona to v10.1.31 (#8129) (c510a2c4)
  *  update dependency mongodb to v3.5.2 (#8092) (0e49cfb9)
  *  update dependency sharp to v0.24.0 (#8121) (16e8f496)
  *  update dependency nodebb-plugin-composer-default to v6.3.21 (#8119) (ca10f8f0)
  *  update dependency nodebb-widget-essentials to v4.0.18 (#8111) (df5e3a73)

##### Other Changes

* NodeBB/NodeBB (b959c24a)
* //github.com/NodeBB/NodeBB (ee4304b4)
* //github.com/NodeBB/NodeBB (bfaba895)
*  save disableLeave (#8123) (09d55581)
* //github.com/NodeBB/NodeBB (842916ea)

##### Refactors

*  messaging (30c50361)

#### 1.13.1 (2019-12-19)

##### Chores

* **deps:**
  *  update dependency husky to v3.1.0 (#8046) (c3418c26)
  *  update dependency coveralls to v3.0.9 (#8067) (0aeee144)
  *  update dependency eslint to v6.7.0 (32cfe96f)
  *  update dependency coveralls to v3.0.8 (#8054) (8ba26104)

##### Documentation Changes

*  updated changelog (94499da3)

##### New Features

*  better output for cli plugins list, closes #8075 (4fc69443)
*  #5272, allow changing user groups from manage users page (05c9fe27)
*  merge social authentication into plugins menu in ACP (f9a8ebfc)
*  convert middleware.isAdmin to async/await (efd1e88b)

##### Bug Fixes

*  #8085, fix cookie name (dec157d6)
*  #8058, fix incorrect digest setting display in ACP (1b992d82)
*  remove select version (6a17e32d)
*  travis config (3ae98300)
*  travis :dog: (3731dc4e)
*  #8078, dont mark notifications read without a mergeId (a8df6d62)
*  #8077, show continue chat on all profile pages (7af1c873)
*  profile showing posts from deleted topics (2679f37d)
*  #8073, configurable necroThreshold (4d669783)
*  allow members to search as well (b323df2f)
*  #8069, dont show hidden groups in search (c2cd7de8)
*  missing await (33fd4a1c)
*  #8064, break-word on post-queue (1bda92e3)
*  #6711 (7ed002a1)
*  #8061, don't crash if there is a network problem (de404102)
*  #8059, properly mark topic unread when using mark unread for all (a688aaae)
*  #8042, dont show errors after clearing form (3811e0a3)
*  unhandled promise rejection error on reset error (51073772)
*  #8050, fix redirect after registration (366ad5cd)
*  make _csrf a secure cookie if the website is using https (#8045) (0efe27b1)
*  #8034 (0a96c923)
*  serialize (a2545204)
*  show login fields if user has local password (1eca5b3d)
*  use the correct attribute name for widgets (6c404b81)
* **deps:**
  *  update dependency semver to v7 (483d7535)
  *  update dependency nodebb-theme-vanilla to v11.1.12 (610ecf35)
  *  update dependency sharp to v0.23.4 (#8076) (eb18c182)
  *  update dependency nodebb-theme-persona to v10.1.30 (0514383a)
  *  update dependency nodebb-plugin-markdown to v8.11.0 (702ca164)
  *  update dependency connect-mongo to v3.2.0 (2aef7a5b)
  *  update dependency mongodb to v3.3.5 (#8065) (68118e43)
  *  update dependency nodebb-theme-persona to v10.1.29 (#8057) (34933091)
  *  update dependency sharp to v0.23.3 (#8044) (6fa88823)
  *  update dependency validator to v12.1.0 (#8055) (488ea394)
  *  update dependency nodebb-theme-slick to v1.2.28 (#8041) (b3511f71)
  *  update dependency nodebb-theme-vanilla to v11.1.11 (#8040) (d567c4ae)
  *  update dependency nodebb-theme-persona to v10.1.28 (#8039) (6c87bed5)
  *  update dependency nodebb-plugin-dbsearch to v4.0.7 (#8038) (1e2e16b4)

##### Refactors

*  async/await middleware (a227cbe3)
*  change to const/let (3454a24b)
*  shorter returns (cec00795)

### 1.13.0 (2019-11-13)

##### Chores

* **deps:**
  *  update dependency jsdom to v15.2.1 (9d946d1c)
  *  update dependency eslint to v6.6.0 (d0e428e9)
  *  update dependency lint-staged to v9.4.2 (#7954) (d108c7d0)
  *  update dependency mocha to v6.2.2 (#7984) (e31a47cd)
  *  update dependency coveralls to v3.0.7 (#7961) (9b308e4b)
  *  update dependency jsdom to v15.2.0 (#7971) (9b4e9882)
  *  update dependency husky to v3.0.9 (fd5095a3)
  *  update dependency husky to v3.0.8 (88cae415)
  *  update dependency lint-staged to v9.4.1 (a2a7bb3d)
  *  update node.js to v8.16.1 (f9ad826b)
  *  update node:8.16.0 docker digest to bb12612 (48cc317c)
  *  update dependency eslint to v6.5.1 (da12e947)
  *  update dependency husky to v3.0.7 (10a30e66)
  *  update commitlint monorepo to v8.2.0 (ddd4e039)
  *  update dependency mocha to v6.2.1 (b172d106)
  *  update dependency lint-staged to v9.2.3 (ccccba81)
  *  update dependency coveralls to v3.0.6 (#7820) (2b1f840e)
  *  update dependency husky to v3.0.3 (cbede89a)
  *  update dependency lint-staged to v9 (f2e4664d)
  *  update dependency eslint-plugin-import to v2.18.2 (#7779) (57b2a553)
  *  update dependency eslint to v6.1.0 (#7783) (7257e6b2)
  *  update dependency husky to v3.0.2 (7ad72b32)
  *  update node:8.16.0 docker digest to c671dc2 (e76214a2)
  *  update dependency mocha to v6.2.0 (d43f5dcf)
  *  update node:8.16.0 docker digest to 310db2a (c46a0772)
  *  update dependency husky to v3.0.1 (28151f86)
  *  update dependency eslint-plugin-import to v2.18.1 (9fda2c1f)
  *  update commitlint monorepo to v8.1.0 (f73468d5)
  *  update dependency coveralls to v3.0.5 (5b746d53)
  *  update dependency husky to v2.7.0 (1d0fd028)
  *  update dependency eslint to v6.0.1 (77347d0a)
  *  update dependency husky to v2.6.0 (fc69e891)
  *  update dependency eslint-plugin-import to v2.18.0 (744e4428)
  *  update dependency husky to v2.5.0 (4960b925)
  *  update dependency lint-staged to v8.2.1 (2fa68e3b)
  *  update node:8.16.0 docker digest to 06adec3 (fc224cca)
  *  update dependency husky to v2.4.1 (17ec8fde)
  *  update node:8.16.0 docker digest to d5ad3f5 (f9e99fa3)
  *  update node:8.16.0 docker digest to 75b524a (5995834b)
  *  update node:8.16.0 docker digest to b9a98ae (fca6d794)
  *  update dependency lint-staged to v8.2.0 (376390c4)
  *  update dependency husky to v2.4.0 (3d2ec0bb)
  *  update dependency coveralls to v3.0.4 (c360e0c2)
  *  update dependency eslint-plugin-import to v2.17.3 (eac4e2f1)
  *  update node:8.16.0 docker digest to 957cab2 (cc6fa97c)
  *  update commitlint monorepo to v8 (80532831)

##### Documentation Changes

*  updated changelog (183b0ed3)

##### New Features

*  displaying one-click unsubscribe link in email footer (#8024) (df139928)
*  #7467, pass query params when redirecting to posts (480a64aa)
*  use helpers.setupAdminPageRoute (b5a30006)
*  wip, better digest handling (+ eventual digest resend logic) (#7995) (645d6472)
*  add action:messaging.save (ac5c560c)
*  #7957, allow post queue based on group (1cedc4a0)
*  add filter:topics.unreadCutoff (e020b85b)
*  Add filter:topic.delete and filter:topic.restore (#7946) (#7989) (989107d9)
*  no more session cookie for guests (#7982) (cf7e0cfd)
*   Implement WICG change-password-url (#7072) (#7990) (df1efe5f)
*  log errors from mubsub (b01a47cb)
*  upgrade to sitemap5 (#7980) (d6792188)
*  #7964, change all categories at once (485fbd2f)
*  closes #7952, translate widget-settings (990508a5)
*  remove ability to delete events from acp (554e6711)
*  resetting theme will reset skin (03827fa6)
*  disable timeout on launch route (4bc77d06)
*  add new hook to get custom category tids for unread (b1926054)
*  adding filter:login.check and loginFormEntry[] for the filter:login.build hook (#7861) (94810fd6)
*  #7932, redirect to group details after creation (2444ed5c)
*  add new hook filteR:topics.getSortedTids (b93c826d)
*  bypass cropper for gifs (9a756004)
*  deprecate file.isFileTypeAllowed (ffe3670f)
*  send notification to group owners when someone leaves (ed122364)
*  add failing test for pagination (#7924) (22b02f14)
*  refactor getSortedSetRange to allow big arrays (b602c044)
*  add new test (1e5246f9)
*  add rss feed url for tags (bbc2e956)
*  add sm2x avatar class #7813 (35a4ca2f)
*  #7090, abililty to hide widgets (71cd602d)
*  #7760, body-parser config (5de6d885)
*  actually cache duh (f05c1dae)
*  cache tags:topic:count (63bd252f)
*  increase search timeouts (1789ecb4)
*  make handleSearch public (ebe5ed22)
*  increase size of local cache (b81405a8)
*  don't hardcode numberic fields in user search (09410ff1)
*  allow only watching core (451c7fd4)
*  client-side taskbar.update method, deprecates .updateTitle() (9b09ee0e)
*  option to restrict group leaving, closes #7770 (1796b65d)
*  preserver querystring when changing category sort (ad96b0e0)
*  html sanitization on all filter:parse.* hooks, closes #7872 (2580306d)
*  up socket.io-adapter-mongo (3d2cb628)
*  update LESS to v3.x, #7855 (#7867) (aea04de0)
*  up psql socket.io adapter (b565e568)
*  add client side hook for quick search&normal search (f31d30cd)
*  allow floating pinned topics to top in getSortedTopics (1d7e0c63)
*  promisify recent.getData (6f7ab586)
*  faster initial stat loading (89cd31ed)
*  cache stats, mongo count sucks (cb50b3f4)
*  dashboard stats (3ff6e1bb)
*  add filter:search.getPosts (aeb44faf)
*  add image and imageClass to post summaries (80bd52fc)
*  #7842, make isInvited, isPending work with uids (fa268556)
*  convert search controller to async/await (acf12e3d)
*  notification on membership acceptance, closes #7835 (1a2a381a)
*  additional events logged for various group actions (1ce33faa)
*  async (e6353486)
*  async/await controllers/admin/dashboard (32ea04a8)
*  async/await admin/controllers (72590b34)
*  async/await (7beef91c)
*  async/await refactor (3cc7ec63)
*  async/await controllers/accounts (a3541d88)
*  rewrite getRawPost to async/await (b734defb)
*  added new filter hook filter:post.getRawPost (973075cf)
*  convert categories controller to async/await (e9fd49e2)
*  new client-side hooks for chat minimize and close (3d3fa865)
*  test psql without defineProperty (#7815) (af1f7249)
*  fire updateRemainingLength hook for chats (af968c6a)
*  send pids into filter:post.getFields hook (0e07ffa1)
*  move cache tpl (65fc0612)
*  async refactor (3a9d83a4)
*  move group privs above user, add labels (47e30a67)
*  widgets/index.js (dec8040c)
*  use promise version (4d6b6871)
*  #7743, meta/dependencies (1c2540d3)
*  #7743, widgets/admin (96ebe7b5)
*  #7743, meta/languages and languages (c02686bf)
*  added filter:tags.getAll plugin hook (66aa443b)
*  #7743, events (102d4b02)
*  #7743 meta/errors (97d7a850)
*  get rid of async.eachSeries (99cf47ee)
*  #7743 meta/tags.js (7b908639)
*  #7743 meta/templates.js (79eed9ae)
*  #7743 navigation (764a2b12)
*  #7743 account/posts controller (e72f3e4f)
*  #7743 finish topics controller (9b3f4b98)
*  #7743, webserver (0d047f4e)
*  #7743 meta/themes.js (7dc0eaf0)
*  #7743, meta/sounds (a15c50bf)
*  #7743 , meta/cachebuster, meta/configs (7f72181e)
*  convert src/messaging/* to async/await (#7778) (756a717e)
*  #7743 meta/blacklist (fcf8fd51)
*  #7743 meta/index (69860e58)
*  #7743 plugins (c126cd85)
*  #7743 plugins/data (f5f5f76b)
*  dont waste whitespace (17f843f9)
*  switch to promise.all (34d85b52)
*  #7743, privileges (faccb191)
*  #7743 , search.js (6d3a92b8)
*  shorter name (8e75646a)
*  cache group:members for priv groups (daed76d5)
*  #7743 finish groups (72def7df)
*  #7743, groups/index, invite, leave,membership (a39ca51e)
*  #7743,groups/index,join (d5342a40)
*  #7743, groups/delete,ownership,posts,user (fcd4445a)
*  #7743 groups/cover,create,data (5e8614e1)
*  #7743, finish post module (c0c6c652)
*  #7743 posts/diff, posts/edit (c4bb467e)
*  #7743, posts module (1b2b308a)
*  #7743, finish user module (a51ec591)
*  #7743 (6fea46b6)
*  #7743 (cd80c263)
*  #7743 (0a690c57)
*  #7743 (1c5fad6d)
*  #7743 (fe4c0481)
*  #7743 categories (fcf3e077)
*  #7743, user/digest, user/email, user/follow (c610eb14)
*  #7743, user/create, user/data, user/delete (d6e36c31)
*  #7743 , user/block, user/categories (4541caa4)
*  #7743 notifications (6f738c2b)
*  remove unused code, add 2 tests (cd2e68cb)
*  #7743 user/ban, up mubsub (1970214a)
*  #7743, user/approval, user/auth (b24ce976)
*  #7743, posts/votes (8ef75be3)
*  #7743 posts (e1ecc36d)
*  #7743 user/admin.js (2c335955)
*  add utils.promiseParallel (4170abfd)
*  #7743, posts/user.js (0a6cfb37)
*  added new admin option newbiePostEditDuration (#7737) (8a6a58ee)
*  returning category data in tags page (75ff4d7d)
*  ACP analytics API route (#7725) (a0c0ef1b)
*  closes #7718 (ee4d78ca)
*  add status to post summaries (41bc6ca2)
*  use arrow functions (3100d803)
*  ability to sort watched topics, closes #3735 (f24c14d7)
*  use fewer system resources to draw the progress bar (d0ee312c)
*  removed series from upgrade script (23fb904f)
*  remove duped zadds, these are already in topics.onNewPostMade (cb51c239)
*  log data on error (f8a7cf73)
*  cleanup, use bulk (198d0587)
*  #7707, added sortedSetAddBulk (3ecd703e)
*  change widget-* to data-widget-* (#7703) (13efbc99)
*  shorter setsCard (3780a58f)
*  show best & latest posts on profile (b53a60c2)
*  use db.sortedSetsAdd (7e54d7aa)
*  use db.sortedSetsAdd (29a124c4)
*  dont log action:plugins.fireHook (a7600b4b)
*  upgrade to connect-mongo 3.0.0, closes #7693 (ebfc369a)
*  add hook for user notifications, closes #7672 (ede060a6)
*  user/notifications refactor (580f7860)
*  send new post/topic event in batches (8c331088)
*  allowing count to be passed to ./nodebb events (f6d3cc0e)
*  awaitable websockets (#7645) (aee47b29)
*  hooks can now return promise or call callbacks (a6436716)
*  fallback strings for ACP events (99120676)
*  design revamp of ACP events page (#7664) (c7f95cce)
*  optimize group rename (48538b28)
*  allow multiple scores in sortedSetsAdd (31ccc860)
*  optimize copy privileges (0dca13e9)
*  on category search reveal children and parents (0721bee1)
*  async3 upgrade (#7639) (4d9bc30d)
*  #7627, close chat on ajaxify on mobile (6cebc7f0)
*  update meta tags on ajaxify (#7580), fixes #7544 (a41769e6)

##### Bug Fixes

* **deps:**
  *  update dependency mongodb to v3.3.4 (#8032) (2093418d)
  *  update dependency nodebb-theme-vanilla to v11.1.10 (c01699f7)
  *  update dependency nodebb-theme-persona to v10.1.27 (182397b1)
  *  update dependency nodebb-plugin-spam-be-gone to v0.6.7 (#8027) (c2565a2f)
  *  update dependency nodebb-theme-slick to v1.2.27 (#8020) (7122bdc7)
  *  update dependency nodebb-theme-persona to v10.1.26 (#8019) (73d9752e)
  *  update dependency connect-mongo to v3.1.2 (#8013) (bfea9d39)
  *  update dependency postcss to v7.0.21 (#7998) (ef5f6714)
  *  update dependency nodebb-plugin-composer-default to v6.3.17 (#8009) (e1e2d20c)
  *  update dependency sharp to v0.23.2 (#8005) (420f9fe4)
  *  update dependency nodebb-theme-persona to v10.1.25 (#8012) (cb91e756)
  *  update dependency connect-mongo to v3.1.1 (#8006) (7655265c)
  *  update dependency connect-mongo to v3.1.0 (#7994) (401d1eed)
  *  bump persona (6155c460)
  *  update dependency nodebb-theme-persona to v10.1.23 (#7986) (9bd6f686)
  *  update dependency nodebb-theme-persona to v10.1.22 (#7965) (bf6ae6d6)
  *  update dependency nodebb-rewards-essentials to v0.1.2 (#7962) (692d94bf)
  *  update dependency nodebb-theme-persona to v10.1.21 (#7956) (1a150d8f)
  *  update dependency nodebb-plugin-spam-be-gone to v0.6.6 (#7944) (cffbb325)
  *  update dependency nodebb-theme-persona to v10.1.20 (#7943) (9589fa32)
  *  update dependency nodebb-theme-persona to v10.1.19 (#7942) (0d629f06)
  *  update dependency connect-redis to v4.0.3 (#7933) (2856333d)
  *  update dependency spider-detector to v2 (310039e8)
  *  update socket.io packages to v2.3.0 (764ed7f8)
  *  update dependency sharp to v0.23.1 (#7928) (17437897)
  *  update dependency nodebb-plugin-dbsearch to v4.0.6 (#7918) (44cd7189)
  *  update dependency nodebb-plugin-composer-default to v6.3.16 (#7917) (d8fe6e42)
  *  update dependency nodebb-plugin-composer-default to v6.3.15 (#7916) (c5e5e24b)
  *  update dependency nodebb-plugin-composer-default to v6.3.14 (#7914) (e18392ab)
  *  update dependency nodebb-theme-persona to v10.1.18 (#7906) (8ed80bcb)
  *  update dependency nodebb-rewards-essentials to v0.1.1 (#7905) (5b8bb3e4)
  *  update dependency connect-redis to v4 (#7869) (8b7f6566)
  *  update dependency nodebb-plugin-mentions to v2.7.3 (#7899) (b2423bae)
  *  update dependency nodebb-plugin-mentions to v2.7.2 (#7898) (a3120a62)
  *  update dependency nodebb-plugin-dbsearch to v4.0.5 (#7896) (106c20e2)
  *  update dependency nodebb-plugin-composer-default to v6.3.13 (#7895) (fa251ece)
  *  update dependency nodebb-plugin-mentions to v2.7.1 (8c2fc577)
  *  update dependency nodebb-plugin-composer-default to v6.3.12 (#7889) (429e124f)
  *  update dependency nodebb-plugin-composer-default to v6.3.11 (#7888) (516b62ea)
  *  update dependency nodebb-plugin-composer-default to v6.3.10 (6a4a9e26)
  *  update dependency nodebb-plugin-dbsearch to v4.0.4 (#7883) (12ba589d)
  *  update dependency postcss to v7.0.18 (c75f3d27)
  *  update dependency nodebb-theme-persona to v10.1.17 (317c6771)
  *  update dependency nodebb-theme-vanilla to v11.1.8 (6e9caddc)
  *  update dependency nodebb-plugin-composer-default to v6.3.9 (effe3989)
  *  update dependency nodebb-plugin-mentions to v2.7.0 (b69769bb)
  *  update dependency benchpressjs to v2 (#7876) (9149db1f)
  *  update dependency nodebb-plugin-composer-default to v6.3.8 (793c5eaa)
  *  update dependency nodebb-plugin-composer-default to v6.3.7 (57de99d2)
  *  update dependency mongodb to v3.3.2 (#7871) (4ee2c090)
  *  update dependency nodebb-plugin-spam-be-gone to v0.6.5 (#7865) (8ce2a5fc)
  *  update dependency mongodb to v3.3.1 (#7862) (0dfce49f)
  *  update dependency connect-pg-simple to v6 [security] (#7864) (e4b5d0b4)
  *  update dependency nodebb-plugin-mentions to v2.6.1 (a1210985)
  *  update dependency nodebb-plugin-mentions to v2.6.0 (cdccc646)
  *  update dependency rimraf to v3 (#7843) (2f02edbc)
  *  update dependency rimraf to v2.7.1 (#7838) (cf2504f8)
  *  update dependency nodebb-theme-persona to v10.1.16 (#7848) (ca7ba9be)
  *  update dependency nodebb-theme-persona to v10.1.15 (#7845) (b1c0beb7)
  *  update dependency nodebb-theme-persona to v10.1.14 (#7837) (661284cf)
  *  update dependency nodebb-theme-persona to v10.1.13 (eaea6f63)
  *  update dependency sitemap to v4 (d3d677da)
  *  update dependency commander to v3 (7a5dbd9f)
  *  update dependency mongodb to v3.3.0 (360e172e)
  *  update dependency nodebb-plugin-markdown to v8.10.4 (61f9be99)
  *  update dependency nodebb-plugin-markdown to v8.10.3 (d860f8c7)
  *  update dependency sharp to v0.23.0 (#7806) (2258452c)
  *  update dependency nodebb-theme-persona to v10.1.12 (#7799) (b9aac424)
  *  update dependency nodebb-plugin-dbsearch to v4 (#7797) (d98313b5)
  *  update dependency nodebb-plugin-dbsearch to v3.0.8 (#7796) (ef734b62)
  *  update dependency nodebb-theme-persona to v10.1.11 (8b1fc5c8)
  *  update dependency nodebb-theme-vanilla to v11.1.7 (ba1bb528)
  *  update dependency nodebb-theme-vanilla to v11.1.6 (#7784) (7a88c4cc)
  *  update dependency nodebb-theme-slick to v1.2.26 (#7782) (e074b0bf)
  *  update dependency nodebb-theme-persona to v10.1.10 (#7781) (4f20b4d3)
  *  update dependency nodebb-plugin-composer-default to v6.3.6 (3fdc638b)
  *  update dependency connect-redis to v3.4.2 (8a11193f)
  *  update dependency nodebb-plugin-mentions to v2.5.4 (45223cde)
  *  update dependency nodebb-plugin-markdown to v8.10.2 (86546232)
  *  update dependency nodebb-theme-persona to v10.1.9 (#7759) (c1660a1a)
  *  update dependency nodebb-plugin-dbsearch to v3.0.7 (#7758) (efedd621)
  *  update dependency nodebb-plugin-composer-default to v6.3.5 (7f4b1043)
  *  update dependency nodebb-theme-vanilla to v11.1.5 (#7756) (15e01d12)
  *  update dependency nodebb-theme-persona to v10.1.8 (#7755) (19679608)
  *  update dependency nodebb-theme-persona to v10.1.7 (#7754) (3cb6cfe8)
  *  update dependency nodebb-plugin-composer-default to v6.3.3 (8394a0fd)
  *  update dependency nodebb-theme-vanilla to v11.1.4 (#7741) (43ce5f8a)
  *  update dependency nodebb-theme-persona to v10.1.5 (27da2325)
  *  update dependency validator to v11.1.0 (#7738) (bd09ba92)
  *  bump composer-default (851424a7)
  *  update dependency nodebb-theme-persona to v10.1.4 (f426e105)
  *  update dependency nodebb-plugin-composer-default to v6.2.16 (#7723) (fb087029)
  *  update dependency nodebb-theme-persona to v10.1.3 (413259a2)
  *  update dependency nodebb-theme-lavender to v5.0.11 (#7705) (208c821e)
  *  update dependency nodebb-theme-vanilla to v11.1.3 (#7714) (e0b2ae8d)
  *  update dependency nodebb-theme-slick to v1.2.25 (#7713) (af7ecd2f)
  *  update dependency nodebb-theme-persona to v10.1.2 (#7712) (e5733f40)
  *  update dependency nodebb-plugin-mentions to v2.5.3 (26ff02dc)
  *  update dependency nodebb-theme-persona to v10.1.1 (4e513cf3)
  *  update dependency nodebb-theme-vanilla to v11.1.2 (c2887505)
  *  update dependency nodebb-theme-vanilla to v11.1.1 (#7700) (b3ed89f5)
  *  update dependency nodebb-theme-slick to v1.2.24 (#7699) (629b5ce3)
  *  update to eslint@6 (289dada5)
  *  update dependency nodebb-plugin-emoji to v3 (15020b46)
  *  update dependency nodebb-plugin-emoji to v3 (6b43d26f)
  *  update dependency nodebb-theme-persona to v10.1.0 (fc89516e)
  *  update dependency nodebb-theme-vanilla to v11.1.0 (c9689f11)
  *  update dependency nodebb-theme-persona to v10.0.1 (#7687) (ada8f22e)
  *  update dependency nodebb-theme-vanilla to v11.0.1 (#7688) (6db3604e)
  *  update dependency nodebb-theme-vanilla to v11 (89fea9d3)
  *  update dependency nodebb-theme-persona to v10 (0a7778bd)
  *  update dependency nodebb-theme-lavender to v5.0.10 (#7682) (e1e4abeb)
  *  update dependency nodebb-plugin-markdown to v8.10.0 (de046297)
  *  update dependency postcss to v7.0.17 (ae891390)
  *  update dependency nodebb-rewards-essentials to v0.0.14 (#7671) (3f4f8afa)
  *  update dependency mongodb to v3.2.7 (#7665) (988cbb63)
  *  update dependency nodebb-plugin-composer-default to v6.2.15 (e21246a9)
  *  update dependency nodebb-theme-persona to v9.1.38 (#7652) (d202be5b)
  *  update dependency nodebb-theme-vanilla to v10.1.34 (#7653) (e3308659)
  *  update dependency nodebb-theme-vanilla to v10.1.33 (#7651) (6f70397b)
  *  update dependency nodebb-theme-persona to v9.1.37 (#7650) (d43bdb41)
  *  update dependency async to v3.0.1 (#7649) (3b8e6e15)
  *  update dependency mongodb to v3.2.6 (#7616) (3f21096d)
  *  update dependency validator to v11 (a3d42404)
  *  update dependency nodebb-plugin-composer-default to v6.2.14 (#7635) (b174c2d2)
  *  update dependency nodebb-theme-vanilla to v10.1.32 (#7631) (85ca5b19)
  *  update dependency nodebb-plugin-composer-default to v6.2.13 (d1f29e26)
  *  update dependency nodebb-plugin-spam-be-gone to v0.6.3 (#7614) (20fa751c)
*  crash if post doesn't have topic data (eabc6f47)
*  don't touch objects that don't have the required fields (e52ecfaf)
*  add missing await to sendValidationEmail (f4381ba3)
*  #8007 added tfoot to clear new group button (dee1d447)
*  tests (e3c9dafa)
*  #8018, allow absolute urls in notification.path (0037a038)
*  #8010, fix isBanned call (59242d31)
*  #8003, check children recursively (c4e58160)
*  dont show delete topics on unread (b91c4790)
*  #8000, tweak wording; password reset success (3952849f)
*  parseInt cutoff (0e5e47f4)
*  lint (4b8897d9)
*  convert param to string in slugify (441dd86d)
*  cli/reset.js (#7979) (f9f85fc4)
*  #7977, fix undefined url (#7978) (95a372df)
*  passwords always expiring upon login (ddf3812c)
*  #7974 (#7976) (ca3be1f3)
*  delete follower/followingCount as well (d72b0d16)
*  event tests (0da4f7ee)
*  #7958, give rewards one by one (3775301f)
*  rewards page acp not loading rewards (88818a5b)
*  #7929, use fixed bootswatch (dd202931)
*  #7960, dont try to save size for non images (f272daaf)
*  #7941, validate some input fields (565f9726)
*  don't show deleted topics on unread (661a0f50)
*  #7951, don't send notification for system messages (c01b0fbd)
*  #7953, allow icon only group badges (5b458fc7)
*  remove 0 fields (ac4a5004)
*  remove unused data from post/topic/user hashes (75bcb0f4)
*  groups not visible on widget panes (205d3f9d)
*  new nav items will show group select (c5f7b66c)
*  move post and change owner (f402d727)
*  404 on new groups with spaces (b19f0a68)
*  #7940, run upgrade scripts on startup (7823144b)
*  #7949, delete old user notifs (38322ec3)
*  tests (6fb29e84)
*  check threshold before setting bookmark (f983f536)
*  mongo collection stats (4e28e575)
*  #7947, disable unused cookie (91e8e390)
*  #7945, show watched categories in ignored categories (c9bf6d0f)
*  db.init calls (18bf865d)
*  #7938, escape username in registration queue (d5dda26f)
*  #7901, handle group names that are translation keys (3455c27a)
*  fix the order of groups on user profile (41f8da2e)
*  #7935, ACP digest wording (54c9f877)
*  #7934, return tids (10f168b8)
*  tests (3caa387a)
*  tests (9c051386)
*  remove jquery (95ab0712)
*  picture not showing up in change modal (13c87059)
*  profile page meta tags getting escaped twice (7effc892)
*  missing await (2150701f)
*  potential for XSS here (40f131a6)
*  account/categories (7a0f6074)
*  redis tests (1f054c7e)
*  #7921, dont create wrong entries in db for flag (a651d154)
*  #7913, dont allow urls in fullname/location, validate birthday (babb9d7c)
*  upgrade scripts (bd026cb1)
*  only allow png/jpg/bmp in cover/profile images (96ab8d05)
*  #7919, add useUnifiedTopology (910b9b88)
*  crash in feed (873ec519)
*  lang key (795d4183)
*  time cutoff and lang string (5b8550f0)
*  returned data (87f6ac59)
*  dont send all category data back to recent&unread  etc (955e00fd)
*  #7912 (ecf39727)
*  only return necessary data for categories (307abaa8)
*  dont crash if callback is undefined (e0fec866)
*  #7800, dont crash on resize (781b3f1a)
*  change params (de461968)
*  remove dupe code (9b151b23)
*  #7894, translate log in to view (2a5fe2b8)
*  minor typo (b99279a8)
*  #7893, check private upload setting (0843497d)
*  #7892, handle string 'true'/'false' (77cb4b55)
*  dont show deleted topics in digest (4652c68b)
*  #7824, update timeago settings on userlanguage change (3887fc67)
*  don't move theme/plugin to top if its already active (acd95764)
*  #7853, dissociation on post purge (30a86ed5)
*  added comment back (0c4cd840)
*  inability for plugins to actually alter parser sanitization config (fe452762)
*  htmlentity instead of url encoding for room rename system message (9b8ac89e)
*  page count for filters (e291a609)
*  #7866, show correct title based on digest interval (547bb496)
*  #7780 (21e81f96)
*  pinned tids showing on page > 1 (f2912e9f)
*  #7860, allow running single upgrade scripts from plugins (a4dec7e3)
*  reset should not automatically build assets (a67762bc)
*  update morgan and lodash (2b1912a9)
*  #7842, groups.invite works with an array of uids (1e0190ab)
*  #7844, add uid to events, log plugin install/uninstall events (592d9c82)
*  removed console.logs (c44bf48c)
*  broken tests from 71b205a889da1ee8dd326b0891d122a522084f54 (f736f0b3)
*  typo (c6c13725)
*  category description getting translated in ACP (647713f3)
*  #7791 (71620519)
*  #7831, fix pagination (014e3153)
*  remove empty line (292bbe34)
*  remove useless catchs and empty line (5fce4558)
*  #7823, fix topic move readding pids when topic is deleted (fd5f9822)
*  #7826, fix order of categories on recent dropdown (3ecac97d)
*  redis pubsub not being required correctly (8d4f2086)
*  mongo.close using wrong client (186321e6)
*  digest not sending topics (bc6f22eb)
*  #7816, adding GDPR and TOU interstitials earlier on route reloading (52a2e5d6)
*  #7809, dont check postDelay if submitting from queue (9780f5b9)
*  newPostEditDuration (2abe244b)
*  #7789 (6a289fba)
*  #7798, fix nested post selection (666e0eaf)
*  #7788, fix on topic move and new post (8bf40d04)
*  #7788, fix another edge case (053ff510)
*  topicData passed to action:topic.edit (b10ad7b6)
*  derpy catch (ce912886)
*  #7788 No new posts (#7793) (3c32d860)
*  user urls in subfolder install (6a486e35)
*  #7765 (0b498acd)
*  tests (87552c55)
*  revert requires (3dd806dc)
*  #7763, parse about me on all profile pages (f8d34101)
*  status and groupTitle, if its not set (e2e33dfb)
*  don't return promise (2f0a331f)
*  socket.io methods calling callbacks twice if method returns promise (44a33520)
*  tests (87b1148f)
*  tests (930ffd07)
*  #7601 removed check for another user when sending messages (0e8ee31b)
*  mongodb tests (3b24de4c)
*  getTopicsFromSet (13aaf07b)
*  #7762, allow array for isBanned (9eb1fcd4)
*  add flag for change post owner (46639be3)
*  sitemap ajaxify (9f78bd7a)
*  #7751, make necro separator a partial (2b70e86f)
*  #7748, if reputation system is disabled, dont check min reputation (7b95ebbb)
*  remove left over code, use proper names (0ac49d63)
*  compatibility conditional (fba67196)
*  private upload img replacement should happen before img wrapping (16aae517)
*  #7423 private uploads are linked to login page, for guests (49e3a368)
*  typo (f3440ebf)
*  #7722, hsts deprecation warnings (8b1dadb7)
*  upgrade script #7720 (accf48f3)
*  indents (a5de54f8)
*  remove debug code that should not have made it in (af17c6e3)
*  dont display post tools if there are no options (708df46e)
*  output span in buildAvatar helper instead of div (69fae1a7)
*  restore uid in teasers userObj (67b8cb89)
*  dont allow edit if post is deleted by someone else (667bc67f)
*  dont show delete posts on profile (e48c7cd7)
*  on new post add it to cid::uid::pids (6a7bc1c5)
*  #5570, create per category user post zsets (a39f0ef5)
*  restrict drag drop to pin icon, closes #7702 (e1c05e59)
*  remove dupe code (68e5d7ad)
*  get uids directly for csv (39ee3980)
*  typo (a251032f)
*  id/for (b4cc8d88)
*  #7659 add option to change cookie link url (25ea6347)
*  middle vertical-align for .avatar elements (1894cd9b)
*  dependency checker always triggering dep upgrade, hopefully (c241551d)
*  #7483, show latest undeleted message as teaser (644504ff)
*  #7567, allow invite and approval at the same time (4b843ba1)
*  #7625, on group rename update nav/widget items (5b85ed31)
*  psql error (8d319e42)
*  try to fix psql :dog: (2e6b562f)
*  no need for moderate bit for global mods and admins (8aef689f)
*  attribute name so it works for both templates (ebb32e78)
*  #7647, fix getModeratorUids (64679b37)
*  #7644 (5cd9e1bf)
*  bad usage of async requisition (603c5262)
*  7638, returnTo accidentally saved into user hash (f321b426)
*  #7634, make strip exif configurable (157b921e)
*  #7636, use reputation threshold for post queue (a8409fbd)
*  #7623, wait for lastonline to update on /users (63e5d383)
*  https://github.com/barisusakli/nodebb-plugin-dbsearch/issues/53 (e65ddc98)
*  #7593, unable to set account password if no password set (80c0d579)
*  incorrect pathname format for app.previousUrl (a97e97b9)
*  #7598, use notice element instead of alert (106d52a4)
*  #7620, allow adding new fields into user objects for posts (a8e65205)
*  #7629, new filter hook for room rename (7ba4a864)
*  #7628, log email send errors (7a4b68e8)
*  {username} not working in notification.tpl (f55cc667)
*  do not prevent nbb from starting (3b0459a0)
*  #7624, default open state on stateless flags (91f0bce6)
*  #7431, add /unread link to topic route (15391da5)
*  #7619 (35d10f76)
*  #7618 save pathname into app.previousUrl ins. of entire url (7e5cb72a)
*  handle missing timestamps (172e6888)
*  broken test for meta tags on ajaxify (b70e03a7)
*  #7613 (15ce23da)
*  #7600, removing nbsp from email CTAs (#7606) (f552cea5)
*  #7604 shortened CTA text and added custom text for some notifs (#7605) (b32da57f)
* **style:**
  *  requiring parens in block bodies (29f96b19)
  *  updated code to follow new eslint recommendations (09212309)

##### Refactors

*  use arrow function (6b3eb014)
*  async/await (02d38caf)
*  remove log, topics.exists (f8c8038a)
*  async/await (dc8d721c)
*  async/await mongo (1f0c6f3d)
*  async/await socket.io/index (603908c1)
*  async/await image.js (c5ffd8cc)
*  remove var (05e753c7)
*  async/await flags.js (ac6eb31c)
*  async/await flags (0ced71be)
*  shorter map (572bc297)
*  remove logs (03971049)
*  dont modify key (7e7ea7a6)
*  remove logs (e32a5546)
*  async/await flags (9ee1a882)
*  shorter, new Date doesnt throw (625b0815)
*  remove temp var (b842057f)
*  async/await file (f9d6912b)
*  async/await analytics (223c108c)
*  change to const (5505628c)
*  returned fields (86b16629)
*  async/await emailer (63bd3fc5)
*  async/await routes/feeds (ec3b5dd9)
*  async/await rewards (b110aec6)
*   async/await socket.io (a7d2b8a1)
*  async/await (52b2d670)
*  async/await (75d7ae92)
*  async/await socket.io/topics (5c2afe5e)
*  async/await controllers/user.js (3c6c40b1)
*  async/await uploads (5c0266d8)
*  move tos parsing to /tos (3e2ed21d)
*  remove commented out code (ec98945a)
*  async/await controllers/authentication (b9105ef9)
*  remove async from isPasswordValid, function is sync (22f80116)
*  make categories.buildForSelectCategories non async (6cda3698)
*  remove dupe code (a4d84a66)
*  async/await socket.io/posts (e93ef0d7)
*  async/await socket.io/admin (88dfbf21)
*  socket.io/admin/categories async/await (71e50bbf)
*  admin groups.join socket async/await (4588a4fd)
*  password async/await (dd8386d9)
*  sitemap to async/await (0164e51f)
*  remove hook assign (d3727207)
*  async/await users (f9a804e0)
*  remove empty line (19b63bfa)
*  remove vars (69333f59)
*  async/await controllers (2c4f0446)
*  async/await controllers/tags (53624885)
*  async/await (f15c7f12)
*  globalmods/groups (0722cc47)
*  controllers/category.js (bd8736db)
*  use arrow func (27c27b49)
*  async/await controllers/api (4eaa630b)
*  async/await admin/controllers (6f375482)
*  async/await, remove dupe code for homepage routes (c9250a01)
*  async/await for src/socket.io/groups.js (71b205a8)
*  rewrote SocketPosts.getRawPost in await style (08530bb3)
*  replace avatar conditional code with buildAvatar helper (#7681) (25238899)

##### Reverts

*  accidental removal of some needed translation source strings (868dedd1)

#### 1.12.2 (2019-05-15)

##### Chores

*  bump themes #7576 (d349754d)
*  bump themes (59bdc970)
*  bump themes (abcca134)
*  bump themes (551b18cd)
* **deps:**
  *  update dependency lint-staged to v8.1.7 (dc6b49ca)
  *  update commitlint monorepo (9998e86b)
  *  update dependency jsdom to v15.1.0 (fcd6dc88)
  *  update dependency mocha to v6.1.4 (3ff8154b)
  *  update node:8.16.0 docker digest to b5484d1 (6421f10f)
  *  update dependency husky to v2.3.0 (c20e3313)
  *  update dependency nyc to v14.1.1 (#7584) (9047210c)
  *  update dependency eslint to v5.16.0 (692e2ead)
  *  update dependency nyc to v14 (9210baf5)
  *  update dependency husky to v2.2.0 (8a018a5f)
  *  update dependency lint-staged to v8.1.6 (4e39caf8)
  *  update dependency husky to v2.1.0 (65ff0bbd)
  *  update dependency husky to v2 (e81a1dbb)
  *  update dependency eslint-plugin-import to v2.17.2 (#7546) (c1fb17f9)
  *  update dependency jsdom to v15 (#7556) (d4d8d98f)
  *  update dependency jsdom to v14.1.0 (#7555) (ca694fd1)
  *  update node.js to v8.16.0 (#7554) (f10708e7)
  *  update dependency eslint-plugin-import to v2.17.1 (69dd8e4d)
  *  update dependency mocha to v6.1.2 (b7169772)

##### Documentation Changes

*  updated changelog (93b688d0)

##### New Features

*  let theme know downvoting is disabled, closes https://github.com/NodeBB/NodeBB/pull/7568 (bd94fbc2)
*  closes #7583 (cf5aeace)
*  #7319 (9385c8e3)
*  add node12 to travis (1a7036a6)
*  allow file uploading on registration interstitial (ddffc904)
*  #7527 (ba5e1eaa)
*  #7515 (c38db4f7)

##### Bug Fixes

*  #7599 image size measurement erroring out on missing path (0d86781c)
*  #7590 updated chat and post edit and delete timeout labels in ACP (4f0dc443)
*  tests (3a7e99a5)
*  #7586, switchTimeagoLanguage shouldn't discriminate against languages w/o shorthands (1703233f)
*  #7576 "Disable password changes" can be sidestepped (50260e13)
*  if editing password is disabled in ACP, prevent direct access via route/socket  (related: #7576) (e114b16d)
*  #7582 (c9ca72d0)
*  #7461 (96cb29aa)
*  increase batch size (3d938e7b)
*  #7564 (bf6fc502)
*  group cover upload not working for s3 upload (#7571) (8945ebcb)
*  test (b9903120)
*  #7539 (c940a733)
*  #7565 (07e9b67e)
*  #7464 (32cf07d7)
*  #7147 (fe6d64cc)
*  #7424 (f86d74d8)
*  #7562 (09681e6c)
*  node12 tests (8775e7e6)
*  add post queue to /compose POST route (c6cd6c57)
*  remove redis object cache (4df925e7)
*  #7545 (74038849)
*  failing test from 00552d7183f0416a0caa113fe2f1e658659648f7 (9bf3517d)
*  fire filter:register.complete for users approved via registration queue (00552d71)
*  #7540 (8778f00b)
*  more graceful error handling and output for cli/reset (d3ebda73)
*  #6438 only apply whitelist when fields request empty (#7528) (808c4909)
* **deps:**
  *  update dependency nodebb-theme-vanilla to v10.1.31 (#7589) (a9f9d19b)
  *  update dependency nodebb-theme-persona to v9.1.36 (#7588) (bd86e58d)
  *  update dependency mongodb to v3.2.4 (#7581) (26d6d0be)
  *  update dependency postcss to v7.0.16 (10a47a29)
  *  update dependency nodebb-theme-persona to v9.1.33 (#7563) (7c4201f2)
  *  update dependency sharp to v0.22.1 (#7561) (288a25f0)
  *  update dependency nodebb-plugin-composer-default to v6.2.12 (#7538) (a54f8f00)
  *  update dependency mongodb to v3.2.3 (97a7f02f)

#### 1.12.1 (2019-04-10)

##### Chores

*  comment cleanup (6bed51ef)
*  bump persona (1f4db132)
*  bump themes, fix: https://github.com/NodeBB/NodeBB/issues/7446 (0d19bb3d)
* **deps:**
  *  update dependency lint-staged to v8.1.5 (ae17481d)
  *  update node:8.15.1 docker digest to 918f0be (5f787d73)
  *  update node:8.15.1 docker digest to 3d43ad1 (ea77ad4e)
  *  update dependency grunt to v1.0.4 (a9130fad)
  *  update dependency eslint to v5.15.3 (d2932cf6)
  *  update dependency mocha to v6.0.2 (#7408) (1c671c32)
  *  update dependency eslint to v5.15.1 (d8486e88)
  *  update node:8.15.1 docker digest to c151597 (2cb0bdea)
  *  update dependency jsdom to v14 (a967253a)

##### Documentation Changes

*  updating changelog (9aeb291e)

##### New Features

*  #7515 (ac889db1)
*  update unban logic/invocation and refactor User.bans module (3fbb6faf)
*  add original sessionID to static:user.loggedOut (abe4abb6)
*  #7501 (2ee2cd52)
*  allow multiple cids for getActiveUsers (81306fff)
*  manual password expiry. closes #7471 (24dcae21)
*  #7358 (7211dde7)

##### Bug Fixes

*  don't crash if templateData is undefined (eb2c3e56)
*  clear children before building tree (397e062a)
*  upgrade script date (4f3ca4d8)
*  #7519 (ed91d3f2)
*  #7517 (e479fad7)
*  #7470 Properly handle recompilation of email templates (75ae29c1)
*  resolve CORS error on uploading via URL (3871a02c)
*  #7461 (dbc4d840)
*  #7491 (8cc1864a)
*  #7476 (4db0efe3)
*  #7508 (b52dba5c)
*  escape search snippet closes #7506 (e906bea4)
*  #7490 once again (3ec9fc40)
*  #7502 (3304ffe9)
*  #7503 (1f3554ff)
*  #7493, adding robots noindex meta tag to compose and reset routes (6415ba82)
*  #7490, handling of image sizes if no size saved in db (86e1cdd5)
*  #7494 (8f55ab13)
*  #6911, email throttling options set (63e16ec0)
*  throttling email output to 2 messages every second, fixes #6911 (33a1bf6c)
*  #7469 missing email logos, occasionally (8d62ead3)
*  #7487 (fddb783e)
*  #7485 (78e0b983)
*  move upload_url to prestart so it is defined in upgrade scripts (ad2d7a69)
*  #7342 (cead89f0)
*  #7477 (240f563a)
*  #7473 (c289b904)
*  #7378 (c37b2f2e)
*  #7454 (dcdd41c7)
*  #7472 (962b7f73)
*  remove async.series, dont crash if postAtIndex is undefined (dd8d4f20)
*  tests (c12e1d19)
*  #7468 (b4a9bb10)
*  #7444 Re-factor handling of og:image tags (#7463) (697a6597)
*  tests (45d7e37a)
*  callbacks (b48b6d75)
*  return early if keys is empty (7addc5a0)
*  return early if keys is empty (b3962c16)
*  prevent infinite loops if category is already in children (b71e0eb1)
*  #7448 (4732bed3)
*  return early if there are not blocked uids (73d14e45)
*  #7008 (756dfd8a)
*  typo (f9d92db5)
*  tests (e71ae80c)
*  #7406 (cbfbcee5)
*  #7432 (777ca032)
*  change user/system cpu usage (aecdf739)
*  strip exif data on image uploads (5eaa14e7)
* **deps:**
  *  update dependency nodebb-theme-persona to v9.1.29 (e5c12a49)
  *  update dependency nodebb-plugin-composer-default to v6.2.11 (30b042b8)
  *  update dependency nodebb-plugin-composer-default to v6.2.10 (cf180e09)
  *  update dependency html-to-text to v5 (b39ce25c)
  *  update dependency semver to v6 (8662aa95)
  *  update dependency spdx-license-list to v6 (447cf66b)
  *  update dependency nodebb-widget-essentials to v4.0.17 (#7489) (0f9cb86d)
  *  update dependency mongodb to v3.2.2 (#7482) (357f931c)
  *  update dependency nodemailer to v6 (0274c2bd)
  *  update dependency sharp to v0.22.0 (#7466) (c3261415)
  *  update dependency nodebb-theme-slick to v1.2.23 (#7460) (c20cd528)
  *  update dependency nodebb-theme-vanilla to v10.1.25 (fe30e06d)
  *  update dependency nodebb-theme-persona to v9.1.27 (5c605392)
  *  update dependency connect-redis to v3.4.1 (02804fe9)
  *  update dependency nodebb-plugin-composer-default to v6.2.9 (#7442) (80293146)
  *  update dependency nodebb-theme-vanilla to v10.1.23 (#7438) (48dd3c5b)
  *  update dependency nodebb-theme-slick to v1.2.22 (#7437) (3f4ae4b0)
  *  update dependency nodebb-theme-persona to v9.1.25 (#7436) (9887bb4f)
  *  update dependency nodebb-plugin-composer-default to v6.2.8 (#7435) (c18f2e1f)

### 1.12.0 (2019-03-06)

##### Chores

* **deps:**
  *  update node:8.15.1 docker digest to 287b8a5 (0b8d1833)
  *  update node.js to v8.15.1 (ae89db28)
  *  update dependency mocha to v6 (#7387) (30bdb1a1)
  *  update dependency coveralls to v3.0.3 (#7397) (cf74904c)
  *  update dependency eslint to v5.14.1 (4df9c206)
  *  update dependency jsdom to v13.2.0 (cb5e3d83)
  *  update node:8.15.0 docker digest to a8a9d8e (edcb5314)
  *  update dependency nyc to v13.3.0 (a78f5da5)
  *  update dependency lint-staged to v8.1.4 (18c90913)
  *  update dependency eslint to v5.14.0 (9d8d2d0d)
  *  update commitlint monorepo (aed5b29d)
  *  update dependency eslint-plugin-import to v2.16.0 (e0fa6965)
  *  update dependency @commitlint/cli to v7.4.0 (362d9397)
  *  update dependency lint-staged to v8.1.1 (96644350)

##### Documentation Changes

*  updated changelog (aec2f210)

##### New Features

*  admin/groups style change (2b6f1a05)
*  add process cpu usage to admin (db477538)
*  pass options to digest (23da3009)
*  revamp email templates to be more style agnostic (#7375) (f32a9922)
*  lower search timeout (fc830c0f)
*  quick search (8a0e1280)
*  add vote status to getPostData API call (eafe76de)
*  make topic search a function (d2b83967)
*  quick search (c01d43e0)
*  check overide (ba90bf31)
*  check CI failure (f2d7f75e)
*  logging password resets and errors into event log (0c09b740)
*  add `action:alert.new`, `action:alert.update` hooks (daadcc48)
*  allow themes to define custom classes for categories via filter:admin.category.get (5031bfe8)
*  show more unread notifs (d75a0d77)
*  pass topic creation data to action:topic.save (cd2f72fb)
*  textcomplete over jquery-textcomplete, closes #7309 (02a8ed9b)
*  new hook filter:privileges.posts.edit (f659ef4d)
*  new hook type: `response` (a23854e3)

##### Bug Fixes

* **deps:**
  *  update dependency nodebb-theme-persona to v9.1.24 (0f2d3181)
  *  update dependency nodebb-plugin-composer-default to v6.2.7 (#7411) (9ebc900a)
  *  bump markdown (82c8ee3f)
  *  bump markdown (7ce5a81f)
  *  bump persona (a0b71f09)
  *  update dependency nodebb-theme-vanilla to v10.1.21 (#7404) (699eddcb)
  *  update dependency nodebb-theme-persona to v9.1.22 (#7403) (d87751ea)
  *  update dependency nodebb-theme-persona to v9.1.21 (#7401) (f721155d)
  *  update dependency nodebb-theme-slick to v1.2.21 (#7398) (f6e55651)
  *  update dependency nodebb-widget-essentials to v4.0.14 (#7399) (f812e0b7)
  *  update dependency nodebb-theme-persona to v9.1.19 (#7392) (deff7b34)
  *  update dependency nodebb-plugin-composer-default to v6.2.6 (#7389) (fab32a49)
  *  update dependency nodebb-theme-persona to v9.1.18 (042b81a0)
  *  update dependency nodebb-theme-persona to v9.1.17 (#7379) (546e04e1)
  *  update dependency nodebb-plugin-composer-default to v6.2.5 (#7374) (d0874f34)
  *  update dependency async to v2.6.2 (#7365) (264eadde)
  *  update dependency nodebb-plugin-composer-default to v6.2.4 (30ff4582)
  *  update dependency nodebb-theme-persona to v9.1.16 (65df6711)
  *  update dependency nodebb-plugin-markdown to v8.9.0 (07b29d59)
  *  bump contenteditable to v0.1.1, #7325 (fbbe2ab7)
  *  update dependency nodebb-plugin-composer-default to v6.2.3 (#7341) (176efb5f)
  *  update dependency nodebb-theme-persona to v9.1.15 (#7295) (8f69ffd4)
  *  update dependency nodebb-theme-slick to v1.2.20 (#7197) (a82bd3d0)
  *  update dependency nodebb-theme-lavender to v5.0.9 (#7322) (b350be27)
  *  update dependency nodebb-plugin-composer-default to v6.2.2 (99f82fb3)
  *  update dependency winston to v3.2.1 (#7317) (7e872d32)
  *  update dependency nodebb-plugin-markdown to v8.8.8 (#7314) (9cf81afe)
  *  update dependency nodebb-plugin-dbsearch to v3.0.6 (#7305) (d48ef6d8)
  *  update dependency nodebb-plugin-dbsearch to v3.0.5 (#7304) (57e3f162)
  *  update dependency nodebb-theme-vanilla to v10.1.19 (#7301) (443dcee4)
  *  update dependency winston to v3.2.0 (#7299) (6f957cb9)
  *  update dependency nodebb-plugin-spam-be-gone to v0.6.0 (247ac828)
*  #7413 (684175f7)
*  #7414 (e331f6b5)
*  l2spread @baris nib (0360f6e1)
*  restored email logo to all outgoing emails (6c1f9c3c)
*  die hydra!!! (ad6c8dcc)
*  incorrect teaserPost logic (97313508)
*  normalized font sizes for paragraphs in digest (43c4eb23)
*  removed notification subheader translation string (6f272e34)
*  broken 50% border radius on emails, failing tests (d3a10628)
*  hook names getting objectified by winston (6472a065)
*  failing tests from revamped-emails branch (3a7f1c19)
*  #7395 (03305db8)
*  mounting of all-route middlewares to router instead of app (d722f3b8)
*  incorrect returnTo set in registerComplete (f972f752)
*  search.api not working on subfolder (158f68eb)
*  tests for #7385 (7a534453)
*  #7385 better handling for errors in Adv>Databases (57069a5c)
*  no relative path needed in req.session.returnTo (949b10f1)
*  don't refresh page when enabling/disabling categories (d5ece9a4)
*  #7373 (c2e7ae7f)
*  autocomplete not triggered if chat switched (ab0e547d)
*  #7366 (6c2f48f1)
*  #7357 (45c322ae)
*  #7359 (2996a5dc)
*  re-introducing indeterminate checkbox state to ACP privs (e8f3c256)
*  #7354 (c6ad8fae)
*  uid check (efd7d953)
*  uid checks (c24dcf78)
*  only allow numbers as scores (#7356) (5917dec2)
*  #7231, missing success alert on group name change in ACP (0fffcb38)
*  remove debug logs (fe63fca8)
*  don't use same db as prod values (39e35275)
*  database 0 was being replaced with undefined because 0 is falsy (bcd62586)
*  #7352 (2e2c3ac1)
*  #7261, banned users still get digests (aca05560)
*  #7346, panel-header widget colours in ACP (91a7b907)
*  #7350 (8c68780e)
*  eslint failure from daadcc4889a91b9bbd279d49db348610cc079ccc (96b6ce1f)
*  prevent crash if results.stats or results.serverStatus is undefined (fab52b84)
*  move `action:alert.update` to after translator (d864da1a)
*  #7098 (fc6767e1)
*  #7232 (70d9c6c4)
*  #7229 (e59b907d)
*  #7339 (12c58990)
*  #7338 (8e3bf581)
*  dont crash if userData is undefined #7262 (56a493d8)
*  #7240 (a2f08e7d)
*  give default privs on new install to guests/spiders (cd120990)
*  #6806 (c72da559)
*  #7334 (ae779ea4)
*  closes #7217 (9d1fcf4e)
*  merge post notifs (6e69a9ab)
*  don't crash if body doesn't have `skin-` (f6cfbbb5)
*  #7324 (c7abf07a)
*  allow regular groups to local login (0366cfd8)
*  #7316 (5353960a)
*  #7306 (8aebe884)
*  #7312 (7a4a8ea4)
*  #7311, missing dependencies (263e58df)
*  #7300 (920efad0)
*  #6848 (70f8b418)
*  #7298 privilege header misalignment (df6f75eb)
*  #7211 (cf918078)
*  #7215 (7a9780f6)
*  #7296, local login privilege available to registered-users only (7fb3c168)
*  #7094 (d03220cd)

#### 1.11.2 (2019-01-24)

##### Chores

* **deps:**
  *  update node:8.15.0 docker digest to cb66110 (1719cd77)
  *  update dependency eslint-plugin-import to v2.15.0 (f7191eb9)
  *  update dependency eslint to v5.12.1 (d928c54d)
  *  update dependency @commitlint/cli to v7.3.2 (6ae2b972)
  *  update node.js to v8.15.0 (ac39fe90)
  *  update dependency eslint to v5.12.0 (f96ef7bb)
  *  update commitlint monorepo to v7.3.1 (50594118)
  *  update dependency smtp-server to v3.5.0 (00063708)
  *  update dependency husky to v1.3.1 (719995a4)
  *  update dependency eslint to v5.11.0 (#7151) (26f3bdbf)
  *  update dependency husky to v1.3.0 (eb606281)
  *  update dependency jsdom to v13.1.0 (60e9430b)
  *  update dependency eslint to v5.10.0 (#7084) (dae861da)
  *  update dependency husky to v1.2.1 (63f4b569)
  *  update node:8.14.0 docker digest to dd2381f (7449ae3e)
  *  update node.js to v8.14.0 (8a5a031d)
  *  update dependency lint-staged to v8.1.0 (dd7f8a14)
  *  update dependency husky to v1.2.0 (aee21628)
  *  update node:8.12.0 docker digest to 5dae8ea (0ef451dd)
  *  update dependency husky to v1.1.4 (95d6ab06)
  *  update dependency eslint to v5.9.0 (92441794)
  *  pin dependencies (b0483f21)
  *  update dependency eslint-config-airbnb-base to v13 (#6599) (64b9dabf)
  *  update node.js to v8.12.0 (fa3afbd2)
  *  update dependency husky to v1.1.3 (6cee5b8e)
  *  update dependency lint-staged to v8.0.4 (9d258668)
  *  update dependency lint-staged to v8.0.3 (aaa6fe9e)
  *  update dependency lint-staged to v8 (95d7a5fa)
  *  update dependency jsdom to v13 (52f141c9)
* **husky:**  setting up husky as recommended in docs (e8a3d929)

##### Documentation Changes

*  updated changelog for v1.11.1 (c04e192d)

##### New Features

*  new hook filter:user.logout (63061ffd)
*  explicit handling of SSO success and failure (059a4be2)
*  additional options for SSO plugins (2b9322e1)
*  get rid of disk access (ed5d2d6d)
*  support for one-click unsubscribe from email clients (#7203) (70a87d43)
*  added new hook `static:sockets.validateSession` (#7189) (0263b4da)
*  #7120 (f4ea2c43)
*  #7032 (0c1ac4d6)
*  small fixes (fef7e13c)
*  name topic controller (b9b9d8b2)
*  header (0cb9bba4)
*  more naming (ae0fe5e8)
*  give the rest of the middlewares names (f88db22c)
*  give names to more middlewares (fdfbcc6e)
*  give names to middlewares (53793e16)
*  change sortedSetsScore (d2c2d56f)
*  Allow getting logfile path from config (#7044) (f3e8e065)
*  remove uid:<uid>:ignored:cids (#7099) (263c9180)
*  cache category tag whitelist (78fa7340)
*  make user cards look less derpy (31bb2ae9)
*  added new middleware authenticateOrGuest (4fba1492)
*  closes #7070 (7ca62b83)
*  added README.md in languages folder (648964fa)
*  up composer (7eee8e1d)
*  allow array results (54c127d1)
*  #7023 (f581c052)
*  close #7002, console message if mismatched origins (89c025d1)
*  added changelog file to root of repo (e89b4fca)
*  enabling commitlint (c58a41ed)
*  allow disabling of GDPR features via ACP toggle, closes #6847 (4919e9ef)
* **deps:**  update bootstrap to v3.4.0 (#7106) (d1ea5d15)
* **email:**  don't escape html in notification bodies. (#7042) (d7c55bc3)

##### Bug Fixes

*  test (bc41848a)
*  #7235 (7064fd06)
*  use ACP config value for checking online status (ef0e7808)
*  log error to prevent headers already sent (a22a3a98)
*  #7289 timeago shorthand toggle fails on non-existant language (cee47f78)
*  #7276 improper request for client-noskin.css (5ee173c2)
*  #7274 incorrect handling of client script 404s (831d0795)
*  #7270 Flags graph label not translatable (8ceb35f5)
*  #7266 body does not contain skin class (f122fc44)
*  generate timeago codes from files (7524d3c3)
*  removal of timeago fallback middleware (#7259) (c831ff0d)
*  post queue notifs (ac655564)
*  added missing translation and error state for password change (51b5fb98)
*  #7236, header search stops working after header update (3859d417)
*  #7226, added placeholder styling for fa-nbb-none (87c2d108)
*  escape hook method (9328eeca)
*  #7216, hide taskbar on chat modal invocation on mobile (a70db885)
*  #7208 (428f587c)
*  #7054 (a662f118)
*  #7209 (b9833483)
*  missing notification (1a3838e1)
*  #7193, closes #7194 (7809ba28)
*  #https://github.com/barisusakli/nodebb-plugin-dbsearch/issues/49 (6f1fb4eb)
*  #7187 (28459d04)
*  #7176, FUOC on app.reskin() (954af0f0)
*  #7174 (9aa1aa68)
*  #7181 (0d409610)
*  #7142 (8da3b2a4)
*  #7179 (03299736)
*  #7169 Fixed logout being broken (b0eaa858)
*  #7167, composer and chat not closing on logout (629b3554)
*  shorter function (43e7cc0a)
*  #7162 (2da0a657)
*  uid filtering (72afc180)
*  dont crash if default cover is invalid (41fb5cca)
*  #7136 socket.disconnect() now called on invalid session (8e9de540)
*  RTL not respected when changed in user settings, related to #7146 (4873a339)
*  #7146 Better RTL handling on (de-)authentication (d81e0a5f)
*  #7118, invoking autoLocale middleware on logout (900f0a0b)
*  closes #6784 (#7137) (7fb29f42)
*  7100 (ab81cca7)
*  #7139 (3917022a)
*  #7116 (7e828404)
*  #7138 (29a85aec)
*  lint (b47f939b)
*  #7091, #7093 (69e0dbbf)
*  #7131 (d31684e8)
*  remove cache (b2a74b41)
*  loop (60390c01)
*  #7124 (4650a760)
*  unread badge (9f506268)
*  move the check to get methods (99e0895e)
*  #7115 (989879a6)
*  #6979 (29b63ae7)
*  upgrade script key (0eef3e1c)
*  remove log (00afc5b3)
*  #7108 (81697390)
*  dont save data for non-positive uids (62f01a83)
*  #7103 (f103390a)
*  dont update cid:<cid>:tids:votes if topic is pinned (2f57a4b9)
*  #7102 (d117df77)
*  #7102 (85a07e99)
*  don't explode if there is no css el (74d0e88d)
*  db info page (26ccd8f6)
*  logAttempt conditional (a6c8e0ab)
*  #7087, server-side protection against guest blocks (33d4956b)
*  don't crash in flags.validate if user blocked target (81aa3a0b)
*  dont send empty strings (555c092f)
*  #7085 (fe0f95a2)
*  #7086 (e55fb437)
*  wrong variable #7085 (71163421)
*  admins&mods when there are mutliple lines of users (de437e36)
*  refreshing settings page on save if language changed (ed46c5e2)
*  not calling authenticate middleware on resource direct access routes (eeaee8cc)
*  #7038, autoLocale logic not playing nicely with no-refresh auths (#7059) (5f3d1c76)
*  #7074 (2604cf63)
*  #7071 buildSkinAsset won't rebuild continuously (a07d9898)
*  #7063, logout code should do hard page nav to / or data.next (6df5668e)
*  #7061 (eab297bd)
*  skin not changing after login or logout, #7038 (28a1fa78)
*  #7040 (a63ddbe2)
*  #7041 (ec0c50d4)
*  #7043 (8d7c3897)
*  add missing render function (cb7c2d8c)
*  #7033 (8808a033)
*  #7037 (b86f1556)
*  #6991, add timeout for version Github request (43c3bb02)
*  #7030 (58d4376f)
*  added admin/manage/uploads to tx config (7357926f)
*  #7013, add cache buster to js-enabled.css (f6b92c1d)
*  removal of scroll anchoring code in favour of browser handling (98c14e0e)
*  custom navigation item not showing groups (d9452bf3)
*  flags detail page crash if reporter blocks author (d027207f)
*  #6922, skin assets not including plugin LESS files (a5022ce4)
*  #6921, allow square brackets in usernames (da10ca08)
*  interstitial redirects failing if done via ajaxify (3c8939a8)
*  username trim on login, closes #6894 (157bea69)
* **deps:**
  *  update dependency nodebb-widget-essentials to v4.0.13 (#7293) (22cbcc3e)
  *  update dependency mongodb to v3.1.13 (1aadbc3c)
  *  update dependency postcss to v7.0.14 (4d64de76)
  *  #7271, updating autoprefixer to latest version (a7af0198)
  *  #7270 (b48f1b4d)
  *  update dependency sharp to v0.21.3 (#7267) (8a64667f)
  *  theme upgrades for #7266 (5607261c)
  *  update dependency mongodb to v3.1.12 (eeab7d20)
  *  update dependency mongodb to v3.1.11 (#7252) (b5f188b6)
  *  update dependency validator to v10.11.0 (77dc8fc7)
  *  update dependency nodebb-plugin-composer-default to v6.1.21 (2fbb2614)
  *  update dependency postcss to v7.0.12 (f1842295)
  *  update dependency postcss to v7.0.11 (57bec2fb)
  *  update dependency sharp to v0.21.2 (8f3c4b09)
  *  update dependency postcss to v7.0.10 (82475fe5)
  *  update dependency postcss to v7.0.9 (f171c169)
  *  update dependency nodebb-theme-vanilla to v10.1.15 (ea059e89)
  *  update dependency nodebb-theme-persona to v9.1.10 (96482569)
  *  update dependency nodebb-theme-persona to v9.1.9 (bbe05043)
  *  update dependency nodebb-theme-vanilla to v10.1.14 (6cc5dbc8)
  *  update dependency nodebb-theme-persona to v9.1.8 (e5443690)
  *  update dependency pg-cursor to v2 (29acad42)
  *  update dependency diff to v4 (#7198) (84e228bb)
  *  update dependency nodebb-plugin-mentions to v2.5.2 (#7199) (0a647316)
  *  update dependency nodebb-plugin-markdown to v8.8.7 (90b4d40e)
  *  update dependency rimraf to v2.6.3 (f4cc3122)
  *  update dependency spider-detector to v1.0.19 (#7177) (0faba325)
  *  update dependency nodemailer to v5 (4993b03c)
  *  update dependency json-2-csv to v3 (80cee665)
  *  update dependency nodebb-plugin-composer-default to v6.1.20 (07bf0b98)
  *  update dependency nodebb-theme-persona to v9.1.7 (#7161) (c68d4ae8)
  *  update dependency nodebb-plugin-composer-default to v6.1.19 (#7159) (07af46ea)
  *  update dependency nodebb-plugin-composer-default to v6.1.18 (#7158) (584b45fc)
  *  update dependency validator to v10.10.0 (#7152) (8003bed8)
  *  update dependency nodebb-plugin-mentions to v2.5.0 (792dce14)
  *  update dependency nodebb-theme-persona to v9.1.6 (#7141) (325b0293)
  *  update dependency nodebb-plugin-dbsearch to v3.0.4 (ddd07c1a)
  *  update dependency nodebb-widget-essentials to v4.0.12 (#7133) (f614a44d)
  *  update dependency nodebb-plugin-mentions to v2.4.0 (9ab31d7e)
  *  update dependency postcss to v7.0.7 (7ef8c3fd)
  *  update dependency sharp to v0.21.1 (#7082) (bf75f3e3)
  *  update dependency nodebb-theme-vanilla to v10.1.13 (#7114) (fc5598b9)
  *  update dependency nodebb-theme-slick to v1.2.19 (#7113) (56ad43aa)
  *  update dependency nodebb-theme-persona to v9.1.5 (#7112) (953f8fe5)
  *  update dependency nodebb-plugin-composer-default to v6.1.17 (3bcfd7fc)
  *  update dependency nodebb-theme-persona to v9.1.4 (b6ad5fd4)
  *  update dependency nodebb-plugin-markdown to v8.8.6 (#7079) (46fb365d)
  *  update dependency nodebb-theme-persona to v9.1.3 (#7075) (d2aea57a)
  *  update dependency nodebb-theme-persona to v9.1.2 (42e792ab)
  *  update dependency nodebb-theme-persona to v9.1.1 (#7069) (bdb33056)
  *  update dependency postcss to v7.0.6 (6b5428c5)
  *  update dependency nodebb-plugin-composer-default to v6.1.14 (#7058) (e48ed6e0)
  *  update dependency nodebb-plugin-composer-default to v6.1.13 (#7057) (ada1d6d0)
  *  update dependency nodebb-plugin-composer-default to v6.1.12 (#7056) (9f9f72da)
  *  update dependency nodebb-plugin-composer-default to v6.1.11 (#7055) (89acb896)
  *  update dependency nodebb-theme-slick to v1.2.18 (#7049) (b6cb77c1)
  *  update dependency nodebb-theme-slick to v1.2.17 (#7048) (7334c45b)
  *  update dependency nodebb-theme-slick to v1.2.16 (#7047) (1cb1af0c)
  *  update dependency connect-mongo to v2.0.3 (#7046) (d0d0c7f0)
  *  update dependency nodebb-plugin-dbsearch to v3.0.3 (#7035) (adb1b5f3)
  *  update dependency lru-cache to v4.1.5 (#7031) (887582eb)
  *  update dependency socket.io to v2.2.0 (b9d49867)
  *  update dependency socket.io-client to v2.2.0 (824bd541)
  *  update dependency nodebb-plugin-dbsearch to v3.0.2 (#7028) (11f1b409)
  *  update dependency nodebb-plugin-dbsearch to v3.0.1 (#7027) (e71f443c)
  *  update dependency nodebb-theme-vanilla to v10.1.12 (cf928f44)
  *  update dependency nodebb-theme-persona to v9.1.0 (179be9ed)
  *  update dependency nodebb-theme-persona to v9.0.63 (#7019) (68ae3eb6)
  *  update dependency nodebb-plugin-markdown to v8.8.5 (d3ab7d1b)
  *  update dependency nodebb-theme-persona to v9.0.60 (#6984) (cbd50a80)
  *  update dependency nodebb-theme-vanilla to v10.1.10 (#6982) (4c769487)
  *  update dependency nodebb-theme-slick to v1.2.15 (#6981) (acaf1a05)
  *  update dependency nodebb-theme-persona to v9.0.59 (#6980) (5863bb2c)
  *  update dependency lru-cache to v4.1.4 (#6977) (375ab769)
  *  update dependency connect-mongo to v2.0.2 (#6975) (e1597b83)
  *  update dependency nodebb-plugin-markdown to v8.8.4 (84d1013d)
  *  update dependency nodebb-plugin-composer-default to v6.1.8 (fee7e336)
  *  update dependency nodebb-plugin-markdown to v8.8.3 (b182a195)
  *  update dependency nodebb-plugin-composer-default to v6.1.7 (#6966) (1101f327)
  *  update dependency nodebb-theme-persona to v9.0.58 (#6964) (6ade156b)
  *  update dependency mongodb to v3.1.10 (#6962) (662215fa)
  *  update dependency nodebb-theme-persona to v9.0.57 (#6956) (1bf1a439)
  *  update dependency nodebb-theme-persona to v9.0.55 (#6955) (e06683f7)
  *  update dependency nodebb-plugin-composer-default to v6.1.6 (c51ceaf0)
  *  update dependency nodebb-theme-persona to v9.0.54 (bb940b01)
  *  update dependency nodebb-plugin-mentions to v2.2.12 (#6936) (e12a803b)
  *  update dependency nodebb-theme-vanilla to v10.1.9 (#6935) (b480c321)
  *  update dependency nodebb-theme-slick to v1.2.14 (#6934) (9cdd5316)
  *  update dependency nodebb-theme-persona to v9.0.53 (#6933) (9ee1c2f8)
  *  update dependency nodebb-plugin-dbsearch to v2.0.23 (#6931) (dba1db9c)
  *  update dependency jsesc to v2.5.2 (511b4edc)
  *  update dependency validator to v10.9.0 (032caafa)
  *  update dependency spdx-license-list to v5 (a639b6b8)
  *  update dependency nodebb-theme-vanilla to v10.1.8 (eb0a322d)
  *  update dependency nodebb-theme-persona to v9.0.52 (6566a0cb)
  *  update dependency nodebb-plugin-dbsearch to v2.0.22 (#6916) (7808e58c)
  *  update dependency mongodb to v3.1.9 (#6914) (9a9f2af9)
  *  update dependency nodebb-theme-persona to v9.0.51 (e2274fe0)
  *  update dependency nodebb-theme-slick to v1.2.13 (3005428d)
  *  update dependency nodebb-theme-persona to v9.0.50 (#6902) (22140a20)
  *  update dependency nodebb-plugin-markdown to v8.8.2 (0b4c9a80)
  *  update dependency nodebb-theme-vanilla to v10.1.7 (3150a2fc)
  *  update dependency nodebb-theme-slick to v1.2.12 (#6881) (9bcda7f7)
  *  update dependency nodebb-theme-persona to v9.0.49 (#6880) (e0dc00da)
  *  update dependency nodebb-theme-persona to v9.0.48 (2b6f5eec)
* **i18n:**  pushed notifications source to tx, pulled fallbacks (8dd8370b)
* **uploads:**  ugly filenames on uploaded asset downloading (f96208a0)
* **acp:**
  *  small UI fixes for ACP privileges category selector (#6946) (57b39d5b)
  *  hard-to-discover dropdown selector in ACP (b3f96d28)
* **l10n:**  some translations (34cbd1fc)

##### Other Changes

* //github.com/NodeBB/nodebb-theme-persona/issues/363 (702be3f6)
* //github.com/NodeBB/NodeBB/issues/6433 (7e00d6b9)
*  #6408 (f0f30041)
*  #6425 (fbf52407)
* //github.com/NodeBB/NodeBB/issues/6073 (5da24b41)
*  #5862, setting chat list height even if no message list is present (bc9a1250)
* //github.com/Schamper/nodebb-plugin-poll/issues/86 (c0f39032)

##### Refactors

*  use loash when possible (#7230) (e1ca2d81)

##### Code Style Changes

*  lint fix (fbe6ccd7)
* **eslint:**
  *  match operator-linebreak preferences (ba619c7e)
  *  newlines in public/src as well (f7bd398e)
  *  enforcing newline on chained calls (95cc27f1)

#### 1.11.1 (2018-12-14)

##### Chores

* **deps:**
  *  update dependency husky to v1.2.1 (63f4b569)
  *  update node:8.14.0 docker digest to dd2381f (7449ae3e)
  *  update node.js to v8.14.0 (8a5a031d)

##### New Features

*  Allow getting logfile path from config (#7044) (f3e8e065)
*  remove uid:<uid>:ignored:cids (#7099) (263c9180)
*  cache category tag whitelist (78fa7340)
*  make user cards look less derpy (31bb2ae9)
*  added new middleware authenticateOrGuest (4fba1492)
*  closes #7070 (7ca62b83)
*  added README.md in languages folder (648964fa)
*  up composer (7eee8e1d)
*  allow array results (54c127d1)
*  #7023 (f581c052)
*  close #7002, console message if mismatched origins (89c025d1)
*  added changelog file to root of repo (e89b4fca)
* **email:**  don't escape html in notification bodies. (#7042) (d7c55bc3)

##### Bug Fixes

*  #7108 (81697390)
*  dont save data for non-positive uids (62f01a83)
*  #7103 (f103390a)
*  dont update cid:<cid>:tids:votes if topic is pinned (2f57a4b9)
*  #7102 (d117df77)
*  #7102 (85a07e99)
*  don't explode if there is no css el (74d0e88d)
*  db info page (26ccd8f6)
*  logAttempt conditional (a6c8e0ab)
*  #7087, server-side protection against guest blocks (33d4956b)
*  don't crash in flags.validate if user blocked target (81aa3a0b)
*  dont send empty strings (555c092f)
*  #7085 (fe0f95a2)
*  #7086 (e55fb437)
*  wrong variable #7085 (71163421)
*  admins&mods when there are mutliple lines of users (de437e36)
*  refreshing settings page on save if language changed (ed46c5e2)
*  not calling authenticate middleware on resource direct access routes (eeaee8cc)
*  #7038, autoLocale logic not playing nicely with no-refresh auths (#7059) (5f3d1c76)
*  #7074 (2604cf63)
*  #7071 buildSkinAsset won't rebuild continuously (a07d9898)
*  #7063, logout code should do hard page nav to / or data.next (6df5668e)
*  #7061 (eab297bd)
*  skin not changing after login or logout, #7038 (28a1fa78)
*  #7040 (a63ddbe2)
*  #7041 (ec0c50d4)
*  #7043 (8d7c3897)
*  add missing render function (cb7c2d8c)
*  #7033 (8808a033)
*  #7037 (b86f1556)
*  #6991, add timeout for version Github request (43c3bb02)
*  #7030 (58d4376f)
* **deps:**
  *  update dependency nodebb-plugin-composer-default to v6.1.17 (3bcfd7fc)
  *  update dependency nodebb-theme-persona to v9.1.4 (b6ad5fd4)
  *  update dependency nodebb-plugin-markdown to v8.8.6 (#7079) (46fb365d)
  *  update dependency nodebb-theme-persona to v9.1.3 (#7075) (d2aea57a)
  *  update dependency nodebb-theme-persona to v9.1.2 (42e792ab)
  *  update dependency nodebb-theme-persona to v9.1.1 (#7069) (bdb33056)
  *  update dependency postcss to v7.0.6 (6b5428c5)
  *  update dependency nodebb-plugin-composer-default to v6.1.14 (#7058) (e48ed6e0)
  *  update dependency nodebb-plugin-composer-default to v6.1.13 (#7057) (ada1d6d0)
  *  update dependency nodebb-plugin-composer-default to v6.1.12 (#7056) (9f9f72da)
  *  update dependency nodebb-plugin-composer-default to v6.1.11 (#7055) (89acb896)
  *  update dependency nodebb-theme-slick to v1.2.18 (#7049) (b6cb77c1)
  *  update dependency nodebb-theme-slick to v1.2.17 (#7048) (7334c45b)
  *  update dependency nodebb-theme-slick to v1.2.16 (#7047) (1cb1af0c)
  *  update dependency connect-mongo to v2.0.3 (#7046) (d0d0c7f0)
  *  update dependency nodebb-plugin-dbsearch to v3.0.3 (#7035) (adb1b5f3)
  *  update dependency lru-cache to v4.1.5 (#7031) (887582eb)
  *  update dependency socket.io to v2.2.0 (b9d49867)
  *  update dependency socket.io-client to v2.2.0 (824bd541)
  *  update dependency nodebb-plugin-dbsearch to v3.0.2 (#7028) (11f1b409)
  *  update dependency nodebb-plugin-dbsearch to v3.0.1 (#7027) (e71f443c)
* **i18n:**  pushed notifications source to tx, pulled fallbacks (8dd8370b)

##### Code Style Changes

* **eslint:**  match operator-linebreak preferences (ba619c7e)

### 1.11.0 (2018-11-28)

##### Chores

* **deps:**
  *  update dependency lint-staged to v8.1.0 (dd7f8a14)
  *  update dependency husky to v1.2.0 (aee21628)
  *  update node:8.12.0 docker digest to 5dae8ea (0ef451dd)
  *  update dependency husky to v1.1.4 (95d6ab06)
  *  update dependency eslint to v5.9.0 (92441794)
  *  pin dependencies (b0483f21)
  *  update dependency eslint-config-airbnb-base to v13 (#6599) (64b9dabf)
  *  update node.js to v8.12.0 (fa3afbd2)
  *  update dependency husky to v1.1.3 (6cee5b8e)
  *  update dependency lint-staged to v8.0.4 (9d258668)
  *  update dependency lint-staged to v8.0.3 (aaa6fe9e)
  *  update dependency lint-staged to v8 (95d7a5fa)
  *  update dependency jsdom to v13 (52f141c9)
* **husky:**  setting up husky as recommended in docs (e8a3d929)

##### New Features

*  enabling commitlint (c58a41ed)
*  allow disabling of GDPR features via ACP toggle, closes #6847 (4919e9ef)

##### Bug Fixes

* **deps:**
  *  update dependency nodebb-theme-vanilla to v10.1.12 (cf928f44)
  *  update dependency nodebb-theme-persona to v9.1.0 (179be9ed)
  *  update dependency nodebb-theme-persona to v9.0.63 (#7019) (68ae3eb6)
  *  update dependency nodebb-plugin-markdown to v8.8.5 (d3ab7d1b)
  *  update dependency nodebb-theme-persona to v9.0.60 (#6984) (cbd50a80)
  *  update dependency nodebb-theme-vanilla to v10.1.10 (#6982) (4c769487)
  *  update dependency nodebb-theme-slick to v1.2.15 (#6981) (acaf1a05)
  *  update dependency nodebb-theme-persona to v9.0.59 (#6980) (5863bb2c)
  *  update dependency lru-cache to v4.1.4 (#6977) (375ab769)
  *  update dependency connect-mongo to v2.0.2 (#6975) (e1597b83)
  *  update dependency nodebb-plugin-markdown to v8.8.4 (84d1013d)
  *  update dependency nodebb-plugin-composer-default to v6.1.8 (fee7e336)
  *  update dependency nodebb-plugin-markdown to v8.8.3 (b182a195)
  *  update dependency nodebb-plugin-composer-default to v6.1.7 (#6966) (1101f327)
  *  update dependency nodebb-theme-persona to v9.0.58 (#6964) (6ade156b)
  *  update dependency mongodb to v3.1.10 (#6962) (662215fa)
  *  update dependency nodebb-theme-persona to v9.0.57 (#6956) (1bf1a439)
  *  update dependency nodebb-theme-persona to v9.0.55 (#6955) (e06683f7)
  *  update dependency nodebb-plugin-composer-default to v6.1.6 (c51ceaf0)
  *  update dependency nodebb-theme-persona to v9.0.54 (bb940b01)
  *  update dependency nodebb-plugin-mentions to v2.2.12 (#6936) (e12a803b)
  *  update dependency nodebb-theme-vanilla to v10.1.9 (#6935) (b480c321)
  *  update dependency nodebb-theme-slick to v1.2.14 (#6934) (9cdd5316)
  *  update dependency nodebb-theme-persona to v9.0.53 (#6933) (9ee1c2f8)
  *  update dependency nodebb-plugin-dbsearch to v2.0.23 (#6931) (dba1db9c)
  *  update dependency jsesc to v2.5.2 (511b4edc)
  *  update dependency validator to v10.9.0 (032caafa)
  *  update dependency spdx-license-list to v5 (a639b6b8)
  *  update dependency nodebb-theme-vanilla to v10.1.8 (eb0a322d)
  *  update dependency nodebb-theme-persona to v9.0.52 (6566a0cb)
  *  update dependency nodebb-plugin-dbsearch to v2.0.22 (#6916) (7808e58c)
  *  update dependency mongodb to v3.1.9 (#6914) (9a9f2af9)
  *  update dependency nodebb-theme-persona to v9.0.51 (e2274fe0)
  *  update dependency nodebb-theme-slick to v1.2.13 (3005428d)
  *  update dependency nodebb-theme-persona to v9.0.50 (#6902) (22140a20)
  *  update dependency nodebb-plugin-markdown to v8.8.2 (0b4c9a80)
  *  update dependency nodebb-theme-vanilla to v10.1.7 (3150a2fc)
  *  update dependency nodebb-theme-slick to v1.2.12 (#6881) (9bcda7f7)
  *  update dependency nodebb-theme-persona to v9.0.49 (#6880) (e0dc00da)
  *  update dependency nodebb-theme-persona to v9.0.48 (2b6f5eec)
*  added admin/manage/uploads to tx config (7357926f)
*  #7013, add cache buster to js-enabled.css (f6b92c1d)
*  removal of scroll anchoring code in favour of browser handling (98c14e0e)
*  custom navigation item not showing groups (d9452bf3)
*  flags detail page crash if reporter blocks author (d027207f)
*  #6922, skin assets not including plugin LESS files (a5022ce4)
*  #6921, allow square brackets in usernames (da10ca08)
*  interstitial redirects failing if done via ajaxify (3c8939a8)
*  username trim on login, closes #6894 (157bea69)
* **uploads:**  ugly filenames on uploaded asset downloading (f96208a0)
* **acp:**
  *  small UI fixes for ACP privileges category selector (#6946) (57b39d5b)
  *  hard-to-discover dropdown selector in ACP (b3f96d28)
* **l10n:**  some translations (34cbd1fc)

##### Code Style Changes

* **eslint:**
  *  newlines in public/src as well (f7bd398e)
  *  enforcing newline on chained calls (95cc27f1)

