docs/internal/dock-ux-test-plan.md
Manual tmux test checklist for the global orchestrator dock and its interaction with the rest of the editor. Run each flow interactively (
tmux+send-keys+capture-pane) and record PASS/FAIL. This is the script behind the bug sweep inorchestrator-dock-gaps.md.Harness:
tmux new-session -d -s v -x 160 -y 42, launch./target/release/fresh --log-file /tmp/v.log .. The dock toggle is reachable from an editor session viaCtrl+P → "Orchestrator: Toggle Dock". From a terminal session, exit terminal-input first (Ctrl+]).
↑/↓ moves the selection and live-switches the active window
(the pane to the right re-roots) with a directional wipe.Enter on a session dives: focus moves to that window, dock stays
visible (blurred).Esc leaves the dock: focus to editor, dock stays visible.↑↓ work afterward).Ctrl+S) in a dived session works./ focuses the filter input.↑/↓ navigate the filtered results (and live-switch).Enter in the filter returns to the list (does NOT dive/blur); a
second Enter then dives.Esc in the filter returns to the list; Esc again leaves the dock.Space toggles the highlighted row's checkbox ([x]).Delete shows an in-place confirm; Cancel/Confirm work.+ New (button or Alt+N) opens the new-session form.Alt+P / button) flips current-project ↔ all.Alt+T) shows/hides discovered on-disk worktrees.Ctrl+P while the dock is focused: blurs the dock and opens the
palette (key falls through); dock stays visible.F10 / Alt+F) opens; dropdowns align to the chrome (not
offset by the dock) — known gap if not.31a. Open Settings while the dock is visible: PASS — the dialog renders beside the dock (right of the column), fully visible, no overlap. (Before the fix it centered on the full screen and the dock overpainted its left ~32 cols.) 31b. Keyboard-operable: PASS — Settings has focus (the dock blurred on the Ctrl+P that opened the palette); the dock doesn't steal keys. 31c. Esc closes: PASS — Settings dismissed, dock still visible & usable. 31d. Dock hidden baseline: PASS — Settings renders full-width centered. 31a. Open Settings (Ctrl+P → "Settings") while the dock is visible: the Settings dialog renders and is usable; note whether the dock column overlaps its left edge (z-order) or dims correctly. 31b. Settings is keyboard-operable (navigate categories, Tab focus, search, Esc) — the dock must not steal its keys. 31c. Close Settings (Esc): the editor + dock return to a clean state (no residual dim, dock still visible & usable, cursor correct). 31d. Open Settings while the dock is hidden (baseline): renders full-width as normal.
31e. Live Grep (Alt+/) opens its floating overlay beside the dock
(right of the column), not overlapping it; results + preview show.
31f. Live Grep is keyboard-operable (type query, ↑↓ results, Enter opens
a match in the editor), and the dock doesn't steal keys.
31g. Resume Live Grep (Alt+Shift+/) restores prior query/results.
31h. Quickfix export to the Utility (bottom) dock works; the left dock
and bottom dock coexist.
Ctrl+E focuses the file explorer; the dock stays put./ inside explorer) works independently of the dock.Ctrl+] then Ctrl+P reaches the palette.A single end-to-end scenario, not isolated flows — catches state leaking
across toggles (lingering editor mode, stale focus, cursor, key capture).
39. Toggle the dock on (Ctrl+P → Toggle Dock).
40. ↑/↓ between sessions; confirm the window re-roots each time.
41. Enter to dive into a session; type/edit in its buffer; confirm
the edit lands and the dock stays visible.
42. Toggle the dock off; confirm the chrome reclaims the full width
and the editor is fully usable (type, move cursor, Ctrl+P palette,
Ctrl+E explorer) with no residual dock key-capture.
43. Do a normal editor workflow with the dock off (open a file, edit,
save) — behaves exactly as if the dock never existed.
44. Toggle the dock on again; confirm it reopens focused, the session
list is intact/correct, and ↑↓/dive work again (no stale state).
45. Repeat 39–44 a couple of times — no drift, no leaked mode, cursor
always correct.
/, filter): PASS — / focuses filter, typing filters live.[x] on the highlighted row.mouse_click_on_dock_new_ button_opens_form (hit-test) + mode-independent keys (click re-focuses
→ keyboard works). Needs a real terminal for full manual confirmation.Alt+/ overlay opens beside the dock
(chrome-centred), not overlapping it.Ctrl+]
first (the dock's Alt+/ blur falls through to the PTY otherwise).Master added a "Show empty/1-file sessions" filter to the modal
picker (hidden by default), and the dock shares filterSessions, so the
dock now hides empty/1-file sessions (e.g. a freshly-launched session
with no edits). But buildDockSpec has no toggle to reveal them — so the
dock can't show empty sessions at all. Add the toggle (or a dock
equivalent) to buildDockSpec. Tracked in orchestrator-dock-gaps.md.
Dock keys are handled at the floating-panel layer (host
dispatch_floating_widget_key), NOT via editor.defineMode — mode
bindings resolve against the active buffer's mode, which the dock floats
over, so a session whose buffer has a local mode (terminal, markdown, …)
would shadow them. This is why earlier mode-based Space// never worked.