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

+4 -1
View File
@@ -19,7 +19,7 @@ export type Part =
is_error: boolean;
meta?: any;
}
| { type: "summary"; text: string };
| { type: "summary"; text: string; auto?: boolean; tokens?: number };
export interface Usage {
input_tokens: number;
@@ -118,6 +118,7 @@ export type ServerEvent =
| { type: "waiting"; session_id: string; reason: string | null }
| { type: "queue_updated"; session_id: string; items: QueueItem[] }
| { type: "step_started"; session_id: string; message_id: string; started_at: number; prompt_tokens: number; estimated: boolean }
| { type: "compaction"; session_id: string; state: "started" | "done" | "failed"; auto: boolean; tokens: number | null; limit: number | null }
| { type: "mcp_status"; servers: Record<string, McpServerStatus> }
| { type: "resync" };
@@ -150,6 +151,8 @@ export interface AgentInfo {
description: string;
mode: "primary" | "subagent";
read_only: boolean;
/** "coding" or "chat" (plain conversation prompt). */
style?: "coding" | "chat";
model?: string | null;
tools?: string[] | null;
source: "builtin" | "config" | "file";