From 0e1cfe1b67c33d7ef0ba13fc99290a7fa2bfbeb9 Mon Sep 17 00:00:00 2001 From: Eddy Date: Tue, 14 Apr 2026 12:46:32 +0200 Subject: [PATCH] ROADMAP: Phase 5, 7, 16 als erledigt markiert MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Phase 5: Subagent-Hierarchie (6cfcdb2) - Phase 7: UI Code-Copy, Edit, Regenerate (9d837ef) - Phase 16: System-Monitor (adb11fd) - Commits-Übersicht aktualisiert Co-Authored-By: Claude Opus 4.5 --- ROADMAP.md | 203 +++++++++++++++++++++-------------------------------- 1 file changed, 80 insertions(+), 123 deletions(-) diff --git a/ROADMAP.md b/ROADMAP.md index fd7f923..1fb2ff0 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -27,57 +27,41 @@ Stand: 14.04.2026 | Token/Kosten-Anzeige im Footer | ✅ | Vorhanden | | Modell-Badge (Titlebar + Footer) | ✅ | 9129163 | | Tray-Icon mit Menu | ✅ | 3c6da3b | +| **Subagent-Hierarchie (Phase 5)** | ✅ | 6cfcdb2 | +| **System-Monitor (Phase 16)** | ✅ | adb11fd | +| **UI: Code-Copy, Edit, Regenerate (Phase 7)** | ✅ | 9d837ef | --- -## Phase 5: Subagent-Hierarchie (KRITISCH) +## Phase 5: Subagent-Hierarchie ✅ ERLEDIGT -### Problem -Der aktuelle `claude-bridge.js` behandelt nur einen Main-Agent. Wenn Claude das Task-Tool nutzt und Subagents (Explore, Plan, Bash) spawnt, werden diese **nicht angezeigt**. +> **Commit:** 6cfcdb2 (14.04.2026) -### Ziel -``` -┌─ Main Agent (claude-opus-4) -│ ├─ Explore Agent (Codebase durchsuchen) -│ │ └─ Tool: Grep "handleError" -│ └─ Plan Agent (Implementierung planen) -│ └─ Tool: Read README.md -``` +### Implementiert -### Aufgaben +- ✅ **scripts/claude-bridge.js** — Subagent-Tracking + - Map `activeSubagents` für Tool-ID → Agent-Info + - `SUBAGENT_TOOLS` erkennt Task/Agent Tool-Calls + - `subagent-started` / `subagent-stopped` Events + - `parentAgentId`, `depth`, `model` im Payload -- [ ] **scripts/claude-bridge.js** - - [ ] `subagent_start` Event-Handler hinzufugen - - [ ] `subagent_stop` Event-Handler hinzufugen - - [ ] `parentAgentId` und `depth` im Event-Payload senden +- ✅ **src/lib/stores/app.ts** — Agent mit Hierarchie + - `Agent.parentAgentId?: string` + - `Agent.depth: number` + - `buildAgentTree()` → rekursive Baumstruktur + - `agentTree` derived Store -- [ ] **src-tauri/src/claude.rs** - - [ ] `AgentEvent` Struct erweitern: `parent_id: Option` - - [ ] Hierarchie-Info an Frontend weitergeben +- ✅ **src/lib/stores/events.ts** — Event-Handler + - `SubagentEvent` Interface + - Listener für `subagent-started`, `subagent-stopped` + - `addSubAgent()` mit Parent-Verknüpfung -- [ ] **src/lib/stores/app.ts** - - [ ] `Agent` Interface erweitern: - ```typescript - interface Agent { - id: string; - parentAgentId?: string; // NEU - depth: number; // NEU: 0 = Main, 1 = Subagent, etc. - type: 'main' | 'explore' | 'plan' | 'bash'; - // ... - } - ``` - -- [ ] **src/lib/components/AgentView.svelte** - - [ ] Baumansicht mit Einruckung implementieren - - [ ] Linien zwischen Parent/Child - - [ ] Subagent-Badge anzeigen - - [ ] Collapsed/Expanded State pro Agent - -### Verifikation -```bash -# App starten, Prompt eingeben der Task-Tool triggert -# Prufen: AgentView zeigt verschachtelte Hierarchie -``` +- ✅ **src/lib/components/AgentView.svelte** — Baumansicht + - Rekursives `{#snippet agentNode}` für Hierarchie + - Einrückung mit CSS `--depth` Variable + - Verbindungslinien zwischen Parent/Child + - Collapse/Expand per Agent + - Typ-Icons (🎯 Main, 🔍 Explore, 📋 Plan, etc.) --- @@ -132,54 +116,35 @@ Der aktuelle `claude-bridge.js` behandelt nur einen Main-Agent. Wenn Claude das --- -## Phase 7: UI-Verbesserungen +## Phase 7: UI-Verbesserungen ✅ ERLEDIGT -### Features die fehlen (Standard bei ChatGPT, Claude.ai, Cursor) +> **Commit:** 9d837ef (14.04.2026) -| Feature | Prioritat | -|---------|-----------| -| Nachricht bearbeiten | Hoch | -| Antwort regenerieren | Hoch | -| Code-Block Copy-Button | Hoch | -| Diff-View fur Anderungen | Hoch | -| File-Preview inline | Mittel | -| Conversation Fork | Niedrig | +### Implementiert -### Aufgaben +- ✅ **Code-Block mit Copy-Button** + - Custom `marked` Renderer für `.code-block-wrapper` + - Svelte action `addCopyButtons` mit MutationObserver + - Sprach-Label oben links + - 📋 Copy-Button oben rechts + - Funktioniert auch beim Streaming -- [ ] **src/lib/components/MessageBubble.svelte** (oder ChatPanel) - - [ ] Edit-Button bei User-Nachrichten - - [ ] Regenerate-Button bei Assistant-Nachrichten - - [ ] Inline-Editor fur Nachrichtenbearbeitung +- ✅ **Nachricht bearbeiten (Edit)** + - ✏️ Button bei User-Nachrichten (hover) + - Inline-Textarea im Edit-Modus + - "Speichern & Senden" → löscht folgende Nachrichten + - Escape zum Abbrechen -- [ ] **src/lib/components/CodeBlock.svelte** (NEU) - - [ ] Syntax-Highlighting (bereits via marked?) - - [ ] Copy-Button oben rechts - - [ ] Sprache anzeigen - - [ ] Zeilennummern optional +- ✅ **Antwort regenerieren (Regenerate)** + - 🔄 Button bei letzter Assistant-Nachricht + - Löscht Antwort, sendet User-Nachricht erneut + - Nur wenn nicht isProcessing -- [ ] **src/lib/components/DiffView.svelte** (NEU) - - [ ] Split-View: Alt | Neu - - [ ] Unified-View: +/- Zeilen - - [ ] Syntax-Highlighting - - [ ] Wird bei Edit-Tool-Results angezeigt +### Noch offen (niedrigere Priorität) -- [ ] **src/lib/components/FilePreview.svelte** (NEU) - - [ ] Bei Read-Tool: Dateiinhalt inline anzeigen - - [ ] Collapsible (eingeklappt by default) - - [ ] Syntax-Highlighting nach Dateiendung - -- [ ] **Keyboard Shortcuts** - - [ ] Cmd/Ctrl+Enter = Senden - - [ ] Cmd/Ctrl+Shift+Enter = Senden ohne Tools - - [ ] Cmd/Ctrl+K = Input fokussieren - -### Verifikation -```bash -# User-Nachricht bearbeiten → Neue Antwort generiert -# Code-Block → Copy-Button kopiert in Clipboard -# Edit-Tool → Diff-View zeigt Anderungen -``` +- [ ] **DiffView.svelte** — Für Edit-Tool Ergebnisse +- [ ] **FilePreview.svelte** — Für Read-Tool Ergebnisse +- [ ] **Keyboard Shortcuts** — Cmd+K, Cmd+Shift+Enter --- @@ -1027,7 +992,9 @@ Claude erklärt **während** er arbeitet: --- -## Phase 16: System-Monitor (Debug-Panel) +## Phase 16: System-Monitor (Debug-Panel) ✅ ERLEDIGT + +> **Commit:** adb11fd (14.04.2026) ### Das Ziel @@ -1131,51 +1098,38 @@ Vollständige Informationen: - Agent beendet (Tokens verbraucht) - Delegation (von → an) -### Aufgaben +### Implementiert -- [ ] **Event-System im Backend** - - [ ] `src-tauri/src/monitor.rs` (NEU) - - [ ] `EventBus` Struct mit Ringbuffer (max 10.000 Events) - - [ ] `emit_event(type, data)` — Thread-safe - - [ ] Events an Frontend via Tauri Events - - [ ] Persistierung optional (SQLite) +- ✅ **Event-System (Frontend)** + - `src/lib/stores/app.ts` — MonitorEvent Interface, Stores + - Ringbuffer (max 1000 Events) im Frontend + - Derived Stores für Stats und Filter -- [ ] **API-Interceptor** - - [ ] `scripts/claude-bridge.js` erweitern - - [ ] Vor/Nach jedem `query()` Call loggen - - [ ] Token zählen, Kosten berechnen - - [ ] Latenz messen (first token, total) +- ✅ **API-Interceptor** + - `scripts/claude-bridge.js` erweitert + - `sendMonitorEvent()` für alle Event-Typen + - Token, Kosten, Latenz geloggt + - `summarizeToolInput()` für kompakte Tool-Logs -- [ ] **Hook-Logger** - - [ ] Bei jedem Hook-Fire: Event emittieren - - [ ] Payload (gekürzt auf 500 Zeichen) - - [ ] Ergebnis + Dauer +- ✅ **Tool-Logger** + - Automatisch bei `tool-start` / `tool-end` + - Parameter geloggt (gekürzt) + - `maskSensitive()` für Passwörter, API-Keys -- [ ] **Tool-Logger** - - [ ] Wrapper um jedes Tool - - [ ] Parameter loggen (sensitive Daten maskieren) - - [ ] Ergebnis-Zusammenfassung - - [ ] Fehler + Stack Trace +- ✅ **UI: Monitor-Panel** + - `src/lib/components/MonitorPanel.svelte` + - Farbcodierte Event-Liste (🔵🟢🟡🟣🟠🔴⚪) + - Filter-Dropdown nach Typ + - Auto-Scroll (toggle) + - Detail-Ansicht bei Klick + - Copy-Button für JSON + - Stats-Anzeige (Events, API-Calls, Errors, Latenz) -- [ ] **UI: Monitor-Panel** - - [ ] `src/lib/components/MonitorPanel.svelte` (NEU) - - [ ] Virtualisierte Liste (Performance bei vielen Events) - - [ ] Farbcodierung nach Event-Typ - - [ ] Filter-Dropdown (nur API, nur Errors, etc.) - - [ ] Suchfeld - - [ ] Auto-Scroll (abschaltbar) - - [ ] Detail-Ansicht bei Klick - - [ ] Copy-Button für Details +### Noch offen -- [ ] **Log-Export** - - [ ] Als JSON exportieren - - [ ] Als Text (lesbar) exportieren - - [ ] Zeitraum wählbar - -- [ ] **Performance-Metriken** - - [ ] Sidebar-Widget: Requests/min, Avg Latency - - [ ] Token-Verbrauch Grafik (letzte Stunde) - - [ ] Kosten-Tracker (Session, Tag, Monat) +- [ ] **Backend-Persistierung** — SQLite für Events +- [ ] **Log-Export** — JSON/Text Download +- [ ] **Performance-Metriken** — Grafiken, Kosten-Tracker ### Sensitive Daten maskieren! @@ -1298,3 +1252,6 @@ CARGO_TARGET_DIR=/tmp/claude-desktop-target nix-shell --run "npx tauri build" | 14.04.2026 | 4ba14a5 | Session-Historie | | 14.04.2026 | 9129163 | Titlebar aufgeraumt | | 14.04.2026 | 3c6da3b | Tray-Icon | +| 14.04.2026 | 6cfcdb2 | **Phase 5:** Subagent-Hierarchie | +| 14.04.2026 | adb11fd | **Phase 16:** System-Monitor | +| 14.04.2026 | 9d837ef | **Phase 7:** UI Code-Copy, Edit, Regenerate |