Files

14 KiB
Raw Permalink Blame History

phase, plan, type, wave, depends_on, autonomous, requirements, files_modified, estimate, must_haves
phase plan type wave depends_on autonomous requirements files_modified estimate must_haves
quick-260917-e15 01 execute 1
true
QUICK-260917-E15
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
tokens raw_tokens tasks confidence
12000 12000 2 low
truths artifacts key_links
Die fuenf Icon-Dateien in `apps/desktop/src-tauri/icons/` (icon.png 512x512, icon.ico mit genau sechs Rahmen 16/24/32/48/64/256, 32x32.png, 128x128.png, 128x128@2x.png 256x256) stammen aus dem resvg-Renderer der Tauri-CLI und zeigen das Tessera-T aus Kacheln — inklusive der um 12 Grad gedrehten gelben Kachel rechts oben — statt einer „1“.
Pixel-Nachweis der gelben Kachel: icon.png an Pixel (363,149), 128x128.png an Pixel (91,37) und der 256er-Rahmen von icon.ico an Pixel (181,75) sind jeweils `FFED00FF` (SVG-Fuellfarbe `#ffed00`, Kachelmitte `rotate(12 51 21)` bei viewBox 72 hochskaliert). Der alte ImageMagick-MSVG-Satz liefert an denselben Stellen die Hintergrundfarbe `1A1A1AFF`.
`git status --porcelain apps/desktop/src-tauri/icons/` zeigt genau fuenf Zeilen, alle ` M`; das Verzeichnis enthaelt weiterhin genau fuenf Dateien — kein icon.icns, kein 64x64.png, kein android/, ios/, Square*.png oder StoreLogo.png.
`apps/desktop/src-tauri/tauri.conf.json`, alle Web-Dateien (insbesondere `apps/web/src/app/icon.svg`) und aller Rust-Code bleiben unveraendert.
CHANGELOG.md, `## Unveröffentlicht` → `### Behoben`: neuer letzter Stichpunkt `- Desktop-App: Symbol zeigte eine „1“ statt des Tessera-T – die gedrehte gelbe Kachel fehlte` (typografische Anfuehrungszeichen „…“, Halbgeviertstrich –, echte Umlaute, kein Punkt am Ende, kein Fliesstext), genau einmal in der Datei.
Kein Docker-Build, kein Desktop-Bau (`tauri build`), kein Deploy, kein Testserver, kein `git push`. Zwei Commits.
apps/desktop/src-tauri/icons/icon.png — 512x512, resvg-gerendert
apps/desktop/src-tauri/icons/icon.ico — sechs PNG-Rahmen 32/16/24/48/64/256 (Reihenfolge wie von `tauri icon` erzeugt)
apps/desktop/src-tauri/icons/32x32.png, 128x128.png, 128x128@2x.png — 32x32 / 128x128 / 256x256
CHANGELOG.md — ein neuer Stichpunkt unter Unveröffentlicht/Behoben
`tauri.conf.json` `bundle.icon` (Z. 34-40) listet genau diese fuenf Pfade — deshalb duerfen nur diese fuenf Dateien ersetzt werden und die Konfiguration bleibt unangetastet.
Quelle ist `apps/web/src/app/icon.svg` (viewBox 0 0 72 72; gelbe Kachel `<rect x="45" y="15" width="12" height="12" rx="2.5" transform="rotate(12 51 21)" fill="#ffed00">`). ImageMagick ohne rsvg-Delegat (nur MSVG) rendert den rotierten `<rect>` nicht; die Tauri-CLI (`tauri icon`) rendert mit resvg korrekt — deshalb Tauri-CLI, nie `magick icon.svg`.
Ein bereits erzeugter und sichtgeprüfter Satz liegt im Session-Scratchpad `/tmp/claude-1000/-home-vicolab-projects-tessera-ctl/36238f40-3162-4b4a-9c11-56905a933eef/scratchpad/icons/`. Er enthaelt zusaetzlich android/, ios/, icon.icns, Square*.png, StoreLogo.png, 64x64.png — die gehoeren NICHT ins Repo. Kopiert werden nur die fuenf Dateinamen aus `bundle.icon`.
`apps/web/src/lib/changelog.test.ts` arbeitet mit einem eingebetteten Beispieltext, nicht mit der echten CHANGELOG.md — deshalb ist der scoped `grep`-Nachweis in Task 2 die eigentliche Pruefung des Eintrags.
Das Desktop-Client-Icon (Phase 18-04) zeigt eine „1“ statt des Tessera-T, weil der Icon-Satz mit ImageMagick erzeugt wurde und dessen interner MSVG-Renderer die um 12 Grad gedrehte gelbe Kachel rechts oben (`transform="rotate(12 51 21)"`) schlicht weglaesst. Die fuenf Icon-Dateien in `apps/desktop/src-tauri/icons/` werden durch einen mit der Tauri-CLI (`tauri icon`, Renderer resvg) erzeugten Satz ersetzt; die Konfiguration bleibt unveraendert. Dazu ein Stichpunkt im CHANGELOG.

Purpose: Das App-Symbol unter Windows/Linux (Taskleiste, Fenster, Installer) soll die Tessera-Bildmarke zeigen, nicht ein Fragment davon. Output: Fuenf ersetzte Binaerdateien unter apps/desktop/src-tauri/icons/, ein CHANGELOG-Stichpunkt, zwei Commits.

<execution_context> @/.claude/gsd-core/workflows/execute-plan.md @/.claude/gsd-core/templates/summary.md </execution_context>

@/home/vicolab/projects/tessera-ctl/CLAUDE.md @/home/vicolab/projects/tessera-ctl/apps/web/src/app/icon.svg @/home/vicolab/projects/tessera-ctl/apps/desktop/src-tauri/tauri.conf.json @/home/vicolab/projects/tessera-ctl/CHANGELOG.md Task 1: Die fuenf Icon-Dateien durch den resvg-Satz der Tauri-CLI ersetzen 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 - apps/desktop/src-tauri/tauri.conf.json Z. 34-40 (`bundle.icon`: die fuenf Pfade, die ersetzt werden — und NUR diese) - apps/web/src/app/icon.svg (Quelle; eine Zeile, viewBox 0 0 72 72, gelbe Kachel mit `rotate(12 51 21)`) Der Befund ist verifiziert, nicht erneut untersuchen. Ziel ist ausschliesslich, die fuenf Dateien aus `bundle.icon` durch resvg-gerenderte Versionen zu ersetzen.
1. Quelle des neuen Satzes bestimmen. Bevorzugt: das Session-Scratchpad `/tmp/claude-1000/-home-vicolab-projects-tessera-ctl/36238f40-3162-4b4a-9c11-56905a933eef/scratchpad/icons/`, sofern dort alle fuenf Dateinamen `icon.png`, `icon.ico`, `32x32.png`, `128x128.png`, `128x128@2x.png` vorhanden sind (Satz wurde bereits sichtgeprüft). Fallback, falls das Scratchpad fehlt oder unvollstaendig ist: ein frisches Unterverzeichnis im Scratchpad anlegen (z. B. `.../scratchpad/icons-neu/`) und dort mit `cd /home/vicolab/projects/tessera-ctl && pnpm --filter @tessera/desktop exec tauri icon "$(pwd)/apps/web/src/app/icon.svg" -o <dieses Verzeichnis>` neu erzeugen (Tauri-CLI 2.11.3 ist installiert; absoluten SVG-Pfad uebergeben, weil `pnpm --filter` das Arbeitsverzeichnis nach `apps/desktop` wechselt). Das Ausgabeverzeichnis liegt in beiden Faellen AUSSERHALB des Repos — nie `-o apps/desktop/src-tauri/icons`, sonst landen icon.icns, 64x64.png, android/, ios/, Square*.png und StoreLogo.png im Repo.

2. Genau die fuenf Dateien per `cp` aus dem Quellverzeichnis nach `apps/desktop/src-tauri/icons/` kopieren (bestehende Dateien ueberschreiben). Keine weiteren Dateien kopieren, nichts loeschen, keine Umbenennung.

3. Sichtpruefung: `apps/desktop/src-tauri/icons/icon.png` mit dem Read-Tool oeffnen und bestaetigen, dass rechts oben die gelbe, leicht gedrehte Kachel sichtbar ist und die Figur ein T ergibt (zwei olivfarbene Kacheln oben links, gelbe Kachel oben rechts, Stamm aus zwei Kacheln darunter). Zeigt das Bild weiterhin nur eine „1“, ist das Quellverzeichnis falsch — dann Schritt 1 mit dem Fallback wiederholen.

4. `tauri.conf.json`, Web-Dateien und Rust-Code bleiben unangetastet. Kein `tauri build`, kein Docker.

Commit nach gruenem Gate: `fix(desktop): App-Icon-Satz mit resvg (tauri icon) neu erzeugt – gedrehte gelbe Kachel wieder vorhanden, T statt 1` mit genau den fuenf Icon-Dateien.
cd /home/vicolab/projects/tessera-ctl && D=apps/desktop/src-tauri/icons && N="$(git diff --name-only 10a69ae -- "$D")" && U="$(git status --porcelain -- "$D")" && [ "$(magick identify -format '%w\n' "$D/icon.ico" | sort -n | tr '\n' ' ')" = "16 24 32 48 64 256 " ] && [ "$(magick identify -format '%wx%h' "$D/icon.png")" = "512x512" ] && [ "$(magick identify -format '%wx%h' "$D/32x32.png")" = "32x32" ] && [ "$(magick identify -format '%wx%h' "$D/128x128.png")" = "128x128" ] && [ "$(magick identify -format '%wx%h' "$D/128x128@2x.png")" = "256x256" ] && [ "$(magick "$D/icon.png" -depth 8 -format '%[hex:p{363,149}]' info:)" = "FFED00FF" ] && [ "$(magick "$D/128x128.png" -depth 8 -format '%[hex:p{91,37}]' info:)" = "FFED00FF" ] && magick "$D/icon.ico" -depth 8 -format '%w %[hex:p{181,75}]\n' info: | grep -q '^256 FFED00FF$' && [ "$(ls "$D" | wc -l)" = 5 ] && [ "$(printf '%s\n' "$N" | wc -l)" = 5 ] && ! printf '%s\n' "$U" | grep -q '^??' && git diff --quiet 10a69ae -- apps/desktop/src-tauri/tauri.conf.json apps/desktop/src-tauri/src apps/web && echo ICON-GATE-OK Gate druckt `ICON-GATE-OK` (laeuft vor UND nach dem Commit gleich, Baseline ist der Ausgangs-Commit `10a69ae`): icon.ico hat genau die sechs Rahmen 16/24/32/48/64/256, die vier PNGs haben ihre Sollgroessen, an der Kachelmitte ist in icon.png, 128x128.png und im 256er-Rahmen von icon.ico die Farbe `FFED00FF` (vorher `1A1A1AFF`), das Verzeichnis enthaelt weiterhin genau fuenf Dateien, gegenueber `10a69ae` sind genau fuenf Dateien unter icons/ veraendert, nichts Untracked unter icons/, und tauri.conf.json, Rust-Quellen und apps/web sind gegenueber `10a69ae` unveraendert. Sichtpruefung per Read-Tool: T mit gelber gedrehter Kachel rechts oben. Commit mit den fuenf Dateien erstellt. Task 2: CHANGELOG-Stichpunkt unter Unveröffentlicht / Behoben CHANGELOG.md - CHANGELOG.md Z. 5-28 (`## Unveröffentlicht` mit den Rubriken Neu / Geändert / Entfernt / Behoben; Stil der Stichpunkte: „Bereich: kurzer Satz“, kein Punkt am Ende, echte Umlaute, typografische Anfuehrungszeichen „…“) In CHANGELOG.md im Abschnitt `## Unveröffentlicht`, Rubrik `### Behoben` (derzeit drei Stichpunkte, Z. 25-27), als NEUEN LETZTEN Stichpunkt direkt nach `- „Was ist neu“ und Notiz-Ansicht: Aufzählungspunkte wieder sichtbar` genau diese Zeile einfuegen:
`- Desktop-App: Symbol zeigte eine „1“ statt des Tessera-T – die gedrehte gelbe Kachel fehlte`

Typografische Anfuehrungszeichen „ und “ (U+201E / U+201C) wie im Bestand, Halbgeviertstrich – (U+2013), kein Punkt am Ende, kein Fliesstext, keine zweite Zeile. Die Leerzeile vor `## 1.1.0 – 2026-09-16` bleibt erhalten. Keine anderen Rubriken oder Versionen anfassen, keine neue Rubrik anlegen.

Commit: `docs: CHANGELOG – Desktop-Symbol-Korrektur unter Unveröffentlicht` mit nur CHANGELOG.md.
cd /home/vicolab/projects/tessera-ctl && L='- Desktop-App: Symbol zeigte eine „1“ statt des Tessera-T – die gedrehte gelbe Kachel fehlte' && sed -n '/^## Unveröffentlicht/,/^## 1\.1\.0/p' CHANGELOG.md | sed -n '/^### Behoben/,/^## /p' | grep -Fxq -e "$L" && [ "$(grep -Fx -e "$L" CHANGELOG.md | wc -l)" = 1 ] && [ "$(grep -n 'Tessera-T' CHANGELOG.md | wc -l)" = 1 ] && git diff --quiet 10a69ae -- apps/desktop/src-tauri/tauri.conf.json apps/web && pnpm --filter @tessera/web exec vitest run src/lib/changelog.test.ts && echo CHANGELOG-GATE-OK Gate druckt `CHANGELOG-GATE-OK`: der Stichpunkt steht genau einmal in der Datei (Zeilen-Nachweis per `grep -Fx … | wc -l`, `grep -n 'Tessera-T'` liefert genau eine Zeile), und zwar innerhalb von `## Unveröffentlicht` → `### Behoben`; tauri.conf.json und apps/web unveraendert gegenueber `10a69ae`; changelog.test.ts bleibt gruen (10 Tests, ca. 2 s). Commit mit CHANGELOG.md erstellt. Hinweis: `grep` braucht `-e "$L"`, weil die Zeile mit `- ` beginnt und sonst als Option gelesen wird.

<threat_model>

Trust Boundaries

Boundary Description
Scratchpad → Repo Binaere Icon-Dateien aus einem Session-Temp-Verzeichnis werden ins Repo uebernommen
SVG → Renderer tauri icon (resvg) liest die Repo-eigene icon.svg; keine Netzwerkquelle

STRIDE Threat Register

Threat ID Category Component Severity Disposition Mitigation Plan
T-e15-01 Tampering apps/desktop/src-tauri/icons/* (Binaerdateien) low mitigate Groessen-, Rahmen- und Pixel-Gate in Task 1 (Kachelmitte muss FFED00FF sein) plus Sichtpruefung per Read-Tool; Fallback ist die Neuerzeugung aus der Repo-eigenen SVG mit der bereits installierten Tauri-CLI
T-e15-02 Tampering Repo-Umfang low mitigate Gate prueft `ls
T-e15-SC Tampering npm/pip/cargo installs low accept Keine Paketinstallation; @tauri-apps/cli 2.11.3 ist bereits im Lockfile und in apps/desktop/node_modules/.bin vorhanden
</threat_model>
- Task-1-Gate `ICON-GATE-OK` und Task-2-Gate `CHANGELOG-GATE-OK` jeweils gruen. - `git log --oneline -2` zeigt die beiden Commits (fix(desktop) …, docs: CHANGELOG …); `git status` danach sauber bis auf `.planning/`. - Sichtpruefung von `apps/desktop/src-tauri/icons/icon.png` per Read-Tool: Tessera-T mit gelber, gedrehter Kachel rechts oben. - Nicht Teil dieses Plans: `tauri build`, Docker-Build, Deploy, Testserver, `git push`.

<success_criteria>

  • Die fuenf Icon-Dateien aus bundle.icon sind resvg-gerendert (Pixel-Gate FFED00FF an der Kachelmitte in drei Dateien) und zeigen das T statt einer 1.
  • Keine weitere Datei im Repo veraendert oder hinzugefuegt (tauri.conf.json, apps/web, Rust, zusaetzliche Icon-Formate).
  • CHANGELOG.md hat unter ## Unveröffentlicht → ### Behoben genau einen neuen Stichpunkt zur Desktop-Symbol-Korrektur.
  • Zwei Commits, kein Push. </success_criteria>
Create `/home/vicolab/projects/tessera-ctl/.planning/quick/260917-e15-desktop-client-icon-fehlende-gedrehte-ge/260917-e15-SUMMARY.md` when done