NodeBB
Node.js based forum software built for the modern web
Alternative to: discourse, vanilla forums, circle
About
Versions (100)
v4.3.0
2025-05-01Release build (minor) of NodeBB @ 2025-05-01T04:13:39.910Z
v4.3.0 (2025-05-01)
Documentation Changes
- update openapi spec with new (missing) properties (b32b7fcc)
New Features
- upgrade script to remote duplicate remote users and categories as per #13352 (5aee2f26)
- add new mixin clamp-fade, and handler for expanding it in category description (decc9cf1)
- handle Announce(Update(Note)) as well, #13320 (04473669)
- #13255, proper handling of upvotes shared by group actors (74e32a17)
- send the whole post content in
summaryas well (5c5fd3d4) - show/hide categories on world page, #13255 (804208b7)
- notice on remote categories that have no local followers, #13255 (93a5b35f)
- add new option to categorySearch module,
defaultCategories, use to populate the category list when you don’t want to poll backend for the main category list (a487d5f6) - category quick search on world page, theme version updates, #13255 (17909516)
- show tracked/watched remote categories in world page, #13255 (34ab6771)
- remote user to category migration should also migrate local user follows into category watches (ac7b7f81)
- allowing manual group assertion via category search input (23b3148c)
- remote group actors migrated to categories if they were previous asserted as remote users (d19f692b)
- #13255 new topics in remote category addresses remote category, tests, fixes to tests (b8c531d5)
- #13255, deliver asserted topics to remote category followers (9c1d5cd3)
- #13255, add category name and handle to category search zset (876d1b04)
- integrate remote category pruning into actor pruning logic (9b5855f7)
- migration of group-as-user to group-as-category, remote category purging, more tests (4be0f73a)
- asserted topics and posts to remote categories will notify and add to unread based on remote category watch state (f483e883)
- also include category in
tofield when mocking post for federation (f73f727d) - chat allow/deny list, closes #13359 (a5afad27)
- show topic follower counts (#13326) (bf2d4c46)
- federate out as:Article with
previewfor root-level posts in a topic, instead ofas:Note(3c4be773) - body-parser-2.x test (#13278) (389bc062)
- upgrade commander, get rid of custom color & wrapping code (485562d5)
- testing eslint9 (#13266) (68136641)
Bug Fixes
- bump harmony (2bf2e556)
- #13352, also do the webfinger backreference check when calling assertGroup (2572cbf5)
- regression that caused non-public content with source.content to fail parsing (e9b3306e)
- closes #13360, catch error in buildAccountData middleware (537a7428)
- bug where disparate ids all claiming to be the same handle were causing duplicate remote users due to collisions, #13352 (c2a3ef81)
- posts incorrectly excluded from results if result pid is in a remote category (a0a8c462)
- ap helpers.makeSet to handle undefined property values (d020e334)
- add back localCategories to categorySearch when defaultCategories is supplied (d58d5861)
- remote bare hash for remote users on prune as well (f02d9661)
- missing teasers for remote categories on /world (695312f1)
- remove superfluous privilege filter in markAllRead (0fab4255)
- reversed image and icon for remote categories, omit fa icon if remote category has icon property set, #13255 (dabcefaf)
- closes #13289, id can be null (f1d1d082)
- marking remote category topics as read (4a7111d0)
- markAllRead to get tids based on same logic as unread page, instead of marking all recent posts read (b0236735)
- key ownership cross-check to also work with remote categories, #13255 (6dee3e56)
- #13255, assert all recipients of the main post when asserting a note, so that remote categories can be discovered (1f046782)
- remote categories should not show up in a user’s follow lists (4d1d7c3d)
- #13255, remote user-to-category migration should not move shares that are already in an existing cid (3213da1c)
- proper handling of actors.qualify response (f2e0ba21)
- missing dep (2cb6d10d)
- topics in remote categories showing up in /recent (c4274a3d)
- regression that caused resolveInboxes to always return empty, added tests for resolveInboxes (0246c146)
- spread fail, @julianlam (c1b71964)
- filter out non-asserted targets when sending ap messages, diff. getter method when passed-in ID is a remote category (309deb0d)
- tag whitelist check socket call for remote categories (c5901e0d)
- migrate topics as system user instead of uid 0 (ee34396c)
- do not send out ap (undo:)follow if local user or category is (not)already following (c6f2c874)
- allow category controller to respond also by remote category id (0b333fb7)
- #13255, update category search logic to allow for remote categories (6e23de46)
- delete shares zset on account deletion (7ccd6b73)
- persona tooltip so it doesn’t appear when dropdowns are open (ea9f7903)
- lang keys (4277765b)
- closes #13353, don’t use index for finding plugin data (ed92ffaf)
- regression on search query that is a url, via 3526c937ccec843d4637efa894f49efc9bac5493 (41252197)
- closes #13313, add error:post-deleted (b49a4586)
- upgrade script (52ca086b)
- tag urls getting double escaped (#13306) (3526c937)
- notifications.markAllRead (bf243e07)
- posts.uploads.usage since paths changed (c41c7e8a)
- req.body can be undefined (cd70e6c6)
- closes #13298, catch exceptions in webfinger and nodeinfo (bbfd6445)
- closes #13205, make parent post font-size small until expanded (ef98f8f9)
- closes #13275, set ‘announces’ after adding to zset to prevent race condition (2c59007b)
- use slug instead of groupname in acp for groups (d9f33204)
- do not await the batch call to sendMessage (aa4f23bf)
- commenting out outward federation of Add activity, pending forumwg discussion (4b22f297)
- on user deletion during assertion (due to 410), if delete fails, just run ap post-deletion to clean up (4bbe27d4)
- race condition in test (807a8c66)
Refactors
- use promise.all (74661381)
- categories.sortTidsBySet to not take cid, retrieve from tids themselves (bfc7daf2)
- allow topics to be asserted directly into a remote category, or -1 otherwise (0fa98237)
- ability to browse to remote categories, group actor assertion logic, etc. — no logic to assign topics to remote categories yet (1f40995f)
- remove datepicker (be7959e5)
- add sping/ping into openapi (8ffbc359)
- moved these rules to nodebb-config (e184c910)
- switch eslint configs to esm (92d6e022)
- move topic/post menu lists to core (9f93cc9b)
- show topic tools if plugins add them (87aacc89)
- remove reply icons (b73fb67b)
- remove debug log (021b3af0)
- break long line (c93dc589)
- only write to db on runJobs processes (a6839b61)
- use bulk increment (667367a6)
- remove spammy error log (9637abca)
Reverts
- use of vanity domains, needs rethinking. Originally added in 709a02d97ae7acbab08c7fa1fecfd01e0dcadcc7 (55c89969)
Tests
- article for new topic, note for replies (3e508d6c)
- missing clear ap send cache (512f889e)
- additional test for ensuring handle:uid is continually set even after re-assertion (39fc9bae)
- additional test for remote category topic assertion when ignoring category (c2f77cee)
- #13255, reply to topic in remote category addresses remote category (85e7c1a2)
- remote user pruning tests (53dc79a1)
- introduce overrides into person and group mocks (4f748158)
- have ap helper mocks for person and group auto-save to ap cache (80069a19)
- add failing tests for actor/group assertion via wrong method, remote user to category migration (afc47643)
- add tests for topics slotting into remote categories if addressed (804052f2)
- group actor assertion tests (ca9a5b6d)
- shorter test (e0235a1e)
- eslint for tests (f864a5a4)
- fix tests (321defb9)
- fix test expecting Note when it is now Article (5d94f2ca)