Compare commits
2 Commits
03fd85ad3e
...
10a69ae8a6
| Author | SHA1 | Date | |
|---|---|---|---|
| 10a69ae8a6 | |||
| 626f60ea9c |
+19
-29
@@ -1,44 +1,34 @@
|
||||
{
|
||||
"version": "1.0",
|
||||
"timestamp": "2026-09-16T10:28:05.211Z",
|
||||
"phase": null,
|
||||
"phase_name": "Betrieb nach dem Live-Gehen — Quick-Tasks auf Zuruf des Users (kein laufender Meilenstein)",
|
||||
"phase_dir": null,
|
||||
"plan": null,
|
||||
"task": null,
|
||||
"total_tasks": 0,
|
||||
"timestamp": "2026-09-17T07:38:47.449Z",
|
||||
"phase": "18",
|
||||
"phase_name": "desktop-client-fertigstellen",
|
||||
"phase_dir": ".planning/phases/18-desktop-client-fertigstellen",
|
||||
"plan": 6,
|
||||
"task": 3,
|
||||
"total_tasks": 3,
|
||||
"status": "paused",
|
||||
"completed_tasks": [
|
||||
{"id": 1, "name": "WINDOWS #29 Rechteausweitung ADMIN -> SUPER_ADMIN geschlossen (260914-ebg)", "status": "done", "commit": "759ea3b"},
|
||||
{"id": 2, "name": "Etappe 3c Systemkontext forSystem() fuer Hintergrunddienste (260914-eym)", "status": "done", "commit": "939c812"},
|
||||
{"id": 3, "name": "Zwei Auslieferungskanaele beta/live, Versionsstempel, Versionsanzeige (260914-ku1)", "status": "done", "commit": "ea6aa99"},
|
||||
{"id": 4, "name": "Fehler-melden-Knopf mit Bildschirmfoto per E-Mail (260914-m97)", "status": "done", "commit": "77117de"},
|
||||
{"id": 5, "name": "Erstfreigabe v1.0.0, Live-Gehen tessera.ctl.de am 2026-09-15 (User)", "status": "done", "commit": "e509860"},
|
||||
{"id": 6, "name": "Dashboard: feineres Raster, skalierende Widget-Inhalte, halbe Abstaende (260916-bwo)", "status": "done", "commit": "1aefaa3"},
|
||||
{"id": 7, "name": "Dashboard-Nachbesserung: Mindestgroessen, Rand oben, Drag & Drop (260916-dyv, Rechner-Minimum 8792819)", "status": "done", "commit": "cf97b5b"},
|
||||
{"id": 8, "name": "Aenderungsliste: CHANGELOG.md, Seite Was ist neu, Gitea-Release je Tag (260916-dcz)", "status": "done", "commit": "c5f4ade"},
|
||||
{"id": 9, "name": "21 fehlende Uebersetzungen (Kalenderquellen-Formular, Kalender-Einstellungen, Marktplatz)", "status": "done", "commit": "c3d8e16"},
|
||||
{"id": 10, "name": "Version 1.1.0 freigegeben (Tag v1.1.0, live-Abbilder, Gitea-Release von der Pipeline); User hat Live gepullt: 'sieht gut aus'", "status": "done", "commit": "e0d4532"}
|
||||
{"id": 1, "name": "Phase 18 komplett: 6 Plaene, Code-Review behoben, Verifikation passed, Windows-Bedienprobe bestanden", "status": "done", "commit": "626f60e"},
|
||||
{"id": 2, "name": "Schnellkorrektur: Startseite setup.html im Fenster main (asset not found: index.html), CARGO_BUILD_JOBS=4", "status": "done", "commit": "b6d9013"},
|
||||
{"id": 3, "name": "Dashboard-Nachbesserungen (6 Quick-Tasks 260916-hiv/htc/iex/j4f/jvj/k2z): Kalender-Widget-Umbau, Notiz-Haekchen, Favoriten-Titel, Link-Widget entfernt, Plaketten in Kalenderfarbe, Markdown-Aufzaehlungspunkte", "status": "done", "commit": "7110512"}
|
||||
],
|
||||
"remaining_tasks": [
|
||||
{"id": 11, "name": "Nichts Angefangenes. Naechste Arbeit kommt vom User (Feedback aus dem Betrieb; Fehlermeldungen landen per Knopf im Postfach aus Administrator -> SMTP). Jede Aenderung SOFORT in CHANGELOG.md unter '## Unveröffentlicht' eintragen.", "status": "not_started"},
|
||||
{"id": 12, "name": "Todo ohne Termin: Desktop-Client auslieferungsreif (Versions-Check, Windows-Installer, Abnahme, CI-Bau) — erst wenn der User die Bau-/Testmoeglichkeit hat (.planning/todos/pending/2026-09-15-desktop-client-auslieferungsreif-machen.md)", "status": "not_started"},
|
||||
{"id": 13, "name": "Formal: /gsd-ship fuer Phase 17 (v1.2) nie gelaufen; windows_enforce blockiert bei open_count 15 — keine Dringlichkeit", "status": "not_started"},
|
||||
{"id": 14, "name": "Ledger ohne Dringlichkeit: #35 Biome-Konfiguration im Bestand nicht lauffaehig (pnpm lint = Leerlauf), #36 Admin-Frontend verschluckt 403 still, #37 DKV Single-Flight prozessweit; die uebrigen 12 offenen Eintraege haengen am ruhenden Mandantenthema", "status": "not_started"}
|
||||
{"id": 4, "name": "Benchmark nach dem Neustart wiederholen (User aendert RAM/CPU der VM) — vier Messungen aus memory/reference_benchmark_dev_host.md, mit Referenz vergleichen", "status": "not_started"},
|
||||
{"id": 5, "name": "Beim naechsten Freigabe-Tag (1.2.0): Release-Anhaenge (Tessera-Setup-1.2.0.exe, Tessera-1.2.0.AppImage) am Gitea-Release und Update-Hinweis im Client beobachten (18-UAT.md #2/#3)", "status": "not_started"}
|
||||
],
|
||||
"blockers": [],
|
||||
"async_jobs": [],
|
||||
"human_actions_pending": [
|
||||
{"action": "Auf alpha (Beta) einmalig IMAGE_TAG=beta in /opt/tessera/.env und die zwei image:-Zeilen auf ${IMAGE_TAG:-beta} bringen (Kap. 9) — solange nicht geschehen, laeuft alpha ueber 'latest', das dasselbe Abbild wie 'beta' ist; nichts kaputt, nur unsauber", "context": "docs/anleitung-betrieb.md Kapitel 9, Abschnitt 'Die eine Zeile je Server'", "blocking": false}
|
||||
{"action": "VM neu starten nach RAM/CPU-Aenderung, dann neue Claude-Sitzung und 'Benchmark wiederholen'", "context": "Vergleich, ob mehr RAM/CPU beim Kompilieren hilft (Referenz: 8 vCPU/15 GB: Teilbau 43 s, Vollbau 165 s, Web-Tests 22 s, API-tsc 7 s)", "blocking": false},
|
||||
{"action": "Freigabe 1.2.0 auf Zuruf: CHANGELOG 'Unveröffentlicht' -> '1.2.0 – Datum', live ff-merge, Tag, Push (docs/anleitung-betrieb.md Kap. 9)", "context": "Erst dann sind Release-Anhang und Update-Hinweis pruefbar", "blocking": false}
|
||||
],
|
||||
"decisions": [
|
||||
{"decision": "Mandantenfaehigkeit RUHT — 3a und Etappe 4 nicht weiterverfolgen, Thema nicht ansprechen; Ein-Firmen-Betrieb reicht; evtl. spaeter ein Container je Kunde", "rationale": "User 2026-09-14, veraergert ueber den Zeitaufwand; Memory feedback-mandantenfaehigkeit-nicht-ansprechen", "phase": "Betrieb"},
|
||||
{"decision": "Kanalmodell: main = beta (alpha.tessera.ctl.de), Zweig live + Tag vX.Y.Z = live (tessera.ctl.de); IMAGE_TAG je Server", "rationale": "User will Live und Beta getrennt, Hotfixes ohne Beta-Neuerungen; Rezept Kap. 9", "phase": "260914-ku1"},
|
||||
{"decision": "Versionsnummer entscheide ich: neue Funktionen -> mittlere Stelle (1.1.0), nur Fehlerbehebungen -> dritte Stelle (1.0.1)", "rationale": "User 2026-09-16: 'du entscheidest, ich habe keine Ahnung'", "phase": "Freigabe 1.1.0"},
|
||||
{"decision": "Lizenzmodell (Betreiber gibt Modul je Server mit Lizenzanzahl frei, Firmenadmin lizenziert an bis zu N Benutzer) nur festgehalten, nicht bauen, nicht ansprechen", "rationale": "User 2026-09-14; Zettel .planning/todos/pending/2026-09-14-lizenzmodell-freigabe-je-server-mit-lizenzanzahl.md", "phase": "Betrieb"},
|
||||
{"decision": "Dashboard: Mindestgroessen inhaltsgetrieben statt verdoppelt; gespeicherte Minima beim Rendern ueberschrieben; ganze Kachel Griff; preventCollision mit noCompactor", "rationale": "User-Test auf alpha 2026-09-16 ('nicht klein genug', 'Drag and Drop semi'); Messungen in 260916-dyv", "phase": "260916-dyv"}
|
||||
{"decision": "Windows-Installer per Cross-Bau (cargo-xwin + NSIS) auf dem Linux-Runner; Pakete im API-Abbild (/app/desktop-dist + manifest.json), bei Tags zusaetzlich am Gitea-Release; Server-Adresse beim Erststart; Update nur Hinweis + Link; keine Signierung", "rationale": "User-Entscheidung Download in Tessera + Gitea; kein Windows-Rechner in der Pipeline; Live-Server ohne Gitea-Zugang", "phase": "18"},
|
||||
{"decision": "CARGO_BUILD_JOBS=4 im CI-Job desktop", "rationale": "8 rustc-Prozesse brachten den gemeinsam genutzten Host (Gitea + Runner + Dev-Stack, 15 GB) an die Speichergrenze; Claude Code beendete deshalb eine Hintergrundaufgabe", "phase": "18"},
|
||||
{"decision": "Keine Kalenderquellen-Auswahl pro Widget; Plaketten je Kalenderfarbe, ab 2 Kalendern kleine Kreise (max. 3, Rest grau)", "rationale": "User: nur Optik wie personal-dashboard; globaler 'sichtbar'-Schalter je Quelle reicht", "phase": "quick"}
|
||||
],
|
||||
"uncommitted_files": [],
|
||||
"next_action": "/gsd-resume-work; dann das aufgreifen, was der User aus dem Betrieb von v1.1.0 mitbringt. Vor jeder Aenderung: CHANGELOG.md '## Unveröffentlicht' pflegen. Bei 'Version freigeben': Unveroeffentlicht -> X.Y.Z – Datum, neues leeres Unveroeffentlicht, Commit+Push, dann git checkout live && git merge --ff-only main && git tag -a vX.Y.Z -m 'Tessera X.Y.Z' && git push origin live vX.Y.Z — die Pipeline baut live/vX.Y.Z und legt den Gitea-Release an.",
|
||||
"context_notes": "Gemessen 2026-09-16 10:28Z: git status --porcelain leer, main == origin/main (29fe3d7), keine async-jobs. LIVE: tessera.ctl.de auf v1.1.0 (User hat gepullt, 'sieht gut aus'); BETA: alpha.tessera.ctl.de holt 'beta'/'latest' (= v1.1.0 Stand, e0d4532). Registry: beta/latest/live/v1.0.0/v1.1.0. Gitea-Releases: v1.0.0 (manuell per Skript), v1.1.0 (von der Pipeline — erster CI-Beweis des Release-Wegs). DER SCHALTER IST AUS (DATABASE_URL auf BYPASSRLS-Rolle) und bleibt es. Endstand Tests: Web 49 Dateien / 309 Tests, API 67 / 1078; rls-scratch-check 253/253; Ledger 15 offen / 1 zurueckgestellt / 23 geschlossen / 39 gesamt. Arbeitsweise, die sich bewaehrt hat: /gsd-quick --validate mit voller Kette (Planer opus, Pruefer, Executor opus bei >10 Dateien, Verifizierer) — der Pruefer fing in dieser Sitzung u. a. ein fehlendes Clamp bei angehobenen Minima, ich selbst im Browser das abgeschnittene Rechner-Minimum (Planer zaehlte 5 statt 6 Tastenreihen). Browser-Nachweise mache ich selbst per Playwright MCP gegen lokale Container (docker compose up -d --build web; DB-Container ohne Host-Port; Admin admin/admin123 lokal; mailhog aus docker-compose.dev.yml fuer Mail-Proben). Fallen: Platte lief einmal voll (docker builder prune half); der Gitea-Runner arbeitet nur einen Auftrag gleichzeitig (andere Repos blockieren die Warteschlange); auf diesem Host ist grep = ugrep ($ wirkt als Anker); .dockerignore schliesst *.md aus (CHANGELOG.md per !-Ausnahme); Next.js bettet NEXT_PUBLIC_* nur bei woertlichem Zugriff ein; jsdom verwirft clamp() im Inline-Style; git checkout -- <Datei> setzt auch unkommittierte Aenderungen zurueck. User-Praeferenzen: Deutsch, duzen, Alltagssprache, keine technischen Fragen, nur Produktfragen; App-Texte siezen. Diese Sitzung endete bei ~70% Kontext — deshalb pausiert."
|
||||
"next_action": "Nach dem Neustart: `nproc`, `free -h`, dann die vier Benchmark-Befehle aus memory/reference_benchmark_dev_host.md (Rechner idle, kein CI-Lauf) und Zeiten vergleichen. Danach normal weiter: nichts ist angefangen; naechster groesserer Schritt ist die Freigabe 1.2.0 auf Zuruf des Users.",
|
||||
"context_notes": "Alles auf origin/main (HEAD 626f60e + dieser WIP-Commit), Arbeitsbaum leer, CI-Lauf 369 gruen (Pakete Tessera-Setup-1.1.0-beta.03fd85a.exe / Tessera-1.1.0-beta.03fd85a.AppImage). Beta laeuft auf diesem Stand; Live weiterhin v1.1.0. Gitea-API von aussen nur mit Token — Token steckt in remote.origin.pushurl, Monitor-Skripte lesen ihn per git config und geben ihn nie aus. Lokaler Docker-Stack (api/web/db/mailhog) laeuft mit dem 1.1.0-Desktop-Manifest. Playwright-MCP-Browser wurde nachinstalliert (chrome-for-testing)."
|
||||
}
|
||||
|
||||
@@ -89,9 +89,9 @@
|
||||
|
||||
- [x] **DESK-01**: Tauri-basierter Desktop-Wrapper für Windows und Linux (Phase 6, fortgeführt).
|
||||
- [x] **DESK-02**: Die Desktop-App verbindet sich mit dem Web-Backend; die Server-Adresse wird beim ersten Start abgefragt (Phase 6, fortgeführt; D-02).
|
||||
- [ ] **DESK-03**: Der Installer ist in Tessera herunterladbar — Link auf der Anmeldeseite und Seite Einstellungen → Desktop-App, Auslieferung über die Tessera-API ohne Gitea-Zugang (D-01, D-10, D-12).
|
||||
- [ ] **DESK-04**: Ein Freigabe-Tag baut Windows-Installer und Linux-AppImage in der Pipeline und hängt beide als Dateien an den Gitea-Release (D-04..D-08).
|
||||
- [ ] **DESK-05**: Der Client trägt die Freigabe-Version, vergleicht sie mit `/desktop/latest` und weist mit Download-Link auf eine neuere Version hin (D-07, D-11, D-13).
|
||||
- [x] **DESK-03**: Der Installer ist in Tessera herunterladbar — Link auf der Anmeldeseite und Seite Einstellungen → Desktop-App, Auslieferung über die Tessera-API ohne Gitea-Zugang (D-01, D-10, D-12).
|
||||
- [x] **DESK-04**: Ein Freigabe-Tag baut Windows-Installer und Linux-AppImage in der Pipeline und hängt beide als Dateien an den Gitea-Release (D-04..D-08).
|
||||
- [x] **DESK-05**: Der Client trägt die Freigabe-Version, vergleicht sie mit `/desktop/latest` und weist mit Download-Link auf eine neuere Version hin (D-07, D-11, D-13).
|
||||
|
||||
## Future Requirements (deferred)
|
||||
|
||||
|
||||
@@ -618,6 +618,7 @@ Phases execute in numeric order: 1 -> 2 -> 3 -> 4 -> 5 -> 6 -> 7 -> 8 -> 9 -> 10
|
||||
| 15. Modul-Berechtigungen: Gruppen & User-Grants | 8/8 | Complete | 2026-08-04 (Bericht 15-04 am 2026-08-11 nachgezogen) |
|
||||
| 16. AD-Gruppen-Synchronisation | 5/5 | Complete | 2026-08-11 |
|
||||
| 17. Eigene Ausschreibungs-Quellen je Nutzer | 3/3 | Complete | 2026-08-12 (Browser-Gegenproben #7/#8/#9 am 2026-09-07 nachgeholt, alle bestanden) |
|
||||
| 18. Desktop-Client fertigstellen | 6/6 | Complete | 2026-09-17 (Verifikation: passed; Windows-Bedienprobe durch den User bestanden; Release-Anhang + Update-Hinweis werden beim naechsten Freigabe-Tag beobachtet, siehe 18-UAT.md) |
|
||||
|
||||
### Phase 17: Eigene Ausschreibungs-Quellen je Nutzer
|
||||
|
||||
@@ -656,6 +657,7 @@ Plans (Wellenstruktur — streng nacheinander, alle drei fassen Schema, Controll
|
||||
|
||||
### Phase 18: Desktop-Client fertigstellen
|
||||
|
||||
**Status:** Complete (2026-09-17) — Verifikation passed, Bedienprobe bestanden; zwei Beobachtungen auf den naechsten Freigabe-Tag vertagt (18-UAT.md #2/#3)
|
||||
**Goal:** Anwender koennen den Tessera-Desktop-Client (Tauri, Grundgeruest aus Phase 6) als fertigen Windows-Installer (und Linux-AppImage) direkt aus Tessera herunterladen und installieren; die Pipeline baut die Pakete bei jedem Freigabe-Tag und haengt sie an das Gitea-Release; der Client traegt die Freigabe-Version, fragt die Server-Adresse weiterhin beim ersten Start ab und weist bei einer neueren Client-Version mit Download-Link hin.
|
||||
**Requirements**: DESK-01, DESK-02 (Fortfuehrung), neu: DESK-03 Download in Tessera, DESK-04 Release-Dateien in Gitea, DESK-05 Client-Versionierung + Update-Hinweis
|
||||
**Depends on:** Phase 17
|
||||
|
||||
+1
-1
@@ -31,7 +31,7 @@ See: .planning/PROJECT.md (updated 2026-07-17)
|
||||
Phase: 18 (desktop-client-fertigstellen) — IN PROGRESS
|
||||
Plan: 6 of 6 (18-02 abgeschlossen)
|
||||
Status: 18-02 (CI-Job desktop, Cache-Uebergabe an publish, Release-Anhaenge) fertig; 18-03 (Web-Oberflaeche), 18-04 (Client-Updatepruefung), 18-05 (Windows-Cross-Bau + Pipeline-Beweis), 18-06 (Freigabe) stehen aus
|
||||
Last activity: 2026-09-16 - Phase 18 Desktop-Client: 6/6 Plaene ausgefuehrt, Code-Review behoben, Verifikation human_needed (Windows-Bedienprobe durch den User, Release-Anhang + Update-Hinweis erst beim naechsten Tag); gepusht, CI-Lauf 367 gruen mit beiden Paketen
|
||||
Last activity: 2026-09-17 - Phase 18 Desktop-Client abgeschlossen: Bedienprobe unter Windows bestanden (nach Startseiten-Fix 03fd85a), Verifikation passed, DESK-01..05 complete; Release-Anhang + Update-Hinweis beim naechsten Tag (1.2.0) beobachten
|
||||
|
||||
Progress: [███░░░░░░░] 33%
|
||||
|
||||
|
||||
@@ -0,0 +1,69 @@
|
||||
---
|
||||
context: phase
|
||||
phase: 18-desktop-client-fertigstellen
|
||||
task: 3
|
||||
total_tasks: 3
|
||||
status: complete
|
||||
last_updated: 2026-09-17T07:38:47.449Z
|
||||
---
|
||||
|
||||
## Critical Anti-Patterns
|
||||
|
||||
| Pattern | Description | Severity | Prevention Mechanism |
|
||||
|---------|-------------|----------|---------------------|
|
||||
| Fenster ohne Startseite | Tauri-Fenster `main` hatte keine `url`; im gebauten Paket erschien "asset not found: index.html" (Altlast Phase 6, nie in einem echten Paket sichtbar). Lokaler `cargo check`/AppImage-Bau fing es nicht. | advisory | `tauri.conf.json` `app.windows[].url = "setup.html"` (b6d9013); Startseite im Binary per `strings target/release/tessera-desktop \| grep setup.html` pruefen |
|
||||
| Rust-Bau frisst den Host | 8 parallele rustc-Prozesse des CI-Runners (auf demselben Host wie Gitea + Dev-Stack, 15 GB) -> Speichergrenze, Claude Code beendete eine Hintergrundaufgabe | advisory | `CARGO_BUILD_JOBS: "4"` im Job `desktop` (b6d9013); bei Rust-Vollbau lokal nicht parallel zur CI messen |
|
||||
| Gitea-API ohne Token | `https://git.vicolab.de/api/v1/...` antwortet 401 ohne Token | advisory | Token aus `git config --get remote.origin.pushurl` lesen (nie ausgeben), gegen `http://localhost:3002/api/v1/...` |
|
||||
|
||||
<current_state>
|
||||
Phase 18 (Desktop-Client) ist ABGESCHLOSSEN und gepusht (626f60e): Verifikation passed, Windows-Bedienprobe des Users bestanden (Pakete aus CI-Lauf 369, Commit 03fd85a). Nichts ist angefangen. Der User startet die VM nach einer RAM/CPU-Aenderung neu; als Naechstes soll der Bau-Benchmark wiederholt und mit der Referenz verglichen werden.
|
||||
</current_state>
|
||||
|
||||
<completed_work>
|
||||
|
||||
Completed Tasks (diese Sitzung, 2026-09-16/17):
|
||||
- Sechs Quick-Tasks Dashboard (260916-hiv/htc/iex/j4f/jvj/k2z): URL-Platzhalter Kalenderquellen, Kalender-Widget nach Vorbild personal-dashboard (Monatsraster + Naechste Termine + 3 Einstellungen), Notiz-Haekchen abhakbar, Favoriten-Titel, Link-Widget entfernt (Migration), Tooltip-Umbruch, Notiz-Farbmodus, Changelog-Stichpunkte, Plaketten in Kalenderfarbe, Mehrfach-Kreise, Markdown-Aufzaehlungspunkte — alle gepusht, CI 365 gruen
|
||||
- Phase 18, 6 Plaene: 18-01 Durchstich Linux (Manifest-Skript, API /desktop/latest + /desktop/download/:platform, Abbild), 18-02 CI-Job desktop + Cache-Uebergabe + Release-Anhaenge, 18-03 Web (Anmeldeseite-Link, Einstellungen -> Allgemein -> Desktop-App), 18-04 Client (Erststart-Seite per Rust-Kommandos, Versionspruefung, Tray Update/Autostart, Icons), 18-05 Windows-Cross-Bau (1 Korrekturrunde: clippy), 18-06 Handbuecher/Changelog/REQUIREMENTS
|
||||
- Code-Review (1 kritisch, 3 Warnungen) behoben + Commit-Stempel via TESSERA_COMMIT
|
||||
- Schnellkorrektur Startseite setup.html + CARGO_BUILD_JOBS=4 (b6d9013)
|
||||
- Benchmark-Referenz vor dem Umbau erfasst (memory/reference_benchmark_dev_host.md)
|
||||
</completed_work>
|
||||
|
||||
<remaining_work>
|
||||
|
||||
- Benchmark nach dem Neustart wiederholen (vier Befehle, Rechner idle) und vergleichen
|
||||
- Beim naechsten Freigabe-Tag (1.2.0): Release-Anhaenge am Gitea-Release + Update-Hinweis im Client beobachten (18-UAT.md #2/#3) — nur Beobachtung, kein Code offen
|
||||
- Freigabe 1.2.0 selbst nur auf Zuruf des Users (Kap. 9 Betriebshandbuch)
|
||||
</remaining_work>
|
||||
|
||||
<decisions_made>
|
||||
|
||||
- Installer in Tessera herunterladbar UND am Gitea-Release (User); Windows per Cross-Bau auf Linux; Pakete im API-Abbild (kein Gitea-Zugang vom Live-Server noetig); Server-Adresse beim Erststart; Update nur Hinweis + Link; keine Signierung (SmartScreen-Hinweis im Handbuch)
|
||||
- Beta-Builds: Version X.Y.Z des letzten Tags + Commit-Stempel im Dateinamen/Manifest; Client vergleicht auf beta Version + Commit
|
||||
- Kalender-Widget: keine Quellenauswahl pro Widget (User: nur Optik)
|
||||
- Mandantenfaehigkeit und Lizenzierung ruhen weiterhin (nicht ansprechen)
|
||||
</decisions_made>
|
||||
|
||||
<blockers>
|
||||
- keine
|
||||
</blockers>
|
||||
|
||||
## Required Reading (in order)
|
||||
1. `.planning/STATE.md` — Aktenstand, Quick-Task-Tabelle, Phase 18 Complete
|
||||
2. `memory/reference_benchmark_dev_host.md` (Claude-Memory) — Benchmark-Referenz und Befehle
|
||||
3. `.planning/phases/18-desktop-client-fertigstellen/18-UAT.md` — was beim naechsten Tag zu beobachten ist
|
||||
4. `docs/anleitung-betrieb.md` Kap. 9 (Freigabe) und Kap. 10 (Desktop-Pakete)
|
||||
|
||||
## Infrastructure State
|
||||
- Beta (alpha.tessera.ctl.de): Stand main 03fd85a-Pakete, vom User gepullt; Live: v1.1.0
|
||||
- Lokaler Docker-Stack (api/web/db/mailhog) laeuft, API-Abbild mit 1.1.0-Desktop-Manifest; Gitea + Runner auf demselben Host
|
||||
- Playwright MCP: Browser-Binary nachinstalliert (`npx @playwright/mcp@latest install-browser chrome-for-testing`)
|
||||
- VM wird vom User neu gestartet (RAM/CPU-Aenderung) — danach `nproc`/`free -h` neu erfassen
|
||||
|
||||
<context>
|
||||
Alles committet und gepusht, Arbeitsbaum leer. Naechste Sitzung beginnt mit dem Benchmark-Vergleich; danach gibt es keinen offenen Auftrag — auf den User warten (Freigabe 1.2.0 oder neue Wuensche).
|
||||
</context>
|
||||
|
||||
<next_action>
|
||||
Start with: `nproc && free -h`, dann die vier Benchmark-Befehle aus memory/reference_benchmark_dev_host.md (kein CI-Lauf parallel), Tabelle vorher/nachher an den User.
|
||||
</next_action>
|
||||
@@ -1,9 +1,9 @@
|
||||
---
|
||||
status: testing
|
||||
status: complete
|
||||
phase: 18-desktop-client-fertigstellen
|
||||
source: [18-VERIFICATION.md]
|
||||
started: 2026-09-16T18:15:00Z
|
||||
updated: 2026-09-16T18:15:00Z
|
||||
updated: 2026-09-17T09:40:00Z
|
||||
---
|
||||
|
||||
## Current Test
|
||||
@@ -23,29 +23,29 @@ expected: |
|
||||
9. Neustart der App: Server-Adresse ist gemerkt, direkt Anmeldung/Dashboard.
|
||||
10. Einstellungen -> Allgemein -> Desktop-App zeigt Version, beide Download-Knoepfe mit Dateigroesse und den Erklaerungstext.
|
||||
11. (optional, Linux) `Tessera-1.1.0-beta.<commit>.AppImage` ausfuehrbar machen und starten -> gleiche Erststart-Seite.
|
||||
awaiting: user response
|
||||
awaiting: —
|
||||
|
||||
## Tests
|
||||
|
||||
### 1. Windows-Bedienprobe (Download, Installation, Erststart, Tray, Einstellungsseite)
|
||||
expected: siehe oben (Schritte 1-11)
|
||||
result: [pending] — Befund 2026-09-17 (Schritte 1-3 gruen: Download, SmartScreen, Installation): Schritt 4 rot, schwarzes Fenster "asset not found: index.html". Ursache: Fenster "main" in tauri.conf.json ohne Startseite, Tauri sucht index.html, die Erststart-Seite heisst setup.html (Altlast aus Phase 6). Fix: "url": "setup.html" (Quick-Task, siehe Commit im Aktenstand). Erneute Probe nach dem naechsten Beta-Bau.
|
||||
result: [pending] — Befund 2026-09-17 (Schritte 1-3 gruen: Download, SmartScreen, Installation): Schritt 4 rot, schwarzes Fenster "asset not found: index.html". Ursache: Fenster "main" in tauri.conf.json ohne Startseite, Tauri sucht index.html, die Erststart-Seite heisst setup.html (Altlast aus Phase 6). Fix: "url": "setup.html" (Quick-Task, siehe Commit im Aktenstand). Erneute Probe nach dem naechsten Beta-Bau. — **Ergebnis 2026-09-17 09:40: bestanden** (User: "Der Client funktioniert jetzt", Pakete aus Lauf 369 / 03fd85a).
|
||||
|
||||
### 2. Release-Anhang am naechsten Freigabe-Tag
|
||||
expected: Nach dem naechsten Tag `vX.Y.Z` traegt der Gitea-Release `Tessera-Setup-X.Y.Z.exe` und `Tessera-X.Y.Z.AppImage` als Anhaenge (herunterladbar, Groesse > 0). Pruefbar erst bei der naechsten Freigabe (z. B. 1.2.0).
|
||||
result: [pending]
|
||||
result: [deferred] — erst beim naechsten Freigabe-Tag (1.2.0) beobachtbar, kein Mangel
|
||||
|
||||
### 3. Update-Hinweis bei neuerer Client-Version
|
||||
expected: Ein aelterer installierter Client zeigt nach dem Start die Benachrichtigung "Neue Version X.Y.Z verfuegbar" und im Tray den Eintrag "Update herunterladen", der die Seite Einstellungen -> Desktop-App im Browser oeffnet. Auf der Beta reicht dafuer ein neuerer Commit (gleiche Versionsnummer, anderer Commit-Stempel); auf Live der naechste Freigabe-Tag.
|
||||
result: [pending]
|
||||
result: [deferred] — erst mit einem neueren Bau/Tag beobachtbar, kein Mangel
|
||||
|
||||
## Summary
|
||||
|
||||
total: 3
|
||||
passed: 0
|
||||
passed: 1
|
||||
issues: 0
|
||||
pending: 3
|
||||
skipped: 0
|
||||
pending: 0
|
||||
skipped: 2
|
||||
blocked: 0
|
||||
|
||||
## Gaps
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
---
|
||||
phase: 18-desktop-client-fertigstellen
|
||||
verified: 2026-09-16T17:50:00Z
|
||||
status: human_needed
|
||||
score: 8/10 must-haves verified
|
||||
status: passed
|
||||
score: 9/10 must-haves verified (Windows-Bedienprobe 2026-09-17 bestanden; Release-Anhang + Update-Hinweis bewusst auf den naechsten Freigabe-Tag vertagt, siehe 18-UAT.md)
|
||||
covered_files: [".gitea/scripts/desktop-collect.sh", ".gitea/scripts/desktop-version.sh", ".gitea/scripts/publish-images.sh", ".gitea/scripts/publish-release.sh", ".gitea/workflows/ci.yml", ".planning/REQUIREMENTS.md", ".planning/phases/18-desktop-client-fertigstellen/18-01-PLAN.md", ".planning/phases/18-desktop-client-fertigstellen/18-01-SUMMARY.md", ".planning/phases/18-desktop-client-fertigstellen/18-02-PLAN.md", ".planning/phases/18-desktop-client-fertigstellen/18-02-SUMMARY.md", ".planning/phases/18-desktop-client-fertigstellen/18-03-PLAN.md", ".planning/phases/18-desktop-client-fertigstellen/18-03-SUMMARY.md", ".planning/phases/18-desktop-client-fertigstellen/18-04-PLAN.md", ".planning/phases/18-desktop-client-fertigstellen/18-04-SUMMARY.md", ".planning/phases/18-desktop-client-fertigstellen/18-05-PLAN.md", ".planning/phases/18-desktop-client-fertigstellen/18-05-SUMMARY.md", ".planning/phases/18-desktop-client-fertigstellen/18-06-PLAN.md", ".planning/phases/18-desktop-client-fertigstellen/18-06-SUMMARY.md", ".planning/phases/18-desktop-client-fertigstellen/18-REVIEW-FIX.md", ".planning/phases/18-desktop-client-fertigstellen/18-REVIEW.md", "CHANGELOG.md", "apps/api/src/desktop/desktop.controller.ts", "apps/api/src/desktop/desktop.module.ts", "apps/api/src/desktop/desktop.service.ts", "apps/desktop/src-tauri/build.rs", "apps/desktop/src-tauri/src/lib.rs", "apps/desktop/src/setup.html", "apps/web/src/app/(portal)/settings/general/desktop/page.tsx", "apps/web/src/components/desktop/desktop-download-links.tsx", "apps/web/src/components/settings/desktop-app-settings.tsx", "apps/web/src/lib/desktop.ts", "docs/anleitung-anwender.md", "docs/anleitung-betrieb.md", "docs/anleitung-entwicklung.md", "docs/ci-cd-setup.md"]
|
||||
covered_digest: "v1:sha256:d489cb5b094aba560b96f3d6ce7537d67fe83a2827906d554c4cccae996e091c"
|
||||
behavior_unverified: 2
|
||||
|
||||
Reference in New Issue
Block a user