From a39fa9fc53ac413f7bc21b3ebebfb984f704896a Mon Sep 17 00:00:00 2001 From: Misty Release Bot Date: Fri, 27 Feb 2026 19:20:50 +0000 Subject: [PATCH] chore: update changelog for v4.9.0 --- CHANGELOG.md | 411 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 411 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 13fce6fb89..1dec06f21f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,414 @@ +#### v4.9.0 (2026-02-27) + +##### Chores + +* up peace (cf0f2923) +* up peace (0b3dd38b) +* up peace (e4b15e05) +* up peace (64a3c822) +* up tdbsearch (50f5541e) +* up harmony (44f663b1) +* up harmony (fd2c9927) +* up harmony (066470b1) +* up harmony (bfa8d5aa) +* up harmony (df3de36c) +* up harmony (c1581a12) +* up mentions (537d3676) +* up harmony (41ef71fa) +* up themes (38680c3e) +* up harmony (6da00614) +* up persona (033f9198) +* up themes (84ec8ef9) +* up harmony (f818dd96) +* up themes (bac67399) +* up harmony (dd84a303) +* up composer (41bc49f7) +* up themes, add hide to alert (824a9b77) +* update harmony (b061d078) +* up composer (d0cc1c95) +* white space (3dfd9a43) +* up themes (97917103) +* up composer (1543650a) +* up themes (47217803) +* up composer (8423da04) +* up themes (a84464cf) +* up themes (bafd5db0) +* up mentions (bc1fd892) +* up mentions (0fd8200a) +* up mentions (9cd87fca) +* up mentions/composer (06f4f700) +* up link-preview (4aac6562) +* forcibly resetting all translations for custom-reason.json (c2695d89) +* up harmony (d6b7f27c) +* new fallbacks (1d17352f) +* up harmony (72510734) +* up harmony (2a5ab6dd) +* up harmony (7d4a440a) +* up markdown (86c62708) +* up composer (3de603f6) +* up deps (b3807656) +* up deps (a241c624) +* up composer (f06557b7) +* harmony (118ceb72) +* up harmony (f2795753) +* up harmony (5c3f2651) +* up composer & harmony (931ae67d) +* up harmony (e6737941) +* up harmony (8d6b6f6a) +* incrementing version number - v4.8.1 (713ae0c0) +* update changelog for v4.8.1 (f53aab43) +* incrementing version number - v4.8.0 (3fac737a) +* incrementing version number - v4.7.2 (cd419d8a) +* incrementing version number - v4.7.1 (afb88805) +* incrementing version number - v4.7.0 (e82d40f8) +* incrementing version number - v4.6.3 (9fc5b0f3) +* incrementing version number - v4.6.2 (f98747db) +* incrementing version number - v4.6.1 (f47aa678) +* incrementing version number - v4.6.0 (ee395bc5) +* incrementing version number - v4.5.2 (ad2da639) +* incrementing version number - v4.5.1 (69f4b61f) +* incrementing version number - v4.5.0 (f05c5d06) +* incrementing version number - v4.4.6 (074043ad) +* incrementing version number - v4.4.5 (6f106923) +* incrementing version number - v4.4.4 (d323af44) +* incrementing version number - v4.4.3 (d354c2eb) +* incrementing version number - v4.4.2 (55c510ae) +* incrementing version number - v4.4.1 (5ae79b4e) +* incrementing version number - v4.4.0 (0a75eee3) +* incrementing version number - v4.3.2 (b92b5d80) +* incrementing version number - v4.3.1 (308e6b9f) +* 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) +* **i18n:** + * fallback strings for new resources: nodebb.admin-manage-categories (a797090f) + * fallback strings for new resources: nodebb.notifications, nodebb.admin-menu, nodebb.admin-settings-activitypub (bde5e0b4) + * fallback strings for new resources: nodebb.admin-menu, nodebb.admin-settings-activitypub (b43fadd0) + * fallback strings for new resources: nodebb.admin-menu (7b71252e) + * fallback strings for new resources: nodebb.admin-dashboard (3f5dafd0) + * fallback strings for new resources: nodebb.admin-settings-uploads (aa4f4808) + * fallback strings for new resources: nodebb.notifications (c84a86e4) + * fallback strings for new resources: nodebb.notifications, nodebb.user (41e7c144) + * fallback strings for new resources: nodebb.admin-manage-users (c3315063) + * fallback strings for new resources: nodebb.notifications (9524359d) + * fallback strings for new resources: nodebb.topic (a4369b93) + * fallback strings for new resources: nodebb.error, nodebb.user (0b9efa85) + * fallback strings for new resources: nodebb.admin-manage-privileges (7f6fcd05) + * fallback strings for new resources: nodebb.topic (781a900c) + * fallback strings for new resources: nodebb.admin-advanced-cache (64dad9db) + * fallback strings for new resources: nodebb.admin-advanced-cache (f0fb661c) + * fallback strings for new resources: nodebb.admin-settings-chat, nodebb.admin-settings-notifications (756e2434) + * fallback strings for new resources: nodebb.groups (d133f910) + * fallback strings for new resources: nodebb.groups (4bccc311) + * fallback strings for new resources: nodebb.admin-settings-web-crawler (e4455b1c) + * fallback strings for new resources: nodebb.world (b527cb5a) + * fallback strings for new resources: nodebb.admin-manage-users, nodebb.notifications (b04d2dbc) + * fallback strings for new resources: nodebb.admin-manage-users (2c0a60c4) + * fallback strings for new resources: nodebb.category, nodebb.world (5bf6b335) + * fallback strings for new resources: nodebb.notifications (2a8b6d44) + * fallback strings for new resources: nodebb.notifications (304a2ab1) + * fallback strings for new resources: nodebb.notifications (3c6804d4) + * fallback strings for new resources: nodebb.modules, nodebb.notifications (317bcd89) + * fallback strings for new resources: nodebb.admin-development-info (54743724) + * fallback strings for new resources: nodebb.admin-settings-uploads (f8d6c4e8) + * fallback strings for new resources: nodebb.topic (77eef491) + * fallback strings for new resources: nodebb.themes-harmony (cc2772ba) + * fallback strings for new resources: nodebb.admin-settings-email (c26698d6) + * fallback strings for new resources: nodebb.error (aaa9570e) + * fallback strings for new resources: nodebb.topic (dce82aae) +* **deps:** + * update redis docker tag to v8.6.1 (#14009) (898c3f1d) + * update commitlint monorepo to v20.4.2 (#14005) (1ae5041f) + * update dependency @stylistic/eslint-plugin to v5.9.0 (#14006) (efae106e) + * update dependency jsdom to v28.1.0 (#13992) (ec8e547c) + * update postgres docker tag to v18.2 (#13987) (25f866ca) + * update redis docker tag to v8.6.0 (#13976) (bb5e7118) + * update dependency @stylistic/eslint-plugin to v5.8.0 (#13965) (c61326df) + * update dependency jsdom to v28 (#13947) (b61fa426) + * update commitlint monorepo to v20.4.1 (#13945) (a9042602) + * update commitlint monorepo to v20.4.0 (#13938) (531b8374) + * update dependency smtp-server to v3.18.1 (#13936) (d8595d69) + * update dependency @stylistic/eslint-plugin to v5.7.1 (#13920) (b036034a) + * update dependency sass-embedded to v1.97.3 (#13921) (75a04aed) + +##### Documentation Changes + +* added new ACP routes (82b7f429) +* add missing privileges prop to world schema (4ef9d5fa) +* add bookmarks to postobject in /world (07f9eda9) +* add bookmarks to postobject (9a15b571) +* chat teasers are different (91323dce) +* add teaser to postobject schema (0178e4fb) +* OpenAPI schema for rules re-ordering route (072dd1ae) + +##### New Features + +* support the magic break string '[...]' in content, such that if found, outbound federation will use all content up to (and including) that string in its summary (cd357aaf) +* add a '[...]' to the end of the generated summary when federating out articles (fep-b2b8) (bf0f5228) +* prune topics remote cids, closes #13461 (20eb02f1) +* change notif controls to toggles (523e3b49) +* add invitedBy to user info page, closes #13972, closes #13997 (1dae3d22) +* quick create on world page (5df2b8b7) +* allow configuring unreadCutoff per user, closes #6811 (8c6ce198) +* introduce new topics:crosspost privilege (5c35dc86) +* add guest-cta.tpl and lang strings (9da67474) +* track all caches created in acp (9ac507e5) +* closes #5867, dont email if user already read notification (a55651d1) +* allow re-ordering of auto-categorization rules (fd43368a) +* add group tx key (45ff9f0d) +* eslint10 (#13967) (62d88555) +* closes #13968, add sitemap cache duration (fe35ad4f) +* add data-field values from tpl into search dict (abcfc1a5) +* closes https://github.com/NodeBB/NodeBB/pull/11970 (007efc21) +* closes #13961, rename ban-reasons to custom reasons (0eaf2bee) +* ban/mute reasons (#13960) (d086ed2c) +* show bodyLong in notifications, closes #4767 (30541a96) +* allow converting pasted images, closes #10352 (472a8fc1) +* add language key for untitled topic draft (0125ab55) +* add missing lang key for light/dark (870c6310) +* closes #13009, add dedicated test smtp button (c8488012) +* closes #13203, make users room owners on private chats (61662f19) +* topic crossposts generate topic events, #13908 (0c79eaa5) +* remote account banning, #13904 (560ad81f) +* opportunistic backfill, #13895 (33c2de9c) + +##### Bug Fixes + +* #14003, set ACAO header on webfinger responses (415602d8) +* restore coveralls script, update gh action to ignore failures (3fab2074) +* change && to ; (95ea376a) +* add `--no-fail` flag to coveralls invocation (c6ddef67) +* dont show /register page after req.session.forceLogin is set (0ef27187) +* escape fullname in chatWithMessage (64a072c9) +* send guests to login page if they access uncategorized topics without local posts (b4f8e20b) +* remove allowed check from notes.assert as it is already done downstream in topics.(post|reply), update privilege check to inherit world privs if passed-in cid is remote cid (64724629) +* NaN on ap post delete (53b208b7) +* guard against crash when malformed URL present in deliverees (6a0663cd) +* remove unused ACP route (f7d87ecb) +* remove unused ACP controller, add instance count to federation > safety (a35b7d73) +* allow break string and summary limits to be defined and applied (29111ba7) +* make tables responsive on relays/rules pages (0071216c) +* don't show magic break string in regularly parsed posts, tests for ap mocks lib (b460506e) +* remove `preview` in mocked note for now, due to lack of support (fep-b2b8) (31773694) +* topic purge (e484899d) +* upgrade script, dont remove while processing zset (7a23e291) +* dont store ap tids in topics:tid (e8ef2e5c) +* closes #14010 (003e6d07) +* hook name (d6cf5fba) +* add missing timestamp (68eba728) +* gate /world behind ensureLoggedIn middleware (bcfdbf7c) +* #14007, deny access for guests to topics in cid -1, unless a post from a local user exists (de4f016f) +* closes #7221 restrict cropperjs box to profileImageDimension form ACP (f2bbf369) +* category search shoudn't return results that match in the cid part (75477202) +* favicon url (1a35131a) +* allow passing a selected category markup (309d3003) +* overflowing images on /world (438b4f62) +* missing cb in world IS handler (ab62a8e4) +* closes #14002, add max-height (9c5ffe36) +* fallbacks and latest translations for nodebb.user (053ce073) +* keep chat input in view after adding new messages (2f88f776) +* #14001, regression from adjusted acceptable types list (80f61022) +* don't publish name on generated titles (9fbdc792) +* closes #13999, delay cache creation (42362ccf) +* when registering through an invite, prepopulate the email field on /register/complete with the email (2015777f) +* bump persona (a68311de) +* bump harmony for world page changes (e76f8a60) +* only call syncUserInboxes on post create if local uid creates post in cid -1 (45d2e628) +* schema... not sure why I need this all of a sudden (3e2070b2) +* minor cleanup of quick-reply args; opts.body (a9c2457f) +* render new post in feed when posting via quick create (eb0aa6d8) +* call syncUserInboxes asyncronously (5da35bda) +* update quickreply.init so that it can be passed an options parameter, generate proper draft id for world page (94df9738) +* lint, unused class (4bf0f61e) +* increase categories sent to 1k closes #12841 (3c08b730) +* #13993, encodeURICompoent pid since it can be AP url (b607a80a) +* wrong wrapping of route (bb9033af) +* dont call getInbox for /recent (1ca9841c) +* #13990, don't blindly set `user` field on notification objects (8c8782fd) +* unbans not triggering if user data is loaded wit 'banned' property only (0b7df274) +* #13894, buildCategoryLabel helper checks fa-nbb-none (4b9b3648) +* missing gap (e16c5677) +* gate crossposting behind new topics:crosspost privilege (fe8fd9d6) +* #13983, show only local categories in ACP privilege selector (c4411423) +* add example value for failing schema test (292e70f7) +* lint (1598004e) +* bad relative path (7eb49136) +* regression from refactor of uploadedpicture refactor (b95cd882) +* organize rules and relays logic to separate methods (78d7130c) +* #13969, bump mentions (4a38d67c) +* lint (9ebd8f4f) +* #13962, infinite scroll and pagination not working on world (9f1369a2) +* bump themes, l10n world sort label (76fe4bdd) +* rename translations as well (433d318f) +* cant store URL in nconf (6cb6cf7d) +* update tx config (1e109c2e) +* derpy api page (aef0bd97) +* guard against incomplete objects when building context/chain (13422bc8) +* closes #13953, show uid pic in post queue notification (a8a1089e) +* remote post notifs missing bodyLong (18c04d34) +* double-ajaxify on socket connect (381334f4) +* dont update teaser for public chats (149d649a) +* acp graph labels, dont use indices (17bfd73e) +* closes #8642, stricter username check (94885109) +* if there is no hr create one (f249699d) +* closes #13240, move the updatedTeaser to the top of the recent chat list (0a9c5d30) +* regression with updateHistory (b7ea2767) +* #13939, dont append / if url is empty (2dc49c82) +* acp category selector when category has image (ef75f1ba) +* pagination always getting set to default (eab4025b) +* folder name (f05f8b63) +* proper attachment generation on replies, fixed replies getting thumb attachment when it wasn't part of it (69c5f941) +* closes #13734, set process.env.NODE_ENV early using argv (252d1d09) +* update buildRecipents to add option to skip target creation step, update ap actors for note to not bother building targets (ad27347f) +* notes announce cache, use cache when retrieving tid posters (eb27b964) +* optimizations (e697d600) +* cache detection logic in context parseItem executing earlier than needed causing false positives (f9affbad) +* closes #12458, on socket.io reconnect (13bf64c9) +* restrict topic backfill to logged-in users when browsing to a category (0262bb83) +* replace attachment generation logic in notes.public (428b6e73) +* #13900, assertion re-index (6383bb58) +* simplicity tweak (39582cbd) +* export sendMessage as _sendMessage for use in ap jobs lib (4bab9fb4) +* #13892, logical flaw (8b7d350e) +* **i18n:** + * global fallbacks again (955579fa) + * 'global' resource fallbacks (c47acec9) +* **deps:** + * update dependency sanitize-html to v2.17.1 (#14004) (096e9a3e) + * update dependency redis to v5.11.0 (#13996) (63199ea7) + * update dependency rimraf to v6.1.3 (#13994) (b40f5c7b) + * update dependency qs to v6.15.0 (#13995) (5f82e56b) + * update dependency sortablejs to v1.15.7 (#13985) (71d4a6fc) + * update dependency nodebb-plugin-composer-default to v10.3.16 (#13991) (ff292f7d) + * update dependency webpack to v5.105.2 (#13986) (1020092b) + * update dependency qs to v6.14.2 (#13978) (6e4e02a6) + * update dependency lru-cache to v11.2.6 (#13970) (2cddaf86) + * update dependency satori to v0.19.2 (#13974) (c4420da3) + * update dependency webpack to v5.105.1 (#13975) (48929aae) + * update dependency esbuild to v0.27.3 (#13957) (15ba76e3) + * update dependency semver to v7.7.4 (#13958) (fe66c812) + * update dependency nodemailer to v8 (#13951) (ab60c39c) + * update dependency mongodb to v7.1.0 (#13950) (85e99d6b) + * update dependency webpack to v5.105.0 (#13949) (e7101330) + * update dependency commander to v14.0.3 (#13946) (765c1291) + * update dependency pg-cursor to v2.17.0 (#13942) (1f285293) + * update dependency pg to v8.18.0 (#13941) (4eb8854c) + * update dependency autoprefixer to v10.4.24 (#13940) (b837c253) + * update dependency nodebb-theme-harmony to v2.1.37 (#13935) (9ec96aec) + * update dependency nodemailer to v7.0.13 (#13934) (290198b1) + * update dependency express-useragent to v2.1.0 (#13929) (82d6f35b) + * update dependency lru-cache to v11.2.5 (#13932) (b4c5657a) + * update dependency ace-builds to v1.43.6 (#13922) (d911a736) + * update dependency sass to v1.97.3 (#13925) (87c4d416) + * update dependency express-session to v1.19.0 (#13926) (e0e7c5ea) + * update dependency nodebb-theme-harmony to v2.1.36 (#13923) (abfb10e3) + * update dependency pg-cursor to v2.16.2 (#13915) (14e20a32) + * update dependency lodash to v4.17.23 (#13916) (0b822c96) + * update dependency pg to v8.17.2 (#13914) (3f50d52a) + * update dependency pg to v8.17.1 (#13901) (271239d4) + * update dependency pg to v8.17.1 (#13893) (cc8b2db5) + * update dependency pg-cursor to v2.16.1 (#13894) (62498a3c) + * update dependency nodebb-theme-harmony to v2.1.35 (#13896) (5b5955d6) + * update dependency satori to v0.19.1 (#13898) (dd6fda81) + +##### Other Changes + +* fix lint errors (fc474238) +* remove unused (68acc059) +* remove useless assignment (652629df) +* #13982, dont use btn-group on dropdowns (803473ca) +* //github.com/NodeBB/NodeBB/issues/13982 (26af029a) +* remove unused regex (1747cf81) +* filter at the end of user.search (dcbbc187) +* invalid-username doesnt have params (fb460725) + +##### Performance Improvements + +* don't call getUids on every topic load (8a60d9c2) + +##### Refactors + +* add topic-await-review notif text (bac9f1f7) +* ActivityPub ACP page to its own top-level section with sub-pages (f0d2be35) +* allow passing an array to topics.purge and topics.purgePost… (#14018) (e4c945f6) +* dont store ap pids in posts:pid (de1f04d9) +* closes #7155, (bb7be8c5) +* shorter check (a70a62cc) +* isHookValid (63c9a6e0) +* add icons to selected/all (970a4204) +* users table (e3d7abe0) +* pass options to thumbs.load (0424728f) +* slugify isn't heavy anymore (fb95f8a3) +* don't create giant array, process in batches of 500 (ed8cbd6e) +* use opendir instead of loading all files (ce9bd0bb) +* teaser object schema to its own file (1869b807) +* privileges.global.can works with array of privileges (fd6984d2) +* shorter hook (a8a85bcb) +* updateTags to modern js (3756a8fe) +* shorter check (b0f2fead) +* cache page to table (7336c58c) +* emoji replacement code into helper function, remove use of regex on untrusted user input (9608cce6) +* add createFieldChecker (#13973) (c65af199) +* run searches in parallel (9a198c38) +* shorter (3f67a000) +* remove unused url (7f4d537d) +* get rid of url.parse in core (157959df) +* use translator.compile which escapes % and , (a2f4c185) +* shorter (b3dc7f43) +* remove log (ff1376b3) +* get rid of cache for tid posters, was never cleared (065abbf2) +* dont use module, explodes on latest webpack (a4e3fe10) +* use lru directly (c8cd34bf) +* format (070d77fd) +* shorter tpl (e2fc349d) +* get rid of global.env, use process.env.NODE_ENV (07d1f224) +* make custom user field icons fixed width in the acp (2ded6813) +* use local cache for plugin isActive check (7ac5446a) +* Actors.getLocalFollowers to Actors.getFollowers, can pass in both local and remote ids (fac31859) +* move username check to createOrQueue (37675689) +* checkUsername function https://github.com/NodeBB/NodeBB/issues/10864 (7e27da61) +* shorter params (05e76edd) +* move ap jobs to its own file (c595edb4) + +##### Tests + +* remove assert (872d7c74) +* remove old test (59f35e6f) +* update tests to allow title-less topics (b1c097f8) +* show topic data on test fail (6e6900ba) +* fix redis, from was string in map, but int in notif object (a8c68ddc) +* fix spec (0e2a42d5) +* fix missing priv in tests (5c73d338) +* add test to check picture!=uploadedpicture (0c2ab232) +* fix hasOwn (d52b1359) +* group members test (ffc4c0dd) +* add more info to failiing response (87fdca2a) +* fix spec, remove log (05dd46c3) +* favicon test (ca237e67) +* dont return cover:url if its not requested (e4d852b4) +* fix username test (db07456b) +* fix test that explodes on new URL (694b545c) +* another test fix (94873c33) +* fix file name (05d4d857) +* fix spec (d601847a) +* fix tests (0d19294a) +* fix tests, update mentions composer (d6c69465) +* fix typo in spec (43be594a) +* fix spec (d1a39554) +* add missing spec for admin page (30014f41) +* remove unused (018e1c5f) +* fix spec (bc1593b2) + #### v4.8.1 (2026-01-28) ##### Chores