From 59bc2b0d4b4c1c10dca002f030404fd2fb47891e Mon Sep 17 00:00:00 2001 From: Misty Release Bot Date: Thu, 10 Apr 2025 14:03:46 +0000 Subject: [PATCH 1/8] chore: incrementing version number - v4.2.1 --- install/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/package.json b/install/package.json index 24fdf6cd75..70159b0829 100644 --- a/install/package.json +++ b/install/package.json @@ -2,7 +2,7 @@ "name": "nodebb", "license": "GPL-3.0", "description": "NodeBB Forum", - "version": "4.2.0", + "version": "4.2.1", "homepage": "https://www.nodebb.org", "repository": { "type": "git", From 4cee37b98e5ded06f79ba8f80e9877808b51f29a Mon Sep 17 00:00:00 2001 From: Misty Release Bot Date: Thu, 10 Apr 2025 14:03:46 +0000 Subject: [PATCH 2/8] chore: update changelog for v4.2.1 --- CHANGELOG.md | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 33da12d0e3..ce6bf7959e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,34 @@ +#### v4.2.1 (2025-04-10) + +##### Chores + +* up harmony (d161eb6f) +* up persona (2237e17a) +* up persona (75f1f6fb) +* incrementing version number - v4.2.0 (87581958) +* update changelog for v4.2.0 (c9e0198d) +* incrementing version number - v4.1.1 (b2afbb16) +* incrementing version number - v4.1.0 (36c80850) +* incrementing version number - v4.0.6 (4a52fb2e) +* incrementing version number - v4.0.5 (1792a62b) +* incrementing version number - v4.0.4 (b1125cce) +* incrementing version number - v4.0.3 (2b65c735) +* incrementing version number - v4.0.2 (73fe5fcf) +* incrementing version number - v4.0.1 (a461b758) +* incrementing version number - v4.0.0 (c1eaee45) + +##### Bug Fixes + +* closes #13317, fix email confirm for changing email (33d50637) +* check if latestversion is valid before using semver.gt (6fe066ce) +* closes #13256, allow keyboard access to icon colors (c6620170) + +##### Refactors + +* get rid of async.parallel (e722e869) +* remove pointless true (747457d7) +* make register intro heading (c258f597) + #### v4.2.0 (2025-03-19) ##### Chores From 46ed56cf96bd979b6b5b45831136514a03e279f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Fri, 11 Apr 2025 19:51:18 -0400 Subject: [PATCH 3/8] refactor: use sortedSetsCard --- src/user/follow.js | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/user/follow.js b/src/user/follow.js index c89f90b979..9a497e6488 100644 --- a/src/user/follow.js +++ b/src/user/follow.js @@ -58,11 +58,8 @@ module.exports = function (User) { ]); } - const [followingCount, followingRemoteCount, followerCount, followerRemoteCount] = await Promise.all([ - db.sortedSetCard(`following:${uid}`), - db.sortedSetCard(`followingRemote:${uid}`), - db.sortedSetCard(`followers:${theiruid}`), - db.sortedSetCard(`followersRemote:${theiruid}`), + const [followingCount, followingRemoteCount, followerCount, followerRemoteCount] = await db.sortedSetsCard([ + `following:${uid}`, `followingRemote:${uid}`, `followers:${theiruid}`, `followersRemote:${theiruid}` ]); await Promise.all([ User.setUserField(uid, 'followingCount', followingCount + followingRemoteCount), From d59a5728dfc977f44533186ace531248c2917516 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Fri, 11 Apr 2025 19:58:48 -0400 Subject: [PATCH 4/8] lint: fix missing comma --- src/user/follow.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/user/follow.js b/src/user/follow.js index 9a497e6488..0595e50ff8 100644 --- a/src/user/follow.js +++ b/src/user/follow.js @@ -59,7 +59,7 @@ module.exports = function (User) { } const [followingCount, followingRemoteCount, followerCount, followerRemoteCount] = await db.sortedSetsCard([ - `following:${uid}`, `followingRemote:${uid}`, `followers:${theiruid}`, `followersRemote:${theiruid}` + `following:${uid}`, `followingRemote:${uid}`, `followers:${theiruid}`, `followersRemote:${theiruid}`, ]); await Promise.all([ User.setUserField(uid, 'followingCount', followingCount + followingRemoteCount), From 2a98a9b33428cb94aa101409c2a24dab1ed661b7 Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Mon, 14 Apr 2025 13:35:22 -0400 Subject: [PATCH 5/8] fix: bug where generateHandle would throw when passed in an invalid slug --- src/categories/create.js | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/categories/create.js b/src/categories/create.js index f2e8f8811d..f12b2f071b 100644 --- a/src/categories/create.js +++ b/src/categories/create.js @@ -151,7 +151,15 @@ module.exports = function (Categories) { } async function generateHandle(slug) { - let taken = await meta.slugTaken(slug); + let taken; + try { + taken = await meta.slugTaken(slug); + } catch (e) { + // invalid slug passed in + slug = 'category'; + taken = true + } + let suffix; while (taken) { suffix = utils.generateUUID().slice(0, 8); From 4f13eb0338aaa397e6b12328e323d00e0d7b1a34 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Wed, 16 Apr 2025 10:23:25 -0400 Subject: [PATCH 6/8] fix: closes #13336, allow main post deletion from "delete posts" tool --- public/src/client/topic/delete-posts.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/public/src/client/topic/delete-posts.js b/public/src/client/topic/delete-posts.js index 58b4058f09..8e01a839e0 100644 --- a/public/src/client/topic/delete-posts.js +++ b/public/src/client/topic/delete-posts.js @@ -31,6 +31,8 @@ define('forum/topic/delete-posts', [ postSelect.init(function () { checkButtonEnable(); showPostsSelected(); + }, { + allowMainPostSelect: true, }); showPostsSelected(); From 6832541c020ce7742019606c105e7218388d3e4b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Wed, 16 Apr 2025 10:31:28 -0400 Subject: [PATCH 7/8] lint: fix semi --- src/categories/create.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/categories/create.js b/src/categories/create.js index f12b2f071b..d9d59dac59 100644 --- a/src/categories/create.js +++ b/src/categories/create.js @@ -157,7 +157,7 @@ module.exports = function (Categories) { } catch (e) { // invalid slug passed in slug = 'category'; - taken = true + taken = true; } let suffix; From 42a5a127b6a55483c800a7f459b12fc62c63c6a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Tue, 22 Apr 2025 11:46:03 -0400 Subject: [PATCH 8/8] fix: escape displayname in topic events --- src/topics/events.js | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/topics/events.js b/src/topics/events.js index 10ab9b8936..0748318c37 100644 --- a/src/topics/events.js +++ b/src/topics/events.js @@ -1,5 +1,6 @@ 'use strict'; +const validator = require('validator'); const _ = require('lodash'); const nconf = require('nconf'); const db = require('../database'); @@ -107,7 +108,13 @@ function renderUser(event) { if (!event.user || event.user.system) { return '[[global:system-user]]'; } - return `${helpers.buildAvatar(event.user, '16px', true)} ${event.user.displayname}`; + + const user = { + ...event.user, + displayname: validator.escape(String(event.user.displayname)), + }; + + return `${helpers.buildAvatar(user, '16px', true)} ${user.displayname}`; } function renderTimeago(event) {