Commit Graph
12 Commits
Author SHA1 Message Date
Meleki ce50633e33 refactor: Inline-Styles durch CSS-Klassen ersetzt
- 40+ Utility-Klassen in form.css (clickable, text-danger, flex-row, loading-state, etc.)
- share-menu position/z-index in chat.css statt inline
- index.html: 0 Inline-Styles (hidden-Attribut, CSS-Klassen)
- 12 JS-Dateien bereinigt: style.cssText/style.* durch classList ersetzt
- Bugfix: var(--danger) → var(--dangerous) (nicht existierende Variable)
- display:none Toggles → hidden-Attribut wo passend
- Hardcoded font-sizes in chat.css → var(--font-size)

15 Dateien, nur Frontend (CSS/JS/HTML), kein Backend
2026-03-14 17:14:30 +01:00
Meleki e930268476 refactor(js): 4. Iteration – Card-Preview-Helper, Button-Loading, Stream-Events vereinfacht
Neue Helper:
- _renderCardPreview(): Gemeinsamer Helper für Agent/Session-Card-Vorschau
  (ersetzt renderAgentInCard + renderSessionSelectCard Duplikate)
- withButtonLoading(btn, text, fn): Eliminiert ~15x identisches
  disable/text/try/finally/reset Pattern in allen Pages
- formatDate(): Nach ui-helpers.js verschoben (war in dashboard.js)
- createMDE(): maxHeight-Option hinzugefügt

Dedupliziert:
- handleStreamEvent: 12 Preparer/Review/Finalizer cases → 7 durch
  case-Grouping (start/text/tool_use shared)
- _escCmdAttr() entfernt → nutzt jetzt esc() aus ui-helpers.js
- feInitEasyMDE() nutzt jetzt createMDE() statt eigener EasyMDE-Init

Betroffene Dateien: ui-helpers.js, chat.js, commands-ui.js,
file-explorer.js, dashboard.js, session-page.js, cronjob-page.js,
profile-page.js, admin-page.js, server-settings-page.js, settings-page.js
2026-03-07 22:34:37 +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 a0752ea492 feat: Settings in Datenbank speichern statt localStorage
- Neue Spalte 'settings' in users-Tabelle (Migration via TryAddColumn)
- SettingsEndpoint: GET/PUT /api/settings
- DatabaseService: GetUserSettings() + UpdateUserSettings()
- Frontend: currentSettings als globaler State in app.js
- settings-page.js: localStorage komplett entfernt, nutzt API
- Settings werden beim App-Start aus DB geladen und angewendet
2026-03-03 16:47:56 +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 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 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 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 8e585443e2 Backup: Data-Ordner statt nur DB sichern, von Chat in Einstellungen verschoben 2026-03-01 15:41:29 +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