From 25f1fa670e70f0a14ebd95ee1fd3eed0ad3f0afd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Wed, 8 Jan 2025 10:25:28 -0500 Subject: [PATCH 01/12] test: remove resizeImageWidth --- src/controllers/api.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/controllers/api.js b/src/controllers/api.js index bea001c424..95cbf1c377 100644 --- a/src/controllers/api.js +++ b/src/controllers/api.js @@ -78,7 +78,6 @@ apiController.loadConfig = async function (req) { enablePostHistory: meta.config.enablePostHistory === 1, timeagoCutoff: meta.config.timeagoCutoff !== '' ? Math.max(0, parseInt(meta.config.timeagoCutoff, 10)) : meta.config.timeagoCutoff, timeagoCodes: languages.timeagoCodes, - resizeImageWidth: meta.config.resizeImageWidth, cookies: { enabled: meta.config.cookieConsentEnabled === 1, message: translator.escape(validator.escape(meta.config.cookieConsentMessage || '[[global:cookies.message]]')).replace(/\\/g, '\\\\'), From 23298060b1c72a240818a07d3b62dd3cd5ae1e08 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Wed, 8 Jan 2025 10:31:01 -0500 Subject: [PATCH 02/12] test: fix spec --- public/openapi/read/admin/config.yaml | 2 -- 1 file changed, 2 deletions(-) diff --git a/public/openapi/read/admin/config.yaml b/public/openapi/read/admin/config.yaml index f79df9eca6..73105169dc 100644 --- a/public/openapi/read/admin/config.yaml +++ b/public/openapi/read/admin/config.yaml @@ -122,8 +122,6 @@ get: type: array items: type: string - resizeImageWidth: - type: number cookies: type: object properties: From 4aeafb672f4e693b8b69ef401fa5f4259965bc4e Mon Sep 17 00:00:00 2001 From: Misty Release Bot Date: Wed, 8 Jan 2025 17:54:04 +0000 Subject: [PATCH 03/12] chore: incrementing version number - v3.12.2 --- install/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/package.json b/install/package.json index 9cfb3f094a..23db029ac8 100644 --- a/install/package.json +++ b/install/package.json @@ -2,7 +2,7 @@ "name": "nodebb", "license": "GPL-3.0", "description": "NodeBB Forum", - "version": "3.12.1", + "version": "3.12.2", "homepage": "https://www.nodebb.org", "repository": { "type": "git", From 98e5d1b5c2bd33fc4340dc175d1a31c53ab22a83 Mon Sep 17 00:00:00 2001 From: Misty Release Bot Date: Wed, 8 Jan 2025 17:54:04 +0000 Subject: [PATCH 04/12] chore: update changelog for v3.12.2 --- CHANGELOG.md | 130 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 130 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index dfda132a4d..d5d67d5a18 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,133 @@ +#### v3.12.2 (2025-01-08) + +##### Chores + +* remove log (2f5effda) +* up markdown (0a135d88) +* up deps (48944a86) +* up composer-default (80ddc03a) +* up harmony (5b2dfd74) +* incrementing version number - v3.12.1 (944c4e66) +* update changelog for v3.12.1 (22606767) +* incrementing version number - v3.12.0 (052c195e) +* incrementing version number - v3.11.1 (0c0dd480) +* incrementing version number - v3.11.0 (acf27e85) +* incrementing version number - v3.10.3 (57d54224) +* incrementing version number - v3.10.2 (2f15f464) +* incrementing version number - v3.10.1 (cca3a644) +* incrementing version number - v3.10.0 (b60a9b4e) +* incrementing version number - v3.9.1 (f120c91c) +* incrementing version number - v3.9.0 (4880f32d) +* incrementing version number - v3.8.4 (4833f9a6) +* incrementing version number - v3.8.3 (97ce2c44) +* incrementing version number - v3.8.2 (72d91251) +* incrementing version number - v3.8.1 (527326f7) +* incrementing version number - v3.8.0 (e228a6eb) +* incrementing version number - v3.7.5 (6882894d) +* incrementing version number - v3.7.4 (6678744c) +* incrementing version number - v3.7.3 (2d62b6f6) +* incrementing version number - v3.7.2 (cc257e7e) +* incrementing version number - v3.7.1 (712365a5) +* incrementing version number - v3.7.0 (9a6153d7) +* incrementing version number - v3.6.7 (86a17e38) +* incrementing version number - v3.6.6 (6604bf37) +* incrementing version number - v3.6.5 (6c653625) +* incrementing version number - v3.6.4 (83d131b4) +* incrementing version number - v3.6.3 (fc7d2bfd) +* incrementing version number - v3.6.2 (0f577a57) +* incrementing version number - v3.6.1 (f1a69468) +* incrementing version number - v3.6.0 (4cdf85f8) +* incrementing version number - v3.5.3 (ed0e8783) +* incrementing version number - v3.5.2 (52fbb2da) +* incrementing version number - v3.5.1 (4c543488) +* incrementing version number - v3.5.0 (d06fb4f0) +* incrementing version number - v3.4.3 (5c984250) +* incrementing version number - v3.4.2 (3f0dac38) +* incrementing version number - v3.4.1 (01e69574) +* incrementing version number - v3.4.0 (fd9247c5) +* incrementing version number - v3.3.9 (5805e770) +* incrementing version number - v3.3.8 (a5603565) +* incrementing version number - v3.3.7 (b26f1744) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### New Features + +* add -y flag to upgrade, closes #13023 (4f682a31) +* add missing default notification settings (d155da3c) +* closes #13001, allow keyboard to change cover position (45c5351f) +* use displayname for user image titles (52366101) + +##### Bug Fixes + +* closes #13036, if image isn't loaded yet width is 0 (d05c203b) +* closes #13024, on register dont auto login with user doesn't have local:login privilege (238a3ed5) +* closes #13022, don't do anything if notif setting isnt set to email (fcf50a3c) +* closes #13019, use displayname in vote tooltip (dcc2342c) +* overflow on dashboard/searches (1b13cce2) +* #13011, catch errors (25655d5a) +* truncate popular search terms, closes #13010 (2f72e32d) +* #13007, replace $ with \uFF04, like . (c60cee59) +* dont stripEXIF from gifs (f478adac) +* closes #13008, catch errors in post redirect (77521494) +* test on redis (a6f0eba5) +* convert to str than filter (c69fa811) +* closes #13002, make chats keyboard focusable (e71feeec) +* js error when clicking a notification (d40762b7) +* don't close search if children have focus, closes #13004 (1cb7bb6a) +* #12991, switch to nodemailer address object (a489abc7) +* make fork/move dropdowns go up (89b8de50) + +##### Other Changes + +* whitespace (27e945fd) +* index.js (7bfca7ba) +* //github.com/NodeBB/NodeBB/issues/13018 (68f73fd0) + +##### Refactors + +* silence deprecations in prod (d75b169c) +* check if useragent exists firt (a0e66816) +* get rid of RegExp (e4dd697a) +* remove debug (646b9ea7) + +##### Tests + +* fix spec (23298060) +* remove resizeImageWidth (25f1fa67) +* editor tests (82538ca3) +* missing service worker test (e845afc1) +* add last one (54233dcd) +* custom fields tests (ae2bd5ab) +* fix controller tests (b129c6c0) +* missing translator tests (0d3a8757) +* fix relative path in tests (127e0e22) +* add translateInPlace test (225c91ed) +* subfolder in category link (407b0cc6) +* add helper tests (95b42f83) +* debounce/throttle (d5ae91a3) +* add back disabled test since node 18 is minimum (8864e658) +* fix user picture test (29804a10) +* fix thumb test (fa24f1dd) + #### v3.12.1 (2024-12-20) ##### Chores From 45eabbf5ba2100201fe887a9d6fc81d88379d414 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Wed, 8 Jan 2025 17:21:05 -0500 Subject: [PATCH 05/12] fix: don't confirm emails on HEAD request outlook safelinks triggers page twice --- src/controllers/index.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/controllers/index.js b/src/controllers/index.js index 3812d0bc55..447c75b663 100644 --- a/src/controllers/index.js +++ b/src/controllers/index.js @@ -228,6 +228,10 @@ Controllers.confirmEmail = async (req, res) => { ...opts, }); } + + if (req.method === 'HEAD') { + return renderPage(); + } try { if (req.loggedIn) { const emailValidated = await user.getUserField(req.uid, 'email:confirmed'); From e89b7ec88762a05e90745d6c89323dc740e0e096 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Mon, 13 Jan 2025 11:59:42 -0500 Subject: [PATCH 06/12] fix: for attribute label --- src/views/partials/acceptTos.tpl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/views/partials/acceptTos.tpl b/src/views/partials/acceptTos.tpl index 59aa2a5aa7..53e31c3aed 100644 --- a/src/views/partials/acceptTos.tpl +++ b/src/views/partials/acceptTos.tpl @@ -1,8 +1,8 @@
- +
{termsOfUse}
- +
\ No newline at end of file From c6eaea309e7b49bb5aa288f647efd366786f8462 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Tue, 14 Jan 2025 10:16:10 -0500 Subject: [PATCH 07/12] chore: up 2factor --- install/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/package.json b/install/package.json index 23db029ac8..45ecd2d74c 100644 --- a/install/package.json +++ b/install/package.json @@ -97,7 +97,7 @@ "mousetrap": "1.6.5", "multiparty": "4.2.3", "nconf": "0.12.1", - "nodebb-plugin-2factor": "7.5.7", + "nodebb-plugin-2factor": "7.5.8", "nodebb-plugin-composer-default": "10.2.44", "nodebb-plugin-dbsearch": "6.2.5", "nodebb-plugin-emoji": "5.1.15", From 5120d11721211405ca7035b450c745747a3b6ad2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Tue, 14 Jan 2025 14:45:44 -0500 Subject: [PATCH 08/12] chore: up harmony --- install/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/package.json b/install/package.json index 45ecd2d74c..3d39d68ab4 100644 --- a/install/package.json +++ b/install/package.json @@ -107,7 +107,7 @@ "nodebb-plugin-ntfy": "1.7.7", "nodebb-plugin-spam-be-gone": "2.3.0", "nodebb-rewards-essentials": "1.0.0", - "nodebb-theme-harmony": "1.2.95", + "nodebb-theme-harmony": "1.2.96", "nodebb-theme-lavender": "7.1.17", "nodebb-theme-peace": "2.2.33", "nodebb-theme-persona": "13.3.63", From 168e6b2c92ea6ad87f50af86ce8a7f8e5e73d231 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Wed, 15 Jan 2025 10:02:09 -0500 Subject: [PATCH 09/12] fix: closes #13051, catch errors from widget render --- src/widgets/index.js | 61 ++++++++++++++++++++++++-------------------- 1 file changed, 33 insertions(+), 28 deletions(-) diff --git a/src/widgets/index.js b/src/widgets/index.js index 0478b8dc3a..67ab20607b 100644 --- a/src/widgets/index.js +++ b/src/widgets/index.js @@ -64,35 +64,40 @@ async function renderWidget(widget, uid, options, location) { const userLang = config.userLang || meta.config.defaultLang || 'en-GB'; const templateData = _.assign({ }, options.templateData, { config: config }); - const data = await plugins.hooks.fire(`filter:widget.render:${widget.widget}`, { - uid: uid, - area: options, - templateData: templateData, - data: widget.data, - req: options.req, - res: options.res, - location, - }); - - if (!data) { - return; - } - - let { html } = data; - - if (widget.data.container && widget.data.container.match('{body}')) { - html = await Benchpress.compileRender(widget.data.container, { - title: widget.data.title, - body: html, - template: data.templateData && data.templateData.template, + try { + const data = await plugins.hooks.fire(`filter:widget.render:${widget.widget}`, { + uid: uid, + area: options, + templateData: templateData, + data: widget.data, + req: options.req, + res: options.res, + location, }); - } - - if (html) { - html = await translator.translate(html, userLang); - } - - return { html }; + + if (!data) { + return; + } + + let { html } = data; + + if (widget.data.container && widget.data.container.match('{body}')) { + html = await Benchpress.compileRender(widget.data.container, { + title: widget.data.title, + body: html, + template: data.templateData && data.templateData.template, + }); + } + + if (html) { + html = await translator.translate(html, userLang); + } + + return { html }; + } catch (err) { + winston.error(err.stack); + return { html: '' } + } } widgets.checkVisibility = async function (data, uid) { From 539693a4a48236864a8adbe35042e69af0a871fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Wed, 15 Jan 2025 10:15:02 -0500 Subject: [PATCH 10/12] perf: closes #13052, only call loadConfig once per page when rendering widgets --- src/widgets/index.js | 35 +++++++++++++++++------------------ 1 file changed, 17 insertions(+), 18 deletions(-) diff --git a/src/widgets/index.js b/src/widgets/index.js index 67ab20607b..2750d25232 100644 --- a/src/widgets/index.js +++ b/src/widgets/index.js @@ -22,7 +22,12 @@ widgets.render = async function (uid, options) { const locations = _.uniq(Object.keys(data.global).concat(Object.keys(data[options.template]))); - const widgetData = await Promise.all(locations.map(location => renderLocation(location, data, uid, options))); + let config = options.res.locals.config || {}; + if (options.res.locals.isAPI) { + config = await apiController.loadConfig(options.req); + } + + const widgetData = await Promise.all(locations.map(location => renderLocation(location, data, uid, options, config))); const returnData = {}; locations.forEach((location, i) => { @@ -34,7 +39,7 @@ widgets.render = async function (uid, options) { return returnData; }; -async function renderLocation(location, data, uid, options) { +async function renderLocation(location, data, uid, options, config) { const widgetsAtLocation = (data[options.template][location] || []).concat(data.global[location] || []); if (!widgetsAtLocation.length) { @@ -42,12 +47,12 @@ async function renderLocation(location, data, uid, options) { } const renderedWidgets = await Promise.all( - widgetsAtLocation.map(widget => renderWidget(widget, uid, options, location)) + widgetsAtLocation.map(widget => renderWidget(widget, uid, options, config, location)) ); return renderedWidgets; } -async function renderWidget(widget, uid, options, location) { +async function renderWidget(widget, uid, options, config, location) { if (!widget || !widget.data || (!!widget.data['hide-mobile'] && options.req.useragent.isMobile)) { return; } @@ -57,12 +62,6 @@ async function renderWidget(widget, uid, options, location) { return; } - let config = options.res.locals.config || {}; - if (options.res.locals.isAPI) { - config = await apiController.loadConfig(options.req); - } - - const userLang = config.userLang || meta.config.defaultLang || 'en-GB'; const templateData = _.assign({ }, options.templateData, { config: config }); try { const data = await plugins.hooks.fire(`filter:widget.render:${widget.widget}`, { @@ -74,13 +73,13 @@ async function renderWidget(widget, uid, options, location) { res: options.res, location, }); - + if (!data) { return; } - + let { html } = data; - + if (widget.data.container && widget.data.container.match('{body}')) { html = await Benchpress.compileRender(widget.data.container, { title: widget.data.title, @@ -88,16 +87,16 @@ async function renderWidget(widget, uid, options, location) { template: data.templateData && data.templateData.template, }); } - + if (html) { - html = await translator.translate(html, userLang); + html = await translator.translate(html, config.userLang || meta.config.defaultLang || 'en-GB'); } - + return { html }; } catch (err) { winston.error(err.stack); - return { html: '' } - } + return { html: '' }; + } } widgets.checkVisibility = async function (data, uid) { From 38c92927c8ff0e52daa222ac817e29bf0ffafe38 Mon Sep 17 00:00:00 2001 From: Misty Release Bot Date: Wed, 15 Jan 2025 21:53:09 +0000 Subject: [PATCH 11/12] chore: incrementing version number - v3.12.3 --- install/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/package.json b/install/package.json index 3d39d68ab4..e011d75c50 100644 --- a/install/package.json +++ b/install/package.json @@ -2,7 +2,7 @@ "name": "nodebb", "license": "GPL-3.0", "description": "NodeBB Forum", - "version": "3.12.2", + "version": "3.12.3", "homepage": "https://www.nodebb.org", "repository": { "type": "git", From 0cc94bbe19ba6ffabece99401c47c3e5cc1c42b5 Mon Sep 17 00:00:00 2001 From: Misty Release Bot Date: Wed, 15 Jan 2025 21:53:10 +0000 Subject: [PATCH 12/12] chore: update changelog for v3.12.3 --- CHANGELOG.md | 79 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index d5d67d5a18..b03dbf9f3f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,82 @@ +#### v3.12.3 (2025-01-15) + +##### Chores + +* up harmony (5120d117) +* up 2factor (c6eaea30) +* incrementing version number - v3.12.2 (a1269b39) +* update changelog for v3.12.2 (98e5d1b5) +* incrementing version number - v3.12.1 (944c4e66) +* incrementing version number - v3.12.0 (052c195e) +* incrementing version number - v3.11.1 (0c0dd480) +* incrementing version number - v3.11.0 (acf27e85) +* incrementing version number - v3.10.3 (57d54224) +* incrementing version number - v3.10.2 (2f15f464) +* incrementing version number - v3.10.1 (cca3a644) +* incrementing version number - v3.10.0 (b60a9b4e) +* incrementing version number - v3.9.1 (f120c91c) +* incrementing version number - v3.9.0 (4880f32d) +* incrementing version number - v3.8.4 (4833f9a6) +* incrementing version number - v3.8.3 (97ce2c44) +* incrementing version number - v3.8.2 (72d91251) +* incrementing version number - v3.8.1 (527326f7) +* incrementing version number - v3.8.0 (e228a6eb) +* incrementing version number - v3.7.5 (6882894d) +* incrementing version number - v3.7.4 (6678744c) +* incrementing version number - v3.7.3 (2d62b6f6) +* incrementing version number - v3.7.2 (cc257e7e) +* incrementing version number - v3.7.1 (712365a5) +* incrementing version number - v3.7.0 (9a6153d7) +* incrementing version number - v3.6.7 (86a17e38) +* incrementing version number - v3.6.6 (6604bf37) +* incrementing version number - v3.6.5 (6c653625) +* incrementing version number - v3.6.4 (83d131b4) +* incrementing version number - v3.6.3 (fc7d2bfd) +* incrementing version number - v3.6.2 (0f577a57) +* incrementing version number - v3.6.1 (f1a69468) +* incrementing version number - v3.6.0 (4cdf85f8) +* incrementing version number - v3.5.3 (ed0e8783) +* incrementing version number - v3.5.2 (52fbb2da) +* incrementing version number - v3.5.1 (4c543488) +* incrementing version number - v3.5.0 (d06fb4f0) +* incrementing version number - v3.4.3 (5c984250) +* incrementing version number - v3.4.2 (3f0dac38) +* incrementing version number - v3.4.1 (01e69574) +* incrementing version number - v3.4.0 (fd9247c5) +* incrementing version number - v3.3.9 (5805e770) +* incrementing version number - v3.3.8 (a5603565) +* incrementing version number - v3.3.7 (b26f1744) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Bug Fixes + +* closes #13051, catch errors from widget render (168e6b2c) +* for attribute label (e89b7ec8) +* don't confirm emails on HEAD request (45eabbf5) + +##### Performance Improvements + +* closes #13052, only call loadConfig once per page (539693a4) + #### v3.12.2 (2025-01-08) ##### Chores