iobroker.eos-admin 7.10.8 → 7.10.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/NEXOWATT_EOS_BUILD_INFO.json +18 -19
- package/NEXOWATT_EOS_PREBUILT_MANIFEST.json +23 -23
- package/adminWww/css/nexowatt-native-shell.css +1 -97
- package/adminWww/index.html +14 -14
- package/adminWww/js/eos-role-bootstrap.js +1 -1
- package/adminWww/js/eos-role-ui.js +2 -2
- package/adminWww/js/nexowatt-native-shell.js +7 -60
- package/adminWww/static/js/{nexowatt-stable-v7108.js → nexowatt-stable-v7109.js} +2 -2
- package/io-package.json +5 -5
- package/package.json +5 -5
- package/tools/nexowatt-clean-legacy-runtime.cjs +31 -3
- package/tools/nexowatt-installer-ems-selftest.cjs +1 -1
- package/tools/nexowatt-role-security-selftest.cjs +4 -4
- package/tools/nexowatt-runtime-cleanup-selftest.cjs +5 -0
- package/tools/nexowatt-stable-v7103-selftest.cjs +2 -2
- package/tools/nexowatt-user-area-selftest.cjs +1 -1
- package/tools/{nexowatt-v7108-ui-foundation-selftest.cjs → nexowatt-v7109-clean-core-selftest.cjs} +13 -10
- package/tools/nexowatt-validate-package.cjs +1 -1
|
@@ -1,29 +1,28 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "7.10.
|
|
2
|
+
"version": "7.10.9",
|
|
3
3
|
"channel": "stable-latest",
|
|
4
|
-
"baseFrontend": "validated v84 runtime with modern Services, Datapoints and System Logs surfaces",
|
|
4
|
+
"baseFrontend": "validated v84 runtime with clean modern Services, Datapoints and System Logs surfaces",
|
|
5
5
|
"runtimeEntry": "v84",
|
|
6
|
-
"releaseType": "stable-ui-foundation",
|
|
7
|
-
"release": "stable-ui-foundation",
|
|
8
|
-
"label": "v7-10-
|
|
6
|
+
"releaseType": "stable-clean-ui-foundation",
|
|
7
|
+
"release": "stable-clean-ui-foundation",
|
|
8
|
+
"label": "v7-10-9",
|
|
9
9
|
"notes": [
|
|
10
|
-
"Administrator, Installer and End User role behavior from 7.10.
|
|
11
|
-
"Services, Datapoints and System Logs
|
|
12
|
-
"
|
|
13
|
-
"
|
|
10
|
+
"Administrator, Installer and End User role behavior from 7.10.8 remains unchanged.",
|
|
11
|
+
"Services, Datapoints and System Logs retain the modern NexoWatt EOS styling.",
|
|
12
|
+
"Redundant title, description and role information panels were removed from the self-explanatory core tabs.",
|
|
13
|
+
"Structure remains hidden for every role and Installer service controls remain native and operable."
|
|
14
14
|
],
|
|
15
15
|
"changes": [
|
|
16
|
-
"
|
|
17
|
-
"
|
|
18
|
-
"
|
|
19
|
-
"
|
|
20
|
-
"Raised release and browser cache identity to 7.10.8 / 7108."
|
|
16
|
+
"Removed the generated technical information header from Services, Datapoints and System Logs.",
|
|
17
|
+
"Preserved modern toolbars, rows, state tables and log severity accents.",
|
|
18
|
+
"Kept all role permissions, navigation protection and native service controls unchanged.",
|
|
19
|
+
"Raised release and browser cache identity to 7.10.9 / 7109."
|
|
21
20
|
],
|
|
22
|
-
"brandingCacheVersion":
|
|
23
|
-
"shellCacheVersion":
|
|
24
|
-
"nativeShellVersion":
|
|
25
|
-
"shellCacheTag": "
|
|
26
|
-
"repositoryEntry": "nexowatt-eos-admin-repository-entry-v7-10-
|
|
21
|
+
"brandingCacheVersion": 7109,
|
|
22
|
+
"shellCacheVersion": 7109,
|
|
23
|
+
"nativeShellVersion": 7109,
|
|
24
|
+
"shellCacheTag": "7109",
|
|
25
|
+
"repositoryEntry": "nexowatt-eos-admin-repository-entry-v7-10-9.json",
|
|
27
26
|
"autoUpdateCacheVersion": 7103,
|
|
28
27
|
"autoUpdateCacheTag": "7103"
|
|
29
28
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"format": 1,
|
|
3
3
|
"package": "iobroker.eos-admin",
|
|
4
|
-
"version": "7.10.
|
|
4
|
+
"version": "7.10.9",
|
|
5
5
|
"algorithm": "sha256",
|
|
6
6
|
"fileCount": 1392,
|
|
7
7
|
"trackedRoots": [
|
|
@@ -527,7 +527,7 @@
|
|
|
527
527
|
"adminWww/css/images/marker-icon.png": "574c3a5cca85f4114085b6841596d62f00d7c892c7b03f28cbfa301deb1dc437",
|
|
528
528
|
"adminWww/css/images/marker-shadow.png": "264f5c640339f042dd729062cfc04c17f8ea0f29882b538e3848ed8f10edb4da",
|
|
529
529
|
"adminWww/css/leaflet.css": "7a30116fa3852c0ff7e556bb2e80b0dc89c5bca8e725bbe3948af1746ca55103",
|
|
530
|
-
"adminWww/css/nexowatt-native-shell.css": "
|
|
530
|
+
"adminWww/css/nexowatt-native-shell.css": "f26fa7593b2853860c17470627377513624006ff61c5973c22c6c8900a98b2b6",
|
|
531
531
|
"adminWww/favicon.ico": "3a357e949ab04b9f7bb1539764419ade50d1b4fc7caa51b8f33202a3f57a1f74",
|
|
532
532
|
"adminWww/img/admin.png": "7f93d65d9e1d795bf127e1af31d88d7468ccb70b026f98351d0abbc3f3bd4df6",
|
|
533
533
|
"adminWww/img/admin.svg": "1167118074ff84d8cef82ad80c38609719dacfde9417126e46966c1ec986534b",
|
|
@@ -552,7 +552,7 @@
|
|
|
552
552
|
"adminWww/img/le.png": "ef5ebb7112926f646e781a326b639f56888fafe0891b9b000178091b4f8ed9dd",
|
|
553
553
|
"adminWww/img/logo.svg": "1167118074ff84d8cef82ad80c38609719dacfde9417126e46966c1ec986534b",
|
|
554
554
|
"adminWww/img/no-image.svg": "25fc382f4ad3a36f8a637cd966b9107368e1f11906d706102ad5f37db6f57f34",
|
|
555
|
-
"adminWww/index.html": "
|
|
555
|
+
"adminWww/index.html": "238e8351962e206600a391cd9e3fee9e6d6baacad3a887859657d05561b37e57",
|
|
556
556
|
"adminWww/js/adapter-settings.js": "fb2e538a3385899f7fd47275ec588051c735d8f778a44b89f40f5eb820a31dbc",
|
|
557
557
|
"adminWww/js/eos-account-management.js": "dbba398605b2391ac1a7ec97cf7eb84da7f929ea16bfb6761750cd700a687fbe",
|
|
558
558
|
"adminWww/js/eos-assistant.js": "be43f49fd5310d2962365035556c37109d4868856e874e1f964c4b2f05bb6beb",
|
|
@@ -563,11 +563,11 @@
|
|
|
563
563
|
"adminWww/js/eos-manual-write-policy.js": "3c93487146b4fd5f681aa45a6bb137d9a91c3fa145ebfa94ec5ccb6b15498e8b",
|
|
564
564
|
"adminWww/js/eos-native-security.js": "33098b98164623fc133314658bca2f622d19971795dd8bd3c90aca68598aab90",
|
|
565
565
|
"adminWww/js/eos-policy-client.js": "5ffd32270307137fbec69a9b9bea57ca1d2e27ede987ce1eb37ff1df6677d8d2",
|
|
566
|
-
"adminWww/js/eos-role-bootstrap.js": "
|
|
567
|
-
"adminWww/js/eos-role-ui.js": "
|
|
566
|
+
"adminWww/js/eos-role-bootstrap.js": "9d994cbfc551ed72a4b0217ec3ca938d0e1732a5f2c56521c2279949b7a9eb2a",
|
|
567
|
+
"adminWww/js/eos-role-ui.js": "2cb2f087afaebe8dd077d42f3e87f847d58aee45f76dfaec0ff82b9807810b7e",
|
|
568
568
|
"adminWww/js/license.js": "13798e577c82d7a5549b07a244b8b8453ef43e53fc7789f565c35b56e6654007",
|
|
569
569
|
"adminWww/js/listHeader.js": "ed336a68a64e16a062d1af2269428fd20a08a4b695f17635f55a18bc1ef693a4",
|
|
570
|
-
"adminWww/js/nexowatt-native-shell.js": "
|
|
570
|
+
"adminWww/js/nexowatt-native-shell.js": "30bf5bcc271fad753e3c73b89ef0cd34c75fd1beb31117504c2a76e28d64c9ce",
|
|
571
571
|
"adminWww/js/tableEditor.js": "5508044619fec70071895d0ae3ab6ff75dd03bd936e7b133f98d098d4245ec20",
|
|
572
572
|
"adminWww/js/translate.js": "264442c0f42a10148057125532bf55b7672c4cc051c28e7cbb922984a558f8d3",
|
|
573
573
|
"adminWww/js/treeTable.js": "8abde0b7880a89f6f927a87bb041945dea1502f51bc9870d8ba0be9d3dd9eed8",
|
|
@@ -747,7 +747,7 @@
|
|
|
747
747
|
"adminWww/static/js/html.js": "159b7192459d73d92761dab8c4d48e138e94e4d8e7bf99004bac257e403a0c3b",
|
|
748
748
|
"adminWww/static/js/javascript.js": "6287a6b820c8707a0cd7b9e4545bcb023a8b9228569cfd21be6635d1409aabf4",
|
|
749
749
|
"adminWww/static/js/nexowatt-stable-login.js": "ff0c6d4dc2086f3ab4be8ef455e5891a2ccb5f534bddfacbef2f5cd6ce65489e",
|
|
750
|
-
"adminWww/static/js/nexowatt-stable-
|
|
750
|
+
"adminWww/static/js/nexowatt-stable-v7109.js": "624cd530ad1915bda9eafa4b2e310d943271cedbab38abe656c4f08ecfbd8750",
|
|
751
751
|
"adminWww/static/js/worker-css.js": "83c767cacd6b190e2f083b139cb3f124d1b560afbd7a6dbb74bf5539aa4cadee",
|
|
752
752
|
"adminWww/static/js/worker-html.js": "661d2448443c0089fba31d2829d77761a5fc042035c38433eff0e20707f17457",
|
|
753
753
|
"adminWww/static/js/worker-javascript.js": "73fcf007e2d19eacba8f365719ee92d14345505b03f9cf66e6338aef02fccd21",
|
|
@@ -817,7 +817,7 @@
|
|
|
817
817
|
"src-admin/public/css/images/marker-icon.png": "574c3a5cca85f4114085b6841596d62f00d7c892c7b03f28cbfa301deb1dc437",
|
|
818
818
|
"src-admin/public/css/images/marker-shadow.png": "264f5c640339f042dd729062cfc04c17f8ea0f29882b538e3848ed8f10edb4da",
|
|
819
819
|
"src-admin/public/css/leaflet.css": "7a30116fa3852c0ff7e556bb2e80b0dc89c5bca8e725bbe3948af1746ca55103",
|
|
820
|
-
"src-admin/public/css/nexowatt-native-shell.css": "
|
|
820
|
+
"src-admin/public/css/nexowatt-native-shell.css": "f26fa7593b2853860c17470627377513624006ff61c5973c22c6c8900a98b2b6",
|
|
821
821
|
"src-admin/public/favicon.ico": "3a357e949ab04b9f7bb1539764419ade50d1b4fc7caa51b8f33202a3f57a1f74",
|
|
822
822
|
"src-admin/public/img/admin.png": "f4c004482fa2623bea6f7e83df40fdda2e07334f61d5ae27eb0aba186c10ca97",
|
|
823
823
|
"src-admin/public/img/admin.svg": "1167118074ff84d8cef82ad80c38609719dacfde9417126e46966c1ec986534b",
|
|
@@ -850,11 +850,11 @@
|
|
|
850
850
|
"src-admin/public/js/eos-manual-write-policy.js": "3c93487146b4fd5f681aa45a6bb137d9a91c3fa145ebfa94ec5ccb6b15498e8b",
|
|
851
851
|
"src-admin/public/js/eos-native-security.js": "33098b98164623fc133314658bca2f622d19971795dd8bd3c90aca68598aab90",
|
|
852
852
|
"src-admin/public/js/eos-policy-client.js": "5ffd32270307137fbec69a9b9bea57ca1d2e27ede987ce1eb37ff1df6677d8d2",
|
|
853
|
-
"src-admin/public/js/eos-role-bootstrap.js": "
|
|
854
|
-
"src-admin/public/js/eos-role-ui.js": "
|
|
853
|
+
"src-admin/public/js/eos-role-bootstrap.js": "9d994cbfc551ed72a4b0217ec3ca938d0e1732a5f2c56521c2279949b7a9eb2a",
|
|
854
|
+
"src-admin/public/js/eos-role-ui.js": "2cb2f087afaebe8dd077d42f3e87f847d58aee45f76dfaec0ff82b9807810b7e",
|
|
855
855
|
"src-admin/public/js/license.js": "13798e577c82d7a5549b07a244b8b8453ef43e53fc7789f565c35b56e6654007",
|
|
856
856
|
"src-admin/public/js/listHeader.js": "ed336a68a64e16a062d1af2269428fd20a08a4b695f17635f55a18bc1ef693a4",
|
|
857
|
-
"src-admin/public/js/nexowatt-native-shell.js": "
|
|
857
|
+
"src-admin/public/js/nexowatt-native-shell.js": "30bf5bcc271fad753e3c73b89ef0cd34c75fd1beb31117504c2a76e28d64c9ce",
|
|
858
858
|
"src-admin/public/js/tableEditor.js": "5508044619fec70071895d0ae3ab6ff75dd03bd936e7b133f98d098d4245ec20",
|
|
859
859
|
"src-admin/public/js/translate.js": "264442c0f42a10148057125532bf55b7672c4cc051c28e7cbb922984a558f8d3",
|
|
860
860
|
"src-admin/public/js/treeTable.js": "8abde0b7880a89f6f927a87bb041945dea1502f51bc9870d8ba0be9d3dd9eed8",
|
|
@@ -975,7 +975,7 @@
|
|
|
975
975
|
"src-admin/public/manifest.json": "15244d5d50f08420fc5d4793e5699e99c7b900b6908cfbc00a7182f4d4db55bd",
|
|
976
976
|
"src-admin/public/robots.txt": "90d24bc3bf698ac1e173739502298ccca72adf1f564fab05f484b8c48d1cadd2",
|
|
977
977
|
"src-admin/public/static/js/nexowatt-stable-login.js": "ff0c6d4dc2086f3ab4be8ef455e5891a2ccb5f534bddfacbef2f5cd6ce65489e",
|
|
978
|
-
"src-admin/public/static/js/nexowatt-stable-
|
|
978
|
+
"src-admin/public/static/js/nexowatt-stable-v7109.js": "624cd530ad1915bda9eafa4b2e310d943271cedbab38abe656c4f08ecfbd8750",
|
|
979
979
|
"src-admin/src/App.tsx": "8ab367389c604d5face72cc71da49b08021ffa2e566db4d32df9ad98f9fe762a",
|
|
980
980
|
"src-admin/src/Workers/AdaptersWorker.tsx": "3a2cdeb8010598c901df0e3cffcdae913e62e7ac7c84fcadf15cb7f961dc6ed9",
|
|
981
981
|
"src-admin/src/Workers/GenericWorker.tsx": "3b3c6e7856602477c54d1dc085aa23b5cfcac7784cc73710b00622ac04ed5a97",
|
|
@@ -1323,7 +1323,7 @@
|
|
|
1323
1323
|
"src-admin/src/tabs/Objects.tsx": "2b87a8a7e771e10e1cce49019c4be62578f10096eee5abd17d2685f5f41cc67c",
|
|
1324
1324
|
"src-admin/src/tabs/Users.tsx": "45ed37e57b66f7e23eb465aef9ad9db55613b40bf44530ab81d6206806de102d",
|
|
1325
1325
|
"src-admin/src/types.d.ts": "3cfac48af5f8416b55b89c0daca78499dbbd402c0b44cc661112b76953ba3344",
|
|
1326
|
-
"src-admin/src/version.json": "
|
|
1326
|
+
"src-admin/src/version.json": "13e2e9e60edcce1f853695a845884a61b78a64a415a70c4341251bffd750ea87",
|
|
1327
1327
|
"src/i18n/de.json": "85d4ecfedf15d78984922b05377063b808ae8c5a75944af323e72a2c3a483d50",
|
|
1328
1328
|
"src/i18n/en.json": "6a0156a1b026903821d395ef2ceef845e90531f323a218f97f5abefaabb46a23",
|
|
1329
1329
|
"src/i18n/es.json": "54369f8044dfa222779849d2f158eb100188a43816d6c42a64575122cb528a30",
|
|
@@ -1362,7 +1362,7 @@
|
|
|
1362
1362
|
"tools/nexowatt-auto-update-selftest.cjs": "1c7500ca3f0264658aa778758dc14d10353dc3857ef7c9803591654cba9b13d5",
|
|
1363
1363
|
"tools/nexowatt-backend-runtime-selftest.cjs": "22eaeef2fe80c71af7e86db66e049612faf6285b47c69d9d446e2d1231d2c21f",
|
|
1364
1364
|
"tools/nexowatt-branding-selftest.cjs": "3aa00be3716fb5349c45ef761ddab639c51381a265ec086ddda45ecee89d39d5",
|
|
1365
|
-
"tools/nexowatt-clean-legacy-runtime.cjs": "
|
|
1365
|
+
"tools/nexowatt-clean-legacy-runtime.cjs": "bfad004370eb83df101cf69e86fc62c97a8649b9e0bca31a318ab0540a2e5045",
|
|
1366
1366
|
"tools/nexowatt-datapoint-interaction-selftest.cjs": "3931d59d8a116c791096a5d1f5b36ab4c343b7ba8587f59ac4d46fadb24efa1c",
|
|
1367
1367
|
"tools/nexowatt-datapoint-selftest.cjs": "357db8a875fb24fd0050c9bd9dbba17d3f330b67a1b50ba72f8d9fc5fe7fb0c5",
|
|
1368
1368
|
"tools/nexowatt-default-port-selftest.cjs": "0e555a1e6cd8e05c7df7fcc482964310f86feb6ad4aa88e98a2e487975688411",
|
|
@@ -1375,7 +1375,7 @@
|
|
|
1375
1375
|
"tools/nexowatt-generate-eos-admin-repo-entry.cjs": "a8b55d6001b0ed6d97221448b194748945f2e8382cdaf0b11ea91c63fb517139",
|
|
1376
1376
|
"tools/nexowatt-generate-repo-entry.cjs": "4e98acc7db74546bd942cfa36d57015673c6f1514758494753e7339068f7eb68",
|
|
1377
1377
|
"tools/nexowatt-import-integrity-selftest.cjs": "f46951126a237a6010c3c0949c25e2415ebe9af568d29411d10691951cb3ed87",
|
|
1378
|
-
"tools/nexowatt-installer-ems-selftest.cjs": "
|
|
1378
|
+
"tools/nexowatt-installer-ems-selftest.cjs": "7a1ba771f6f69cebb0f1eea9f0e90d0521c4bea879e1f37f06cfd64df8edff22",
|
|
1379
1379
|
"tools/nexowatt-internal-reserve-selftest.cjs": "f027a2272a4277d65167d68d4ca4428cd0c28a6c6c2b610eda575abd3f2bc90a",
|
|
1380
1380
|
"tools/nexowatt-login-layout-selftest.cjs": "7d4baae82f1d53fc14446b8ef80aaffa39b0b3529821599f4a6e2c27fbc7a7f2",
|
|
1381
1381
|
"tools/nexowatt-manual-write-policy-selftest.cjs": "a41057610972d681120bf35e0321029facc08b098c79da9b131980f80bd3fdce",
|
|
@@ -1392,22 +1392,22 @@
|
|
|
1392
1392
|
"tools/nexowatt-publish-channel-selftest.cjs": "c4efd1104ebe471ce1dc63195f322cffe760af295bf60f13b9766491acd0280e",
|
|
1393
1393
|
"tools/nexowatt-release-defaults-selftest.cjs": "3e3c96ca774200461978c546d1a937cbae18d7f11497ed84dda639c2358f6e16",
|
|
1394
1394
|
"tools/nexowatt-repair-eos-admin-update.cjs": "f28c1999b0f75139e582770ad649d17d11f9e909ac49d13c31be5fa5b36253e3",
|
|
1395
|
-
"tools/nexowatt-role-access-selftest.cjs": "
|
|
1396
|
-
"tools/nexowatt-role-security-selftest.cjs": "
|
|
1397
|
-
"tools/nexowatt-runtime-cleanup-selftest.cjs": "
|
|
1398
|
-
"tools/nexowatt-stability-check.cjs": "
|
|
1395
|
+
"tools/nexowatt-role-access-selftest.cjs": "8966982b39012819ec10eff0a7e567d70cdb23ef332c3a9452f4f1dda34cec4a",
|
|
1396
|
+
"tools/nexowatt-role-security-selftest.cjs": "5a1f919f2ecde943500bafd2e628cd32b88b9fb9e1d10e673201a33b5ab3bdfe",
|
|
1397
|
+
"tools/nexowatt-runtime-cleanup-selftest.cjs": "35e9e730bda54690204d097176bfcc978af95c3eab325ddcfbf023656cbbbb8d",
|
|
1398
|
+
"tools/nexowatt-stability-check.cjs": "9776f83e8e2265742cbe8d8bb96bc08f6c1993a6d52d50fb463c434d5dfde6ae",
|
|
1399
1399
|
"tools/nexowatt-stable-v7101-selftest.cjs": "817d09861ef29c52a67f64ec5b8f4ad4654ce7e6486eded786bb16f3c773eaf8",
|
|
1400
1400
|
"tools/nexowatt-stable-v7102-selftest.cjs": "75baab5f8069569ad4896e5018f3c5ccbbda2c2297aca5c5146bce94f9cf795d",
|
|
1401
|
-
"tools/nexowatt-stable-v7103-selftest.cjs": "
|
|
1401
|
+
"tools/nexowatt-stable-v7103-selftest.cjs": "332be2733403d7e61d0465be4f532cbe88ffa31b291f33eeba7feb818107d272",
|
|
1402
1402
|
"tools/nexowatt-stable-v94-selftest.cjs": "5226881b3ad8918c67921ffb37716490f053ec88e7c0f24827a5eda7c75d4019",
|
|
1403
1403
|
"tools/nexowatt-stable-v95-selftest.cjs": "0b15fcd329eb2994e64c407ab04eaafab7c38c4688136c197bf9601e1c35ee07",
|
|
1404
1404
|
"tools/nexowatt-stable-v97-selftest.cjs": "4f50ad6e53b8de7eb045d56657cccd846883eacd8a877d51240d78153ba53d80",
|
|
1405
1405
|
"tools/nexowatt-sync-release-version.cjs": "2478d714533ece21a275071ef6e5467f73c2fa33d0a63d76f408dc048a86c6f6",
|
|
1406
1406
|
"tools/nexowatt-ui-overview-runtime-selftest.cjs": "83255e5d3c9a548013f6e9a74706644d15d98450d0bfa2eb3da83c740d8618ea",
|
|
1407
1407
|
"tools/nexowatt-update-selftest.cjs": "c38c454135f98de683de8fa15fc4b9032063823f0f55fcfc8b675f551fd342f5",
|
|
1408
|
-
"tools/nexowatt-user-area-selftest.cjs": "
|
|
1409
|
-
"tools/nexowatt-
|
|
1410
|
-
"tools/nexowatt-validate-package.cjs": "
|
|
1408
|
+
"tools/nexowatt-user-area-selftest.cjs": "0c06a21ba8629b904ea5012b9273d02e831bf7cd1b86c48cd499196aebb982bf",
|
|
1409
|
+
"tools/nexowatt-v7109-clean-core-selftest.cjs": "9f2f863b7e1ccf9d66f157724de693df510fb14bc9bbd6efd86b034869edf720",
|
|
1410
|
+
"tools/nexowatt-validate-package.cjs": "f7928547ef14d6704541b585ab661230ceddbe80d6e31a5efbe876272481aaa5",
|
|
1411
1411
|
"tools/nexowatt-value-column-selftest.cjs": "29d0a9bbea05a87dcf8ee09c86cc81acb6c59e1e34801890768f5e342083871a",
|
|
1412
1412
|
"tools/nexowatt-version-sync-selftest.cjs": "65d7c8634b6d5581f337365e13a1a9432c7d47dbf5aebc237886730c32ba5e94",
|
|
1413
1413
|
"tsconfig.build.json": "d3a31263975a13de77b97af9ff246d89931f3abb594047be2739cf11378b97f5",
|
|
@@ -1554,7 +1554,7 @@ html.eos-route-intro .eos-overview-edit-controls .MuiFab-root { position:static
|
|
|
1554
1554
|
|
|
1555
1555
|
|
|
1556
1556
|
|
|
1557
|
-
/* NexoWatt EOS 7.10.
|
|
1557
|
+
/* NexoWatt EOS 7.10.9 – clean modern core operating surfaces.
|
|
1558
1558
|
These rules are presentation-only: native ioBroker/EOS event handlers,
|
|
1559
1559
|
accordions, state editors and virtualized tables remain authoritative. */
|
|
1560
1560
|
|
|
@@ -1566,91 +1566,6 @@ html.eos-app .nexowatt-native-nav-item:has(a[href*="tab-enums"]) {
|
|
|
1566
1566
|
display: none !important;
|
|
1567
1567
|
}
|
|
1568
1568
|
|
|
1569
|
-
.eos-technical-surface-header {
|
|
1570
|
-
position: sticky;
|
|
1571
|
-
top: 0;
|
|
1572
|
-
z-index: 80;
|
|
1573
|
-
box-sizing: border-box;
|
|
1574
|
-
min-height: 104px;
|
|
1575
|
-
display: grid;
|
|
1576
|
-
grid-template-columns: 58px minmax(0, 1fr) auto;
|
|
1577
|
-
align-items: center;
|
|
1578
|
-
gap: 16px;
|
|
1579
|
-
margin: 12px 14px 14px;
|
|
1580
|
-
padding: 16px 20px;
|
|
1581
|
-
color: #effcff;
|
|
1582
|
-
border: 1px solid rgba(0, 229, 138, .25);
|
|
1583
|
-
border-radius: 19px;
|
|
1584
|
-
background:
|
|
1585
|
-
radial-gradient(circle at 4% 20%, rgba(0, 229, 138, .16), transparent 31%),
|
|
1586
|
-
radial-gradient(circle at 92% 20%, rgba(69, 213, 255, .10), transparent 30%),
|
|
1587
|
-
linear-gradient(135deg, rgba(7, 31, 45, .97), rgba(3, 15, 27, .97));
|
|
1588
|
-
box-shadow: 0 15px 34px rgba(0, 0, 0, .28), inset 0 1px 0 rgba(255, 255, 255, .045);
|
|
1589
|
-
backdrop-filter: blur(16px) saturate(120%);
|
|
1590
|
-
}
|
|
1591
|
-
.eos-technical-surface-icon {
|
|
1592
|
-
width: 54px;
|
|
1593
|
-
height: 54px;
|
|
1594
|
-
display: grid;
|
|
1595
|
-
place-items: center;
|
|
1596
|
-
color: #061923;
|
|
1597
|
-
border: 1px solid rgba(255, 255, 255, .22);
|
|
1598
|
-
border-radius: 17px;
|
|
1599
|
-
background: linear-gradient(135deg, #00e58a, #45d5ff);
|
|
1600
|
-
box-shadow: 0 12px 25px rgba(0, 229, 138, .16), inset 0 1px 0 rgba(255,255,255,.28);
|
|
1601
|
-
}
|
|
1602
|
-
.eos-technical-surface-icon svg {
|
|
1603
|
-
width: 28px;
|
|
1604
|
-
height: 28px;
|
|
1605
|
-
fill: none;
|
|
1606
|
-
stroke: currentColor;
|
|
1607
|
-
stroke-width: 1.9;
|
|
1608
|
-
stroke-linecap: round;
|
|
1609
|
-
stroke-linejoin: round;
|
|
1610
|
-
}
|
|
1611
|
-
.eos-technical-surface-copy { min-width: 0; }
|
|
1612
|
-
.eos-technical-surface-copy > span {
|
|
1613
|
-
display: block;
|
|
1614
|
-
margin-bottom: 3px;
|
|
1615
|
-
color: #55eeb0;
|
|
1616
|
-
font-size: 10px;
|
|
1617
|
-
font-weight: 950;
|
|
1618
|
-
letter-spacing: .18em;
|
|
1619
|
-
}
|
|
1620
|
-
.eos-technical-surface-copy h1 {
|
|
1621
|
-
margin: 0;
|
|
1622
|
-
color: #f2fbff;
|
|
1623
|
-
font-size: clamp(23px, 2.2vw, 32px);
|
|
1624
|
-
line-height: 1.12;
|
|
1625
|
-
}
|
|
1626
|
-
.eos-technical-surface-copy p {
|
|
1627
|
-
margin: 6px 0 0;
|
|
1628
|
-
max-width: 780px;
|
|
1629
|
-
color: #9dbbc8;
|
|
1630
|
-
font-size: 13px;
|
|
1631
|
-
line-height: 1.45;
|
|
1632
|
-
}
|
|
1633
|
-
.eos-technical-surface-meta {
|
|
1634
|
-
min-width: 150px;
|
|
1635
|
-
display: grid;
|
|
1636
|
-
grid-template-columns: 10px 1fr;
|
|
1637
|
-
align-items: center;
|
|
1638
|
-
gap: 1px 8px;
|
|
1639
|
-
padding: 10px 13px;
|
|
1640
|
-
border: 1px solid rgba(133, 193, 218, .17);
|
|
1641
|
-
border-radius: 13px;
|
|
1642
|
-
background: rgba(3, 17, 28, .66);
|
|
1643
|
-
}
|
|
1644
|
-
.eos-technical-surface-meta i {
|
|
1645
|
-
grid-row: 1 / span 2;
|
|
1646
|
-
width: 9px;
|
|
1647
|
-
height: 9px;
|
|
1648
|
-
border-radius: 50%;
|
|
1649
|
-
background: #00e58a;
|
|
1650
|
-
box-shadow: 0 0 12px rgba(0,229,138,.8);
|
|
1651
|
-
}
|
|
1652
|
-
.eos-technical-surface-meta strong { color: #eafaff; font-size: 12px; }
|
|
1653
|
-
.eos-technical-surface-meta small { color: #83a8b8; font-size: 10px; }
|
|
1654
1569
|
|
|
1655
1570
|
/* Shared technical toolbars. */
|
|
1656
1571
|
html.eos-app #app-paper[data-eos-technical-surface] .MuiToolbar-root,
|
|
@@ -1860,17 +1775,6 @@ html.eos-route-logs #app-paper code {
|
|
|
1860
1775
|
}
|
|
1861
1776
|
|
|
1862
1777
|
@media (max-width: 850px) {
|
|
1863
|
-
.eos-technical-surface-header {
|
|
1864
|
-
grid-template-columns: 46px minmax(0, 1fr);
|
|
1865
|
-
min-height: 92px;
|
|
1866
|
-
margin: 9px;
|
|
1867
|
-
padding: 14px;
|
|
1868
|
-
gap: 12px;
|
|
1869
|
-
border-radius: 16px;
|
|
1870
|
-
}
|
|
1871
|
-
.eos-technical-surface-icon { width: 44px; height: 44px; border-radius: 13px; }
|
|
1872
|
-
.eos-technical-surface-icon svg { width: 23px; height: 23px; }
|
|
1873
|
-
.eos-technical-surface-meta { grid-column: 1 / -1; min-width: 0; }
|
|
1874
1778
|
html.eos-app #app-paper[data-eos-technical-surface] .MuiToolbar-root,
|
|
1875
1779
|
html.eos-app #app-paper[data-eos-technical-surface] [role="toolbar"],
|
|
1876
1780
|
html.eos-route-instances #app-paper .MuiAccordion-root,
|
package/adminWww/index.html
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
<meta http-equiv="Cache-Control" content="no-store, no-cache, must-revalidate" />
|
|
9
9
|
<meta http-equiv="Pragma" content="no-cache" />
|
|
10
10
|
<meta http-equiv="Expires" content="0" />
|
|
11
|
-
<script src="./js/eos-manual-write-policy.js?v=
|
|
11
|
+
<script src="./js/eos-manual-write-policy.js?v=7109"></script>
|
|
12
12
|
<script type="module" src="./assets/hostInit-v84.js?v=84"></script>
|
|
13
13
|
|
|
14
14
|
<meta charset="utf-8" />
|
|
@@ -36,8 +36,8 @@
|
|
|
36
36
|
rel="stylesheet"
|
|
37
37
|
href="css/leaflet.css"
|
|
38
38
|
/>
|
|
39
|
-
<link rel="stylesheet" href="./css/nexowatt-native-shell.css?v=
|
|
40
|
-
<link rel="stylesheet" href="./css/eos-ems-overview.css?v=
|
|
39
|
+
<link rel="stylesheet" href="./css/nexowatt-native-shell.css?v=7109" />
|
|
40
|
+
<link rel="stylesheet" href="./css/eos-ems-overview.css?v=7109" />
|
|
41
41
|
<link rel="stylesheet" href="./css/eos-auto-update.css?v=7103" />
|
|
42
42
|
<link
|
|
43
43
|
rel="manifest"
|
|
@@ -160,22 +160,22 @@
|
|
|
160
160
|
</script>
|
|
161
161
|
<link rel="modulepreload" crossorigin href="./assets/preload-helper-BDBacUwf.js">
|
|
162
162
|
<link rel="modulepreload" crossorigin href="./assets/iobroker_admin__mf_v__runtimeInit__mf_v__-g2X2zhAf.js">
|
|
163
|
-
<script defer src="./js/eos-role-bootstrap.js?v=
|
|
164
|
-
<script defer src="./js/eos-policy-client.js?v=
|
|
165
|
-
<script defer src="./js/eos-branding-sanitizer.js?v=
|
|
166
|
-
<script defer src="./js/nexowatt-native-shell.js?v=
|
|
167
|
-
<script defer src="./js/eos-native-security.js?v=
|
|
168
|
-
<script defer src="./js/eos-basic-settings.js?v=
|
|
169
|
-
<script defer src="./js/eos-role-ui.js?v=
|
|
170
|
-
<script defer src="./js/eos-ems-overview.js?v=
|
|
163
|
+
<script defer src="./js/eos-role-bootstrap.js?v=7109" data-eos-entry="./assets/index-CQZugZ1z-v84.js?v=84"></script>
|
|
164
|
+
<script defer src="./js/eos-policy-client.js?v=7109"></script>
|
|
165
|
+
<script defer src="./js/eos-branding-sanitizer.js?v=7109"></script>
|
|
166
|
+
<script defer src="./js/nexowatt-native-shell.js?v=7109"></script>
|
|
167
|
+
<script defer src="./js/eos-native-security.js?v=7109"></script>
|
|
168
|
+
<script defer src="./js/eos-basic-settings.js?v=7109"></script>
|
|
169
|
+
<script defer src="./js/eos-role-ui.js?v=7109"></script>
|
|
170
|
+
<script defer src="./js/eos-ems-overview.js?v=7109"></script>
|
|
171
171
|
|
|
172
172
|
<script defer src="./js/eos-auto-update.js?v=7103"></script>
|
|
173
|
-
<script defer src="./js/eos-assistant.js?v=
|
|
173
|
+
<script defer src="./js/eos-assistant.js?v=7109"></script>
|
|
174
174
|
</head>
|
|
175
175
|
<body>
|
|
176
176
|
<noscript>Für NexoWatt EOS muss JavaScript aktiviert sein.</noscript>
|
|
177
177
|
<div id="root"></div>
|
|
178
|
-
<script defer src="static/js/nexowatt-stable-login.js?v=
|
|
179
|
-
<script defer src="static/js/nexowatt-stable-
|
|
178
|
+
<script defer src="static/js/nexowatt-stable-login.js?v=7109"></script>
|
|
179
|
+
<script defer src="static/js/nexowatt-stable-v7109.js?v=7109"></script>
|
|
180
180
|
</body>
|
|
181
181
|
</html>
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
(() => {
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
-
const VERSION = '
|
|
4
|
+
const VERSION = 'v7109-clean-core-surfaces-rbac';
|
|
5
5
|
const script = document.currentScript || document.querySelector('script[src*="eos-role-bootstrap.js"]');
|
|
6
6
|
const entry = script?.dataset?.eosEntry || '';
|
|
7
7
|
let launched = false;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
(() => {
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
-
const VERSION = '
|
|
4
|
+
const VERSION = 'v7109-clean-core-surfaces-rbac';
|
|
5
5
|
window.NEXOWATT_EOS_ROLE_UI_VERSION = VERSION;
|
|
6
6
|
|
|
7
7
|
const state = {
|
|
@@ -560,7 +560,7 @@
|
|
|
560
560
|
const scrubInheritedUiAdminSession = () => safe(() => {
|
|
561
561
|
if (state.role !== 'enduser') return;
|
|
562
562
|
const user = String(state.policy?.user || state.policy?.userId || '').replace(/^system\.user\./, '') || state.role;
|
|
563
|
-
const key = `eosUiAdminSessionScrubbed:
|
|
563
|
+
const key = `eosUiAdminSessionScrubbed:v7109:${user}:${state.role}`;
|
|
564
564
|
if (sessionStorage.getItem(key) === '1') return;
|
|
565
565
|
sessionStorage.setItem(key, '1');
|
|
566
566
|
const frame = document.createElement('iframe');
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
(() => {
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
-
const VERSION = '
|
|
4
|
+
const VERSION = 'v7109-nexowatt-native-shell-clean-core-surfaces';
|
|
5
5
|
const previous = window.NEXOWATT_NATIVE_SHELL;
|
|
6
6
|
if (previous?.version === VERSION) return;
|
|
7
7
|
previous?.destroy?.();
|
|
@@ -25,27 +25,7 @@
|
|
|
25
25
|
const safe = fn => {
|
|
26
26
|
try { return fn(); } catch (_) { return undefined; }
|
|
27
27
|
};
|
|
28
|
-
const
|
|
29
|
-
const TECHNICAL_SURFACES = Object.freeze({
|
|
30
|
-
instances: {
|
|
31
|
-
eyebrow: 'EOS SYSTEMDIENSTE',
|
|
32
|
-
title: 'Dienste & Instanzen',
|
|
33
|
-
text: 'Laufzeit, Status, Ressourcen und Konfiguration aller aktiven EOS-Dienste auf einen Blick.',
|
|
34
|
-
icon: '<svg viewBox="0 0 24 24" aria-hidden="true"><rect x="4" y="4" width="16" height="6" rx="2"/><rect x="4" y="14" width="16" height="6" rx="2"/><path d="M8 7h.01M8 17h.01M12 7h5M12 17h5"/></svg>',
|
|
35
|
-
},
|
|
36
|
-
objects: {
|
|
37
|
-
eyebrow: 'EOS DATENEBENE',
|
|
38
|
-
title: 'Datenpunkte & Zustände',
|
|
39
|
-
text: 'Messwerte, Status und freigegebene Steuerwerte in einer klaren technischen Ansicht.',
|
|
40
|
-
icon: '<svg viewBox="0 0 24 24" aria-hidden="true"><circle cx="6" cy="12" r="2.5"/><circle cx="18" cy="6" r="2.5"/><circle cx="18" cy="18" r="2.5"/><path d="M8.3 10.9 15.7 7M8.3 13.1l7.4 3.9"/></svg>',
|
|
41
|
-
},
|
|
42
|
-
logs: {
|
|
43
|
-
eyebrow: 'EOS DIAGNOSE',
|
|
44
|
-
title: 'Systemlogs',
|
|
45
|
-
text: 'Live-Protokoll für Adapter, Dienste und Systemereignisse mit klarer Priorisierung.',
|
|
46
|
-
icon: '<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M5 5h14M5 10h14M5 15h9M5 20h6"/><circle cx="18" cy="17" r="3"/><path d="m20.2 19.2 1.8 1.8"/></svg>',
|
|
47
|
-
},
|
|
48
|
-
});
|
|
28
|
+
const TECHNICAL_SURFACE_KEYS = new Set(['instances', 'objects', 'logs']);
|
|
49
29
|
|
|
50
30
|
// Navigation labels and icons are rendered natively by Drawer.tsx.
|
|
51
31
|
// This runtime only positions the shell and never rewrites React content.
|
|
@@ -197,18 +177,11 @@
|
|
|
197
177
|
<div class="eos-overview-role" data-nexowatt-overview-role="${role}"><span class="eos-overview-status-dot"></span>${config.label}</div>`;
|
|
198
178
|
};
|
|
199
179
|
|
|
200
|
-
const roleLabel = () => {
|
|
201
|
-
const role = String(window.NEXOWATT_EOS_ACCESS_ROLE || 'unknown').toLowerCase();
|
|
202
|
-
if (role === 'admin') return 'Admin / Service';
|
|
203
|
-
if (role === 'installer' || role === 'installateur') return 'Installateur';
|
|
204
|
-
return 'Endkunde';
|
|
205
|
-
};
|
|
206
|
-
|
|
207
180
|
const classifyTechnicalRows = (paper, surface) => {
|
|
208
181
|
if (!paper || !surface) return;
|
|
209
182
|
if (surface === 'instances') {
|
|
210
183
|
paper.querySelectorAll('.MuiAccordion-root,tbody tr,.MuiTableRow-root,[role="row"]').forEach(row => {
|
|
211
|
-
if (row.
|
|
184
|
+
if (row.classList.contains('MuiTableHead-root')) return;
|
|
212
185
|
row.classList.add('eos-service-row');
|
|
213
186
|
const expanded = row.classList.contains('Mui-expanded') || !!row.querySelector?.('[aria-expanded="true"]');
|
|
214
187
|
row.classList.toggle('eos-service-row-expanded', expanded);
|
|
@@ -217,14 +190,12 @@
|
|
|
217
190
|
}
|
|
218
191
|
if (surface === 'objects') {
|
|
219
192
|
paper.querySelectorAll('[role="row"],.MuiTableRow-root,.MuiDataGrid-row').forEach(row => {
|
|
220
|
-
if (row.closest?.('.eos-technical-surface-header')) return;
|
|
221
193
|
row.classList.add('eos-datapoint-row');
|
|
222
194
|
});
|
|
223
195
|
return;
|
|
224
196
|
}
|
|
225
197
|
if (surface === 'logs') {
|
|
226
198
|
paper.querySelectorAll('tbody tr,.MuiTableRow-root,[role="row"]').forEach(row => {
|
|
227
|
-
if (row.closest?.('.eos-technical-surface-header')) return;
|
|
228
199
|
const text = String(row.textContent || '').toLowerCase();
|
|
229
200
|
let level = 'info';
|
|
230
201
|
if (/\b(error|fatal|fehler|kritisch|critical)\b/.test(text)) level = 'error';
|
|
@@ -241,38 +212,14 @@
|
|
|
241
212
|
const paper = document.getElementById('app-paper');
|
|
242
213
|
if (!paper || isLogin()) return;
|
|
243
214
|
const surface = routeKey(currentTab());
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
215
|
+
// The tabs are self-explanatory. Keep the modern route styling and row
|
|
216
|
+
// classification, but never insert a second title/description panel.
|
|
217
|
+
document.getElementById('eos-technical-surface-header')?.remove();
|
|
218
|
+
if (!TECHNICAL_SURFACE_KEYS.has(surface)) {
|
|
248
219
|
paper.removeAttribute('data-eos-technical-surface');
|
|
249
220
|
return;
|
|
250
221
|
}
|
|
251
222
|
paper.setAttribute('data-eos-technical-surface', surface);
|
|
252
|
-
let header = existing;
|
|
253
|
-
if (!header) {
|
|
254
|
-
header = document.createElement('section');
|
|
255
|
-
header.id = 'eos-technical-surface-header';
|
|
256
|
-
header.className = 'eos-technical-surface-header';
|
|
257
|
-
header.setAttribute('aria-live', 'polite');
|
|
258
|
-
paper.insertBefore(header, paper.firstChild || null);
|
|
259
|
-
}
|
|
260
|
-
if (header.dataset.eosSurface !== surface || header.dataset.eosRole !== roleLabel()) {
|
|
261
|
-
header.dataset.eosSurface = surface;
|
|
262
|
-
header.dataset.eosRole = roleLabel();
|
|
263
|
-
header.innerHTML = `
|
|
264
|
-
<div class="eos-technical-surface-icon">${config.icon}</div>
|
|
265
|
-
<div class="eos-technical-surface-copy">
|
|
266
|
-
<span>${escapeHtml(config.eyebrow)}</span>
|
|
267
|
-
<h1>${escapeHtml(config.title)}</h1>
|
|
268
|
-
<p>${escapeHtml(config.text)}</p>
|
|
269
|
-
</div>
|
|
270
|
-
<div class="eos-technical-surface-meta">
|
|
271
|
-
<i aria-hidden="true"></i>
|
|
272
|
-
<strong>${escapeHtml(roleLabel())}</strong>
|
|
273
|
-
<small>${surface === 'logs' ? 'Live-Diagnose' : surface === 'instances' ? 'Betriebsbereit' : 'Zentrale Datenansicht'}</small>
|
|
274
|
-
</div>`;
|
|
275
|
-
}
|
|
276
223
|
classifyTechnicalRows(paper, surface);
|
|
277
224
|
};
|
|
278
225
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
(() => {
|
|
2
2
|
'use strict';
|
|
3
|
-
const VERSION = '
|
|
3
|
+
const VERSION = 'v7109-scroll-standard-password';
|
|
4
4
|
const ensureScroll = () => {
|
|
5
5
|
const root = document.documentElement;
|
|
6
6
|
const paper = document.getElementById('app-paper');
|
|
@@ -23,5 +23,5 @@
|
|
|
23
23
|
const schedule=()=>{if(scheduled)return;scheduled=true;requestAnimationFrame(()=>{scheduled=false;apply();});};
|
|
24
24
|
const start=()=>{apply();new MutationObserver(schedule).observe(document.documentElement,{subtree:true,childList:true});window.addEventListener('hashchange',schedule);window.addEventListener('resize',schedule,{passive:true});};
|
|
25
25
|
document.readyState==='loading'?document.addEventListener('DOMContentLoaded',start,{once:true}):start();
|
|
26
|
-
window.
|
|
26
|
+
window.NEXOWATT_EOS_STABLE_V7109=Object.freeze({version:VERSION,refresh:apply,ensureScroll});
|
|
27
27
|
})();
|
package/io-package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"common": {
|
|
3
3
|
"name": "eos-admin",
|
|
4
|
-
"version": "7.10.
|
|
4
|
+
"version": "7.10.9",
|
|
5
5
|
"titleLang": {
|
|
6
6
|
"en": "NexoWatt EOS Admin",
|
|
7
7
|
"de": "NexoWatt EOS Admin",
|
|
@@ -364,7 +364,7 @@
|
|
|
364
364
|
"icon": "admin.svg",
|
|
365
365
|
"messagebox": true,
|
|
366
366
|
"enabled": true,
|
|
367
|
-
"extIcon": "https://unpkg.com/iobroker.eos-admin@7.10.
|
|
367
|
+
"extIcon": "https://unpkg.com/iobroker.eos-admin@7.10.9/admin/admin.svg",
|
|
368
368
|
"keywords": [
|
|
369
369
|
"NexoWatt",
|
|
370
370
|
"EOS",
|
|
@@ -375,7 +375,7 @@
|
|
|
375
375
|
"licensed"
|
|
376
376
|
],
|
|
377
377
|
"compact": true,
|
|
378
|
-
"readme": "https://unpkg.com/iobroker.eos-admin@7.10.
|
|
378
|
+
"readme": "https://unpkg.com/iobroker.eos-admin@7.10.9/README.md",
|
|
379
379
|
"authors": [
|
|
380
380
|
"NexoWatt"
|
|
381
381
|
],
|
|
@@ -443,7 +443,7 @@
|
|
|
443
443
|
"nondeletable": false,
|
|
444
444
|
"allowAdapterUpdate": true,
|
|
445
445
|
"allowAdapterDelete": false,
|
|
446
|
-
"meta": "https://unpkg.com/iobroker.eos-admin@7.10.
|
|
446
|
+
"meta": "https://unpkg.com/iobroker.eos-admin@7.10.9/io-package.json",
|
|
447
447
|
"npmPackage": "iobroker.eos-admin",
|
|
448
448
|
"packetName": "iobroker.eos-admin",
|
|
449
449
|
"publisher": "NexoWatt"
|
|
@@ -1220,5 +1220,5 @@
|
|
|
1220
1220
|
}
|
|
1221
1221
|
}
|
|
1222
1222
|
},
|
|
1223
|
-
"version": "7.10.
|
|
1223
|
+
"version": "7.10.9"
|
|
1224
1224
|
}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "iobroker.eos-admin",
|
|
3
3
|
"description": "NexoWatt EOS Admin – repaired stable baseline with restart-safe automatic updates, native account passwords and persistent cockpit scrolling.",
|
|
4
|
-
"version": "7.10.
|
|
4
|
+
"version": "7.10.9",
|
|
5
5
|
"contributors": [
|
|
6
6
|
"bluefox <dogafox@gmail.com>",
|
|
7
7
|
"apollon77",
|
|
@@ -144,7 +144,7 @@
|
|
|
144
144
|
"SECURITY_ROLE_MATRIX_V7.10.7.md",
|
|
145
145
|
"tools/nexowatt-user-area-selftest.cjs",
|
|
146
146
|
"tools/nexowatt-installer-ems-selftest.cjs",
|
|
147
|
-
"tools/nexowatt-
|
|
147
|
+
"tools/nexowatt-v7109-clean-core-selftest.cjs"
|
|
148
148
|
],
|
|
149
149
|
"scripts": {
|
|
150
150
|
"npm": "npm i -f && cd src-admin && npm i -f",
|
|
@@ -179,7 +179,7 @@
|
|
|
179
179
|
"nexowatt:repo-entry": "node tools/nexowatt-generate-repo-entry.cjs",
|
|
180
180
|
"nexowatt:patch-repo": "node tools/nexowatt-patch-repo.cjs",
|
|
181
181
|
"nexowatt:repair-update": "node tools/nexowatt-repair-eos-admin-update.cjs",
|
|
182
|
-
"check:eos-stability": "node tools/nexowatt-stability-check.cjs && node tools/nexowatt-esm-syntax-selftest.cjs && node tools/nexowatt-backend-runtime-selftest.cjs && node tools/nexowatt-prebuilt-release-selftest.cjs && node tools/nexowatt-import-integrity-selftest.cjs && node tools/nexowatt-entrypoint-smoke-selftest.cjs && node tools/nexowatt-frontend-graph-check.cjs && node tools/nexowatt-policy-selftest.cjs && node tools/nexowatt-publish-channel-selftest.cjs && node tools/nexowatt-release-defaults-selftest.cjs && node tools/nexowatt-role-access-selftest.cjs && node tools/nexowatt-internal-reserve-selftest.cjs && node tools/nexowatt-modern-ui-selftest.cjs && node tools/nexowatt-login-layout-selftest.cjs && node tools/nexowatt-branding-selftest.cjs && node tools/nexowatt-default-port-selftest.cjs && node tools/nexowatt-module-popup-selftest.cjs && node tools/nexowatt-datapoint-selftest.cjs && node tools/nexowatt-update-selftest.cjs && node tools/nexowatt-datapoint-interaction-selftest.cjs && node tools/nexowatt-manual-write-policy-selftest.cjs && node tools/nexowatt-value-column-selftest.cjs && node tools/nexowatt-native-shell-selftest.cjs && node tools/nexowatt-assistant-separation-selftest.cjs && node tools/nexowatt-runtime-cleanup-selftest.cjs && node tools/nexowatt-version-sync-selftest.cjs && node tools/nexowatt-merge-update-selftest.cjs && node tools/nexowatt-password-write-selftest.cjs && node tools/nexowatt-account-password-flow-selftest.cjs && npm run check:eos-stable-v7103 && node tools/nexowatt-ems-overview-selftest.cjs && node tools/nexowatt-ui-overview-runtime-selftest.cjs && node tools/nexowatt-auto-update-selftest.cjs && node tools/nexowatt-auto-update-placement-selftest.cjs && node tools/nexowatt-role-security-selftest.cjs && node tools/nexowatt-user-area-selftest.cjs && node tools/nexowatt-installer-ems-selftest.cjs && node tools/nexowatt-
|
|
182
|
+
"check:eos-stability": "node tools/nexowatt-stability-check.cjs && node tools/nexowatt-esm-syntax-selftest.cjs && node tools/nexowatt-backend-runtime-selftest.cjs && node tools/nexowatt-prebuilt-release-selftest.cjs && node tools/nexowatt-import-integrity-selftest.cjs && node tools/nexowatt-entrypoint-smoke-selftest.cjs && node tools/nexowatt-frontend-graph-check.cjs && node tools/nexowatt-policy-selftest.cjs && node tools/nexowatt-publish-channel-selftest.cjs && node tools/nexowatt-release-defaults-selftest.cjs && node tools/nexowatt-role-access-selftest.cjs && node tools/nexowatt-internal-reserve-selftest.cjs && node tools/nexowatt-modern-ui-selftest.cjs && node tools/nexowatt-login-layout-selftest.cjs && node tools/nexowatt-branding-selftest.cjs && node tools/nexowatt-default-port-selftest.cjs && node tools/nexowatt-module-popup-selftest.cjs && node tools/nexowatt-datapoint-selftest.cjs && node tools/nexowatt-update-selftest.cjs && node tools/nexowatt-datapoint-interaction-selftest.cjs && node tools/nexowatt-manual-write-policy-selftest.cjs && node tools/nexowatt-value-column-selftest.cjs && node tools/nexowatt-native-shell-selftest.cjs && node tools/nexowatt-assistant-separation-selftest.cjs && node tools/nexowatt-runtime-cleanup-selftest.cjs && node tools/nexowatt-version-sync-selftest.cjs && node tools/nexowatt-merge-update-selftest.cjs && node tools/nexowatt-password-write-selftest.cjs && node tools/nexowatt-account-password-flow-selftest.cjs && npm run check:eos-stable-v7103 && node tools/nexowatt-ems-overview-selftest.cjs && node tools/nexowatt-ui-overview-runtime-selftest.cjs && node tools/nexowatt-auto-update-selftest.cjs && node tools/nexowatt-auto-update-placement-selftest.cjs && node tools/nexowatt-role-security-selftest.cjs && node tools/nexowatt-user-area-selftest.cjs && node tools/nexowatt-installer-ems-selftest.cjs && node tools/nexowatt-v7109-clean-core-selftest.cjs",
|
|
183
183
|
"nexowatt:patch-built-frontend": "node tools/nexowatt-patch-built-frontend.cjs",
|
|
184
184
|
"clean:eos-runtime": "node tools/nexowatt-clean-legacy-runtime.cjs",
|
|
185
185
|
"precheck:eos-package": "npm run sync:eos-version && npm run prepare:eos-release-defaults && npm run clean:eos-runtime",
|
|
@@ -210,7 +210,7 @@
|
|
|
210
210
|
"test:eos-auto-update-placement": "node tools/nexowatt-auto-update-placement-selftest.cjs",
|
|
211
211
|
"check:eos-role-security": "node tools/nexowatt-role-security-selftest.cjs",
|
|
212
212
|
"test:eos-installer-ems": "node tools/nexowatt-installer-ems-selftest.cjs",
|
|
213
|
-
"check:eos-
|
|
213
|
+
"check:eos-v7109-clean-core": "node tools/nexowatt-v7109-clean-core-selftest.cjs"
|
|
214
214
|
},
|
|
215
215
|
"author": "NexoWatt",
|
|
216
216
|
"private": false,
|
|
@@ -221,7 +221,7 @@
|
|
|
221
221
|
},
|
|
222
222
|
"nexowattReleasePolicy": {
|
|
223
223
|
"distTag": "latest",
|
|
224
|
-
"purpose": "stable NexoWatt EOS Admin 7.10.
|
|
224
|
+
"purpose": "stable NexoWatt EOS Admin 7.10.9 clean modern core surfaces without redundant page information panels"
|
|
225
225
|
},
|
|
226
226
|
"publisher": "NexoWatt"
|
|
227
227
|
}
|
|
@@ -60,6 +60,28 @@ function shellNumber(root) {
|
|
|
60
60
|
throw new Error('Invalid shellCacheVersion in NEXOWATT_EOS_BUILD_INFO.json');
|
|
61
61
|
}
|
|
62
62
|
|
|
63
|
+
function releaseNumber(root) {
|
|
64
|
+
const pkg = readJson(path.join(root, 'package.json'));
|
|
65
|
+
const parts = String(pkg.version || '').split('.').slice(0, 3).map(part => {
|
|
66
|
+
const match = part.match(/^\d+/);
|
|
67
|
+
return match ? match[0] : '';
|
|
68
|
+
});
|
|
69
|
+
if (parts.length !== 3 || parts.some(part => !part)) {
|
|
70
|
+
throw new Error(`Invalid package version for release cleanup: ${pkg.version}`);
|
|
71
|
+
}
|
|
72
|
+
const value = Number(parts.join(''));
|
|
73
|
+
if (!Number.isFinite(value) || value <= 0) {
|
|
74
|
+
throw new Error(`Invalid package version for release cleanup: ${pkg.version}`);
|
|
75
|
+
}
|
|
76
|
+
return value;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
function isLegacyVersionedTool(file, activeRelease) {
|
|
80
|
+
const name = path.basename(file);
|
|
81
|
+
const match = name.match(/^nexowatt-v(\d+)-.+-selftest\.cjs$/i);
|
|
82
|
+
return !!match && Number(match[1]) !== activeRelease;
|
|
83
|
+
}
|
|
84
|
+
|
|
63
85
|
function walkFiles(dir) {
|
|
64
86
|
if (!fs.existsSync(dir)) return [];
|
|
65
87
|
const result = [];
|
|
@@ -96,6 +118,7 @@ function isLegacyVersionedRuntime(file, activeRuntime, activeShell) {
|
|
|
96
118
|
function collectLegacyRuntimeFiles(root = DEFAULT_ROOT) {
|
|
97
119
|
const activeRuntime = runtimeNumber(root);
|
|
98
120
|
const activeShell = shellNumber(root);
|
|
121
|
+
const activeRelease = releaseNumber(root);
|
|
99
122
|
const scanRoots = [
|
|
100
123
|
path.join(root, 'adminWww', 'assets'),
|
|
101
124
|
path.join(root, 'adminWww'),
|
|
@@ -109,11 +132,14 @@ function collectLegacyRuntimeFiles(root = DEFAULT_ROOT) {
|
|
|
109
132
|
if (isLegacyVersionedRuntime(file, activeRuntime, activeShell)) files.add(file);
|
|
110
133
|
}
|
|
111
134
|
}
|
|
135
|
+
for (const file of walkFiles(path.join(root, 'tools'))) {
|
|
136
|
+
if (isLegacyVersionedTool(file, activeRelease)) files.add(file);
|
|
137
|
+
}
|
|
112
138
|
for (const rel of LEGACY_OVERLAYS) {
|
|
113
139
|
const file = path.join(root, rel);
|
|
114
140
|
if (fs.existsSync(file)) files.add(file);
|
|
115
141
|
}
|
|
116
|
-
return { activeRuntime, activeShell, files: [...files].sort() };
|
|
142
|
+
return { activeRuntime, activeShell, activeRelease, files: [...files].sort() };
|
|
117
143
|
}
|
|
118
144
|
|
|
119
145
|
function cleanLegacyRuntime(options = {}) {
|
|
@@ -121,7 +147,7 @@ function cleanLegacyRuntime(options = {}) {
|
|
|
121
147
|
const dryRun = options.dryRun === true;
|
|
122
148
|
const quiet = options.quiet === true;
|
|
123
149
|
const silent = options.silent === true;
|
|
124
|
-
const { activeRuntime, activeShell, files } = collectLegacyRuntimeFiles(root);
|
|
150
|
+
const { activeRuntime, activeShell, activeRelease, files } = collectLegacyRuntimeFiles(root);
|
|
125
151
|
const removed = [];
|
|
126
152
|
const failed = [];
|
|
127
153
|
|
|
@@ -159,7 +185,7 @@ function cleanLegacyRuntime(options = {}) {
|
|
|
159
185
|
}
|
|
160
186
|
}
|
|
161
187
|
|
|
162
|
-
return { activeRuntime, activeShell, removed };
|
|
188
|
+
return { activeRuntime, activeShell, activeRelease, removed };
|
|
163
189
|
}
|
|
164
190
|
|
|
165
191
|
if (require.main === module) {
|
|
@@ -176,5 +202,7 @@ module.exports = {
|
|
|
176
202
|
collectLegacyRuntimeFiles,
|
|
177
203
|
cleanLegacyRuntime,
|
|
178
204
|
isLegacyVersionedRuntime,
|
|
205
|
+
isLegacyVersionedTool,
|
|
206
|
+
releaseNumber,
|
|
179
207
|
shellNumber,
|
|
180
208
|
};
|
|
@@ -15,7 +15,7 @@ const runtimeRole = read('adminWww/js/eos-role-ui.js');
|
|
|
15
15
|
const sourceWeb = read('src/lib/web.ts');
|
|
16
16
|
const runtimeWeb = read('build/lib/web.js');
|
|
17
17
|
|
|
18
|
-
assert.equal(pkg.version, '7.10.
|
|
18
|
+
assert.equal(pkg.version, '7.10.9', 'Installer EMS release must use npm version 7.10.9');
|
|
19
19
|
assert.equal(runtimeRole, sourceRole, 'built and source role runtimes must be identical');
|
|
20
20
|
|
|
21
21
|
for (const code of [sourceRole, runtimeRole]) {
|
|
@@ -32,9 +32,9 @@ const cleanupSource = read('tools/nexowatt-clean-legacy-runtime.cjs');
|
|
|
32
32
|
// visible header happened to contain "user". Only authenticated backend policy may define the role.
|
|
33
33
|
for (const html of [index, sourceIndex]) {
|
|
34
34
|
assert.doesNotMatch(html, /nexowatt-role-security\.js/i, 'legacy heuristic role guard is still loaded');
|
|
35
|
-
assert.match(html, /eos-role-bootstrap\.js\?v=
|
|
36
|
-
assert.match(html, /eos-policy-client\.js\?v=
|
|
37
|
-
assert.match(html, /eos-role-ui\.js\?v=
|
|
35
|
+
assert.match(html, /eos-role-bootstrap\.js\?v=7109/, 'authoritative role bootstrap cache tag is missing');
|
|
36
|
+
assert.match(html, /eos-policy-client\.js\?v=7109/, 'authoritative policy client cache tag is missing');
|
|
37
|
+
assert.match(html, /eos-role-ui\.js\?v=7109/, 'authoritative role UI cache tag is missing');
|
|
38
38
|
}
|
|
39
39
|
assert.equal(fs.existsSync(path.join(root, 'adminWww/nexowatt-role-security.js')), false, 'legacy runtime still exists');
|
|
40
40
|
assert.equal(fs.existsSync(path.join(root, 'build/lib/eosRoleSecurity.js')), false, 'legacy backend heuristic still exists');
|
|
@@ -143,7 +143,7 @@ assert.ok((io.instanceObjects || []).some(object => object?._id === 'info.uiTabs
|
|
|
143
143
|
assert.match(drawerSource, /backupAdapters\.has\(adapterName\) && instance\.enabled !== true/);
|
|
144
144
|
assert.match(builtDrawer, /o\.has\(A\)&&d\.enabled!==!0/);
|
|
145
145
|
|
|
146
|
-
// 7.10.
|
|
146
|
+
// 7.10.9 End User cleanup: system information is read-only and object actions disappear only for End User.
|
|
147
147
|
for (const code of [webSource, webBuilt]) {
|
|
148
148
|
assert.match(code, /nexowatt\/readonly\/system-info/, 'authenticated read-only system-info route is missing');
|
|
149
149
|
assert.match(code, /authenticationRequired/, 'read-only system-info route must require an authenticated session');
|
|
@@ -16,7 +16,9 @@ try {
|
|
|
16
16
|
fs.mkdirSync(path.join(temp, 'src-admin', 'public', 'static', 'js'), { recursive: true });
|
|
17
17
|
fs.mkdirSync(path.join(temp, 'adminWww', 'static', 'js'), { recursive: true });
|
|
18
18
|
fs.mkdirSync(path.join(temp, 'build', 'lib'), { recursive: true });
|
|
19
|
+
fs.mkdirSync(path.join(temp, 'tools'), { recursive: true });
|
|
19
20
|
fs.writeFileSync(path.join(temp, 'NEXOWATT_EOS_BUILD_INFO.json'), JSON.stringify({ runtimeEntry: 'v82', shellCacheVersion: 98 }));
|
|
21
|
+
fs.writeFileSync(path.join(temp, 'package.json'), JSON.stringify({ name: 'iobroker.eos-admin', version: '7.10.9' }));
|
|
20
22
|
|
|
21
23
|
const keep = [
|
|
22
24
|
'adminWww/assets/bootstrap-current-v82.js',
|
|
@@ -26,6 +28,7 @@ try {
|
|
|
26
28
|
'adminWww/static/js/nexowatt-stable-v98.js',
|
|
27
29
|
'src-admin/public/static/js/nexowatt-stable-v98.js',
|
|
28
30
|
'adminWww/static/js/nexowatt-stable-login.js',
|
|
31
|
+
'tools/nexowatt-v7109-clean-core-selftest.cjs',
|
|
29
32
|
];
|
|
30
33
|
const remove = [
|
|
31
34
|
'adminWww/assets/bootstrap-old-v54.js',
|
|
@@ -40,6 +43,7 @@ try {
|
|
|
40
43
|
'adminWww/nexowatt-role-security.js',
|
|
41
44
|
'src-admin/nexowatt-role-security.js',
|
|
42
45
|
'build/lib/eosRoleSecurity.js',
|
|
46
|
+
'tools/nexowatt-v7108-ui-foundation-selftest.cjs',
|
|
43
47
|
];
|
|
44
48
|
for (const rel of [...keep, ...remove]) {
|
|
45
49
|
const file = path.join(temp, rel);
|
|
@@ -50,6 +54,7 @@ try {
|
|
|
50
54
|
const result = cleanLegacyRuntime({ root: temp, quiet: true, silent: true });
|
|
51
55
|
assert.strictEqual(result.activeRuntime, 82);
|
|
52
56
|
assert.strictEqual(result.activeShell, 98);
|
|
57
|
+
assert.strictEqual(result.activeRelease, 7109);
|
|
53
58
|
assert.strictEqual(result.removed.length, remove.length);
|
|
54
59
|
for (const rel of keep) assert.ok(fs.existsSync(path.join(temp, rel)), `current runtime removed: ${rel}`);
|
|
55
60
|
for (const rel of remove) assert.ok(!fs.existsSync(path.join(temp, rel)), `legacy file remained: ${rel}`);
|
|
@@ -31,7 +31,7 @@ const autoUi = read('adminWww/js/eos-auto-update.js');
|
|
|
31
31
|
const autoCss = read('adminWww/css/eos-auto-update.css');
|
|
32
32
|
const autoTag = String(info.autoUpdateCacheTag || info.autoUpdateCacheVersion || info.shellCacheTag || info.shellCacheVersion);
|
|
33
33
|
|
|
34
|
-
must(pkg.version === '7.10.
|
|
34
|
+
must(pkg.version === '7.10.9' && io.version === '7.10.9' && io.common.version === '7.10.9' && info.version === '7.10.9', 'version drift');
|
|
35
35
|
must(io.native.eosRequireFirstLoginPassword === false && io.native.eosRequireFirstLoginPasswordChange === false, 'forced first password still enabled');
|
|
36
36
|
must(!index.includes('eos-account-management.js'), 'custom reset UI still loaded');
|
|
37
37
|
must(!boot.includes('installIntegratedFirstLogin(base);') && !boot.includes('showFirstLoginPassword(resolved, base);'), 'forced first-login UI still active');
|
|
@@ -49,7 +49,7 @@ must(!autoBackend.includes('extendForeignObjectAsync(this.instanceId'), 'runtime
|
|
|
49
49
|
must(web.includes('this.nexowattStableUpdateManager?.stop();'), 'auto-update manager is not stopped with the web server');
|
|
50
50
|
must(fs.existsSync(path.join(root, 'build/lib/eosRequestSecurity.js')), 'eosRequestSecurity runtime module missing');
|
|
51
51
|
|
|
52
|
-
// 7.10.4 placement acceptance remains mandatory in 7.10.
|
|
52
|
+
// 7.10.4 placement acceptance remains mandatory in 7.10.9: System Settings only.
|
|
53
53
|
must(index.includes(`eos-auto-update.js?v=${autoTag}`), 'auto-update JavaScript cache key missing');
|
|
54
54
|
must(index.includes(`eos-auto-update.css?v=${autoTag}`), 'auto-update CSS cache key missing');
|
|
55
55
|
must(autoUi.includes('[role="dialog"][aria-labelledby="system-settings-dialog-title"]'), 'System Settings selector missing');
|
|
@@ -13,7 +13,7 @@ const runtimeRole = read('adminWww/js/eos-role-ui.js');
|
|
|
13
13
|
const sourceMain = read('src/main.ts');
|
|
14
14
|
const builtMain = read('build/main.js');
|
|
15
15
|
|
|
16
|
-
assert.equal(pkg.version, '7.10.
|
|
16
|
+
assert.equal(pkg.version, '7.10.9', 'release must use a new npm version');
|
|
17
17
|
for (const web of [sourceWeb, builtWeb]) {
|
|
18
18
|
assert.match(web, /nexowatt\/readonly\/system-info/, 'read-only system information endpoint missing');
|
|
19
19
|
assert.match(web, /sendEosReadonlySystemInfo/, 'read-only system information handler missing');
|
package/tools/{nexowatt-v7108-ui-foundation-selftest.cjs → nexowatt-v7109-clean-core-selftest.cjs}
RENAMED
|
@@ -21,7 +21,7 @@ const runtimeCss = read('adminWww/css/nexowatt-native-shell.css');
|
|
|
21
21
|
const drawer = read('src-admin/src/components/Drawer.tsx');
|
|
22
22
|
const index = read('adminWww/index.html');
|
|
23
23
|
|
|
24
|
-
assert.equal(pkg.version, '7.10.
|
|
24
|
+
assert.equal(pkg.version, '7.10.9', 'clean core release must use npm version 7.10.9');
|
|
25
25
|
assert.equal(sourceRole, runtimeRole, 'role source/runtime drift');
|
|
26
26
|
assert.equal(sourceBoot, runtimeBoot, 'bootstrap source/runtime drift');
|
|
27
27
|
assert.equal(sourceShell, runtimeShell, 'shell source/runtime drift');
|
|
@@ -40,25 +40,28 @@ for (const code of [sourceBoot, runtimeBoot]) {
|
|
|
40
40
|
assert.doesNotMatch(code, /route === 'tab-enums'/, 'End User bootstrap still releases Structure');
|
|
41
41
|
}
|
|
42
42
|
for (const code of [sourceShell, runtimeShell]) {
|
|
43
|
-
assert.match(code, /
|
|
44
|
-
assert.match(code, /
|
|
45
|
-
assert.match(code, /
|
|
46
|
-
assert.match(code, /ensureTechnicalSurface\(\)/, 'technical surface is not applied');
|
|
43
|
+
assert.match(code, /const TECHNICAL_SURFACE_KEYS = new Set\(\['instances', 'objects', 'logs'\]\)/, 'technical route set missing');
|
|
44
|
+
assert.match(code, /ensureTechnicalSurface\(\)/, 'technical surface styling is not applied');
|
|
45
|
+
assert.match(code, /classifyTechnicalRows\(paper, surface\)/, 'technical row classification missing');
|
|
47
46
|
assert.match(code, /eos-log-row-error/, 'log severity decoration missing');
|
|
47
|
+
assert.doesNotMatch(code, /Live-Protokoll für Adapter/, 'redundant System Logs information remains');
|
|
48
|
+
assert.doesNotMatch(code, /Messwerte, Status und freigegebene Steuerwerte/, 'redundant Datapoints information remains');
|
|
49
|
+
assert.doesNotMatch(code, /Laufzeit, Status, Ressourcen und Konfiguration/, 'redundant Services information remains');
|
|
50
|
+
assert.doesNotMatch(code, /header\.innerHTML/, 'technical page info header is still generated');
|
|
48
51
|
}
|
|
49
52
|
for (const css of [sourceCss, runtimeCss]) {
|
|
50
53
|
for (const marker of [
|
|
51
|
-
'.eos-technical-surface-header',
|
|
52
54
|
'html.eos-route-instances',
|
|
53
55
|
'html.eos-route-objects',
|
|
54
56
|
'html.eos-route-logs',
|
|
55
57
|
'.eos-log-row-error',
|
|
56
58
|
]) assert.ok(css.includes(marker), `missing modern CSS marker ${marker}`);
|
|
59
|
+
assert.ok(!css.includes('.eos-technical-surface-header'), 'unused technical information header CSS remains');
|
|
57
60
|
}
|
|
58
61
|
assert.doesNotMatch(drawer, /'tab-users',\s*'tab-enums'/, 'Structure is still part of readyToUse');
|
|
59
62
|
assert.match(drawer, /tab\.name !== 'tab-enums'/, 'Drawer does not hard-filter Structure');
|
|
60
|
-
assert.match(index, /nexowatt-native-shell\.css\?v=
|
|
61
|
-
assert.match(index, /eos-role-ui\.js\?v=
|
|
62
|
-
assert.match(index, /nexowatt-stable-
|
|
63
|
+
assert.match(index, /nexowatt-native-shell\.css\?v=7109/, '7.10.9 CSS cache key missing');
|
|
64
|
+
assert.match(index, /eos-role-ui\.js\?v=7109/, '7.10.9 role cache key missing');
|
|
65
|
+
assert.match(index, /nexowatt-stable-v7109\.js\?v=7109/, '7.10.9 stable runtime missing');
|
|
63
66
|
|
|
64
|
-
console.log('[NexoWatt EOS
|
|
67
|
+
console.log('[NexoWatt EOS v7109 clean core] OK (modern Services/Datapoints/Logs without redundant page information; Structure hidden; Installer controls native)');
|
|
@@ -176,7 +176,7 @@ for (const file of [
|
|
|
176
176
|
'tools/nexowatt-ui-overview-runtime-selftest.cjs',
|
|
177
177
|
'adminWww/js/eos-ems-overview.js',
|
|
178
178
|
'adminWww/css/eos-ems-overview.css',
|
|
179
|
-
'adminWww/static/js/nexowatt-stable-
|
|
179
|
+
'adminWww/static/js/nexowatt-stable-v7109.js',
|
|
180
180
|
'src-admin/src/components/Intro/NexoWattEmsOverview.tsx',
|
|
181
181
|
'tools/nexowatt-publish-channel-guard.cjs',
|
|
182
182
|
'tools/nexowatt-publish-channel-selftest.cjs',
|