Commit Graph
36 Commits
Author SHA1 Message Date
MelekiandClaude Opus 4.8 e6770bb5f8 Fix shared-bot Telegram agent resolution and add effort badge
- TelegramService: build the chat context with the session owner instead
  of the bot owner, so a public/shared bot resolves the agent for foreign
  sessions; credentials/CLI permission stay with the bot owner.
- Agent cards: render an effort badge next to the model badge when an
  agent has an explicit reasoning effort set.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-20 12:56:42 +02:00
MelekiandClaude Opus 4.6 dd7cf0ec93 feat: chatUsageBadge-Setting + Dashboard-Menü als Dropdown
- Neues Setting chatUsageBadge (default: false) blendet Usage-Badge im Chat ein/aus
- Dashboard-Links durch 3-Dot-Header-Menü ersetzt (einheitlich mit Chat)
- Admin-Items über admin-only Attribut gesteuert, dashboard-links CSS entfernt

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-19 08:35:05 +01:00
Meleki db1a7c7f64 Refactoring + Dokumentation: api.js komprimiert (745→267 Zeilen), SseHelper extrahiert, DatabaseService in Partial Classes aufgeteilt, unbenutztes CSS entfernt, ARCHITECTURE.md/ARCHITECTURE_QUICK.md/README.md aktualisiert (neue Features: Embedding, Remote, API-Keys, 16 Tools) 2026-03-12 13:29:19 +01:00
Meleki 9140c4fcc7 feat(dashboard): klickbare Session-Cards + UI-Verbesserungen
- Session-Cards mit Agent sind klickbar (navigiert zum Chat)
- Card-Menü bleibt nutzbar via pointer-events Logik
- Menü-Reihenfolge: Bearbeiten vor Chat öffnen
- Session-Beschreibung: textarea → input (einzeilig)
- Globale Link-Styles (a { color: var(--primary) })
2026-03-05 19:50:43 +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 8a9293218b refactor: Shared Links als Card-Grid mit Card-Menü (wie Cronjobs)
- index.html: shared-links-list → card-grid
- dashboard.js: Cards mit card-compact, card-menu-dropdown, fa-cog statt fa-robot
- dashboard.css: 60 Zeilen shared-link-*/danger-icon CSS entfernt (nutzt card-Styles)
2026-03-05 15:11:05 +01:00
Meleki 38a8223228 feat: Geteilte Links auf Dashboard anzeigen + URL-Fix
Dashboard:
- Neue Section 'Geteilte Links' zeigt alle aktiven Shares
- Pro Eintrag: Role-Icon, Text-Vorschau, Session-Name, Modus, Datum
- Buttons: Link kopieren, öffnen, löschen (mit sofortigem UI-Update)
- Section nur sichtbar wenn Shares vorhanden

Backend:
- SharedEndpoint HandleListShares erweitert: Nachricht-Preview,
  Role, Session-Name pro Share mitgeliefert

Frontend:
- apiListShares() Funktion hinzugefügt
- Bugfix: Share-URL '/#/shared/' → '/#shared/' (Extra-Slash
  verursachte 404 weil parseHash leeren Page-Namen ergab)
2026-03-05 12:01:28 +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 0120bb8f73 Telegram: Bot=Session statt User-Level, Chat-Code-Refactoring
- Telegram-Config (Bot-Token, Webhook-Secret, ChatId) von User-Settings
  in sessions-Tabelle verschoben → jede Session hat ihren eigenen Bot
- Link-Code-System komplett entfernt (TelegramLinkRecord gelöscht)
- /start verknüpft automatisch, kein /link mehr nötig
- Alle Endpoints session-basiert: /api/sessions/{id}/telegram/*
- Webhook-URL pro Session: /api/telegram/webhook/{sessionId}

Refactoring: Doppelten Chat-Code eliminiert
- Neuer ChatService: PrepareContext, BuildHistoryFromDb, ResolveModelId
- Neues ChatContext-Model als gemeinsame Datenstruktur
- AnthropicService.ChatNonStreaming() für Telegram (statt eigenem Loop)
- TelegramService um ~180 Zeilen reduziert, kein eigener Claude-Loop mehr
- ChatEndpoint nutzt ChatService.PrepareContext() statt eigener Setup-Logik
- Model-Mapping nur noch an einer Stelle (3x → 1x)

Frontend
- Telegram-Section von Settings-Page in Session-Bearbeitungsseite verschoben
- Webhook-Secret readonly, wird einmalig generiert und persistent gespeichert
- Status wird automatisch geladen, Register/Delete je nach Webhook-Status
- Toast-Notification-System (showToast) in ui.js
- Link-Code-Modal und Telegram-Menüpunkt im Dashboard entfernt
- Telegram-Badge auf Session-Cards (konfiguriert/verbunden)

Bugfix: Bearer statt x-api-key für OAuth-Tokens im TelegramService
2026-03-03 21:46:59 +01:00
Meleki c9c15279d5 Claude-Statusbar global auf allen Seiten anzeigen + Schließen-Button
- #claudeStatusBar aus Dashboard-Template nach body verschoben (vor #app)
- loadClaudeStatus() von dashboard.js nach app.js (einmalig beim Start)
- Schließen-Button (×) zum Ausblenden der Statusbar
- Status-Bar CSS von dashboard.css nach main.css verschoben
2026-03-03 16:25:23 +01:00
Meleki bf0d65e75a ui: scrollbar am body-rand, todo_write custom renderer 2026-03-03 15:10:44 +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 4ac042e512 Telegram: Webhook-Verwaltung in Einstellungen-Seite
- Backend: DELETE /api/telegram/webhook Endpoint + TelegramService.DeleteWebhook()
- api.js: apiTelegramWebhookInfo(), apiTelegramRegisterWebhook(), apiTelegramDeleteWebhook()
- Settings-Page: Neue 'Telegram Bot' Section (nur für Admins, nur wenn konfiguriert)
  - Status abrufen: Webhook-URL, ausstehende Updates, letzter Fehler, Aktiv-Badge
  - Webhook registrieren: prompt() für Base-URL, POST an Telegram API
  - Webhook entfernen: Bestätigungsdialog + DELETE
- CSS: .telegram-status-box, .tg-status-row, .tg-label, .tg-value, .tg-badge
2026-03-03 09:06:22 +01:00
Meleki 7d237c866a Dashboard: Telegram-Verknüpfung Button + Modal
- Session-Card-Menü: 'Telegram verknüpfen' zwischen Chat öffnen und Bearbeiten
- Button nur sichtbar wenn Telegram Bot konfiguriert (GET /api/telegram/status)
- Klick generiert 6-stelligen Link-Code (POST /api/telegram/link)
- Modal zeigt '/link CODE' mit Copy-Button, 5 Min gültig
- Neuer Backend-Endpoint GET /api/telegram/status (IsConfigured)
- API-Funktionen: apiTelegramStatus(), apiTelegramLink()
- Modal-CSS nach bestehendem .fe-overlay Pattern
2026-03-03 07:40:17 +01:00
Meleki 81714b1f4c Dashboard: Claude API Status-Bar
- Zeigt Anthropic API Status aus status.claude.com an
- Nur sichtbar bei aktiven Incidents (minor/major/critical)
- Farbcodierte Indikatoren (gelb=warning, rot=danger)
- Stille Fehlerbehandlung bei nicht erreichbarem Status-Endpoint
2026-03-03 05:53:39 +01:00
Meleki 4e7058e481 Dashboard: Placeholder-Cards durch Header-Buttons ersetzen + UI-Feinschliff
- Placeholder-Cards (Neue Session/Neuer Agent) entfernt
- Stattdessen Buttons in den Section-Headern neben den Titeln
- Section-Header h2 Font-Size angepasst
- Agent-Formular: Ego- und Skills-Labels hinzugefügt, Text-Korrektur
- Form-CSS: Gap und Checkbox-Spacing verfeinert, Selektoren präzisiert
2026-03-02 12:59:32 +01:00
Meleki 90c24b0b1a Chat-Button im Dashboard deaktivieren wenn kein Agent zugewiesen 2026-03-02 12:33:23 +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 ea0b95ef52 Agent-Dateien: Button aus Form entfernt, ins Card-Menu verschoben
- agentFilesSection aus index.html entfernt
- filesSection/filesBtn Referenzen aus agent-page.js entfernt
- Neuer Menüeintrag 'Dateien verwalten' im Agent-Card-Menu (dashboard.js)
- Icons für alle Card-Menu-Einträge (Session + Agent)
- card-menu-item: flex layout mit gap für Icon-Ausrichtung
2026-03-02 10:19:31 +01:00
Meleki 56d4d1be0a Dashboard: Badges für Sessions (Kontext) und Agents (Features, Skills, Model-Name)
- prettyModelName() von chat.js nach ui.js als globale Funktion verschoben
- Session-Cards: Kontext-Badge mit Tooltip wenn context vorhanden
- Agent-Cards: Badges für ToolChoice:any, AutoCommit, Soul, Identity, UserInfo, Memory
- Agent-Cards: Skill-Badges pro aktiviertem Skill (parallel geladen)
- Agent-Cards: Model-Name via prettyModelName() statt roher Model-ID
- Neue CSS-Klassen: badge-feature, badge-forced-feature, badge-skill
- Theme: primary/dangerous Farben angepasst
- Chat: Input overflow hidden→auto
2026-03-02 08:22:18 +01:00
Meleki 875229964c Dashboard-Header in <header>-Element umgebaut, Card-Grid und Mobile-Styles verfeinert 2026-03-01 12:23:02 +01:00
Meleki 9cffc5bbb7 Body-Nav entfernen, Dashboard-Header mit Titel und Einstellungen-Link
- <nav id='nav'> samt nav.css komplett entfernt
- Nav-Link-Logik aus app.js und router.js entfernt
- Nav-Hide aus mobile.css entfernt
- Dashboard-Template: Header mit Titel '// gott' und Link 'Einstellungen'
- Dashboard CSS: .dashboard-header mit Flex-Layout
- Einstellungen-Link navigiert zur Settings-Page
2026-03-01 11:55:16 +01:00
Meleki 294145a04e Dashboard-Cards: horizontales Layout mit Bild links, Body rechts 2026-03-01 11:51:35 +01:00
Meleki 2efe12858a Card-Menu-Trigger in card-title-row verschieben (rechtsbündig via margin-left: auto) 2026-03-01 11:37:16 +01:00
Meleki 8f12e8dc1a UI-Refactoring: Transitions vereinheitlicht, Card-Navigation auf Menü umgestellt, openChatBtn entfernt, Chat-Back navigiert zum Dashboard 2026-03-01 11:32:12 +01:00
Meleki 92b1c8a9bc Dashboard: Card-Menü für Sessions und Agents
- Session-Cards: Menü mit 'Chat öffnen' und 'Bearbeiten'
- Agent-Cards: Menü mit 'Bearbeiten'
- Drei-Punkte-Trigger (ellipsis-v) erscheint bei Hover
- Click-outside schließt offene Menüs
- Card overflow auf visible geändert für Dropdown-Anzeige
2026-03-01 11:18:12 +01:00
Meleki 9af837a9e5 CSS: Hardcoded rgba-Werte durch Theme-Variablen ersetzt 2026-03-01 01:12:56 +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 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 d83a6f60ef Settings: Seitenbreite mit localStorage-Persistierung und Reset
- Settings-Page mit Range-Slider für Seitenbreite (600-1800px)
- JSON-basierter localStorage-Key 'settings' (zukunftssicher)
- applySettings() beim App-Start für sofortige Wiederherstellung
- Reset-Button mit Confirm-Dialog setzt alle Settings auf Defaults
- Sanfte Breitenübergänge via --transition-duration
2026-02-28 21:15:44 +01:00
Meleki 24cbce40c4 Globale .icon-btn Klasse für alle Icon-only Buttons, Hover-Filter, Theme-Anpassungen 2026-02-28 20:09:12 +01:00
Meleki b07e776b7a Massive style changes 2026-02-27 23:39:06 +01:00
Meleki b1c1e462cc Dashboard: Session message counts, workspace path, Agent persona 2026-02-27 17:58:14 +01:00
Meleki 286a91204f Layout/Style adjustments 2026-02-27 17:09:44 +01:00
Meleki 680f1d6fe2 Frontend style refactoring 2026-02-27 07:18:12 +01:00