Selbst-Update: Ergebnis erscheint ohne Neuladen, Panel übersteht Neustart

Zwei Meldungen des Besitzers ("Update installieren" braucht manuelles
Neuladen, um den Neustart-Knopf zu zeigen; die "HA startet neu..."-
Anzeige ebenso) auf denselben Grund zurückgeführt: datenLaden() rief
render() nur bei Änderungen an profil/fahrten/tank/status/batt auf,
nie bei einer reinen Änderung des Versions-Sensors. Dazu ein bereits
im Code kommentiertes, bisher nur per Tab-Klick umgangenes Rennen
beim echten HA-Neustart gefunden und behoben: panel_custom baut das
Element neu auf, aber nichts zeichnete es automatisch, bis der Nutzer
irgendwo klickte. companion-app erhielt den passenden Fix für die
Neustart-Anzeige (Panel-Bug 1 betraf sie nicht, siehe AGENTS.md).

Alle drei Fixes live im Testcontainer über einen echten
homeassistant.restart bestätigt, nicht nur simuliert.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-24 19:39:40 +02:00
parent 0354ab8768
commit 4fccf21676
4 changed files with 162 additions and 3 deletions
+15 -1
View File
@@ -4,7 +4,7 @@
* Datenausgabe und Zugang.
*/
import { useRef, useState } from "react"
import { useEffect, useRef, useState } from "react"
import { ActionButton, Feld, Seg, Switch, Tile } from "@audi-dash/ui"
@@ -39,6 +39,7 @@ export function Einstellungen({
rohprofil,
otaBuendel,
integrationUpdate,
verbindung,
api,
profilSpeichern,
jetztAktualisieren,
@@ -139,6 +140,19 @@ export function Einstellungen({
}
}
// Ergänzt das absichtliche Fehlen des try/finally oben: die Verbindung
// trennt sich für die Dauer des HA-Neustarts, DatenKontext meldet das über
// `verbindung`/`api.live.aufVerbindung()` und lädt bei "verbunden" bereits
// integrationUpdate & Co. neu (siehe DatenKontext.tsx) - aber
// updateNeustartLaeuft ist reiner Bildschirm-Zustand hier und blieb davon
// unberührt. Ohne diesen Effekt stand "Home Assistant startet neu …" nach
// einem erfolgreichen Neustart weiter da, bis die Seite von Hand neu
// geladen wurde.
useEffect(() => {
if (verbindung === "verbunden" && updateNeustartLaeuft) setzeUpdateNeustartLaeuft(false)
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [verbindung])
if (!einstellungen || !fahrzeug) return null
const werte = entwurf ?? einstellungen