| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| README.md | 2026-03-19 | 6.4 kB | |
| v4.10.0 source code.tar.gz | 2026-03-19 | 5.3 MB | |
| v4.10.0 source code.zip | 2026-03-19 | 7.6 MB | |
| Totals: 3 Items | 12.9 MB | 0 | |
Release build (minor) of NodeBB @ 2026-03-19T16:20:32.075Z
v4.10.0 (2026-03-19)
New Features
- add /world as a potential home page route (58d3aa77)
- add category selector to /world quick composer (2f5021e5)
- ability to show only local posts in /world (44e65b8d)
- [#14094], notification drawer UX improvements (6c01a5d8)
- allow 3 profile pics (#14092) (533ae69c)
- screenshot upload in ACP, send fallback brand icons in manifest, serve assets for richer PWA install UI (75a6dfff)
- category group actor outbox, [#14083] (b317cdd3)
- new ap mocks, now publishing user outboxes (f848393e)
- show cronjobs in acp (#14068) (3c0a6540)
- redirect cold requests to remote resources to their canonical source, [#14043] (2b12f8b5)
- include alt text in image/attachment property federating out (ca5aee10)
Bug Fixes
- improve idempotency of ap test (8ca34e74)
- call syncfollowcounts on unfollow as well (ebe709da)
- sync follow counts on local and remote follows, [#14105] (44e78e47)
- cold load redirect should only affect guests (cc606677)
- schema fix for new api config value (7e2c7db3)
- close notif drawer on item click, fix crash in module (7c65471b)
- schema fix for new api config value (efaf8eb9)
- issue where initial quickcreate post wouldn't go to the right cid (35c03e5c)
- only show category selector on quickreply on /world (27b0fbe6)
- delete cid:<cid>:privilegeMask on category.purge (902533db)
- bump themes (3aa8d5ba)
- removing topic tools/checkbox from /world for guests, reword guest CTA in /world (53286625)
- add back 'after' query param handling in /world that was removed accidentally (67a93da5)
- restrict contextmenu preventDefault to the checkbox only (2eb0964d)
- long-press support for topicSelect, [#14045] (d1e1a008)
- debug log (58da9036)
- restore guest access to /world, default to latest(all) (1aa5ca88)
- bump harmony (10859455)
- restored popular calculation behaviour that was broken by e2131d1d2e1c6f14cb8867ac7e22840da3f4c63f, removed followingOnly arg passing for popular (1af83564)
- imagesLoaded integration for handleBack in world.js (38a1da46)
- merged chat notifications if all the messages are from the same user (26bb60ef)
- type (59dd22ca)
- type (40fecd01)
- merged chat notifications if all the messages are from the same user (6147a4d0)
- screenshot fallback (09c54127)
- buildRecipients to handle if local uids are passed in followers (a8f081c0)
- update Like/Dislike to have addressees in activity (c8e349ca)
- accidental hardcoded cid (464bc275)
- skip AP cache on context processing methods (a3ee7447)
- skip AP cache on context processing methods (10e4d579)
- cache key (9eea12ec)
- cache key (74fa77dd)
- missing orderedItems on category outbox index retrieval (8496e1ef)
- [#14084], fix tags not getting properly removed from topics (0a94cecb)
- group badge on group details page (52e8ede8)
- return digest header only if it is set to something (aka not null) (1ad9ce5f)
- missing page parseInt (9978af59)
- dont add self username when clicking reply (9fcaad38)
- notifs (ed3a3672)
- also use tx.compile in chat notif merge (6d22e33a)
- publish id with user outbox, fixes [#13478] (c08a45a5)
- merge with txArgs (e1d0e2a0)
- merged notification translations (34b68109)
- derped handleBack in world.js (ac483152)
- syntax error on undefined value (6b3b3e7e)
- filter out image attachments from remote data if they are already embedded in content (40b8544f)
- update thumbs loading logic to always include post attachments as part of thumbs (prior: was controlled by thumbsOnly flag orshowPostUploadsAsThumbnail setting) (c2d190e1)
- [#14072], world to call thumbs with thumbsOnly filter (f1976168)
- promises in groups.leave (f826e629)
- [#14071], duplicate items loaded via IS on /world (d29f1fbd)
- [#14043], cold-load redirect should only affect guests (5a7316b1)
- hacking handleBack module to work with world page (971c8603)
- bump web-push (27e12a28)
- patch translateKey to wrap arguments in first string isolate (FSI) and Pop Directional Isolate (PDI) characters (59f19ba4)
- add missing db call (4d1d1c86)
- [#14061], world.js show more buttons on infinite scroll (0aead782)
- update clamp-fade to use mask-image, add background to btn-link on Brite skin (9bc1b400)
- [#14046], sneak in a mention to the community in mocked replies (b8ef027c)
- world page 'see more' bugs (cc733631)
- [#13239], unescape custom user field values (9e69b9ad)
- restore
previewas it is now supported by BridyFed (8a371d23) - missing done (9604a0cd)
- bump harmony, [#14042] (b02cdaa9)
- [#14042], adopt plugin-feed's show-more/less logic/scss (43f2951a)
- update minimum title length default to zero to allow title-less topics via composer (6bfe3cd0)
- parent cid (f567d970)
- skip parsing of duplicate emoji tags (363cad29)
Other Changes
- remove unused (19bb37ca)
- jobs.json (e1b6e617)
- remove unused (d6d3116e)
- remove unused (b50a10df)
Performance Improvements
- switch to set, remove parseFloat in redis (09de6fb9)
- move out nconf.get and isClientScript regex (4d55ee0a)
- move out nconf.get and isClientScript regex (f2bca332)
- make a single round trip for set(s)Remove (bcbb7bc4)
- cache groups:createtime (380d9895)
Refactors
- /world sorting logic to always use topics/sorted logic (e2131d1d)
- move to data (36bf3f16)
- get rid of cleanupUids use missing set (6569ea51)
- remove async.series, use batch.processSortedSet (894248e6)
- get rid of helper function (1cc77343)
- switch to cursor (1c7daf0d)
- use set (d9344140)
- pass in cid to rename/remove (fe4a22fb)
- remove admin.themes.getInstalled (92d72f67)
Tests
- add missing selectedCategory to world.yaml (779a372f)
- exclude uploadScreenshot from routeMap parsing test (ff1e1b92)
- make tests happy (08bed89b)
- fix test maybe (25f6088f)
- add one more topic to tag test (e01cb104)
- cleaner user.delete test (215d6440)
- set minimumtitlelength for test (7429b5d4)
- added test to ensure that Likes do not get processed when privilege is rescinded (8cba65cd)
- break apart inbox handling tests to its own file in test/activitypub (06e0bd6a)
- add debug test to see if failing test is due to race condition (e3119c76)
- fix spec (6dd9f734)