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:
+24
-5
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user