Add per-task terminals over WebSocket with an xterm.js Terminal tab

This commit is contained in:
Ian Gulliver
2026-10-15 12:06:50 -07:00
parent 37bf1b60a7
commit ff22f33025
33 changed files with 1600 additions and 167 deletions
+1 -1
View File
@@ -42,7 +42,7 @@ When the owner tells the lead "deploy byre", or anything that means the same, th
## Web UI code
- Frameworkless. TypeScript in `web/src/`, compiled file-by-file to ES modules in `web/dist/` with `tsc`. No bundler, no framework, no runtime dependencies. The one exception is vendored Mermaid, lazy-loaded: `web/vendor/mermaid.min.js`, loaded only when a diagram appears.
- Frameworkless. TypeScript in `web/src/`, compiled file-by-file to ES modules in `web/dist/` with `tsc`. No bundler, no framework, no runtime dependencies. The exceptions are vendored and lazy-loaded: Mermaid (`web/vendor/mermaid.min.js`, loaded only when a diagram appears) and xterm.js with its fit addon (`web/vendor/xterm.mjs`, `addon-fit.mjs`, `xterm.css`, loaded only when the Terminal tab opens).
- API types come from `api/openapi.yaml` via `openapi-typescript` (`web/src/api.gen.ts`); call the API through the typed client in `web/src/api.ts`, never raw `fetch`.
- `web/dist/` is committed so `go install` needs no Node. Regenerate it with `go generate ./web` whenever `web/src/` or the spec changes.
- Every view mounted into a pane returns a dispose function that removes its state subscriptions.