Meleki
7149904ae4
Profil-Seite: Anzeigename, Passwort ändern, Persona (ersetzt USER.md)
...
- Neuer Menüpunkt 'Mein Profil' statt 'Logout'
- Profil-Page: Anzeigename, Persona (Freitext), Passwort ändern, Logout
- ProfileEndpoint: GET/PUT /api/profile, PUT /api/profile/password
- User-Persona im System-Prompt statt USER.md (Fallback: Anzeigename/Username)
- SystemPromptBuilder: dataDir-Parameter entfernt, userPersona-Parameter hinzugefügt
- DB-Migration: persona-Spalte in users-Tabelle
2026-03-02 15:02:39 +01:00
Meleki
9a59ae686d
feat: User-Management mit Token-basierter Authentifizierung
...
Backend:
- UserRecord Model + Users-Tabelle in DB
- AuthService: SHA256-Passwort-Hashing, Token-Verwaltung (ConcurrentDictionary)
- AuthMiddleware: Schützt alle /api/-Routes (außer /api/auth/login)
- AuthEndpoint: Login, Logout, Me
- Default-User admin/admin wird automatisch erstellt
Frontend:
- Login-Page mit Formular (Enter-Key-Support)
- Globaler Fetch-Interceptor: 401 → automatisch Login-Redirect
- Auth-Check beim App-Start und bei Hash-Änderungen
- Logout-Link im Dashboard-Header
- Login-CSS: Zentrierte Login-Box
2026-03-02 11:29:09 +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
d42e5077c4
System-Prompt-Modal: strukturierte Blöcke via API statt Frontend-Parsing
...
- SystemPromptBuilder.BuildBlocks() liefert List<PromptBlock> mit Icon/Label/Content
- Neuer Endpoint GET /api/sessions/{id}/system-prompt-blocks (JSON-Array)
- Labels beschreiben präzise die Herkunft jedes Blocks (Agent, Session, System, Skills)
- Verhalten + Erinnerung nur noch mit Workspace + ToolChoice:any (Bugfix)
- Frontend: simples Block-Rendering statt komplexer Heuristik-Logik
- SP-Block Styling mit Label-Header und Content-Box
2026-03-01 21:31:38 +01:00
Meleki
cf6caea2dc
Implement Skills feature: filesystem-based skills with agent assignment
...
- Add SkillService: scans data/skills/ directory, parses _meta.json and SKILL.md frontmatter
- Add SkillEndpoint: REST API for listing skills and managing agent-skill assignments
- Add agent_skills DB table for agent-to-skill mapping (only relation in DB, skills live on filesystem)
- Extend SystemPromptBuilder: inject assigned skills' SKILL.md content into system prompt
- Extend ChatEndpoint + SessionEndpoint: load agent skills and pass to prompt builder
- Frontend: skill checkboxes in agent form, API functions for skill management
- Add form.css styling for skill list items
2026-03-01 17:22:14 +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
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
ac150af4c5
Git-Status Endpoint mit Outgoing-Commits und Dashboard-Badges
...
- GET /api/sessions/{id}/git-status: Parsed git status --porcelain in add/edit/delete Listen
- Outgoing-Commits: Zählt unpushed Commits via git rev-list --count @{u}..HEAD
- Dashboard: Zeigt Git-Badges asynchron pro Session (+N, ~N, -N, ↑N)
- CSS: Farbige Badges (grün=add, orange=edit, rot=delete, blau=outgoing)
2026-02-28 23:23:52 +01:00
Meleki
ab234fde69
Custom Commands: Typen (Hintergrund/Vordergrund/Nachricht) mit Output-Modal
2026-02-28 21:30:15 +01:00
Meleki
d434c3ff2a
Datenbank sichern: Backup als .tar.gz mit Server-Ablage und Client-Download
...
- Neuer POST /api/backup Endpoint (BackupEndpoint.cs)
- Packt gott.db in data/backup/gott-{timestamp}.tar.gz
- Gibt Archiv gleichzeitig als Download an Client zurück
- Button 'Datenbank sichern' im Header-Dropdown-Menü
- Content-Disposition Header-Parsing mit filename* UTF-8 Support
2026-02-28 18:18:51 +01:00
Meleki
f74409dd89
Token-Optimierung: Prompt Caching + Tool-Result-Truncation in History
2026-02-28 16:21:08 +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
73c6d38254
fix: custom command execution via systemd-run für prozessunabhängigkeit
2026-02-27 13:34:14 +01:00
Meleki
002ef293f0
System prompt: build from agent persona/instructions, store in chain, remove UI textarea
2026-02-26 21:42:32 +01:00
Meleki
a90b9427a5
Sessions: edit form, soft-delete, lazy creation, chat as separate page
...
- Session click opens edit form (name, description, image, agent) instead of chat
- Chat is now a separate route (#chat/{id}), opened via button
- Sessions created on save, not on click
- Soft-delete for sessions (is_deleted flag)
- Delete button in session form
- Removed title double-click editing from chat
- Card images now square (aspect-ratio: 1)
- New Session as placeholder card
2026-02-26 21:25:35 +01:00
Meleki
449c872296
Agents: CRUD, DB table, session binding, replace model picker
...
- agents table with name, avatar, description, model, persona, instructions, soft-delete
- AgentEndpoint (GET/POST/PUT/DELETE /api/agents)
- sessions + chains now reference agent_id
- ChatEndpoint resolves agent from session (no agent = no chat)
- system prompt built from agent persona + instructions
- frontend: agent editor with avatar upload, agent cards on dashboard
- session: agent dropdown replaces model picker, choice persisted
2026-02-26 20:59:19 +01:00
Meleki
80537c49ed
SPA: Router, Dashboard, Session/Agent/Settings Pages, Sidebar entfernt
2026-02-26 19:50:00 +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