Commit Graph
40 Commits
Author SHA1 Message Date
Gabriel Brown 8d7486bc8c feat(notifications): settings notification preferences 2026-07-11 16:41:35 -04:00
Gabriel Brown c241941e41 feat(notifications): header notification bell 2026-07-11 16:25:08 -04:00
Gabriel Brown 75d7592cf3 feat(settings): surface GitHub connection needs_reauth/revoked 2026-07-11 14:49:28 -04:00
Gabriel Brown 696f03e867 fix(web): /machine terminal visible prop, stop/restart confirmation, accurate waiting label 2026-07-11 13:36:54 -04:00
Gabriel Brown a5bc0434f3 chore: fix eslint errors introduced across phases 1-3 2026-07-11 13:27:23 -04:00
Gabriel Brown 12b1c98cfc feat(web): terminal copy-on-select toggle and web-links polish
Wire copy-on-select in XtermSession (shared by the workspace terminal
and the /machine terminal): a header checkbox toggles the behavior and
persists to localStorage under spoon.terminal.copyOnSelect. On mount the
stored value takes precedence over the copyOnSelect prop default. When
enabled, onSelectionChange copies the current selection via
navigator.clipboard.writeText — guarded (empty selections skipped;
clipboard-unavailable/denied errors swallowed). The handler reads the
toggle through a ref so live flips apply without reconnecting.

WebLinksAddon remains loaded so printed URLs are clickable.

Manual verification: in /machine and a workspace terminal, enabling
copy-on-select and selecting text places it on the clipboard; a printed
URL is clickable and opens in a new tab.
2026-07-11 13:17:46 -04:00
Gabriel Brown 148e060a9b feat(web): persistent workspace terminal across tab switches 2026-07-11 13:05:49 -04:00
Gabriel Brown 33e7732566 feat(web): /machine dev-box page with status, terminal, and home file browser 2026-07-11 12:57:13 -04:00
Gabriel Brown ea56b29453 refactor(web): extract reusable XtermSession from WorkspaceTerminal 2026-07-11 12:43:08 -04:00
Gabriel Brown 27019dc1d3 feat(web): /api/box status, lifecycle, tree, file, terminal-token routes 2026-07-11 12:36:56 -04:00
Gabriel Brown 11e93ade5f feat(web): box terminal token mint + ownership proxy helpers 2026-07-11 12:32:10 -04:00
Gabriel Brown 702e53a4ba feat(web): per-thread/per-spoon runtime picker and Anthropic OAuth provider profile 2026-07-11 11:20:33 -04:00
Gabriel Brown c9ee2e6cde refactor(worker): delete per-job OpenCode container path, host_port split, and dead docker helpers
Claude-Session: https://claude.ai/code/session_01ScyZ1NhfN84LAnHpwhfEQk
2026-07-11 10:26:58 -04:00
Gabriel Brown 926008fd3a fix(workspace): skip queries for missing jobs 2026-07-10 17:24:32 -04:00
Gabriel Brown 2beeeb1732 fix(app): handle nullable detail consumers 2026-07-10 17:24:32 -04:00
Gabriel Brown ed21126eea fix(app): add friendly not-found handling 2026-07-10 17:24:32 -04:00
Gabriel Brown d4a3856083 fix(workspace): key shell by job 2026-07-10 17:06:33 -04:00
Gabriel Brown feb3723753 fix(terminal): preserve animation-frame first fit 2026-07-10 17:06:33 -04:00
Gabriel Brown 75d06394ce fix(terminal): refit after fonts load 2026-07-10 17:06:33 -04:00
Gabriel Brown 573246ce98 Fix pipeline
Build and Push Spoon Images / quality (push) Successful in 1m34s
Build and Push Spoon Images / build-images (push) Successful in 7m44s
2026-06-24 21:49:13 -04:00
Gabriel Brown c103430c7d Self-host VictorMono Nerd Font icons for the terminal + editor
- 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/)
2026-06-24 10:17:25 -04:00
Gabriel Brown 2cd03b6a83 Settings: Dotfiles file-browser workspace
- New Settings → Dotfiles section: a mini-workspace rooted at home/{firstName}
  reusing FileTree + the Monaco CodeEditor
- Drag-and-drop files/folders (FileSystem entries API) or upload a folder
  (webkitdirectory) / files; edit in-place; new file; delete
- Files stored relative to HOME via the encrypted userDotfiles API
- Repo & setup panel (public repo URL + ref + setup script path) writing
  userEnvironment; secrets nudge toward the Secrets feature
2026-06-24 09:57:11 -04:00
Gabriel Brown 15407e7e9c Workspace Terminal tab: xterm front end + short-lived token route
- 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
2026-06-24 08:23:58 -04:00
Gabriel Brown 1072cf10cd Editor: site-matched theme, Victor Mono font, no false TS errors
- 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
2026-06-24 07:45:24 -04:00
Gabriel Brown ae90681d9b Add workspace loading state; auto-refresh diff on agent changes
- Gate the tree/diff/status loads (and 5s poll) on workspaceStatus being
  active/idle, so we no longer hammer the 'workspace is not active' endpoint
  while a worker is still picking up the job
- Show a 'Setting up your workspace…' pending state instead of surfacing
  startup as a console error / stale-workspace recovery box; escalate to a
  softer 'still waiting' hint after 90s if no worker picks it up
- Auto-reload the diff and file tree (debounced) whenever the agent records a
  workspace change or a turn starts/ends, so diffs appear without a manual
  Refresh
- The recovery box now only appears for a genuinely lost workspace (Convex
  reports active but the worker can't reach it)
2026-06-24 07:29:38 -04:00
Gabriel Brown bb471a0917 Improve workspace/chat diff viewer with syntax highlighting & per-file view
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)
2026-06-24 07:08:43 -04:00
Gabriel Brown c3d265d428 Fix worker 2026-06-23 20:35:01 -04:00
Gabriel Brown 5567a4be95 allow users to delete threads from spoons details page
Build and Push Spoon Images / quality (push) Successful in 2m36s
Build and Push Spoon Images / build-images (push) Successful in 9m21s
2026-06-23 16:00:34 -04:00
Gabriel Brown a6f7ea7f78 Clean up old stuff & fix ui errors
Build and Push Spoon Images / quality (push) Successful in 2m22s
Build and Push Spoon Images / build-images (push) Successful in 23m10s
2026-06-23 14:57:05 -04:00
Gabriel Brown d207b8b0b8 Add features & update project
Build and Push Spoon Images / quality (push) Successful in 1m41s
Build and Push Spoon Images / build-images (push) Successful in 7m4s
2026-06-23 02:06:58 -04:00
Gabriel Brown fe72fc2957 Add features & update project 2026-06-23 01:46:08 -04:00
Gabriel Brown 930fbf5965 Try to fix workers and workspace
Build and Push Spoon Images / quality (push) Successful in 1m40s
Build and Push Spoon Images / build-images (push) Successful in 7m0s
2026-06-22 23:17:27 -04:00
Gabriel Brown ddce5efb13 Update README.md & fix test
Build and Push Next App / quality (push) Successful in 1m40s
Build and Push Next App / build-next (push) Successful in 4m17s
2026-06-22 10:42:47 -04:00
Gabriel Brown 206b64176b Move to threads based system. 2026-06-22 10:37:26 -04:00
Gabriel Brown 8ae6c4b533 Add bulk add .env variables
Build and Push Next App / quality (push) Successful in 1m23s
Build and Push Next App / build-next (push) Successful in 3m35s
2026-06-22 01:12:13 -05:00
Gabriel Brown 4114d5595c Update stuff
Build and Push Next App / quality (push) Successful in 1m21s
Build and Push Next App / build-next (push) Successful in 3m34s
2026-06-22 00:41:51 -05:00
Gabriel Brown 2e13febfc7 Update stuff
Build and Push Next App / quality (push) Successful in 1m24s
Build and Push Next App / build-next (push) Successful in 3m36s
2026-06-21 23:49:08 -05:00
Gabriel Brown b16cd9e2f7 Update stuff
Build and Push Next App / quality (push) Successful in 1m34s
Build and Push Next App / build-next (push) Successful in 3m22s
2026-06-21 23:22:05 -05:00
Gabriel Brown 2dfa97ee4f Add agent workflows & stuff
Build and Push Next App / quality (push) Failing after 48s
Build and Push Next App / build-next (push) Has been skipped
2026-06-21 21:15:15 -05:00
Gabriel Brown cf7ff2ee4e Initial commit for project Spoon!
Build and Push Next App / quality (push) Failing after 45s
Build and Push Next App / build-next (push) Has been skipped
2026-06-21 17:52:02 -05:00