claude-desktop/CHANGELOG.md
Eddy ad9833fcb8
Some checks failed
Build AppImage / build (push) Has been cancelled
feat: Phase 8+9 — Inline Tool-Karten + komplettes UI-Redesign auf Cursor/Zed-Niveau [appimage]
Phase 8 (VS-Code-Look Chatbereich):
- Linksbuendige Messages mit Avatar-Spalte, Hover-Actions
- Inline Tool-Karten (Read/Edit/Bash/Generic) in Assistant-Messages
- Edit-Karten zeigen Diff direkt mit Accept/Reject
- Tool-Calls werden via events.ts an letzte Assistant-Message gebunden
- Smart-Sticky-Scroll (Auto-Scroll stoppt wenn User selbst scrollt)
- OOM-Bug durch MutationObserver mit subtree:true behoben

Phase 9 (Komplettes UI-Redesign):
- Design-System in app.css: 4 Graustufen, 1 Akzent (#007acc), 4 Status-Farben,
  5 Schriftgroessen (11/12/13/14/16), 4-Punkt-Spacing, 2 Radius-Werte
- vscode.css als Aliase auf das neue System
- UI-Library src/lib/ui/: Button, Card, Icon, Badge, StatusDot, Tooltip, Drawer, Tabs
- Lucide-svelte fuer SVG-Icons (ersetzt Emojis im Chrome)
- StatusBar (22px) ersetzt ueberfuellten Footer mit 6+ Stats
- Titlebar entruempelt: ✱-Logo + Stop + Schulungsmodus + Version
- 2-spaltiges Layout (Sidebar 240px + Hauptbereich) statt 4-Pane-Zerstueckelung
- ToolDrawer: 13 Panels in 4 Gruppen (Aktivitaet/Speicher/Werkzeuge/Einstellungen),
  jede Gruppe mit internen Tabs, Esc schliesst
- Cmd+K global oeffnet QuickActions als zentrale Navigation
- StatusDot-Komponente ersetzt Emoji-Status (🟢🟡🔴) in AgentView
- Hardgecodete Farben (#ef4444, #22c55e, #eab308 ...) in 9 Komponenten durch
  CSS-Variablen ersetzt

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-27 14:27:09 +02:00

15 KiB

Changelog

Alle nennenswerten Änderungen an Claude Desktop werden hier dokumentiert.

Format angelehnt an Keep a Changelog.


[Unreleased] - 2026-04-27

Hinzugefügt (Phase 9: UI-Redesign Schritt 2 — 2-spaltiges Layout + Drawer + Komponenten-Pass)

  • Sidebar.svelte (NEU): 240px-Sidebar mit Cmd+K-Suche oben, Sessions-Liste in der Mitte, Nav-Rail unten mit 4 Lucide-Icons (Aktivität/Speicher/Werkzeuge/Einstellungen) — ersetzt die alte separate SessionList-Pane
  • ToolDrawer.svelte (NEU): Rechts-eingeschobener 420px-Drawer mit internen Tabs pro Sektion — Activity (Live/Monitor/Kosten), Speicher (Gedächtnis/Wissensbasis/Kontext), Werkzeuge (Programme/Sprache/Agenten/Guard-Rails/Hooks), Einstellungen (Settings/Audit). Esc schließt
  • 2-spaltiges Layout in +page.svelte: das alte 4-Pane-PaneForge-Layout (Sessions/Chat/Mid-Tabs/Right-Tabs) ist aufgelöst. Jetzt: Sidebar (fix 240px) + ChatPanel (flex) + Drawer als Overlay. Kein Wirrwarr aus 13 nebeneinander liegenden Tabs mehr
  • Cmd+K global: globaler Listener im +page.svelte öffnet QuickActions; bestehender navigate-tab-Event mappt automatisch auf die richtige Drawer-Sektion
  • StatusDot in AgentView: 🟢 🟡 ⚪ 🔴-Emojis durch <StatusDot>-Komponente ersetzt — saubere CSS-Dots mit Pulse-Animation bei aktiven Agenten
  • Hardgecodete Farben raus in 9 Komponenten: #ef4444, #22c55e, #eab308, #f59e0b, #a855f7, #06b6d4, #a78bfa, #8b5cf6, #60a5fa durch var(--status-success/warning/error/info) und var(--accent) ersetzt — betroffen: GuardRailsPanel, AgentView, ChatPanel, PerformancePanel, ProgramsPanel, SettingsPanel, VoicePanel, IdePanel, AutoCorrectionModal, UpdateDialog
  • ChatPanel entkoppelt: lokaler Header (mit Spark-Icon, Stats, Detach) und ChatStatusBar entfernt — die Funktionen leben in der globalen Titlebar bzw. Statusbar. Im ChatPanel bleibt nur eine kompakte 28px-Toolbar mit Detach-Button

Hinzugefügt (Phase 9: UI-Redesign Schritt 1 — Design-System + Status-Bar)

  • Design-System in src/app.css: 4 Graustufen (--bg-primary/secondary/tertiary/input), 1 Akzent #007acc (VS-Code-Blau), 4 Status-Farben (--status-success/warning/error/info), 5 Schriftgrößen (--fs-xs/sm/md/lg/xl), 4-Punkt-Spacing (--sp-1..6), 2 Border-Radius-Werte (--r-sm/md); vorherige KDE-Breeze-Werte abgelöst
  • vscode.css als Aliase: src/lib/theme/vscode.css mappt --vscode-* Variablen auf das neue System — Phase-8-Komponenten laufen unverändert weiter
  • UI-Library src/lib/ui/: Button, Card, Icon (Lucide-Wrapper), Badge, StatusDot (CSS statt Emoji), Tooltip, Drawer (Esc-schließbar), Tabs — verbindliche Bausteine für alle Panels
  • Lucide-Icons: lucide-svelte installiert, ersetzt Emojis im UI-Chrome (Phase 9 Schritt-für-Schritt)
  • StatusBar.svelte (NEU): kompakte 22px-Footer-Zeile mit Token-Auslastung (Färbung ab 70/90%), Modell+Modus (klickbarer Picker), Session-Kosten, Verarbeitungs-Phase — ersetzt den überfüllten alten Footer mit 6+ Stats und Pulse-Animation
  • Titlebar entrümpelt: nur noch Logo (✱), Stop-Button, Schulungsmodus (Lucide-Icon statt 🎓), Version — Status-Dot entfernt, doppelte Modell-Anzeige entfernt

Geändert

  • Footer ersetzt: alter <footer class="footer"> aus +layout.svelte komplett entfernt, ersetzt durch globale <StatusBar />
  • Hardgecodete Farben in +layout.svelte (#22c55e, #ef4444, #eab308, #f59e0b, #a855f7, #06b6d4) entfernt — durch CSS-Variablen ersetzt

Hinzugefügt (Phase 8: VS-Code-Look — Chatbereich-Redesign)

  • VS-Code-Dark-Theme: Globales Theme-File src/lib/theme/vscode.css mit --vscode-* Custom-Properties (Editor-BG #1e1e1e, Sidebar #252526, Akzent #0e639c, Diff-Grün/-Rot wie im Original); bestehende --bg-primary, --accent usw. werden als Aliase auf VS-Code-Werte gemappt → alle Panels ziehen automatisch das neue Theme
  • Linksbündiges Message-Layout: Neue Message.svelte und MessageList.svelte — User und Assistant beide linksbündig mit Avatar-Kreis (24px) vorn, durchgehende Zeitachse wie in der Claude-Code-Extension; Hover-Actions (Edit/Regenerate/Copy/Merken/Rewind) erscheinen rechts oben
  • Inline Tool-Karten: Tool-Calls erscheinen jetzt als ausklappbare Karten direkt in der Assistant-Message statt nur im Activity-Panel — neue ToolCallCard.svelte Basis + Spezialisierungen ToolCardRead (Code-Snippet mit Zeilennummern), ToolCardEdit (Diff + Accept/Reject inline), ToolCardBash (Terminal-Output), ToolCardGeneric (Grep/Glob/WebFetch/MCP/Task)
  • Tool-Call-Binding an Message: Message.toolCalls?: InlineToolCall[] ergänzt; events.ts hängt tool-start an die letzte Assistant-Message und finalisiert sie bei tool-end — Karten werden live gerendert
  • Smart-Sticky-Scroll: MessageList scrollt automatisch ans Ende, stoppt aber wenn der User selbst gescrollt hat; Back-to-Bottom-Button erscheint dann
  • ChatStatusBar: Neue Statusbar unter dem Input mit Token-Auslastung (mit Warning/Danger-Färbung), Modus-Picker (Solo/Handlanger/Experten/Auto, Klick öffnet Menü), Modell-Badge, Phase-Indikator, Shortcut-Hints
  • Tool-Card-Helper: src/lib/utils/toolCards.ts mit getToolMeta() und getToolSubtitle() für Icon-/Label-/Subtitel-Zuordnung; markdown.ts extrahiert den Markdown-Renderer aus ChatPanel
  • Header-Redesign: Spark-Icon ✱ statt 💬, kompakte Stats, VS-Code-Sidebar-Hintergrund

Geändert

  • ChatPanel.svelte (~50KB CSS) rendert jetzt Messages über <MessageList /> statt inline; der separate Pending-Changes-Block unten wurde entfernt — Diffs erscheinen direkt in den Edit-Tool-Karten
  • Backend (claude.rs, claude-bridge.js, checkpoint.rs) bleibt unverändert — reines UI-Refactor

[Unreleased] - 2026-04-22

Hinzugefügt (Phase 7: VS Code Extension Features)

  • Accept/Reject DiffView: Dateiänderungen nach Ausführung prüfen und akzeptieren oder rückgängig machen — DiffView mit interaktiven Buttons, Kompakt-Ansicht für große Diffs (DiffView.svelte, checkpoint.rs)
  • Checkpoint/Rewind System: Automatische Snapshots (content_before/content_after) bei Edit/Write Tool-Calls — SQLite-basiert, pro Session, Rewind auf beliebigen Checkpoint (checkpoint.rs, db.rs)
  • @-Mentions im Chat: @datei.ts öffnet Fuzzy-Autocomplete für Projektdateien, Dateiinhalt wird automatisch in den Prompt injiziert, Zeilenbereiche mit #5-10 (FileMention.svelte, context.rs)
  • Bridge Pending-Queue: Nachrichten während laufender Claude-Verarbeitung werden gepuffert und automatisch nach dem aktuellen Turn verarbeitet — nahtloses Weitertippen (claude-bridge.js)
  • Fuzzy File Search: Score-basierter Algorithmus mit Start-Bonus, Separator-Bonus, Consecutive-Match — scannt Projektverzeichnis bis 5000 Dateien (context.rs)
  • Session-Projekt-Sync: Klick auf Session aktiviert automatisch das zugehörige Projekt (SessionList.svelte)
  • Tool-ID Durchreichung: Backend-IDs werden korrekt von tool-start bis tool-end durchgereicht — behebt endlos-pulsierende Aktivitätspunkte (events.ts, app.ts)

Behoben

  • Aktivitäts-Panel: Grüne Punkte pulsieren nicht mehr endlos — Tool-IDs werden jetzt korrekt zwischen Backend und Frontend synchronisiert
  • Session-Projekt-Verknüpfung: Beim Klick auf eine Session wird das zugehörige Projekt automatisch aktiviert

Hinzugefügt

  • Bridge-Daemon (Phase 3): Bridge läuft als eigenständiger Daemon-Prozess, überlebt App-Neustarts — kein Cold-Start mehr (claude-bridge.js --socket, claude.rs)
  • Unix Socket IPC (Phase 3): Kommunikation über Unix Domain Socket statt stdio — async, kein Block, Auto-Reconnect bei Verbindungsverlust (claude.rs, claude-bridge.js)
  • Bridge-Status API: get_bridge_status Command — zeigt Verbindungsmodus (UDS/stdio), Daemon-PID, Socket-Pfad
  • Daemon-Steuerung: stop_bridge_daemon Command zum expliziten Stoppen des Daemon-Prozesses
  • Modus-Indikator: Badge im ChatPanel zeigt aktuellen Agent-Modus (Handlanger/Experten/Auto) mit Verarbeitungsphase
  • Plan-Erkennung: Claude-Antworten mit Plänen werden automatisch als Slides an das Präsentationsfenster gesendet (planPresentation.ts)
  • Session-Projekt-Filter: Sessions werden nach aktivem Projekt/Workspace gefiltert (db.rs, session.rs)
  • Weibliche TTS-Stimme: Kerstin als Standard-Stimme, 5 deutsche Stimmen wählbar (voice.rs)
  • MCP-Hub nativ (Phase 4): MCP-Server werden aus ~/.claude.json geladen und beim Bridge-Start injiziert — kein CLI-Umweg nötig (claude.rs, claude-bridge.js)
  • MCP-Verwaltung: Tauri-Commands list_mcp_servers, add_mcp_server, remove_mcp_server — Server zur Laufzeit hinzufügen/entfernen
  • Ollama-Integration (Phase 5): Lokales Modell für einfache Tasks — Auto-Detect, local-query Command, konfigurierbar (claude-bridge.js, claude.rs)
  • Offline-Queue (Phase 5): Nachrichten bei fehlender Verbindung in SQLite queuen, später automatisch senden (session.rs)
  • UTF-8 Crash Fix: Kein Panic mehr bei Multi-Byte-Zeichen in DB-Abfragen (db.rs, knowledge.rs)
  • Guard-Rails UI (Live): 3-Tab-Ansicht (Live-Feed/Regeln/Blockiert), Risiko-Statistik-Leiste, Ein-Klick-Freigabe bei Bestätigungsbedarf, guard-check Events vom Backend (GuardRailsPanel.svelte, guard.rs)
  • D-Bus Desktop-Aktionen: 10 vordefinierte Aktionen (Dolphin, Kate, Konsole, Firefox, Notify, Lock Screen), Aktionen-Grid im ProgramsPanel, CLI/GUI-Unterscheidung (programs.rs, ProgramsPanel.svelte)
  • Screenshot-Analyse: Bildschirmbereich oder Vollbild capturen via spectacle/scrot/gnome-screenshot, Vorschau im Panel, "An Claude senden" Button (programs.rs, ProgramsPanel.svelte)
  • Projekt-Wechsel: Ein-Klick-Projektwechsel in der Sidebar — Dropdown mit Projektliste, Hinzufügen/Entfernen, Working-Dir + Sticky-Context wird automatisch umgeschaltet (SessionList.svelte, db.rs)
  • File-Drop auf Chat: Dateien per Drag & Drop auf den Chat ziehen — Text-Dateien als Code-Block, Bilder als Base64, Spracherkennung, 500KB-Limit (ChatPanel.svelte)
  • Persistent Memory: Auto-Load Memory-Einträge werden bei jeder Nachricht in den Claude-Context injiziert — Cross-Session Gedächtnis für Patterns, Zugänge, Präferenzen (memory.rs, claude.rs)
  • Memory CRUD-Commands: Speichern, Löschen, Auflisten, Auto-Load-Filter für Memory-Einträge als Tauri-Commands (memory.rs, lib.rs)
  • Global Hotkey (Super+C): Claude-Eingabe von überall öffnen — Fenster wird angezeigt, fokussiert, Input-Feld aktiviert (lib.rs, ChatPanel.svelte)
  • Clipboard-Watch: Überwacht Zwischenablage, erkennt Code/URLs/Fehler/Pfade, zeigt Vorschlag im Chat (clipboard.rs, ChatPanel.svelte)
  • File-Browser für Projekt-Wechsel: Nativer Verzeichnis-Dialog statt manuellem Pfad, Auto-Name aus Ordnername (SessionList.svelte, tauri-plugin-dialog)
  • Quick-Actions Palette (Ctrl+K): VS-Code-artige Kommandopalette mit Suche, Kategorien (Build, Git, Session, Navigation, Voice, Tools), Keyboard-Navigation (QuickActions.svelte)
  • Lokales Voice (Phase 2.2): whisper-cli STT + piper-tts TTS, komplett lokal ohne OpenAI-API (voice.rs, VoicePanel.svelte)
  • Chat-Detach: Chat in separates Fenster herauslösen, Platz für andere Panels, Zurückholen per Button (chat_window.rs, +page.svelte)
  • Aktivitäts-Phasen: 4 Zustände (Denkt nach/Streamt/Tool-Nutzung/Subagent) statt nur "Denkt nach..." (events.ts, ChatPanel.svelte)
  • Settings-Panel (VS Code Stil): Suchfeld, Kategorien-Sidebar, Commands/Hooks/Permissions-Verwaltung (SettingsPanel.svelte)
  • GStreamer im Nix-Wrapper: Mikrofon funktioniert jetzt auch in Produktion (PipeWire + gst-plugins) (nix/default.nix)
  • Slash-Command Autocomplete: /-Eingabe im Chat öffnet Dropdown mit allen Commands, Skills und Built-ins (commands.rs, CommandPalette.svelte)
  • KB-Hints Injection: Jede Nachricht an Claude bekommt automatisch relevante Wissensbasis-Einträge (claude.rs, knowledge.rs)
  • Voice-zu-Claude-Pipeline: Spracheingabe wird transkribiert, an Claude gesendet, Antwort per TTS vorgelesen (VoicePanel.svelte)
  • Pattern-Detektion: Tool-Fehler werden automatisch gegen bekannte Fehler-Patterns geprüft (events.ts)
  • Hook-Dispatch: SessionStart, PreToolUse, PostToolUse feuern echte Events ans Frontend (hooks.rs, events.ts)
  • Updater Lock-Datei System: PID-basiertes Locking verhindert parallele Update-Instanzen (update.rs)
  • Updater Bestätigungs-Dialog: User muss Update-Installation bestätigen statt Überraschungs-Restart (UpdateDialog.svelte)
  • Updater Graceful Shutdown: Frontend bekommt 2s Zeit zum State-Speichern vor Restart (update.rs, lib.rs)
  • Command-Registry: Scannt ~/.claude/commands/ und ~/.claude/skills/ für Autocomplete (commands.rs)

Geändert

  • SQL-Queries in knowledge.rs sortieren jetzt nach priority DESC (höchste Priorität zuerst)
  • get_tool_hints() korrigiert: War fälschlich priority ASC, jetzt DESC
  • search_knowledge() filtert jetzt auch nach status = 'active'
  • UpdateDialog.svelte auf Svelte 5 Runes migriert ($state, $effect, $derived)
  • lib.rs: App-Lifecycle erweitert um Lock-Datei create/remove bei Start/Exit

Behoben

  • Svelte 5 Event-Syntax: Alle on:clickonclick in SessionList.svelte (keine Mixed-Syntax mehr)
  • Mikrofon hängt: PipeWire-Fallback + 5s getUserMedia-Timeout wenn PipeWire nicht läuft (nix/default.nix, ChatPanel.svelte)
  • Update-Fortschrittsbalken: Erreicht jetzt visuell 100% vor der Bestätigungsmeldung (update.rs, UpdateDialog.svelte)
  • Mikrofon in Produktion: GStreamer + PipeWire-Plugins fehlten im Nix-Wrapper, WebKitGTK konnte getUserMedia nicht nutzen (nix/default.nix)
  • Updater konnte Binary ersetzen während App noch lief (kein Lock, kein Prozess-Check)

[0.1.0] - 2026-04-14

Erstveröffentlichung

Enthält Phase 1-16 der Roadmap:

  • Tauri 2.0 + SvelteKit 5 App-Grundgerüst
  • Claude Agent SDK Integration mit Live-Streaming
  • 4-Panel Layout mit 24 UI-Komponenten
  • SQLite Persistierung + Session-Management
  • Guard-Rails System für kontrollierte OS-Zugriffe
  • Claude-DB Integration (Wissensbasis durchsuchen/speichern)
  • Intelligentes Context-Management (3-Schichten-Gedächtnis)
  • Sprach-Interface (Whisper STT + OpenAI TTS)
  • Multi-Agent-Architektur (Solo/Handlanger/Experten-Modi)
  • Hook-System für Automatisierung
  • VSCodium-Integration (WebSocket-Bridge)
  • Programm-Steuerung (D-Bus, Xvfb, Playwright)
  • Präsentations- & Schulungsmodus
  • System-Monitor mit Performance-Metriken
  • Subagent-Hierarchie mit Baumansicht
  • CI/CD Pipeline (Forgejo Actions → AppImage)