- New Terminal tab in the workspace shell, backed by xterm.js, that connects
to the worker's PTY WebSocket using a short-lived token minted by
/api/agent-jobs/:id/terminal-token (owner-auth'd, never exposes the worker
secret to the browser)
- Site-matched xterm theme (light/dark, live theme switching), Victor Mono,
binary stdin + JSON resize protocol, reconnect, graceful 'not configured'
state when NEXT_PUBLIC_SPOON_AGENT_WORKER_WS_URL is unset
- env: NEXT_PUBLIC_SPOON_AGENT_WORKER_WS_URL (client), SPOON_AGENT_TERMINAL_SECRET
Replace the raw single-blob diff dump (Monaco, language=diff) and the plain
<pre> file diffs in chat with @git-diff-view/react:
- Parse the unified git diff into structured per-file entries (status,
+/- counts, binary detection) via parseDiffFiles()
- Workspace Diff tab: collapsible per-file cards with status badges, line
counts, syntax highlighting, and a Unified/Split toggle
- Agent chat: render each change's diff highlighted instead of plain text
- Theme follows next-themes resolvedTheme (light/dark)