15539 Commits

Author SHA1 Message Date
Barış Soner Uşaklı
9592c1762b dont set isAPI, it is done by middleware.prepareAPI 2026-04-08 11:24:19 -04:00
Barış Soner Uşaklı
55290da01a refactor: use renderHeaderType instead of two variables
add middleware.admin.buildHeaderAsync so it can be called manually with await middleware.admin.buildHeaderAsync(req, res)
2026-04-08 11:19:13 -04:00
Dirk Plate
4366bdd0d8 fix: use file.exists instead of try/catch to detect missing email logo (#14154)
The previous ENOENT check in getLogoSize never worked because image.size
passes the path directly to sharp, which throws a plain Error with message
"Input file is missing" rather than a Node.js ENOENT error. This caused
saving any admin settings to fail when brand:logo was set but the x50 file
was missing (e.g. after a fresh deployment).
2026-04-07 09:11:54 -04:00
Barış Soner Uşaklı
62b65e69ab fix: closes #14151, handle null req.body 2026-04-06 17:20:06 -04:00
Barış Soner Uşaklı
20e751f0e8 fix: remove optional 2026-04-03 22:04:59 -04:00
Barış Soner Uşaklı
0568ef4310 fix: #14147, dont create wrong backlinks
syncBacklinks expects raw post content, html was passed to it from onNewPost since it was switched to use getPostSummary
backlinkRegex was matching  ${nconf.get('url')}/topic/1aef954c-d0dc-45cf-acf2-e3a59f6cc134/foo and return tid=1 instead of the uuid

remove useless if check in syncBacklinks
fixed parseInts on tids
current - remove are both arrays use .length
2026-04-03 21:54:18 -04:00
Barış Soner Uşaklı
072b1e864d dont escape viewport meta tag 2026-04-03 17:01:48 -04:00
Barış Soner Uşaklı
f66317b7a7 add extension to name, when upload profile pictures 2026-04-03 12:03:46 -04:00
Barış Soner Uşaklı
fb48ab3455 fix: user image og:image 2026-03-30 19:42:58 -04:00
Barış Soner Uşaklı
af0e3d9689 fix: closes #14133, don't modify displayName for system groups
added a helper to just modify it for front end
2026-03-30 09:45:07 -04:00
Barış Soner Uşaklı
203f4cc7ff fix: try a save point in retry 2026-03-28 15:16:15 -04:00
Barış Soner Uşaklı
991e977813 fix: try upsert type if it fails 2026-03-28 14:54:34 -04:00
Michele Di Maria
b8fd88fba9 Fix the saving of the statistics on PosgreSQL #14124 (#14129)
* fix: deduplicate postgres sorted set bulk ops to prevent pkey violation

sortedSetIncrByBulk and sortedSetAddBulk did not deduplicate (key, value)
pairs before INSERT, causing "duplicate key value violates unique constraint
legacy_zset_pkey" errors since PostgreSQL ON CONFLICT only resolves against
existing table rows, not within-statement duplicates.

Also adds missing pageviews:ap metrics to analyticsKeys sorted set.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: use upsert with RETURNING to prevent postgres analytics write failures

Replace the INSERT ON CONFLICT DO NOTHING + separate SELECT verification
pattern with INSERT ON CONFLICT DO UPDATE RETURNING. The old pattern had
an unreliable gap between INSERT and SELECT causing random "failed to
insert keys for objects" errors that blocked all analytics writes.

The no-op upsert (DO UPDATE SET type = existing type) guarantees every
row is returned via RETURNING, eliminating the need for a separate SELECT
and the "missing keys" check entirely. Also deduplicates the keys array
to prevent "cannot affect row a second time" errors with DO UPDATE.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-28 13:24:34 -04:00
Barış Soner Uşaklı
6c4e928482 fix: on exit, dont write analytics data on all nodes
if you are running 4 nodebbs each one was calling writeData which could trigger duplicate key errors
2026-03-27 16:45:20 -04:00
Barış Soner Uşaklı
4b503db497 refactor: break long line 2026-03-27 16:44:10 -04:00
Barış Soner Uşaklı
1a0c2a21c7 fix: align-center user and name on post queue 2026-03-26 12:43:21 -04:00
Barış Soner Uşaklı
835723482e feat: add unreadNids to /api/notifications 2026-03-26 11:50:55 -04:00
Barış Soner Uşaklı
82d380a38d fix: ./nodebb upgrade on windows 2026-03-25 12:51:44 -04:00
Barış Soner Uşaklı
72f48fd9c4 fix: #14123, aria-hidden fixes
add aria-labels
2026-03-25 10:21:24 -04:00
Barış Soner Uşaklı
a10471fce7 fix: #14121, use normalizedPath when uploading
add test for normalize
2026-03-24 12:43:57 -04:00
Barış Soner Uşaklı
52e42685e8 fix: key name 2026-03-23 11:24:05 -04:00
Barış Soner Uşaklı
9bcef6b5ea fix: #14116, don't return ban reason if login credentials are incorrect 2026-03-23 09:43:15 -04:00
Barış Soner Uşaklı
43e7f0abb9 feat: add email share 2026-03-22 21:25:43 -04:00
Julian Lam
ebe709da89 fix: call syncfollowcounts on unfollow as well 2026-03-19 11:36:28 -04:00
Julian Lam
44e78e4775 fix: sync follow counts on local and remote follows, #14105 2026-03-18 12:13:50 -04:00
Julian Lam
cc606677cb fix: cold load redirect should only affect guests 2026-03-18 11:09:08 -04:00
Julian Lam
58d3aa77cd feat: add /world as a potential home page route 2026-03-18 10:28:54 -04:00
Julian Lam
35c03e5c8e fix: issue where initial quickcreate post wouldn't go to the right cid 2026-03-17 12:11:24 -04:00
Barış Soner Uşaklı
902533db06 fix: delete cid:<cid>:privilegeMask on category.purge 2026-03-17 11:56:31 -04:00
Barış Soner Uşaklı
779a372fc5 test: add missing selectedCategory to world.yaml
fix url of plugins that are missing it in plugin.json and look for repository.url for backup
2026-03-16 20:31:24 -04:00
Julian Lam
2f5021e547 feat: add category selector to /world quick composer 2026-03-16 15:34:47 -04:00
Julian Lam
5328662510 fix: removing topic tools/checkbox from /world for guests, reword guest CTA in /world 2026-03-16 14:55:31 -04:00
Julian Lam
67a93da507 fix: add back 'after' query param handling in /world that was removed accidentally 2026-03-16 13:50:45 -04:00
Julian Lam
44e65b8d73 feat: ability to show only local posts in /world 2026-03-16 13:34:04 -04:00
Barış Soner Uşaklı
ec4e87ff84 chore: up harmony
change group description to a textarea
2026-03-15 14:23:01 -04:00
Barış Soner Uşaklı
09de6fb9ae perf: switch to set, remove parseFloat in redis
add test to cover float
2026-03-14 17:39:43 -04:00
Barış Soner Uşaklı
6c3daebbce update fix_username_zsets upgrade script
to show progress while deleting
2026-03-13 19:53:35 -04:00
Barış Uşaklı
533ae69c46 feat: allow 3 profile pics (#14092)
* feat: allow 3 profile pics

* test: fix notification test

* test: fix user picture test

* test: relative_path fixes

* fix: relative_path getting saved in when updating profile pic
2026-03-13 18:42:50 -04:00
Julian Lam
1aa5ca8852 fix: restore guest access to /world, default to latest(all) 2026-03-13 13:52:19 -04:00
Julian Lam
1af835641e fix: restored popular calculation behaviour that was broken by e2131d1d2e, removed followingOnly arg passing for popular 2026-03-13 13:19:32 -04:00
Julian Lam
e2131d1d2e refactor: /world sorting logic to always use topics/sorted logic
- New params for getSortedTopics (includeRemote, followingOnly)
- Ability to show latest (followers only) or latest (all), ?all query param to discriminate
- World now always shows posts from the local forum
- Popular sort will be followers-only + local
2026-03-13 12:41:55 -04:00
Barış Soner Uşaklı
f2bca33262 perf: move out nconf.get and isClientScript regex 2026-03-12 22:13:38 -04:00
Barış Soner Uşaklı
40fecd01f3 fix: type 2026-03-12 22:04:48 -04:00
Barış Soner Uşaklı
6147a4d082 fix: merged chat notifications if all the messages are from the same user
usernames.length ends up being 1 so need to use default translation string and not -dual/-triple/-multiple variants
2026-03-12 22:02:03 -04:00
Barış Soner Uşaklı
4fef1b4f9d increase analytics 404 2026-03-12 15:50:33 -04:00
Julian Lam
75a6dfffdc feat: screenshot upload in ACP, send fallback brand icons in manifest, serve assets for richer PWA install UI 2026-03-12 14:28:26 -04:00
Barış Soner Uşaklı
7903d17418 Merge branch 'develop' of https://github.com/NodeBB/NodeBB into develop 2026-03-12 13:27:23 -04:00
Barış Soner Uşaklı
36bf3f16ca refactor: move to data 2026-03-12 13:27:18 -04:00
Julian Lam
a8f081c078 fix: buildRecipients to handle if local uids are passed in followers 2026-03-12 13:20:19 -04:00
Barış Soner Uşaklı
dde2465811 use regular random 2026-03-12 13:11:07 -04:00