Paritaetsrunden 2 und 3, Designpruefung umgesetzt (2026.8.30.8)

Drei zusammenhaengende Runden, alle live bei 375x812 gegen audi_ha_test
geprueft und in beiden Codebasen angewandt.

Paritaetsrunde 2: der gemeinsame Rahmen war das eigentliche Problem -
Seitenrand, Kachelabstaende, Kopfleiste, Tableiste und vier Bausteine des
Design-Systems trugen noch den Stand vor der iOS-Entscheidung. Dazu sieben
Bildschirme neu aufgebaut. Zwei Panel-Fehler dabei mitbehoben: teaser()
zeigte unter "Letzte Fahrt" den aeltesten Datensatz, und "Daten bearbeiten"
war ein toter Knopf.

Paritaetsrunde 3: das Panel hat nie Audi Type gerendert. @font-face in einem
Shadow Root wird ignoriert - Schriftschnitte registriert der Browser pro
Dokument, nie pro Shadow Tree. Die drei Schnitte liegen jetzt in
audi-dashboard-schriften.css und werden ins Dokument gehaengt. Damit erledigt
sich eine ganze Reihe von "die Schrift sieht anders aus"-Eindruecken: die
beiden Anwendungen zeigten tatsaechlich verschiedene Schriften.
Ausserdem "Daten bearbeiten" im Panel gebaut und portiert, das Zeilenmenue
entfernt und die letzten neun Bildschirme angeglichen.

Designpruefung: die fuenf Punkte der Reihenfolge. Beim vierten hat das Messen
den Befund veraendert - gezaehlt waren die deklarierten Groessen, wirksam war
laengst eine saubere Sieben-Schritt-Skala mit 27 Ausreissern; die sind jetzt
auf den naechsten Schritt gezogen, keiner verschiebt sich um mehr als 1px.

Zuletzt: die Standortvorschau zeichnete die falsche Nadel (das Panel wechselt
den Icon-Satz ab 34px, die App nahm immer den grossen), und der Kopfabstand
der App ist auf den sicheren Bereich reduziert - die 56px des Panels liegen
dort unter der Kopfleiste von Home Assistant, in der nativen Huelle steht
darueber nichts.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-30 18:31:41 +02:00
parent 25c0d073c4
commit 4a58021670
64 changed files with 4130 additions and 1432 deletions
+28
View File
@@ -39,6 +39,10 @@ export interface TankvorgangFelder {
station?: string | null;
distanz?: number | null;
kraftstoff?: string | null;
/** Aus einem vorab gelesenen Beleg (Upload ohne tank_id) - so übergibt sie
auch das Panel beim Speichern eines neuen Tankvorgangs mit Beleg. */
receipt_key?: string | null;
receipt_file?: string | null;
}
/** Eingabefelder für Fahrten - Namen wie beim Backend (fahrterkennung.py:
@@ -130,6 +134,30 @@ export class DataMetricApi {
);
}
/**
* Fahrzeugfoto hochladen bzw. ersetzen. Dieselben Dienste, die das Panel
* über `data-bildupload` anspricht (`bild_hochladen`/`bild_loeschen` in
* services.yaml). Die App konnte Fotos bisher gar nicht ändern — sie
* verwies stattdessen auf die Verwaltung in Home Assistant.
*/
bildHochladen(dateiname: string, datenBase64: string): Promise<unknown> {
return this.warteschlange.einreihen(
DIENST_DOMAIN,
"bild_hochladen",
{ dateiname, daten_base64: datenBase64 },
`Foto „${dateiname}" hochladen`,
)
}
bildLoeschen(dateiname: string): Promise<unknown> {
return this.warteschlange.einreihen(
DIENST_DOMAIN,
"bild_loeschen",
{ dateiname },
`Foto „${dateiname}" löschen`,
)
}
/** Legt eine Fahrt von Hand an — für Fahrten ohne automatische Erkennung. */
fahrtAnlegen(felder: FahrtFelder): Promise<unknown> {
return this.warteschlange.einreihen(