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
diff --git a/interface/package.json b/interface/package.json
index da77149e5..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/react": "^19.2.2",
- "@types/react-dom": "^19.2.2",
+ "@types/node": "^24.10.1",
+ "@types/react": "^19.2.3",
+ "@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 803af3555..a442f752c 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
@@ -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.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)
+ 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
@@ -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': {}
@@ -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
@@ -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)
@@ -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,25 +3786,25 @@ snapshots:
'@types/prop-types@15.7.15': {}
- '@types/react-dom@19.2.2(@types/react@19.2.2)':
+ '@types/react-dom@19.2.3(@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
'@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:
@@ -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
@@ -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
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 = () => {
>
) : (
- }
- variant="outlined"
- onClick={() => setRename(true)}
- >
- {LL.RENAME()}
-
+ <>
+ }
+ variant="outlined"
+ onClick={() => setRename(true)}
+ >
+ {LL.RENAME()}
+
+ }
+ variant="outlined"
+ color="error"
+ onClick={() => setConfirmReset(true)}
+ >
+ {LL.REMOVE_ALL()}
+
+ >
))}
- }
- variant="outlined"
- color="error"
- onClick={() => setConfirmReset(true)}
- >
- {LL.REMOVE_ALL()}
-
>
);
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/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,
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/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;
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;
};
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)
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
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