Dashboard

KeyAction
Up / Down (or k / j)Move selection through repo headers and workspaces
h / lFold / unfold the focused repo (idempotent; use zz to toggle)
enter (or i) on a workspaceAttach to its claude session (spawns or resumes)
enter (or i) on a repo headerOpen the New Workspace modal targeting that repo
nNew workspace in the selected row's repo
Shift + NNew workspace in permissive mode (claude launches with --dangerously-skip-permissions)
eOpen the selected workspace in your editor (no-op on repo header)
tOpen the selected workspace in a terminal (no-op on repo header)
vView diff of the selected workspace's branch vs the repo's base branch (auto-detected; no-op on repo header)
Shift + KOn a workspace: show processes under its worktree. On a repo header: move the repo up one slot (persisted)
Shift + JOn a repo header: move the repo down one slot (persisted). No-op on a workspace
sOpen repo settings modal for the selected repo (or the parent repo when a workspace is selected)
dArchive the selected workspace (no-op on repo header)
oCycle how workspaces are ordered inside a repo: by recency (default) or by status. Persisted.
qQuit (kills all running sessions)
pToggle the project-manager digest pane (opens focused, instant, no agent session)
TabSwap focus between dashboard and the digest pane (when visible)
z zToggle fold on the focused repo
z aExpand all repos (override default-fold heuristic)
z MFold all repos
j / k (or arrows) (when digest focused)Move selection through digest cards
Enter (when digest focused)Attach to the selected workspace
q / p (when digest focused)Close the digest (q only closes it while the digest is focused — dashboard-focused q quits wsx)
r (when digest visible)Force a git/PR cache refresh

New Workspace / Confirm Archive modals

KeyAction
enterConfirm
escCancel
y / nConfirm/cancel on ConfirmArchive
Printable chars / backspaceEdit the name field on NewWorkspace

Workspace actions card (? on a workspace)

KeyAction
rRename the workspace (and its git branch)
CPick a name color for its dashboard row
oOpen its setup log — see below
xCancel an in-flight setup (creates only; archive is not cancellable)
? / escClose the card

Other keys (e, t, v, g, c, enter) are forwarded to the dashboard and act on the selected workspace.

Setup log viewer (o)

Whenever the selected workspace carries a lifecycle badge — ⚙! (setup failed), ⚙? (setup cancelled), or a spinner (being created or archived) — the footer shows a ? o setup log hint, since the badge itself has no room to say where the reason lives.

The viewer shows the setup script's output for the selected workspace, whatever state it is in: the live tail while the workspace is still being created, and the persisted log from ~/.local/state/wsx/logs/ once it has finished. Stderr lines are marked ! and highlighted in both. Only the last 256 KiB of a log is read, and at most 2000 lines are shown, so a very verbose setup script loses the start of its output — the end, which says how the run finished, is always kept.

A workspace with no log to show says which case it is rather than showing an empty pane: no setup script was ever run, the file could not be read (with the path and the error), or — while archiving — that archive output is not kept at all.

KeyAction
Up / Down (k/j)Scroll one line
PageUp / PageDownScroll ten lines
g / HomeJump to the start of the log
G / EndJump back to the end
esc / enterClose (background work keeps running)

Attached workspace

Keystrokes are forwarded to the running claude session, except:

KeyAction
Ctrl-x dClose the focused pane. When only one pane is open, detaches back to the dashboard (session keeps running).
Ctrl-x Shift-DSave the current split layout for this workspace, then detach to the dashboard. Restored on next attach.
Ctrl-x EscDismiss the navigation overlay without detaching (stay in the attached view).
Ctrl-x ←/→/↑/↓Move focus between split panes in that direction (vim's Ctrl-w motions).
Ctrl-x uOpen the floating updates panel (a stripped-down dashboard in the dashboard's order; v/s open in a split, o / G cycle the dashboard's sort and grouping, / filters the list)
Ctrl-x aOpen the agents panel to add/remove agents in this workspace (see Multi-agent workspaces)
Ctrl-x eOpen the attached workspace in your editor (same editor_cmd as [e] on the dashboard)
Ctrl-x tOpen the attached workspace in a terminal (same terminal_cmd as [t])
Ctrl-x vView diff of the attached workspace's branch vs the base branch (same diff_cmd as [v])
Ctrl-x kShow processes running under the attached workspace's worktree
Ctrl-x <Open the prompt-tag picker (wrap a body in an XML tag and insert it unsubmitted)
Ctrl-x xSend a literal Ctrl-x to claude
Ctrl-x cToggle the change chronology bar on/off
Ctrl-x CSwap the chronology bar's side (left ↔ right)
Ctrl-x → (bar on right) / Ctrl-x ← (bar on left)Move keyboard focus into the chronology bar (from the adjacent edge pane only)
Ctrl-x ← (bar on right) / Ctrl-x → (bar on left)Return focus from the bar to the agent pane
/ k (bar focused)Move selection up (toward newer entries)
/ j (bar focused)Move selection down (toward older entries)
g (bar focused)Jump to the top (newest entry)
G (bar focused)Jump to the bottom (oldest entry)
Enter (bar focused)Open the full-change detail modal for the selected entry
Esc (bar focused)Return focus to the agent pane

When a workspace has more than one agent, the footer also binds bare keys q w r y i o p s h j (no leader) to switch the focused pane between agents — see Multi-agent workspaces.