From a73b1295967355c33caf36da4a19cc28ccd5c0b0 Mon Sep 17 00:00:00 2001 From: proddy Date: Tue, 17 Mar 2026 21:44:17 +0100 Subject: [PATCH 01/10] update vite v8 --- interface/package.json | 7 +-- interface/pnpm-lock.yaml | 115 ++++++++++++++------------------------- 2 files changed, 45 insertions(+), 77 deletions(-) diff --git a/interface/package.json b/interface/package.json index c253f4eb1..84c45eef7 100644 --- a/interface/package.json +++ b/interface/package.json @@ -63,9 +63,8 @@ "rollup-plugin-visualizer": "^7.0.1", "terser": "^5.46.1", "typescript-eslint": "^8.57.1", - "vite": "^7.3.1", - "vite-plugin-imagemin": "^0.6.1", - "vite-tsconfig-paths": "^6.1.1" + "vite": "^8.0.0", + "vite-plugin-imagemin": "^0.6.1" }, - "packageManager": "pnpm@10.29.3+sha512.498e1fb4cca5aa06c1dcf2611e6fafc50972ffe7189998c409e90de74566444298ffe43e6cd2acdc775ba1aa7cc5e092a8b7054c811ba8c5770f84693d33d2dc" + "packageManager": "pnpm@10.32.1+sha512.a706938f0e89ac1456b6563eab4edf1d1faf3368d1191fc5c59790e96dc918e4456ab2e67d613de1043d2e8c81f87303e6b40d4ffeca9df15ef1ad567348f2be" } diff --git a/interface/pnpm-lock.yaml b/interface/pnpm-lock.yaml index 2eb724f03..03a238d3e 100644 --- a/interface/pnpm-lock.yaml +++ b/interface/pnpm-lock.yaml @@ -83,7 +83,7 @@ importers: version: 10.0.1(eslint@10.0.3) '@preact/preset-vite': specifier: ^2.10.4 - version: 2.10.4(@babel/core@7.29.0)(preact@10.29.0)(rollup@4.59.0)(vite@7.3.1(@types/node@25.5.0)(lightningcss@1.32.0)(terser@5.46.1)) + version: 2.10.4(@babel/core@7.29.0)(preact@10.29.0)(rollup@4.59.0)(vite@8.0.0(@types/node@25.5.0)(esbuild@0.27.4)(terser@5.46.1)) '@trivago/prettier-plugin-sort-imports': specifier: ^6.0.2 version: 6.0.2(prettier@3.8.1) @@ -121,14 +121,11 @@ importers: specifier: ^8.57.1 version: 8.57.1(eslint@10.0.3)(typescript@5.9.3) vite: - specifier: ^7.3.1 - version: 7.3.1(@types/node@25.5.0)(lightningcss@1.32.0)(terser@5.46.1) + specifier: ^8.0.0 + version: 8.0.0(@types/node@25.5.0)(esbuild@0.27.4)(terser@5.46.1) vite-plugin-imagemin: specifier: ^0.6.1 - version: 0.6.1(vite@7.3.1(@types/node@25.5.0)(lightningcss@1.32.0)(terser@5.46.1)) - vite-tsconfig-paths: - specifier: ^6.1.1 - version: 6.1.1(typescript@5.9.3)(vite@7.3.1(@types/node@25.5.0)(lightningcss@1.32.0)(terser@5.46.1)) + version: 0.6.1(vite@8.0.0(@types/node@25.5.0)(esbuild@0.27.4)(terser@5.46.1)) packages: @@ -646,6 +643,10 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} + '@oxc-project/runtime@0.115.0': + resolution: {integrity: sha512-Rg8Wlt5dCbXhQnsXPrkOjL1DTSvXLgb2R/KYfnf1/K+R0k6UMLEmbQXPM+kwrWqSmWA2t0B1EtHy2/3zikQpvQ==} + engines: {node: ^20.19.0 || >=22.12.0} + '@oxc-project/types@0.115.0': resolution: {integrity: sha512-4n91DKnebUS4yjUHl2g3/b2T+IUdCfmoZGhmwsovZCDaJSs+QkVAM+0AqqTxHSsHfeiMuueT75cZaZcT/m0pSw==} @@ -1878,8 +1879,8 @@ packages: resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} engines: {node: '>=16'} - flatted@3.4.1: - resolution: {integrity: sha512-IxfVbRFVlV8V/yRaGzk0UVIcsKKHMSfYw66T/u4nTwlWteQePsxe//LjudR1AMX4tZW3WFCh3Zqa/sjlqpbURQ==} + flatted@3.4.2: + resolution: {integrity: sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==} for-each@0.3.5: resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==} @@ -1979,9 +1980,6 @@ packages: resolution: {integrity: sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==} engines: {node: '>=8'} - globrex@0.1.2: - resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} - gopd@1.2.0: resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} engines: {node: '>= 0.4'} @@ -3169,16 +3167,6 @@ packages: peerDependencies: typescript: '>=4.8.4' - tsconfck@3.1.6: - resolution: {integrity: sha512-ks6Vjr/jEw0P1gmOVwutM3B7fWxoWBL2KRDb1JfqGVawBmO5UsvmWOQFGHBPl5yxYz4eERr19E6L7NMv+Fej4w==} - engines: {node: ^18 || >=20} - hasBin: true - peerDependencies: - typescript: ^5.0.0 - peerDependenciesMeta: - typescript: - optional: true - tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} @@ -3267,20 +3255,16 @@ packages: peerDependencies: vite: 5.x || 6.x || 7.x || 8.x - vite-tsconfig-paths@6.1.1: - resolution: {integrity: sha512-2cihq7zliibCCZ8P9cKJrQBkfgdvcFkOOc3Y02o3GWUDLgqjWsZudaoiuOwO/gzTzy17cS5F7ZPo4bsnS4DGkg==} - peerDependencies: - vite: '*' - - vite@7.3.1: - resolution: {integrity: sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==} + vite@8.0.0: + resolution: {integrity: sha512-fPGaRNj9Zytaf8LEiBhY7Z6ijnFKdzU/+mL8EFBaKr7Vw1/FWcTBAMW0wLPJAGMPX38ZPVCVgLceWiEqeoqL2Q==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: '@types/node': ^20.19.0 || >=22.12.0 + '@vitejs/devtools': ^0.0.0-alpha.31 + esbuild: ^0.27.0 jiti: '>=1.21.0' less: ^4.0.0 - lightningcss: ^1.21.0 sass: ^1.70.0 sass-embedded: ^1.70.0 stylus: '>=0.54.8' @@ -3291,12 +3275,14 @@ packages: peerDependenciesMeta: '@types/node': optional: true + '@vitejs/devtools': + optional: true + esbuild: + optional: true jiti: optional: true less: optional: true - lightningcss: - optional: true sass: optional: true sass-embedded: @@ -3885,8 +3871,9 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.20.1 - '@oxc-project/types@0.115.0': - optional: true + '@oxc-project/runtime@0.115.0': {} + + '@oxc-project/types@0.115.0': {} '@paralleldrive/cuid2@2.3.1': dependencies: @@ -3898,19 +3885,19 @@ snapshots: dependencies: preact: 10.29.0 - '@preact/preset-vite@2.10.4(@babel/core@7.29.0)(preact@10.29.0)(rollup@4.59.0)(vite@7.3.1(@types/node@25.5.0)(lightningcss@1.32.0)(terser@5.46.1))': + '@preact/preset-vite@2.10.4(@babel/core@7.29.0)(preact@10.29.0)(rollup@4.59.0)(vite@8.0.0(@types/node@25.5.0)(esbuild@0.27.4)(terser@5.46.1))': dependencies: '@babel/core': 7.29.0 '@babel/plugin-transform-react-jsx': 7.28.6(@babel/core@7.29.0) '@babel/plugin-transform-react-jsx-development': 7.27.1(@babel/core@7.29.0) - '@prefresh/vite': 2.4.12(preact@10.29.0)(vite@7.3.1(@types/node@25.5.0)(lightningcss@1.32.0)(terser@5.46.1)) + '@prefresh/vite': 2.4.12(preact@10.29.0)(vite@8.0.0(@types/node@25.5.0)(esbuild@0.27.4)(terser@5.46.1)) '@rollup/pluginutils': 5.3.0(rollup@4.59.0) babel-plugin-transform-hook-names: 1.0.2(@babel/core@7.29.0) debug: 4.4.3 magic-string: 0.30.21 picocolors: 1.1.1 - vite: 7.3.1(@types/node@25.5.0)(lightningcss@1.32.0)(terser@5.46.1) - vite-prerender-plugin: 0.5.13(vite@7.3.1(@types/node@25.5.0)(lightningcss@1.32.0)(terser@5.46.1)) + vite: 8.0.0(@types/node@25.5.0)(esbuild@0.27.4)(terser@5.46.1) + vite-prerender-plugin: 0.5.13(vite@8.0.0(@types/node@25.5.0)(esbuild@0.27.4)(terser@5.46.1)) zimmerframe: 1.1.4 transitivePeerDependencies: - preact @@ -3925,7 +3912,7 @@ snapshots: '@prefresh/utils@1.2.1': {} - '@prefresh/vite@2.4.12(preact@10.29.0)(vite@7.3.1(@types/node@25.5.0)(lightningcss@1.32.0)(terser@5.46.1))': + '@prefresh/vite@2.4.12(preact@10.29.0)(vite@8.0.0(@types/node@25.5.0)(esbuild@0.27.4)(terser@5.46.1))': dependencies: '@babel/core': 7.29.0 '@prefresh/babel-plugin': 0.5.3 @@ -3933,7 +3920,7 @@ snapshots: '@prefresh/utils': 1.2.1 '@rollup/pluginutils': 4.2.1 preact: 10.29.0 - vite: 7.3.1(@types/node@25.5.0)(lightningcss@1.32.0)(terser@5.46.1) + vite: 8.0.0(@types/node@25.5.0)(esbuild@0.27.4)(terser@5.46.1) transitivePeerDependencies: - supports-color @@ -3984,8 +3971,7 @@ snapshots: '@rolldown/binding-win32-x64-msvc@1.0.0-rc.9': optional: true - '@rolldown/pluginutils@1.0.0-rc.9': - optional: true + '@rolldown/pluginutils@1.0.0-rc.9': {} '@rollup/pluginutils@4.2.1': dependencies: @@ -4680,8 +4666,7 @@ snapshots: define-lazy-prop@3.0.0: {} - detect-libc@2.1.2: - optional: true + detect-libc@2.1.2: {} dezalgo@1.0.4: dependencies: @@ -4906,6 +4891,7 @@ snapshots: '@esbuild/win32-arm64': 0.27.4 '@esbuild/win32-ia32': 0.27.4 '@esbuild/win32-x64': 0.27.4 + optional: true escalade@3.2.0: {} @@ -5133,10 +5119,10 @@ snapshots: flat-cache@4.0.1: dependencies: - flatted: 3.4.1 + flatted: 3.4.2 keyv: 4.5.4 - flatted@3.4.1: {} + flatted@3.4.2: {} for-each@0.3.5: dependencies: @@ -5250,8 +5236,6 @@ snapshots: merge2: 1.4.1 slash: 3.0.0 - globrex@0.1.2: {} - gopd@1.2.0: {} got@7.1.0: @@ -5602,7 +5586,6 @@ snapshots: lightningcss-linux-x64-musl: 1.32.0 lightningcss-win32-arm64-msvc: 1.32.0 lightningcss-win32-x64-msvc: 1.32.0 - optional: true lines-and-columns@1.2.4: {} @@ -6095,7 +6078,6 @@ snapshots: '@rolldown/binding-wasm32-wasi': 1.0.0-rc.9 '@rolldown/binding-win32-arm64-msvc': 1.0.0-rc.9 '@rolldown/binding-win32-x64-msvc': 1.0.0-rc.9 - optional: true rollup-plugin-visualizer@7.0.1(rolldown@1.0.0-rc.9)(rollup@4.59.0): dependencies: @@ -6137,6 +6119,7 @@ snapshots: '@rollup/rollup-win32-x64-gnu': 4.59.0 '@rollup/rollup-win32-x64-msvc': 4.59.0 fsevents: 2.3.3 + optional: true run-applescript@7.1.0: {} @@ -6385,10 +6368,6 @@ snapshots: dependencies: typescript: 5.9.3 - tsconfck@3.1.6(typescript@5.9.3): - optionalDependencies: - typescript: 5.9.3 - tslib@2.8.1: {} tunnel-agent@0.6.0: @@ -6462,7 +6441,7 @@ snapshots: spdx-correct: 3.2.0 spdx-expression-parse: 3.0.1 - vite-plugin-imagemin@0.6.1(vite@7.3.1(@types/node@25.5.0)(lightningcss@1.32.0)(terser@5.46.1)): + vite-plugin-imagemin@0.6.1(vite@8.0.0(@types/node@25.5.0)(esbuild@0.27.4)(terser@5.46.1)): dependencies: '@types/imagemin': 7.0.1 '@types/imagemin-gifsicle': 7.0.4 @@ -6487,11 +6466,11 @@ snapshots: imagemin-webp: 6.1.0 jpegtran-bin: 6.0.1 pathe: 0.2.0 - vite: 7.3.1(@types/node@25.5.0)(lightningcss@1.32.0)(terser@5.46.1) + vite: 8.0.0(@types/node@25.5.0)(esbuild@0.27.4)(terser@5.46.1) transitivePeerDependencies: - supports-color - vite-prerender-plugin@0.5.13(vite@7.3.1(@types/node@25.5.0)(lightningcss@1.32.0)(terser@5.46.1)): + vite-prerender-plugin@0.5.13(vite@8.0.0(@types/node@25.5.0)(esbuild@0.27.4)(terser@5.46.1)): dependencies: kolorist: 1.8.0 magic-string: 0.30.21 @@ -6499,30 +6478,20 @@ snapshots: simple-code-frame: 1.3.0 source-map: 0.7.6 stack-trace: 1.0.0-pre2 - vite: 7.3.1(@types/node@25.5.0)(lightningcss@1.32.0)(terser@5.46.1) + vite: 8.0.0(@types/node@25.5.0)(esbuild@0.27.4)(terser@5.46.1) - vite-tsconfig-paths@6.1.1(typescript@5.9.3)(vite@7.3.1(@types/node@25.5.0)(lightningcss@1.32.0)(terser@5.46.1)): + vite@8.0.0(@types/node@25.5.0)(esbuild@0.27.4)(terser@5.46.1): dependencies: - debug: 4.4.3 - globrex: 0.1.2 - tsconfck: 3.1.6(typescript@5.9.3) - vite: 7.3.1(@types/node@25.5.0)(lightningcss@1.32.0)(terser@5.46.1) - transitivePeerDependencies: - - supports-color - - typescript - - vite@7.3.1(@types/node@25.5.0)(lightningcss@1.32.0)(terser@5.46.1): - dependencies: - esbuild: 0.27.4 - fdir: 6.5.0(picomatch@4.0.3) + '@oxc-project/runtime': 0.115.0 + lightningcss: 1.32.0 picomatch: 4.0.3 postcss: 8.5.8 - rollup: 4.59.0 + rolldown: 1.0.0-rc.9 tinyglobby: 0.2.15 optionalDependencies: '@types/node': 25.5.0 + esbuild: 0.27.4 fsevents: 2.3.3 - lightningcss: 1.32.0 terser: 5.46.1 which-typed-array@1.1.20: From 67676df131a428ed91568fe5ac5a1cdbf67e12d5 Mon Sep 17 00:00:00 2001 From: proddy Date: Tue, 17 Mar 2026 21:44:29 +0100 Subject: [PATCH 02/10] package update --- mock-api/package.json | 4 ++-- mock-api/pnpm-lock.yaml | 32 ++++++++++++++++---------------- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/mock-api/package.json b/mock-api/package.json index c694c4889..049ac8069 100644 --- a/mock-api/package.json +++ b/mock-api/package.json @@ -12,8 +12,8 @@ "@msgpack/msgpack": "^3.1.3", "@trivago/prettier-plugin-sort-imports": "^6.0.2", "formidable": "^3.5.4", - "itty-router": "^5.0.22", + "itty-router": "^5.0.23", "prettier": "^3.8.1" }, - "packageManager": "pnpm@10.29.3+sha512.498e1fb4cca5aa06c1dcf2611e6fafc50972ffe7189998c409e90de74566444298ffe43e6cd2acdc775ba1aa7cc5e092a8b7054c811ba8c5770f84693d33d2dc" + "packageManager": "pnpm@10.32.1+sha512.a706938f0e89ac1456b6563eab4edf1d1faf3368d1191fc5c59790e96dc918e4456ab2e67d613de1043d2e8c81f87303e6b40d4ffeca9df15ef1ad567348f2be" } diff --git a/mock-api/pnpm-lock.yaml b/mock-api/pnpm-lock.yaml index f3b06f020..5cb0ae1d6 100644 --- a/mock-api/pnpm-lock.yaml +++ b/mock-api/pnpm-lock.yaml @@ -18,8 +18,8 @@ importers: specifier: ^3.5.4 version: 3.5.4 itty-router: - specifier: ^5.0.22 - version: 5.0.22 + specifier: ^5.0.23 + version: 5.0.23 prettier: specifier: ^3.8.1 version: 3.8.1 @@ -46,8 +46,8 @@ packages: resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} engines: {node: '>=6.9.0'} - '@babel/parser@7.29.0': - resolution: {integrity: sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==} + '@babel/parser@7.29.2': + resolution: {integrity: sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==} engines: {node: '>=6.0.0'} hasBin: true @@ -131,8 +131,8 @@ packages: resolution: {integrity: sha512-YikH+7CUTOtP44ZTnUhR7Ic2UASBPOqmaRkRKxRbywPTe5VxF7RRCck4af9wutiZ/QKM5nME9Bie2fFaPz5Gug==} engines: {node: '>=14.0.0'} - itty-router@5.0.22: - resolution: {integrity: sha512-9hmdGErWdYDOurGYxSbqLhy4EFReIwk71hMZTJ5b+zfa2zjMNV1ftFno2b8VjAQvX615gNB8Qxbl9JMRqHnIVA==} + itty-router@5.0.23: + resolution: {integrity: sha512-i49WU+SNPrwOZA4Z61En1RYd5h2Lcqa+5IvCpMrNi4dxymzJK15ozUUnRrWIUAv95Zamd4eJPAot2UvHRrQg7w==} javascript-natural-sort@0.7.1: resolution: {integrity: sha512-nO6jcEfZWQXDhOiBtG2KvKyEptz7RVbpGP4vTD2hLBdmNQSsCiicO2Ioinv6UI4y9ukqnBpy+XZ9H6uLNgJTlw==} @@ -148,8 +148,8 @@ packages: lodash-es@4.17.23: resolution: {integrity: sha512-kVI48u3PZr38HdYz98UmfPnXl2DXrpdctLrFLCd3kOx1xUkOmpFPx7gCWWM5MPkL/fD8zb+Ph0QzjGFs4+hHWg==} - minimatch@9.0.5: - resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} + minimatch@9.0.9: + resolution: {integrity: sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==} engines: {node: '>=16 || 14 >=14.17'} ms@2.1.3: @@ -185,7 +185,7 @@ snapshots: '@babel/generator@7.29.1': dependencies: - '@babel/parser': 7.29.0 + '@babel/parser': 7.29.2 '@babel/types': 7.29.0 '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 @@ -197,14 +197,14 @@ snapshots: '@babel/helper-validator-identifier@7.28.5': {} - '@babel/parser@7.29.0': + '@babel/parser@7.29.2': dependencies: '@babel/types': 7.29.0 '@babel/template@7.28.6': dependencies: '@babel/code-frame': 7.29.0 - '@babel/parser': 7.29.0 + '@babel/parser': 7.29.2 '@babel/types': 7.29.0 '@babel/traverse@7.29.0': @@ -212,7 +212,7 @@ snapshots: '@babel/code-frame': 7.29.0 '@babel/generator': 7.29.1 '@babel/helper-globals': 7.28.0 - '@babel/parser': 7.29.0 + '@babel/parser': 7.29.2 '@babel/template': 7.28.6 '@babel/types': 7.29.0 debug: 4.4.3 @@ -249,12 +249,12 @@ snapshots: '@trivago/prettier-plugin-sort-imports@6.0.2(prettier@3.8.1)': dependencies: '@babel/generator': 7.29.1 - '@babel/parser': 7.29.0 + '@babel/parser': 7.29.2 '@babel/traverse': 7.29.0 '@babel/types': 7.29.0 javascript-natural-sort: 0.7.1 lodash-es: 4.17.23 - minimatch: 9.0.5 + minimatch: 9.0.9 parse-imports-exports: 0.2.4 prettier: 3.8.1 transitivePeerDependencies: @@ -283,7 +283,7 @@ snapshots: dezalgo: 1.0.4 once: 1.4.0 - itty-router@5.0.22: {} + itty-router@5.0.23: {} javascript-natural-sort@0.7.1: {} @@ -293,7 +293,7 @@ snapshots: lodash-es@4.17.23: {} - minimatch@9.0.5: + minimatch@9.0.9: dependencies: brace-expansion: 2.0.2 From 9c81e4b34dcd190b759d8c65c6417c2158203284 Mon Sep 17 00:00:00 2001 From: proddy Date: Tue, 17 Mar 2026 21:44:38 +0100 Subject: [PATCH 03/10] optimize for vite v8 --- interface/vite.config.ts | 40 ++++++++++++++++++++++++++++------------ 1 file changed, 28 insertions(+), 12 deletions(-) diff --git a/interface/vite.config.ts b/interface/vite.config.ts index 2369cc845..0c16f6a7b 100644 --- a/interface/vite.config.ts +++ b/interface/vite.config.ts @@ -2,9 +2,8 @@ import preact from '@preact/preset-vite'; import fs from 'fs'; import path from 'path'; import { visualizer } from 'rollup-plugin-visualizer'; -import { Plugin, defineConfig } from 'vite'; +import { Plugin, PluginOption, defineConfig } from 'vite'; import viteImagemin from 'vite-plugin-imagemin'; -import viteTsconfigPaths from 'vite-tsconfig-paths'; import zlib from 'zlib'; // @ts-expect-error - mock server doesn't have type declarations @@ -99,16 +98,31 @@ const createPreactPlugin = (devToolsEnabled: boolean) => prefreshEnabled: false }); +// Patch preact/compat to export stub React 19 APIs (use, useOptimistic) so that +// react-router v7 doesn't trigger IMPORT_IS_UNDEFINED warnings from Rolldown. +const preactCompatPatchPlugin = (): Plugin => ({ + name: 'preact-compat-react19-patch', + transform(code, id) { + if (id.includes('preact') && id.includes('compat.module.js')) { + return { + code: + code + + '\nexport var use = undefined;\nexport var useOptimistic = undefined;\n', + map: null + }; + } + return undefined; + } +}); + // Common base plugins const createBasePlugins = ( devToolsEnabled: boolean, includeBundleReporter = true -) => { - const plugins = [ +): PluginOption[] => { + const plugins: PluginOption[] = [ createPreactPlugin(devToolsEnabled), - viteTsconfigPaths({ - projects: ['./tsconfig.json'] - }) + preactCompatPatchPlugin() ]; if (includeBundleReporter) { plugins.push(bundleSizeReporter()); @@ -234,7 +248,8 @@ export default defineConfig( plugins: [...createBasePlugins(true, true), mockServer()], resolve: { alias: RESOLVE_ALIASES, - extensions: RESOLVE_EXTENSIONS + extensions: RESOLVE_EXTENSIONS, + tsconfigPaths: true }, server: { open: true, @@ -263,7 +278,8 @@ export default defineConfig( plugins: createBasePlugins(false, true), resolve: { alias: RESOLVE_ALIASES, - extensions: RESOLVE_EXTENSIONS + extensions: RESOLVE_EXTENSIONS, + tsconfigPaths: true }, build: { ...createBaseBuildConfig(), @@ -297,7 +313,8 @@ export default defineConfig( ], resolve: { alias: RESOLVE_ALIASES, - extensions: RESOLVE_EXTENSIONS + extensions: RESOLVE_EXTENSIONS, + tsconfigPaths: true }, build: { ...createBaseBuildConfig(), @@ -306,8 +323,7 @@ export default defineConfig( rollupOptions: { treeshake: { moduleSideEffects: false, - propertyReadSideEffects: false, - tryCatchDeoptimization: false, + propertyReadSideEffects: false as const, unknownGlobalSideEffects: false }, output: { From dfd245ee7b4513db765834fec866394568f30b69 Mon Sep 17 00:00:00 2001 From: proddy Date: Tue, 17 Mar 2026 21:45:12 +0100 Subject: [PATCH 04/10] rename common.h --- src/core/{common.h => emsesp_common.h} | 0 src/core/helpers.h | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename src/core/{common.h => emsesp_common.h} (100%) diff --git a/src/core/common.h b/src/core/emsesp_common.h similarity index 100% rename from src/core/common.h rename to src/core/emsesp_common.h diff --git a/src/core/helpers.h b/src/core/helpers.h index 20f8fa122..5758b08b8 100644 --- a/src/core/helpers.h +++ b/src/core/helpers.h @@ -20,7 +20,7 @@ #define EMSESP_HELPERS_H #include "telegram.h" // for EMS_VALUE_* settings -#include "common.h" +#include "emsesp_common.h" namespace emsesp { From 56365cb4030e7e6d56997217a5028a53902516ef Mon Sep 17 00:00:00 2001 From: proddy Date: Tue, 17 Mar 2026 21:46:15 +0100 Subject: [PATCH 05/10] formatting --- project-words.txt | 6 +++++- src/ESP32React/APSettingsService.h | 6 +++--- src/core/analogsensor.cpp | 4 ++-- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/project-words.txt b/project-words.txt index 99a609cea..513286558 100644 --- a/project-words.txt +++ b/project-words.txt @@ -1324,4 +1324,8 @@ zyxwvutsrqponmlkjihgfedcba ACAO ACAH ACAC -coolingtype \ No newline at end of file +coolingtype +starttls +recp +READYCLIENT +readymail diff --git a/src/ESP32React/APSettingsService.h b/src/ESP32React/APSettingsService.h index 21eb24075..6051c5cc5 100644 --- a/src/ESP32React/APSettingsService.h +++ b/src/ESP32React/APSettingsService.h @@ -70,9 +70,9 @@ class APSettings { IPAddress subnetMask; bool operator==(const APSettings & settings) const { - return provisionMode == settings.provisionMode && channel == settings.channel && ssidHidden == settings.ssidHidden - && maxClients == settings.maxClients && localIP == settings.localIP && gatewayIP == settings.gatewayIP - && subnetMask == settings.subnetMask && ssid == settings.ssid && password == settings.password; + return provisionMode == settings.provisionMode && channel == settings.channel && ssidHidden == settings.ssidHidden && maxClients == settings.maxClients + && localIP == settings.localIP && gatewayIP == settings.gatewayIP && subnetMask == settings.subnetMask && ssid == settings.ssid + && password == settings.password; } static void read(const APSettings & settings, JsonObject root); diff --git a/src/core/analogsensor.cpp b/src/core/analogsensor.cpp index 047a51116..5e3290aac 100644 --- a/src/core/analogsensor.cpp +++ b/src/core/analogsensor.cpp @@ -886,9 +886,9 @@ std::string AnalogSensor::get_metrics_prometheus() { result += (std::string) "\n# TYPE emsesp_" + sensor.name() + " gauge\n"; result += (std::string) "emsesp_" + sensor.name() + " "; if (sensor.type() != AnalogType::DIGITAL_OUT && sensor.type() != AnalogType::DIGITAL_IN) { - result += (std::string) Helpers::render_value(val, sensor.value(), 2) + "\n"; + result += (std::string)Helpers::render_value(val, sensor.value(), 2) + "\n"; } else { - result += (std::string) (sensor.value() == 0 ? "0\n" : "1\n"); + result += (std::string)(sensor.value() == 0 ? "0\n" : "1\n"); } } return result; From 1397f81fd01061b1d677fc4be51a6946b4424a36 Mon Sep 17 00:00:00 2001 From: proddy Date: Tue, 17 Mar 2026 21:46:27 +0100 Subject: [PATCH 06/10] add C in version so we know its Core --- src/emsesp_version.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/emsesp_version.h b/src/emsesp_version.h index f1c420f81..711bf91b2 100644 --- a/src/emsesp_version.h +++ b/src/emsesp_version.h @@ -1 +1 @@ -#define EMSESP_APP_VERSION "3.8.2-dev.10" +#define EMSESP_APP_VERSION "3.8.2-dev.C10" From 37115a174d05ceb572b1470f015a97b8897225b9 Mon Sep 17 00:00:00 2001 From: proddy Date: Tue, 17 Mar 2026 21:46:51 +0100 Subject: [PATCH 07/10] show size of firmware not partition --- src/core/system.cpp | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/src/core/system.cpp b/src/core/system.cpp index 1d92bb8db..6861a063a 100644 --- a/src/core/system.cpp +++ b/src/core/system.cpp @@ -20,6 +20,7 @@ #include "emsesp.h" // for send_raw_telegram() command #ifndef EMSESP_STANDALONE +#include "esp_image_format.h" #include "esp_ota_ops.h" #include "esp_partition.h" #endif @@ -183,7 +184,7 @@ bool System::command_sendmail(const char * value, const int8_t id) { return false; } - // LOG_INFO("autenticate %s:%s", login.c_str(), pass.c_str()); + // LOG_INFO("authenticate %s:%s", login.c_str(), pass.c_str()); smtp->authenticate(login, pass, readymail_auth_password); if (!smtp->isAuthenticated()) { LOG_ERROR("Sendmail authenticate error"); @@ -210,7 +211,7 @@ bool System::command_sendmail(const char * value, const int8_t id) { msg.headers.add(rfc822_from, sender); msg.headers.add(rfc822_to, recp); - // Use addCustom to add custom header e.g. Imprtance and Priority. + // Use addCustom to add custom header e.g. Importance and Priority. // msg.headers.addCustom("Importance", PRIORITY); // msg.headers.addCustom("X-MSMail-Priority", PRIORITY); // msg.headers.addCustom("X-Priority", PRIORITY_NUM); @@ -469,7 +470,13 @@ void System::get_partition_info() { strftime(time_string, sizeof(time_string), "%FT%T", localtime(&d)); p_info.install_date = d > 1500000000L ? time_string : ""; - p_info.size = part->size / 1024; // set size in KB + esp_image_metadata_t meta = {}; + esp_partition_pos_t part_pos = {.offset = part->address, .size = part->size}; + if (esp_image_verify(ESP_IMAGE_VERIFY_SILENT, &part_pos, &meta) == ESP_OK) { + p_info.size = meta.image_len / 1024; // actual firmware size in KB + } else { + p_info.size = 0; + } partition_info_[part->label] = p_info; } @@ -493,7 +500,7 @@ void System::set_partition_install_date() { snprintf(c, sizeof(c), "d_%s", current_partition); time_t d = EMSESP::nvs_.getULong(c, 0); if (d < 1500000000L) { - LOG_INFO("Firmware is fresh, setting the new install date in partition %s", current_partition); + LOG_DEBUG("Setting the install date in partition %s", current_partition); auto t = time(nullptr) - uuid::get_uptime_sec(); EMSESP::nvs_.putULong(c, t); } @@ -1336,7 +1343,7 @@ void System::show_system(uuid::console::Shell & shell) { partition.first.c_str(), partition.second.version.c_str(), partition.second.size, - partition.second.install_date.empty() ? "" : (std::string(", installed ") + partition.second.install_date).c_str(), + partition.second.install_date.empty() ? "" : (std::string(", installed on ") + partition.second.install_date).c_str(), (strcmp(esp_ota_get_running_partition()->label, partition.first.c_str()) == 0) ? "** active **" : ""); } From 25a7aac360cd5e0497b6215b33fc0ea3750572c2 Mon Sep 17 00:00:00 2001 From: proddy Date: Tue, 17 Mar 2026 21:47:01 +0100 Subject: [PATCH 08/10] lint warning fix --- interface/src/utils/file.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/interface/src/utils/file.ts b/interface/src/utils/file.ts index 9a96d56b3..3fa077c77 100644 --- a/interface/src/utils/file.ts +++ b/interface/src/utils/file.ts @@ -23,6 +23,8 @@ export const saveFile = ( }, 100); } catch (error) { console.error('Failed to save file:', error); - throw new Error(`Unable to save file: ${filename}${extension}`, { cause: error }); + throw new Error(`Unable to save file: ${filename}${extension}`, { + cause: error + }); } }; From 817b791e59a21864740cadd1f1fdfb0c8f8eb4b8 Mon Sep 17 00:00:00 2001 From: proddy Date: Tue, 17 Mar 2026 21:47:12 +0100 Subject: [PATCH 09/10] remove flto --- platformio.ini | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/platformio.ini b/platformio.ini index 78c558f1c..245eacc6d 100644 --- a/platformio.ini +++ b/platformio.ini @@ -21,8 +21,8 @@ extra_configs = pio_local.ini [common] -core_build_flags = -std=c++17 -std=gnu++17 -O3 -flto=auto -Wno-type-limits -Wall -Wextra -Wno-unused-parameter -Wno-unused-variable -Wno-format -Wno-missing-field-initializers -core_unbuild_flags = -std=gnu++11 -fno-lto +core_build_flags = -std=c++17 -std=gnu++17 -O3 -Wno-type-limits -Wall -Wextra -Wno-unused-parameter -Wno-unused-variable -Wno-format -Wno-missing-field-initializers +core_unbuild_flags = -std=gnu++11 my_build_flags = @@ -59,7 +59,7 @@ framework = arduino board_build.partitions = partitions/esp32_partition_4M.csv board_upload.flash_size = 4MB board_build.app_partition_name = app0 -platform = https://github.com/tasmota/platform-espressif32/releases/download/2026.03.30/platform-espressif32.zip ; Tasmota Arduino Core 3.1.10 based on IDF 5.3.4.20260127 +platform = https://github.com/tasmota/platform-espressif32/releases/download/2026.03.30/platform-espressif32.zip ; Tasmota Arduino Core 3.1.11 based on IDF 5.3.4.20260127 ; 16MB Flash variants [espressif32_base_16M] @@ -67,7 +67,7 @@ framework = arduino board_build.partitions = partitions/esp32_partition_16M.csv board_upload.flash_size = 16MB board_build.app_partition_name = app0 -platform = https://github.com/tasmota/platform-espressif32/releases/download/2026.03.30/platform-espressif32.zip ; Tasmota Arduino Core 3.1.10 based on IDF 5.3.4.20260127 +platform = https://github.com/tasmota/platform-espressif32/releases/download/2026.03.30/platform-espressif32.zip ; Tasmota Arduino Core 3.1.11 based on IDF 5.3.4.20260127 ; 32MB Flash variants [espressif32_base_32M] @@ -75,7 +75,7 @@ framework = arduino board_build.partitions = partitions/esp32_partition_32M.csv board_upload.flash_size = 32MB board_build.app_partition_name = app0 -platform = https://github.com/tasmota/platform-espressif32/releases/download/2026.03.30/platform-espressif32.zip ; Tasmota Arduino Core 3.1.10 based on IDF 5.3.4.20260127 +platform = https://github.com/tasmota/platform-espressif32/releases/download/2026.03.30/platform-espressif32.zip ; Tasmota Arduino Core 3.1.11 based on IDF 5.3.4.20260127 [env] build_flags = From 40f371d23b98e4e74deb16b5239b8ecb585f8b75 Mon Sep 17 00:00:00 2001 From: proddy Date: Tue, 17 Mar 2026 22:01:38 +0100 Subject: [PATCH 10/10] remove check for downloadOnly --- interface/src/app/status/Version.tsx | 28 +++++++++------------------- 1 file changed, 9 insertions(+), 19 deletions(-) diff --git a/interface/src/app/status/Version.tsx b/interface/src/app/status/Version.tsx index 9ed9f0365..78c997610 100644 --- a/interface/src/app/status/Version.tsx +++ b/interface/src/app/status/Version.tsx @@ -274,7 +274,6 @@ const InstallDialog = memo( fetchDevVersion, latestVersion, latestDevVersion, - downloadOnly, platform, LL, onClose, @@ -284,7 +283,6 @@ const InstallDialog = memo( fetchDevVersion: boolean; latestVersion?: VersionInfo; latestDevVersion?: VersionInfo; - downloadOnly: boolean; platform: string; LL: TranslationFunctions; onClose: () => void; @@ -309,7 +307,7 @@ const InstallDialog = memo( {LL.INSTALL_VERSION( - downloadOnly ? LL.DOWNLOAD(1) : LL.INSTALL(), + LL.INSTALL(), fetchDevVersion ? latestDevVersion?.name : latestVersion?.name )} @@ -333,16 +331,14 @@ const InstallDialog = memo( {LL.DOWNLOAD(0)} - {!downloadOnly && ( - - )} + ); @@ -423,7 +419,6 @@ const Version = () => { const [stableUpgradeAvailable, setStableUpgradeAvailable] = useState(false); const [internetLive, setInternetLive] = useState(false); - const [downloadOnly, setDownloadOnly] = useState(false); const [showVersionInfo, setShowVersionInfo] = useState(0); // 1 = stable, 2 = dev, 3 = partition const [firmwareSize, setFirmwareSize] = useState(0); @@ -449,9 +444,6 @@ const Version = () => { error } = useRequest(SystemApi.readSystemStatus).onSuccess((event) => { const systemData = event.data as VersionData; - if (systemData.arduino_version.startsWith('Tasmota')) { - setDownloadOnly(true); - } setUsingDevVersion(systemData.emsesp_version.includes('dev')); }); @@ -815,7 +807,6 @@ const Version = () => { fetchDevVersion={fetchDevVersion} latestVersion={latestVersion} latestDevVersion={latestDevVersion} - downloadOnly={downloadOnly} platform={platform} LL={LL} onClose={closeInstallDialog} @@ -851,7 +842,6 @@ const Version = () => { locale, openInstallDialog, fetchDevVersion, - downloadOnly, me.admin, showButtons, handleVersionInfoClose,