iobroker.eos-admin 7.9.67 → 7.9.68
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/adminWww/assets/bootstrap-COulQZax-v54.js +1 -2
- package/adminWww/assets/bootstrap-COulQZax-v55.js +1 -2
- package/adminWww/assets/bootstrap-COulQZax-v56.js +1 -2
- package/adminWww/assets/bootstrap-COulQZax-v57.js +1 -2
- package/adminWww/assets/bootstrap-COulQZax-v58.js +1 -2
- package/adminWww/assets/bootstrap-COulQZax-v59.js +1 -2
- package/adminWww/assets/bootstrap-COulQZax-v60.js +1 -2
- package/adminWww/assets/bootstrap-COulQZax-v61.js +1 -1
- package/adminWww/assets/bootstrap-COulQZax-v67.js +1 -317
- package/adminWww/assets/bootstrap-COulQZax-v68.js +317 -0
- package/adminWww/assets/bootstrap-COulQZax.js +1 -2
- package/adminWww/assets/index-CQZugZ1z-v67.js +1 -2
- package/adminWww/assets/index-CQZugZ1z-v68.js +2 -0
- package/adminWww/css/eos-branding.css +27 -0
- package/adminWww/index.html +10 -10
- package/adminWww/js/eos-branding.js +38 -23
- package/io-package.json +5 -5
- package/package.json +1 -1
- package/tools/nexowatt-validate-package.cjs +12 -9
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export * from "./bootstrap-COulQZax-v60.js";
|
|
1
|
+
export * from "./bootstrap-COulQZax-v68.js";
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
import{_ as c}from"./preload-helper-BDBacUwf.js";import"./iobroker_admin__mf_v__runtimeInit__mf_v__-g2X2zhAf.js";(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const e of document.querySelectorAll('link[rel="modulepreload"]'))s(e);new MutationObserver(e=>{for(const r of e)if(r.type==="childList")for(const o of r.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&s(o)}).observe(document,{childList:!0,subtree:!0});function n(e){const r={};return e.integrity&&(r.integrity=e.integrity),e.referrerPolicy&&(r.referrerPolicy=e.referrerPolicy),e.crossOrigin==="use-credentials"?r.credentials="include":e.crossOrigin==="anonymous"?r.credentials="omit":r.credentials="same-origin",r}function s(e){if(e.ep)return;e.ep=!0;const r=n(e);fetch(e.href,r)}})();c(()=>import("./bootstrap-COulQZax-v67.js").then(i=>i.o),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27]),import.meta.url);
|
|
1
|
+
import "./index-CQZugZ1z-v68.js";
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./bootstrap-COulQZax-v68.js","./DefaultPropsProvider-BiXBMQYQ.js","./_commonjsHelpers-CE1G-McA.js","./iobroker_admin__mf_v__runtimeInit__mf_v__-g2X2zhAf.js","./emotion-serialize.esm-Q4o_CgeF.js","./iobroker_admin__loadShare___mf_0_emotion_mf_1_react__loadShare__-BywLg1Xe.js","./iobroker_admin__loadShare__react__loadShare__-LM7uyL45.js","./ace-DEUjyTIn.js","./iobroker_admin__loadShare___mf_0_iobroker_mf_1_adapter_mf_2_react_mf_2_v5__loadShare__-LFZoiUTt.js","./iobroker_admin__loadShare___mf_0_iobroker_mf_1_json_mf_2_config__loadShare__-CpA7pnS5.js","./iobroker_admin__loadShare__leaflet__loadShare__-CNUAG3AH.js","./ext-language_tools-ylAoucDh.js","./iobroker_admin__loadShare__react_mf_2_dropzone__loadShare__-CwjnV48g.js","./iobroker_admin__loadShare__react_mf_2_dom__loadShare__-CVeAXnkk.js","./preload-helper-BDBacUwf.js","./iobroker_admin__loadShare___mf_0_mui_mf_1_icons_mf_2_material__loadShare__-CJO5yP3h.js","./sdk-C-e-e2gd.js","./extends-CF3RwP-h.js","./assertThisInitialized-B0aQ9eG_.js","./useTheme-Bl-M1DYp.js","./createTheme-DFX8CY6F.js","./blue-CagzI6CQ.js","./index-DcK0RDrH.js","./ThemeProvider-BOFFjWAF.js","./emotion-cache.browser.esm-BgJfNZJN.js","./setYear-3ufv5yRD.js","./en-US-DBFJNIH6.js","./bootstrap-D57bMhRi.css"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{_ as c}from"./preload-helper-BDBacUwf.js";import"./iobroker_admin__mf_v__runtimeInit__mf_v__-g2X2zhAf.js";(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const e of document.querySelectorAll('link[rel="modulepreload"]'))s(e);new MutationObserver(e=>{for(const r of e)if(r.type==="childList")for(const o of r.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&s(o)}).observe(document,{childList:!0,subtree:!0});function n(e){const r={};return e.integrity&&(r.integrity=e.integrity),e.referrerPolicy&&(r.referrerPolicy=e.referrerPolicy),e.crossOrigin==="use-credentials"?r.credentials="include":e.crossOrigin==="anonymous"?r.credentials="omit":r.credentials="same-origin",r}function s(e){if(e.ep)return;e.ep=!0;const r=n(e);fetch(e.href,r)}})();c(()=>import("./bootstrap-COulQZax-v68.js").then(i=>i.o),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27]),import.meta.url);
|
|
@@ -3948,3 +3948,30 @@ html.eos-app [data-eos-native-top-left-ghost="true"] {
|
|
|
3948
3948
|
flex: 0 0 0 !important;
|
|
3949
3949
|
}
|
|
3950
3950
|
}
|
|
3951
|
+
|
|
3952
|
+
|
|
3953
|
+
/* === NexoWatt EOS v7.9.68: exact native desktop toolbar ghost removal ===
|
|
3954
|
+
The unwanted pill consists of two independent App.renderToolbar siblings:
|
|
3955
|
+
the native MenuIcon button and the compact /#easy identity block. The large
|
|
3956
|
+
.eos-primary-brand is deliberately excluded and remains visible. */
|
|
3957
|
+
@media (min-width: 901px) {
|
|
3958
|
+
html.eos-app .eos-top-toolbar > button:has(svg[data-testid="MenuIcon"]),
|
|
3959
|
+
html.eos-app .eos-top-toolbar > .MuiIconButton-root:has(svg[data-testid="MenuIcon"]),
|
|
3960
|
+
html.eos-app .eos-top-toolbar > *:not(.eos-brand-badge):not(.eos-primary-brand):has(a[href="/#easy"]),
|
|
3961
|
+
html.eos-app .eos-top-toolbar > *:not(.eos-brand-badge):not(.eos-primary-brand):has(a[href$="#easy"]) {
|
|
3962
|
+
display: none !important;
|
|
3963
|
+
visibility: hidden !important;
|
|
3964
|
+
opacity: 0 !important;
|
|
3965
|
+
pointer-events: none !important;
|
|
3966
|
+
width: 0 !important;
|
|
3967
|
+
min-width: 0 !important;
|
|
3968
|
+
max-width: 0 !important;
|
|
3969
|
+
height: 0 !important;
|
|
3970
|
+
min-height: 0 !important;
|
|
3971
|
+
max-height: 0 !important;
|
|
3972
|
+
flex: 0 0 0 !important;
|
|
3973
|
+
margin: 0 !important;
|
|
3974
|
+
padding: 0 !important;
|
|
3975
|
+
overflow: hidden !important;
|
|
3976
|
+
}
|
|
3977
|
+
}
|
package/adminWww/index.html
CHANGED
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
translate="no"
|
|
5
5
|
>
|
|
6
6
|
<head>
|
|
7
|
-
<script src="./js/eos-console-quiet.js?v=
|
|
8
|
-
<script type="module" src="./assets/hostInit-v61.js?v=
|
|
7
|
+
<script src="./js/eos-console-quiet.js?v=68"></script>
|
|
8
|
+
<script type="module" src="./assets/hostInit-v61.js?v=68"></script>
|
|
9
9
|
|
|
10
10
|
<meta charset="utf-8" />
|
|
11
11
|
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
rel="stylesheet"
|
|
36
36
|
href="css/leaflet.css"
|
|
37
37
|
/>
|
|
38
|
-
<link rel="stylesheet" href="./css/eos-branding.css?v=
|
|
38
|
+
<link rel="stylesheet" href="./css/eos-branding.css?v=68" />
|
|
39
39
|
<link
|
|
40
40
|
rel="manifest"
|
|
41
41
|
href="manifest.json"
|
|
@@ -155,15 +155,15 @@
|
|
|
155
155
|
false,
|
|
156
156
|
);
|
|
157
157
|
</script>
|
|
158
|
-
<script type="module" crossorigin src="./assets/index-CQZugZ1z-
|
|
158
|
+
<script type="module" crossorigin src="./assets/index-CQZugZ1z-v68.js?v=68"></script>
|
|
159
159
|
<link rel="modulepreload" crossorigin href="./assets/preload-helper-BDBacUwf.js">
|
|
160
160
|
<link rel="modulepreload" crossorigin href="./assets/iobroker_admin__mf_v__runtimeInit__mf_v__-g2X2zhAf.js">
|
|
161
|
-
<script defer src="./js/eos-branding.js?v=
|
|
162
|
-
<script defer src="./js/eos-adapter-surface-cleanup.js?v=
|
|
163
|
-
<script defer src="./js/eos-security-ui.js?v=
|
|
164
|
-
<script defer src="./js/eos-role-ui.js?v=
|
|
165
|
-
<script defer src="./js/eos-assistant.js?v=
|
|
166
|
-
<script defer src="./js/eos-objects-state-tools.js?v=
|
|
161
|
+
<script defer src="./js/eos-branding.js?v=68"></script>
|
|
162
|
+
<script defer src="./js/eos-adapter-surface-cleanup.js?v=68"></script>
|
|
163
|
+
<script defer src="./js/eos-security-ui.js?v=68"></script>
|
|
164
|
+
<script defer src="./js/eos-role-ui.js?v=68"></script>
|
|
165
|
+
<script defer src="./js/eos-assistant.js?v=68"></script>
|
|
166
|
+
<script defer src="./js/eos-objects-state-tools.js?v=68"></script>
|
|
167
167
|
</head>
|
|
168
168
|
<body>
|
|
169
169
|
<noscript>You need to enable JavaScript to run this app.</noscript>
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
(() => {
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
-
window.NEXOWATT_EOS_UI_VERSION = '
|
|
4
|
+
window.NEXOWATT_EOS_UI_VERSION = 'v68-exact-native-toolbar-ghost-remove';
|
|
5
5
|
|
|
6
6
|
const BRAND = 'NexoWatt EOS';
|
|
7
7
|
const EOS_MEANING = 'Energy Operation System';
|
|
@@ -844,35 +844,50 @@
|
|
|
844
844
|
const removeNativeTopLeftGhost = () => safe(() => {
|
|
845
845
|
if (!window.matchMedia('(min-width: 901px)').matches) return;
|
|
846
846
|
|
|
847
|
-
//
|
|
847
|
+
// Exact source of the unwanted pill in App.renderToolbar(): two sibling
|
|
848
|
+
// controls are visually combined by the EOS header CSS. Remove them
|
|
849
|
+
// independently; never touch the primary .eos-brand-badge.
|
|
850
|
+
const toolbar = document.querySelector(
|
|
851
|
+
'#root > .MuiPaper-root > .MuiAppBar-root .MuiToolbar-root, header .MuiToolbar-root, .MuiAppBar-root .MuiToolbar-root',
|
|
852
|
+
);
|
|
853
|
+
if (toolbar) {
|
|
854
|
+
Array.from(toolbar.children || []).forEach(child => {
|
|
855
|
+
if (!child?.querySelector) return;
|
|
856
|
+
if (
|
|
857
|
+
child.matches?.('.eos-brand-badge, .eos-primary-brand') ||
|
|
858
|
+
child.querySelector?.('.eos-brand-badge, .eos-primary-brand')
|
|
859
|
+
) return;
|
|
860
|
+
|
|
861
|
+
// Native compact identity block: contains /#easy and the short
|
|
862
|
+
// NexoWatt image. It is a separate sibling from the menu button.
|
|
863
|
+
if (child.querySelector('a[href="/#easy"], a[href$="#easy"], a[href*="/#easy"]')) {
|
|
864
|
+
hideNativeTopLeftGhost(child);
|
|
865
|
+
return;
|
|
866
|
+
}
|
|
867
|
+
|
|
868
|
+
// Native desktop MenuIcon button. MUI exposes data-testid in
|
|
869
|
+
// normal builds; the SVG path check is a fallback for stripped builds.
|
|
870
|
+
const menuIcon = child.querySelector('svg[data-testid="MenuIcon"]');
|
|
871
|
+
const menuPath = child.querySelector('svg path')?.getAttribute?.('d') || '';
|
|
872
|
+
const isMenuPath = /M3\s*18h18v-?2H3v2|M3\s*6h18v2H3z/.test(menuPath.replace(/,/g, ' '));
|
|
873
|
+
if ((child.matches('button, .MuiIconButton-root') || child.querySelector('button, .MuiIconButton-root')) && (menuIcon || isMenuPath)) {
|
|
874
|
+
hideNativeTopLeftGhost(child);
|
|
875
|
+
}
|
|
876
|
+
});
|
|
877
|
+
}
|
|
878
|
+
|
|
879
|
+
// Compatibility fallback for an old cached Drawer.getHeader() DOM.
|
|
848
880
|
document.querySelectorAll('.MuiDrawer-paper, .MuiSwipeableDrawer-paper').forEach(drawer => {
|
|
849
881
|
Array.from(drawer.children || []).forEach(child => {
|
|
850
882
|
if (!child?.querySelector) return;
|
|
851
|
-
const
|
|
852
|
-
const
|
|
853
|
-
const hasToggle = !!child.querySelector('button, .MuiIconButton-root, [role="button"]');
|
|
883
|
+
const hasEasyLink = !!child.querySelector('a[href="/#easy"], a[href$="#easy"], a[href*="/#easy"]');
|
|
884
|
+
const hasChevron = !!child.querySelector('svg[data-testid="ChevronLeftIcon"], svg[data-testid="ChevronRightIcon"]');
|
|
854
885
|
const isNavigationList = child.classList?.contains('MuiList-root') || !!child.querySelector('.MuiListItemButton-root');
|
|
855
|
-
if (
|
|
886
|
+
if (hasEasyLink && hasChevron && !isNavigationList) hideNativeTopLeftGhost(child);
|
|
856
887
|
});
|
|
857
888
|
});
|
|
858
889
|
|
|
859
|
-
//
|
|
860
|
-
// AppBar child. Use geometry + short label, and explicitly protect the
|
|
861
|
-
// large primary EOS badge.
|
|
862
|
-
document.querySelectorAll('.MuiAppBar-root .MuiToolbar-root > *, .eos-top-toolbar > *').forEach(child => {
|
|
863
|
-
if (!child?.querySelector || child.matches?.('.eos-brand-badge, .eos-primary-brand')) return;
|
|
864
|
-
if (child.querySelector('.eos-brand-badge, .eos-primary-brand')) return;
|
|
865
|
-
const text = normalize(child.textContent || '');
|
|
866
|
-
const hasShortIdentity = text === 'nexowatt' || text === 'iobroker' || /^nexowatt\s*$/.test(text);
|
|
867
|
-
const hasEasyLink = !!child.querySelector('a[href*="#easy"]');
|
|
868
|
-
const hasToggle = !!child.querySelector('button, .MuiIconButton-root, svg');
|
|
869
|
-
const rect = child.getBoundingClientRect?.();
|
|
870
|
-
const isTopLeft = rect && rect.top < 105 && rect.left < 220 && rect.width < 230 && rect.height < 100;
|
|
871
|
-
if (isTopLeft && (hasShortIdentity || hasEasyLink) && hasToggle) hideNativeTopLeftGhost(child);
|
|
872
|
-
});
|
|
873
|
-
|
|
874
|
-
// Restore/verify the correct large EOS identity after cleanup.
|
|
875
|
-
const toolbar = document.querySelector('#root > .MuiPaper-root > .MuiAppBar-root .MuiToolbar-root, header .MuiToolbar-root, .MuiAppBar-root .MuiToolbar-root');
|
|
890
|
+
// Restore/verify the wanted large EOS identity after cleanup.
|
|
876
891
|
if (toolbar) ensureBrandBadge(toolbar);
|
|
877
892
|
});
|
|
878
893
|
|
package/io-package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"common": {
|
|
3
3
|
"name": "eos-admin",
|
|
4
|
-
"version": "7.9.
|
|
4
|
+
"version": "7.9.68",
|
|
5
5
|
"titleLang": {
|
|
6
6
|
"en": "NexoWatt EOS Admin",
|
|
7
7
|
"de": "NexoWatt EOS Admin",
|
|
@@ -259,7 +259,7 @@
|
|
|
259
259
|
"icon": "admin.svg",
|
|
260
260
|
"messagebox": true,
|
|
261
261
|
"enabled": true,
|
|
262
|
-
"extIcon": "https://unpkg.com/iobroker.eos-admin@7.9.
|
|
262
|
+
"extIcon": "https://unpkg.com/iobroker.eos-admin@7.9.68/admin/admin.svg",
|
|
263
263
|
"keywords": [
|
|
264
264
|
"NexoWatt",
|
|
265
265
|
"EOS",
|
|
@@ -270,7 +270,7 @@
|
|
|
270
270
|
"licensed"
|
|
271
271
|
],
|
|
272
272
|
"compact": true,
|
|
273
|
-
"readme": "https://unpkg.com/iobroker.eos-admin@7.9.
|
|
273
|
+
"readme": "https://unpkg.com/iobroker.eos-admin@7.9.68/README.md",
|
|
274
274
|
"authors": [
|
|
275
275
|
"bluefox <bluefox@ccu.io>",
|
|
276
276
|
"hobbyquaker <hq@ccu.io>"
|
|
@@ -339,7 +339,7 @@
|
|
|
339
339
|
"nondeletable": false,
|
|
340
340
|
"allowAdapterUpdate": true,
|
|
341
341
|
"allowAdapterDelete": false,
|
|
342
|
-
"meta": "https://unpkg.com/iobroker.eos-admin@7.9.
|
|
342
|
+
"meta": "https://unpkg.com/iobroker.eos-admin@7.9.68/io-package.json",
|
|
343
343
|
"npmPackage": "iobroker.eos-admin",
|
|
344
344
|
"packetName": "iobroker.eos-admin"
|
|
345
345
|
},
|
|
@@ -1018,5 +1018,5 @@
|
|
|
1018
1018
|
}
|
|
1019
1019
|
}
|
|
1020
1020
|
},
|
|
1021
|
-
"version": "7.9.
|
|
1021
|
+
"version": "7.9.68"
|
|
1022
1022
|
}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "iobroker.eos-admin",
|
|
3
3
|
"description": "NexoWatt EOS Admin interface with reliable repository update mapping and technical log preservation.",
|
|
4
|
-
"version": "7.9.
|
|
4
|
+
"version": "7.9.68",
|
|
5
5
|
"contributors": [
|
|
6
6
|
"bluefox <dogafox@gmail.com>",
|
|
7
7
|
"apollon77",
|
|
@@ -81,7 +81,7 @@ for (const asset of [
|
|
|
81
81
|
if (!new RegExp(`${escaped}\\?v=${cacheTag}(?:["'])`).test(adminIndex)) fail(`adminWww/index.html cache tag is stale for ${asset}`);
|
|
82
82
|
if (!new RegExp(`${escaped}\\?v=${cacheTag}(?:["'])`).test(sourceIndex)) fail(`src-admin/index.html cache tag is stale for ${asset}`);
|
|
83
83
|
}
|
|
84
|
-
for (const entry of ['hostInit-v61.js', 'index-CQZugZ1z-
|
|
84
|
+
for (const entry of ['hostInit-v61.js', 'index-CQZugZ1z-v68.js']) {
|
|
85
85
|
const escaped = entry.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
86
86
|
if (!new RegExp(`${escaped}\\?v=${cacheTag}(?:["'])`).test(adminIndex)) fail(`adminWww/index.html entry cache tag is stale for ${entry}`);
|
|
87
87
|
}
|
|
@@ -121,14 +121,14 @@ if (!branding.includes('eos-native-drawer-header-hidden') || !branding.includes(
|
|
|
121
121
|
if (!branding.includes('removeStrayNativeDrawerHeaders') || !branding.includes('a[href=\"/#easy\"]')) fail('eos-branding.js lacks structural native drawer-header cleanup');
|
|
122
122
|
if (!branding.includes('ensureStandaloneNavToggle')) fail('eos-branding.js lacks the independent EOS navigation toggle');
|
|
123
123
|
const activeGraph = [
|
|
124
|
-
fs.readFileSync(path.join(root, 'adminWww/assets/index-CQZugZ1z-
|
|
125
|
-
fs.readFileSync(path.join(root, 'adminWww/assets/bootstrap-COulQZax-
|
|
124
|
+
fs.readFileSync(path.join(root, 'adminWww/assets/index-CQZugZ1z-v68.js'), 'utf8'),
|
|
125
|
+
fs.readFileSync(path.join(root, 'adminWww/assets/bootstrap-COulQZax-v68.js'), 'utf8'),
|
|
126
126
|
fs.readFileSync(path.join(root, 'adminWww/remoteEntry-v61.js'), 'utf8'),
|
|
127
127
|
].join('\n');
|
|
128
128
|
if (/bootstrap-COulQZax-v61\.js|(?:AdapterUpdateDialog|Adapters|Config|CustomTab|DeviceManager|EasyMode|Enums|Fields|Files|Hosts|Instances|Intro|Logs|Objects|Users)-[^\"']+-v61\.js/.test(activeGraph)) fail('active v67 frontend graph still imports a v61 application runtime/route chunk');
|
|
129
129
|
|
|
130
130
|
const drawerSource = fs.readFileSync(path.join(root, 'src-admin/src/components/Drawer.tsx'), 'utf8');
|
|
131
|
-
const activeBootstrap = fs.readFileSync(path.join(root, 'adminWww/assets/bootstrap-COulQZax-
|
|
131
|
+
const activeBootstrap = fs.readFileSync(path.join(root, 'adminWww/assets/bootstrap-COulQZax-v68.js'), 'utf8');
|
|
132
132
|
const brandingCss = fs.readFileSync(path.join(root, 'adminWww/css/eos-branding.css'), 'utf8');
|
|
133
133
|
if (!drawerSource.includes('if (!this.isSwipeable())') || !drawerSource.includes('return null;')) fail('Drawer.tsx still renders the native desktop drawer header');
|
|
134
134
|
if (!activeBootstrap.includes('getHeader(){if(!this.isSwipeable())return null;')) fail('active bootstrap still renders the native desktop drawer header');
|
|
@@ -136,10 +136,13 @@ if (!brandingCss.includes('a[href=\"/#easy\"]') || !brandingCss.includes('data-e
|
|
|
136
136
|
|
|
137
137
|
const appSource = fs.readFileSync(path.join(root, 'src-admin/src/App.tsx'), 'utf8');
|
|
138
138
|
if (!branding.includes('eos-primary-brand') || !branding.includes('toolbar.firstElementChild')) fail('branding lacks robust primary EOS brand insertion');
|
|
139
|
-
if (!branding.includes('removeNativeTopLeftGhost') || !branding.includes('
|
|
140
|
-
if (!brandingCss.includes('data-eos-primary-brand') || !brandingCss.includes('
|
|
141
|
-
if (!activeBootstrap.includes('getHeader(){if(!this.isSwipeable())return null;')) fail('fresh
|
|
142
|
-
if (!
|
|
139
|
+
if (!branding.includes('removeNativeTopLeftGhost') || !branding.includes('a[href=\"/#easy\"]')) fail('branding lacks exact native toolbar ghost removal');
|
|
140
|
+
if (!brandingCss.includes('data-eos-primary-brand') || !brandingCss.includes('v7.9.68: exact native desktop toolbar ghost removal')) fail('branding CSS lacks primary-brand/exact-toolbar safeguards');
|
|
141
|
+
if (!activeBootstrap.includes('getHeader(){if(!this.isSwipeable())return null;')) fail('fresh v68 bootstrap still renders desktop Drawer.getHeader()');
|
|
142
|
+
if (!appSource.includes('{small && (') || !appSource.includes('{small &&\n this.state.drawerState')) fail('App.tsx still renders native desktop toolbar identity controls');
|
|
143
|
+
if (!activeBootstrap.includes('children:[e&&jsxRuntimeExports.jsx(')) fail('v68 bootstrap still renders native desktop MenuIcon');
|
|
144
|
+
if (!activeBootstrap.includes('this.renderLoggedUser(),e&&this.state.drawerState')) fail('v68 bootstrap still renders the native desktop compact identity block');
|
|
145
|
+
if (!activeBootstrap.includes('const version$b=\"7.9.68\"')) fail('v68 bootstrap frontend version marker is stale');
|
|
143
146
|
|
|
144
147
|
for (const file of [
|
|
145
148
|
'AdapterUpdateDialog-BMg84Hpf-v67.js', 'Adapters-B5_jQ7DE-v67.js', 'Config-hHK2UzGP-v67.js',
|
|
@@ -148,7 +151,7 @@ for (const file of [
|
|
|
148
151
|
'Hosts-Bg8QzW5i-v67.js', 'Instances-YdaGnS5a-v67.js', 'Intro-DkwRiz1n-v67.js',
|
|
149
152
|
'Logs-CsVPSLJH-v67.js', 'Objects-DPan0bzw-v67.js', 'Users-BgnBRgwU-v67.js',
|
|
150
153
|
]) {
|
|
151
|
-
if (!exists(path.join('adminWww/assets', file))) fail(`missing
|
|
154
|
+
if (!exists(path.join('adminWww/assets', file))) fail(`missing compatible route chunk: ${file}`);
|
|
152
155
|
const chunk = fs.readFileSync(path.join(root, 'adminWww/assets', file), 'utf8');
|
|
153
156
|
if (chunk.includes('bootstrap-COulQZax-v61.js')) fail(`${file} still imports bootstrap-v61`);
|
|
154
157
|
}
|