Meleki
4bec740765
feat: Finalizer-Agent – dritter Agent der nach Worker + Review einschreitet
...
Backend:
- SessionRecord + DB-Migration: finalizer_agent_id auf sessions
- ChatContext.FinalizerContext (Model, SystemPrompt, Tools, Workspace)
- ChatService: FinalizerContext aufbauen (analog zu ReviewContext)
- AnthropicService: RunFinalizer() nach Review-Phase (oder direkt nach Worker)
- RunReviewAgentChat() refactored zu generischem RunAgentChat()
mit agentType-Parameter ('review' | 'finalizer') für SSE-Events und DB-Tags
- SSE-Events: finalizer_start, finalizer_text, finalizer_tool_use, finalizer_done
Frontend:
- Session-Page: Finalizer-Agent-Picker (im 'Weitere Einstellungen' Bereich)
- Chat: SSE-Events für Finalizer-Phase verarbeiten
- UI: addReviewBubble/finalizeReviewBubble unterstützen agentType 'finalizer'
mit eigener Farbe (success-green) und Flag-Checkered-Icon
- renderMarkdown: [Finalizer: AgentName] Tags parsen
- History: Finalizer-Messages als .finalizer-bubble rendern
- Shared-Page: Finalizer-Messages korrekt erkennen und stylen
- Dashboard: Finalizer-Badge (flag-checkered) auf Session-Cards
2026-03-06 23:35:30 +01:00
Meleki
6369f7f09c
Review-Nachrichten: konsistentes Styling in History, Chat und Shared-Links
...
- renderMarkdown: [Review: Agent], [Review-Feedback ...], [APPROVED] Tags parsen
→ styled HTML-Header bzw. ausgeblendet (zentral für alle Views)
- history.js: Review-Messages als .review-bubble rendern statt .assistant/.user
Review-Messages vom Merging ausgenommen
- shared-page.js: Review-Messages erkennen → .review-bubble Klasse
Merge-Logik schützt Review-Messages vor Zusammenführung
- addReviewBubbleStatic(): Neue Funktion für History-Rendering mit allen
Buttons (Reply, Delete, Mark, Share)
- chat.css: .review-inline-header, .review-inline-feedback Styles
2026-03-06 17:31:30 +01:00
Meleki
489b5e0eb0
feat: Timestamps + LaTeX/KaTeX-Rendering im Chat
...
Timestamps (dd.MM.yyyy HH:mm:ss):
- Neuer _formatTimestamp() + _addTimestamp() Helper in ui.js
- Timestamp bei allen User- und Assistant-Nachrichten (live, history, archiv)
- Erscheint on hover, halbtransparent, rechts oben an der Bubble
LaTeX/Math-Rendering mit KaTeX 0.16.21:
- KaTeX lokal eingebunden (JS + CSS + 21 woff2-Fonts)
- renderMarkdown() schützt LaTeX vor Markdown-Parsing
- $$...$$ → Block-Math (zentriert), $...$ → Inline-Math
- Fehlerhafte Ausdrücke als <code> Fallback
- KaTeX-Display Styling in markdown.css
Weitere Änderungen:
- theme.css: Neue --info Farbe
- Blockquote-Styling: info-Farbe statt halbtransparent
2026-03-05 18:25:03 +01:00
Meleki
be29984b25
feat: Einzelne Nachrichten als Link teilen
...
Backend:
- SharedMessageRecord Model + shared_messages DB-Tabelle
- SharedEndpoint: POST /api/messages/{id}/share, GET /api/shared/{token},
GET /api/shared (Liste), DELETE /api/shared/{token}
- Auth-Ausnahme für GET /api/shared/{token} (öffentlich ohne Login)
- DB-Methoden: CreateSharedMessage, GetSharedMessage, GetChainMessagesUpTo
Frontend:
- Share-Button (fa-share-alt) an jeder Nachricht
- Kontextmenü: Einzelnachricht oder mit Thread-Kontext teilen
- Link wird automatisch in Zwischenablage kopiert
- Öffentliche Shared-Page (#shared/{token}) ohne Login
- Markdown-Rendering in der geteilten Ansicht
- CSS für Share-Button, Share-Menü und Shared-Page
2026-03-04 23:34:00 +01:00
Meleki
8fc29c82d9
refactor: Chat-Payload vereinfacht + Inline-Bilder statt Platzhalter
...
Backend:
- ChatEndpoint empfängt nur noch content + sessionId (nicht mehr die gesamte History)
- History wird komplett aus DB aufgebaut via BuildHistoryFromDb
- Gelöschte Nachrichten (deleted_on) werden aus History gefiltert
- Leere Nachrichten werden übersprungen (kein API 400 mehr)
- BuildHistoryFromDb optimiert: nur Text für ältere Chains, Tool-Calls nur für aktuelle Chain
- GetChainMessages: includeDeleted-Parameter (Default: false)
- Archiv-Export nutzt includeDeleted: true
Frontend:
- messages[]-Array komplett entfernt (kein Client-seitiger History-State mehr)
- apiChat() sendet nur content + sessionId
- Inline-Bilder: [Bild: name] wird durch <img> ersetzt (live mit DataURL, History per API-Nachladen)
- _autoLoadImageAttachments() für History/Archiv/ältere Nachrichten
- Klick auf Inline-Bild öffnet Vollbild-Modal
2026-03-04 14:29:33 +01:00
Meleki
a14a991a0f
feat: Nachrichten als gelöscht markieren
...
- DB: deleted_on TEXT Spalte in messages (Migration)
- Backend: ToggleMessageDelete(), includeDeleted-Parameter in allen History-Queries
- Neuer Endpoint: PUT /api/messages/{id}/delete
- Frontend: Trash-Button zwischen Reply- und Mark-Button
- Gelöschte Nachrichten: durchgestrichen + roter Rand (oder versteckt je nach Einstellung)
- Einstellungen: Toggle-Switch 'Gelöschte Nachrichten anzeigen'
- KI-Payload: gelöschte Nachrichten werden nicht mitgeschickt
2026-03-03 11:45:52 +01:00
Meleki
5d132585d5
Fluent Emoji 3D: Unicode-Emojis durch Microsoft Fluent Emoji ersetzen
...
- emoji.js: Emoji-Replacement-Engine mit umfassendem Unicode 15.0 Regex
- String-basiert (replaceEmojisWithFluent) in renderMarkdown()
- DOM-basiert (parseFluentEmojis) als Post-Processing via TreeWalker
- CDN: @lobehub/fluent-emoji-3d@1.1.0 via jsdelivr (WebP/3D)
- Intelligenter Fallback: fe0f-Varianten, dann Original-Unicode
- Fail-Cache verhindert wiederholte Requests für fehlende Emojis
- User-Nachrichten werden jetzt als Markdown gerendert (renderMarkdown)
- [Datei: ...] Refs: Platzhalter-Mechanismus vor Markdown-Parsing
- Reply-Quotes bleiben durch Wrapper-Div erhalten
- parseFluentEmojis an allen Render-Stellen integriert:
addAssistantBubble, endStreamBubble, _renderUserTextContent,
_renderSystemPromptBlocks, history._renderMessagesIntoFragment,
history.loadLatestArchive
- CSS: .fluent-emoji Klasse (1.2em, inline, scale 1.25)
- CSS: white-space:pre-wrap nur noch für .msg:not(.markdown)
2026-03-03 05:53:31 +01:00
Meleki
f49c526384
Frontend: Aufeinanderfolgende Assistant-Text-Messages gleicher Iteration mergen
...
- Neue Hilfsfunktion _mergeConsecutiveAssistantTexts() in history.js
- Nahtloses Zusammenfügen (Whitespace-Trenner) bei gleicher Iteration
- Angewandt in renderMessages(), _renderMessagesIntoFragment() und loadLatestArchive()
- Behebt fragmentierte Darstellung bei Web-Search-Antworten
2026-03-02 14:29:24 +01:00
Meleki
575e5c1d44
feat: Ältere Nachrichten nachladen per Button (500er Batches)
...
- Backend: beforeId-Parameter + GetActiveMessagesBeforeId + GetActiveMessageCountBeforeId
- Frontend: Button 'X ältere Nachrichten laden' statt Info-Text
- Archiv-Button erscheint erst wenn alle älteren Nachrichten geladen
- Scroll-Position bleibt beim Nachladen erhalten
- Fix: wwwroot Quell-Dateien mit publish synchronisiert
2026-03-01 16:32:08 +01:00
Meleki
38bdb4408c
feat: Chain-Meta Anzeige-Einstellung + Darstellung verbessern
...
- Settings: 'Chain-Info' Dropdown (Immer/Manchmal/Nie), Default 'Manchmal'
- Manchmal-Regeln: In+Out >= 10k Tokens, >= 25 Iterationen, >= 90s Dauer
- Model-Name: claude-opus-4-6 → Opus 4.6, Unbekanntes → 'Unbekannt'
- Tokens: In/Out zu einem Badge zusammengeführt
- Cache: Read/Write zu einem Badge zusammengeführt
- Iterations → Iterationen
2026-03-01 16:20:01 +01:00
Meleki
7490d483c2
feat: Tool-Call-Anzeige in Settings konfigurierbar (alle/modifikationen/verstecken)
...
- Neue Chat-Section in Settings mit Dropdown für Tool-Call-Sichtbarkeit
- Default: Nur Modifikationen (write_file, edit_file, delete_file, memory_write)
- isToolVisible() filtert beim Streaming, History und Archiv-Rendering
- Reset-Button setzt auch Tool-Call-Einstellung zurück
2026-03-01 16:04:00 +01:00
Meleki
137090435c
fix: Chat-Nachrichten Reihenfolge korrigiert (doppeltes reverse entfernt)
2026-03-01 15:51:14 +01:00
Meleki
e31daa2385
feat: Chat-History auf max. 500 Nachrichten limitieren
2026-03-01 15:48:19 +01:00
Meleki
19f32442b1
feat: Nachrichten als wichtig markieren (Stern-Button)
...
- MessageRecord: neues Property IsMarked
- DatabaseService: Migration is_marked, ToggleMessageMark(), GetMarkedMessages()
- HistoryEndpoint: PUT /api/messages/{id}/mark (Toggle)
- SystemPromptBuilder: markierte Nachrichten als Referenz im System-Prompt
- ChatEndpoint + SessionEndpoint: markierte Nachrichten laden und an Builder übergeben
- Frontend: Stern-Button (☆/★) auf jeder Nachricht, Toggle per API
- CSS: .marked-Klasse mit gelbem Seitenrand, Button-Styling
2026-03-01 01:30:21 +01:00
Meleki
57b4b5931b
feat: Reply/Zitat-Feature für Chat-Nachrichten
...
- Reply-Button (Hover) auf jeder User/Assistant-Nachricht
- Reply-Preview-Leiste über dem Input-Feld (mit Timestamp, Rolle, Text-Preview)
- Beim Senden: Zitat als Kontext-Block vorangestellt (> [Zitat: HH:MM, Role]:)
- User-Nachrichten parsen Zitat-Blöcke als visuelle Quote-Elemente (blaue Borderlinie)
- Timestamp-basierte Referenzierung (HH:MM oder DD.MM. HH:MM)
- clearReply() bei Chat-Clear, Navigation und Destroy
2026-03-01 01:06:23 +01:00
Meleki
7c0e5d180a
fix: Streaming-Navigation-Bugs (doppelte Messages, client_disconnected), Tool-Result ohne Truncation
...
- _chatAbandoned-Flag statt AbortController: Backend-Stream läuft bei Navigation weiter, Frontend ignoriert Events
- stopHistoryPolling() während Streaming-Poll aktiv, verhindert parallele Polls
- _pollLock in pollHistory() gegen Race-Conditions bei gleichzeitigen Poll-Aufrufen
- Tool-Result truncate(300) im Live-Chat entfernt, in History beibehalten
- Dashboard Badge-Styling verfeinert
2026-03-01 00:32:05 +01:00
Meleki
8c9f54da79
Alle Unicode-Icons durch Font Awesome 4.7 Icons ersetzt
...
- chat.js: Attachment-Labels, Streaming-Spinner, File/Ref-Previews, Warning/Error-Bubbles
- chat-page.js: Meta-Bar Status (Erfolg/Fehler), Backup-Meldungen
- dashboard.js: Nachrichten/Ordner/Persona-Icons
- session-page.js: Remove-Buttons
- history.js: Archiv-Badge, Attachment-Indicator
- ui.js: Archiv-Button, Warning/Error-Bubble Icons
- file-explorer.js: Verzeichnis/Datei-Icons, Back/Close-Buttons, getFileIcon()
- index.html: Header-Menü, Send-Button, Settings-Button
2026-02-28 19:10:24 +01:00
Meleki
8f4fe8a504
Fix: Meta-Bar zeigt initial 'Bereit', Chain-Meta-Badges korrekt positioniert
2026-02-28 18:36:30 +01:00
Meleki
873e40b5d1
Chain-Meta als Badges im Chat statt in Meta-Bar anzeigen
...
- Meta-Bar zeigt nur noch Status (Streaming.../Bereit)
- Chain-Infos (Model, Tokens, Dauer etc.) als Badges im Chat
- Badges bei Streaming, History-Load und Archiv-Ansicht
- buildMetaString → buildMetaBadges, neue addChainMetaBubble Funktion
2026-02-28 18:31:28 +01:00
Meleki
76341dc42b
Fix: Chat scrollt nach Font-Loading nochmal nach unten
...
scrollDown() wartet jetzt auf document.fonts.ready und scrollt erneut.
chat-page.js wartet nach loadHistory() zusätzlich per requestAnimationFrame
auf den Repaint nach Font-Swap.
2026-02-28 15:54:47 +01:00
Meleki
3cb468f4e8
Chat: User-Nachrichten [Datei:]-Tags als klickbare Chips rendern, System-Prompt mit Workspace-Pfad und Leerzeilen-Hinweis erweitern
2026-02-28 11:53:50 +01:00
Meleki
b07e776b7a
Massive style changes
2026-02-27 23:39:06 +01:00
Meleki
e662548d79
Avatar: Ctrl+V paste + serverseitige Skalierung auf max 256px; Tool-Boxes: Diff-View für edit/write_file, Foldout für alle Tools, stop_reason im Chat; ImageSharp 3.1.12
2026-02-27 16:46:07 +01:00
Meleki
18b2feef4a
Parse assistant messages as Markdown (marked.js)
2026-02-27 14:47:33 +01:00
Meleki
c2335c542f
Frontend: trim message text in all bubble renderers
2026-02-27 11:25:01 +01:00
Meleki
01c5bedb6d
Attachment-Indicator auch in archivierten Nachrichten anzeigen
2026-02-27 09:08:15 +01:00
Meleki
663f2c2a9a
Multi-File Upload, Dateinamen in History, kein Auto-Scroll bei Attachment-Klick
2026-02-27 08:28:59 +01:00
Meleki
1271c9c651
File-Upload: Attachments-Tabelle, Base64-Speicherung, Frontend mit Drag&Drop/Paste/Preview, Error-Handling Fix
2026-02-27 08:11:46 +01:00
Meleki
25f07caf83
Sessions: Sidebar, Session-Wechsel, Archivieren-Button, alles session-bezogen
2026-02-26 18:37:24 +01:00
Meleki
843c210209
Archiv-System: Clear archiviert, Button lädt ältere Archive chronologisch, kein Limit
2026-02-26 16:52:58 +01:00
Meleki
fb2c3a0720
History Polling: Message-ID-basiert, neuer /api/history/poll Endpoint
2026-02-26 15:54:01 +01:00
Meleki
19f926da05
Frontend Refactoring: HTML/CSS/JS getrennt, modulare Struktur
2026-02-26 15:43:10 +01:00