Meleki
dcedbaa074
refactor: Backend deduplizieren – 13 Dateien, -528 Zeilen netto
...
ChatContext: 3 identische Context-Klassen (PreparerContext, ReviewContext,
FinalizerContext) zu einer SubAgentContext-Klasse zusammengefasst.
ChatService: 3x40 Zeilen Sub-Agent-Setup durch BuildSubAgentContext() ersetzt.
AnthropicService: 5 Hilfsmethoden extrahiert – ExtractWebSearchSources(),
TruncateToolResult(), AddToolsToPayload(), ParseServerToolUse(), TrackUsage().
WorkspaceEndpoint: 5 Session/Agent-Endpoint-Paare durch generische Core-Handler
mit basePath-Parameter ersetzt. Ungenutzte rmdir-Endpoints entfernt.
AgentEndpoint: Doppeltes Agent-DTO-Mapping durch MapAgentList() ersetzt.
SessionEndpoint: Doppelte Session/Agent-Auflösung durch ResolvePromptContext() ersetzt.
DatabaseService: Toten Code entfernt (SetSessionTelegramChatId,
ClearSessionTelegramChatId, GetSessions, GetUserSessions). ConvertDataUrlToWebP
und ResizeDataUrlToWebP zu einer Methode zusammengefasst.
TelegramEndpoint: Bot-DTO-Mapping durch MapBotResponse() dedupliziert.
KreaEndpoint + SkillEndpoint: Thumbnail-Generierung in ImageService.GenerateThumbnail()
extrahiert, SixLabors-Imports aus Endpoints entfernt.
CronjobEndpoint: 7x ctx.Items[UserId] durch ctx.GetUserId() ersetzt.
2026-03-09 09:18:49 +01:00
Meleki
df68843e82
feat: EasyMDE-Editor für Persona und Session-Kontext
...
- profile-page.js: #profilePersona textarea → EasyMDE mit Toolbar und Dark-Theme
- session-page.js: #sessionContext textarea → EasyMDE mit Toolbar und Dark-Theme
- form.css: Override-Styles für EasyMDE in Formularen (height: auto, border-radius)
- base.css: ul margin-left für korrekte Listen-Einrückung
- Beide Editoren: sauberes Cleanup via toTextArea() in destroy()
- Nutzt bestehende fe-mde-wrap Styles aus file-explorer.css
2026-03-05 20:24:30 +01:00
Meleki
3ef78b5eb1
feat: Admin-Benutzerverwaltung + Dashboard-Layout-Fixes
...
Backend:
- AdminEndpoint.cs: 5 Endpunkte (List, Create, Update, Reset PW, Delete) - Admin-only
- DatabaseService: CreateUser(), UpdateUserAdmin(), DeleteUser() (kaskadiert Tokens + Shares)
- Route in Program.cs registriert
Frontend:
- admin-page.js: User-Liste mit Edit/Delete, Inline-Formular Create/Edit
- api.js: 5 Admin-API-Funktionen
- index.html: Template tpl-admin, Script-Tag, Dashboard-Link 'Benutzerverwaltung'
- dashboard.js: Admin-Link nur für Admins sichtbar
- form.css: Styles für admin-user-list, admin-user-row, admin-checkbox-row
- dashboard.css: Header-Overflow-Fix, Agents vor Cronjobs
- index.html: Template-Reihenfolge Agents vor Cronjobs
TODO: User-Management als erledigt markiert
2026-03-05 19:19:16 +01:00
Meleki
dbeba6535a
fix: Nachrichtenanzahl zählt nur text-Messages, keine tool_use/tool_result
...
- 5 SQL COUNT-Queries mit 'type = text' Filter versehen:
- GetSessionsWithStats (activeCount + totalCount)
- GetActiveMessageCount
- GetActiveMessageCountBeforeId
- CreateArchive (messageCount)
- Dashboard: Aktive und archivierte Nachrichten separat angezeigt
- ArchiveMessageCount als eigenes Feld im Session-DTO
- TODO.md: Nachrichtenzählung-Bug als erledigt markiert
2026-03-05 16:33:03 +01:00
Meleki
1693ace243
docs: Shared Messages Feature in ARCHITECTURE.md, ARCHITECTURE_QUICK.md und TODO.md ergänzt
...
- ARCHITECTURE.md: Neues Kapitel 17 (Nachrichten teilen), ER-Diagramm,
Tabelle shared_messages, SharedEndpoint, Auth-Ausnahme, Frontend-Route,
Dateibaum aktualisiert, Endpoint-Anzahl 14→15
- ARCHITECTURE_QUICK.md: Tabelle, Endpoint, Route, Auth-Ausnahme ergänzt
- TODO.md: Share-Feature als erledigt markiert, neuen Punkt für
Share-Verwaltung hinzugefügt
2026-03-04 23:38:13 +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
b645625b56
Cronjobs + AnthropicService Singleton Refactoring
...
Cronjobs:
- CronjobService (BackgroundService) prüft jede Minute auf fällige Jobs
- Cron-Expression in Server-Lokalzeit via Cronos (CronFormat.Standard)
- Cronjob-Ausführung: Prompt → Session → Agent-Antwort in Chat-History
- Optionale Benachrichtigungs-Session (notify_session_id): Zusammenfassung
wird in separate Session geschrieben (z.B. mit Telegram)
- Telegram-Benachrichtigung mit Cronjob-Name + Ursprungs-Session
- REST API: CRUD + toggle + manuelles Ausführen (/run)
- Frontend: Dashboard-Cards, Cronjob-Formular mit Cron-Vorschau,
Session-Dropdown, Notify-Session-Dropdown, Status-Box
Refactoring:
- AnthropicService als Singleton in DI registriert
- ChatEndpoint + TelegramService nutzen injizierte Instanz
- Redundante Dependencies (Token, ToolService, MemoryService) entfernt
Neue Dateien:
- Models/CronjobRecord.cs
- Services/CronjobService.cs
- Endpoints/CronjobEndpoint.cs
- wwwroot/js/pages/cronjob-page.js
- PLAN-Cronjob.md
2026-03-03 22:44:46 +01:00
Meleki
aac10901fa
build: WindowsApp/ aus csproj exkludieren, TODO aktualisiert
2026-03-03 16:28:11 +01:00
Meleki
cdd3414771
Fix button spacing, opacity simplification, gitignore cleanup
2026-03-03 15:53:59 +01:00
Meleki
c720a06c16
feat: todo_write tool-box mit custom parser, kein input, standardmäßig sichtbar
2026-03-03 14:50:22 +01:00
Meleki
5f2b2e2f18
feat: add glob, grep and todo_write builtin tools
2026-03-03 14:10:07 +01:00
Meleki
c3865d239f
chore: CSS-Cleanup opacity → var(--semi-transparent), TODO-Updates
2026-03-03 11:52:22 +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
493dfcda1c
fix: various small fixes (TODO, CSS z-index, telegram status styling, settings prompt)
2026-03-03 10:30:36 +01:00
Meleki
90afd79e76
fix: Dashboard Card-Dropdown nicht mehr abgeschnitten
...
- CSS: position: fixed statt absolute, z-index: 1000, box-shadow
- JS: Position dynamisch berechnet (getBoundingClientRect) beim Öffnen
- Viewport-Overflow-Korrektur falls Dropdown zu weit rechts/links
2026-03-03 09:24:26 +01:00
Meleki
24d818f5d2
docs: TODO Dashboard Menu-Dropdown Overflow-Bug notiert
2026-03-03 06:30:08 +01:00
Meleki
c2ae2e0ab4
Update TODO.md, Tooltip aktualisiert
2026-03-02 16:07:55 +01:00
Meleki
8039b47dec
Web-Suche (Agent-Toggle mit Versionswahl), Admin-only Backup, Haiku 4.5
...
- Agent: Web-Suche als Dropdown (Deaktiviert / 2025 / 2026) statt bool
- AnthropicService: web_search Tool dynamisch nach Version einfügen
- Stream: server_tool_use + web_search_tool_result Events verarbeiten
- Chat-Frontend: web_search_start/end Events mit Suchindikator
- Dashboard: Badge zeigt Web-Suche mit Jahresversion
- UserRecord: IsAdmin Feld, DB-Migration is_admin Spalte
- AuthMiddleware: IsAdmin aus DB laden und in Context setzen
- BackupEndpoint: Admin-Check (403 für Nicht-Admins)
- AuthEndpoint: isAdmin in Login/Me Response
- Frontend: Backup-Section nur für Admins sichtbar
- Haiku 4.5 als Model-Option (Agent-Dropdown + ChatEndpoint)
- TODO: Cronjobs, Haiku ergänzt
2026-03-02 14:05:59 +01:00
Meleki
485f47b29a
Browser Zurück/Vor-Navigation: pushState statt replaceState, popstate-Event
2026-03-02 13:02:52 +01:00
Meleki
90c24b0b1a
Chat-Button im Dashboard deaktivieren wenn kein Agent zugewiesen
2026-03-02 12:33:23 +01:00
Meleki
d05023b1da
Fallback-Workspace /tmp wenn Skills aktiv aber kein Workspace gesetzt
2026-03-02 12:31:28 +01:00
Meleki
41b0d6e350
TODO: CodeMirror horizontal scroll als erledigt markiert
2026-03-02 10:20:23 +01:00
Meleki
40bab457d9
AutoCommit: Bool → Dropdown (mention/enforce/forbid), leerer System-Prompt fix
2026-03-02 09:41:26 +01:00
Meleki
7410a18755
Fix: CodeMirror horizontaler Scroll im File Explorer
...
- min-width: 0 auf allen Flex-Ebenen (.fe-main, .fe-cm-wrap, #feCmHost, .CodeMirror)
- overflow: auto Override entfernt, CodeMirror-Default (overflow: scroll) reicht
- Klassisches Flexbox min-width: auto Problem behoben
2026-03-02 08:55:33 +01:00
Meleki
754b2aa3e3
fix: Krea-Tags in Code-Blöcken nicht parsen, Git-Verhalten unabhängig von ToolChoice
...
- renderMarkdown: Code-Blöcke (<pre>, <code>) vor Krea-Regex schützen
via Platzhalter-Swap, danach wiederherstellen
- SystemPromptBuilder: Git-Commit-Regeln nur an Workspace gebunden,
nicht mehr an ToolChoice:any – eigener PromptBlock mit Label
- CSS: modal-width Variable, Krea-Modal width:max-content, minor tweaks
- TODO.md aktualisiert
2026-03-02 07:59:29 +01:00
Meleki
4bf500ad47
feat: Stream-Abbruch per Stop-Button
...
- Neuer Stop-Button (#stop) neben Send-Button, erscheint nur während Stream
- AbortController in chat.js: abort() schließt SSE-Verbindung → Backend CancellationToken triggered
- apiChat() akzeptiert optionales AbortSignal
- AbortError-Handling: zeigt 'Abgebrochen' statt Fehlermeldung
- Button-Toggle in sendMessage(), stopStreaming(), startStreamingPoll(), Page-Load-Recovery
- CSS: .stop-btn mit --dangerous Farbe
- Diverse kleine UI-Fixes (TODO.md, theme.css box-spacing, settings-section Layout)
2026-03-02 06:52:26 +01:00
Meleki
b18dc78651
Add /Temp/ to .gitignore, mark session reference system-prompt feature as done
2026-03-01 16:43: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
0b842357a3
chore: File-Explorer Nachbesserungen (TODO abhaken, CSS/HTML Cleanup)
2026-03-01 15:57:14 +01:00
Meleki
e31daa2385
feat: Chat-History auf max. 500 Nachrichten limitieren
2026-03-01 15:48:19 +01:00
Meleki
8e585443e2
Backup: Data-Ordner statt nur DB sichern, von Chat in Einstellungen verschoben
2026-03-01 15:41:29 +01:00
Meleki
d913557173
feat: Memory-System mit persistenten Markdown-Dateien pro Agent
...
- MemoryService: Verwaltet data/agents/{agentId}/ Verzeichnisse
- MEMORY.md als Haupt-Memory-File
- memory/ Unterordner für Tages-Logs und thematische Notizen
- Sandbox-Prüfung verhindert Zugriff außerhalb des Agent-Dirs
- Memory-Tools für den Agent:
- memory_read: Liest Memory-Dateien
- memory_write: Schreibt/überschreibt oder hängt an (append)
- memory_list: Listet alle Memory-Dateien auf
- SystemPromptBuilder: Memory-Abschnitt mit Regeln und aktuellem
MEMORY.md-Inhalt wird in den System-Prompt injiziert
- ToolService/AnthropicService: Memory-Tools werden automatisch
eingebunden wenn MemoryService und AgentId verfügbar sind
- TODO.md: Embedding-basierte Suche und Subagents als Features
2026-03-01 13:27:08 +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
166465fd54
Update TODO.md
2026-02-28 23:16:52 +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
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
bba82aad7e
File Explorer: CodeMirror + EasyMDE statt Preview
2026-02-28 11:30:26 +01:00
Meleki
b4521a95ef
Edit TODO.md
2026-02-28 00:26:52 +01:00
Meleki
ada4d8c421
Add TODO.md
2026-02-28 00:24:12 +01:00