diff --git a/TODO.md b/TODO.md index 8529c68..6d56219 100644 --- a/TODO.md +++ b/TODO.md @@ -25,6 +25,7 @@ - [x] Falsche Nachrichtenanzahl im Dashboard (tool uses werden fälschicherweise mitgezählt) - dasselbe bei "Ältere Nachrichten laden" im Chat - [x] 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 - [x] 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? +- [x] 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 - [x] System-Prompt anpassen. Explizit auf Workspace-Pfad hinweisen, weil Model halluziniert oft und will in den nicht vorhandenen Pfad /workspace wechseln @@ -46,7 +47,7 @@ - [x] ~~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..." +- [x] 💬 Typing-Indicator - Animierter Indikator statt statischem "Streaming..." - [ ] 🎨 Chat-Hintergründe - Benutzerdefinierte Hintergründe pro Session - [x] 👤 User-Management - Admin-only: Benutzer CRUD, Login-as-User, Default-Pfade - [x] 🖥️ Windows Desktop App - WPF + WebView2 Wrapper mit konfigurierbarer URL diff --git a/wwwroot/js/file-explorer.js b/wwwroot/js/file-explorer.js index 468a2ba..6763cfd 100644 --- a/wwwroot/js/file-explorer.js +++ b/wwwroot/js/file-explorer.js @@ -145,10 +145,6 @@ async function feLoadDir(path) { const label = document.createElement('span'); label.className = 'fe-dir-label'; label.innerHTML = ' ' + esc(entry.name); - label.addEventListener('click', () => { - _feState.history.push(path); - feLoadDir(entry.path); - }); item.appendChild(label); const delBtn = document.createElement('button'); @@ -160,6 +156,11 @@ async function feLoadDir(path) { feDeleteDir(entry.path, entry.name); }); item.appendChild(delBtn); + + item.addEventListener('click', () => { + _feState.history.push(path); + feLoadDir(entry.path); + }); } else { item.classList.add('fe-file'); const icon = entry.isText ? '' : getFileIcon(entry.ext);