From ad9833fcb8a2ce1a3f26faec933096479cdff780 Mon Sep 17 00:00:00 2001 From: Eddy Date: Mon, 27 Apr 2026 14:27:09 +0200 Subject: [PATCH] =?UTF-8?q?feat:=20Phase=208+9=20=E2=80=94=20Inline=20Tool?= =?UTF-8?q?-Karten=20+=20komplettes=20UI-Redesign=20auf=20Cursor/Zed-Nivea?= =?UTF-8?q?u=20[appimage]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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) --- CHANGELOG.md | 39 ++ ROADMAP.md | 45 ++- package-lock.json | 10 + package.json | 1 + src/app.css | 278 ++++++++----- src/lib/components/AgentView.svelte | 27 +- src/lib/components/AutoCorrectionModal.svelte | 2 +- src/lib/components/ChatPanel.svelte | 346 +++++++--------- src/lib/components/ChatStatusBar.svelte | 162 ++++++++ src/lib/components/GuardRailsPanel.svelte | 22 +- src/lib/components/IdePanel.svelte | 2 +- src/lib/components/Message.svelte | 375 ++++++++++++++++++ src/lib/components/MessageList.svelte | 134 +++++++ src/lib/components/PerformancePanel.svelte | 4 +- src/lib/components/ProgramsPanel.svelte | 2 +- src/lib/components/SettingsPanel.svelte | 10 +- src/lib/components/Sidebar.svelte | 154 +++++++ src/lib/components/StatusBar.svelte | 209 ++++++++++ src/lib/components/ToolCallCard.svelte | 167 ++++++++ src/lib/components/ToolCardAuto.svelte | 28 ++ src/lib/components/ToolCardBash.svelte | 133 +++++++ src/lib/components/ToolCardEdit.svelte | 94 +++++ src/lib/components/ToolCardGeneric.svelte | 95 +++++ src/lib/components/ToolCardRead.svelte | 129 ++++++ src/lib/components/ToolDrawer.svelte | 126 ++++++ src/lib/components/UpdateDialog.svelte | 2 +- src/lib/components/VoicePanel.svelte | 14 +- src/lib/stores/app.ts | 12 + src/lib/stores/events.ts | 66 +++ src/lib/theme/vscode.css | 130 ++++++ src/lib/ui/Badge.svelte | 60 +++ src/lib/ui/Button.svelte | 119 ++++++ src/lib/ui/Card.svelte | 47 +++ src/lib/ui/Drawer.svelte | 111 ++++++ src/lib/ui/Icon.svelte | 26 ++ src/lib/ui/StatusDot.svelte | 45 +++ src/lib/ui/Tabs.svelte | 94 +++++ src/lib/ui/Tooltip.svelte | 74 ++++ src/lib/ui/index.ts | 13 + src/lib/utils/markdown.ts | 56 +++ src/lib/utils/toolCards.ts | 122 ++++++ src/routes/+layout.svelte | 244 +++--------- src/routes/+page.svelte | 341 +++++----------- 43 files changed, 3406 insertions(+), 764 deletions(-) create mode 100644 src/lib/components/ChatStatusBar.svelte create mode 100644 src/lib/components/Message.svelte create mode 100644 src/lib/components/MessageList.svelte create mode 100644 src/lib/components/Sidebar.svelte create mode 100644 src/lib/components/StatusBar.svelte create mode 100644 src/lib/components/ToolCallCard.svelte create mode 100644 src/lib/components/ToolCardAuto.svelte create mode 100644 src/lib/components/ToolCardBash.svelte create mode 100644 src/lib/components/ToolCardEdit.svelte create mode 100644 src/lib/components/ToolCardGeneric.svelte create mode 100644 src/lib/components/ToolCardRead.svelte create mode 100644 src/lib/components/ToolDrawer.svelte create mode 100644 src/lib/theme/vscode.css create mode 100644 src/lib/ui/Badge.svelte create mode 100644 src/lib/ui/Button.svelte create mode 100644 src/lib/ui/Card.svelte create mode 100644 src/lib/ui/Drawer.svelte create mode 100644 src/lib/ui/Icon.svelte create mode 100644 src/lib/ui/StatusDot.svelte create mode 100644 src/lib/ui/Tabs.svelte create mode 100644 src/lib/ui/Tooltip.svelte create mode 100644 src/lib/ui/index.ts create mode 100644 src/lib/utils/markdown.ts create mode 100644 src/lib/utils/toolCards.ts diff --git a/CHANGELOG.md b/CHANGELOG.md index 7d1b9df..eaa8ace 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,45 @@ Format angelehnt an [Keep a Changelog](https://keepachangelog.com/de/1.0.0/). --- +## [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](src/routes/+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 ``-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](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](src/lib/theme/vscode.css) mappt `--vscode-*` Variablen auf das neue System — Phase-8-Komponenten laufen unverändert weiter +- **UI-Library** [src/lib/ui/](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 `