claude-desktop/ROADMAP.md
Eddy 8d52505d14 docs: Phase 16 — Schulungsmodus-Ausbau zum Session-Replay geplant
7 Sub-Phasen, ~14-16 h Gesamt-Aufwand:
- 16.1 Bridge-Telemetrie (SQLite session_timeline)
- 16.2 3-Spalten-Layout im Praesentations-Fenster
- 16.3 Datei-Baum mit Live-Markierung
- 16.4 Workspace mit Edit-Replay
- 16.5 Timeline mit chronologischer Navigation
- 16.6 Optional: MCP-Tools fuer gezielte Erklaerung
- 16.7 Polish + Session-Export

Architektur-Entscheidung: Bridge-passiv vor MCP-Tools — Bridge sieht
ohnehin alle Tool-Calls, Claude muss nichts wissen. MCP nur als
optionale Erweiterung wenn passive Erfassung stabil laeuft.

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

18 KiB

Claude Desktop — Roadmap

Stand: 28.04.2026


Ziel

Claude Desktop soll schneller und maechtiger sein als Codium + Claude Code Extension. Kein Feature-Bloat — nur das was echten Geschwindigkeits- und Produktivitaetsvorteil bringt.


Abgeschlossen (v0.1.0 — 14.04.2026)

Alles aus Phase 1-16 ist implementiert und funktionsfaehig:

  • Tauri 2.0 + SvelteKit 5 + Claude Agent SDK
  • 4-Panel Layout mit 24 UI-Komponenten
  • Claude Bridge (Node.js, stdio JSON-Lines)
  • Guard-Rails System (Safe/Moderate/Critical/Blocked)
  • SQLite Persistierung + Session-Management
  • Claude-DB Integration (Wissensbasis durchsuchen/speichern)
  • 3-Schichten Context-Management (Sticky/Projekt/Hints)
  • Sprach-Interface (Whisper STT + OpenAI TTS)
  • Multi-Agent-Modi (Solo/Handlanger/Experten/Auto)
  • Hook-System (SessionStart, PreToolUse, PostToolUse)
  • VSCodium-Extension (WebSocket Port 7890)
  • Programm-Steuerung (D-Bus, Xvfb, Playwright-MCP)
  • Praesentations-/Schulungsmodus
  • System-Monitor + Performance-Metriken
  • Subagent-Hierarchie mit Baumansicht
  • Auto-Updater (Forgejo Package Registry)
  • Slash-Command Autocomplete
  • KB-Hints Injection + Proaktive Intelligenz
  • Error-Pattern Auto-Detection (3x → KB-Eintrag)

Phase 3: Performance (naechster Schritt)

Ziel: Erste Antwort in < 1s, Bridge immer warm, kein Warten.

Feature Datei(en) Status
KB-Cache (RAM) knowledge.rs 60s TTL, LRU, max 100 Entries
Bridge Warm-Start lib.rs, claude.rs Start bei App-Launch, kein Cold-Start
Lazy Panel-Load +page.svelte Dynamic Import mit Cache
Session-Resume Fix claude-bridge.js Stale ID → auto-Retry neue Session
Auto-Retry (Netzwerk) claude-bridge.js 3x Backoff bei Rate-Limit/5xx
Bridge Heartbeat claude-bridge.js 30s Pulse an Rust
FIFO Message Queue ChatPanel.svelte Mehrere Nachrichten queuen
Bridge-Daemon claude.rs, claude-bridge.js Bridge ueberlebt App-Neustart (--socket Flag)
Unix Socket IPC claude.rs, claude-bridge.js stdio → UDS (async, Reconnect, PID-Tracking)

Phase 4: Codium-Killer Features

Ziel: Dinge die Codium + Extension prinzipbedingt NICHT koennen.

Feature Datei(en) Status
Projekt-Wechsel db.rs, SessionList.svelte Ein Klick wechselt Projekt (CWD, Context, KB-Filter)
MCP-Hub nativ claude.rs, claude-bridge.js MCP-Server aus .claude.json, UI-Verwaltung, Runtime-Injection
Guard-Rails UI guard.rs, GuardRailsPanel.svelte Live-Feed, Risiko-Statistik, Ein-Klick-Freigabe, 3 Tabs
Persistent Memory memory.rs, claude.rs Auto-Load Eintraege in Context, Cross-Session Gedaechtnis
Quick-Actions QuickActions.svelte, ChatPanel.svelte Ctrl+K Palette: Deploy, Build, Test, Commit, Git, Navigation
Voice-Conversation voice.rs, VoicePanel.svelte Lokales Whisper STT + Piper TTS, VAD, Gespraechsmodus
Settings-Panel SettingsPanel.svelte VS-Code-artiges Layout mit Suche, Kategorien, Commands, Hooks
Chat-Detach chat_window.rs, +page.svelte Chat in separates Fenster herausloesen/zurueckholen
Aktivitaets-Phasen events.ts, ChatPanel.svelte 4 Phasen: Denkt/Streamt/Tool/Subagent statt nur "Denkt nach"

Phase 5: Lokale KI + Offline

Ziel: Unabhaengig von Cloud fuer Routine-Tasks.

Feature Datei(en) Status
Whisper.cpp lokal voice.rs whisper-cli STT, Thorsten-DE Modell, kein OpenAI noetig
Piper-TTS lokal voice.rs piper-tts mit thorsten_emotional (high), offline
Lokales Haiku-Equivalent claude-bridge.js, claude.rs Ollama-Integration, Auto-Detect, local-query Command
Offline-Queue session.rs SQLite-Queue, queue/flush/clear Commands, Auto-Retry

Phase 6: Desktop-Integration (Linux-Native)

Ziel: Claude steuert den Desktop wie ein zweiter User.

Feature Datei(en) Beschreibung
D-Bus Actions programs.rs, ProgramsPanel.svelte 10 Aktionen: Dolphin, Kate, Konsole, Firefox, Notify, Lock
Clipboard-Watch clipboard.rs Claude reagiert auf Clipboard-Inhalt (Code/URL/Fehler erkennen)
File-Drop ChatPanel.svelte Dateien auf Chat droppen → Claude analysiert/bearbeitet
Screenshot-Analyse programs.rs, ProgramsPanel.svelte Spectacle/Scrot Region-Capture, Vorschau, an Chat senden
Global Hotkey lib.rs Super+C oeffnet Claude-Eingabe von ueberall

Phase 7: VS Code Extension Features

Ziel: Die besten Features der Claude Code VS Code Extension uebernehmen — Accept/Reject, @-Mentions, Checkpoints.

Feature Datei(en) Status
Accept/Reject DiffView DiffView.svelte, checkpoint.rs, db.rs Post-Execution Approval mit Revert, Kompakt-Ansicht, interaktive Buttons
Checkpoint/Rewind checkpoint.rs, db.rs, claude.rs, claude-bridge.js Automatische Snapshots bei Edit/Write, SQLite-basiert, Rewind auf beliebigen Punkt
@-Mentions FileMention.svelte, context.rs, ChatPanel.svelte Fuzzy-Autocomplete, Dateiinhalt-Injection, Zeilenbereiche (#5-10)
Bridge Pending-Queue claude-bridge.js Nachrichten waehrend laufender Verarbeitung puffern, Auto-Dispatch nach Turn
Tool-ID Sync events.ts, app.ts Backend-IDs korrekt durchreichen, Aktivitaets-Punkte Bug behoben
Session-Projekt-Sync SessionList.svelte Session-Klick aktiviert zugehoeriges Projekt automatisch

Phase 8: VS-Code-Look — Chatbereich-Redesign

Ziel: Chatbereich strukturell und visuell wie die offizielle Claude Code Extension fuer VS Code/Codium gestalten — linksbuendige Messages, Inline-Tool-Karten, VS-Code-Dark-Theme. ChatPanel.svelte (~2000 Z.) wird in fokussierte Teilkomponenten zerlegt.

Feature Datei(en) Status
VS-Code-Theme-Variablen theme/vscode.css, +layout.svelte --vscode-* Custom Properties + Aliase fuer Altcode
Inline-Render via MessageList ChatPanel.svelte Messages-Bereich in <MessageList /> ausgelagert; Logik bleibt im Container
Message.svelte Message.svelte (NEU) Avatar links, linksbuendig, Hover-Actions (Edit/Regenerate/Copy/Merken/Rewind)
MessageList.svelte MessageList.svelte (NEU) Smart-Sticky-Scroll, Back-to-Bottom-Button
Inline Tool-Cards ToolCallCard.svelte, ToolCardRead/Edit/Bash/Generic.svelte (NEU) Klappbare Karten in Assistant-Message; Edit zeigt Diff + Accept/Reject
Tool-Calls an Message binden events.ts, app.ts Message.toolCalls?[] ergaenzt, Tool-Events an letzte Assistant-Msg gebunden
ChatStatusBar ChatStatusBar.svelte (NEU) Token/Mode/Modell + Modus-Picker; Header bekommt Spark-Icon
Eigen-Features-Mapping Mic, Modus-Indikator, Detach, „Das merken" funktionieren weiter
Activity-Panel parallel ActivityPanel.svelte unveraendert, dient als History-View neben den Inline-Karten

Phase 9: Komplettes UI-Redesign — Cursor/Zed-Niveau (aktuell)

Ziel: Schluss mit Emoji-Inflation, 4-Pane-Zerstueckelung und Schriftgroessen-Chaos. Verbindliches Design-System (Farben/Typo/Spacing/Radius), 2-spaltiges Layout (Sidebar + Hauptbereich mit Tabs), Werkzeug-Panels als Drawer von rechts statt zwei nebeneinander liegender Tab-Reihen.

Feature Datei(en) Status
Design-System (Variablen) app.css 4 Graustufen, 1 Akzent (#007acc), 4 Status-Farben, 5 Schriftgroessen, 4-Punkt-Spacing, 2 Radius-Werte
vscode.css Aliase theme/vscode.css --vscode-* Variablen mappen auf Phase-9-Variablen
UI-Library src/lib/ui/ Button, Card, Icon, Badge, StatusDot, Tooltip, Drawer, Tabs
Lucide Icons lucide-svelte installiert, ersetzt Emojis im Chrome
StatusBar (22px) StatusBar.svelte (NEU) Token · Modell+Modus · Kosten · Phase, klickbarer Modus-Picker
Titlebar entruempelt +layout.svelte Logo + Stop + Schulungsmodus (Lucide) + Version, kein Status-Dot mehr
Sidebar (240px) Sidebar.svelte (NEU) Suche (Cmd+K), Sessions, Nav-Rail mit 4 Lucide-Icons (Activity/Database/Wrench/Settings)
ToolDrawer ToolDrawer.svelte (NEU) Rechts-Drawer (420px) mit internen Tabs fuer Activity/Memory/Tools/Settings, Esc-schliessbar
+page.svelte 2-spaltig +page.svelte 4-Pane-PaneForge-Layout aufgeloest, jetzt: Sidebar + ChatPanel (flex) + Drawer-Overlay
Hardgecodete Farben raus 9 Komponenten #ef4444 #22c55e #eab308 #f59e0b #a855f7 #06b6d4 ... durch var(--status-*) ersetzt
Status-Emojis durch StatusDot AgentView.svelte 🟢 🟡 ⚪ 🔴 durch <StatusDot> mit Pulse-Animation bei aktivem Agent
ChatPanel entkoppelt ChatPanel.svelte Header + ChatStatusBar entfernt (jetzt global) — kompakte Toolbar nur noch fuer Detach
Cmd+K global +page.svelte, QuickActions.svelte Globaler Listener oeffnet QuickActions; navigate-tab oeffnet Drawer-Sektion
Komponenten-Pass (Emojis raus) 13 Panels Emojis in Tab-Labels und Action-Buttons noch sukzessive durch Lucide ersetzen

Phase 16: Schulungsmodus-Ausbau — Session-Replay

Ziel: Das Praesentations-Fenster wird vom Slide-Stream zum vollwertigen Session-Replay. Drei Spalten: Datei-Baum links (waechst mit den beruehrten Pfaden), Workspace in der Mitte (animierter Edit oder Diff-Viewer), Timeline rechts (klickbare Liste aller Tool-Aktionen). Live waehrend Claude arbeitet, retroaktiv fuer gespeicherte Sessions.

Architektur-Entscheidung: Bridge-passiv vor MCP-Tools. Die Bridge sieht ohnehin jeden Tool-Call — sie schreibt einfach mit. Claude muss nichts wissen oder steuern. MCP-Tools fuer gezielte Erklaerung sind optional und kommen erst wenn die passive Erfassung sauber laeuft.

Tradeoff: Reine Bridge-Loesung ist robust und funktioniert auch retroaktiv, aber „stumm" — sie zeigt was passiert, nicht warum. Reine MCP-Steuerung waere erklaerend, aber fragil (Claude muss konsistent zugreifen). Hybrid in dieser Reihenfolge gibt sofort 90 % des Werts und laesst sich spaeter erweitern.

Phase 16.1: Bridge-Telemetrie (Datenerfassung)

Aufwand: ~3-4 h. Ohne UI-Aenderungen — am Ende der Phase liegen Daten in SQLite.

Feature Datei(en) Status
SQLite-Schema session_timeline db.rs, migrations id, session_id, tool_id, tool, file_path, timestamp, action (read/edit/write/glob/grep/bash), before_hash, after_hash, line_start, line_end, payload_json
Telemetry-Modul telemetry.rs (NEU) record_tool_event(session_id, ev), dedupliziert nach tool_id, schreibt in session_timeline
Hook in claude.rs claude.rs In handle_bridge_message bei tool-start/tool-end/checkpoint-after jeweils telemetry::record_* aufrufen
Before/After-Snapshots db.rs Zusaetzlich zu Checkpoint-Tabelle: dauerhafter Diff pro Edit gespeichert (komprimiert), nicht nur fuer Rewind
Tauri-Command presentation_get_timeline teaching.rs Liefert Timeline einer Session (live oder historisch)
Tauri-Event timeline-append claude.rs Pro neuem Eintrag — Frontend kann live mitschreiben

Risiko: Datenmenge bei langen Sessions. Mitigation: Before/After als komprimiertes Diff (zstd), nicht als Volltext doppelt.

Phase 16.2: 3-Spalten-Layout im Praesentations-Fenster

Aufwand: ~2-3 h. Reines Layout — die Spalten zeigen erstmal Platzhalter, Logik kommt in 16.3-16.5.

Feature Datei(en) Status
PaneForge-Layout presentation/+page.svelte 3 PaneGroups: 22 % / 56 % / 22 %, resizable, persistente Breiten
Mode-Toggle presentation/+page.svelte Knopf in Footer: „Slides" (alter Modus) ↔ „Replay" (neues Layout). Slide-Modus bleibt fuer Mermaid/Code/Text erhalten
Container-Komponenten FileTree.svelte, Workspace.svelte, Timeline.svelte (NEU) Skelette, in den naechsten Phasen befuellt
Default-View presentation/+page.svelte Bei offenem Fenster und neuer Tool-Aktion automatisch in Replay-Modus wechseln

Phase 16.3: Datei-Baum mit Live-Markierung

Aufwand: ~3 h.

Feature Datei(en) Status
Tree-Aufbau aus Timeline FileTree.svelte Pfade aus Timeline-Eintraegen → hierarchischer Baum, Ordner-Knoten implizit
Status-Farbcodierung FileTree.svelte grau=unbekannt, blau=gelesen, gruen=geaendert, gelb=erstellt, rot=geloescht, pulsierend=aktuell aktiv
Auto-Expand bei Aktivitaet FileTree.svelte Wenn Datei in der Timeline auftaucht, Pfad bis zur Wurzel auffalten
Klick auf Datei FileTree.svelteWorkspace.svelte Mitte zeigt letzten bekannten Stand + alle Edits dieser Datei untereinander
Mini-Counter pro Knoten FileTree.svelte „edited.ts (3 ✏️)" — Anzahl Aenderungen direkt am Knoten

Risiko: Bei sehr breiten Repos wird der Tree unuebersichtlich. Mitigation: Nur Pfade die in der Timeline auftauchen — kein vollstaendiger Filesystem-Scan. Maximal 200 Knoten sichtbar, Rest collapsed.

Phase 16.4: Workspace (Mitte) — Edit-Replay

Aufwand: ~2 h. Bauteile (AnimatedFileEdit) sind da, fehlen nur Verkettung und Auswahl-Logik.

Feature Datei(en) Status
Aktive Datei-Anzeige Workspace.svelte Eine Datei zur Zeit, Header mit Pfad + „aktiv"/„abgeschlossen" Status
Edit-Liste pro Datei Workspace.svelte Wenn mehrere Edits an gleicher Datei: chronologische Liste, jeder Edit als Karte mit Before/After-Diff
Replay-Knopf pro Edit Workspace.svelte, AnimatedFileEdit.svelte Klick spielt die Animation erneut ab — {#key} fuer Reset
Lese-Operationen anzeigen Workspace.svelte Read/Glob/Grep nicht animiert sondern als kompakte Eintraege („Gelesen: Zeilen 5-50")
Bash-Snippets Workspace.svelte Bash-Calls als Terminal-Card mit Befehl + Output-Snippet

Phase 16.5: Timeline (Rechts) — Chronologische Navigation

Aufwand: ~2 h.

Feature Datei(en) Status
Vertikale Timeline Timeline.svelte Chronologisch, neueste oben, Zeitstempel + Tool-Icon + Pfad-Snippet
Filter-Chips Timeline.svelte Nur Edits / Nur Reads / Nur Bash / Alle — schmale Toggle-Reihe
Klick → Workspace + Tree Timeline.svelte Klick aktiviert Datei in Tree und zeigt diesen Edit in Mitte
Live-Indikator Timeline.svelte Pulsierender Punkt am neuesten Eintrag waehrend Session laeuft
Session-Wechsler Timeline.svelte Dropdown oben: aktuelle Session / historische Sessions, laedt jeweilige Timeline

Phase 16.6: Optional — MCP-Tools fuer gezielte Erklaerung

Aufwand: ~3 h, optional. Erst nach 16.1-16.5 sinnvoll, vorher kein Mehrwert.

Konzept: Wenn das Praesentations-Fenster offen ist, bekommt Claude per System-Prompt-Hint einen MCP-Server presentation mit drei Tools. Sie kann sie nutzen — muss aber nicht. Bridge-Telemetrie laeuft unabhaengig weiter.

Tool Wirkung
present_focus(file, line_start?, line_end?) Markiert Datei + Zeilenbereich im Workspace, scrollt dorthin
present_explain(text, anchor?) Sprechblase rechts neben Workspace, optional an Datei/Zeile gepinnt
present_diagram(mermaid) Modal mit Mermaid-Diagramm — fuer Architektur/Flow-Erklaerungen

Tradeoff: Claude muss daran denken, das ist anfangs flackernd. System-Prompt sollte „nutze diese Tools sparsam, nur fuer Schluesselstellen" sagen, sonst wird's Spam.

Phase 16.7: Polish + Export

Aufwand: ~2 h.

Feature Datei(en) Status
Geschwindigkeitssteuerung global presentation/+page.svelte Speed-Steps wirken jetzt fuer alle Edits — auch beim Replay alter Eintraege
Pause/Resume bei Live presentation/+page.svelte „Pause" friert Tree+Timeline ein, neue Eintraege werden gepuffert, „Resume" arbeitet sie ab
Session-Export teaching.rs „Schulungsvideo" als JSON-Bundle exportieren — laed't in einer anderen Instanz wieder
Hotkeys presentation/+page.svelte j/k = Timeline rauf/runter, Enter = Replay, t = Tree-Fokus

Gesamt-Aufwand Phase 16 (ohne 16.6): ~14-16 h, in 6 zusammenhaengenden Sub-Phasen. Jede Sub-Phase ist fuer sich nuetzlich — auch wenn nur 16.1-16.3 fertig werden, ist das schon ein lebender Datei-Baum mit Telemetrie-Backend.

Reihenfolge-Begruendung: Telemetrie zuerst (16.1) — ohne Daten kein UI. Layout-Skelett (16.2) gibt einen Rahmen zum Befuellen. Dann von links nach rechts (16.3 Tree → 16.4 Workspace → 16.5 Timeline) weil das die natuerliche Lesereihenfolge des Users ist. Polish (16.7) am Ende. MCP (16.6) nur wenn Phase 16.1-16.5 stabil sind.


Technische Schulden

Was Prioritaet
TypeScript strict mode Niedrig
E2E Tests (Playwright) Mittel
Cargo warnings eliminieren Erledigt — 0 Warnings
Dead Code in alten Panels Niedrig
Bridge Error-Handling verbessern Erledigt — Global Handler, Parse-Logging, .catch()

Nicht geplant

  • Multi-User / Team-Features
  • Cloud-Sync
  • Plugin-System (overkill fuer 1-User-App)
  • Electron-Port (Tauri bleibt)

Build & Entwicklung

# Dev (Hot-Reload)
cd "/mnt/17 - Entwicklungen/20 - Projekte/ClaudeDesktop"
CARGO_TARGET_DIR=/tmp/claude-desktop-target nix-shell --run "npx tauri dev"

# Produktion
CARGO_TARGET_DIR=/tmp/claude-desktop-target nix-shell --run "npx tauri build -- --bundles appimage"

# CI: Commit mit [appimage] → Forgejo Runner baut + uploaded