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:
2026-08-28 09:43:40 +02:00
parent bdd8cb89a3
commit edefdd66d8
9 changed files with 129 additions and 31 deletions
+1 -1
View File
@@ -83,7 +83,7 @@ export const TITEL: Record<SeitenName, string> = {
battliste: "Messwerte",
service: "Service",
werkstatt: "Werkstatt",
sbuch: "Servicebuch",
sbuch: "Wartungsplan",
reifen: "Reifen",
vers: "Versicherung & Steuer",
beitrag: "Beitrag",
+1 -1
View File
@@ -55,7 +55,7 @@ export function MeinAudi({ geheZu }: { geheZu: (name: SeitenName, id?: string) =
}
beiKlick={() => geheZu("battverlauf")}
/>
<NaviKachel titel="Service" wert="Termine und Servicebuch" beiKlick={() => geheZu("service")} />
<NaviKachel titel="Service" wert="Termine und Wartungsplan" beiKlick={() => geheZu("service")} />
<NaviKachel
titel="Reifen"
wert={`${fahrzeug.reifen.aktiv} · ${deOderStrich(aktiverSatz.km)} km`}
+7 -7
View File
@@ -140,7 +140,7 @@ export function Service({ geheZu }: { geheZu: (name: SeitenName, id?: string) =>
{oelFussnote && <div className="dm-tgprognose">{oelFussnote}</div>}
</>
) : (
<div className="dm-tgwert dm-tgwert--leer">kein Eintrag im Servicebuch</div>
<div className="dm-tgwert dm-tgwert--leer">kein Eintrag im Wartungsplan</div>
)}
</div>
@@ -156,7 +156,7 @@ export function Service({ geheZu }: { geheZu: (name: SeitenName, id?: string) =>
{inspFussnote && <div className="dm-tgprognose">{inspFussnote}</div>}
</>
) : (
<div className="dm-tgwert dm-tgwert--leer">kein Eintrag im Servicebuch</div>
<div className="dm-tgwert dm-tgwert--leer">kein Eintrag im Wartungsplan</div>
)}
</div>
@@ -167,7 +167,7 @@ export function Service({ geheZu }: { geheZu: (name: SeitenName, id?: string) =>
{huGueltig ? (
<div className="dm-tgwert">{datum(fahrzeug.hu)}</div>
) : (
<div className="dm-tgwert dm-tgwert--leer">kein Eintrag im Servicebuch</div>
<div className="dm-tgwert dm-tgwert--leer">kein Eintrag im Wartungsplan</div>
)}
</div>
@@ -183,7 +183,7 @@ export function Service({ geheZu }: { geheZu: (name: SeitenName, id?: string) =>
</div>
)}
<p className="dm-fussnote">
Die eigene Prognose rechnet ab dem letzten Eintrag der jeweiligen Art im Servicebuch neu
Die eigene Prognose rechnet ab dem letzten Eintrag der jeweiligen Art im Wartungsplan neu
und nutzt die seither tatsächlich gefahrene Strecke. Sie ersetzt die Meldung des
Fahrzeugs nicht, sondern ergänzt sie.
</p>
@@ -196,7 +196,7 @@ export function Service({ geheZu }: { geheZu: (name: SeitenName, id?: string) =>
beiKlick={() => geheZu("werkstatt")}
/>
<NaviKachel
titel="Servicebuch"
titel="Wartungsplan"
wert={`${de(buch.length)} Eintrag${buch.length === 1 ? "" : "e"}`}
beiKlick={() => geheZu("sbuch")}
/>
@@ -324,7 +324,7 @@ export function Servicebuch() {
}
const entfernen = async (index: number) => {
if (!bestaetigen("Diesen Servicebuch-Eintrag löschen?")) return
if (!bestaetigen("Diesen Wartungsplan-Eintrag löschen?")) return
await schreiben(buch.filter((_, i) => i !== index))
}
@@ -397,7 +397,7 @@ export function Servicebuch() {
{buch.length === 0 && !neuOffen && (
<Leerzustand
titel="Servicebuch ist leer"
titel="Wartungsplan ist leer"
text="Trag hier ein, was am Fahrzeug gemacht wurde. Aus den Ölwechseln entsteht die eigene Wartungsprognose."
aktion={{ beschriftung: "Eintrag hinzufügen", beiKlick: () => setzeNeuOffen(true) }}
/>
+1 -1
View File
@@ -176,7 +176,7 @@ export function Uebersicht({ geheZu }: { geheZu: (name: SeitenName, id?: string)
</span>
</>
) : (
<span className="dm-fussnote">kein Eintrag im Servicebuch</span>
<span className="dm-fussnote">kein Eintrag im Wartungsplan</span>
)}
</button>
<div className="dm-servicezeile">
+16
View File
@@ -24,6 +24,22 @@
color: var(--fg3);
}
/* type="date": ohne appearance-Reset behält Safari/WKWebView (die iOS-Hülle
dieser App) sein eigenes, stark abgerundetes natives Eingabe-Chrome statt
der Box-Optik aus @audi-dash/ui's Feld - beim Nutzer sichtbar als
"gestreckter Kreis statt Box" (Reifen.tsx, Wechseltermin). @audi-dash/ui
selbst bleibt unangetastet (kein appearance-Reset dort, andere Felder
zeigen den Fehler nicht) - der Reset sitzt hier, spezifisch für type=date,
höhere Selektor-Spezifität als das geteilte ".ads-feld input" schlägt
dessen feste min-width:132px, die hier breiter ist als "27.08.2026"
braucht. */
input[type="date"].dm-eingabe {
-webkit-appearance: none;
appearance: none;
min-width: 0;
width: fit-content;
}
/* Eine Zeile aus einer bearbeitbaren Liste (z. B. Selbstbeteiligung im
Vertrag) - zwei Eingaben plus Löschen-Knopf in einer Reihe, deckungsgleich
mit .feld/.zeile-loeschen im Panel (audi-dashboard.css). */