mirror of
https://github.com/NodeBB/NodeBB.git
synced 2026-02-26 00:21:16 +01:00
Merge branch 'master' into develop
This commit is contained in:
209
CHANGELOG.md
209
CHANGELOG.md
@@ -1,3 +1,212 @@
|
||||
#### 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
|
||||
|
||||
* 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
|
||||
|
||||
@@ -122,8 +122,6 @@ get:
|
||||
type: array
|
||||
items:
|
||||
type: string
|
||||
resizeImageWidth:
|
||||
type: number
|
||||
cookies:
|
||||
type: object
|
||||
properties:
|
||||
|
||||
@@ -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, '\\\\'),
|
||||
|
||||
@@ -230,6 +230,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');
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
<div>
|
||||
<label class="form-label" for="agree-terms">[[register:terms-of-use]]</label>
|
||||
<label class="form-label">[[register:terms-of-use]]</label>
|
||||
<div class="tos">{termsOfUse}</div>
|
||||
<div class="form-check">
|
||||
<input class="form-check-input" type="checkbox" name="agree-terms" id="agree-terms">
|
||||
<label class="form-check-label">[[register:agree-to-terms-of-use]]</label>
|
||||
<label class="form-check-label" for="agree-terms">[[register:agree-to-terms-of-use]]</label>
|
||||
</div>
|
||||
</div>
|
||||
@@ -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,42 +62,41 @@ 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 });
|
||||
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);
|
||||
}
|
||||
if (!data) {
|
||||
return;
|
||||
}
|
||||
|
||||
return { html };
|
||||
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, config.userLang || meta.config.defaultLang || 'en-GB');
|
||||
}
|
||||
|
||||
return { html };
|
||||
} catch (err) {
|
||||
winston.error(err.stack);
|
||||
return { html: '' };
|
||||
}
|
||||
}
|
||||
|
||||
widgets.checkVisibility = async function (data, uid) {
|
||||
|
||||
Reference in New Issue
Block a user