Role-Change-Effect scrollt jetzt bei jedem Rollenwechsel (nicht nur user),
Content-Tracker trackt auch parts-Array fuer Tool-Calls und Streaming.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Messages werden nach Timestamp sortiert + Race-Condition-sicherer Merge beim DB-Load
- ChatPanel.scrollToBottom() auf falschem Container entfernt, Scroll nur noch in MessageList
- userScrolledUp wird bei Session-Wechsel resettet (blockierte Auto-Scroll)
- Instant-Scroll Guard schneller freigegeben (1 statt 2 rAFs bei Streaming)
- KB-Hints: Session-Reset bei Chat-Wechsel, Relevance statt Priority im Ranking
- KB-Keywords nicht mehr akkumuliert (verhindert generische Dauertreffer)
- Cache-TTL 60s→15s, Hints alle 2 statt 3 Nachrichten
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Crash-Fix:
- src/db.rs:801 panickte mit "byte index 240 is not a char boundary"
mitten in einem ✅-Emoji → SIGABRT. Neues strutil-Modul mit
safe_truncate()/safe_truncate_ellipsis() (5 Tests grün), an allen
&s[..N]-Stellen in db/claude/knowledge/session/memory.rs eingebaut.
- update.rs: Stale Lock-Files vom letzten Crash werden jetzt
protokolliert ("🧹 Stale Lock-Datei aus vorherigem Crash gefunden").
Chat-Polish:
- Input-Textfeld wird nach Senden zuverlässig geleert (Store-Reset +
DOM-Reset + tick — Svelte 5 bind:value mit Auto-Subscription
aktualisiert sonst nicht synchron).
- ApprovalBar.svelte (NEU): Sticky-Bar überm Input mit klar
beschrifteten Buttons "Übernehmen"/"Verwerfen" statt mehrdeutigem
"Behalten/Zurueck". Bleibt sichtbar wenn der Chat scrollt. Klick
auf Datei-Name scrollt zur Inline-Karte und blinkt sie. Shortcuts
Ctrl+Enter/Ctrl+Backspace.
- MessageList: Auto-Scroll trackt jetzt auch toolCalls.length und
Status-Änderungen, plus ResizeObserver am Container. Smooth bei
kleinen Distanzen, instant bei großen.
- Streaming-Caret: pulsierender Block-Cursor mit Glow-Shadow.
- Tool-Cards: Slide-In-Transition + Shimmer-Animation auf running.
- WorkingIndicator: Verb passt sich an processingPhase an.