Chat tabs, chat mode, own modes, compaction notice, CLI binaries again

- Terminals and file managers as tabs of a chat; chat terminals keep running on
  the server (no idle timeout) and re-attach from any device
- "Just chat" in New session and a built-in chat mode with a lean prompt and only
  web tools; custom modes with kind (coding/conversation), read-only and tool picker
- Mode selector as a dropdown
- The chat shows running compactions (automatic: tokens and share of the limit)
  and labels summaries
- Docker image builds and serves the terminal client binaries again
- Fix: atomic session updates; background title/usage writes no longer undo each
  other (auto compaction triggered one turn late)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Richard ZinkandClaude Opus 5.5 committed 2026-11-09 11:24:58 +01:00
1 parent 242b80605c
commit c850586a81
29 files changed
+831 -187

No files matched your search

+22 -1
View File
@@ -86,6 +86,8 @@ export const de: Messages = {
"files.renameTo": "Neuer Name:",
"files.copyTo": "Name der Kopie:",
"files.chatHere": "Chat hier öffnen",
"files.newTab": "Dateimanager öffnen",
"files.closeTab": "Dateimanager schließen",
"files.rename": "Umbenennen",
"files.duplicate": "Duplizieren",
"files.download": "Herunterladen",
@@ -236,6 +238,9 @@ export const de: Messages = {
"wizard.title": "Was möchtest du machen?",
"wizard.subtitle": "Aufgabe wählen, beschreiben, was du willst, dann auf Start drücken.",
"wizard.whatToDo": "Was möchtest du machen?",
"wizard.task.chat": "Einfach chatten",
"wizard.task.chatDesc": "Fragen, besprechen, nachschlagen – ohne Projekt und Dateien",
"wizard.placeholder.chat": "Worüber möchtest du sprechen?",
"wizard.task.craft": "Etwas craften",
"wizard.task.craftDesc": "Website, App, Spiel oder altes Programm nachbauen – oder etwas Neues bauen",
"wizard.task.build": "Am Code arbeiten",
@@ -303,6 +308,9 @@ export const de: Messages = {
"rename.generate": "Generieren",
"nav.terminal": "Terminal",
"terminal.new": "Neues Terminal",
"terminal.chatTab": "Chat",
"terminal.tab": "Terminal {n}",
"terminal.closeConfirm": "{name} schließen? Die Shell und alles, was darin läuft, wird beendet.",
"terminal.close": "Terminal schließen",
"terminal.here": "Terminal in diesem Ordner öffnen",
"terminal.connecting": "Verbinde…",
@@ -557,6 +565,11 @@ export const de: Messages = {
"chat.exportMd": "Markdown (.md)",
"chat.exportJson": "JSON (.json)",
"chat.empty": "Schreib eine Nachricht, um zu starten.",
"chat.compactedAuto": "Kontext fast voll ({tokens} Tokens) – Unterhaltung automatisch komprimiert · Zusammenfassung",
"chat.compactedManual": "Unterhaltung bei {tokens} Tokens komprimiert · Zusammenfassung",
"chat.compactingAuto": "Kontext fast voll – Unterhaltung wird automatisch komprimiert",
"chat.compactingManual": "Unterhaltung wird komprimiert",
"chat.compactingDetail": "{tokens} von {limit} Tokens ({pct}) – danach arbeitet der Agent mit einer Zusammenfassung weiter",
"chat.compacted": "Unterhaltung komprimiert – Zusammenfassung",
"chat.context": "Kontext",
"chat.contextHint": "{tokens} Tokens in der letzten Anfrage",
@@ -843,8 +856,16 @@ export const de: Messages = {
"agents.description": "Beschreibung",
"agents.descriptionHint": "Anhand dieser Beschreibung entscheidet der Hauptagent, wann er delegiert.",
"agents.mode": "Art",
"agents.addMode": "Neuer Modus",
"agents.style": "Art",
"agents.styleCoding": "Programmieren – Projekt-Kontext und Coding-Ablauf",
"agents.styleChat": "Unterhaltung – nur dieser Prompt, kein Projekt",
"agents.styleHint": "Unterhaltungs-Modi bekommen nur deinen Prompt plus Datum und persönliches Gedächtnis, wie der eingebaute Chat-Modus.",
"agents.readOnlyLabel": "Nur lesen",
"agents.readOnlyHint": "Nur Werkzeuge, die nichts verändern (wie der Plan-Modus)",
"agents.toolsSome": "{n} Werkzeuge ausgewählt – nur diese sind verfügbar",
"agents.tools": "Tools",
"agents.toolsAll": "alle Tools (z. B. read, glob, grep)",
"agents.toolsAll": "Nichts ausgewählt = alle Werkzeuge",
"agents.prompt": "Anweisungen",
"agents.reset": "Zurücksetzen",
"agents.resetConfirm": "„{name}“ auf die eingebauten Standardwerte zurücksetzen?",