From cbabaa7d91177432ec29289818ab88515d1a266d Mon Sep 17 00:00:00 2001 From: mattreim <80219712+mattreim@users.noreply.github.com> Date: Mon, 10 Nov 2025 23:13:49 +0100 Subject: [PATCH 01/10] Update German translation --- interface/src/i18n/de/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/src/i18n/de/index.ts b/interface/src/i18n/de/index.ts index 694082bed..16cb3b801 100644 --- a/interface/src/i18n/de/index.ts +++ b/interface/src/i18n/de/index.ts @@ -40,7 +40,7 @@ const de: Translation = { RUN_COMMAND: 'Befehl ausführen', CHANGE_VALUE: 'Wert ändern', CANCEL: 'Abbrechen', - REMOVE_ALL: 'Entfernen alles', + REMOVE_ALL: 'Alles entfernen', APPLY_CHANGES: 'Änderungen anwenden ({0})', UPDATE: 'Aktualisieren', EXECUTE: 'Ausführen', From fc0f29337b493f2eedf45355a4de01f1d8ae3673 Mon Sep 17 00:00:00 2001 From: proddy Date: Tue, 11 Nov 2025 21:41:03 +0100 Subject: [PATCH 02/10] Syslog: allow longer intervals than 10 sec for "Mark interval" #2733 --- interface/src/app/main/validators.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/src/app/main/validators.ts b/interface/src/app/main/validators.ts index 171e94bed..58e540783 100644 --- a/interface/src/app/main/validators.ts +++ b/interface/src/app/main/validators.ts @@ -28,7 +28,7 @@ const VALIDATION_LIMITS = { MODBUS_TIMEOUT_MIN: 100, MODBUS_TIMEOUT_MAX: 20000, SYSLOG_MARK_INTERVAL_MIN: 0, - SYSLOG_MARK_INTERVAL_MAX: 10, + SYSLOG_MARK_INTERVAL_MAX: 60, SHOWER_MIN_DURATION_MIN: 10, SHOWER_MIN_DURATION_MAX: 360, SHOWER_ALERT_TRIGGER_MIN: 1, From 21b89cf84dfff5433068e3038bae96d542fd5e29 Mon Sep 17 00:00:00 2001 From: proddy Date: Tue, 11 Nov 2025 21:41:18 +0100 Subject: [PATCH 03/10] default test data is all --- mock-api/restServer.ts | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/mock-api/restServer.ts b/mock-api/restServer.ts index d87bb794c..eb8f18acb 100644 --- a/mock-api/restServer.ts +++ b/mock-api/restServer.ts @@ -276,10 +276,10 @@ function updateMask(entity: any, de: any, dd: any) { const old_custom_name = dd.nodes[dd_objIndex].cn; console.log( 'comparing names, old (' + - old_custom_name + - ') with new (' + - new_custom_name + - ')' + old_custom_name + + ') with new (' + + new_custom_name + + ')' ); if (old_custom_name !== new_custom_name) { changed = true; @@ -375,15 +375,15 @@ function check_upgrade(version: string) { console.log( 'Upgrade this version (' + - THIS_VERSION + - ') to dev (' + - dev_version + - ') is ' + - (DEV_VERSION_IS_UPGRADEABLE ? 'YES' : 'NO') + - ' and to stable (' + - stable_version + - ') is ' + - (STABLE_VERSION_IS_UPGRADEABLE ? 'YES' : 'NO') + THIS_VERSION + + ') to dev (' + + dev_version + + ') is ' + + (DEV_VERSION_IS_UPGRADEABLE ? 'YES' : 'NO') + + ' and to stable (' + + stable_version + + ') is ' + + (STABLE_VERSION_IS_UPGRADEABLE ? 'YES' : 'NO') ); data = { emsesp_version: THIS_VERSION, @@ -4559,8 +4559,8 @@ router let dashboard_object: { id?: number; n?: string; t?: number; nodes?: any[] } = {}; - // let fake = false; - let fake = true; // toggle for testing, shows a subset of data + let fake = false; + // let fake = true; // toggle for testing, shows a subset of data if (!fake) { // pick EMS devices from coredata From db8ed34dc4637c626d7325b6eb650aa1936ea673 Mon Sep 17 00:00:00 2001 From: proddy Date: Tue, 11 Nov 2025 21:43:05 +0100 Subject: [PATCH 04/10] update dictionary --- project-words.txt | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/project-words.txt b/project-words.txt index f5d4b01b6..b9eb064f1 100644 --- a/project-words.txt +++ b/project-words.txt @@ -1436,4 +1436,10 @@ washingmachine switchprogram brotlin fanspd -currhum \ No newline at end of file +currhum +pumpstep +constmed +constlow +proplow +chimneysweeper + \ No newline at end of file From a3703514b1eaf8f3a4738f2e587c8874929bbfb3 Mon Sep 17 00:00:00 2001 From: proddy Date: Tue, 11 Nov 2025 21:43:11 +0100 Subject: [PATCH 05/10] package update --- interface/package.json | 2 +- interface/pnpm-lock.yaml | 134 +++++++++++++++++++-------------------- 2 files changed, 68 insertions(+), 68 deletions(-) diff --git a/interface/package.json b/interface/package.json index da77149e5..c4a488e7f 100644 --- a/interface/package.json +++ b/interface/package.json @@ -53,7 +53,7 @@ "@preact/preset-vite": "^2.10.2", "@trivago/prettier-plugin-sort-imports": "^6.0.0", "@types/node": "^24.10.0", - "@types/react": "^19.2.2", + "@types/react": "^19.2.3", "@types/react-dom": "^19.2.2", "axe-core": "^4.11.0", "concurrently": "^9.2.1", diff --git a/interface/pnpm-lock.yaml b/interface/pnpm-lock.yaml index 803af3555..09978f089 100644 --- a/interface/pnpm-lock.yaml +++ b/interface/pnpm-lock.yaml @@ -13,22 +13,22 @@ importers: version: 2.2.1(alova@3.3.4) '@emotion/react': specifier: ^11.14.0 - version: 11.14.0(@types/react@19.2.2)(react@19.2.0) + version: 11.14.0(@types/react@19.2.3)(react@19.2.0) '@emotion/styled': specifier: ^11.14.1 - version: 11.14.1(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react@19.2.0) + version: 11.14.1(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.0))(@types/react@19.2.3)(react@19.2.0) '@mui/icons-material': specifier: ^7.3.5 - version: 7.3.5(@mui/material@7.3.5(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(@types/react@19.2.2)(react@19.2.0) + version: 7.3.5(@mui/material@7.3.5(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.0))(@types/react@19.2.3)(react@19.2.0))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(@types/react@19.2.3)(react@19.2.0) '@mui/material': specifier: ^7.3.5 - version: 7.3.5(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + version: 7.3.5(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.0))(@types/react@19.2.3)(react@19.2.0))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) '@preact/compat': specifier: ^18.3.1 version: 18.3.1(preact@10.27.2) '@table-library/react-table-library': specifier: 4.1.15 - version: 4.1.15(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + version: 4.1.15(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react@19.2.0) alova: specifier: 3.3.4 version: 3.3.4 @@ -91,11 +91,11 @@ importers: specifier: ^24.10.0 version: 24.10.0 '@types/react': - specifier: ^19.2.2 - version: 19.2.2 + specifier: ^19.2.3 + version: 19.2.3 '@types/react-dom': specifier: ^19.2.2 - version: 19.2.2(@types/react@19.2.2) + version: 19.2.2(@types/react@19.2.3) axe-core: specifier: ^4.11.0 version: 4.11.0 @@ -879,8 +879,8 @@ packages: peerDependencies: '@types/react': '*' - '@types/react@19.2.2': - resolution: {integrity: sha512-6mDvHUFSjyT2B2yeNx2nUgMxh9LtOWvkhIU3uePn2I2oyNymUAX1NIsdgviM4CH+JSrp2D2hsMvJOkxY+0wNRA==} + '@types/react@19.2.3': + resolution: {integrity: sha512-k5dJVszUiNr1DSe8Cs+knKR6IrqhqdhpUwzqhkS8ecQTSf3THNtbfIp/umqHMpX2bv+9dkx3fwDv/86LcSfvSg==} '@types/responselike@1.0.3': resolution: {integrity: sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==} @@ -1027,8 +1027,8 @@ packages: base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - baseline-browser-mapping@2.8.25: - resolution: {integrity: sha512-2NovHVesVF5TXefsGX1yzx1xgr7+m9JQenvz6FQY3qd+YXkKkYiv+vTCc7OriP9mcDZpTC5mAOYN4ocd29+erA==} + baseline-browser-mapping@2.8.26: + resolution: {integrity: sha512-73lC1ugzwoaWCLJ1LvOgrR5xsMLTqSKIEoMHVtL9E/HNk0PXtTM76ZIm84856/SF7Nv8mPZxKoBsgpm0tR1u1Q==} hasBin: true bin-build@3.0.0: @@ -1067,8 +1067,8 @@ packages: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} - browserslist@4.27.0: - resolution: {integrity: sha512-AXVQwdhot1eqLihwasPElhX2tAZiBjWdJ9i/Zcj2S6QYIjkx62OKSfnobkriB81C3l4w0rVy3Nt4jaTBltYEpw==} + browserslist@4.28.0: + resolution: {integrity: sha512-tbydkR/CxfMwelN0vwdP/pLkDwyAASZ+VfWm4EOwlB6SWhx1sYnWLqo8N5j0rAzPfzfRaxt0mM/4wPU/Su84RQ==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true @@ -1337,8 +1337,8 @@ packages: duplexer3@0.1.5: resolution: {integrity: sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==} - electron-to-chromium@1.5.249: - resolution: {integrity: sha512-5vcfL3BBe++qZ5kuFhD/p8WOM1N9m3nwvJPULJx+4xf2usSlZFJ0qoNYO2fOX4hi3ocuDcmDobtA+5SFr4OmBg==} + electron-to-chromium@1.5.250: + resolution: {integrity: sha512-/5UMj9IiGDMOFBnN4i7/Ry5onJrAGSbOGo3s9FEKmwobGq6xw832ccET0CE3CkkMBZ8GJSlUIesZofpyurqDXw==} emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -3149,7 +3149,7 @@ snapshots: dependencies: '@babel/compat-data': 7.28.5 '@babel/helper-validator-option': 7.27.1 - browserslist: 4.27.0 + browserslist: 4.28.0 lru-cache: 5.1.1 semver: 6.3.1 @@ -3268,7 +3268,7 @@ snapshots: '@emotion/memoize@0.9.0': {} - '@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0)': + '@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.0)': dependencies: '@babel/runtime': 7.28.4 '@emotion/babel-plugin': 11.13.5 @@ -3280,7 +3280,7 @@ snapshots: hoist-non-react-statics: 3.3.2 react: 19.2.0 optionalDependencies: - '@types/react': 19.2.2 + '@types/react': 19.2.3 transitivePeerDependencies: - supports-color @@ -3294,18 +3294,18 @@ snapshots: '@emotion/sheet@1.4.0': {} - '@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react@19.2.0)': + '@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.0))(@types/react@19.2.3)(react@19.2.0)': dependencies: '@babel/runtime': 7.28.4 '@emotion/babel-plugin': 11.13.5 '@emotion/is-prop-valid': 1.4.0 - '@emotion/react': 11.14.0(@types/react@19.2.2)(react@19.2.0) + '@emotion/react': 11.14.0(@types/react@19.2.3)(react@19.2.0) '@emotion/serialize': 1.3.3 '@emotion/use-insertion-effect-with-fallbacks': 1.2.0(react@19.2.0) '@emotion/utils': 1.4.2 react: 19.2.0 optionalDependencies: - '@types/react': 19.2.2 + '@types/react': 19.2.3 transitivePeerDependencies: - supports-color @@ -3489,23 +3489,23 @@ snapshots: '@mui/core-downloads-tracker@7.3.5': {} - '@mui/icons-material@7.3.5(@mui/material@7.3.5(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(@types/react@19.2.2)(react@19.2.0)': + '@mui/icons-material@7.3.5(@mui/material@7.3.5(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.0))(@types/react@19.2.3)(react@19.2.0))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(@types/react@19.2.3)(react@19.2.0)': dependencies: '@babel/runtime': 7.28.4 - '@mui/material': 7.3.5(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@mui/material': 7.3.5(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.0))(@types/react@19.2.3)(react@19.2.0))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) react: 19.2.0 optionalDependencies: - '@types/react': 19.2.2 + '@types/react': 19.2.3 - '@mui/material@7.3.5(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@mui/material@7.3.5(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.0))(@types/react@19.2.3)(react@19.2.0))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': dependencies: '@babel/runtime': 7.28.4 '@mui/core-downloads-tracker': 7.3.5 - '@mui/system': 7.3.5(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react@19.2.0) - '@mui/types': 7.4.8(@types/react@19.2.2) - '@mui/utils': 7.3.5(@types/react@19.2.2)(react@19.2.0) + '@mui/system': 7.3.5(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.0))(@types/react@19.2.3)(react@19.2.0))(@types/react@19.2.3)(react@19.2.0) + '@mui/types': 7.4.8(@types/react@19.2.3) + '@mui/utils': 7.3.5(@types/react@19.2.3)(react@19.2.0) '@popperjs/core': 2.11.8 - '@types/react-transition-group': 4.4.12(@types/react@19.2.2) + '@types/react-transition-group': 4.4.12(@types/react@19.2.3) clsx: 2.1.1 csstype: 3.1.3 prop-types: 15.8.1 @@ -3514,20 +3514,20 @@ snapshots: react-is: 19.2.0 react-transition-group: 4.4.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0) optionalDependencies: - '@emotion/react': 11.14.0(@types/react@19.2.2)(react@19.2.0) - '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react@19.2.0) - '@types/react': 19.2.2 + '@emotion/react': 11.14.0(@types/react@19.2.3)(react@19.2.0) + '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.0))(@types/react@19.2.3)(react@19.2.0) + '@types/react': 19.2.3 - '@mui/private-theming@7.3.5(@types/react@19.2.2)(react@19.2.0)': + '@mui/private-theming@7.3.5(@types/react@19.2.3)(react@19.2.0)': dependencies: '@babel/runtime': 7.28.4 - '@mui/utils': 7.3.5(@types/react@19.2.2)(react@19.2.0) + '@mui/utils': 7.3.5(@types/react@19.2.3)(react@19.2.0) prop-types: 15.8.1 react: 19.2.0 optionalDependencies: - '@types/react': 19.2.2 + '@types/react': 19.2.3 - '@mui/styled-engine@7.3.5(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react@19.2.0))(react@19.2.0)': + '@mui/styled-engine@7.3.5(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.0))(@types/react@19.2.3)(react@19.2.0))(react@19.2.0)': dependencies: '@babel/runtime': 7.28.4 '@emotion/cache': 11.14.0 @@ -3537,42 +3537,42 @@ snapshots: prop-types: 15.8.1 react: 19.2.0 optionalDependencies: - '@emotion/react': 11.14.0(@types/react@19.2.2)(react@19.2.0) - '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react@19.2.0) + '@emotion/react': 11.14.0(@types/react@19.2.3)(react@19.2.0) + '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.0))(@types/react@19.2.3)(react@19.2.0) - '@mui/system@7.3.5(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react@19.2.0)': + '@mui/system@7.3.5(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.0))(@types/react@19.2.3)(react@19.2.0))(@types/react@19.2.3)(react@19.2.0)': dependencies: '@babel/runtime': 7.28.4 - '@mui/private-theming': 7.3.5(@types/react@19.2.2)(react@19.2.0) - '@mui/styled-engine': 7.3.5(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react@19.2.0))(react@19.2.0) - '@mui/types': 7.4.8(@types/react@19.2.2) - '@mui/utils': 7.3.5(@types/react@19.2.2)(react@19.2.0) + '@mui/private-theming': 7.3.5(@types/react@19.2.3)(react@19.2.0) + '@mui/styled-engine': 7.3.5(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.0))(@types/react@19.2.3)(react@19.2.0))(react@19.2.0) + '@mui/types': 7.4.8(@types/react@19.2.3) + '@mui/utils': 7.3.5(@types/react@19.2.3)(react@19.2.0) clsx: 2.1.1 csstype: 3.1.3 prop-types: 15.8.1 react: 19.2.0 optionalDependencies: - '@emotion/react': 11.14.0(@types/react@19.2.2)(react@19.2.0) - '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react@19.2.0) - '@types/react': 19.2.2 + '@emotion/react': 11.14.0(@types/react@19.2.3)(react@19.2.0) + '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.0))(@types/react@19.2.3)(react@19.2.0) + '@types/react': 19.2.3 - '@mui/types@7.4.8(@types/react@19.2.2)': + '@mui/types@7.4.8(@types/react@19.2.3)': dependencies: '@babel/runtime': 7.28.4 optionalDependencies: - '@types/react': 19.2.2 + '@types/react': 19.2.3 - '@mui/utils@7.3.5(@types/react@19.2.2)(react@19.2.0)': + '@mui/utils@7.3.5(@types/react@19.2.3)(react@19.2.0)': dependencies: '@babel/runtime': 7.28.4 - '@mui/types': 7.4.8(@types/react@19.2.2) + '@mui/types': 7.4.8(@types/react@19.2.3) '@types/prop-types': 15.7.15 clsx: 2.1.1 prop-types: 15.8.1 react: 19.2.0 react-is: 19.2.0 optionalDependencies: - '@types/react': 19.2.2 + '@types/react': 19.2.3 '@noble/hashes@1.8.0': {} @@ -3707,9 +3707,9 @@ snapshots: '@sindresorhus/is@0.7.0': {} - '@table-library/react-table-library@4.1.15(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@table-library/react-table-library@4.1.15(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': dependencies: - '@emotion/react': 11.14.0(@types/react@19.2.2)(react@19.2.0) + '@emotion/react': 11.14.0(@types/react@19.2.3)(react@19.2.0) clsx: 1.1.1 react: 19.2.0 react-dom: 19.2.0(react@19.2.0) @@ -3786,15 +3786,15 @@ snapshots: '@types/prop-types@15.7.15': {} - '@types/react-dom@19.2.2(@types/react@19.2.2)': + '@types/react-dom@19.2.2(@types/react@19.2.3)': dependencies: - '@types/react': 19.2.2 + '@types/react': 19.2.3 - '@types/react-transition-group@4.4.12(@types/react@19.2.2)': + '@types/react-transition-group@4.4.12(@types/react@19.2.3)': dependencies: - '@types/react': 19.2.2 + '@types/react': 19.2.3 - '@types/react@19.2.2': + '@types/react@19.2.3': dependencies: csstype: 3.1.3 @@ -3963,7 +3963,7 @@ snapshots: base64-js@1.5.1: {} - baseline-browser-mapping@2.8.25: {} + baseline-browser-mapping@2.8.26: {} bin-build@3.0.0: dependencies: @@ -4018,13 +4018,13 @@ snapshots: dependencies: fill-range: 7.1.1 - browserslist@4.27.0: + browserslist@4.28.0: dependencies: - baseline-browser-mapping: 2.8.25 + baseline-browser-mapping: 2.8.26 caniuse-lite: 1.0.30001754 - electron-to-chromium: 1.5.249 + electron-to-chromium: 1.5.250 node-releases: 2.0.27 - update-browserslist-db: 1.1.4(browserslist@4.27.0) + update-browserslist-db: 1.1.4(browserslist@4.28.0) buffer-alloc-unsafe@1.1.0: {} @@ -4367,7 +4367,7 @@ snapshots: duplexer3@0.1.5: {} - electron-to-chromium@1.5.249: {} + electron-to-chromium@1.5.250: {} emoji-regex@8.0.0: {} @@ -5941,9 +5941,9 @@ snapshots: universalify@2.0.1: {} - update-browserslist-db@1.1.4(browserslist@4.27.0): + update-browserslist-db@1.1.4(browserslist@4.28.0): dependencies: - browserslist: 4.27.0 + browserslist: 4.28.0 escalade: 3.2.0 picocolors: 1.1.1 From 8db7e4a5b991b905e76e76071ea820fdf585e715 Mon Sep 17 00:00:00 2001 From: proddy Date: Tue, 11 Nov 2025 22:07:42 +0100 Subject: [PATCH 06/10] updated --- CHANGELOG_LATEST.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG_LATEST.md b/CHANGELOG_LATEST.md index 7d9dcf4f7..7628b11f0 100644 --- a/CHANGELOG_LATEST.md +++ b/CHANGELOG_LATEST.md @@ -22,7 +22,7 @@ For more details go to [docs.emsesp.org](https://docs.emsesp.org/). - Internal sensors of E32V2_2 - FW200 display options [#2610](https://github.com/emsesp/EMS-ESP32/discussions/2610) - CR11 mode settings OFF/MANUAL depends on selTemp [#2437](https://github.com/emsesp/EMS-ESP32/issues/2437) -- Fuse settings for BBQKees boards +- implemented eFuse settings for BBQKees boards to store model type and ESP chipset - Analogsensors for pulse output [#2624](https://github.com/emsesp/EMS-ESP32/discussions/2624) - Analogsensors frequency input [#2631](https://github.com/emsesp/EMS-ESP32/discussions/2631) - SRC plus thermostats [#2636](https://github.com/emsesp/EMS-ESP32/issues/2636) @@ -63,3 +63,4 @@ For more details go to [docs.emsesp.org](https://docs.emsesp.org/). - internal system analog sensors (core_voltage, supply_voltage and gateway_temperature) cannot be accidentally removed - double click button reconnects EMS-ESP to AP - place system message command in side scheduler loop to reduce stack memory usage by 2KB +- syslog mark interval set to 60 seconds From 237cf91f5a42d8d8189ae239a4e0711d82dac193 Mon Sep 17 00:00:00 2001 From: proddy Date: Wed, 12 Nov 2025 09:59:38 +0100 Subject: [PATCH 07/10] package update --- interface/package.json | 4 +-- interface/pnpm-lock.yaml | 66 ++++++++++++++++++++-------------------- 2 files changed, 35 insertions(+), 35 deletions(-) diff --git a/interface/package.json b/interface/package.json index c4a488e7f..3c4843dde 100644 --- a/interface/package.json +++ b/interface/package.json @@ -52,9 +52,9 @@ "@preact/compat": "^18.3.1", "@preact/preset-vite": "^2.10.2", "@trivago/prettier-plugin-sort-imports": "^6.0.0", - "@types/node": "^24.10.0", + "@types/node": "^24.10.1", "@types/react": "^19.2.3", - "@types/react-dom": "^19.2.2", + "@types/react-dom": "^19.2.3", "axe-core": "^4.11.0", "concurrently": "^9.2.1", "eslint": "^9.39.1", diff --git a/interface/pnpm-lock.yaml b/interface/pnpm-lock.yaml index 09978f089..a442f752c 100644 --- a/interface/pnpm-lock.yaml +++ b/interface/pnpm-lock.yaml @@ -83,19 +83,19 @@ importers: version: 9.39.1 '@preact/preset-vite': specifier: ^2.10.2 - version: 2.10.2(@babel/core@7.28.5)(preact@10.27.2)(vite@7.2.2(@types/node@24.10.0)(terser@5.44.1)) + version: 2.10.2(@babel/core@7.28.5)(preact@10.27.2)(vite@7.2.2(@types/node@24.10.1)(terser@5.44.1)) '@trivago/prettier-plugin-sort-imports': specifier: ^6.0.0 version: 6.0.0(prettier@3.6.2) '@types/node': - specifier: ^24.10.0 - version: 24.10.0 + specifier: ^24.10.1 + version: 24.10.1 '@types/react': specifier: ^19.2.3 version: 19.2.3 '@types/react-dom': - specifier: ^19.2.2 - version: 19.2.2(@types/react@19.2.3) + specifier: ^19.2.3 + version: 19.2.3(@types/react@19.2.3) axe-core: specifier: ^4.11.0 version: 4.11.0 @@ -122,13 +122,13 @@ importers: version: 8.46.4(eslint@9.39.1)(typescript@5.9.3) vite: specifier: ^7.2.2 - version: 7.2.2(@types/node@24.10.0)(terser@5.44.1) + version: 7.2.2(@types/node@24.10.1)(terser@5.44.1) vite-plugin-imagemin: specifier: ^0.6.1 - version: 0.6.1(vite@7.2.2(@types/node@24.10.0)(terser@5.44.1)) + version: 0.6.1(vite@7.2.2(@types/node@24.10.1)(terser@5.44.1)) vite-tsconfig-paths: specifier: ^5.1.4 - version: 5.1.4(typescript@5.9.3)(vite@7.2.2(@types/node@24.10.0)(terser@5.44.1)) + version: 5.1.4(typescript@5.9.3)(vite@7.2.2(@types/node@24.10.1)(terser@5.44.1)) packages: @@ -860,8 +860,8 @@ packages: resolution: {integrity: sha512-zmPitbQ8+6zNutpwgcQuLcsEpn/Cj54Kbn7L5pX0Os5kdWplB7xPgEh/g+SWOB/qmows2gpuCaPyduq8ZZRnxA==} deprecated: This is a stub types definition. minimatch provides its own type definitions, so you do not need this installed. - '@types/node@24.10.0': - resolution: {integrity: sha512-qzQZRBqkFsYyaSWXuEHc2WR9c0a0CXwiE5FWUvn7ZM+vdy1uZLfCunD38UzhuB7YN/J11ndbDBcTmOdxJo9Q7A==} + '@types/node@24.10.1': + resolution: {integrity: sha512-GNWcUTRBgIRJD5zj+Tq0fKOJ5XZajIiBroOF0yvj2bSU1WvNdYS/dn9UxwsujGW4JX06dnHyjV2y9rRaybH0iQ==} '@types/parse-json@4.0.2': resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} @@ -869,8 +869,8 @@ packages: '@types/prop-types@15.7.15': resolution: {integrity: sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==} - '@types/react-dom@19.2.2': - resolution: {integrity: sha512-9KQPoO6mZCi7jcIStSnlOWn2nEF3mNmyr3rIAsGnAbQKYbRLyqmeSc39EVgtxXVia+LMT8j3knZLAZAh+xLmrw==} + '@types/react-dom@19.2.3': + resolution: {integrity: sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==} peerDependencies: '@types/react': ^19.2.0 @@ -3598,18 +3598,18 @@ snapshots: dependencies: preact: 10.27.2 - '@preact/preset-vite@2.10.2(@babel/core@7.28.5)(preact@10.27.2)(vite@7.2.2(@types/node@24.10.0)(terser@5.44.1))': + '@preact/preset-vite@2.10.2(@babel/core@7.28.5)(preact@10.27.2)(vite@7.2.2(@types/node@24.10.1)(terser@5.44.1))': dependencies: '@babel/core': 7.28.5 '@babel/plugin-transform-react-jsx': 7.27.1(@babel/core@7.28.5) '@babel/plugin-transform-react-jsx-development': 7.27.1(@babel/core@7.28.5) - '@prefresh/vite': 2.4.11(preact@10.27.2)(vite@7.2.2(@types/node@24.10.0)(terser@5.44.1)) + '@prefresh/vite': 2.4.11(preact@10.27.2)(vite@7.2.2(@types/node@24.10.1)(terser@5.44.1)) '@rollup/pluginutils': 4.2.1 babel-plugin-transform-hook-names: 1.0.2(@babel/core@7.28.5) debug: 4.4.3 picocolors: 1.1.1 - vite: 7.2.2(@types/node@24.10.0)(terser@5.44.1) - vite-prerender-plugin: 0.5.12(vite@7.2.2(@types/node@24.10.0)(terser@5.44.1)) + vite: 7.2.2(@types/node@24.10.1)(terser@5.44.1) + vite-prerender-plugin: 0.5.12(vite@7.2.2(@types/node@24.10.1)(terser@5.44.1)) transitivePeerDependencies: - preact - supports-color @@ -3622,7 +3622,7 @@ snapshots: '@prefresh/utils@1.2.1': {} - '@prefresh/vite@2.4.11(preact@10.27.2)(vite@7.2.2(@types/node@24.10.0)(terser@5.44.1))': + '@prefresh/vite@2.4.11(preact@10.27.2)(vite@7.2.2(@types/node@24.10.1)(terser@5.44.1))': dependencies: '@babel/core': 7.28.5 '@prefresh/babel-plugin': 0.5.2 @@ -3630,7 +3630,7 @@ snapshots: '@prefresh/utils': 1.2.1 '@rollup/pluginutils': 4.2.1 preact: 10.27.2 - vite: 7.2.2(@types/node@24.10.0)(terser@5.44.1) + vite: 7.2.2(@types/node@24.10.1)(terser@5.44.1) transitivePeerDependencies: - supports-color @@ -3737,7 +3737,7 @@ snapshots: '@types/glob@7.2.0': dependencies: '@types/minimatch': 6.0.0 - '@types/node': 24.10.0 + '@types/node': 24.10.1 '@types/imagemin-gifsicle@7.0.4': dependencies: @@ -3766,19 +3766,19 @@ snapshots: '@types/imagemin@7.0.1': dependencies: - '@types/node': 24.10.0 + '@types/node': 24.10.1 '@types/json-schema@7.0.15': {} '@types/keyv@3.1.4': dependencies: - '@types/node': 24.10.0 + '@types/node': 24.10.1 '@types/minimatch@6.0.0': dependencies: minimatch: 10.1.1 - '@types/node@24.10.0': + '@types/node@24.10.1': dependencies: undici-types: 7.16.0 @@ -3786,7 +3786,7 @@ snapshots: '@types/prop-types@15.7.15': {} - '@types/react-dom@19.2.2(@types/react@19.2.3)': + '@types/react-dom@19.2.3(@types/react@19.2.3)': dependencies: '@types/react': 19.2.3 @@ -3800,11 +3800,11 @@ snapshots: '@types/responselike@1.0.3': dependencies: - '@types/node': 24.10.0 + '@types/node': 24.10.1 '@types/svgo@2.6.4': dependencies: - '@types/node': 24.10.0 + '@types/node': 24.10.1 '@typescript-eslint/eslint-plugin@8.46.4(@typescript-eslint/parser@8.46.4(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1)(typescript@5.9.3)': dependencies: @@ -5970,7 +5970,7 @@ snapshots: spdx-correct: 3.2.0 spdx-expression-parse: 3.0.1 - vite-plugin-imagemin@0.6.1(vite@7.2.2(@types/node@24.10.0)(terser@5.44.1)): + vite-plugin-imagemin@0.6.1(vite@7.2.2(@types/node@24.10.1)(terser@5.44.1)): dependencies: '@types/imagemin': 7.0.1 '@types/imagemin-gifsicle': 7.0.4 @@ -5995,11 +5995,11 @@ snapshots: imagemin-webp: 6.1.0 jpegtran-bin: 6.0.1 pathe: 0.2.0 - vite: 7.2.2(@types/node@24.10.0)(terser@5.44.1) + vite: 7.2.2(@types/node@24.10.1)(terser@5.44.1) transitivePeerDependencies: - supports-color - vite-prerender-plugin@0.5.12(vite@7.2.2(@types/node@24.10.0)(terser@5.44.1)): + vite-prerender-plugin@0.5.12(vite@7.2.2(@types/node@24.10.1)(terser@5.44.1)): dependencies: kolorist: 1.8.0 magic-string: 0.30.21 @@ -6007,20 +6007,20 @@ snapshots: simple-code-frame: 1.3.0 source-map: 0.7.6 stack-trace: 1.0.0-pre2 - vite: 7.2.2(@types/node@24.10.0)(terser@5.44.1) + vite: 7.2.2(@types/node@24.10.1)(terser@5.44.1) - vite-tsconfig-paths@5.1.4(typescript@5.9.3)(vite@7.2.2(@types/node@24.10.0)(terser@5.44.1)): + vite-tsconfig-paths@5.1.4(typescript@5.9.3)(vite@7.2.2(@types/node@24.10.1)(terser@5.44.1)): dependencies: debug: 4.4.3 globrex: 0.1.2 tsconfck: 3.1.6(typescript@5.9.3) optionalDependencies: - vite: 7.2.2(@types/node@24.10.0)(terser@5.44.1) + vite: 7.2.2(@types/node@24.10.1)(terser@5.44.1) transitivePeerDependencies: - supports-color - typescript - vite@7.2.2(@types/node@24.10.0)(terser@5.44.1): + vite@7.2.2(@types/node@24.10.1)(terser@5.44.1): dependencies: esbuild: 0.25.12 fdir: 6.5.0(picomatch@4.0.3) @@ -6029,7 +6029,7 @@ snapshots: rollup: 4.53.2 tinyglobby: 0.2.15 optionalDependencies: - '@types/node': 24.10.0 + '@types/node': 24.10.1 fsevents: 2.3.3 terser: 5.44.1 From 2ee433bb89b6fb646401979dd165ba2ccb1e3f40 Mon Sep 17 00:00:00 2001 From: proddy Date: Wed, 12 Nov 2025 09:59:50 +0100 Subject: [PATCH 08/10] ui small changes --- interface/src/app/main/Customizations.tsx | 32 ++++++------ interface/src/app/main/UserProfile.tsx | 64 +++++++++++++---------- interface/src/i18n/cz/index.ts | 3 +- interface/src/i18n/de/index.ts | 3 +- interface/src/i18n/en/index.ts | 3 +- interface/src/i18n/fr/index.ts | 3 +- interface/src/i18n/it/index.ts | 5 +- interface/src/i18n/nl/index.ts | 3 +- interface/src/i18n/no/index.ts | 3 +- interface/src/i18n/pl/index.ts | 3 +- interface/src/i18n/sk/index.ts | 3 +- interface/src/i18n/sv/index.ts | 3 +- interface/src/i18n/tr/index.ts | 3 +- 13 files changed, 77 insertions(+), 54 deletions(-) diff --git a/interface/src/app/main/Customizations.tsx b/interface/src/app/main/Customizations.tsx index 2b85bf26f..bc1743b5f 100644 --- a/interface/src/app/main/Customizations.tsx +++ b/interface/src/app/main/Customizations.tsx @@ -512,22 +512,24 @@ const Customizations = () => { ) : ( - + <> + + + ))} - ); diff --git a/interface/src/app/main/UserProfile.tsx b/interface/src/app/main/UserProfile.tsx index 73338975d..87d86146a 100644 --- a/interface/src/app/main/UserProfile.tsx +++ b/interface/src/app/main/UserProfile.tsx @@ -1,7 +1,16 @@ import { memo, useCallback, useContext } from 'react'; import PersonIcon from '@mui/icons-material/Person'; -import { Avatar, Box, Button, List, ListItem, ListItemText } from '@mui/material'; +import { + Avatar, + Box, + Button, + Divider, + List, + ListItem, + ListItemText, + Typography +} from '@mui/material'; import { AuthenticatedContext } from '@/contexts/authentication'; import { SectionContent, useLayoutTitle } from 'components'; @@ -12,7 +21,7 @@ const UserProfileComponent = () => { const { LL } = useI18nContext(); const { me, signOut } = useContext(AuthenticatedContext); - useLayoutTitle(LL.USER(1)); + useLayoutTitle(LL.USER_PROFILE()); const handleSignOut = useCallback(() => { signOut(true); @@ -20,32 +29,33 @@ const UserProfileComponent = () => { return ( - - - - - - - - - - - - - + + + + + + + + + + + {LL.LANGUAGE()}: + + + + ); }; diff --git a/interface/src/i18n/cz/index.ts b/interface/src/i18n/cz/index.ts index 0d608b341..61b156e6c 100644 --- a/interface/src/i18n/cz/index.ts +++ b/interface/src/i18n/cz/index.ts @@ -355,7 +355,8 @@ const cz: Translation = { INTERNET_CONNECTION_REQUIRED: 'Pro automatickou kontrolu a instalaci aktualizací je třeba internetové připojení', SWITCH_RELEASE_TYPE: 'Přepnout na {0} verzi', FIRMWARE_VERSION_INFO: 'Informace o verzi firmwaru', - NO_DATA: 'Žádná data' + NO_DATA: 'Žádná data', + USER_PROFILE: 'Uživatelský profil' }; export default cz; diff --git a/interface/src/i18n/de/index.ts b/interface/src/i18n/de/index.ts index 16cb3b801..cb481cb0e 100644 --- a/interface/src/i18n/de/index.ts +++ b/interface/src/i18n/de/index.ts @@ -355,7 +355,8 @@ const de: Translation = { INTERNET_CONNECTION_REQUIRED: 'Für die automatische Versionsprüfung und Aktualisierung ist eine Internetverbindung erforderlich', SWITCH_RELEASE_TYPE: 'Zum {0}-Release wechseln', FIRMWARE_VERSION_INFO: 'Firmware-Versionsinformation', - NO_DATA: 'Keine Daten' + NO_DATA: 'Keine Daten', + USER_PROFILE: 'Benutzerprofil' }; export default de; diff --git a/interface/src/i18n/en/index.ts b/interface/src/i18n/en/index.ts index bea5c14d6..81f07294d 100644 --- a/interface/src/i18n/en/index.ts +++ b/interface/src/i18n/en/index.ts @@ -355,7 +355,8 @@ const en: Translation = { INTERNET_CONNECTION_REQUIRED: 'Internet connection required for automatic version checking and upgrading', SWITCH_RELEASE_TYPE: 'Switch to {0} release', FIRMWARE_VERSION_INFO: 'Firmware Version Information', - NO_DATA: 'No data' + NO_DATA: 'No data', + USER_PROFILE: 'User Profile' }; export default en; diff --git a/interface/src/i18n/fr/index.ts b/interface/src/i18n/fr/index.ts index c748210e6..cda12b9f0 100644 --- a/interface/src/i18n/fr/index.ts +++ b/interface/src/i18n/fr/index.ts @@ -355,7 +355,8 @@ const fr: Translation = { INTERNET_CONNECTION_REQUIRED: 'Connexion Internet requise pour la vérification automatique des versions et la mise à niveau', SWITCH_RELEASE_TYPE: 'Passer à la version {0}', FIRMWARE_VERSION_INFO: 'Informations sur la version du firmware', - NO_DATA: 'Aucune donnée' + NO_DATA: 'Aucune donnée', + USER_PROFILE: 'Profil utilisateur' }; export default fr; diff --git a/interface/src/i18n/it/index.ts b/interface/src/i18n/it/index.ts index 3bf46414b..44cf4f9b6 100644 --- a/interface/src/i18n/it/index.ts +++ b/interface/src/i18n/it/index.ts @@ -47,7 +47,7 @@ const it: Translation = { REMOVE: 'Elimina', PROBLEM_UPDATING: 'Problema aggiornamento', PROBLEM_LOADING: 'Problema caricamento', - ANALOG_SENSOR: 'Sensore Analogico', + ANALOG_SENSOR: 'Sensore Analogico', ANALOG_SENSORS: 'Sensori Analogici', SETTINGS: 'Settings', UPDATED_OF: '{0} Aggiornati', @@ -355,7 +355,8 @@ const it: Translation = { INTERNET_CONNECTION_REQUIRED: 'Connessione internet richiesta per il controllo automatico delle versioni e l\'aggiornamento', SWITCH_RELEASE_TYPE: 'Cambia in {0} rilascio', FIRMWARE_VERSION_INFO: 'Informazioni sulla versione del firmware', - NO_DATA: 'Nessun dato' + NO_DATA: 'Nessun dato', + USER_PROFILE: 'Profilo utente' }; export default it; diff --git a/interface/src/i18n/nl/index.ts b/interface/src/i18n/nl/index.ts index c08c07556..affdddfe2 100644 --- a/interface/src/i18n/nl/index.ts +++ b/interface/src/i18n/nl/index.ts @@ -355,7 +355,8 @@ const nl: Translation = { INTERNET_CONNECTION_REQUIRED: 'Internetverbinding vereist voor automatische versiecontrole en -upgrade', SWITCH_RELEASE_TYPE: 'Switch naar {0} release', FIRMWARE_VERSION_INFO: 'Informatie over firmwareversie', - NO_DATA: 'Geen data' + NO_DATA: 'Geen data', + USER_PROFILE: 'Gebruikersprofiel' }; export default nl; \ No newline at end of file diff --git a/interface/src/i18n/no/index.ts b/interface/src/i18n/no/index.ts index 33de1411f..0c1e88133 100644 --- a/interface/src/i18n/no/index.ts +++ b/interface/src/i18n/no/index.ts @@ -355,7 +355,8 @@ const no: Translation = { INTERNET_CONNECTION_REQUIRED: 'Internettilkobling kreves for automatisk versjonskontroll og oppgradering', SWITCH_RELEASE_TYPE: 'Bytt til {0} utgivelse', FIRMWARE_VERSION_INFO: 'Informasjon om firmwareversjon', - NO_DATA: 'Ingen data' + NO_DATA: 'Ingen data', + USER_PROFILE: 'Brukerprofil' }; export default no; diff --git a/interface/src/i18n/pl/index.ts b/interface/src/i18n/pl/index.ts index 5eefe411f..bbc90b380 100644 --- a/interface/src/i18n/pl/index.ts +++ b/interface/src/i18n/pl/index.ts @@ -355,7 +355,8 @@ const pl: BaseTranslation = { INTERNET_CONNECTION_REQUIRED: 'Połączenie internetowe jest wymagane do automatycznej kontroli wersji i aktualizacji', SWITCH_RELEASE_TYPE: 'Zmień na {0} wydanie', FIRMWARE_VERSION_INFO: 'Informacje o wersji firmware', - NO_DATA: 'Brak danych' + NO_DATA: 'Brak danych', + USER_PROFILE: 'Profil użytkownika' }; export default pl; diff --git a/interface/src/i18n/sk/index.ts b/interface/src/i18n/sk/index.ts index 2177ddc8c..aa22a83cb 100644 --- a/interface/src/i18n/sk/index.ts +++ b/interface/src/i18n/sk/index.ts @@ -355,7 +355,8 @@ const sk: Translation = { INTERNET_CONNECTION_REQUIRED: 'Internetové pripojenie je potrebné pre automatickú kontrolu a aktualizáciu', SWITCH_RELEASE_TYPE: 'Prepnúť na {0} verziu', FIRMWARE_VERSION_INFO: 'Informácie o verzii firmware', - NO_DATA: 'Žiadne dáta' + NO_DATA: 'Žiadne dáta', + USER_PROFILE: 'Profil používateľa' }; export default sk; diff --git a/interface/src/i18n/sv/index.ts b/interface/src/i18n/sv/index.ts index 9730fe5e1..9a07450b8 100644 --- a/interface/src/i18n/sv/index.ts +++ b/interface/src/i18n/sv/index.ts @@ -355,7 +355,8 @@ const sv: Translation = { INTERNET_CONNECTION_REQUIRED: 'Internetanslutning krävs för automatisk version kontroll och uppdatering', SWITCH_RELEASE_TYPE: 'Byt till {0} utgåva', FIRMWARE_VERSION_INFO: 'Information om firmwareversion', - NO_DATA: 'Ingen data' + NO_DATA: 'Ingen data', + USER_PROFILE: 'Användarprofil' }; export default sv; diff --git a/interface/src/i18n/tr/index.ts b/interface/src/i18n/tr/index.ts index 9f6068a2c..e212ea274 100644 --- a/interface/src/i18n/tr/index.ts +++ b/interface/src/i18n/tr/index.ts @@ -355,7 +355,8 @@ const tr: Translation = { INTERNET_CONNECTION_REQUIRED: 'Otomatik sürüm kontrolü ve güncelleme için internet bağlantısı gereklidir', SWITCH_RELEASE_TYPE: '{0} sürümüne geç', FIRMWARE_VERSION_INFO: 'Firmware Sürüm Bilgisi', - NO_DATA: 'Hiçbir veri yok' + NO_DATA: 'Hiçbir veri yok', + USER_PROFILE: 'Kullanıcı Profili' }; export default tr; From 10d85c6547193322db5b486b0442aa0263ac49c7 Mon Sep 17 00:00:00 2001 From: proddy Date: Wed, 5 Nov 2025 09:00:27 +0100 Subject: [PATCH 09/10] formatting --- interface/src/app/status/Version.tsx | 1 - interface/src/components/index.ts | 2 +- mock-api/mockServer.js | 2 +- 3 files changed, 2 insertions(+), 3 deletions(-) diff --git a/interface/src/app/status/Version.tsx b/interface/src/app/status/Version.tsx index 34d2430da..85b4098ec 100644 --- a/interface/src/app/status/Version.tsx +++ b/interface/src/app/status/Version.tsx @@ -284,7 +284,6 @@ const Version = () => { const [downloadOnly, setDownloadOnly] = useState(false); const [showVersionInfo, setShowVersionInfo] = useState(0); - // API calls with optimized error handling const { send: sendCheckUpgrade } = useRequest( (versions: string) => callAction({ action: 'checkUpgrade', param: versions }), { immediate: false } diff --git a/interface/src/components/index.ts b/interface/src/components/index.ts index 74de4154b..ed2ffc878 100644 --- a/interface/src/components/index.ts +++ b/interface/src/components/index.ts @@ -1,4 +1,4 @@ -// Optimized exports - use direct exports to reduce bundle size +// use direct exports to reduce bundle size export { default as SectionContent } from './SectionContent'; export { default as ButtonRow } from './ButtonRow'; export { default as MessageBox } from './MessageBox'; diff --git a/mock-api/mockServer.js b/mock-api/mockServer.js index ef1e82845..2987ac012 100644 --- a/mock-api/mockServer.js +++ b/mock-api/mockServer.js @@ -7,7 +7,7 @@ const VALID_EXTENSIONS = new Set(['bin', 'json', 'md5']); const ONE_SECOND_MS = 1000; const TEN_PERCENT = 10; -// Optimized padding function +// padding function const pad = (number) => String(number).padStart(2, '0'); // Simple throttle helper (time-based) From cccae3fbcc721c7db14fab44c2d918b9a470f45f Mon Sep 17 00:00:00 2001 From: proddy Date: Wed, 12 Nov 2025 21:10:24 +0100 Subject: [PATCH 10/10] fixes #2728 --- interface/src/utils/binding.ts | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/interface/src/utils/binding.ts b/interface/src/utils/binding.ts index d5c0bb4a3..75cacaaa3 100644 --- a/interface/src/utils/binding.ts +++ b/interface/src/utils/binding.ts @@ -11,9 +11,29 @@ export const numberValue = (value?: number): string => export const extractEventValue = ( event: React.ChangeEvent ): string | number | boolean => { - const { type, valueAsNumber, checked, value } = event.target; + const { type, checked, value } = event.target; - if (type === 'number') return valueAsNumber; + if (type === 'number') { + if (value === '') return NaN; + + const normalizedValue = value.replace(',', '.'); + + // For incomplete number entries, keep the raw string to allow smooth typing + // This includes: "0.", "1.0", "0.00", "-", "-.", "-.5", etc. + const endsWithDecimalAndZeros = /\.\d*0$/.test(normalizedValue); + const isIncomplete = + normalizedValue.endsWith('.') || + normalizedValue === '-' || + normalizedValue === '-.' || + endsWithDecimalAndZeros; + + if (isIncomplete) { + return normalizedValue; + } + + const parsedValue = parseFloat(normalizedValue); + return parsedValue; + } if (type === 'checkbox') return checked; return value; };