Reifen/Version/Wartungsplan: erste Runde des Sammel-Feedbacks behoben
- Archiv-Knopf jetzt in Zeile mit "Montiert" (stale margin-top entfernt), bekommt einen sichtbaren Hintergrund - companion-app: Wechseltermin-Datumsfeld (appearance-Reset gegen natives Safari-Chrome, Breite auf Inhalt geschrumpft) - Mein Audi/Reifen-Box: "montiert: Sommerräder" links statt Marke/Modell, "offen" durch "-" ersetzt - "Servicebuch" ueberall in "Wartungsplan" umbenannt (nur Anzeigetext, beide Codebasen) - Version-Kachel: tote Fahrzeugdaten-/Position-/Dashboard-Zeilen entfernt (inkl. der nie aktualisierten CONFIG.version-Konstante) Version 2026.8.28.1, live im Testcontainer verifiziert. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -3939,6 +3939,86 @@ reading source): the battery list's `<div class="leaf">` now computes `cursor: a
|
||||
a genuinely navigable trip row (`<button class="leaf">`) still correctly computes `cursor: pointer` -
|
||||
confirming the fix is properly scoped, not a blanket removal.
|
||||
|
||||
## AB. First round of a large owner batch: Reifen/Version/Wartungsplan fixes (2026.8.28.1)
|
||||
|
||||
Owner sent 12 items in one message. Worked through the quick, well-specified ones first; the two larger
|
||||
ones (combined export/import popup, Setup-menu sensor field redesign) are being scoped with the owner before
|
||||
implementation - see the open items this creates below.
|
||||
|
||||
- **Archiv-Knopf nicht in Zeile mit "Montiert"** (Reifen-Seite, panel only - no companion-app equivalent):
|
||||
root cause was `.montiert`'s own `margin-top:var(--sp-4)` (added 2026-08-16 round eight, when the pill sat
|
||||
alone under the headline block) - once the archive icon button joined it on the same flex row (section R),
|
||||
that leftover margin threw off `align-items:center`'s vertical centering between the two children, even
|
||||
though both were genuinely siblings in the same row. Moved the spacing to the wrapping row div instead of
|
||||
one child. Verified live: both centers compute to the identical `584.08px` Y-coordinate.
|
||||
- **Archiv-Icon soll ein Knopf mit Hintergrund sein**: new `.archivbtn` class (panel), permanent
|
||||
`background: var(--tile-2)` instead of the generic `.iconbtn`'s hover/active-only background.
|
||||
- **companion-app: Wechseltermin-Datumsfeld sah aus wie ein gestreckter Kreis statt einer Box**: root cause
|
||||
is the standard cross-browser gap - `input[type="date"]` needs an explicit `appearance:none` reset or
|
||||
Safari/WKWebView (this app's iOS shell) keeps its own heavily-rounded native chrome regardless of author
|
||||
CSS on `background`/`border`/`border-radius`. Neither `.dm-eingabe` nor the shared `@audi-dash/ui` `Feld`
|
||||
component reset it. Fixed locally in `companion-app/src/stile/screens.css` (not in the shared design-system
|
||||
package - no other field type shows this, scoped to `input[type="date"].dm-eingabe` only) with
|
||||
`-webkit-appearance:none`/`appearance:none` plus `width:fit-content` (owner's explicit ask: shrink to the
|
||||
actual date text instead of the shared `Feld`'s `min-width:132px`). **Not live-verified** - no running
|
||||
companion-app session with backend auth this round; verified via `tsc --noEmit` and the full suite only,
|
||||
same limitation as several other companion-app-only changes this session.
|
||||
- **Mein Audi/Reifen-Box restructured**: was `Reifen · Sommer montiert` as the tile header, then
|
||||
`<dt>Continental SportContact</dt><dd>275/30 R20 97Y XL</dd>` as the first row. Header simplified to just
|
||||
"Reifen"; the row's left side now reads `montiert: Sommerräder` (owner's exact wording, `${r.aktiv}räder`)
|
||||
instead of the brand/model, keeping the size (`275/30 R20 97Y XL`) as the right-hand value, per the owner's
|
||||
explicit "montiert... shall be on the left side". companion-app's equivalent "Mein Audi" tile
|
||||
(`MeinAudi.tsx`) is structurally a single-line `NaviKachel` (`${aktiv} · ${km} km`), not the panel's
|
||||
multi-row `.rows` list - it never had "Sommer montiert" or brand/model text to begin with, so nothing to
|
||||
port here (documented structural difference, not a skipped fix).
|
||||
- **"offen" caption removed from the Wechseltermin row**: `vereinbart ? "vereinbart" : "offen"` → `... : "–"`
|
||||
- owner: "the '-' is sufficient". Same structural note as above - companion-app's tile has no equivalent
|
||||
caption to change.
|
||||
- **"Servicebuch" renamed to "Wartungsplan" everywhere it's user-visible**, both codebases - tile/page
|
||||
headings, empty-state text, confirm-delete dialogs, CSV export button label, the "Mein Audi" Service
|
||||
NaviKachel's summary text. Deliberately NOT renamed: the `ServicebuchEintrag` TS type, the `Servicebuch()`
|
||||
component/function names (panel and companion-app), the `sbuch` route key, and every code comment - same
|
||||
precedent as the 2026-08-19 "Zusammen"→"Summe" rename (display-label fix, not a data-model rename).
|
||||
- **"Version" tile cleaned up**: removed the "Fahrzeugdaten"/"Position" rows (both hardcoded to the literal
|
||||
string "FMM003", carried no live information) and the "Dashboard" row, whose value came from `CONFIG.version`
|
||||
- a frontend constant hardcoded to `"1.0"` at `profilZuConfig()` (confirmed via grep: no other reader),
|
||||
never updated since. Removed that dead constant along with its row rather than leaving an orphan. Only
|
||||
"Installiert" (the real `APP_VERSION` from the backend) remains.
|
||||
|
||||
Verified: `node --check` clean on the panel, `tsc --noEmit` clean and full suite green (146/146) on
|
||||
companion-app. Manifest bumped to `2026.8.28.1` (new day, per this project's `YYYY.M.D.N` scheme - the prior
|
||||
session's work had reached `.27.22`). `audi_ha_test` restarted, confirmed clean via log
|
||||
(`Audi Dashboard 2026.8.28.1 eingerichtet`). Live-verified via the panel's own shadow DOM: Reifen tile shows
|
||||
`montiert: Sommerräder | 275/30 R20 97Y XL` and `15.10.2026 | –`; Version tile shows only "Installiert"; the
|
||||
Archiv button and "Montiert" share one Y-center exactly, with a visible background disc behind the icon
|
||||
(screenshot taken).
|
||||
|
||||
**Open, not yet started - scoped with the owner before implementation:**
|
||||
- **Item 8 (informational, answered in chat, not yet acted on)**: both the live path
|
||||
(`tankerkennung.py`→`ablage.distanz_seit_letzter_tankung()`) and the import path
|
||||
(`historienimport.py`'s `_distanz_zum_vorherigen()`) compute "distance since last refuel" as an odometer
|
||||
delta (current/refuel `KM_SENSOR` reading minus the previous refuel's own recorded `odometer_km`) - a
|
||||
derived calculation, not read from any vehicle sensor. Owner pointed out a real FMM003 sensor,
|
||||
`sensor.testzone_fmm003_calculated_distance_covered_after_the_latest_refueling` (device-side, presumably
|
||||
more accurate/authoritative than our own subtraction), that reports this directly and "can be used instead
|
||||
of the calculation" - not yet wired in, would mirror the `TANK_LITER_SENSOR` precedent (section Q): new
|
||||
optional sensor role, preferred over the calculation when mapped, calculation stays as the fallback when
|
||||
unmapped. Owner to confirm before this is built.
|
||||
- **Item 9**: combine the "Fahrzeugprofil" tile (`data-profil="export"`/`"import"`, JSON) and "Daten ausgeben"
|
||||
tile (`data-csv="fahrten"`/`"tanken"`/`"service"`, CSV export only, no import) into one area with two
|
||||
buttons - "Datensatz sichern" opening a popup with 4 individual export actions (Fahrzeugprofil,
|
||||
Fahrten/Tankvorgänge/Wartungsplan as CSV), "Datensatz laden" the same 4 in reverse. The pre-existing,
|
||||
separate "Backup" tile (`data-backup="jetzt"`/`"export"`/`"import"`, a combined profil+fahrten+tank JSON
|
||||
bundle plus the scheduled-backup mechanism) was NOT named by the owner and stays untouched. Three of the
|
||||
four export actions and one of the four import actions already exist and just need moving into the new
|
||||
popup; CSV **import** for Fahrten/Tankvorgänge/Wartungsplan does not exist anywhere yet and needs new
|
||||
backend parsing (inverse of the existing CSV export format: `;`-delimited, de-DE number format).
|
||||
- **Item 11**: Setup-Menü sensor role fields - replace the current description text under each field's
|
||||
headline (e.g. "on = Fahrt läuft", "Optional, vom CAN...") with the live sensor's current output value and
|
||||
unit inline next to the headline (`[on/off]`, `[%]`, `[l]`, `[km]`...), and show the matched entity's ID
|
||||
suffix (the part after `fmm003_...`) as "the expected sensor" - not yet investigated in the code
|
||||
(`entitaeten.py`'s `FELDER` catalog / the Setup popup's row-rendering in the panel).
|
||||
|
||||
---
|
||||
|
||||
## Working conventions (observed — keep them)
|
||||
|
||||
Reference in New Issue
Block a user