diff --git a/OFFENE-PUNKTE.md b/OFFENE-PUNKTE.md index a8a3b5a..a70174e 100644 --- a/OFFENE-PUNKTE.md +++ b/OFFENE-PUNKTE.md @@ -1,10 +1,20 @@ # Offene Punkte — bei jedem Start prüfen und abhaken -- [ ] **„Projekt hinzufügen" prüfen: verliert `archiveHome`.** - Verdacht: Der Add-Projekt-Pfad schreibt die `ai-control.json` neu und lässt - `archiveHome` fallen, statt die bestehende Config zu übernehmen. +- [x] **„Projekt hinzufügen" verliert `archiveHome` — Ursache gefunden, behoben.** + Der Verdacht (Add-Projekt-Pfad) war falsch. Ursache war ein verlustbehafteter + Config-Round-Trip: `read_project_config_in` deserialisiert in `ProjectConfig`, + serde verwirft dabei still jeden unbekannten Key, und `write_project_config_in` + schreibt die Datei komplett neu. Geschrieben hat die Pool-Zuweisung + (`ProjectList.vue:113` → `assign_pool_in`), ausgeführt von einem **älteren + Build ohne das Feld `archive_home`** — daher der Halbzustand mit erhaltener + Berechtigung in `.claude/settings.json` (anderer Schreibpfad). - Befund 2026-07-19 (claude-ai-control): + Fix: `#[serde(flatten)] rest` in `ProjectConfig` reicht unbekannte Keys + unverändert durch; Regressionstest `pool_zuweisen_erhaelt_fremde_keys`. + Einschränkung: Die Versionsdifferenz ist aus Zeitstempeln erschlossen, das + alte Binary war schon überschrieben. Der Defekt selbst ist am Code belegt. + + Ursprünglicher Befund 2026-07-19 (claude-ai-control): - `archive/` existiert seit 21:03 samt Testdokument, war also gesetzt. - `.claude/settings.json` hat den Eintrag noch: `additionalDirectories: ~/claude-projects/claude-ai-control/archive` @@ -14,10 +24,26 @@ `clear_project_archive_home` (archive.rs:96-104) nimmt beides zurück. - Folge: `panel-wiring.ts:45` blendet Wiki- und Suche-Tab aus. - Zu prüfen: Schreibpfade auf `PROJECT_FILE` in `domain/project.rs` + Zu prüfen war: Schreibpfade auf `PROJECT_FILE` in `domain/project.rs` (`write_project_config_in`, project.rs:81) — welcher davon eine frische Config ohne `archive_home` schreibt. +- [ ] **Command-History braucht eine Identität statt Indizes.** + Aufgefallen beim Fix von `commands_delete` (Panik bei Doppelklick, Löschen + der falschen Kachel). Der Fix schickt jetzt den Befehlstext mit und gleicht + serverseitig ab — das verhindert Schaden, ist aber nur ein Notnagel: Zwei + identische Befehle im selben Record sind nicht unterscheidbar, und die + Panel-Indizes hinken der Datei weiter um bis zu ein Watcher-Intervall + (200 ms) hinterher. Sauber wäre eine ID je Eintrag beim Schreiben. + +- [ ] **`csp: null` in `tauri.conf.json` ersetzen.** + Aufgefallen beim XSS-Fix: Es gibt keine zweite Schranke. Das Panel liegt im + selben Webview wie das Terminal, dessen `term_write` die PTY über das + Fensterlabel adressiert — eingeschleustes Skript könnte in die laufende + Shell schreiben. Das Markdown-Rendering ist jetzt entschärft + (`src/markdown.ts`), aber eine echte CSP wäre die Schranke dahinter. + Braucht eine Runde Prüfen, was inline benötigt wird (Themes, xterm). + - [ ] **Projekt-Artefakte im Projektordner bündeln (`.ai-control/`?).** `ai-control.json` und das Projekt-Icon liegen heute lose im Projektordner. Idee: beides in ein Unterverzeichnis (z. B. `.ai-control/`) zusammenziehen,