companion-app: catch up six days of panel drift before the native build
The phone-app codebase (companion-app/) hadn't been touched since 2026-08-11 - every panel fix and feature since then (HIG audit rounds, receipt upload, trip editing, Inspektion forecast, ...) existed only in the HA panel. Found while auditing what's needed for a real iPhone build; user decision was to port everything now rather than ship a stale app. Six real, verified gaps (not blind copies of panel CSS/markup, which doesn't transfer to the @audi-dash/ui component set): - Battery voltage cutoff was still 13.2V, not the panel's 12.8V fix. - Dead wlan_name field (WLAN trip detection was fully removed from the backend 2026-08-12) - removed from the adapter and the settings screen instead of leaving a form field that silently does nothing. - No Inspektion forecast - added inspektionPrognose() alongside the existing oelwechselPrognose(), sharing a refactored core. - Arbeitsweg pill used the design-system's "work" variant, which is documented as recoloring to red - stopped passing it, same fix as the panel. - Trip creation only took Beginn/Ende/Art; extended with Startort/ Zielort/Kilometerstand/Distanz via a new shared FahrtFelder.tsx. - FahrtDetail.tsx was read-only - added an edit mode using the same shared fields, backed by a new DataMetricApi.fahrtAktualisieren() calling the backend service built earlier this session. Explicitly checked and found not applicable: price rounding (already 2 decimals here), pull-to-refresh CSS (no native gesture to fix), the panel's drag/paste receipt dialog (solves a desktop-browser problem this native app doesn't have - the plain file picker already gets iOS's native Files integration), and the purely cosmetic panel CSS fixes. npm install run at the repo root (node_modules was incomplete/stale), package-lock.json reflects the real dependency tree. Verified with npm run typecheck (clean), npm run test (95/95, up from 90 - added interaction tests for the new form and inspektionPrognose), and npm run build (succeeds). Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
@@ -42,7 +42,10 @@ dead-ends in the bootstrap retry loop behind the reported hanging "Lädt …" sc
|
||||
round the same day replaced the trip form's editable "Dauer" with Start-/Ankunftszeit (duration is
|
||||
now computed, not entered), capitalized the Art labels shown to the user, dropped the red styling
|
||||
and hint text from the Arbeitsweg pill, and fixed a daylight-mode-only regression from round twelve
|
||||
where the image placeholder's grey background had turned invisible-white).
|
||||
where the image placeholder's grey background had turned invisible-white; separately the same day,
|
||||
`companion-app/` (the actual phone-app codebase, which had silently drifted six days behind the
|
||||
panel) was brought back in sync with everything the panel gained since 2026-08-11 - see the
|
||||
"Gap found while auditing..." entry near the end of section C).
|
||||
This file is the entry point for every new agent
|
||||
session: what this repo is, what is finished, what is missing, and how to work here. Detail lives in
|
||||
the linked documents — this file points, it does not duplicate.
|
||||
@@ -1322,16 +1325,61 @@ wraps the web app for iPhone; a PWA home-screen install is the accepted intermed
|
||||
All five deployed to `audi_ha_test` (version `1787009000`) and synced to `installationspaket/`;
|
||||
console showed only the pre-existing service-worker/404 noise from the missing vehicle photos,
|
||||
nothing new.
|
||||
- [ ] **New gap found while auditing "what's needed for a real iPhone app" (2026-08-17):**
|
||||
`companion-app/src/screens/` has not been touched since 2026-08-11 (`git log -1` on that
|
||||
path) — every panel fix and feature from the six days of sessions since (the full HIG audit
|
||||
rounds, receipt drag/paste upload, trip editing, Ankunftszeit, Inspektion forecast,
|
||||
Heckklappenschloss removal, the Tag-theme placeholder fix, all of it) exists **only** in
|
||||
`homeassistant/www/audi-dashboard-app.js`, not in the companion app. The two codebases are
|
||||
independent implementations of the same product, not a shared component — nothing in this
|
||||
repo currently keeps them in sync automatically. Whoever next works on the companion app
|
||||
needs to either treat this as a deliberate "port everything since 2026-08-11" task, or
|
||||
explicitly decide the divergence is acceptable for now. Not scoped or started.
|
||||
- [x] **Gap found while auditing "what's needed for a real iPhone app" (2026-08-17), then closed
|
||||
the same day:** `companion-app/src/screens/` hadn't been touched since 2026-08-11 — every
|
||||
panel fix and feature from the six days since (HIG audit rounds, receipt upload, trip
|
||||
editing, Inspektion forecast, ...) existed only in `homeassistant/www/audi-dashboard-app.js`.
|
||||
User decision: port everything now, before any native build work (Android build itself
|
||||
deprioritized/uncertain per the user - Paul has an Apple Developer Program and will help with
|
||||
iOS signing). Audited both codebases field-by-field (not by diffing the panel's CSS/markup,
|
||||
which doesn't transfer to `@audi-dash/ui` components) and found six real, mechanically
|
||||
distinct gaps, all fixed:
|
||||
1. **`AGM_RUHE_MAX_V` was still 13.2** in `Batterie.tsx` - lowered to 12.8, matching the
|
||||
panel's 2026-08-16 fix (same rationale: above that is already alternator voltage).
|
||||
2. **Dead `wlan_name` field** - `profilAdapter.ts` still read/wrote it and `Einstellungen.tsx`
|
||||
showed it as an editable "WLAN des Fahrzeugs" field, even though WLAN-based trip detection
|
||||
was fully removed from the backend on 2026-08-12 (replaced by FMM003 ignition). Editing it
|
||||
had zero effect. Removed from the type, both directions of the adapter, the settings
|
||||
screen, and both test fixtures.
|
||||
3. **No Inspektion forecast** - `service.ts` only had `oelwechselPrognose()`. Refactored the
|
||||
shared math into a `servicePrognose()` core (kept `oelwechselPrognose()`'s public
|
||||
signature/behavior identical - all 9 existing tests still pass unchanged) and added
|
||||
`inspektionPrognose()` (fixed 30.000 km / 24 Monate, no customizable interval like the oil
|
||||
change has), wired into `Service.tsx` as a new "Eigene Prognose (Inspektion)" row. 3 new
|
||||
tests.
|
||||
4. **Arbeitsweg pill was red** - `Pill variant="work"` in `Fahrten.tsx`/`FahrtDetail.tsx`;
|
||||
`@audi-dash/ui`'s own source comment says the variant literally "recolors border+text to
|
||||
the accent red". Stopped passing the variant in both spots - same fix as the panel, no
|
||||
change needed to the shared design-system component itself.
|
||||
5. **Trip creation only took Beginn/Ende/Art** - the panel's fuller field set (Startort,
|
||||
Zielort, Start-/Endkilometer, Distanz) didn't exist here. New shared
|
||||
`src/screens/FahrtFelder.tsx` (type, defaults, backend-payload conversion, and the
|
||||
presentational field group) used by both the create form (`Fahrten.tsx`) and a **new**
|
||||
edit capability.
|
||||
6. **`FahrtDetail.tsx` was entirely read-only** - no edit, no Art toggle after creation. Added
|
||||
a "Bearbeiten" toggle reusing `FahrtFelder.tsx`, backed by a new `DataMetricApi
|
||||
.fahrtAktualisieren()` (mirrors the existing `tankvorgangAktualisieren()` pattern) calling
|
||||
the backend's `audi_dashboard_fahrt_aktualisieren` service (built this session on the panel
|
||||
side, so the backend contract already existed and needed no changes).
|
||||
**Explicitly investigated and found NOT to apply** (worth recording so it isn't re-attempted):
|
||||
price-per-litre rounding (companion-app's `eur()` already always renders 2 decimals - the
|
||||
3-decimal bug the panel had never existed here); pull-to-refresh `overscroll-behavior` (no
|
||||
native pull gesture implementation here to fix); the panel's drag/paste/file-picker receipt
|
||||
dialog (solves a **desktop browser clipboard** problem that doesn't exist in a Capacitor
|
||||
native app - the plain `<input type=file>` already in `TankDetail.tsx` gets iOS's native
|
||||
Files/Photos picker for free, which already covers "a PDF saved from Mail"); every
|
||||
Setup-menu/entity-mapping feature (HA-panel-only concept, the companion app consumes the
|
||||
backend's already-resolved published state and has no equivalent screen, nor should it);
|
||||
the many purely cosmetic HIG-audit CSS fixes (icon fills, chevrons, tab-bar highlight
|
||||
bugs, ...) - those target the panel's own hand-written markup/CSS, not
|
||||
`@audi-dash/ui`'s components, and don't transfer.
|
||||
Verified after every change: `npm run typecheck` (clean throughout), `npm run test` (95/95
|
||||
passing, up from 90 - added interaction tests for the new create-form fields and the
|
||||
edit-toggle pre-fill, plus 3 for `inspektionPrognose()`), `npm run build` (succeeds). Also
|
||||
corrected a stale README claim ("Capacitor-Hülle und sichere Ablage" both listed as open) -
|
||||
the secure-storage adapter is actually fully wired (`ablageNativ.ts`, activated from
|
||||
`main.tsx`) and only the native `ios/`/`android/` platform folders themselves (deliberately
|
||||
gitignored, regenerated via `npx cap add`) are the missing piece, and that step needs a Mac.
|
||||
- [ ] Fix remaining documentation drift (statistics claim, README gaps, obsolete TODO comment) —
|
||||
text-only changes; INSTALL.md's WLAN/TommiG1 drift and stale variable names were fixed
|
||||
2026-08-12 (see section B); `DESIGN_REVIEW_2026-08-13.md` and `REVIEW_main_2026-08-13.md`
|
||||
|
||||
Reference in New Issue
Block a user