Befundliste des Besitzers: drei echte Fehler, dazu Feinschliff (2026.8.30.9)

Fahrzeug-Pin auf der Standortkarte fehlte: die Marker-Effekte lesen Refs,
die erst im asynchronen Leaflet-Import gesetzt werden. Beim ersten Lauf leer,
Effekt steigt aus - und weil die Koordinaten sich danach nicht mehr aendern,
lief er nie wieder. Ein Bereitschaftsschalter in den Abhaengigkeiten behebt
das fuer Marker, Kachelebene und eigene Position zugleich.

Kachelpfeil auf "Mein Audi" sass auf halber Kachelhoehe statt oben neben der
Ueberschrift; Auswahlfelder hatten nach appearance:none ueberhaupt keinen
Aufklapp-Pfeil mehr.

SmartDeal: das Datumsfeld war fehlerhaft und die Abfrage, bis wann der Rabatt
gilt, fehlte ganz. Das Panel fragt beim Einschalten und zeigt danach nur an -
genau daran haengt, dass der Rabatt von selbst auslaufen kann. Portiert.

Adressen statt Koordinaten: Nominatim drosselt uns inzwischen. Beide Apps
fielen korrekt zurueck, merkten sich Treffer aber nur bis zum Neuladen. Jetzt
dauerhaft im selben Cache wie die Tankstellensuche.

Ziehen zum Aktualisieren auf dem Geraet: dem Scrollbehaelter fehlte
overscroll-behavior, das native Overscroll nahm die Geste weg - derselbe
Befund, den das Panel am 2026-08-17 hatte.

Ausserdem: Platzhalter wieder in voller Groesse, FIN statt Fahrgestellnummer,
Details als Hinweiszeile, Chevron an der Batteriespannung, Reifenzeile
"aktuell montiert:", Zahnrad statt Stift am Anzugsmoment, Radkilometer in der
Zahlenschrift, Layer-Icon zentriert, share-s beim Teilen, Schliessen-Knopf nur
bei aufgezogener Karte.

Nicht nachstellbar und zurueckgemeldet: "Fahrten/Tanken, grauer Hintergrund" -
Panel und App sind dort deckungsgleich.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-30 23:12:33 +02:00
parent f38907991d
commit a08922e9a0
16 changed files with 396 additions and 110 deletions
+72 -1
View File
@@ -1,6 +1,8 @@
# AGENTS.md — Project state, review findings, open items, and working rules
**Last updated: 2026-08-30** (design-audit follow-through - the five priority items applied to
**Last updated: 2026-08-30** (owner findings batch - vehicle pin, tile chevrons, select arrows,
SmartDeal dialog, address cache and pull-to-refresh; manifest `2026.8.30.9`, see section AO.
Before that: design-audit follow-through - the five priority items applied to
both codebases, plus the location preview's wrong pin; manifest `2026.8.30.8`, see section AN.
Before that: third parity round — the panel had never actually rendered Audi
Type (@font-face inside a shadow root is ignored), "Daten bearbeiten" now works in both, and the
@@ -5821,6 +5823,75 @@ pushed from elsewhere, no overlap).
---
## AO. Owner findings batch, 2026.8.30.9 - three of them real bugs with a single cause each
Seventeen findings in one go, all applied to both codebases unless noted.
**The three that were genuine defects, not drift:**
1. **No vehicle pin on the Standort map (app).** The marker effects read `leafletRef`/`kartenRef`,
which are only filled inside the asynchronous `import("leaflet")` callback. On mount they were
still null, the effects returned early - and since their dependencies (the coordinates) never
changed afterwards, they never ran again. A `karteBereit` flag, set once the map exists and added
to those dependency lists, brings them back. Same class of bug reached the tile-layer and
own-position effects; all four were fixed together.
2. **The chevron on the Mein-Audi tiles sat on half the tile's height (app).** `.ads-tile__go` was a
flex child with `margin-left`, so on a tile with several value rows it pointed into the middle of
a row instead of at the title that says where it leads. Now absolute at top 22px / right 18px -
what the panel has done since 2026-08-13. Measured before: 132 / 106 / 106 / 98px from the top.
3. **Select fields had no drop-down arrow at all (app).** `appearance:none` in `Feld.css` removed the
native arrow without putting anything back, so a picker was indistinguishable from a plain text
field. Reported at "Ansicht" and at the backup interval; the fix in `.ads-feld select` covers
every select in the app and copies the panel's own chevron image and metrics one to one.
**SmartDeal: the date field was broken *and* the question behind it was missing.** The app carried an
inline date input labelled "Gültig bis", the panel asks for the date in a dialog the moment the
switch is turned on and afterwards only displays it. The panel's behaviour is the one that makes
sense - `smartdeal.aktiv` is computed from that date (`laeuft_ab >= heute` in both codebases), so
without it the discount can never expire on its own. The dialog is now ported; the inline field is
gone, so there is exactly one way to set the value.
**Nominatim has started refusing us.** "Suddenly only GPS coordinates where an address used to be" is
not a display bug: the reverse lookup comes back without a CORS header (that is what throttling looks
like from a browser) and both apps fall back to coordinates as designed. What was missing is memory -
the panel kept a single point in RAM, the app the same, both gone on reload, with the reasoning "the
vehicle position changes constantly anyway". That holds for driving, not for parking: the car stands
in the same few places. Both now cache resolved addresses in the same persistent store the fuel-station
lookup already used (`rev:`-prefixed key, rounded to ~110 m); only real hits are stored, so a throttled
answer is retried rather than remembered as "no address here".
**Pull-to-refresh did not work on the device.** The gesture logic was fine - the scroll container had
no `overscroll-behavior`, so iOS's own rubber-band took the gesture before the threshold was reached.
Exactly the finding the panel had on 2026-08-17 and the app never received; `.dm-scroll` now carries
`overscroll-behavior-y: contain` and `touch-action: pan-y`. Not reproducible on a desktop, because
there is no native overscroll to compete with.
**The rest, briefly:** the Übersicht placeholder is back at full 16:8 size (the audit had narrowed it
to 72px; a strip does not show what belongs there); "Fahrgestellnummer" is now "FIN" and "Details"
shows "Informationen über das Auto" as a comment-weight hint rather than a truncated engine line; the
Batteriespannung row got its chevron back (an earlier note claiming the panel marks it by cursor only
was wrong - the panel has a `.chev` there); the Reifen box leads with "aktuell montiert: /
Sommerräder" and drops the dash under the change date; Anzugsmoment uses the gear, not the pencil (the
pencil belongs to the kilometre correction); the wheel odometer is back in the figure typeface at
32px; the map-layer icon is the only one of the four controls not centred in its own grid (2.1 left
vs 1.1 right, measured via `getBBox`) and is now nudged onto centre and scaled to 0.88 so it stops
outweighing its outline neighbours; Teilen uses the real `share-s` from the CI set; and the sheet's
close button only exists while the sheet is raised - half-covered it looked operable and did nothing.
**One finding could not be reproduced:** "Fahrten/Tankfüllung: Auflistung/grauer Hintergrund ist
falsch". Panel and app are identical there - same backgrounds (transparent rows on a white tile),
same paddings, same indents, same text. Reported back rather than guessed at.
Verified: `node --check`, `design-system` rebuilt, `tsc --noEmit` clean, 147/147 green, deployed to
`audi_ha_test` and confirmed against both frontends at 375x812 - chevrons at 22px on all four tiles,
the Zustand row's chevron, the select arrow, the full-size placeholder, the SmartDeal dialog driven
end to end (state restored afterwards), the Reifen page's gear/date/figure, and on Standort: one
marker, the centred layer icon, the share glyph, and the close button appearing exactly when the sheet
is raised.
---
## Working conventions (observed — keep them)
- German is the project language: identifiers, comments, commits, UI texts. Exceptions: