Commit graph

153 commits

Author SHA1 Message Date
Eddy
f69f566b00 [appimage] Technische Schulden: Cargo Warnings + Bridge Error-Handling + Chat-Layout
All checks were successful
Build AppImage / build (push) Successful in 9m13s
- Cargo Warnings: 0 (dead_code allow für load_sessions, invalidate_expired)
- Bridge: uncaughtException + unhandledRejection Handler, Ollama .catch()
- Rust: Parse-Fehler bei Bridge-Nachrichten werden geloggt statt verschluckt
- Chat-Panel: Detach-Layout Fix bereits enthalten (flex-shrink, min-height)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-21 14:40:38 +02:00
Eddy
97488ded61 fix: Chat-Panel Layout im Detach-Modus — Textzeile wird nicht mehr abgeschnitten [appimage]
Some checks failed
Build AppImage / build (push) Has been cancelled
- .chat-input: flex-shrink: 0 + max-height verhindert Überlaufen
- .chat-input textarea: max-height + overflow-y für Scroll bei langen Eingaben
- .chat-panel + .chat-messages: min-height: 0 für korrektes Flex-Overflow (WebKitGTK)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-21 14:35:53 +02:00
Eddy
49240842d0 [appimage] Phase 5: Ollama-Integration + Offline-Queue
Some checks failed
Build AppImage / build (push) Has been cancelled
Lokales Haiku-Equivalent: Bridge erkennt Ollama automatisch beim Start,
local-query Command für einfache Tasks (Commit-Messages, Übersetzungen).
Konfigurierbar über set-ollama-config.

Offline-Queue: Nachrichten werden bei fehlender Verbindung in SQLite
gequeuet und bei Reconnect automatisch gesendet. Commands:
queue_message, list_queued_messages, flush_offline_queue, clear_offline_queue.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-21 14:32:01 +02:00
Eddy
fab7e88c44 [appimage] Phase 4: MCP-Hub nativ — Server aus Config laden + UI-Verwaltung
Some checks failed
Build AppImage / build (push) Has been cancelled
MCP-Server-Configs werden beim Bridge-Start aus ~/.claude.json geladen
und per set-mcp-servers Command an die Bridge injiziert. Neue Tauri-Commands:
list_mcp_servers, add_mcp_server, remove_mcp_server für Runtime-Verwaltung.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-21 14:28:08 +02:00
Eddy
e36209690e [appimage] Phase 3 komplett: Bridge-Daemon + Unix Socket IPC
Some checks failed
Build AppImage / build (push) Has been cancelled
Bridge überlebt jetzt App-Neustarts als eigenständiger Daemon-Prozess.
Kommunikation über Unix Domain Socket statt stdio — async, Auto-Reconnect,
PID-Tracking. Fallback auf stdio-Modus wenn UDS nicht verfügbar.

Neue Commands: get_bridge_status, stop_bridge_daemon.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-21 14:21:25 +02:00
Eddy
d29bbd7bfd fix: Rusqlite Borrow-Lifetime in load_sessions_filtered [appimage]
All checks were successful
Build AppImage / build (push) Successful in 8m10s
stmt.query_map()?.collect() direkt als Return-Expression hält den
Borrow über den Block-End hinaus. Fix: Ergebnis erst in let binden,
dann returnen — so wird der Temporary vor stmt gedroppt.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-21 13:54:32 +02:00
Eddy
b9dfc8a720 fix: UTF-8 Panic bei String-Truncation (db.rs + knowledge.rs) [appimage]
Some checks failed
Build AppImage / build (push) Failing after 3m34s
Crash: "byte index 200 is not a char boundary; inside '─' (bytes 198..201)"
Fix: char_indices() statt byte-slice für sicheres Abschneiden bei
Multi-Byte-Zeichen (ä, ü, ─, etc.)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-21 13:49:21 +02:00
Eddy
05bc35208d feat: Kerstin als Standard-Stimme + Stimmenauswahl [appimage]
- Standard-TTS von Thorsten (männlich) auf Kerstin (weiblich) gewechselt
- text_to_speech nutzt jetzt den voice-Parameter (vorher ignoriert)
- get_tts_voices zeigt alle verfügbaren Stimmen mit Verfügbarkeits-Check
- 5 deutsche Stimmen: Kerstin, Thorsten HQ, Thorsten, Eva, Ramona
- Modell-Suche mit dynamischem Dateinamen pro Stimme

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-21 13:43:21 +02:00
Eddy
a3d1dadc46 fix: Session-Filter vereinfacht + Piper/Whisper Modell-Pfade erweitert [appimage]
Some checks failed
Build AppImage / build (push) Failing after 3m9s
- db.rs: load_sessions_filtered() ohne shared row_mapper (Borrow-Probleme)
- voice.rs: Modell-Suche auch in ~/.local/share/claude-desktop/models/
  und ~/.claude-desktop/models/ (AppImage + Nix-Wrapper Kompatibilität)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-21 13:40:51 +02:00
Eddy
c2db56f392 feat: Sessions an Projekt/Workspace binden [appimage]
Some checks failed
Build AppImage / build (push) Failing after 3m54s
Sessions werden jetzt nach aktivem Projekt gefiltert (working_dir).
Beim Projektwechsel sieht man nur noch die Sessions die zu diesem
Projekt gehören. Backend: load_sessions_filtered() mit optionalem
WHERE working_dir-Filter. Ohne Projekt: alle Sessions (abwärtskompatibel).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-21 13:27:33 +02:00
Eddy
ebbb65a1a9 feat: Modus-Anzeige im Chat + Plan-Präsentation [appimage]
All checks were successful
Build AppImage / build (push) Successful in 9m31s
- Mode-Badge über dem Textfeld zeigt aktiven Agent-Modus (Handlanger/Experten/Auto) mit Verarbeitungsphase
- Plan-Erkennung: erkennt strukturierte Pläne in Claude-Antworten (Mermaid, Sektionen, Schrittlisten)
- Automatisches Senden erkannter Pläne ans Präsentationsfenster als Slides
- PWA Docker Build Pipeline hinzugefügt

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-21 13:16:10 +02:00
Eddy
b90db222e7 fix: GSettings-Schemas im Nix-Wrapper (XDG_DATA_DIRS) [appimage]
App crashte mit "No GSettings schemas are installed on the system"
weil WebKitGTK die GLib-Schemas nicht finden konnte.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-21 12:06:25 +02:00
Eddy
d4c57b777a feat: Guard-Rails UI, D-Bus Aktionen, Screenshot-Analyse [appimage]
All checks were successful
Build AppImage / build (push) Successful in 8m16s
Guard-Rails: Live-Feed mit Risiko-Badges, 3 Tabs, Ein-Klick-Freigabe
D-Bus: 10 Desktop-Aktionen (Dolphin, Kate, Konsole, Firefox, Notify)
Screenshot: Region/Vollbild via spectacle/scrot, Vorschau + Chat-Send

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-21 12:02:24 +02:00
Eddy
87ba8f7bdf feat: Global Hotkey (Super+C) + Clipboard-Watch + Desktop-Integration [appimage]
All checks were successful
Build AppImage / build (push) Successful in 8m53s
- Global Hotkey: Super+C öffnet Claude-Fenster und fokussiert Input von überall
- Clipboard-Watch: Erkennt Code/URLs/Fehler/Pfade in Zwischenablage, zeigt Vorschlag
- tauri-plugin-global-shortcut + tauri-plugin-dialog integriert
- focus-chat-input Event für Hotkey → Input-Fokus
- clipboard-changed Event für Watch → Chat-Vorschlag

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-21 11:50:56 +02:00
Eddy
6efbd5de5f feat: Projekt-Wechsel mit File-Browser + Nix-Wrapper Audio-Fixes [appimage]
All checks were successful
Build AppImage / build (push) Successful in 9m35s
- File-Browser Dialog (tauri-plugin-dialog) für Projektverzeichnis-Auswahl
- Auto-Name aus Verzeichnisname beim Projekt-Hinzufügen
- Nix-Wrapper: GStreamer Core-Plugins (valve) + ffmpeg-headless im PATH
- Nix-Wrapper: Version 0.1.1 mit korrektem gstreamer.out Output

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-21 11:37:07 +02:00
Eddy
68d2500037 feat: Projekt-Wechsel, File-Drop, Persistent Memory [appimage]
All checks were successful
Build AppImage / build (push) Successful in 8m45s
- Projekt-Wechsel UI in SessionList: Dropdown, Hinzufügen/Entfernen, auto Sticky-Context
- File-Drop auf Chat: Text als Code-Block, Bilder als Base64, 500KB Limit
- Persistent Memory: auto_load Einträge in Claude-Context injiziert (Cross-Session)
- Memory CRUD Tauri-Commands: save/delete/list/autoload
- Svelte 5 Syntax-Fix: on:click → onclick in SessionList.svelte

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-21 10:55:35 +02:00
Eddy
6e1a3c41f2 fix: Mikrofon hängt — PipeWire-Fallback + getUserMedia Timeout [appimage]
All checks were successful
Build AppImage / build (push) Successful in 8m22s
Wenn PipeWire nicht läuft (z.B. PulseAudio/xRDP), wird pipewiresrc
auf Rank 0 gesetzt damit WebKitGTK auf pulsesrc zurückfällt.
getUserMedia bekommt 5s Timeout statt endlos zu hängen.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-21 10:30:18 +02:00
Eddy
a01959a55c fix: Svelte 5 on:click → onclick Syntax in +page.svelte [appimage]
All checks were successful
Build AppImage / build (push) Successful in 9m5s
Build schlug fehl wegen gemischter Event-Handler-Syntax (Svelte 5
erlaubt kein Mischen von on:click und onclick im selben Component).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-21 10:18:33 +02:00
Eddy
9c6026de40 feat: Quick-Actions (Ctrl+K) + GStreamer-Fix für Produktion [appimage]
Some checks failed
Build AppImage / build (push) Failing after 14s
Quick-Actions Palette mit VS-Code-artigem UI: Suche, Kategorien
(Build/Git/Session/Navigation/Voice/Tools), Keyboard-Navigation.
Nix-Wrapper enthält jetzt GStreamer + PipeWire für Mikrofon-Support.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-21 10:02:40 +02:00
Eddy
e87ac9ffc1 feat: Chat-Detach richtig — Hauptfenster blendet Chat aus, separates Fenster lädt Session
Some checks failed
Build AppImage / build (push) Failing after 15s
- chatDetached Store: Hauptfenster blendet Chat-Pane aus wenn Fenster offen
- Placeholder mit "Zurückholen"-Button statt leerem Pane
- Backend sendet chat-detached/chat-reattached Events ans Hauptfenster
- on_window_event(Destroyed): Automatisches Reattach wenn Fenster geschlossen
- Chat-Window lädt aktive Session + Nachrichten aus DB beim Öffnen
- Mehr Platz für andere Panels wenn Chat herausgelöst

[appimage]

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-21 09:41:38 +02:00
Eddy
51374720e7 feat: Settings-Panel wie VS Code — Suchfeld, Kategorien, Commands/Hooks/Permissions
All checks were successful
Build AppImage / build (push) Successful in 7m46s
- Suchfeld oben: durchsucht alle Einstellungen, Commands, Hooks
- Kategorie-Sidebar: Allgemein, Modell, Commands, Hooks, Berechtigungen, Über
- Commands & Skills: Alle /slash-commands mit Badge (Eingebaut/Custom/Skill)
- Hooks: Toggle-Buttons zum Aktivieren/Deaktivieren
- Permissions: Guard-Rail-Übersicht mit Pattern/Tool/Status
- Debug: Alle DB-Settings unter "Über" aufklappbar
- Bei Suche: Sidebar verschwindet, alle matchenden Sektionen angezeigt

[appimage]

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-21 09:30:27 +02:00
Eddy
98dca27ebe fix: Update-Ladebalken erreicht jetzt sichtbar 100%
All checks were successful
Build AppImage / build (push) Successful in 7m53s
- Backend: Finales 100%-Progress-Event nach Download-Loop senden
- Frontend: Explizit auf 100% setzen + 600ms Pause vor Bestätigungsdialog
- Behebt visuellen Bug dass Balken bei ~97% stehen blieb

[appimage]

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-21 09:11:34 +02:00
Eddy
f94cfc287e UI: Aktivitätsanzeige mit Phasen statt nur "Denkt nach..." + kleine Dots
All checks were successful
Build AppImage / build (push) Successful in 7m34s
- Neue processingPhase Store: thinking, streaming, tool-use, subagent
- Phasen-Labels: "Denkt nach", "Schreibt Antwort", "Arbeitet", "Subagent aktiv"
- Tool-Details weiterhin inline (Liest Datei..., Führt aus..., etc.)
- Alte doppelte Bounce-Dots (8px) entfernt, ersetzt durch dezente 4px Pulse-Dots
- Alles in einer Zeile: Icon + Label + Dots

[appimage]

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-21 09:00:47 +02:00
Eddy
f287514af5 Phase 2.2: Lokales Voice — whisper-cli + piper-tts, Gesprächsmodus mit VAD
Some checks failed
Build AppImage / build (push) Has been cancelled
OpenAI komplett entfernt. Voice läuft jetzt offline mit lokalen Binaries:
- whisper-cli (whisper-cpp 1.8.3) für Speech-to-Text
- piper-tts mit Thorsten-Stimme (Deutsch) für Text-to-Speech
- GStreamer + PipeWire in shell.nix für WebKitGTK Mikrofon-Zugriff
- VoicePanel: Echtgespräch mit VAD-Stille-Erkennung, Interrupt, Loop
- Models in .gitignore (~250MB)

[appimage]

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-21 08:48:03 +02:00
Eddy
05c4913833 WebKitGTK Mikrofon-Permission: connect_permission_request Handler erlaubt getUserMedia [appimage]
All checks were successful
Build AppImage / build (push) Successful in 6m53s
WebKitGTK verweigert standardmäßig alle Permission-Requests (Mikrofon, Kamera).
Jetzt wird in setup() ein permission-request Handler registriert der alles erlaubt.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-21 06:47:04 +02:00
Eddy
600c7943ed Gedanken auf Deutsch: BASE_INSTRUCTION injiziert + Label übersetzt [appimage]
All checks were successful
Build AppImage / build (push) Successful in 6m11s
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-20 23:58:04 +02:00
Eddy
100ba9d5d4 feat: Smart Hints v2 — Session-aware KB mit Projekt-Erkennung [appimage]
Some checks failed
Build AppImage / build (push) Has been cancelled
- Hints nur jede 3. Nachricht statt jede (weniger Noise)
- Max 3 statt 5 Hints pro Runde
- Bereits gezeigte Eintraege werden nicht wiederholt (30-ID Buffer)
- Session-Keywords akkumulieren fuer besseren Kontext
- Automatische Projekt-Erkennung (8 Projekte) boosted relevante Tags
- Topic-Switch resettet Hints fuer frische Treffer
- Neue Commands: reset_kb_session, get_kb_session_status

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-20 23:53:19 +02:00
Eddy
5eed2a36bb fix: GStreamer PipeWire Plugin-Pfad im Nix-Launcher + Paste-Collapse (10 Zeilen) [appimage]
All checks were successful
Build AppImage / build (push) Successful in 6m9s
- GST_PLUGIN_SYSTEM_PATH_1_0 mit pipewire im wrapProgram gesetzt
- User-Nachrichten >10 Zeilen werden collapsed ("Eingefuegt: X Zeilen")
- Assistant-Nachrichten weiterhin ab 25 Zeilen

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-20 23:38:26 +02:00
Eddy
54b58cf166 feat: Thinking-Blocks inline + Live Tool-Status im Chat [appimage]
All checks were successful
Build AppImage / build (push) Successful in 6m3s
- Thinking-Blocks immer sichtbar (kein Collapse), kleine Schrift, dezent
- Inline Tool-Status waehrend Verarbeitung (wie VSCodium Extension)
- currentTool Store fuer Echtzeit-Anzeige (Liest/Bearbeitet/Sucht...)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-20 23:30:04 +02:00
Eddy
2b7dfa6e37 feat: Chat-Panel herausloesbar + Expand-Button Fix [appimage]
All checks were successful
Build AppImage / build (push) Successful in 6m3s
- Neues Fenster fuer Chat-Panel (auf zweiten Monitor ziehbar)
- Expand/Collapse nutzt jetzt $state Array statt Set (Svelte 5 Reaktivitaet)
- Kein Collapse waehrend Streaming (verhindert unklickbare Buttons)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-20 23:01:27 +02:00
Eddy
e0734303af style: Message-Header modernisiert — Dots statt Emojis, Timestamp-Spacing [appimage]
All checks were successful
Build AppImage / build (push) Successful in 6m10s
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-20 22:53:41 +02:00
Eddy
1b1800e32b fix: escape HTML in thinking blocks to prevent XSS
All checks were successful
Build AppImage / build (push) Has been skipped
Both bridge and frontend now properly escape &, <, > in thinking
content before injecting as innerHTML.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-20 22:41:42 +02:00
Eddy
2b2e8fe932 chore: retrigger build [appimage]
All checks were successful
Build AppImage / build (push) Successful in 6m5s
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-20 22:39:08 +02:00
Eddy
1689837eb4 feat: premium thinking block UI — ChatGPT/Claude.ai style [appimage]
Some checks are pending
Build AppImage / build (push) Waiting to run
Thinking blocks now look like a proper AI chat app:
- Indigo accent border (left-side, animates on hover/open)
- Dark card background (#161b27) distinct from message
- Custom lightbulb SVG icon + chevron (rotates on open)
- Monospace font for thinking content (JetBrains Mono)
- Max-height 300px with custom scrollbar
- No default disclosure markers (hidden via CSS)
- Summary shows "Überlegung" + line count on the right
- Text-based pattern detection expanded (English + German)
- Bridge escapes HTML in thinking content to prevent XSS

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-20 22:36:29 +02:00
Eddy
8336ac6eb1 feat: thinking blocks collapsed by default [appimage]
Some checks failed
Build AppImage / build (push) Has been cancelled
- Extended Thinking (SDK thinking blocks) rendered as collapsible
  <details> elements — closed by default, click to expand
- Text-based thinking patterns (Lass mich..., Ich analysiere...)
  auto-detected and wrapped in collapsible block
- Clean styling: subtle border, smaller font, 💭 icon
- Bridge now forwards thinking content blocks (previously ignored)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-20 22:32:55 +02:00
Eddy
8a7e0d87f3 feat: collapsible messages, German cost format, stats persistence [appimage]
Some checks failed
Build AppImage / build (push) Has been cancelled
- Long messages (>25 lines) auto-collapse with expand/collapse button
- Cost display uses German format: "16,23$" instead of "$16.230"
- Session stats (tokens, cost, count) persist to DB after each response
  via new update_session_stats command — survives app restart
- Small costs shown as cents (e.g. "3,2¢")

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-20 22:31:25 +02:00
Eddy
50d46dca79 docs: update roadmap — Phase 3 mostly complete
All checks were successful
Build AppImage / build (push) Has been skipped
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-20 22:22:14 +02:00
Eddy
60e426a13d perf: lazy panel loading + auto-retry + bridge heartbeat [appimage]
Some checks failed
Build AppImage / build (push) Has been cancelled
- Panels werden erst bei Tab-Aktivierung geladen (dynamic import mit Cache)
  → schnellerer App-Start, weniger initiales DOM
- Auto-Retry mit Backoff (3 Versuche, 2s/5s/10s) bei transienten Fehlern
  (Rate-Limit, Netzwerk, 5xx) → keine manuellen Neustarts mehr
- Bridge-Heartbeat alle 30s → Rust erkennt tote Bridge sofort

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-20 22:21:51 +02:00
Eddy
3f22e735cd chore: trigger build [appimage]
Some checks failed
Build AppImage / build (push) Has been cancelled
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-20 22:18:10 +02:00
Eddy
e0653ddcab fix(voice): robust microphone fallback for WebKitGTK "Invalid constraint"
All checks were successful
Build AppImage / build (push) Has been skipped
WebKitGTK throws various error types (TypeError, OverconstrainedError,
etc.) when getUserMedia is called. Instead of only catching specific
error names, now ALL errors trigger device-enumeration fallback chain:
1. { audio: true }
2. Explicit deviceId from enumerateDevices()
3. { audio: {} } as last resort

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-20 22:17:52 +02:00
Eddy
5d72b85bf4 build: Phase 3 Performance-Release [appimage]
All checks were successful
Build AppImage / build (push) Successful in 6m6s
KB-Cache, Bridge-Warmstart, Multi-Queue, maxTurns 200

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-20 22:05:11 +02:00
Eddy
3d84feab6f feat: Phase 3 Performance — KB-Cache, Bridge-Warmstart, maxTurns 200
All checks were successful
Build AppImage / build (push) Has been skipped
- KB-Cache im RAM: Suchergebnisse 60s gecacht, kein MySQL-Roundtrip pro Nachricht
- Bridge wird beim App-Start sofort gestartet (kein Cold-Start bei erster Nachricht)
- Bridge-Start-Wait von 500ms auf 200ms reduziert
- maxTurns von 25 auf 200 erhoeht (verhindert "maximum turns reached" bei komplexen Tasks)
- invalidate_kb_cache Command fuer manuelles Cache-Leeren

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-20 22:02:23 +02:00
Eddy
5b857ebba4 feat: Multi-Queue — mehrere Nachrichten senden waehrend Claude arbeitet
All checks were successful
Build AppImage / build (push) Has been skipped
Statt Single-Slot-Puffer jetzt FIFO-Queue:
- Nachrichten erscheinen sofort im Chat (mit Queued-Markierung)
- Werden automatisch nacheinander abgearbeitet
- Send-Button + Mikrofon nie disabled waehrend Processing
- Queue visuell mit Anzahl + Cancel-Button
- Stopp loescht gesamte Queue

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-20 21:52:26 +02:00
Eddy
22bf5333af refactor: Roadmap neu geschrieben — Performance-First, alte Test-Roadmap entfernt
All checks were successful
Build AppImage / build (push) Has been skipped
Fokus auf Geschwindigkeitsvorteile gegenueber Codium + Claude Code.
Abgeschlossene Phasen 1-16 zusammengefasst, neue Phasen 3-6 definiert.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-20 21:45:48 +02:00
Eddy
0bdecfd4bd build: AppImage neu bauen mit Mikrofon-Fix [appimage]
All checks were successful
Build AppImage / build (push) Successful in 6m9s
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-20 21:33:31 +02:00
Eddy
2ff3c8220f fix: Mikrofon OverconstrainedError Fallback für WebKitGTK
All checks were successful
Build AppImage / build (push) Has been skipped
Bei OverconstrainedError wird erst Device-Enumeration versucht, dann
Fallback auf einfache Constraints. VoicePanel nutzt ebenfalls Fallback
von strikten auf einfache Audio-Constraints.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-20 21:32:11 +02:00
Eddy
2e473cde00 fix: stale Claude-Session-ID automatisch resetten [appimage]
All checks were successful
Build AppImage / build (push) Successful in 6m20s
Wenn die in SQLite gespeicherte claude_session_id keine passende
Konversation mehr hat (neue Maschine, Cache geleert, frische Installation),
warf das SDK "No conversation found with session ID: <uuid>" und der
Chat blieb kaputt — der Retry in claude-bridge.js hat NIE gegriffen, weil
er auf queryOptions.sessionId geprueft hat waehrend wir queryOptions.resume
setzen.

Fix:
- claude-bridge.js: Retry-Guard auf queryOptions.resume umgezogen + Match
  auf die konkrete Fehlermeldung ("No conversation found with session ID").
  Bei stale ID: session-reset-Event an Rust senden, dann retry ohne resume.
- claude.rs: Neuer Handler fuer session-reset — loescht die stale
  claude_session_id aus der aktiven Session in der DB, damit die App beim
  naechsten Start nicht wieder in denselben Fehler laeuft.

Reproduziert auf VM + NixOS-Desktop nach frischer Installation.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-20 17:16:35 +02:00
Eddy
3913e1cce8 fix: HiDPI-Scaling im Nix-Launcher — liest Xft.dpi, erzwingt Xwayland
All checks were successful
Build AppImage / build (push) Has been skipped
GTK3 kann unter Wayland kein natives fractional Scaling. Der Launcher
liest jetzt Xft.dpi aus xrdb, setzt GDK_DPI_SCALE entsprechend (fuer
scharfe Fonts) und erzwingt unter Wayland GDK_BACKEND=x11, damit der
Compositor die Fenstergroesse skaliert. Override per CLAUDE_DESKTOP_SCALE
oder abschaltbar mit CLAUDE_DESKTOP_SCALE=off.

Funktioniert transparent auf X11-VM und KDE-Wayland-Desktop.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-20 17:10:56 +02:00
be38b6e700 fix: KDE-Cache (kbuildsycoca) neu bauen, sonst fehlt Menue-Eintrag
All checks were successful
Build AppImage / build (push) Has been skipped
2026-04-20 17:02:52 +02:00
03e1ae527b fix: Installer nutzt 'nix profile' statt nix-env wenn Profil inkompatibel
All checks were successful
Build AppImage / build (push) Has been skipped
Auf aktuellen NixOS-Systemen mit flakes ist das Default-Profil unter
~/.local/state/nix/profiles/profile inkompatibel mit nix-env. Der
Installer erkennt jetzt den Profil-Typ (nix profile list) und nutzt
den passenden Befehl (nix profile install / nix-env -i).
2026-04-20 17:00:06 +02:00