ADR-0018: Editor-Updates über statischen latest.json-Feed
- Status: accepted
- Datum: 2026-08-26
- Phase: P2
- Lastenheft: Editor-Desktop (Auslieferung)
Kontext
Der Editor ist eine Tauri-2-Desktop-App auf Linux, Windows und macOS. Kolleginnen sollen nach der Erstinstallation nicht jedes Mal ein Installer-Paket per Chat bekommen. Der Feed muss auf linetra.nasarek.dev liegen (gleiches Hosting wie das Dashboard). Das Repo ist git.nasarek.dev, nicht GitHub. Artefakte sind minisign-signiert (createUpdaterArtifacts).
Entscheidung
| Gate | Wahl | Warum hier | Verworfen |
|---|---|---|---|
| Mechanismus | Offizielles tauri-plugin-updater |
Ein Plugin für alle drei OS; Signaturprüfung im Client | Sparkle / WinSparkle / eigene MSI-CustomAction |
| Feed | Statische https://linetra.nasarek.dev/editor-updates/latest.json |
Kein Release-Server, kein GitHub; NAS kann Dateien per HTTPS ausliefern | GitHub Releases als Endpoint — Repo ist nicht auf GitHub |
| Auslösung | Hilfe → Auf Updates prüfen (Dialog: Installieren oder Abbrechen) | GIS-Arbeitsplatz: Nutzer bestätigt Download; kein stiller Austausch der Binary | Auto-Download beim Start ohne Rückfrage |
| Version anzeigen | Hilfe → Über Linetra Editor | Support braucht die installierte SemVer, unabhängig vom Update-Check | Nur Statuszeile / nur package.json im Browser |
Linux-Updater-Artefakt ist die AppImage (plus .sig); .deb / .rpm bleiben Erstinstallation. Windows: NSIS .exe (ADR-0014). macOS: .app.tar.gz für den Updater, .dmg für die Erstinstallation (ADR-0016).
Begründung
Tauri erwartet genau dieses JSON-Schema (version, notes, pub_date, platforms.<triple>.{url,signature}). Eine Datei neben den Bundles auf dem bestehenden HTTPS-Host ist der übliche Weg für selbst gehostete Tauri-Apps ohne Store.
Verworfene Alternativen
| Alternative | Warum verworfen |
|---|---|
GitHub Releases / {{current_version}} Endpoint |
Extra-Remote, Secrets-Kopie des Updater-Keys, passt nicht zu git.nasarek.dev |
| Microsoft Store / Flathub / App Store als Update-Kanal | Extra-Accounts, Review, abweichende Signatur; NAS bleibt Erstverteilung |
| Eigenes FastAPI-Release-Endpoint | Unnötiger Dienst; der Feed ändert sich nur bei einem Release |
| Auto-Install beim Start | Kann eine laufende GIS-Sitzung unterbrechen; Prüfung bleibt ein Menübefehl |
| Nur Chat/USB mit neuem Installer | Skaliert nicht; Updater-Plugin wäre tot |
Folgen
Nach jedem Release: Version in tauri.conf.json / package.json / Cargo.toml anheben, signiert bauen, Bundles + .sig und latest.json nach editor-updates/files/ legen (HTTPS /editor-updates/). Client prüft SemVer gegen die lokale Version aus dem Tauri-Bundle. Schlüsselverlust → neues minisign-Paar und einmalige Neuinstallation bei den Nutzern.