유대선
프로젝트로
·업데이트·2

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.