iobroker.eos-admin 7.10.2 → 7.10.4
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/INSTALL_TEST_V7.10.4.md +9 -0
- package/MERGE_UPDATE_README_V7.10.4.md +3 -0
- package/NEXOWATT_EOS_BUILD_INFO.json +16 -15
- package/NEXOWATT_EOS_PREBUILT_MANIFEST.json +17 -12
- package/PUBLISH_STABLE_V7.10.4.md +10 -0
- package/README.md +4 -4
- package/README_STABILITY_V7.10.4.md +12 -0
- package/RELEASE_ACCEPTANCE_V7.10.4.md +3 -0
- package/RELEASE_NOTES_V7.10.4.md +11 -0
- package/adminWww/css/eos-auto-update.css +4 -3
- package/adminWww/index.html +3 -2
- package/adminWww/js/eos-auto-update.js +127 -33
- package/adminWww/nexowatt-role-security.js +336 -0
- package/build/lib/eosRoleSecurity.js +310 -0
- package/build/main.js +5 -0
- package/io-package.json +10 -5
- package/package.json +17 -12
- package/src-admin/README.md +69 -0
- package/src-admin/nexowatt-role-security.js +336 -0
- package/tools/nexowatt-auto-update-placement-selftest.cjs +46 -0
- package/tools/nexowatt-merge-update-selftest.cjs +1 -1
- package/tools/nexowatt-role-security-selftest.cjs +43 -0
- package/tools/{nexowatt-stable-v7102-selftest.cjs → nexowatt-stable-v7103-selftest.cjs} +21 -11
- package/tools/nexowatt-validate-package.cjs +18 -9
- package/INSTALL_TEST_V7.10.2.md +0 -22
- package/MERGE_UPDATE_README_V7.10.2.md +0 -11
- package/PUBLISH_STABLE_V7.10.2.md +0 -21
- package/README_STABILITY_V7.10.2.md +0 -20
- package/RELEASE_ACCEPTANCE_V7.10.2.md +0 -13
- package/RELEASE_NOTES_V7.10.2.md +0 -11
|
@@ -8,7 +8,7 @@ const read = relative => fs.readFileSync(path.join(root, relative), 'utf8');
|
|
|
8
8
|
const json = relative => JSON.parse(read(relative));
|
|
9
9
|
const must = (value, message) => {
|
|
10
10
|
if (!value) {
|
|
11
|
-
console.error(`[NexoWatt EOS stable
|
|
11
|
+
console.error(`[NexoWatt EOS stable v7103] ${message}`);
|
|
12
12
|
process.exit(1);
|
|
13
13
|
}
|
|
14
14
|
};
|
|
@@ -26,9 +26,12 @@ const ems = read('adminWww/js/eos-ems-overview.js');
|
|
|
26
26
|
const intro = read('src-admin/src/tabs/Intro.tsx');
|
|
27
27
|
const bundle = read('adminWww/assets/Intro-DkwRiz1n-v84.js');
|
|
28
28
|
const stable = read('adminWww/static/js/nexowatt-stable-v7101.js');
|
|
29
|
-
const
|
|
29
|
+
const autoBackend = read('src/lib/eosAutoUpdate.ts');
|
|
30
|
+
const autoUi = read('adminWww/js/eos-auto-update.js');
|
|
31
|
+
const autoCss = read('adminWww/css/eos-auto-update.css');
|
|
32
|
+
const autoTag = String(info.autoUpdateCacheTag || info.autoUpdateCacheVersion || info.shellCacheTag || info.shellCacheVersion);
|
|
30
33
|
|
|
31
|
-
must(pkg.version === '7.10.
|
|
34
|
+
must(pkg.version === '7.10.4' && io.version === '7.10.4' && io.common.version === '7.10.4' && info.version === '7.10.4', 'version drift');
|
|
32
35
|
must(io.native.eosRequireFirstLoginPassword === false && io.native.eosRequireFirstLoginPasswordChange === false, 'forced first password still enabled');
|
|
33
36
|
must(!index.includes('eos-account-management.js'), 'custom reset UI still loaded');
|
|
34
37
|
must(!boot.includes('installIntegratedFirstLogin(base);') && !boot.includes('showFirstLoginPassword(resolved, base);'), 'forced first-login UI still active');
|
|
@@ -37,15 +40,22 @@ must(role.includes("route === 'tab-users'") && main.includes("command === 'chang
|
|
|
37
40
|
must(css.includes('persistent native overview scrolling') && stable.includes("overflow-y','scroll"), 'persistent scroll missing');
|
|
38
41
|
must(intro.includes('eos-overview-edit-controls') && bundle.includes('eos-overview-edit-controls'), 'edit control not in bottom grid');
|
|
39
42
|
must(!ems.includes('Vollständige EMS-Diagnose öffnen'), 'unsupported EMS link remains');
|
|
40
|
-
must(index.includes('eos-auto-update.js?v=7101') && auto.includes("const POLICY: NexoWattAutoUpdatePolicy = 'major'"), 'auto update missing');
|
|
41
43
|
|
|
42
|
-
// 7.10.2
|
|
43
|
-
|
|
44
|
-
must(
|
|
45
|
-
must(
|
|
46
|
-
must(
|
|
47
|
-
must(!auto.includes('extendForeignObjectAsync(this.instanceId'), 'runtime still writes the running instance native configuration');
|
|
44
|
+
// 7.10.2 runtime and package hotfix baseline remains mandatory.
|
|
45
|
+
must(autoBackend.includes("const ENABLED_STATE_ID = 'info.nexowattStableUpdatesEnabled'"), 'restart-safe enabled state missing');
|
|
46
|
+
must(autoBackend.includes("const STATUS_STATE_ID = 'info.nexowattStableUpdatesState'"), 'restart-safe status state missing');
|
|
47
|
+
must(autoBackend.includes('const STARTUP_RECONCILE_DELAY_MS = 30_000'), 'startup grace period missing');
|
|
48
|
+
must(!autoBackend.includes('extendForeignObjectAsync(this.instanceId'), 'runtime still writes the running instance native configuration');
|
|
48
49
|
must(web.includes('this.nexowattStableUpdateManager?.stop();'), 'auto-update manager is not stopped with the web server');
|
|
49
50
|
must(fs.existsSync(path.join(root, 'build/lib/eosRequestSecurity.js')), 'eosRequestSecurity runtime module missing');
|
|
50
51
|
|
|
51
|
-
|
|
52
|
+
// 7.10.4 placement acceptance: System Settings only.
|
|
53
|
+
must(index.includes(`eos-auto-update.js?v=${autoTag}`), 'auto-update JavaScript cache key missing');
|
|
54
|
+
must(index.includes(`eos-auto-update.css?v=${autoTag}`), 'auto-update CSS cache key missing');
|
|
55
|
+
must(autoUi.includes('[role="dialog"][aria-labelledby="system-settings-dialog-title"]'), 'System Settings selector missing');
|
|
56
|
+
must(autoUi.includes("root.dataset.context = 'system-settings'"), 'System Settings context missing');
|
|
57
|
+
must(autoUi.includes('mount.content.insertBefore(root, mount.appBar.nextSibling)'), 'card is not placed below System Settings header');
|
|
58
|
+
must(!autoUi.includes('introActive') && !autoUi.includes('eos-native-overview-hero') && !autoUi.includes('eos-ems-overview-runtime'), 'global overview/module placement remains');
|
|
59
|
+
must(autoCss.includes('visible only inside the System Settings dialog'), 'System Settings CSS ownership missing');
|
|
60
|
+
|
|
61
|
+
console.log('[NexoWatt EOS stable v7103] OK (v7102 crash/package baseline plus System Settings-only update control)');
|
|
@@ -43,7 +43,9 @@ if (pkg.scripts['test:eos-version-sync'] !== 'node tools/nexowatt-version-sync-s
|
|
|
43
43
|
if (pkg.scripts['verify:eos-merge'] !== 'node tools/nexowatt-merge-update-selftest.cjs') fail('merge update selftest script is missing or incorrect');
|
|
44
44
|
if (!pkg.scripts['check:eos-stability']?.includes('nexowatt-version-sync-selftest.cjs')) fail('version sync selftest is not part of check:eos-stability');
|
|
45
45
|
if (!pkg.scripts['check:eos-stability']?.includes('nexowatt-merge-update-selftest.cjs')) fail('merge update selftest is not part of check:eos-stability');
|
|
46
|
-
if (pkg.scripts['check:eos-stable-
|
|
46
|
+
if (pkg.scripts['check:eos-stable-v7103'] !== 'node tools/nexowatt-stable-v7103-selftest.cjs') fail('stable v7103 selftest script is missing or incorrect');
|
|
47
|
+
if (pkg.scripts['test:eos-auto-update-placement'] !== 'node tools/nexowatt-auto-update-placement-selftest.cjs') fail('auto-update placement selftest script is missing or incorrect');
|
|
48
|
+
if (!pkg.scripts['check:eos-stability']?.includes('nexowatt-auto-update-placement-selftest.cjs')) fail('auto-update placement selftest is not part of check:eos-stability');
|
|
47
49
|
if (pkg.scripts.prepublishOnly !== canonicalPrepublishOnly) fail('prepublishOnly must use the dependency-free direct-publish workflow');
|
|
48
50
|
if (/\b(?:tsc|tsx)\b|build:(?:backend|frontend)|\bnpx\b|npm\s+(?:i|install|ci)\b/i.test(pkg.scripts.prepublishOnly || '')) fail('prepublishOnly must not require local development dependencies');
|
|
49
51
|
if (pkg.scripts['check:eos-prebuilt-release'] !== 'node tools/nexowatt-prebuilt-release-selftest.cjs') fail('prebuilt release selftest script is missing or incorrect');
|
|
@@ -131,14 +133,14 @@ for (const file of [
|
|
|
131
133
|
'LICENSE',
|
|
132
134
|
'NEXOWATT_PROPRIETARY_LICENSE.md',
|
|
133
135
|
'THIRD_PARTY_NOTICES.md',
|
|
134
|
-
'README_STABILITY_V7.10.
|
|
135
|
-
'RELEASE_NOTES_V7.10.
|
|
136
|
-
'PUBLISH_STABLE_V7.10.
|
|
137
|
-
'INSTALL_TEST_V7.10.
|
|
138
|
-
'RELEASE_ACCEPTANCE_V7.10.
|
|
136
|
+
'README_STABILITY_V7.10.4.md',
|
|
137
|
+
'RELEASE_NOTES_V7.10.4.md',
|
|
138
|
+
'PUBLISH_STABLE_V7.10.4.md',
|
|
139
|
+
'INSTALL_TEST_V7.10.4.md',
|
|
140
|
+
'RELEASE_ACCEPTANCE_V7.10.4.md',
|
|
139
141
|
'MERGE_UPDATE.ps1',
|
|
140
142
|
'MERGE_UPDATE.cmd',
|
|
141
|
-
'MERGE_UPDATE_README_V7.10.
|
|
143
|
+
'MERGE_UPDATE_README_V7.10.4.md',
|
|
142
144
|
'tools/nexowatt-patch-built-frontend.cjs',
|
|
143
145
|
'tools/nexowatt-native-shell-selftest.cjs',
|
|
144
146
|
'tools/nexowatt-clean-legacy-runtime.cjs',
|
|
@@ -159,9 +161,14 @@ for (const file of [
|
|
|
159
161
|
'tools/nexowatt-sync-release-version.cjs',
|
|
160
162
|
'tools/nexowatt-version-sync-selftest.cjs',
|
|
161
163
|
'tools/nexowatt-merge-update-selftest.cjs',
|
|
162
|
-
'tools/nexowatt-stable-
|
|
164
|
+
'tools/nexowatt-stable-v7103-selftest.cjs',
|
|
163
165
|
'tools/nexowatt-password-write-selftest.cjs',
|
|
164
166
|
'tools/nexowatt-account-password-flow-selftest.cjs',
|
|
167
|
+
'tools/nexowatt-auto-update-placement-selftest.cjs',
|
|
168
|
+
'adminWww/js/eos-auto-update.js',
|
|
169
|
+
'adminWww/css/eos-auto-update.css',
|
|
170
|
+
'src-admin/public/js/eos-auto-update.js',
|
|
171
|
+
'src-admin/public/css/eos-auto-update.css',
|
|
165
172
|
'tools/nexowatt-ems-overview-selftest.cjs',
|
|
166
173
|
'tools/nexowatt-ui-overview-runtime-selftest.cjs',
|
|
167
174
|
'adminWww/js/eos-ems-overview.js',
|
|
@@ -191,6 +198,7 @@ const runtime = buildInfo.runtimeEntry;
|
|
|
191
198
|
const runtimeNumber = Number(String(runtime).replace(/^v/, ''));
|
|
192
199
|
const shellCache = Number(buildInfo.shellCacheVersion ?? buildInfo.nativeShellVersion ?? runtimeNumber);
|
|
193
200
|
const shellTag = String(buildInfo.shellCacheTag || shellCache);
|
|
201
|
+
const autoUpdateTag = String(buildInfo.autoUpdateCacheTag || buildInfo.autoUpdateCacheVersion || shellTag);
|
|
194
202
|
if (!runtime || !Number.isFinite(runtimeNumber)) fail(`invalid runtimeEntry ${runtime}`);
|
|
195
203
|
if (!Number.isFinite(shellCache)) fail(`invalid shellCacheVersion ${buildInfo.shellCacheVersion}`);
|
|
196
204
|
for (const marker of [
|
|
@@ -206,7 +214,8 @@ if (!index.includes(`eos-role-bootstrap.js?v=${shellTag}`)) fail('role bootstrap
|
|
|
206
214
|
if (!index.includes(`eos-branding-sanitizer.js?v=${shellTag}`)) fail('branding sanitizer cache key mismatch');
|
|
207
215
|
if (!index.includes(`eos-role-ui.js?v=${shellTag}`)) fail('role UI cache key mismatch');
|
|
208
216
|
if (index.includes('eos-account-management.js')) fail('custom account-management runtime must not be loaded in standard password mode');
|
|
209
|
-
if (!index.includes(`eos-auto-update.js?v=${
|
|
217
|
+
if (!index.includes(`eos-auto-update.js?v=${autoUpdateTag}`)) fail('auto-update JavaScript cache key mismatch');
|
|
218
|
+
if (!index.includes(`eos-auto-update.css?v=${autoUpdateTag}`)) fail('auto-update CSS cache key mismatch');
|
|
210
219
|
if (!index.includes(`eos-assistant.js?v=${shellTag}`)) fail('EOS Assist cache key mismatch');
|
|
211
220
|
if (!index.includes(`eos-ems-overview.js?v=${shellTag}`)) fail('EMS overview cache key mismatch');
|
|
212
221
|
if (!index.includes(`eos-ems-overview.css?v=${shellTag}`)) fail('EMS overview CSS cache key mismatch');
|
package/INSTALL_TEST_V7.10.2.md
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
# Installationstest – NexoWatt EOS Admin 7.10.2
|
|
2
|
-
|
|
3
|
-
## Voraussetzungen
|
|
4
|
-
|
|
5
|
-
- ioBroker JS-Controller 7.x
|
|
6
|
-
- Node.js 22.x oder eine laut `package.json` unterstützte Node.js-Version
|
|
7
|
-
- EOS Admin auf Port 8081
|
|
8
|
-
|
|
9
|
-
## Prüfschritte
|
|
10
|
-
|
|
11
|
-
1. Installierbares Paket `iobroker.eos-admin-7.10.2.tgz` hochladen oder die Repository-ZIP als Arbeitsstand verwenden.
|
|
12
|
-
2. Prüfen, dass `system.adapter.eos-admin.0` Version 7.10.2 meldet.
|
|
13
|
-
3. Die Instanz mindestens 60 Sekunden beobachten. Es darf keine wiederkehrende Folge aus `stopInstance`, `TERMINATE_YOURSELF` und erneutem Start geben.
|
|
14
|
-
4. EOS Admin im Browser neu öffnen. Das Haupt-Bundle sowie die EOS-CSS-Dateien müssen mit HTTP 200 vollständig geladen werden.
|
|
15
|
-
5. Browserkonsole prüfen: keine Meldungen `ERR_INCOMPLETE_CHUNKED_ENCODING`, `Failed to fetch dynamically imported module` oder `ERR_CONNECTION_REFUSED` für Port 8081.
|
|
16
|
-
6. Unter den Update-Einstellungen den NexoWatt-Stable-Schalter aus- und wieder einschalten. Dabei darf die EOS-Admin-Instanz nicht neu starten.
|
|
17
|
-
7. Im Objektbaum prüfen, dass `eos-admin.0.info.nexowattStableUpdatesEnabled` und `eos-admin.0.info.nexowattStableUpdatesState` vorhanden sind.
|
|
18
|
-
8. Adapterlog prüfen: `MODULE_NOT_FOUND: ./eosRequestSecurity` darf nicht auftreten.
|
|
19
|
-
|
|
20
|
-
## Erwartetes Ergebnis
|
|
21
|
-
|
|
22
|
-
EOS Admin bleibt dauerhaft aktiv, der Browser lädt die Oberfläche vollständig und die Stable-Updateverwaltung arbeitet ohne Änderung der laufenden Instanzkonfiguration.
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
# Merge-Update – NexoWatt EOS Admin 7.10.2
|
|
2
|
-
|
|
3
|
-
Die 7.10.2-Repository-ZIP kann über den bisherigen Arbeitsordner entpackt werden. Danach muss der geschützte Merge-Workflow ausgeführt werden:
|
|
4
|
-
|
|
5
|
-
- Windows: `MERGE_UPDATE.cmd`
|
|
6
|
-
- PowerShell: `MERGE_UPDATE.ps1`
|
|
7
|
-
- Linux/macOS: `./MERGE_UPDATE.sh`
|
|
8
|
-
|
|
9
|
-
Der Workflow synchronisiert alle Versionsdateien, kompiliert das Backend neu, entfernt veraltete Runtime-Dateien, prüft die Frontend- und Backend-Abhängigkeitsgraphen und führt einen trockenen npm-Paketlauf aus. Er veröffentlicht nicht automatisch.
|
|
10
|
-
|
|
11
|
-
Wichtig: 7.10.2 ersetzt den fehlerhaften 7.10.1-Stand. Die Updateverwaltung darf ihren Status ausschließlich in `info.nexowattStableUpdatesEnabled` und `info.nexowattStableUpdatesState` speichern.
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
# Veröffentlichung – NexoWatt EOS Admin 7.10.2
|
|
2
|
-
|
|
3
|
-
Diese Repository-ZIP enthält bereits das vollständig kompilierte und geprüfte Release-Artefakt. Für die Veröffentlichung sind **weder `npm install` noch `npm ci` erforderlich**.
|
|
4
|
-
|
|
5
|
-
Im entpackten Repository zuerst den npm-Trockenlauf ausführen:
|
|
6
|
-
|
|
7
|
-
```powershell
|
|
8
|
-
npm publish --dry-run
|
|
9
|
-
```
|
|
10
|
-
|
|
11
|
-
Wenn der Trockenlauf ohne Fehler endet, direkt veröffentlichen:
|
|
12
|
-
|
|
13
|
-
```powershell
|
|
14
|
-
npm publish
|
|
15
|
-
```
|
|
16
|
-
|
|
17
|
-
`prepublishOnly` und `prepack` verwenden ausschließlich mitgelieferte Node.js-Prüfskripte. Sie starten weder `tsc` noch `tsx` und laden keine Entwicklungsabhängigkeiten nach. Das versiegelte SHA-256-Manifest kontrolliert, dass Quellstand, Frontend und vorkompiliertes Backend seit der Freigabe nicht verändert wurden. Zusätzlich werden die vollständige lokale Backend-Modulkette, die JavaScript-Syntax und der tatsächliche npm-Paketinhalt geprüft.
|
|
18
|
-
|
|
19
|
-
Nur nach eigenen Änderungen an TypeScript- oder Frontend-Quellen ist ein Entwicklungs-Build erforderlich. Der hier bereitgestellte Release-Stand darf unverändert direkt mit `npm publish` veröffentlicht werden.
|
|
20
|
-
|
|
21
|
-
Die bereits veröffentlichte Version 7.10.1 darf nicht überschrieben werden. Da der Veröffentlichungsversuch von 7.10.2 vor dem Upload im Lifecycle abgebrochen wurde, bleibt dieser reparierte Stand auf Version 7.10.2.
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
# NexoWatt EOS Admin 7.10.2 – reparierter Stable-Kandidat
|
|
2
|
-
|
|
3
|
-
Version 7.10.2 ist ein gezieltes Stabilitäts-Hotfix für den fehlerhaften Stand 7.10.1. Die Oberfläche und die bereits freigegebenen Funktionen aus 7.10.1 bleiben erhalten.
|
|
4
|
-
|
|
5
|
-
## Behobene Fehler
|
|
6
|
-
|
|
7
|
-
- Die automatische NexoWatt-Stable-Updateverwaltung schreibt ihren Laufzeitstatus nicht mehr in `system.adapter.eos-admin.0.native`. Dadurch wird die laufende EOS-Admin-Instanz beim Start nicht mehr fortlaufend neu gestartet.
|
|
8
|
-
- Die erste Synchronisierung der Stable-Update-Richtlinien erfolgt erst nach einer Startschutzzeit. Der HTTP-Server kann JavaScript- und CSS-Dateien vollständig ausliefern, bevor Repository-Richtlinien geprüft werden.
|
|
9
|
-
- Der Update-Manager beendet alle Zeitgeber beim Herunterfahren des Webservers.
|
|
10
|
-
- Das geprüfte Backend ist vollständig vorkompiliert und über ein SHA-256-Manifest versiegelt. `npm publish` und `npm pack` benötigen deshalb keine lokalen TypeScript-/TSX-Entwicklungswerkzeuge und starten weder `tsc` noch `tsx`.
|
|
11
|
-
- Ein Backend-Runtime-Test prüft alle lokalen `require`-/Import-Abhängigkeiten, ihre Syntax und ihre Abdeckung durch die explizite npm-Dateiliste. Er startet dabei keinen verschachtelten `npm pack`-Prozess mehr, damit `npm publish` unter Windows nicht beim Aufruf von `npm.cmd` abbricht.
|
|
12
|
-
- `build/lib/eosRequestSecurity.js` ist fest Bestandteil des geprüften Runtime-Artefakts.
|
|
13
|
-
|
|
14
|
-
## Unverändert übernommen
|
|
15
|
-
|
|
16
|
-
- Native ioBroker-Passwortverwaltung ohne erzwungene EOS-Erstpasswortseite.
|
|
17
|
-
- Dauerhafter vertikaler Cockpit-Scrollbereich.
|
|
18
|
-
- Bearbeiten-Stift innerhalb des unteren Kartenrasters.
|
|
19
|
-
- Rollen- und Sicherheitssystem des 7.10.1-UI-Baselines.
|
|
20
|
-
- Automatische Stable-Updates ausschließlich für installierte NexoWatt-Adapter; durch Admin/Service abschaltbar.
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
# Release Acceptance – NexoWatt EOS Admin 7.10.2
|
|
2
|
-
|
|
3
|
-
Der Stable-Kandidat ist freigabefähig, wenn alle folgenden Bedingungen erfüllt sind:
|
|
4
|
-
|
|
5
|
-
- Backend-Kompilierung erfolgreich.
|
|
6
|
-
- Paket- und Stabilitätsprüfung vollständig erfolgreich.
|
|
7
|
-
- Backend-Runtime-Abhängigkeitskette vollständig und im npm-Artefakt enthalten.
|
|
8
|
-
- `build/lib/eosRequestSecurity.js` im gepackten Artefakt vorhanden.
|
|
9
|
-
- Auto-Update-Selbsttest bestätigt: kein Schreiben auf `system.adapter.eos-admin.0`.
|
|
10
|
-
- Wiederholter Auto-Update-Abgleich schreibt unveränderte Objektkonfigurationen nicht erneut.
|
|
11
|
-
- Startschutz verhindert Repository-Änderungen während des ersten Browser-Ladevorgangs.
|
|
12
|
-
- Installiertes System zeigt über mindestens 60 Sekunden keine Start-/Stop-Schleife.
|
|
13
|
-
- Browserkonsole bleibt frei von abgebrochenen Chunk-Transfers und Verbindungsverweigerungen auf Port 8081.
|
package/RELEASE_NOTES_V7.10.2.md
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
# Release Notes – NexoWatt EOS Admin 7.10.2
|
|
2
|
-
|
|
3
|
-
## Kritischer Stabilitätsfix
|
|
4
|
-
|
|
5
|
-
Der in 7.10.1 neu eingeführte Stable-Update-Manager speicherte bei jedem Start einen neuen Zeitstempel in der Native-Konfiguration der laufenden `eos-admin.0`-Instanz. ioBroker behandelt eine Änderung dieser Instanzkonfiguration als Neustartgrund. Dadurch entstand eine permanente Start-/Stop-Schleife. Während dieser Schleife wurden Browser-Bundles nur teilweise übertragen; daraus entstanden `ERR_INCOMPLETE_CHUNKED_ENCODING`, fehlgeschlagene dynamische Imports und `ERR_CONNECTION_REFUSED` für CSS-Dateien.
|
|
6
|
-
|
|
7
|
-
7.10.2 speichert Einstellung und Laufzeitstatus ausschließlich in quittierten Adapter-States. Der Update-Abgleich startet verzögert und schreibt unveränderte Adapter-/Repository-Richtlinien nicht erneut.
|
|
8
|
-
|
|
9
|
-
## Paketvollständigkeit
|
|
10
|
-
|
|
11
|
-
Das Backend und das Frontend sind in der Repository-ZIP bereits vollständig kompiliert. Die Release-Lifecycle-Skripte führen vor `npm pack` und `npm publish` ausschließlich dependency-freie Node.js-Prüfungen aus; `tsc`, `tsx`, `npm install` und `npm ci` werden nicht benötigt. Ein SHA-256-Manifest versiegelt den geprüften Quell- und Buildstand. Zusätzlich verfolgt der Backend-Runtime-Test die lokale Modulabhängigkeitskette ab `build/main.js`, führt einen Syntaxcheck aus und verifiziert die Abdeckung jeder Runtime-Datei durch die explizite npm-Dateiliste. Der Test startet innerhalb von `prepublishOnly` keinen verschachtelten `npm pack`-/`npm.cmd`-Prozess mehr; der endgültige Paketinhalt wird separat durch `npm publish --dry-run` geprüft. Damit wird insbesondere ein fehlendes `build/lib/eosRequestSecurity.js` vor einer Veröffentlichung erkannt.
|