Buendel und Manifest muessen dieselbe Fassung tragen - Test dagegen
Am iPhone gesehen: der Server meldete 2026.9.5.29, das mitgelieferte Buendel war noch .28. buendelPasst() verlangt Gleichheit, die App hielt sich deshalb fuer nicht erneuerbar - und die Meldung schickte den Eigentuemer zu Xcode, obwohl nur meine Veroeffentlichung unvollstaendig war: ich hatte die Versionsnummer erhoeht, ohne npm run ota laufen zu lassen. Betraf .29 und .30. Zwei Aenderungen: * buendelversion.test.ts vergleicht die Version in bundle.json mit der in manifest.json. Gegengeprueft: der Test faellt, wenn sie auseinanderlaufen. Damit wird daraus ein Fehlschlag vor der Auslieferung statt einer irrefuehrenden Meldung auf dem Telefon. * Der Hinweis unterscheidet jetzt zwei Faelle. Liegt ein Buendel, das nur nicht zur Serverfassung passt, heisst es, die App koenne sich erneuern, sobald eine Veroeffentlichung ein passendes mitbringt. Nach Xcode wird nur noch verwiesen, wenn gar kein Buendel da ist. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,27 @@
|
||||
/**
|
||||
* Das OTA-Bündel muss dieselbe Fassung tragen wie das Manifest der
|
||||
* Integration.
|
||||
*
|
||||
* Am 05.09.2026 am iPhone aufgefallen: der Server meldete 2026.9.5.29, das
|
||||
* mitgelieferte Bündel war noch 2026.9.5.28. `buendelPasst()` verlangt
|
||||
* Gleichheit — die App hielt sich deshalb für nicht erneuerbar und schickte
|
||||
* den Eigentümer zu Xcode, obwohl nur die Veröffentlichung unvollständig war:
|
||||
* die Versionsnummer war erhöht worden, ohne `npm run ota` laufen zu lassen.
|
||||
*
|
||||
* Dieser Test macht daraus einen Fehlschlag vor der Auslieferung statt einer
|
||||
* irreführenden Meldung auf dem Telefon.
|
||||
*/
|
||||
|
||||
import { readFileSync } from "node:fs"
|
||||
|
||||
import { describe, expect, it } from "vitest"
|
||||
|
||||
const lies = (pfad: string) => JSON.parse(readFileSync(pfad, "utf8")) as { version?: string }
|
||||
|
||||
describe("OTA-Bündel und Manifest", () => {
|
||||
it("tragen dieselbe Versionsnummer", () => {
|
||||
const manifest = lies("../custom_components/audi_dashboard/manifest.json")
|
||||
const buendel = lies("../custom_components/audi_dashboard/frontend/app/bundle.json")
|
||||
expect(buendel.version).toBe(manifest.version)
|
||||
})
|
||||
})
|
||||
@@ -103,6 +103,17 @@ export function Versionshinweis({
|
||||
|
||||
const perOta = buendelPasst(otaBuendel, eigeneVersion(), serverVersion)
|
||||
|
||||
/* Es liegt ein Bündel, es passt nur (noch) nicht zur Fassung, die der Server
|
||||
ausliefert. Das ist KEIN Xcode-Fall.
|
||||
|
||||
Am 05.09.2026 am iPhone gesehen: Server auf 2026.9.5.29, Bündel auf .28,
|
||||
App auf .22 - die Meldung schickte den Eigentümer zu Xcode, obwohl die App
|
||||
sich über die Luft erneuern könnte, sobald eine Veröffentlichung ein
|
||||
passendes Bündel mitbringt. Ursache war eine Veröffentlichung, die die
|
||||
Versionsnummer erhöhte, ohne das Bündel neu zu bauen (dagegen wacht jetzt
|
||||
ein Test, siehe buendelversion.test.ts). */
|
||||
const buendelHinkt = !perOta && !!otaBuendel?.version && otaBuendel.version !== serverVersion
|
||||
|
||||
const schliessen = () => {
|
||||
if (laeuft) return
|
||||
if (serverVersion) gesehenSchreiben(serverVersion)
|
||||
@@ -132,7 +143,9 @@ export function Versionshinweis({
|
||||
description={
|
||||
perOta
|
||||
? `Diese App läuft auf ${eigeneVersion() ?? "einer unbekannten Fassung"}, bereit liegt ${serverVersion}. Sie kann sich direkt hier erneuern.`
|
||||
: `Diese App läuft auf ${eigeneVersion() ?? "einer unbekannten Fassung"}, der Server liefert ${serverVersion}. Dafür liegt hier kein passendes Bündel — sie muss über Xcode neu aufgespielt werden.`
|
||||
: buendelHinkt
|
||||
? `Diese App läuft auf ${eigeneVersion() ?? "einer unbekannten Fassung"}, der Server liefert ${serverVersion}. Das hier bereitliegende Bündel gehört noch zu ${otaBuendel?.version} - die App kann sich erneuern, sobald eine Veröffentlichung ein passendes mitbringt.`
|
||||
: `Diese App läuft auf ${eigeneVersion() ?? "einer unbekannten Fassung"}, der Server liefert ${serverVersion}. Dafür liegt hier kein Bündel — sie muss über Xcode neu aufgespielt werden.`
|
||||
}
|
||||
actions={
|
||||
perOta
|
||||
|
||||
@@ -1 +1 @@
|
||||
{"version":"2026.9.5.31","sha256":"94ba956b9cd47adbd0b38a3f94bd304b23032bb00c4192ada89536a716b2b51b","bytes":324628,"gebaut":"2026-09-05T14:20:13Z"}
|
||||
{"version":"2026.9.5.32","sha256":"40c58828e0c94b39976fb1320f7fd5053a4eb1779151f124dc8442dc833072d1","bytes":324696,"gebaut":"2026-09-05T14:23:35Z"}
|
||||
Binary file not shown.
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"domain": "audi_dashboard",
|
||||
"name": "Audi Dashboard",
|
||||
"version": "2026.9.5.31",
|
||||
"version": "2026.9.5.32",
|
||||
"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