Versionsvergleich: nur eine neuere Fassung zaehlt

Nach dem Xcode-Lauf lief die App auf 2026.9.4.17, die Instanz auf
2026.9.4.5 - und die App bot an, sich auf .5 zu erneuern. Die
Gleichheitspruefung konnte den Rueckschritt nicht sehen.

versionOrdnung() sortiert jetzt Stelle fuer Stelle als Zahl, aber nur was
dem Format JJJJ.M.T.N entspricht; sonst gibt es eine Abweichung ohne
Richtung. Streifen, Startblatt und OTA-Knopf schlagen nur noch an, wenn
die App nachweislich aelter ist. Damit ist die frueher dokumentierte
Entscheidung "nur auf Gleichheit" umgedreht - Begruendung in
VERSIONIERUNG.md und AGENTS.md Abschnitt CL.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-04 16:10:47 +02:00
parent 6365136275
commit cefb235f6d
12 changed files with 328 additions and 33 deletions
+24 -5
View File
@@ -74,11 +74,30 @@ Der Vergleich läuft in eine Richtung: **die Integration sagt, welcher Stand
installiert ist; die App sagt, welchen sie hat.** Stimmen sie nicht überein,
ist die App zu alt (oder, seltener, die Integration).
Bewusst **nur auf Gleichheit**, nie größer/kleiner: die Version ist eine
Kennung, keine Zahl. Ein Sortierversuch wäre scheingenau und würde bei einem
Formatwechsel still falsche Antworten geben. Fehlt eine der beiden Seiten, wird
gar nicht verglichen und nichts gemeldet — ein älteres Backend oder ein Start
ohne Netz darf keinen Fehlalarm auslösen.
**Verglichen wird der Reihe nach, nicht nur auf Gleichheit — geändert am
04.09.2026.** Bis dahin galt hier ausdrücklich das Gegenteil (die Version sei
eine Kennung und keine Zahl). Der Anlass war ein echter Fall: nach einem
Xcode-Lauf lief die App auf `2026.9.4.17`, die Instanz stand noch auf
`2026.9.4.5` — und die App bot an, sich auf `.5` zu erneuern. Ein Rückschritt um
zwölf Fassungen, den eine Gleichheitsprüfung gar nicht sehen kann. Vorgabe des
Eigentümers: **erkannt wird eine neuere Fassung und keine andere.**
Der damalige Einwand ist nicht verworfen, sondern eingebaut: sortiert wird nur,
was dem Format `JJJJ.M.T.N` entspricht, und zwar Stelle für Stelle als Zahl —
zeichenweise stünde `.17` vor `.5`. Passt eine Seite nicht ins Schema, gilt sie
als **nicht sortierbar**; dann meldet die App eine Abweichung ohne Richtung und
bietet nichts an, statt eine Reihenfolge zu erfinden. Fehlt eine der beiden
Seiten ganz, wird gar nicht verglichen und nichts gemeldet — ein älteres Backend
oder ein Start ohne Netz darf keinen Fehlalarm auslösen.
Daraus folgen vier Verhaltensweisen, entschieden in `src/daten/appVersion.ts`:
| Lage | Streifen | Startblatt | Update-Knopf |
|---|---|---|---|
| App älter als der Server | bitte aktualisieren | ja | ja |
| App neuer (frisch signiert) | still | nein | **nein** |
| verschieden, nicht sortierbar | neutraler Hinweis | nein | nur bei Serverübereinstimmung |
| gleich / nicht vergleichbar | still | nein | nein |
## Was du tun musst