Commit Graph
12 Commits
Author SHA1 Message Date
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 a91c8551ac docs: box user implementation plan 2026-07-13 09:48:25 -04:00
Gabriel Brown aea2aa2c5c docs: box user design spec (non-root box + user-set password) 2026-07-12 22:42:32 -04:00
Gabriel Brown a255a06a35 docs: rewrite for box-first model + webhooks + notifications 2026-07-11 18:23:49 -04:00
Gabriel Brown c1e816741d fix(worker): marked-command survives tail-exec; kill script excludes itself 2026-07-10 18:53:00 -04:00
Gabriel Brown cbbb168e7c docs: add implementation handoff for Claude 2026-07-10 17:54:06 -04:00
Gabriel Brown 8aa9140191 docs: multi-phase implementation plan (63 tasks across 5 phases)
Phase 1 Stabilize (13), Phase 2 Runtime unification (12),
Phase 3 Dev-box surface (11), Phase 4 Sync correctness (12),
Phase 5 Notifications & polish (15), plus index.
2026-07-10 15:18:51 -04:00
Gabriel Brown 6406e19b15 docs: stabilize/unify/build design spec from full audit 2026-07-10 14:10:58 -04:00
Gabriel Brown 8d2a089268 docs: server deploy changes (terminal, dotfiles, Fedora, Phase 2)
Build and Push Spoon Images / build-images (push) Has been skipped
Build and Push Spoon Images / quality (push) Failing after 7s
2026-06-24 10:32:45 -04:00
Gabriel Brown c0ff6d8bed docs: personalized dev environment (dotfiles + persistent home) 2026-06-24 09:58:42 -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 9643cb197b Fix agent empty-response in prod: workdir mount, image freshness, error surfacing
- Pin codex@0.142.0 + opencode-ai@1.17.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