Eddy
3993387977
Security-Fixes + UI-Verbesserungen: Stop-Button, Textfeld, Agent-Filter
...
Build AppImage / build (push) Has been skipped
Backend:
- Credentials aus Code entfernt → ENV-Variablen mit Fallback
- File-Traversal in Update-Download verhindert (Path-Sanitization)
- CLI-Injection bei D-Bus mit Whitelist-Validierung abgesichert
Frontend:
- Stop-Button dezenter (kleinere Schrift, gedämpftes Rot, kein Pulsieren)
- Stop löscht keine Session/Messages mehr — nur Agents stoppen
- Textfeld nicht mehr blockiert während Claude arbeitet (Einwände möglich)
- Agent-Filter "Nur aktive" wird in localStorage persistent gespeichert
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-20 03:18:39 +02:00
Eddy
f191cd062c
Feature: Kontext-Auslastung im Footer (X% ctx)
...
- Bridge: Token-Berechnung inkl. Cache (input + cache_read + cache_creation)
- Store: contextUsage + contextPercent (derived)
- Layout: Farbcodierte Anzeige (grün/gelb/rot bei 60%/80%)
- Tooltip zeigt absolute Token-Zahlen
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-04-15 13:40:34 +02:00
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
Eddy
314042a01f
Phase 11 Basis: Multi-Agent-Modi mit Tool-Filterung
...
Bridge (scripts/claude-bridge.js):
- allowedTools je nach Agent-Modus erzwingt Delegation
- Handlanger: nur Task + TodoWrite
- Experten: Task + TodoWrite + Read + Grep + Glob
- Solo/Auto: unveraendert
Backend (src-tauri/src/claude.rs):
- Mode-Persistenz: nach bridge-ready wird gespeicherter Modus gesetzt
- Catch-all Event-Handler: leitet unbekannte Bridge-Events generisch
ans Frontend weiter (subagent-started, monitor-event, mode-changed, ...)
UI (routes/+layout.svelte, stores/events.ts):
- Modus-Badge im Footer (Handlanger orange, Experten lila, Auto cyan)
- mode-changed Event-Listener synchronisiert agentMode Store
Bugfix voice.rs:
- reqwest::multipart::Part::file existiert nicht → auf Part::bytes umgestellt
- keine Temp-Datei mehr noetig
Bugfix knowledge.rs:
- Type-Annotation bei category Option<&str> fuer exec_map Inference
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-14 18:39:17 +02:00
Eddy
f51241efa6
Phase 10 Sprach-Interface + Phase 9 Nacharbeiten
...
Voice (Phase 10):
- voice.rs: OpenAI Whisper (STT) + TTS Backend
- ChatPanel: Mikrofon-Button, VAD (Pause 1.5s), Live-Pegel
- SettingsPanel: OpenAI-Key Konfiguration
Phase 9 Nacharbeiten:
- Auto-Extract vor Compacting (Entscheidungen/TODOs/Insights)
- get_tool_hints() - relevante KB-Eintraege bei Tool-Start
- activeKnowledgeHints Store, Anzeige im KnowledgePanel
Tech-Schulden:
- Dead-Code in memory.rs entfernt (MemorySystem struct)
- cargo-check Warnings behoben
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-14 18:24:28 +02:00
Eddy
be65dee04a
Claude-Session-ID für SDK-Fortsetzung
...
- events.ts: Session-ID aus claude-result speichern via set_claude_session_id
- claude.rs: load_claude_session_id() lädt ID der aktiven Session
- claude.rs: send_to_bridge_full() mit resumeSessionId Parameter
- claude-bridge.js: sendMessage() akzeptiert resumeSessionId
- Bridge nutzt sessionId in query() Optionen für SDK-Fortsetzung
Ermöglicht nahtlose Konversations-Fortsetzung auf SDK-Ebene.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-04-14 14:30:28 +02:00
Eddy
9d73684ece
Monitor-Events Backend-Persistierung in SQLite
...
- MonitorEvent Struct + CRUD-Methoden in db.rs
- monitor_events Tabelle mit Auto-Cleanup (7 Tage)
- Tauri Commands: save/load/clear_monitor_events
- Frontend: Events beim Start laden, beim Hinzufügen speichern
- Async clearMonitorEvents löscht auch DB-Einträge
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-04-14 14:22:31 +02:00
Eddy
adb11fd121
Phase 16: System-Monitor (Debug-Panel)
...
Neue Komponenten:
- MonitorPanel.svelte: Live-Event-Stream mit Farbcodierung
- MonitorEvent Store in app.ts (Ringbuffer max 1000)
Features:
- 🔵 API-Events (Request/Response, Token, Kosten, Latenz)
- 🟡 Tool-Events (Name, Parameter, Dauer)
- 🟠 Agent-Events (Start/Stop)
- 🔴 Error-Events
- Filter nach Event-Typ
- Auto-Scroll toggle
- Detail-Ansicht bei Klick
- Copy-Button für Details
- Statistik-Anzeige (API-Calls, Errors, Avg Latency)
claude-bridge.js:
- sendMonitorEvent() Funktion
- summarizeToolInput() für kompakte Zusammenfassung
- Events bei API-Start, API-Ende, Tool-Start, Fehler
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-04-14 12:40:29 +02:00
Eddy
6cfcdb2c79
Phase 5: Subagent-Hierarchie + ROADMAP erweitert
...
Subagent-Hierarchie:
- Agent Interface erweitert: parentAgentId, depth, model
- claude-bridge.js: Erkennt Task-Tool als Subagent-Start
- events.ts: Listener für subagent-started/stopped
- AgentView.svelte: Baumansicht mit Einrückung + Collapse
ROADMAP erweitert (Phase 5-16):
- Phase 5: Subagent-Hierarchie ✅
- Phase 6-9: Session, UI, Claude-DB, Context
- Phase 10: Sprach-Interface
- Phase 11: Multi-Agent-Modi (Solo/Handlanger/Experten)
- Phase 12: Hook-System
- Phase 13: VSCodium Integration
- Phase 14: Programm-Steuerung (Playwright, D-Bus)
- Phase 15: Schulungsmodus (Mermaid, animierter Code)
- Phase 16: System-Monitor (Debug-Panel)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-04-14 12:35:29 +02:00
Eddy
4ba14a53e1
Session-Historie: Nachrichten werden persistent gespeichert
...
- Neue messages-Tabelle in SQLite für Chat-Nachrichten
- save_message, load_messages, clear_messages Tauri-Commands
- User-Nachrichten werden beim Senden sofort gespeichert
- Assistant-Nachrichten werden nach Abschluss gespeichert
- Beim Session-Wechsel werden Nachrichten aus DB geladen
- currentSessionId Store für Session-Tracking
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-04-14 10:35:04 +02:00
Eddy
e09fb8815c
Statusleiste mit Token/Kosten + Modell-Badge + STOPP funktionsfähig
...
- Titlebar: Token in/out, Kosten, Modell-Badge (z.B. "Opus 4.6")
- sessionStats Store: kumulierte Token/Kosten pro Session
- STOPP-Button ruft invoke('stop_all_agents') auf
- Escape-Hotkey zum Stoppen
- Kompakteres Layout
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-13 22:14:46 +02:00
Eddy
03f84ceb56
Modellname im Chat anzeigen + Opus 4 als Default
...
- ChatPanel: Zeigt Modellname statt "Claude" (z.B. "opus-4", "haiku-4-5")
- Modell-Info kommt aus dem result-Event der Bridge
- Korrekter Modell-ID: claude-opus-4-20250514
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-13 21:21:40 +02:00
Eddy
df3b33a6ed
Live-Streaming im Chat — Text erscheint Wort für Wort
...
- events.ts: Leere Streaming-Nachricht bei agent-started anlegen,
claude-text Events schreiben direkt in die aktuelle Nachricht
- ChatPanel: Typing-Dots nur bei leerer/fehlender Streaming-Nachricht
- Kein Warten auf agent-stopped mehr — Text erscheint sofort
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-13 20:34:38 +02:00
Eddy
5003fb9996
Phase 2: Claude SDK Integration + Event-System
...
- claude-bridge.js: Node.js Bridge für Claude Code CLI
- claude.rs: Child-Process Management, Event-Verarbeitung
- events.ts: Frontend Event-Listener für Tauri-Events
- Layout/ChatPanel: Echte Tauri-Commands statt Placeholder
Events implementiert:
- agent-started/stopped
- tool-start/tool-end
- claude-text (Streaming)
- claude-result (Kosten/Token)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-04-13 14:43:34 +02:00