diff --git a/OFFENE-PUNKTE.md b/OFFENE-PUNKTE.md index 80d214b..10efb40 100644 --- a/OFFENE-PUNKTE.md +++ b/OFFENE-PUNKTE.md @@ -1,72 +1,44 @@ # Offene Punkte — bei jedem Start prüfen und abhaken -Erledigt und rausgeräumt (2026-07-20, Details in der Git-Historie): Umbau auf -`.ai-control/config.json` mit Projekt-UUID + Name (Registry maschinenlokal -inkl. Pool, Icon im Projekt, Migration beim Start, Import-Prüfung); -Settings-Dialog-Redesign (Gruppen, fester Kopf/Fuß, feste Höhe); -Sicherheitsrunde II: `term_start`-Label-Prüfung, `archive_panel` ohne `dir`, -`write_panel(path)` mit Allowlist + 2-MB-Limit, `write_atomic` überall, -`write_secret_file` mit `create_new`+0600, PTY-Env ohne ANTHROPIC-Keys, -`check_name` in den Panel-Pfaden, Bidi-Filter in den Befehlskacheln. - -Die ACL-Frage aus der Sicherheitsrunde ist entschieden (gegen tauri 2.11.5 -verifiziert): **Die Fenster-ACL greift für App-Commands nicht** — ohne -`__app-acl__`-Manifest prüft Tauri eigene Commands bei lokalem Origin gar -nicht; die `windows`-Liste in den Capabilities beschränkt nur die -Plugin-Permissions. Daraus folgt der erste Punkt unten. +Zuletzt erledigt (2026-07-20 nachmittags, Details in der Git-Historie beider +Repos): CSP gesetzt (`default-src 'self'` + ipc, devCsp getrennt); +App-ACL-Manifest eingeführt — deny-by-default, vier Capabilities pro Fenster +(main/popup/term-*/panel-*), neue Commands brauchen build.rs **und** +Capability-Eintrag; Projekt-Löschen in drei Stufen mit Artefakt-Vorschau +(integration/archive/full); Command-History mit stabilen IDs; +`write_app_setting`-Lesepfad, Pool-Round-Trip, Archiv per `create_new`; +Listen-Scroll (Toolbars stehen). ## Entscheidungen nötig -- [ ] **App-ACL-Manifest einführen?** Jedes Fenster darf derzeit jedes - App-Command rufen (`delete_project`, `set_archive_home_cmd`, …); - abgesichert ist nur der PTY-Pfad (Label-Prüfung in `term_start`). - Ein App-Manifest (eigene Permissions pro Command, in den Capabilities - pro Fenster zugeteilt) wäre die strukturelle Antwort — spürbarer - Umbau, Umfang festlegen. - -- [ ] **`csp: null` in `tauri.conf.json` ersetzen.** Zweite Schranke hinter - dem Markdown-Sanitizer; braucht eine Runde Prüfen, was inline nötig ist - (Themes, xterm). Schon `default-src 'self'` schnitte auswärtige - Requests und Fremdnavigation ab. - - [ ] **Archiv-Ordner-Handling.** Beim Setzen explizit bestätigen statt still anlegen; Wechsel eines gesetzten Archiv-Homes braucht eine Migrationsmöglichkeit (Dokumente mitnehmen oder liegen lassen). Kritisch: echte Nutzerdaten, nichts implizit verschieben. -- [ ] **Projekt sauber löschen.** Alle Ressourcen des Projekts entfernen - (Config, Icon, Archiv-Rechte in `.claude/settings.json`, - Registry-Eintrag) — mit Vorschau, was entfernt wird. Umfang festlegen. - - [ ] **macOS: API-Key kurz in der `security`-Kommandozeile sichtbar** - (`macos.rs`, `ps`-sichtbar). Bewusst zurückgestellt, bis eine - macOS-Session zum Testen verfügbar ist. + (`macos.rs`, `ps`-sichtbar). Vertagt, bis eine macOS-Session zum + Testen verfügbar ist. -## Go genügt (Weg ist klar) +## Beobachten (nach den Umbauten vom 2026-07-20) -- [ ] **Command-History: stabile ID je Eintrag.** Der cmd-Text-Abgleich in - `commands_delete` ist ein Notnagel; ID beim Schreiben der JSONL - vergeben, Panel löscht über die ID. +- [ ] CSP + App-ACL im Alltag: tote Buttons oder fehlende Anzeigen wären + eine vergessene Capability-Zuteilung bzw. CSP-Fallout; die genaue + Ablehnung steht im Terminal-Log des Debug-Builds. +- [ ] Lösch-Dialog Stufe „nur Integration" erst an einem Wegwerf-Projekt + durchspielen. +- [ ] `style-src 'unsafe-inline'` später härten: die Inline-`