NodeBB logo

NodeBB

Node.js based forum software built for the modern web

Alternative to: discourse, vanilla forums, circle

NodeBB screenshot

About Versions (100)

v4.3.0

2025-05-01

Release 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 summary as well (5c5fd3d4)
  • show/hide categories on world page, #13255 (804208b7)
  • notice on remote categories that have no local followers, #13255 (93a5b35f)
  • add new option to categorySearch module, defaultCategories, use to populate the category list when you don’t want to poll backend for the main category list (a487d5f6)
  • category quick search on world page, theme version updates, #13255 (17909516)
  • show tracked/watched remote categories in world page, #13255 (34ab6771)
  • remote user to category migration should also migrate local user follows into category watches (ac7b7f81)
  • allowing manual group assertion via category search input (23b3148c)
  • remote group actors migrated to categories if they were previous asserted as remote users (d19f692b)
  • #13255 new topics in remote category addresses remote category, tests, fixes to tests (b8c531d5)
  • #13255, deliver asserted topics to remote category followers (9c1d5cd3)
  • #13255, add category name and handle to category search zset (876d1b04)
  • integrate remote category pruning into actor pruning logic (9b5855f7)
  • migration of group-as-user to group-as-category, remote category purging, more tests (4be0f73a)
  • asserted topics and posts to remote categories will notify and add to unread based on remote category watch state (f483e883)
  • also include category in to field when mocking post for federation (f73f727d)
  • chat allow/deny list, closes #13359 (a5afad27)
  • show topic follower counts (#13326) (bf2d4c46)
  • federate out as:Article with preview for root-level posts in a topic, instead of as:Note (3c4be773)
  • body-parser-2.x test (#13278) (389bc062)
  • upgrade commander, get rid of custom color & wrapping code (485562d5)
  • testing eslint9 (#13266) (68136641)
Bug Fixes
  • bump harmony (2bf2e556)
  • #13352, also do the webfinger backreference check when calling assertGroup (2572cbf5)
  • regression that caused non-public content with source.content to fail parsing (e9b3306e)
  • closes #13360, catch error in buildAccountData middleware (537a7428)
  • bug where disparate ids all claiming to be the same handle were causing duplicate remote users due to collisions, #13352 (c2a3ef81)
  • posts incorrectly excluded from results if result pid is in a remote category (a0a8c462)
  • ap helpers.makeSet to handle undefined property values (d020e334)
  • add back localCategories to categorySearch when defaultCategories is supplied (d58d5861)
  • remote bare hash for remote users on prune as well (f02d9661)
  • missing teasers for remote categories on /world (695312f1)
  • remove superfluous privilege filter in markAllRead (0fab4255)
  • reversed image and icon for remote categories, omit fa icon if remote category has icon property set, #13255 (dabcefaf)
  • closes #13289, id can be null (f1d1d082)
  • marking remote category topics as read (4a7111d0)
  • markAllRead to get tids based on same logic as unread page, instead of marking all recent posts read (b0236735)
  • key ownership cross-check to also work with remote categories, #13255 (6dee3e56)
  • #13255, assert all recipients of the main post when asserting a note, so that remote categories can be discovered (1f046782)
  • remote categories should not show up in a user’s follow lists (4d1d7c3d)
  • #13255, remote user-to-category migration should not move shares that are already in an existing cid (3213da1c)
  • proper handling of actors.qualify response (f2e0ba21)
  • missing dep (2cb6d10d)
  • topics in remote categories showing up in /recent (c4274a3d)
  • regression that caused resolveInboxes to always return empty, added tests for resolveInboxes (0246c146)
  • spread fail, @julianlam (c1b71964)
  • filter out non-asserted targets when sending ap messages, diff. getter method when passed-in ID is a remote category (309deb0d)
  • tag whitelist check socket call for remote categories (c5901e0d)
  • migrate topics as system user instead of uid 0 (ee34396c)
  • do not send out ap (undo:)follow if local user or category is (not)already following (c6f2c874)
  • allow category controller to respond also by remote category id (0b333fb7)
  • #13255, update category search logic to allow for remote categories (6e23de46)
  • delete shares zset on account deletion (7ccd6b73)
  • persona tooltip so it doesn’t appear when dropdowns are open (ea9f7903)
  • lang keys (4277765b)
  • closes #13353, don’t use index for finding plugin data (ed92ffaf)
  • regression on search query that is a url, via 3526c937ccec843d4637efa894f49efc9bac5493 (41252197)
  • closes #13313, add error:post-deleted (b49a4586)
  • upgrade script (52ca086b)
  • tag urls getting double escaped (#13306) (3526c937)
  • notifications.markAllRead (bf243e07)
  • posts.uploads.usage since paths changed (c41c7e8a)
  • req.body can be undefined (cd70e6c6)
  • closes #13298, catch exceptions in webfinger and nodeinfo (bbfd6445)
  • closes #13205, make parent post font-size small until expanded (ef98f8f9)
  • closes #13275, set ‘announces’ after adding to zset to prevent race condition (2c59007b)
  • use slug instead of groupname in acp for groups (d9f33204)
  • do not await the batch call to sendMessage (aa4f23bf)
  • commenting out outward federation of Add activity, pending forumwg discussion (4b22f297)
  • on user deletion during assertion (due to 410), if delete fails, just run ap post-deletion to clean up (4bbe27d4)
  • race condition in test (807a8c66)
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)