PostHog loads after the page is idle through a same-origin /ingest proxy and follows the signed-in Convex user. Plausible uses the per-site script through a /pa proxy. Sentry keeps errors and traces only. Pages load only the @spoon/ui modules they import, and client code reads public env from publicEnv.ts so zod stays out of the browser. Both analytics integrations stay off until their env is set in Infisical prod.
- Add Symbols-Only Nerd Font Mono (woff2) under public/fonts; @font-face scoped
by unicode-range to the Nerd Font glyph ranges, so the ~1.1MB file only loads
when an icon actually renders (latin text stays on Victor Mono)
- Terminal + editor font stacks fall back to it for icons; terminal prewarms it
and repaints so powerline/oh-my-posh/eza/nvim icons show
- No server/env changes; ships in the spoon-next image (public/)
- 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
- Add spoon-dark/spoon-light Monaco themes built from the site's design tokens
(teal --primary accent), switched by next-themes resolvedTheme
- Use Victor Mono (with ligatures + italic comments) for the editor font
- Disable Monaco's in-browser TS *semantic* diagnostics, which were false
positives (no node_modules / path aliases in the browser) e.g. 'Cannot find
module ~/server/auth'; keep real syntax-error reporting