- Session Auto-Load bei App-Start (aktive Session + Nachrichten)
- agent_id Spalte in messages-Tabelle für Agent-Zuordnung
- DbMessage Interface erweitert (agent_id)
- Session-Compacting: compact_session() fasst alte Nachrichten zusammen
- Standard: 30 letzte Nachrichten behalten, Rest als Summary
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Code-Blöcke mit Copy-Button (📋) und Sprach-Label
- Nachrichten bearbeiten (✏️) mit Speichern & Senden
- Antwort regenerieren (🔄) für letzte Assistant-Nachricht
- Custom marked-Renderer für Code-Block-Wrapper
- MutationObserver für Streaming-kompatible Copy-Buttons
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Solo: Main macht alles, keine Subagents (für Triviales)
- Handlanger: Main denkt, Subs führen exakt aus (Koordination)
- Experten: Jeder Agent plant selbst (parallelisierbar)
Einstellbar in UI:
- Settings: Agent-Modus Dropdown
- Auto-Modus wählt basierend auf Komplexität
- Footer zeigt aktiven Modus
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Position: Schicht 1 im System Prompt, Schicht 2 als letzter Reminder
- Explizite Anweisungen mit <critical-context> Tags
- validateResponse() für Kontext-Ignorierung erkennen
- Auto-Retry mit Korrektur-Hinweis
- context_failures Tabelle für Feedback-Loop
- UI-Warnung bei Regel-Verletzung
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Tray-Icon zeigt App im System-Tray
- Kontextmenü: Fenster zeigen, Minimieren, Beenden
- Klick auf Tray-Icon zeigt Fenster
- Capabilities für Window-Operationen ergänzt
- Icon-Konfiguration in tauri.conf.json
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- 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>
- Neues SettingsPanel mit Modell-Auswahl (Haiku/Sonnet/Opus)
- Modell wird in SQLite persistiert (claude_model Setting)
- Bridge unterstützt set-model und get-models Commands
- Modell kann zur Laufzeit gewechselt werden
- Preisanzeige pro Modell im Settings-Panel
- Aktuelles Modell wird beim App-Start geladen
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- @anthropic-ai/claude-agent-sdk statt raw API oder CLI-Spawn
- query() Funktion mit async generator für Streaming
- OAuth-Auth funktioniert automatisch (Claude Max Abo)
- Opus 4.6 als Default, kein Rate-Limit, ~5s Antwort
- AbortController für STOPP-Button
- Kein CLI-Overhead, keine Hooks, kein MCP-Init
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- 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>
Haiku als Default — schnell und günstig für Tests. Sonnet/Opus
über CLAUDE_MODEL Env-Var oder später über Settings in der App.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Child-Objekt wurde am Ende von start_bridge() gedroppt — das schloss
die Pipes und beendete den Node-Prozess. Jetzt wird child im
ClaudeState gespeichert und lebt solange die App läuft.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
current_dir() auf Projektroot setzen damit Node.js die
node_modules/@anthropic-ai/sdk findet.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- @anthropic-ai/sdk statt Claude CLI — kein Hook/MCP/Plugin-Overhead
- OAuth-Token automatisch aus ~/.claude/.credentials.json geladen
- Streaming via messages.stream() — Text erscheint sofort
- Conversation-History für Multi-Turn (clear-history Befehl)
- AbortController für sofortigen STOPP
- Kosten-Berechnung pro Request
- API-Key auch per set-api-key Befehl oder ANTHROPIC_API_KEY Env-Var
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- 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>
Eigene Resize-Implementierung komplett ersetzt durch PaneForge Library:
- Getestet, Svelte 5 kompatibel, funktioniert in WebKitGTK
- autoSaveId für automatische Persistierung in localStorage
- minSize/maxSize pro Panel in Prozent
- Kein eigener Pointer-Event-Code mehr nötig
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Alle Panels nutzen jetzt feste px-Werte, das letzte Panel bekommt
den Restplatz über JS-Berechnung statt CSS 1fr. Dadurch kann der
Drag-Handle die Breite tatsächlich reduzieren.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Komplett neuer Ansatz: Handles sind absolut positionierte 8px-Elemente
über den Panel-Grenzen statt schmale Grid-Spalten. Behebt das Problem
dass WebKitGTK Mouse-Events auf engen Grid-Zellen nicht registriert.
- Handles position:absolute über kumulierten Panel-Breiten
- 8px breit, transparent, wird blau beim Hover
- Drag-Overlay (position:fixed) fängt Events während Drag
- document.addEventListener statt window für bessere Kompatibilität
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Grid hatte nur 4 Spalten-Werte für 7 Kinder — Handles wurden
in die nächste Zeile umgebrochen. Jetzt korrekt: panel 3px panel 3px ...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- 3 Resize-Handles zwischen den 4 Panels (Session/Chat/Aktivität/Agents)
- Mindestbreite 120px pro Panel
- Panel-Breiten werden in localStorage gespeichert und beim Neustart geladen
- Visuelles Feedback: Handle wird blau beim Hover/Drag
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>