Audi Type Wide Normal fuer die grossen Zahlen, Audit-Durchgang
- Audi Type Wide gab es hier nur als Light (300). Der Eigentuemer hat den vollen Satz aus Audis Styleguide geliefert; Wide Normal (400) ist jetzt eingebunden (App und Panel), Wide Bold liegt vor und bleibt bewusst ungenutzt. Lizenz wie bei allen Audi-Assets: nur diese eine private Installation, deshalb nichts davon in design-system. - Dabei gefunden: die Aenderung im Design-System allein war wirkungslos. audi-schrift.css bringt fuer .ads-fig eine eigene, spaetere Regel mit und gewinnt. Im gebauten Stylesheet standen beide - nur die Reihenfolge entschied, und sichtbar wurde es erst am gerenderten getComputedStyle. - Vollstaendiger Durchgang (AGENTS.md Abschnitt DC): Statik, struktureller Paritaetstest ueber Routen, Dienste, Sensorrollen, Wortlaut und Statusfelder, dazu ein Funktionstest an beiden laufenden Oberflaechen. Ein echter Befund: standort_genauigkeit_m ist totes Schema im Panel. Drei Meldungen des Eigentuemers waren keine Fehler - das breite Layout, der Beschriftungs-Schalter ohne Reiterleiste, und eine Testfahrt von mir. Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
# AGENTS.md — Project state, review findings, open items, and working rules
|
# AGENTS.md — Project state, review findings, open items, and working rules
|
||||||
|
|
||||||
**Last updated: 2026-09-05** (Tankstelle zweizeilig und antippbar, die Belegkarte sagt bei
|
**Last updated: 2026-09-05** (Audit-Durchgang, Abschnitt DC) (Tankstelle zweizeilig und antippbar, die Belegkarte sagt bei
|
||||||
fehlender Position die Wahrheit statt einen toten Knopf zu zeigen, der Regler bekommt einen
|
fehlender Position die Wahrheit statt einen toten Knopf zu zeigen, der Regler bekommt einen
|
||||||
Speichern-Knopf, und die Share-Erweiterung trug eine andere Versionsnummer als die App;
|
Speichern-Knopf, und die Share-Erweiterung trug eine andere Versionsnummer als die App;
|
||||||
dazu die Kopfmarke statt der Firmierung des Betreibers und ein
|
dazu die Kopfmarke statt der Firmierung des Betreibers und ein
|
||||||
@@ -7839,6 +7839,128 @@ nicht setzen, und synthetisches Fetten verschmiert die Striche. Braucht
|
|||||||
entweder die Schriftdatei vom Eigentümer oder die Entscheidung, für diese eine
|
entweder die Schriftdatei vom Eigentümer oder die Entscheidung, für diese eine
|
||||||
Zahl auf „Audi Type" 400 zu wechseln.
|
Zahl auf „Audi Type" 400 zu wechseln.
|
||||||
|
|
||||||
|
## DC. Vollständiger Durchgang: Statik, Parität, Funktion (2026.9.5.41)
|
||||||
|
|
||||||
|
Auftrag des Eigentümers: „mache ein vollständiges audit und vor allem einen
|
||||||
|
paritätstest, ebenso einen funktionstest der Funktionen".
|
||||||
|
|
||||||
|
### Statik
|
||||||
|
|
||||||
|
29 Backend-Dateien `py_compile`, **alle** Dateien unter `frontend/` als **Modul**
|
||||||
|
geparst (Abschnitt AQ), sechs Backend-Testdateien OK, `tsc --noEmit` sauber,
|
||||||
|
**303** App-Tests, `vite build` sauber, Design-System gebaut.
|
||||||
|
|
||||||
|
### Struktur und Parität
|
||||||
|
|
||||||
|
Maschinell geprüft (`paritaet.mjs`, Scratchpad), nicht per Augenschein:
|
||||||
|
|
||||||
|
| | Ergebnis |
|
||||||
|
|---|---|
|
||||||
|
| Routen | Panel 21, App 21 — einzige Abweichung `live` (LiveFahrt, app-eigen, dokumentiert) |
|
||||||
|
| Jede App-Unterseite mit Titel | ja |
|
||||||
|
| Dienste | 28 in `const.py`, 28 in `services.yaml`, 28 registriert, alle mit Klarnamen |
|
||||||
|
| Sensorrollen | 27 Dataclass, 27 Katalog, keine Dublette, jede mit Beispiel |
|
||||||
|
| Wortlaut (13 Texte) | in beiden Codebasen gleich vorhanden |
|
||||||
|
| Statusfelder (18) | von beiden gelesen bis auf eines |
|
||||||
|
|
||||||
|
**Ein Befund:** `standort_genauigkeit_m` wird im Panel nach
|
||||||
|
`CAR.standortGenauigkeitM` gelesen und **nirgends verwendet**, in der App gar
|
||||||
|
nicht. Also kein Paritätsloch, sondern totes Schema — vorbestehend, deshalb
|
||||||
|
gemeldet statt entfernt. Entweder anzeigen (GPS-Genauigkeit auf der
|
||||||
|
Standortseite) oder streichen; Entscheidung des Eigentümers.
|
||||||
|
|
||||||
|
Zwei weitere Meldungen des Prüfskripts waren **Artefakte meiner eigenen
|
||||||
|
Suchmuster**: eine „Route Fehlte" (das Wort stammt aus einem Kommentar) und
|
||||||
|
„56 Dienste registriert" (28 Schemata plus 28 Handler). Beide nachgesehen, kein
|
||||||
|
Befund.
|
||||||
|
|
||||||
|
### Funktionstest am laufenden System
|
||||||
|
|
||||||
|
**Panel** (angemeldete Sitzung): alle **21 Routen** aufgerufen — jede rendert,
|
||||||
|
**null** Konsolenfehler, keine unbehandelte Ablehnung. „Auf Update prüfen"
|
||||||
|
gegen das echte Gitea: vorher keine Marke, danach „aktuell" plus „Zuletzt
|
||||||
|
geprüft 05.09.2026 · 17:38 Uhr", **ein** Knopf. Das belegt zugleich die
|
||||||
|
Richtungsprüfung aus Abschnitt CX — die Instanz stand auf `.40`, Gitea auf
|
||||||
|
`.39`, gemeldet wurde „aktuell" statt eines Rückschritts. „Jetzt lesen" in der
|
||||||
|
Dongle-Kachel liefert die Werte.
|
||||||
|
|
||||||
|
**App** (Zugang vom Eigentümer eingetragen): sechs Hauptseiten rendern, **null**
|
||||||
|
Konsolenfehler. Gemessen statt angesehen:
|
||||||
|
|
||||||
|
| Prüfpunkt | Messwert |
|
||||||
|
|---|---|
|
||||||
|
| Modellfeld | echtes `<select>`, `appearance: none`, **ein** Chevron, 180 px, alle zehn Modelle |
|
||||||
|
| Update-Kachel | genau ein Knopf, „aktuell" nach der Prüfung |
|
||||||
|
| Abstand unter der Trennlinie | 16 px Polster + 1 px Linie = **17 px** (vorher 29) |
|
||||||
|
| Sicherheitsseite | fünf Zeilen, Wortlaut zeichengleich mit dem Panel |
|
||||||
|
| Tankbalken | `rgb(245, 5, 55)` auf `rgba(120,120,128,.24)`, 6 px, voll gerundet |
|
||||||
|
| Zündung an | „Zündung an" / „Zündung an - Fahrzeug in Betrieb", Punkt `rgb(255, 214, 10)` = `--warn` |
|
||||||
|
| Schmales Layout | Reiterleiste mit fünf Punkten, Ringe oben rechts, keine Seitenleiste |
|
||||||
|
|
||||||
|
**Datenbestand:** 19 Fahrten, 18 Tankvorgänge, 18 Batterietage. Keine
|
||||||
|
0-km-Fahrt, keine negative Strecke, keine Dublette, kein Ende vor dem Beginn,
|
||||||
|
alle Spannungen in 8–15,5 V, Fahrten aufsteigend. Einziger Befund sind die drei
|
||||||
|
bekannten Altbelege mit `odometer_km` als Zeichenkette (Abschnitt CA, am
|
||||||
|
Lesepfad abgefangen).
|
||||||
|
|
||||||
|
### Zwei Befunde, die erst der Durchgang gebracht hat
|
||||||
|
|
||||||
|
**1. Meine eigene Schriftänderung war wirkungslos.** Ich hatte `.ads-fig` im
|
||||||
|
Design-System auf 400 gesetzt und den gebauten Stylesheet geprüft — dort stand
|
||||||
|
400. Gerendert wurden trotzdem 300, weil `audi-schrift.css` **nach** dem
|
||||||
|
Design-System eine eigene Regel für `.ads-fig, .dm-detail__zahl` mitbringt und
|
||||||
|
gewinnt. Im gebauten CSS standen beide Regeln nebeneinander; nur die
|
||||||
|
Reihenfolge entschied. Behoben, in der Auflage selbst.
|
||||||
|
|
||||||
|
**Merkposten:** eine Regel im Design-System zu ändern beweist nichts, solange
|
||||||
|
die App dieselbe Klasse überschreibt. Der Beleg ist der **gerenderte**
|
||||||
|
`getComputedStyle`-Wert, nicht der Fund im Stylesheet.
|
||||||
|
|
||||||
|
**2. Der Entwicklungsserver backt die App-Version beim Start.** Die vom
|
||||||
|
Eigentümer gemeldete Meldung „Diese App ist älter als der Server" kam daher,
|
||||||
|
dass der Server seit 13:10 UTC lief, also von vor den Versionssprüngen —
|
||||||
|
`__APP_VERSION__` liest `vite.config.ts` beim Laden der Konfiguration, ein
|
||||||
|
Neuladen der Seite ändert daran nichts. Nach einem Neustart des Servers war die
|
||||||
|
Meldung weg. Kein App-Fehler. Ebenso hält `node_modules/.vite` das CSS des
|
||||||
|
Arbeitsbereich-Pakets fest: nach einer Änderung am Design-System muss der
|
||||||
|
Zwischenspeicher gelöscht werden, ein Serverneustart allein reicht nicht.
|
||||||
|
|
||||||
|
### Was der Eigentümer als Fehler gemeldet hatte und keiner war
|
||||||
|
|
||||||
|
* **„Vollbild statt App", „Einstellungen unten links", „DataMetric360 oben
|
||||||
|
links"** — das breite Layout ab 860 px, so gebaut (Seitenleiste statt
|
||||||
|
Reiterleiste, Brotkrume statt Titelzeile).
|
||||||
|
* **„Beschriftung der Menüleiste funktioniert nicht"** — im schmalen Layout
|
||||||
|
nachgewiesen: an → aus → wieder an. Im breiten Layout gibt es keine
|
||||||
|
Reiterleiste, der Schalter kann dort nichts bewirken. **Offen als
|
||||||
|
Gestaltungsfrage:** ein Schalter, der im aktuellen Layout wirkungslos ist,
|
||||||
|
gehört dort vermutlich ausgeblendet.
|
||||||
|
* **„Fahrt beenden sichtbar"** — das war meins, siehe unten.
|
||||||
|
|
||||||
|
### Meine eigenen Testartefakte, angelegt und wieder entfernt
|
||||||
|
|
||||||
|
Ein synthetisches Zündungssignal in diesem Container **legt eine echte Fahrt
|
||||||
|
an**. Mein erster Test um 15:05 und der zweite um 15:43 haben je eine Nullfahrt
|
||||||
|
erzeugt (`t-190c61b28bc0`, `t-fae8fe9cb296`, beide 0,0 km, Beginn 14:43:55 aus
|
||||||
|
der veralteten Gerätezeit). Meine Zwischenaussage, die erste habe sich selbst
|
||||||
|
verworfen, war falsch — `MINDESTDAUER_S` greift nicht, weil der Beginn aus der
|
||||||
|
alten Meldezeit stammt und die Dauer damit groß wird. Beide über
|
||||||
|
`fahrt_loeschen` entfernt; Bestand wieder 19 Fahrten, keine von heute.
|
||||||
|
|
||||||
|
**Regel für den nächsten Funktionstest:** ein Zündungswechsel ist kein
|
||||||
|
folgenloser Anzeigetest. Entweder danach aufräumen oder den Zustand über eine
|
||||||
|
andere Quelle stellen.
|
||||||
|
|
||||||
|
### Offen
|
||||||
|
|
||||||
|
* `standort_genauigkeit_m` — totes Schema im Panel.
|
||||||
|
* Beschriftungs-Schalter ohne Wirkung im breiten Layout.
|
||||||
|
* **Audi Type Wide Bold** liegt vor (`AudiType-WideBold_4.03.woff2`), ist aber
|
||||||
|
bewusst nicht eingebunden — falls 400 noch zu dünn wirkt, ist es eine Zeile.
|
||||||
|
* Die Reservegrenze von **90 km** ist eine Festlegung, keine Messung. Ein
|
||||||
|
Bildschirmfoto der myAudi-App zwischen 95 und 110 km grenzt sie ein.
|
||||||
|
* Die beiden Tankvorgänge vom 04.09. (29,8 l / 29,7 l) stehen unverändert.
|
||||||
|
|
||||||
## Working conventions (observed — keep them)
|
## Working conventions (observed — keep them)
|
||||||
|
|
||||||
- German is the project language: identifiers, comments, commits, UI texts. Exceptions:
|
- German is the project language: identifiers, comments, commits, UI texts. Exceptions:
|
||||||
|
|||||||
Binary file not shown.
@@ -32,6 +32,25 @@
|
|||||||
font-display: swap;
|
font-display: swap;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Audi Type Wide gab es hier bis zum 05.09.2026 nur als Light (300) -
|
||||||
|
deshalb standen die grossen Zahlen im Light-Schnitt, und der Eigentuemer
|
||||||
|
verglich sie mit der myAudi-App: "die Ziffern der Reichweite sind in der
|
||||||
|
Audi App dicker". Er hat daraufhin den vollen Satz aus Audis eigenem
|
||||||
|
Styleguide geliefert (styleguide.audi.com, AudiType 4.03). Wide Normal ist
|
||||||
|
jetzt da; Wide Bold liegt vor, ist aber bewusst nicht eingebunden - 400 ist
|
||||||
|
der naechste Schritt, und 300/400 bleibt die Linie dieses Projekts.
|
||||||
|
|
||||||
|
Lizenz: gilt wie alle Audi-Assets nur fuer diese eine private Installation.
|
||||||
|
Deshalb liegt die Datei in companion-app bzw. im Panel, NIE in
|
||||||
|
design-system. */
|
||||||
|
@font-face {
|
||||||
|
font-family: "Audi Type Wide";
|
||||||
|
src: url("../assets/audi/schriften/audi-type-wide-400.woff2") format("woff2");
|
||||||
|
font-weight: 400;
|
||||||
|
font-style: normal;
|
||||||
|
font-display: swap;
|
||||||
|
}
|
||||||
|
|
||||||
@font-face {
|
@font-face {
|
||||||
font-family: "Audi Type Extended";
|
font-family: "Audi Type Extended";
|
||||||
src: url("../assets/audi/schriften/audi-type-extended-400-italic.woff2") format("woff2");
|
src: url("../assets/audi/schriften/audi-type-extended-400-italic.woff2") format("woff2");
|
||||||
@@ -51,10 +70,21 @@
|
|||||||
|
|
||||||
/* Große Zahlen (Kilometerstand, Reichweite, Beträge) in der breiten Schnitt-
|
/* Große Zahlen (Kilometerstand, Reichweite, Beträge) in der breiten Schnitt-
|
||||||
variante, wie im Panel. */
|
variante, wie im Panel. */
|
||||||
|
/* Seit dem 05.09.2026 Normal- statt Light-Schnitt: der Eigentümer verglich die
|
||||||
|
Zahlen mit der myAudi-App („die Ziffern der Reichweite sind in der Audi App
|
||||||
|
dicker") und lieferte daraufhin den vollen Satz aus Audis Styleguide. Wide
|
||||||
|
Normal (400) ist seither eingebunden; Wide Bold liegt vor, ist aber bewusst
|
||||||
|
nicht in Gebrauch.
|
||||||
|
|
||||||
|
Diese Regel steht NACH dem Design-System und gewinnt gegen dessen .ads-fig —
|
||||||
|
eine Änderung dort allein bleibt hier wirkungslos. Genau das ist am
|
||||||
|
05.09.2026 passiert und erst an der gerenderten Seite aufgefallen, nicht am
|
||||||
|
gebauten Stylesheet: dort standen beide Regeln, und nur die Reihenfolge
|
||||||
|
entschied. */
|
||||||
.ads-fig,
|
.ads-fig,
|
||||||
.dm-detail__zahl {
|
.dm-detail__zahl {
|
||||||
font-family: var(--font-wide);
|
font-family: var(--font-wide);
|
||||||
font-weight: 300;
|
font-weight: 400;
|
||||||
}
|
}
|
||||||
|
|
||||||
.ads-sport {
|
.ads-sport {
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
{"version":"2026.9.5.39","sha256":"1a78c65f9a96298f7ed97a8595e6505cf91f00a71620b068b4afcfdd14020483","bytes":324341,"gebaut":"2026-09-05T15:29:32Z"}
|
{"version":"2026.9.5.41","sha256":"b216efc3c99df3a9def63c5a5504dc1d2351b5ea604306cbfcdfa133421e2882","bytes":364409,"gebaut":"2026-09-05T15:47:17Z"}
|
||||||
Binary file not shown.
File diff suppressed because one or more lines are too long
@@ -418,7 +418,7 @@ button.tile, .tilebtn { transition: background .15s, transform .1s; }
|
|||||||
}
|
}
|
||||||
.fig {
|
.fig {
|
||||||
font-family: "Audi Type Wide", var(--font-stack);
|
font-family: "Audi Type Wide", var(--font-stack);
|
||||||
font-weight: 300;
|
font-weight: 400;
|
||||||
letter-spacing: -.02em;
|
letter-spacing: -.02em;
|
||||||
line-height: .95;
|
line-height: .95;
|
||||||
color: var(--fg);
|
color: var(--fg);
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"domain": "audi_dashboard",
|
"domain": "audi_dashboard",
|
||||||
"name": "Audi Dashboard",
|
"name": "Audi Dashboard",
|
||||||
"version": "2026.9.5.39",
|
"version": "2026.9.5.41",
|
||||||
"documentation": "https://gitea.nothaft.cloud/paul/audi-app/src/branch/main/README.md",
|
"documentation": "https://gitea.nothaft.cloud/paul/audi-app/src/branch/main/README.md",
|
||||||
"issue_tracker": "https://gitea.nothaft.cloud/paul/audi-app/issues",
|
"issue_tracker": "https://gitea.nothaft.cloud/paul/audi-app/issues",
|
||||||
"codeowners": [
|
"codeowners": [
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
.ads-fig {
|
.ads-fig {
|
||||||
font-weight: 300;
|
font-weight: 400 /* Wide Normal, siehe audi-schrift.css */;
|
||||||
/* -.03em, nicht -.02em: die iOS-Auflage im Panel überschreibt .fig dort
|
/* -.03em, nicht -.02em: die iOS-Auflage im Panel überschreibt .fig dort
|
||||||
eigens (audi-dashboard-ios.css, live gemessen -1.8px bei 60px = -.03em)
|
eigens (audi-dashboard-ios.css, live gemessen -1.8px bei 60px = -.03em)
|
||||||
- das Basisblatt allein (audi-dashboard.css, -.02em) reicht am echten
|
- das Basisblatt allein (audi-dashboard.css, -.02em) reicht am echten
|
||||||
|
|||||||
Reference in New Issue
Block a user