claude-desktop/TEST-ROADMAP.md
Eddy 79b8525ede Bugfixes: Resume, Tool-Whitelist, Sub-Agent-Tree, UI-Polish
Bridge (claude-bridge.js):
- Resume-Fix: queryOptions.resume statt .sessionId (SDK-API)
- tools-Whitelist statt disallowedTools (Blacklist vererbt sich auf Sub-Agents!)
  Handlanger: Main nur Task+TodoWrite, Sub-Agents bekommen volles Tool-Set
  Experten: Main nur Task+TodoWrite+Read+Grep+Glob
  Solo: preset claude_code
- handleToolUse/handleToolResult Helper, greifen auch in assistant.content-Bloecken
  (SDK liefert tool_use/tool_result nicht als standalone events)
- Dedup via handledTools Set
- Resume-Retry-Fallback bei ungueltiger Session-ID
- Custom agents-Option entfernt (SDK spawnt Sub-Agents ohne Tools → Halluzination)
- Orchestrator-Prompt: verweist auf general-purpose (vollstaendiges Tool-Set)

Backend (claude.rs):
- claude_session_id NUR beim 1. Mal setzen (sonst verliert man History)
- Generic event emit fuer alle Bridge-Events ans Frontend
- Mode-Persistenz bei Bridge-Start (agent_mode aus DB laden)

Knowledge (knowledge.rs):
- MYSQL_HOST: 192.168.155.1 → 192.168.155.11 (MariaDB-Server)
- MYSQL_PASS: claude → 8715
- category Option<&str> Typ-Annotation fuer exec_map

Programs (programs.rs):
- xvfb_screenshot: Fallback scrot → import (ImageMagick) → ffmpeg

Voice (voice.rs):
- Part::file (existiert nicht) → Part::bytes, keine Temp-Datei

Frontend:
- events.ts: mode-changed Listener, result.text Fallback,
  addAgent({id}) fuer korrekte Parent-Child-Verknuepfung
- ChatPanel: Copy-Button, Typing-Dots in Bubble (kein Doppel-Header),
  $effect statt $:, onkeydown statt on:keydown
- AgentView: "Nur aktive" Toggle, Delegations-Badge, Tool-Count hidden bei 0,
  agentMode Import
- ProgramsPanel: Button-Styling, Error-Banner mit Copy-Button,
  selectable Text
- MonitorPanel: Filter-Dropdown Styling (Hintergrund + Hover)
- SettingsPanel: changeMode() wird beim Klick aufgerufen (nicht nur Store)
- +layout.svelte: agent_mode beim App-Start laden, Mode-Badge im Footer,
  🎓-Button fuer Schulungsfenster
- +page.svelte: Programme-Tab + Hooks-Tab

Neue Dateien:
- TEST-ROADMAP.md — Status und naechste Schritte
- .gitignore erweitert (scheduled_tasks.lock, out/, node_modules)
- vscode-extension/tsconfig.json: include nur src/, exclude node_modules

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-14 21:24:51 +02:00

75 lines
4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Claude Desktop — Test-Roadmap (Fortsetzung)
**Stand:** 14.04.2026 · Session-Ende nahe Token-Limit
## Was bereits getestet & funktioniert
- ✅ Hooks-Panel: 5 Built-in Hooks sichtbar & toggelbar
- ✅ D-Bus: 80+ Services laden (Programme → D-Bus)
- ✅ Schulungs-Fenster öffnet via 🎓-Button
- ✅ Modus-Auswahl in Settings + Footer-Badge
- ✅ Chat funktioniert (nach Bridge-Fixes: `resume` statt `sessionId`, claude_session_id nur bei erstem Call setzen)
- ✅ Sub-Agent erscheint im Tree (nach `addAgent({id})` Fix)
- ✅ Sub-Agent "Nur aktive" Toggle
- ✅ Filter-Dropdown im Monitor-Panel sichtbar
- ✅ Copy-Button in Chat-Nachrichten
- ✅ Error-Banner mit kopierbarem Text im Programme-Panel
## Offene Bugs (Reihenfolge der Priorität)
### 1. Chat-Antwort bei komplexen Flows fehlt (HALB GEFIXT)
**Symptom:** Bei Handlanger-Chats mit Sub-Agent wird die finale Antwort nicht im Chat angezeigt.
**Ursache:** Streaming-Text-Events kommen nicht, nur `result.text` am Ende.
**Fix (drin):** Fallback in `events.ts` auf `result.text` wenn `content` leer.
**Zu verifizieren:** Nächster Chat im Handlanger-Modus — erscheint jetzt die Antwort?
### 2. Date-Panic in Wissensbasis
**Symptom:** `Couldn't convert Row... Date(...) to String` bei jeder Wissens-Suche / Tool-Hints.
**Ursache:** MySQL liefert TIMESTAMP als `Value::Date`, Tupel erwartet `String`.
**Fix:** 7 SELECTs in [knowledge.rs](src-tauri/src/knowledge.rs) einzeln auf `chrono::NaiveDateTime` umstellen.
**Nicht:** `replace_all` auf "created_at, updated_at" — das zerstört Rust-Tupel-Identifier (schon 1× passiert).
### 3. VSCodium-Extension nicht getestet
**Was zu tun:**
- `cd vscode-extension && npm run compile` (bereits OK)
- VSCodium öffnen, Extension via F5 in Dev-Host laden
- App: Programme → 🧩 VSCodium → Port 7890 → Verbinden
- Ping-Test, Datei öffnen
### 4. Xvfb-Screenshot fehlt Tool
**Status:** Xvfb-Start funktioniert, Screenshot braucht `imagemagick` (scrot/ffmpeg-x11 fehlen in NixOS-Build).
**Fix:** `imagemagick` in `/etc/nixos/configuration.nix``nixos-rebuild switch`.
### 5. Experten-Modus nicht getestet
**Analog zu Handlanger:** neue Session, Experten-Modus, Aufgabe mit Research/Implement-Charakter.
### 6. Haiku-Kostenersparnis funktioniert nicht
**Status:** Sub-Agents laufen auf Opus (inherit vom Main). Custom `agents`-Option in SDK scheint ignoriert zu werden bzw. spawnt Agents ohne Tools (halluziniert).
**Nächster Ansatz:** Im Orchestrator-Prompt Claude explizit vorgeben `model: "haiku"` in Task-Calls zu setzen. Ob das SDK das respektiert, ist offen.
## Uncommitted Changes (alles sinnvolle Fixes — lohnt sich zu committen)
- `scripts/claude-bridge.js` — resume-Fix, tools-Whitelist, handleToolUse/Result Helper, Dedup
- `src-tauri/src/claude.rs` — claude_session_id nur 1× setzen, generic event emit
- `src-tauri/src/knowledge.rs` — IP+PW korrekt (155.11/8715)
- `src/lib/stores/events.ts` — mode-changed Listener, result.text Fallback, addAgent({id})
- `src/lib/components/ChatPanel.svelte` — Copy-Button, Typing-Dots in Bubble (kein Doppel-Header)
- `src/lib/components/AgentView.svelte` — Nur-aktive-Toggle, Delegations-Badge, Tool-Count hidden bei 0
- `src/lib/components/ProgramsPanel.svelte` — Error-Banner mit Copy
- `src/lib/components/MonitorPanel.svelte` — Filter-Dropdown Styling
- `src/routes/+layout.svelte` — agent_mode beim Start laden
- `src/routes/+page.svelte` — Tabs Programme + Hooks
## Schnellstart nach Neustart
```bash
cd "/mnt/17 - Entwicklungen/20 - Projekte/ClaudeDesktop"
CARGO_TARGET_DIR=/tmp/claude-desktop-target nix-shell --run "npx tauri dev"
# Dauert ~15s beim ersten Start nach Reboot wenn /tmp leer ist
```
## DB-Reset wenn Claude-Session-IDs veraltet
```bash
nix-shell -p sqlite --run 'sqlite3 "/home/data/.local/share/de.alles-watt-laeuft.claude-desktop/claude-desktop.db" "UPDATE sessions SET claude_session_id = NULL;"'
```
## Nächster Commit
Alles zusammen ein großer Bugfix-Commit mit Titel:
> Fix: Resume, tools-Whitelist, Sub-Agent-Tree, Date-Handling, UI-Polish