Files
gott/TODO.md
T
MelekiandClaude Opus 4.8 5c89adb6df Persist panel member token costs to DB via usage seed
Replace the separate panel_usage SSE event + frontend accumulator with
server-side seeding of the worker's usage object. Both the done-event and
FinalizeChain read from the same usage, so panel (Fusion/MoA) member tokens
now flow into the live badge AND the DB as a single source of truth — the
badge no longer drops to the worker-only value after F5.

- RunPanel takes a TokenUsage usageSink; accumulates member costs after the
  Task.WhenAll barrier (single-threaded, no lock)
- ChatEndpoint passes panelUsage as seedUsage to all three worker paths
- StreamChat / StreamChatViaCli / OpenAI StreamChat fold seedUsage into usage
  at creation time, so every exit path persists it
- OpenAI done-events extended with cacheCreation/cacheRead fields for live
  consistency when seeded by Anthropic members
- chat.js: remove redundant _panelUsage / _addPanelUsage / panel_usage
- TODO.md: mark the live-only v1 boundary closed, note the new mechanism

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-19 08:44:36 +02:00

6.2 KiB
Raw Blame History

TODOs

Features

  • Skills: In Datenbank anlegen können, mit Pfad zu Skill-Dateien; im Frontend am Dashboard dargestellt. Zuweisung an Agent und/oder Session.
  • System-Prompt: Nachrichten einer Session als Referenz und somit in den System-Prompt aufnehmen
  • Im Chat: Menüpunkt "Datenbank sichern" entfernen und stattdessen in den Einstellungen platzieren. Außerdem soll nun nicht mehr nur die Datenbank gesichert werden, sondern der gesamte data-Ordner (der Unterordner backup muss natürlich exkludiert werden)
  • Agents-Formular (nur beim Bearbeiten von vorhandenen Agent): Button der das File-Explorer Modal öffnet bei dem ich den Agent-Ordner sehe.
  • Chat: Maximal 500 Nachrichten laden. Dauert sonst zu lange und der Browser wird langsam
  • User-Management: Tabelle in Datenbank mit username / password. Wenn kein User vorhanden: dann admin mit password "admin" anlegen
  • Websearch Tool
  • Anfrage/Stream abbrechen
  • Telegram-Intergration
  • Refactoring: Agent/Session-Einstellungen, die den System-Prompt bzw. das Tool Use bearbeiten
  • Cronjobs: Planung, ob cron von Debian/Linux verwendet werden soll, oder ein eigener Worker/Service in der App selbst, der das übernimmt
  • Weiteres Modell hinzufügen: "Haiku 4.5"
  • Weitere Tools: Glob? Search? Todo List?
  • Settings in Datenbank speichern (users table) anstelle von localStorage
  • Einzelne Nachicht als Link teilen
  • Geteilte Links verwalten (löschen)

Bugs

  • Wenn gerade gestreamt wird und man refreshed die Seite, dann verliert das Frontend den Status "Streaming..." und ich kann eine Nachricht schreiben, obwohl das nicht möglich sein sollte
  • Größere Tasks brechen irgendwann ab, könnte an der Limitierung von Antrophic/Claude liegen. Jedoch sollte wird es scheinbar nicht behandelt: Der Status bleibt auf "Streaming..." aber es passiert nichts mehr
  • Session -> Chat öffnen im Frontend soll nicht möglich sein, wenn kein Agent gesetzt ist
  • Falsche Nachrichtenanzahl im Dashboard (tool uses werden fälschicherweise mitgezählt) - dasselbe bei "Ältere Nachrichten laden" im Chat
  • Beim Benutzen vom Tool "todo_write": beim streamen ist der text abgeschnitten (limitiert), nach dem poll (history laden) passt es wieder. es soll beim stream auch vollständig angezeigt werden und nicht mit "..." enden
  • Manchmal passiert es wenn ein Agent die Memory-Funktion hat, dass er sich selbst Memories einträgt - das ist auch ok so, aber, manchmal werden "dumme" erinnerungen gesetzt, die nur session-bezogen sind (und nicht agent-bezogen) und diese sind dann fast immer einfach nur copy&paste aus dem session system-prompt. Woran kann das liegen bzw. wie kann man das optimieren?
  • File Explorer im Frontend, Klick auf .fe-item ignoriert das padding, sprich man muss genau auf den Text klicken, damit der Klick genommen wird

Backend

  • System-Prompt anpassen. Explizit auf Workspace-Pfad hinweisen, weil Model halluziniert oft und will in den nicht vorhandenen Pfad /workspace wechseln

Frontend

  • Chat: Es scrollt beim Laden nicht ganz nach unten, ich denke weil im DOM noch etwas nachgeladen wird (ich denke es ist die Schriftart), und die Höhe sich beim Laden nochmal verändert
  • Chat: User-Nachrichten mit dem Tag [Datei: pfad/zur/datei.xyz:1-10] wird nicht als HTML geparsed
  • Chat: Wird zwar erkannt und ist klickbar, aber es öffnet sich einfach nur der File Explorer, ohne dass sich die Datei öffnet und die Darstellung in Monospace ist auch nicht schön
  • Chat: Es werden momentan alle Tool-Calls angezeigt - die Anzeige soll individuell in den Einstellungen gemacht werden können. Auswahl aus drei Stufen: "Alle anzeigen" / "Nur Modifikationen" (file änderungen, memory änderungen, etc.) / "Verstecken"
  • Browser: "Zurück"-Taste soll auf den vorherigen location.hash wechseln
  • File Explorer: CodeMirror lässt sich horizontal nicht scroll
  • Chat: Datum und Uhrzeit bei den Nachrichten anzeigen (Format: dd.MM.yyyy HH:mm:ss)
  • Dashboard: Menu-Dropdown bei Cards sind abgeschnitten wenn die Card-Höhe nicht ausreicht (logisch, weil das Menu-Dropdown ein Child von der Card ist)
  • Auto-scrolling deaktivieren, wenn man weiterhoch gescrollt hat, und er wieder fortsetzen wenn man ganz nach unten gescrollt hat
  • Anstelle von [Bild: ...]-Platzhalter direkt das gesendete Bild anzeigen

Ideas / Backlog

  • Memory: Embedding-Modell für semantische Suche über Memory-Dateien (Vektor-basiert + BM25 Hybrid Search)
  • Claude (Sub-)Agents – Nicht umsetzbar: Claude Code Sub-Agents sind ein CLI-Feature, nicht über die Messages API verfügbar. Eigenes Sub-Agent-System (Preparer/Review/Finalizer) deckt den Use-Case bereits ab.

Features aus Devy übernehmen

  • 💬 Typing-Indicator - Animierter Indikator statt statischem "Streaming..."
  • 🎨 Chat-Hintergründe - Benutzerdefinierte Hintergründe pro Session
  • 👤 User-Management - Admin-only: Benutzer CRUD, Login-as-User, Default-Pfade
  • 🖥️ Windows Desktop App - WPF + WebView2 Wrapper mit konfigurierbarer URL
  • 🎨 Canvas - HTML/CSS/JS inline rendern in sandboxed iframes mit Resize und Source-View (Message-Tag: [canvas:<title>:<height (optional)>]...[/canvas])

Multi-Modell-Panel (Fusion/MoA)

  • 🔄 MoA-Zwischenrunden persistieren (F5 überleben) - RunPanelMember (Services/AnthropicService.Panel.cs) persistiert jetzt JEDE Proposer-Runde (statt nur der finalen) mit layer/totalLayers im JSON-Transkript; wwwroot/js/history.js gruppiert die Panel-Bubbles nach Layer und rendert die "Runde k/N"-Divider beim Reload.
  • 💰 Member-Token in die Chain-Kosten - Jeder Panel-Member sammelt seine eigene TokenUsage (Anthropic-Loop via memberUsage, CLI via CliChatResult; OpenAI=null/nachrüstbar); RunPanel summiert sie NACH der Task.WhenAll-Barrier (single-threaded → kein Lock) über alle Runden in einen usageSink. Der Dispatch (Endpoints/ChatEndpoint.cs) reicht diesen als seedUsage an die Worker-Streaming-Methode weiter, die ihn in ihre usage faltet → Panel-Kosten fließen über das done-Event (Live-Badge) UND FinalizeChain (DB) als Teil der Chain-Kosten. Single Source of Truth, überlebt F5; das frühere panel_usage-SSE + Frontend-Addition wurde dadurch entfernt.