Operator console goes first-class: Work-Console format, clipboard image paste, and a 30-second ghost-repo timeout
Three-front wave: the operator console re-built in the product's SurfaceFrame screen grammar inside the project area, clipboard-image paste into any agent pane (Codex included), and a root-caused fix for a 30s registry hang traced to a stray .git in the home directory.
1. The console is now a real screen, not an overlay
The operator console previously lived behind a floating 🛰 button as a fullscreen
overlay with its own ad-hoc look. It is now a first-class project-area page built on
the same SurfaceFrame grammar as the Work Console: breadcrumb location, hero
outcome ("워커 N명 지휘 중"), a NEXT BEST ACTION card that always shows the one
state-appropriate action (choose agent → send briefing → rescan), an ATTENTION block
(load errors, unchosen agent, stale snapshot, blocked workers — real state only),
carded workbench sections for the live orchestrator terminal and the worker board,
and an IN MOTION rail with the merge queue. The overlay path still works; the page
is the format the product standardized on.
2. Clipboard image paste for every agent pane
Cmd+V with an image on the clipboard now works in any terminal pane: the image is
saved as PNG under the app's data dir (uploads/clip-<ts>.png, never overwrites),
and the absolute path is STAGED into the pane's input — no newline, nothing
auto-executes; the user presses Enter. Text paste is bit-for-bit untouched (the
interception decision is synchronous on the paste event). Agent-agnostic by
construction — Codex panes, which previously had no way to receive a clipboard
image, get the same path Claude panes do.
3. The 30-second timeout that wasn't a git bug
Opening the console for a non-repo grant folder blocked ~30s then failed with
callback-free Git command timed out after 30000ms. Root cause chain, reproduced
with real timings: the grant had no .git, so git rev-parse --show-toplevel
walked up and hit a stray, near-empty .git accidentally created in $HOME in
Sep 2024 — making git treat the entire home directory as a worktree — and the
metadata boundary's casefold-collision guard then ran git ls-files --others
over all of $HOME (measured 35s+ before kill). Two fixes: registry reads now
resolve their root with a pure-filesystem .git-marker walk (zero subprocesses;
non-repo grants degrade to an empty registry instantly), and metadata-mode
boundary opens skip the O(worktree) untracked enumeration entirely.
Verified: tsc 0 errors, Biome clean, cargo check 0, uploads 5/5, registry_read 2/2, git_boundary 17/17, parallel_mission 86/86, production build passing.