17 Commits
Author SHA1 Message Date
Gabriel Brown 348c2d3d62 feat: add PostHog, move Plausible to v4, and drop Sentry session replay
Build and Deploy Spoon / quality (push) Successful in 1m40s
Build and Deploy Spoon / build-images (push) Successful in 12m23s
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.
2026-10-01 17:17:21 -04:00
Gabriel Brown 4505471149 fix(worker): keep-id compat, zombie tmux clients, nvm in box image
- Box init + chownInBox exec explicitly as root: under podman keep-id the
  container's default user is the mapped uid, which cannot useradd/chown.
- Init renames an existing uid-1000 passwd entry (podman keep-id injects one
  named after the HOST user) instead of adding a duplicate that would win the
  getpwuid lookup and make whoami report the wrong name.
- Terminal connections tag their shell with a per-connection marker and reap
  the process group on WebSocket close: closing the attach socket never
  killed the exec'd shell, so every disconnect leaked an attached tmux client
  (session stuck at the smallest zombie's size; enough dead clients starve
  tmux rendering for live ones).
- Job image: nvm 0.39.5 at /usr/local/nvm (user-writable) with
  /etc/profile.d/nvm.sh, matching what user dotfiles expect; docs for the box
  user + ownership model.
2026-07-13 10:36:44 -04:00
Gabriel Brown b038a31520 fix(box): bump job image base to Fedora 44 for Neovim 0.12
fedora:41 ships Neovim 0.10.4, below LazyVim's >= 0.11 requirement, so
dotfiles-managed editors failed inside the box. F44 ships 0.12.4.
2026-07-12 22:26:45 -04:00
Gabriel Brown 424307c5af build(agent-job): pin Claude Code CLI; smoke one turn per runtime
Add @anthropic-ai/[email protected] to the job image global npm install,
extend the smoke script with claude --version plus a documented per-runtime
turn block, and reconcile OpenCode/Claude adapter flags against the real CLIs
(all assumed flags confirmed). Document the anthropic_oauth_json credential
snapshot pattern in the README.
2026-07-11 11:25:44 -04:00
Gabriel Brown 32a71f00ca Switch agent job image to Fedora with QoL CLI tooling + neutral shell defaults
- Base fedora:41; reinstall toolchain (node 22, gcc/c++, neovim, tmux, git, etc.)
- Add QoL CLI from the user's Panama setup, all in default Fedora repos: zoxide,
  eza, bat, fzf, fd, gh, gum, ripgrep, bash-completion; oh-my-posh via installer;
  pnpm/yarn/bun via npm; keep [email protected].0 + [email protected].9 pinned
- Ship neutral system-wide defaults that work even with an empty/mounted HOME:
  /etc/profile.d/spoon.sh (zoxide/eza/fzf/oh-my-posh init + aliases),
  /etc/tmux.conf (login-shell panes), /etc/spoon/omp.json (default prompt theme)
- .dockerignore: re-include docker/agent-job-rootfs into the build context
- Verified: codex runs a real turn on Fedora (exit 0); all tools present
2026-06-24 09:33:39 -04:00
Gabriel Brown 24a516c2b5 Terminal: job image tools (neovim/tmux), build-arg wiring, docs
- agent-job image: add neovim, tmux, less, unzip, wget, locales for the
  interactive shell (tmux powers cross-reconnect session persistence)
- Wire NEXT_PUBLIC_SPOON_AGENT_WORKER_WS_URL as a build arg (Dockerfile +
  compose.yml) since NEXT_PUBLIC vars are inlined at build time
- docs/agent-terminal.md: architecture, env, nginx WS exposure, dev testing,
  security; note the build-time var in docs/compose.prod.yml
2026-06-24 08:27:10 -04:00
Gabriel Brown 40a6dd78e4 Fix worker image missing docker CLI; harden spawn-failure handling
Build and Push Spoon Images / quality (push) Successful in 1m47s
Build and Push Spoon Images / build-images (push) Successful in 6m33s
Root cause of the prod empty-response: the spoon-agent-worker image shipped
without a docker CLI binary, so it could never launch the codex job container.
On Debian trixie (the bun base) 'docker.io' + --no-install-recommends installs
the daemon package but omits the client (split into 'docker-cli'), leaving no
'docker' on PATH. execa('docker', ...) hit ENOENT, and with reject:false that
resolves with exitCode undefined -> coerced to 0 -> looked like a successful
empty run -> 'Codex completed without producing an assistant response'.

- agent-worker.Dockerfile: drop docker.io, install the official static docker
  CLI client pinned to 29.5.3 (matches the host daemon) to /usr/local/bin/docker
- runtime/docker.ts: normalizeRunResult() so a spawn failure (exitCode null) is
  always a non-zero exit carrying the real reason, never a silent empty success
- tests: cover the spawn-failure and normal-result paths
2026-06-24 06:31:17 -04:00
Gabriel Brown 9643cb197b Fix agent empty-response in prod: workdir mount, image freshness, error surfacing
- Pin [email protected].0 + [email protected].9 in the job image (was @latest,
  causing dev/prod drift)
- Worker now s the job image once per process so prod stops
  running a stale Codex
- Surface Codex error/turn.failed events instead of swallowing them, so the
  real failure reason is reported rather than 'no assistant response'
- Harden the Codex JSON parser to also handle the legacy msg-wrapped shape
- Fix the docker-in-docker workdir: bind-mount identical host:container path
  and set SPOON_AGENT_HOST_WORKDIR (named volume can't be mounted by sibling
  job containers)
- Add docs/compose.prod.yml as a documented reference deployment
2026-06-24 05:38:35 -04:00
Gabriel Brown 980a2c07e8 Update stuff
Build and Push Spoon Images / quality (push) Successful in 2m28s
Build and Push Spoon Images / build-images (push) Successful in 9m53s
2026-06-23 22:27:23 -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 f33f76d874 Trying to build worker images
Build and Push Spoon Images / quality (push) Successful in 1m52s
Build and Push Spoon Images / build-images (push) Successful in 8m19s
2026-06-22 20:29:10 -04:00
Gabriel Brown 206b64176b Move to threads based system. 2026-06-22 10:37:26 -04:00
Gabriel Brown 750c3e7923 Update stuff so we can pass build hopefully
Build and Push Next App / quality (push) Failing after 57s
Build and Push Next App / build-next (push) Has been skipped
2026-06-21 21:28:57 -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