diff --git a/.planning/ROADMAP.md b/.planning/ROADMAP.md index c0c3834..d085cb3 100644 --- a/.planning/ROADMAP.md +++ b/.planning/ROADMAP.md @@ -665,13 +665,24 @@ Plans (Wellenstruktur — streng nacheinander, alle drei fassen Schema, Controll 2. Auf der Anmeldeseite und unter Einstellungen gibt es "Desktop-App herunterladen" (Windows/Linux) mit Versionsangabe; der Download laeuft ueber die Tessera-API (Proxy auf die Release-Datei), Anwender brauchen keinen Gitea-Zugang 3. Der installierte Client zeigt nach Eingabe der Server-Adresse die Tessera-Anmeldung, laeuft mit Tray/Schliessen-ins-Tray/Autostart wie in Phase 6 und meldet eine neuere Client-Version mit Link zur Download-Seite 4. Anwender- und Betriebshandbuch beschreiben Installation, Erststart, Tray-Verhalten, Pipeline, Release-Dateien und Umgebungsvariablen + **Plans:** 6 plans Plans: +**Wave 1** - [ ] 18-01-PLAN.md — Tracer (Welle 1): Linux-Strecke lokal durchgehend — desktop-collect.sh (Manifest), API-Modul /desktop/latest + /desktop/download/:platform mit HTTP-Durchstich-Spec, Dockerfile COPY desktop-dist, Beweis im lokalen Docker-Stack; desktop-version.sh + Basislinie 1.1.0 + +**Wave 2** *(blocked on Wave 1 completion)* + - [ ] 18-02-PLAN.md — Pipeline (Welle 2): CI-Job desktop (Linux-AppImage mit Tag-Version) + Uebergabe an publish per actions/cache mit hartem Abbruch, Release-Upload (idempotent) in publish-release.sh - [ ] 18-03-PLAN.md — Web (Welle 2): lib/desktop.ts, Download-Link auf der Anmeldeseite, Seite Einstellungen → Allgemein → Desktop-App, Seitenleiste, i18n de/en, Tests - [ ] 18-04-PLAN.md — Client (Welle 2): lib.rs mit check_server/save_server_url, Versionspruefung gegen /api-proxy/desktop/latest, Tray mit Update-Eintrag und Autostart-Haken (Umlaute), tauri-plugin-opener, Erststart-Seite in Sie-Form/Tessera-Gestalt, echter Icon-Satz, lokaler AppImage-Beweis + +**Wave 3** *(blocked on Wave 2 completion)* + - [ ] 18-05-PLAN.md — Windows-Cross-Bau (Welle 3): cargo-xwin/NSIS im Job desktop, Einsammeln beider Pakete, Push-Checkpoint mit Iterationsschleife (max. 3 Runden) bis zum gruenen Lauf + +**Wave 4** *(blocked on Wave 3 completion)* + - [ ] 18-06-PLAN.md — Abschluss (Welle 4): Handbuecher (Anwender, Betrieb, Entwicklung, CI/CD-Runbook), CHANGELOG, REQUIREMENTS DESK-01..05, Gesamtlaeufe, Bedienprobe des Nutzers auf Windows diff --git a/.planning/STATE.md b/.planning/STATE.md index 756c0d1..870134c 100644 --- a/.planning/STATE.md +++ b/.planning/STATE.md @@ -1,18 +1,18 @@ --- gsd_state_version: "1.0" milestone: v1.2 -current_phase: 17 -current_phase_name: eigene-ausschreibungs-quellen-je-nutzer +current_phase: 18 +current_phase_name: desktop-client-fertigstellen status: verified stopped_at: "2026-09-16: Version 1.1.0 freigegeben (Tag v1.1.0, live-Abbilder, Gitea-Release von der Pipeline); Beta = main; Mandantenfaehigkeit ruht; Schalter AUS" -last_updated: "2026-09-16T10:15:09.000Z" +last_updated: "2026-09-16T13:56:53.351Z" last_activity: 2026-09-16 last_activity_desc: Quick 260910-jab — drei zu kurz greifende RLS-Regeln geschlossen (GroupMembership beide Seiten, ModuleGrant beide Ziele, TenderRssFeedSource Lese-/Schreibsplit), listForUser gebunden, Aktenstand kohaerent -state_head: c5f4adeeed4bc858171323a5b4c3866ee991f560 +state_head: 2eb3be8b74b61308a24e6ee4597cc228f5a13f37 progress: - total_phases: 17 + total_phases: 18 completed_phases: 15 - total_plans: 83 + total_plans: 89 completed_plans: 82 milestone_name: Plattform-Berechtigungen --- @@ -28,7 +28,7 @@ See: .planning/PROJECT.md (updated 2026-07-17) ## Current Position -Phase: 17 (eigene-ausschreibungs-quellen-je-nutzer) — VERIFIED / passed +Phase: 18 (desktop-client-fertigstellen) — READY TO EXECUTE Plan: 3 of 3 Status: Phase abgeschlossen und im Browser gegengeprueft — bereit fuer /gsd-ship Last activity: 2026-09-16 - Aenderungsliste (260916-dcz: CHANGELOG.md, Seite "Was ist neu", Gitea-Release je Tag, Release v1.0.0 angelegt) + Uebersetzungs-Nachtrag c3d8e16; Beta-Abbild c3d8e16 bereit. Freigabe der naechsten Version (1.1.0) auf Zuruf des Users: CHANGELOG Unveroeffentlicht -> 1.1.0, live ff-merge, Tag, Push diff --git a/.planning/phases/18-desktop-client-fertigstellen/18-RESEARCH.md b/.planning/phases/18-desktop-client-fertigstellen/18-RESEARCH.md index 24fbcb5..7bca3b6 100644 --- a/.planning/phases/18-desktop-client-fertigstellen/18-RESEARCH.md +++ b/.planning/phases/18-desktop-client-fertigstellen/18-RESEARCH.md @@ -619,7 +619,7 @@ export function loadDesktopLatest(): Promise { **If this table is empty:** N/A — see above. -## Open Questions +## Open Questions (RESOLVED in plans: Q1 → 18-01 desktop-collect.sh find-then-rename; Q2 → 18-05 Iterationsschleife; Q3 → 18-05 actions/cache@v3-Fallback) 1. **Exact default filename Tauri 2.11.3's bundler gives the NSIS `.exe` and the AppImage** - What we know: Tauri v1 used `${productName}_${version}_${arch}-setup.exe`-style names; v2's exact current default was not confirmed against an authoritative primary source this session. diff --git a/.planning/state.json b/.planning/state.json new file mode 100644 index 0000000..9edf8ed --- /dev/null +++ b/.planning/state.json @@ -0,0 +1,98 @@ +{ + "contract": "1.0.0", + "flavor": "core", + "milestone": "v1.2", + "phases": [ + { + "number": "1", + "name": "Foundation & Portal Shell", + "status": "complete" + }, + { + "number": "2", + "name": "Authentication & Multi-Tenancy", + "status": "pending" + }, + { + "number": "3", + "name": "Module System & Domaincheck", + "status": "complete" + }, + { + "number": "4", + "name": "Marketplace & Portal Navigation", + "status": "complete" + }, + { + "number": "5", + "name": "Dashboard & Calendar", + "status": "complete" + }, + { + "number": "6", + "name": "Desktop Client & CI/CD", + "status": "complete" + }, + { + "number": "7", + "name": "DKV Fleet Module", + "status": "complete" + }, + { + "number": "8", + "name": "Dashboard Widgets Vollimplementierung", + "status": "complete" + }, + { + "number": "9", + "name": "Cert Manager Module", + "status": "complete" + }, + { + "number": "10", + "name": "Ausschreibungs-Radar Foundation & DÖE Ingestion", + "status": "complete" + }, + { + "number": "11", + "name": "Filter Engine, Results UI & Saved Searches", + "status": "complete" + }, + { + "number": "12", + "name": "Tender Notifications", + "status": "complete" + }, + { + "number": "13", + "name": "Scraping Adapters & Cross-Source Deduplication", + "status": "complete" + }, + { + "number": "14", + "name": "RSS, Email-Alert Ingestion & Module Rollout", + "status": "pending" + }, + { + "number": "15", + "name": "Modul-Berechtigungen: Gruppen & User-Grants", + "status": "complete" + }, + { + "number": "16", + "name": "AD-Gruppen-Synchronisation", + "status": "complete" + }, + { + "number": "17", + "name": "Eigene Ausschreibungs-Quellen je Nutzer", + "status": "complete" + } + ], + "next": { + "command": "/gsd:progress --next", + "label": "Advance to the next step (verify)", + "reason": "Phase 18 of 18 · ready to verify" + }, + "updated_at": "2026-09-16T13:56:53.376Z" +}