diff --git a/CHANGELOG.md b/CHANGELOG.md index 06dd710f6..59b7ab966 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -39,6 +39,17 @@ Nodes - Add ability to use pfx or p12 file for TLS connection settings option (#4907) @dceejay +#### 4.1.7: Maintenance Release + + - Do not block touch events on ports (#5527) @knolleary + - Allow palette.categories to be set via theme plugin (#5526) @knolleary + - Bump i18next version (#5519) @knolleary + - Suppress i18n notice in frontend (#5528) @knolleary + - Set showSupportNotice option on i18n (#5520) @knolleary + - Do not cache subflow colors as each subflow can have its own (#5518) @knolleary + - Update tar/multer deps (#5515) @knolleary + - Remove IE7 CSS hacks (#5511) @bonanitech + #### 4.1.6: Maintenance Release - Allow palette.theme to be set via theme plugin and include icons (#5500) @knolleary diff --git a/package-lock.json b/package-lock.json index 41e1291d8..fb276aa27 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,6 +9,7 @@ "version": "5.0.0-beta.3", "license": "Apache-2.0", "dependencies": { + "@node-rs/bcrypt": "^1.10.7", "acorn": "8.16.0", "acorn-walk": "8.3.5", "ajv": "8.18.0", @@ -33,7 +34,7 @@ "hash-sum": "2.0.0", "hpagent": "1.2.0", "https-proxy-agent": "5.0.1", - "i18next": "24.2.3", + "i18next": "25.8.14", "iconv-lite": "0.6.3", "is-utf8": "0.2.1", "js-yaml": "4.1.1", @@ -107,7 +108,7 @@ "node": ">=18.5" }, "optionalDependencies": { - "@node-rs/bcrypt": "1.10.7" + "@node-rs/bcrypt": "^1.10.7" } }, "node_modules/@antfu/install-pkg": { @@ -5642,9 +5643,9 @@ "license": "MIT" }, "node_modules/i18next": { - "version": "24.2.3", - "resolved": "https://registry.npmjs.org/i18next/-/i18next-24.2.3.tgz", - "integrity": "sha512-lfbf80OzkocvX7nmZtu7nSTNbrTYR52sLWxPtlXX1zAhVw8WEnFk4puUkCR4B1dNQwbSpEHHHemcZu//7EcB7A==", + "version": "25.8.14", + "resolved": "https://registry.npmjs.org/i18next/-/i18next-25.8.14.tgz", + "integrity": "sha512-paMUYkfWJMsWPeE/Hejcw+XLhHrQPehem+4wMo+uELnvIwvCG019L9sAIljwjCmEMtFQQO3YeitJY8Kctei3iA==", "funding": [ { "type": "individual", @@ -5661,7 +5662,7 @@ ], "license": "MIT", "dependencies": { - "@babel/runtime": "^7.26.10" + "@babel/runtime": "^7.28.4" }, "peerDependencies": { "typescript": "^5" diff --git a/package.json b/package.json index 5e196fde8..27b031cd4 100644 --- a/package.json +++ b/package.json @@ -50,7 +50,7 @@ "hash-sum": "2.0.0", "hpagent": "1.2.0", "https-proxy-agent": "5.0.1", - "i18next": "24.2.3", + "i18next": "25.8.14", "iconv-lite": "0.6.3", "is-utf8": "0.2.1", "js-yaml": "4.1.1", diff --git a/packages/node_modules/@node-red/editor-api/lib/editor/theme.js b/packages/node_modules/@node-red/editor-api/lib/editor/theme.js index a20918775..be8cb356c 100644 --- a/packages/node_modules/@node-red/editor-api/lib/editor/theme.js +++ b/packages/node_modules/@node-red/editor-api/lib/editor/theme.js @@ -198,6 +198,10 @@ async function loadThemePlugin () { } }) } + if (Array.isArray(themePlugin.palette?.categories)) { + themeSettings.palette = themeSettings.palette || {}; + themeSettings.palette.categories = themePlugin.palette.categories; + } // These settings are not exposed under `editorTheme`, so we don't have a merge strategy for them // If they're defined in the theme plugin, they replace any settings.js values. diff --git a/packages/node_modules/@node-red/editor-client/src/js/i18n.js b/packages/node_modules/@node-red/editor-client/src/js/i18n.js index e5b479ea5..631be51ac 100644 --- a/packages/node_modules/@node-red/editor-client/src/js/i18n.js +++ b/packages/node_modules/@node-red/editor-client/src/js/i18n.js @@ -27,6 +27,7 @@ RED.i18n = (function() { apiRootUrl = options.apiRootUrl||""; var preferredLanguage = localStorage.getItem("editor-language") || detectLanguage(); var opts = { + showSupportNotice: false, backend: { loadPath: apiRootUrl+'locales/__ns__?lng=__lng__', }, diff --git a/packages/node_modules/@node-red/editor-client/src/js/ui/utils.js b/packages/node_modules/@node-red/editor-client/src/js/ui/utils.js index 436cd3221..a70b36136 100644 --- a/packages/node_modules/@node-red/editor-client/src/js/ui/utils.js +++ b/packages/node_modules/@node-red/editor-client/src/js/ui/utils.js @@ -1309,6 +1309,9 @@ RED.utils = (function() { function getNodeColor(type, def) { def = def || {}; + if (type === 'subflow') { + return def.color + } if (!nodeColorCache.hasOwnProperty(type)) { const paletteTheme = RED.settings.theme('palette.theme') || []; if (paletteTheme.length > 0) { diff --git a/packages/node_modules/@node-red/editor-client/src/js/ui/view.js b/packages/node_modules/@node-red/editor-client/src/js/ui/view.js index 63a93787d..cf2b64ddc 100644 --- a/packages/node_modules/@node-red/editor-client/src/js/ui/view.js +++ b/packages/node_modules/@node-red/editor-client/src/js/ui/view.js @@ -4035,7 +4035,8 @@ RED.view = (function() { clearSuggestedFlow(); RED.contextMenu.hide(); evt = evt || d3.event; - if (evt.button !== 0) { + + if (!evt.touches && evt.button !== 0) { return; } if (mouse_mode === RED.state.SELECTING_NODE) { @@ -4900,7 +4901,7 @@ RED.view = (function() { d3.event.stopPropagation(); return; } - if (d3.event.button !== 0) { + if (!d3.event.touches && d3.event.button !== 0) { return } mousedown_link = d; diff --git a/packages/node_modules/@node-red/editor-client/src/sass/forms.scss b/packages/node_modules/@node-red/editor-client/src/sass/forms.scss index 3fa8bcc65..04dc78e5b 100644 --- a/packages/node_modules/@node-red/editor-client/src/sass/forms.scss +++ b/packages/node_modules/@node-red/editor-client/src/sass/forms.scss @@ -38,7 +38,6 @@ button, div[contenteditable="true"], input { - *overflow: visible; line-height: normal; } @@ -452,7 +451,6 @@ .input-prepend .uneditable-input { position: relative; margin-bottom: 0; - *margin-left: 0; vertical-align: top; border-radius: 0 4px 4px 0; } @@ -612,10 +610,8 @@ .form-inline .input-append, .form-horizontal .input-append { display: inline-block; - *display: inline; margin-bottom: 0; vertical-align: middle; - *zoom: 1; } .form-search .hide, @@ -667,7 +663,6 @@ .form-horizontal .control-group { margin-bottom: 20px; - *zoom: 1; } .form-horizontal .control-group:before, @@ -689,14 +684,7 @@ } .form-horizontal .controls { - *display: inline-block; - *padding-left: 20px; margin-left: 180px; - *margin-left: 0; - } - - .form-horizontal .controls:first-child { - *padding-left: 180px; } .form-horizontal .help-block { diff --git a/packages/node_modules/@node-red/util/lib/i18n.js b/packages/node_modules/@node-red/util/lib/i18n.js index 7207d4990..2f68cea10 100644 --- a/packages/node_modules/@node-red/util/lib/i18n.js +++ b/packages/node_modules/@node-red/util/lib/i18n.js @@ -160,6 +160,7 @@ function init(settings) { initPromise = new Promise((resolve,reject) => { i18n.use(MessageFileLoader); var opt = { + showSupportNotice: false, // debug: true, defaultNS: "runtime", ns: [], diff --git a/packages/node_modules/@node-red/util/package.json b/packages/node_modules/@node-red/util/package.json index 238a88d31..5e0ac1a00 100644 --- a/packages/node_modules/@node-red/util/package.json +++ b/packages/node_modules/@node-red/util/package.json @@ -17,7 +17,7 @@ "dependencies": { "chalk": "^4.1.2", "fs-extra": "11.3.0", - "i18next": "24.2.3", + "i18next": "25.8.14", "json-stringify-safe": "5.0.1", "jsonata": "2.0.6", "lodash.clonedeep": "^4.5.0",