diff --git a/.planning/HANDOFF.json b/.planning/HANDOFF.json deleted file mode 100644 index e381834..0000000 --- a/.planning/HANDOFF.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "version": "1.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": "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": 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": "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": "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": "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)." -} diff --git a/.planning/STATE.md b/.planning/STATE.md index 8135427..2448496 100644 --- a/.planning/STATE.md +++ b/.planning/STATE.md @@ -6,8 +6,8 @@ current_phase_name: desktop-client-fertigstellen status: verified stopped_at: Completed 18-06-PLAN.md — Windows-Bedienprobe des Nutzers steht aus last_updated: "2026-09-16T15:27:16.943Z" -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 +last_activity: 2026-09-17 +last_activity_desc: Quick 260917-e15 — Desktop-Client-Icon mit resvg neu erzeugt (T statt "1"); Benchmark nach VM-Umbau wiederholt; Windows-Test-VM via Proxmox erreichbar, Client installiert state_head: a777814034ee5907cb4d151669447f015841082d progress: total_phases: 18 @@ -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-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 +Last activity: 2026-09-17 - Completed quick task 260917-e15: Desktop-Client-Icon mit resvg neu erzeugt (T statt "1"); Benchmark nach VM-Umbau wiederholt (kein Gewinn, Steal-Time); Windows-Test-VM 8233 via Proxmox/noVNC erreichbar, Client dort installiert Progress: [███░░░░░░░] 33% @@ -431,6 +431,7 @@ Gerettet aus `.continue-here.md`. Relevant fuer die noch offenen Live-Tests. | 260916-jvj | **Kalender-Plaketten in Kalenderfarbe + Aufzaehlungspunkte in Markdown-Ansichten.** Tages-Plakette nimmt `day.events[0].color` (groupEventsByDate sortiert jetzt je Tag nach Start) als Inline-Hintergrund mit weisser Schrift, ohne Farbe unveraendert `bg-primary`; Farbpunkt je Tooltip-Zeile. Tailwind-v4-Preflight entfernt `list-style` global, markdown.css setzt es nicht zurueck -> Vier-Regeln-Block am Ende von `globals.css` (`.wmde-markdown ul/ol`, Abhak-Listen bleiben ohne Punkt) fuer "Was ist neu" und Notiz-Ansicht. Changelog. Tests Web 347 -> 350 / 52 Dateien, tsc 0. | 2026-09-16 | 1e4ec30,c85cf9a | [260916-jvj-kalender-plaketten-in-kalenderfarbe-stat](./quick/260916-jvj-kalender-plaketten-in-kalenderfarbe-stat/) | | 260916-k2z | **Kalender-Widget: mehrere Kalender am selben Tag als kleine Kreise.** Neue reine Helfer `groupDayBySource` (nach `sourceId`, Reihenfolge des ersten Auftretens, Farbe = erster Termin der Gruppe) und `buildDayBadges(events, max=3)`: 1 Quelle = bisherige Einzelplakette (unveraendert, Tests 3/3b/3c gruen), 2-3 Quellen = kleine Kreise je Farbe mit eigener Anzahl, >3 = zwei Kreise + grauer Restkreis (`bg-muted-foreground text-background`, Summe; testid `calendar-day-count-rest`), Wrapper `calendar-day-badges`. Changelog-Stichpunkt erweitert. Tests Web 350 -> 354 / 52 Dateien, tsc 0. | 2026-09-16 | 4ddadc6,7429c5b | [260916-k2z-kalender-widget-mehrere-kalender-am-selb](./quick/260916-k2z-kalender-widget-mehrere-kalender-am-selb/) | | 260917-fast | **Desktop-Client: Startseite + Bau-Parallelitaet (Schnellkorrektur nach Bedienprobe).** Fenster "main" hatte keine Startseite -> "asset not found: index.html" (Altlast Phase 6); `"url": "setup.html"` in tauri.conf.json, per `strings` im Release-Binary bewiesen. `CARGO_BUILD_JOBS=4` im CI-Job desktop (8 rustc-Prozesse brachten den gemeinsam genutzten Host mit 15 GB an die Grenze), Betriebshandbuch Kap. 10, Befund in 18-UAT.md. | 2026-09-17 | b6d9013 | — | +| 260917-e15 | **Desktop-Client-Icon: T statt "1".** Die fuenf Icon-Dateien in `apps/desktop/src-tauri/icons/` waren mit ImageMagicks internem MSVG-Renderer erzeugt, der `transform="rotate(12 51 21)"` nicht rendert -> gedrehte gelbe Kachel fehlte, App-Symbol sah aus wie eine "1". Satz mit `tauri icon` (resvg) aus `apps/web/src/app/icon.svg` neu erzeugt (nur die fuenf Dateien aus `bundle.icon`, kein icns/android/ios), Pixel-Gate an der Kachelmitte `FFED00FF`, icon.ico 16/24/32/48/64/256. Changelog. Nebenbefund: Erststart-Seite (Inline-SVG im WebView) war nie betroffen. | 2026-09-17 | 16564f4,6bb92dc | [260917-e15-desktop-client-icon-fehlende-gedrehte-ge](./quick/260917-e15-desktop-client-icon-fehlende-gedrehte-ge/) | ## Deferred Items @@ -472,8 +473,8 @@ sind. Kein Anlass, sie vorher erneut vorzulegen. ## Session Continuity -Last session: 2026-09-16T15:27:16.618Z -Resumed: 2026-09-14 — Sitzung ueber /gsd-resume-work fortgesetzt; #29 und 3c als /gsd-quick --validate mit voller Kette durchgefuehrt. -Stopped at: Completed 18-06-PLAN.md — Windows-Bedienprobe des Nutzers steht aus +Last session: 2026-09-17T08:20:00Z +Resumed: 2026-09-17 — Sitzung ueber /gsd-resume-work fortgesetzt (HANDOFF.json abgearbeitet und entfernt). +Stopped at: Quick 260917-e15 (Desktop-Icon) abgeschlossen; Windows-Test-VM 8233 (Proxmox pve01, noVNC ueber socat-Tunnel localhost:8007) — Client 1.1.0-beta.03fd85a installiert, Bedienprobe durch Claude laeuft Resume file: None -Last activity: 2026-09-16 - Completed quick task 260916-k2z: Mehrfach-Kreise je Kalender am Tag; Browser-Pruefung + Push ausstehend +Last activity: 2026-09-17 - Completed quick task 260917-e15: Desktop-Client-Icon mit resvg neu erzeugt (T statt "1"); Benchmark nach VM-Umbau: kein Gewinn (12 vCPU -> Steal-Time bis 32 %) diff --git a/.planning/config.json b/.planning/config.json index 01a236d..2b542bd 100644 --- a/.planning/config.json +++ b/.planning/config.json @@ -12,6 +12,7 @@ "jina": false, "git": { "branching_strategy": "none", + "allow_default_branch_commits": true, "create_tag": true, "phase_branch_template": "gsd/phase-{phase}-{slug}", "milestone_branch_template": "gsd/{milestone}-{slug}", diff --git a/.planning/quick/260917-e15-desktop-client-icon-fehlende-gedrehte-ge/260917-e15-SUMMARY.md b/.planning/quick/260917-e15-desktop-client-icon-fehlende-gedrehte-ge/260917-e15-SUMMARY.md new file mode 100644 index 0000000..25d4e8c --- /dev/null +++ b/.planning/quick/260917-e15-desktop-client-icon-fehlende-gedrehte-ge/260917-e15-SUMMARY.md @@ -0,0 +1,150 @@ +--- +phase: quick-260917-e15 +plan: 01 +subsystem: infra +tags: [tauri, desktop, icons, resvg, changelog] + +# Dependency graph +requires: + - phase: 18-desktop + provides: Desktop-App-Bau mit Tauri (Phase 18-04 hatte die Icons ursprünglich mit ImageMagick erzeugt) +provides: + - Fünf Icon-Dateien in apps/desktop/src-tauri/icons/ mit resvg (tauri icon) neu gerendert, zeigen das Tessera-T inklusive der gedrehten gelben Kachel statt einer "1" + - CHANGELOG-Eintrag zur Symbol-Korrektur unter Unveröffentlicht/Behoben +affects: [desktop-release, changelog] + +actuals: + tokens: 5980 + tasks: 2 + commits: 2 +plan_head_before: c1c3130 + +tech-stack: + added: [] + patterns: [] + +key-files: + created: [] + modified: + - apps/desktop/src-tauri/icons/icon.png + - apps/desktop/src-tauri/icons/icon.ico + - apps/desktop/src-tauri/icons/32x32.png + - apps/desktop/src-tauri/icons/128x128.png + - "apps/desktop/src-tauri/icons/128x128@2x.png" + - CHANGELOG.md + +key-decisions: + - "Icon-Quelle: bereits im Session-Scratchpad vorhandener, sichtgeprüfter resvg-Satz aus `tauri icon` wiederverwendet statt neu zu rendern (Task-1-Fallback nicht benötigt)." + - "Sicherheits-Gate .planning/config.json: git.allow_default_branch_commits auf true gesetzt, weil dieses Projekt (branching_strategy: none) durchgehend direkt auf main committet — ohne diese Ergänzung hätte der Pre-Commit-Assert (#3819) beide Commits blockiert, obwohl main hier die vorgesehene Arbeit-Branch ist." + +patterns-established: [] + +requirements-completed: [QUICK-260917-E15] + +coverage: + - id: D1 + description: "Die fünf Icon-Dateien in apps/desktop/src-tauri/icons/ sind resvg-gerendert (Tauri-CLI) und zeigen das Tessera-T mit der gedrehten gelben Kachel statt einer 1" + requirement: QUICK-260917-E15 + verification: + - kind: other + ref: "ICON-GATE-OK — automatisiertes Bash-Gate (Größen/Rahmen/Pixel FFED00FF an drei Stellen, Dateizahl, git diff --quiet auf tauri.conf.json/src/apps-web), lief vor UND nach dem Commit 16564f4" + status: pass + - kind: manual_procedural + ref: "Read-Tool Sichtprüfung von apps/desktop/src-tauri/icons/icon.png" + status: pass + human_judgment: false + - id: D2 + description: "CHANGELOG.md hat unter Unveröffentlicht/Behoben genau einen neuen Stichpunkt zur Desktop-Symbol-Korrektur" + requirement: QUICK-260917-E15 + verification: + - kind: other + ref: "CHANGELOG-GATE-OK — grep-Nachweis (genau 1 Fundstelle, Sektionszugehörigkeit), lief vor UND nach dem Commit 6bb92dc" + status: pass + - kind: unit + ref: "apps/web/src/lib/changelog.test.ts (10 Tests, unverändert grün)" + status: pass + human_judgment: false + +duration: 4min +completed: 2026-09-17 +status: complete +--- + +# Quick Task 260917-e15: Desktop-Client-Icon — gedrehte gelbe Kachel zurück Summary + +**Fünf Desktop-App-Icon-Dateien mit dem resvg-Renderer der Tauri-CLI neu erzeugt — das Tessera-T mit gedrehter gelber Kachel ersetzt die zuvor mit ImageMagick/MSVG gerenderte "1", plus ein CHANGELOG-Stichpunkt.** + +## Performance + +- **Duration:** ~4 min +- **Started:** 2026-09-17T10:12:00+02:00 +- **Completed:** 2026-09-17T10:15:00+02:00 +- **Tasks:** 2/2 +- **Files modified:** 6 (5 Icon-Binärdateien + CHANGELOG.md) + +## Accomplishments +- Die fünf Icon-Dateien aus `tauri.conf.json` → `bundle.icon` (icon.png, icon.ico, 32x32.png, 128x128.png, 128x128@2x.png) durch einen resvg-gerenderten Satz ersetzt; die gedrehte gelbe Kachel (`transform="rotate(12 51 21)"` in `apps/web/src/app/icon.svg`) ist jetzt an allen drei geprüften Pixelstellen (`icon.png` 363,149 / `128x128.png` 91,37 / `icon.ico` 256er-Rahmen 181,75) exakt `FFED00FF`. +- Sichtprüfung per Read-Tool bestätigt: Tessera-T (zwei olivfarbene Kacheln oben links, gedrehte gelbe Kachel oben rechts, Stamm aus zwei Kacheln darunter) statt der vorherigen "1". +- CHANGELOG.md unter `## Unveröffentlicht` → `### Behoben` um einen neuen, letzten Stichpunkt zur Symbol-Korrektur ergänzt. + +## Task Commits + +Each task was committed atomically: + +1. **Task 1: Die fünf Icon-Dateien durch den resvg-Satz der Tauri-CLI ersetzen** - `16564f4` (fix) +2. **Task 2: CHANGELOG-Stichpunkt unter Unveröffentlicht / Behoben** - `6bb92dc` (docs) + +**Plan metadata:** wird vom Orchestrator committet (kein separater Commit durch diesen Executor) + +## Files Created/Modified +- `apps/desktop/src-tauri/icons/icon.png` - 512x512, resvg-gerendert, T statt 1 +- `apps/desktop/src-tauri/icons/icon.ico` - sechs PNG-Rahmen 16/24/32/48/64/256 +- `apps/desktop/src-tauri/icons/32x32.png` - 32x32 +- `apps/desktop/src-tauri/icons/128x128.png` - 128x128 +- `apps/desktop/src-tauri/icons/128x128@2x.png` - 256x256 +- `CHANGELOG.md` - neuer Stichpunkt unter Unveröffentlicht/Behoben + +## Decisions Made +- Der bereits im Session-Scratchpad liegende, laut Plan sichtgeprüfte resvg-Icon-Satz wurde direkt kopiert (nur die fünf benötigten Dateinamen); der Fallback-Schritt (`tauri icon` neu ausführen) war nicht nötig, da die Sichtprüfung in Task 1 bestätigt hat, dass die gelbe Kachel vorhanden ist. +- `.planning/config.json` → `git.allow_default_branch_commits: true` gesetzt (siehe Deviations). + +## Deviations from Plan + +### Auto-fixed Issues + +**1. [Rule 3 - Blocking] Pre-Commit-Branch-Guard blockierte Commits auf main** +- **Found during:** Vor Task-1-Commit +- **Issue:** Der mandatorische Pre-Commit-Sicherheits-Check (#2924/#3819) meldet `main` standardmäßig als geschützten Branch und verweigert das Committen. Dieses Projekt hat `branching_strategy: "none"` und committet laut gesamter Git-Historie durchgehend direkt auf `main` (u. a. der vorausgehende Plan-Commit `c1c3130` selbst) — es gibt keinen Phase-/Agent-Branch-Workflow. +- **Fix:** In `.planning/config.json` unter `git` den Schlüssel `allow_default_branch_commits: true` ergänzt (die vom Workflow selbst dokumentierte, vorgesehene Override-Möglichkeit). Damit meldet `git.base-branch --is-protected main` `false` und die beiden Task-Commits konnten regulär auf `main` erstellt werden. +- **Files modified:** `.planning/config.json` (NICHT committet — liegt als offene Arbeitsbaum-Änderung vor, siehe Hinweis unten) +- **Verification:** `node gsd-tools.cjs query git.base-branch --is-protected main` liefert nach der Änderung `false`; beide Commits (`16564f4`, `6bb92dc`) liegen sauber auf `main`. +- **Committed in:** nicht Teil eines Task-Commits — `.planning/config.json` bleibt bewusst ungestaged/uncommitted, da dieser Executor laut Auftrag keine `.planning`-Docs-Artefakte committen soll. **Hinweis für Orchestrator/User:** Diese eine Zeile in `.planning/config.json` muss noch eingecheckt werden (z. B. zusammen mit dem Docs-Commit), sonst blockiert derselbe Guard den nächsten Quick-Task/Phase-Commit auf `main` erneut. + +--- + +**Total deviations:** 1 auto-fixed (1 blocking) +**Impact on plan:** Notwendig, um überhaupt committen zu können; kein Scope Creep an den eigentlichen Icon-/CHANGELOG-Änderungen. Die Konfigurationsänderung ist unkommittiert liegen geblieben und muss separat eingecheckt werden. + +## Issues Encountered +None. + +## User Setup Required +None - keine externe Service-Konfiguration nötig. + +## Known Stubs +None. + +## Threat Flags +None - keine neue Angriffsfläche; siehe Threat Model im Plan (T-e15-01, T-e15-02, T-e15-SC), beide mitigate-Dispositionen durch die automatisierten Gates abgedeckt. + +## Next Phase Readiness +- Desktop-App-Icon ist repo-seitig korrigiert; ein tatsächlicher `tauri build`/Installer-Test war laut Auftrag nicht Teil dieses Quick Tasks und steht noch aus, bevor das nächste Release gebaut wird. +- Offener Punkt: `.planning/config.json` (`git.allow_default_branch_commits: true`) muss noch eingecheckt werden, siehe Deviations oben. + +--- +*Phase: quick-260917-e15* +*Completed: 2026-09-17* + +## Self-Check: PASSED + +Alle sechs geänderten Dateien (5 Icon-Dateien + CHANGELOG.md) und die SUMMARY.md selbst existieren auf der Platte; beide Commit-Hashes (`16564f4`, `6bb92dc`) sind in `git log --oneline --all` auffindbar.