docs(quick-260918-gza): Fehlermeldung — Herkunft ausweisen (Browser/Desktop-App, OS, App-Version)
Plan, Ausfuehrungsbericht, Verifikation (9/9 must_haves) und Aktenstand; lokaler Nachweis per Playwright/mailhog fuer Browser- und Desktop-Marker-Fall. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016g2npLxzH5gZpg8s2S6vKh
This commit is contained in:
+7
-6
@@ -4,10 +4,10 @@ milestone: v1.2
|
||||
current_phase: 18
|
||||
current_phase_name: desktop-client-fertigstellen
|
||||
status: verified
|
||||
stopped_at: "Quick-Task 260917-jn2 abgeschlossen (3 Commits: feat(desktop), feat(web), docs); Windows-VM-Bedienprobe steht durch Orchestrator aus"
|
||||
last_updated: "2026-09-17T12:55:59.549Z"
|
||||
stopped_at: "Quick 260918-gza abgeschlossen (4 Commits + Akte), lokal nachgewiesen; VM-Probe nach alpha-Deploy offen"
|
||||
last_updated: "2026-09-18T10:50:00.000Z"
|
||||
last_activity: 2026-09-18
|
||||
last_activity_desc: Sechs Auftraege nach 1.2.0 gebaut, gepusht, getestet — u. a. Update in der Desktop-App (signiert), CI-Desktop-Skip, Favoriten-Symbol/-Sortierung
|
||||
last_activity_desc: Quick 260918-gza — Fehlermeldung weist Herkunft aus (Browser/Desktop-App, OS, App-Version); lokal nachgewiesen, VM-Probe nach alpha-Deploy offen
|
||||
state_head: 4d485432c003a6caf68f6d85aff7de0bd27794e2
|
||||
progress:
|
||||
total_phases: 18
|
||||
@@ -31,7 +31,7 @@ See: .planning/PROJECT.md (updated 2026-07-17)
|
||||
Phase: 18 (desktop-client-fertigstellen) — COMPLETE (2026-09-17, Verifikation passed, Windows-Bedienprobe bestanden)
|
||||
Plan: 6 of 6
|
||||
Status: Alle 18 Phasen abgeschlossen; Version 1.2.0 freigegeben. Kein laufender Meilenstein. Nach 1.2.0 auf main (Beta): Bildmarke in Akzentfarbe, CI-Desktop-Skip, Favoriten-Symbol/-Sortierung, Desktop-Server-Adresse, Update in der App (signiert), Versionszeile auf der Setup-Seite — alles verifiziert und auf VM/CI nachgewiesen
|
||||
Last activity: 2026-09-18 - Quick 260917-kgc (Update in der App) + Schnellfix a6d1a64 abgeschlossen; alle Nachweise erbracht (lokaler Browser, CI 382-384, Windows-VM: In-App-Update 7479cb4 → a6d1a64)
|
||||
Last activity: 2026-09-18 - Quick 260918-gza (Fehlermeldung: Herkunft ausweisen) abgeschlossen und lokal nachgewiesen (mailhog: [Browser] / [Desktop/Windows]); Windows-VM-Probe mit echtem Client nach alpha-Deploy offen
|
||||
|
||||
Progress: [██████████] 99%
|
||||
|
||||
@@ -442,6 +442,7 @@ Gerettet aus `.continue-here.md`. Relevant fuer die noch offenen Live-Tests.
|
||||
| 260917-jdd | **Favoriten-Widget: Symbol trotz Zertifikatsfehler/interner Adresse, Favoriten sortierbar.** API: `undici@7.28.0` (exakt, war schon im Lockfile) — `LENIENT_TLS_AGENT` (`rejectUnauthorized: false`) als Dispatcher NUR in `fetchWithRedirectGuard`, SSRF-Schutz (DNS/private IPs/Redirects/Timeouts/Deckel) byteweise unveraendert; `PUT /favorites/order` `{widgetId, ids}` VOR den `:id`-Routen, `reorder()` in `withTenantTransaction` mit `userId`+`widgetId` je Eintrag, eine 400-Meldung; Icon-Proxy mit `nosniff` + CSP sandbox. Web: `FavoriteIcon` Kette Proxy-Bild → bei Fehler Direktbild `{origin}/favicon.ico` (nur http/https, no-referrer) → Buchstabe; Pfeile „Nach oben/unten“ im Bearbeitungsmodus, optimistisch + Reload bei Fehler; Altbestand `position 0` normalisiert sich beim ersten Klick. Befund: `discoverFavoriteIconUrl` liefert nie null (immer Origin-Rueckfall) — deshalb haengt der Browser-Ersatzweg am Bildfehler. API 1101 / Web 429 Tests. Browser: `self-signed.badssl.com` → Proxy-Symbol; `http://192.168.13.11:3002` → Proxy 502 → Direktbild; Sortierung ueber Reload, DB-Positionen 0..3. Verifikation 15/15 + Browser. | 2026-09-17 | 2a562d0,b18ac25,b023d6f | [260917-jdd-favoriten-widget-favicon-ersatzweg-bei-u](./quick/260917-jdd-favoriten-widget-favicon-ersatzweg-bei-u/) |
|
||||
| 260917-jn2 | **Desktop-Client: Server-Adresse sichtbar und nachtraeglich aenderbar.** Rust: `TrayIconBuilder::with_id("main")`, `TrayItems { connected, update }` in `app.manage`, `apply_server()` setzt Tooltip `Tessera – {host}` + gesperrte Menuezeile `Verbunden mit {host}` an einer Stelle; Tray-Eintrag `Server-Adresse ändern…` navigiert zu `setup_page_url()` (`http://tauri.localhost/setup.html` unter Windows, sonst `tauri://localhost/setup.html`); Commands `get_server_url`/`open_server` (kein Capability-Eintrag noetig — Remote-Origin darf keine Commands rufen); `parse_server_url` (nur http/https) gemeinsam; `spawn_version_check` herausgezogen, `update`-Klick liest Adresse per `stored_server_url` beim Klick. setup.html: Vorbelegung, „Aktuell verbunden mit“, „Abbrechen“. Web: Einstellungen → Desktop-App zeigt im Client „Verbunden mit: {origin}“ + Hinweis (`settings.desktop.*`). 18 Rust-Tests, Web 431. Browser: Web-Block mit Cookie bestaetigt. Verifikation human_needed: **Windows-VM-Probe mit CI-Paket offen** (Tooltip, Menuezeile, Adresse aendern/Abbrechen, Wechsel ohne Neustart). | 2026-09-17 | 29c132e,4c79874,4d48543 | [260917-jn2-desktop-client-aktuelle-server-adresse-s](./quick/260917-jn2-desktop-client-aktuelle-server-adresse-s/) |
|
||||
| 260917-kgc | **Desktop-Client: Update in der App (tauri-plugin-updater, signierte Pakete).** Client: Plugin 2.11 + `semver`, `plugins.updater.pubkey` (minisign; privater Schluessel + Passwort NUR unter `~/.tessera/desktop-updater/` auf dem Dev-Rechner, Gitea-Secrets `TAURI_SIGNING_PRIVATE_KEY`/`_PASSWORD`), Endpunkt zur Laufzeit `{server}/api-proxy/desktop/update?target&arch¤t&base`, `is_update_newer` (hoehere Basis → Update; gleiche Basis nur bei `beta.g<sha7>` mit anderem Commit; kleinere/gleiche Live → nichts), Pruefung 15 s / Download 600 s (Plugin-Timeout gilt fuer beides), Tray „Auf Version X / Beta-Stand <sha7> aktualisieren" → Fortschritt → passiver NSIS-Installer startet die App neu (Linux: `app.restart()`), Fehler → Benachrichtigung + Download-Seite im Browser, `http://` → gesperrt „Update nur über https möglich". API: `GET /desktop/update` (statisch VOR `download/:platform`, `base` nur Origin, 204 ohne `signature`/`updateVersion`). CI: `createUpdaterArtifacts`, Secrets nur an den zwei `tauri build`-Schritten, `desktop-collect.sh` schreibt `signature` + `updateVersion` (`X.Y.Z-beta.g<sha7>`), `desktop-stamp.sh check` verlangt beides. 33 Rust-Tests, 23 API-Tests. **Nachweise erbracht:** CI baut `.sig` fuer beide Plattformen (Cross-Bau rustls ok); alpha-Endpunkt 200/400; Windows-VM: Client 7479cb4 → Tray-Klick → Neustart als a6d1a64, Adresse erhalten. Bereits installierte Clients (≤ 1.2.0) brauchen einmal den Browser-Installer. | 2026-09-17 | 678ba51,de81c74,7004b5b,7479cb4 | [260917-kgc-desktop-client-update-in-der-app-herunte](./quick/260917-kgc-desktop-client-update-in-der-app-herunte/) |
|
||||
| 260918-gza | **Fehlermeldung: Herkunft ausweisen (Browser/Desktop-App, Betriebssystem, App-Version).** Betreff traegt direkt nach `[Tessera Fehlermeldung]` ein Kuerzel `[Browser]` / `[Desktop/Windows]` / `[Desktop/Linux]` (`[Desktop]` bei altem Client ohne Details); Mailtext bekommt die Zeile `Herkunft:` — Browser: `Browser — <Name> <Hauptversion> auf <OS>` aus dem User-Agent (reine Regex-Helfer `origin.ts`, keine Abhaengigkeit), Desktop: `Desktop-App (<OS>), Tessera-App <Version> · Stand <Commit>`. Kette: Rust `with_client_marker` haengt neben `desktop=1` die Parameter `dv`/`dc`/`dos` an (drei Aufrufstellen unveraendert, nach In-App-Update automatisch frisch) → Middleware setzt Cookie `tessera_desktop_client` = `<dv>|<dc>|<dos>` (musterbereinigt, nur wenn alle drei da) → `getDesktopClientInfo()` → vier optionale DTO-Felder `clientKind/clientOs/clientVersion/clientCommit` (whitelist deklariert, alte Web-Baue/Clients bleiben gueltig) → `describeOrigin()`. Rohe Zeilen `Browser:`/`Fenster:` bleiben; Kuerzel auch in der einen Protokollzeile; nichts in DB, `main.ts` unangetastet (T-GZA-01..04). Tests: API 1124 (origin 10 neu), Web 447, Rust 37, Typecheck sauber. Plan-Pruefer und Verifier bestanden (9/9 must_haves). **Nachweise lokal (mailhog):** Browser → `[Browser] … Herkunft: Browser — Chrome 154 auf Linux`; Desktop-Marker wie der Rust-Client (`?desktop=1&dv=1.2.0&dc=a6d1a64&dos=windows`) → Cookie `1.2.0%7Ca6d1a64%7Cwindows`, `[Desktop/Windows] … Herkunft: Desktop-App (Windows), Tessera-App 1.2.0 · Stand a6d1a64`. **Offen:** Windows-VM-Probe mit echtem Client nach CI-Bau und alpha-Deploy durch den User. | 2026-09-18 | 7169472,b03cb21,f245711,e2a7946 | [260918-gza-fehlermeldung-herkunft-ausweisen-browser](./quick/260918-gza-fehlermeldung-herkunft-ausweisen-browser/) |
|
||||
| fast | **Desktop-Client: Setup-Seite zeigt Version und Stand der App** („Tessera-App 1.2.0 · Stand a6d1a64"; ohne Stempel nur Version) — Command `get_client_info`, Helfer `client_info_label` (2 Tests), `<p id="client-info">` in setup.html, CHANGELOG. Diente zugleich als zweiter Desktop-Stand fuer den Update-Nachweis. 35 Rust-Tests. | 2026-09-18 | a6d1a64 | — |
|
||||
|
||||
## Deferred Items
|
||||
@@ -486,6 +487,6 @@ sind. Kein Anlass, sie vorher erneut vorzulegen.
|
||||
|
||||
Last session: 2026-09-18T10:20:00Z
|
||||
Resumed: 2026-09-17 — Sitzung ueber /gsd-resume-work fortgesetzt; sechs Auftraege des Users komplett abgearbeitet (Quick 260917-jdf/jdh/jdd/jn2/kgc + Schnellfix a6d1a64), alle mit Plan-Pruefung, Verifikation und Nachweis (lokaler Browser via Playwright, CI-Laeufe 382-384, Windows-Test-VM 8233).
|
||||
Stopped at: Sitzung 2026-09-18 per /gsd-resume-work wiederaufgenommen (HANDOFF.json + .continue-here.md verbraucht und entfernt); naechster Auftrag des Users: Fehlermeldung soll Herkunft ausweisen (Browser oder Desktop-App, Windows/Linux, App-Version) — als /gsd-quick --validate. Vorher: Alles committet und gepusht. Nichts angefangen. Beta (alpha) laeuft mit a6d1a64 (User hat gepullt). Live (tessera.ctl.de) steht auf v1.2.0 — der dortige Client hat den Updater noch nicht; erst die naechste Freigabe (1.3.0, neue Funktionen) bringt ihn; danach aktualisieren sich Clients per Tray-Klick. Offen fuer den User: eigenen Arbeitsplatz-Client einmal per Browser-Installer erneuern (alter Stand ohne Beenden-Fix/Updater). Signierschluessel: ~/.tessera/desktop-updater/ (Dev-Rechner) — sichern; Verlust = neue Clients per Installer noetig. Letzter offener CI-Beweis (Docs-Push ueberspringt den Desktop-Bau) = der Lauf zu diesem Aktenstand-Commit. Beide .continue-here-Dateien entfernt (ueberholt), Desktop-Todo geschlossen.
|
||||
Stopped at: Quick 260918-gza fertig (4 Code-Commits + Akte), lokal per Playwright/mailhog nachgewiesen (Browser-Fall und Desktop-Marker-Fall). Offen: Push + CI-Lauf abwarten; danach User pullt alpha (web+api noetig fuer Middleware-Cookie und DTO-Felder), Windows-VM-Client aktualisiert sich per Tray-Klick → dort echte Fehlermeldung schicken und Betreff `[Desktop/Windows]` + `Herkunft:`-Zeile im Postfach/API-Log pruefen. Weiterhin offen fuer den User: eigenen Arbeitsplatz-Client einmal per Browser-Installer erneuern; Freigabe 1.3.0 auf Zuruf.
|
||||
Resume file: None
|
||||
Last activity: 2026-09-18 - Quick 260917-kgc (Update in der App) + Schnellfix a6d1a64 abgeschlossen; alle Nachweise erbracht (lokaler Browser, CI 382-384, Windows-VM: In-App-Update 7479cb4 → a6d1a64)
|
||||
Last activity: 2026-09-18 - Quick 260918-gza (Fehlermeldung: Herkunft ausweisen) abgeschlossen und lokal nachgewiesen (mailhog: [Browser] / [Desktop/Windows]); Windows-VM-Probe mit echtem Client nach alpha-Deploy offen
|
||||
|
||||
Reference in New Issue
Block a user