All Versions
109
Latest Version
Avg Release Cycle
16 days
Latest Release
25 days ago

Changelog History
Page 1

  • v1.18.3 Changes

    September 22, 2021
    Chores
    • deps: update docker/build-push-action action to v2.7.0 (ee027719)
    • incrementing version number - v1.18.2 (0a56158b)
    • ⚑️ update changelog for v1.18.2 (27e9282a)
    πŸ†• New Features
    • 🚚 move filter:topic.post hook to top of method (f194809f)
    • 0️⃣ 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 [email protected] @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 Changes

    September 08, 2021
    Chores
    • deps: update commitlint monorepo to v13 (87ba768f)
    • incrementing version number - v1.18.1 (f8f80e4f)
    • ⚑️ 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 Changes

    September 03, 2021
    Chores
    • found some hooks that don't play well docgen (ae793b4a)
    • incrementing version number - v1.18.0 (1e436ae7)
    • ⚑️ 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 Changes

    August 25, 2021
    πŸ’₯ 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)
    • 0️⃣ up markdown/composer-default, fixes: #9708 (b74eefac)
    • incrementing version number - v1.17.2 (46be2046)
    • ⚑️ update changelog for v1.17.2 (5c9c0605)
    πŸ“š Documentation Changes
    • πŸ—„ some hook deprecation notices (6bc090f8)
    πŸ†• New Features
    • add confirmation modal to topic event deletion (e803737a)
    • 0️⃣ 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 Changes

    July 07, 2021
    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)
    • incrementing version number - v1.17.1 (0aad1312)
    • ⚑️ 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)
    • 0️⃣ 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 Changes

    May 26, 2021
    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)
    • incrementing version number - v1.17.0 (75f7972b)
    • ⚑️ 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 Changes

    April 22, 2021
    πŸ’₯ 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)
    • incrementing version number - v1.17.0-beta.5 (42c4f963)
    • fix indent (6406e527)
    • benchpress 2.4.1 (3403635c)
    • 🚚 remove log (a1ee1a2a)
    • incrementing version number - v1.17.0-beta.4 (91992240)
    • 0️⃣ bump composer-default (289bfc0b)
    • up themes (d14ba1f4)
    • 🚚 remove node 10 (8d3ec234)
    • 0️⃣ bump composer-default to 6.5.20 (33fbfdfe)
    • incrementing version number - v1.17.0-beta.3 (6e8b1bb9)
    • add multiparty dep (ef3ec96a)
    • incrementing version number - v1.17.0-beta.2 (0c1945dc)
    • incrementing version number - v1.17.0-beta.1 (31872aac)
    • bump composer (30954789)
    • bump deps (#9335) (b9fd2c87)
    • incrementing version number - v1.17.0-beta.0 (b61257ef)
    • incrementing version number - v1.16.3-beta.0 (477157cc)
    • 🌲 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)
    • incrementing version number - v1.16.2 (ea7f8381)
    • ⚑️ 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)
    • 0️⃣ 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)
    • 0️⃣ #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 [email protected] (#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 Changes

    January 21, 2021
    πŸ’₯ 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)
    • incrementing version number - v1.16.2-beta.0 (43ff8e41)
    • incrementing version number - v1.16.1 (e3cd7a23)
    • ⚑️ 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//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 Changes

    January 06, 2021
    Chores
    • βœ… increase test timeout (0d7dfeeb)
    • incrementing version number - v1.16.1-beta.0 (5fcf3ea6)
    • πŸ—„ add deprecation notice to topic thumb tpl value (05d8b3c3)
    • minor reordering of lines (8e5a413e)
    • incrementing version number - v1.16.0 (6d01fd50)
    • ⚑️ 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 Changes

    December 17, 2020
    πŸ’₯ 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)
    • incrementing version number - v1.15.5 (57cd1343)
    • ⚑️ 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)
    • 0️⃣ 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)