Kein Rueckschritt mehr als Update, Version-Kachel schlanker
aktualisierung.py pruefte mit `remote_version != eigene_version` - reine Ungleichheit ohne Richtung. Lief die Instanz einer Veroeffentlichung voraus, bot die Integration an, sich auf die aeltere Fassung zu aktualisieren. Vom Eigentuemer gemeldet. ist_neuer() ist jetzt das Gegenstueck zu versionOrdnung() in appVersion.ts, wo derselbe Fehler am 04.09. behoben wurde: fehlende Stellen zaehlen als 0, kein int() mit Vorabschnitt, und was sich nicht in eine Reihenfolge bringen laesst, gilt als verfuegbar statt verschwiegen. Sechs neue Testfaelle, 79 Python-Tests gruen. Dazu auf Vorgabe des Eigentuemers: die Zeile benennt jetzt selbst, was sie zeigt - "Home-Assistant-Integration | 2026.9.5.19" statt "Installiert" mit dem Gegenstand klein darunter. Damit entfallen die Abschnitts-Ueberschriften aus dem vorigen Commit, sie sagten dasselbe doppelt. Live in beiden Oberflaechen gegengeprueft: Gitea auf .18, Instanz auf .19 - gemeldet wird gruenes "aktuell" (--ok) mit Pruefzeitpunkt statt eines Rueckschritts. 0 Tracebacks. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -84,6 +84,54 @@ def _header(token: str) -> dict[str, str]:
|
||||
return {"Authorization": f"token {token}"}
|
||||
|
||||
|
||||
def _versionsteile(version: str) -> list[int] | None:
|
||||
"""Zerlegt `2026.9.4.17` in [2026, 9, 4, 17].
|
||||
|
||||
`None`, sobald ein Teil keine reine Ziffernfolge ist - dann wird nicht
|
||||
sortiert. Bewusst kein `int()` mit Vorabschnitt: das läse "4b" klaglos als
|
||||
4 und erzeugte genau die scheingenaue Reihenfolge, die hier vermieden
|
||||
werden soll. Wortgleich mit `teile()` in
|
||||
companion-app/src/daten/appVersion.ts."""
|
||||
if not version:
|
||||
return None
|
||||
zahlen: list[int] = []
|
||||
for stueck in version.split("."):
|
||||
if not stueck.isdigit():
|
||||
return None
|
||||
zahlen.append(int(stueck))
|
||||
return zahlen
|
||||
|
||||
|
||||
def ist_neuer(kandidat: str, bisher: str) -> bool | None:
|
||||
"""Ob `kandidat` nachweislich neuer ist als `bisher`.
|
||||
|
||||
`None` heißt "nicht zu entscheiden" - verschieden, aber nicht in eine
|
||||
Reihenfolge zu bringen (Formatwechsel). Fehlende Stellen zählen als 0,
|
||||
damit `2026.9.4` und `2026.9.4.0` denselben Stand bezeichnen.
|
||||
|
||||
Gegenstück zu `versionOrdnung()` in appVersion.ts. Der Grund ist derselbe
|
||||
und dort ausführlich vermerkt: bis zum 05.09.2026 stand hier
|
||||
`remote_version != eigene_version`, also reine Ungleichheit ohne Richtung.
|
||||
Lief die Instanz einer Veröffentlichung voraus - während der Entwicklung
|
||||
der Normalfall -, bot die Integration an, sich auf die ÄLTERE Fassung zu
|
||||
"aktualisieren". Vom Eigentümer am 05.09.2026 gemeldet: „Warum wird eine
|
||||
ältere Version angeboten? .16 ist älter als .18"."""
|
||||
if not kandidat or not bisher:
|
||||
return None
|
||||
if kandidat == bisher:
|
||||
return False
|
||||
links = _versionsteile(kandidat)
|
||||
rechts = _versionsteile(bisher)
|
||||
if links is None or rechts is None:
|
||||
return None
|
||||
for i in range(max(len(links), len(rechts))):
|
||||
l = links[i] if i < len(links) else 0
|
||||
r = rechts[i] if i < len(rechts) else 0
|
||||
if l != r:
|
||||
return l > r
|
||||
return False
|
||||
|
||||
|
||||
async def version_pruefen(hass: HomeAssistant, token: str, eigene_version: str) -> dict[str, Any]:
|
||||
"""Fragt nur die manifest.json von Gitea ab (ein kleiner Request, kein
|
||||
Repo-Download) und vergleicht die Version gegen die installierte.
|
||||
@@ -120,7 +168,11 @@ async def version_pruefen(hass: HomeAssistant, token: str, eigene_version: str)
|
||||
raise AktualisierungsFehler(f"Antwort von Gitea nicht lesbar: {fehler}") from fehler
|
||||
|
||||
return {
|
||||
"verfuegbar": remote_version != eigene_version,
|
||||
# Nur eine NACHWEISLICH neuere Fassung ist ein Update. Ist sie nicht
|
||||
# in eine Reihenfolge zu bringen (None), gilt sie als verfuegbar -
|
||||
# dann sagt die Oberflaeche, dass etwas abweicht, aber nicht in
|
||||
# welche Richtung, statt eine Aenderung zu verschweigen.
|
||||
"verfuegbar": ist_neuer(remote_version, eigene_version) is not False,
|
||||
"version": remote_version,
|
||||
"geprueft_am": datetime.datetime.now(datetime.timezone.utc).isoformat(),
|
||||
}
|
||||
|
||||
@@ -1 +1 @@
|
||||
{"version":"2026.9.5.18","sha256":"8b03fe0a871e5fc88b421146910832fbd73999ee9844000efbaf1b41a52ab603","bytes":324620,"gebaut":"2026-09-05T09:27:15Z"}
|
||||
{"version":"2026.9.5.19","sha256":"5490ca4a341da15dd210a13f84fb6941620d2974683b3c4280ea31ed87f0fb7c","bytes":324597,"gebaut":"2026-09-05T09:31:37Z"}
|
||||
Binary file not shown.
@@ -3719,7 +3719,7 @@ function vEinst() {
|
||||
(Vorgabe des Eigentuemers, 04.09.2026). -->
|
||||
<div class="tile"><span class="label">Version</span>
|
||||
<dl class="rows">
|
||||
<div class="row" style="border-bottom:0"><dt>Installiert</dt><dd>${esc(APP_VERSION || "unbekannt")}<small>Home-Assistant-Integration</small></dd></div>
|
||||
<div class="row" style="border-bottom:0"><dt>Home-Assistant-Integration</dt><dd>${esc(APP_VERSION || "unbekannt")}</dd></div>
|
||||
</dl>
|
||||
${(() => {
|
||||
const u = INTEGRATION_UPDATE;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"domain": "audi_dashboard",
|
||||
"name": "Audi Dashboard",
|
||||
"version": "2026.9.5.18",
|
||||
"version": "2026.9.5.19",
|
||||
"documentation": "https://gitea.nothaft.cloud/paul/audi-app/src/branch/main/README.md",
|
||||
"issue_tracker": "https://gitea.nothaft.cloud/paul/audi-app/issues",
|
||||
"codeowners": [
|
||||
|
||||
Reference in New Issue
Block a user