diff --git a/AGENTS.md b/AGENTS.md
index ca06732..881fb49 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -11664,3 +11664,61 @@ zweiten Neustart keine Meldung und kein Schreibvorgang.
Weitere ausgemusterte Felder gehoeren in `AUSGEMUSTERTE_PROFILFELDER`, nicht in
neuen Sondercode.
+
+## CU. Die Erstzulassung war in der App gar nicht speicherbar (2026.9.5.12)
+
+Gemeldet: *"Erstzulassung wird in den Einstellungen nicht richtig gespeichert
+und in das Service Menü übernommen... Trägt man ein datum mit Punkt oder Strich
+ein, wechselt zur Kontrolle ins Service Menü, so ist HU-Feld dort leer. Zurück
+in den Einstellungen ist Erstzulassung leer"*.
+
+### Die Ursache: ein zweiter Entwurf, den die Speicherleiste nicht kannte
+
+`Einstellungen.tsx` fuehrt zwei Entwuerfe nebeneinander. `entwurf` haelt die
+Einstellungen, `erstzulassung` einen eigenen fuer das Fahrzeugfeld - richtig
+so, es gehoert nicht zu den Einstellungen. Nur haben zwei Stellen den zweiten
+Entwurf vergessen:
+
+ if (!entwurf && !zusatz) return // speichern() stieg sofort aus
+ {entwurf && (
... )} // Leiste fehlte
+
+Wer **nur** die Erstzulassung aenderte, bekam damit gar keinen
+Speichern-Knopf zu sehen, und selbst ein Aufruf von `speichern()` haette in der
+ersten Zeile abgebrochen. Der eingetippte Wert war schlicht nicht speicherbar
+und beim Verlassen der Seite weg. Am laufenden System nachgewiesen: Feld nimmt
+"15.06.2024" an, `speicherleisteSichtbar: false`, kein Speichern-Knopf im DOM.
+
+**Das Panel war nie betroffen** - dort schreibt der `data-einrichten`-Handler
+bei jeder Aenderung sofort ins Profil. Wieder eine Abweichung, die kein
+Quelltextvergleich zeigt, sondern nur das Bedienen beider Oberflaechen.
+
+Behoben: beide Bedingungen kennen jetzt den zweiten Entwurf, und "Verwerfen"
+setzt ihn mit zurueck - sonst bliebe die Leiste danach stehen.
+
+### Der Platzhalter log
+
+Beide Felder schlugen `MM/JJJJ` vor, obwohl ein voller Tag gemeint ist und die
+Ableitung der Hauptuntersuchung mit einem Tag genauer rechnet. Jetzt
+`TT.MM.JJJJ`, in Panel und App. Die alte Monatsform bleibt lesbar - bereits
+gespeicherte Werte wie "08/2026" duerfen nicht ungueltig werden, und
+`genau: "monat"` traegt die Ungenauigkeit bis in die Anzeige (Abschnitt CR).
+
+### Bindestrich statt Punkt
+
+Der Eigentuemer hat "mit Punkt oder Strich" getippt. `01-03-2025` traf kein
+Muster und ergab still nichts. Das Tagesmuster nimmt jetzt beide Trenner:
+
+ /^(\d{1,2})[.\-](\d{1,2})[.\-](\d{4})$/
+
+In beiden Codebasen wortgleich. Die Ablehnung unmoeglicher Daten bleibt
+(`31-02-2025` ergibt weiterhin nichts, `new Date(2025,1,31)` waere der 3. Maerz),
+und die ISO-Form wird nicht verwechselt: `2025-03-01` bleibt Jahr-Monat-Tag.
+Vier neue Tests in `format.test.ts`.
+
+### Durchgehend geprueft
+
+Am laufenden System, ganze Kette: App-Einstellungen, Platzhalter `TT.MM.JJJJ`,
+`15-06-2024` eingetragen, Speicherleiste erscheint, "Gespeichert.", in
+`fahrzeugprofil.json` steht `15-06-2024` - und danach zeigen App-Service,
+Panel-Service und Panel-Mein-Audi uebereinstimmend **15.06.2027** (plus 36
+Monate). Danach der urspruengliche Wert des Eigentuemers wiederhergestellt.
diff --git a/companion-app/src/format.test.ts b/companion-app/src/format.test.ts
index 23aa23b..7c05f47 100644
--- a/companion-app/src/format.test.ts
+++ b/companion-app/src/format.test.ts
@@ -178,3 +178,29 @@ describe("Datumsangaben aus dem Bestand", () => {
expect(monatJahr("08/2026")).toBe("August 2026")
})
})
+
+/* Der Eigentümer hat die Erstzulassung am 05.09.2026 „mit Punkt oder Strich"
+ eingetragen und danach ein leeres HU-Feld vorgefunden. Die eigentliche
+ Ursache lag im Speicherweg (Einstellungen.tsx), aber eine still verworfene
+ Eingabe soll auch dann nicht entstehen, wenn jemand Bindestriche tippt. */
+describe("Datum mit Bindestrich statt Punkt", () => {
+ it("liest 15-06-2024 wie 15.06.2024", () => {
+ expect(datum("15-06-2024")).toBe(datum("15.06.2024"))
+ expect(datum("15-06-2024")).toBe("15.06.2024")
+ })
+
+ it("nimmt auch die einstellige Schreibweise", () => {
+ expect(datum("1-3-2025")).toBe("01.03.2025")
+ })
+
+ it("weist ein unmögliches Datum weiterhin ab, egal mit welchem Trenner", () => {
+ // new Date(2025, 1, 31) wäre der 3. März - das darf kein Datum ergeben.
+ expect(datum("31-02-2025")).toBe("–")
+ expect(datum("31.02.2025")).toBe("–")
+ })
+
+ it("verwechselt die ISO-Schreibweise nicht damit", () => {
+ // 2025-03-01 ist Jahr-Monat-Tag, nicht Tag-Monat-Jahr.
+ expect(datum("2025-03-01")).toBe("01.03.2025")
+ })
+})
diff --git a/companion-app/src/format.ts b/companion-app/src/format.ts
index 5fa7ee4..2506f84 100644
--- a/companion-app/src/format.ts
+++ b/companion-app/src/format.ts
@@ -132,7 +132,10 @@ interface Zeitpunkt {
zwar nach Norm statt nach Gutduenken. */
const ISO = /^\d{4}-\d{2}-\d{2}([T ]|$)/
/* "1.3.2025" wie "01.03.2025". */
-const DE_TAG = /^(\d{1,2})\.(\d{1,2})\.(\d{4})$/
+// Bindestrich ist mitgemeint: der Eigentuemer hat am 05.09.2026 "mit Punkt
+// oder Strich" eingetragen. Eine still verworfene Eingabe ist der schlechtere
+// Ausgang - der Platzhalter nennt trotzdem TT.MM.JJJJ als die gemeinte Form.
+const DE_TAG = /^(\d{1,2})[.\-](\d{1,2})[.\-](\d{4})$/
/* "08/2026" und "08.2026" - Monat und Jahr, ohne Tag. */
const DE_MONAT = /^(\d{1,2})[./](\d{4})$/
/* "2026-08" - dieselbe Genauigkeit, in ISO-Schreibweise. */
diff --git a/companion-app/src/screens/Einstellungen.tsx b/companion-app/src/screens/Einstellungen.tsx
index c50ab38..9f72fd2 100644
--- a/companion-app/src/screens/Einstellungen.tsx
+++ b/companion-app/src/screens/Einstellungen.tsx
@@ -236,8 +236,16 @@ export function Einstellungen({
eigenen Entwurf und uebergibt ihn erst beim Druck auf Speichern. Ohne den
Umweg wuerde `entwurf` im selben Rendern noch den alten Wert tragen -
setState wirkt erst beim naechsten Durchlauf. */
+ /* `erstzulassung` fuehrt einen EIGENEN Entwurf, unabhaengig von
+ `entwurf` - es gehoert zum Fahrzeug, nicht zu den Einstellungen. Diese
+ Bedingung hat es dabei vergessen: wer nur die Erstzulassung aenderte,
+ kam hier nie vorbei, und weiter unten erschien auch die Speicherleiste
+ nicht (die haengt ebenfalls allein an `entwurf`). Der eingetippte Wert
+ war damit gar nicht speicherbar und beim Verlassen der Seite weg -
+ gemeldet vom Eigentuemer am 05.09.2026. Das Panel speichert an dieser
+ Stelle sofort bei jeder Aenderung und war deshalb nie betroffen. */
const speichern = async (zusatz?: Partial) => {
- if (!entwurf && !zusatz) return
+ if (!entwurf && !zusatz && erstzulassung === null) return
setzeLaeuft(true)
setzeGespeichert(false)
try {
@@ -398,7 +406,7 @@ export function Einstellungen({
setzeErstzulassung(e.target.value)}
/>
@@ -1009,9 +1017,17 @@ export function Einstellungen({
)}
{gespeichert &&