Sphere Navigator
A four-level overlay that lets you walk the needle dependency graph from the TUI without leaving it. Press g to open, g again to close. Sphere = a connected component of needles. Source: src/fcp_screen/components/sphere_nav.rs.
FOUR_VIEW_LEVELS
sphere_nav.rs:32–36, 234 (default level), 506 sphere_nav.rs:36, 252–303, 506 sphere_nav.rs:38, 507 sphere_nav.rs:40, 307–382, 508 KEYBINDINGS
g Open / close the sphere navigator overlay Option+G (©) Also opens the overlay (alias for g) k / ↑ Move cursor up j / ↓ Move cursor down (unless a joint is pending) Enter Descend into the selected item (sphere → detail → needle) j (with cursor on needle) Start or complete a joint — connects two needles as a new dependency edge / (slash) Enter search mode — type to filter, Enter to confirm, Esc to cancel Backspace (search) Delete one character from the search input Tab (search) Move to next match Esc Cancel search or close overlay
Source: src/fcp_screen/action.rs:214 (g), :229 (Option+G), :243–260 (mode routing). Key handlers live in src/fcp_screen/app.rs:1086–1160.
What the "j" Key Actually Does
In SphereDetail and IsolatedList views, the j key is overloaded: without a pending joint it moves the cursor down (the usual vim binding); with a cursor on a needle it starts a "joint" — the first half of a dependency edge.
Press j on needle A. The navigator stores A as pending_joint and the cursor can move freely to needle B (note: j as "move down" is disabled while a joint is pending, per app.rs:1132). Press j on B to complete the joint — the navigator writes a new dependency edge from A to B into the needle store.
Source: sphere_nav.rs:57 (pending_joint field), app.rs:1133–1160 (joint handling). This is the one mutation path in the navigator — every other key is read-only.