FixControl is built for operators on the keyboard. Every list page, every detail pane, and the global shell share one map. Press ? to open the live help dialog — it shows whatever is registered on the page you are on, so it's always honest. ? does not open help while you are typing in a field (a question mark is a normal character in a reply or a search box); click outside the field first, or use Open keyboard shortcuts in the command palette.
Global
| Keys | Does |
|---|---|
Cmd/Ctrl+K | Open the command palette (search, navigate, run actions). |
Cmd/Ctrl+Shift+K | Open Command Center (the AI assistant). |
? | Open the live shortcut help dialog (not while typing in a field). |
g then i | Go to Issues. |
g then m | Go to Missions. |
g then n | Go to Inbox. |
g then p | Go to Patches. |
g then w | Go to Work sessions. |
g then f | Go to Follow-ups. |
g then k | Go to Knowledge. |
g then a | Go to Agents. |
g then o | Go to Orchestration & context. |
g then r | Go to Agent runs. |
g then d | Go to Dashboard. |
g then s | Go to Settings. |
Press g, then the second key within about 1.5 seconds. g chords don't fire while you are typing in a field. On the Issues page, g o and g r mean something else (see below) and take precedence over the global ones.
Tables (every list page)
| Keys | Does |
|---|---|
j / k | Move active row down / up (wraps at edges). |
Shift+j / Shift+k | Page-jump 10 rows (clamps at edges, doesn't wrap). |
Enter | Open the active row (split pane on Issues, detail route elsewhere). |
/ | Focus the search input in the table toolbar. |
x | Toggle selection on the active row; sets the range anchor. |
Shift+x | Range-select from the anchor to the active row (Gmail-style, additive). |
Cmd/Ctrl+A | Select every row on the visible page. |
Esc | Clear selection if any; otherwise blur the focused element. |
Selection survives pagination, sort changes, and filter changes — refilter to narrow the visible set, keep ticking rows, and bulk-act on the union once you're done.
When the mouse hovers a row, the active-row marker syncs to it — so j/k after a hover continues from where you were looking.
Row actions (page-bound)
Each list page may bind extra single-key actions on the active row. The help dialog (?) lists the ones that the current page registered.
| Keys | Page | Does |
|---|---|---|
a | Issues | Run the row's primary action (open / approve / send). |
f | Issues | Run fix on the active row: in the list this is a quick trial run of the developer agent, without a mission or pull request (see Issues). |
g then o | Issues | Open queue (clear bucket filter). Replaces the global "Go to Orchestration & context" on this page. |
g then r | Issues | Review bucket. Replaces the global "Go to Agent runs" on this page. |
Page-bound row keys never fire while typing. To reach Orchestration or Agent runs from the Issues page, use the sidebar or the command palette. The Inbox has its own set of single-key actions — see Inbox → Keyboard shortcuts.
Detail pages
| Keys | Does |
|---|---|
[ | Previous item under the list filter+sort you came from. |
] | Next item under the same filter+sort. |
The pager only renders when there is recorded list context. Open a detail directly (deep link, fresh tab) and the pager hides — there's nothing to step through. The recorded context survives a page reload because it lives in URL state on the list page; the detail route reads it back.
Split view (Issues, Patches, Inbox, Follow-ups)
| Keys / gesture | Does |
|---|---|
| Drag divider | Resize the split. Width is persisted per-operator. |
Focus divider, ← / → | Step the divider 16 px. |
Focus divider, Shift + ←/→ | Step 64 px. |
Focus divider, Home / End | Snap to max / min. |
The split collapses on narrow viewports automatically. When the pane is collapsed, row activations route to the standalone detail page instead.
Command palette (Cmd/Ctrl+K)
The palette searches across navigation, queues, recent items, saved views, and actions — anything the page you are on registers shows up too.
- Type to fuzzy-search; arrow keys move the highlight;
Enterruns. - Navigation — "Go to Issues", "Go to Patches", "Go to Agent runs" and the other main pages, with their
gchord shown where one exists. - Queues — for example "Issues — Review queue", "Issues — Critical only", "Patches — In review".
- Recent items — issues and other items you opened recently, such as
BIZ-29. - Saved views — every saved view by name.
- System — "Open Command Center", "Open keyboard shortcuts", "Settings".
- The palette resets its query on close — re-opening starts clean.
Issue actions in the palette
On the Issues page the palette offers actions for the active row only — the issue open in the split pane. With an active issue, for example BIZ-29, you get:
- Approve BIZ-29 (also on the
akey) - Run fix on BIZ-29 (also on the
fkey) - Reject BIZ-29
- Mark BIZ-29 as duplicate
- Open BIZ-29
- Delete BIZ-29
Without an active row these actions are hidden. The palette does not create issues and does not act on a selection of several rows: use the bulk bar for Approve, Reject or Delete on selected rows (Delete only appears if your role may delete issues).
What's preserved across reloads
- Table state — page, page size, sort, search, filters, view — lives in the URL, so reload restores exactly what you had.
- Selection — survives pagination, sort, and filter changes; cleared by an explicit
Esc, the bulk-bar Clear, or navigating away. - Split-pane width + open state — per-page, per-operator, persisted in your browser.
- Saved views — per-tenant, shared across operators when marked shared.
- Detail-pager context — the captured list filter rides along to the detail route, so
[/]keep working after a reload of the detail page itself.