Reference
Keyboard Shortcuts
Spruce is fully keyboard-driveable. The tables below are the defaults; every binding is remappable under Settings → Keyboard Shortcuts, and overrides are stored per machine.
Shortcuts use ⌘ on macOS and Ctrl on Windows / Linux unless otherwise noted. ⇧ = Shift, ⌥ = Option / Alt, ⌃ = Control (macOS only; on Windows / Linux this maps to Alt).
Navigation
| Shortcut | Action |
|---|---|
| ⌘K | Open command palette |
| ⌘P | Search project-wide |
| ⌘F | Find — toolbar search on lists, in-document on the artifact editor, in-file on the code viewer |
| ⌘⇧[ | Go back |
| ⌘⇧] | Go forward |
| Esc | Close artifact viewer |
| ⌘B | Toggle sidebar (left nav) |
| ⌘⇧2 | Go to Documentation |
| ⌘⇧3 | Go to Settings |
There's no dedicated "Go to " shortcut; per-view shortcuts are dynamic and unbound by default. Assign them under Settings → Keyboard Shortcuts in the Views category, where every saved view and By type view appears.
Focus bar
| Shortcut | Action |
|---|---|
| ⌘[ | Previous focus bar item |
| ⌘] | Next focus bar item |
| ⌘1 – ⌘9 | Jump to focus bar item 1–9 |
Paired tool shortcuts
Each tool that exists in both surfaces — the tool panel and the global tool pages — gets a pair of shortcuts. The same letter, two modifiers:
- ⌘⇧<key>: toggle the tool panel tab on the open artifact (no-op outside an artifact).
- ⌘⌥<key>: navigate to the matching global page.
| Tool | Toggle tab | Go to global page |
|---|---|---|
| Code | ⌘⇧E | ⌘⌥E |
| Comments | ⌘⇧M | ⌘⌥M |
| Activity | ⌘⇧A | ⌘⌥A |
| Sessions † | ⌘J | ⌘⇧J |
| Git ‡ | ⌘⇧V | (no global page) |
† Sessions preserves single-modifier ⌘J for the tab, matching VSCode's "Toggle Panel" muscle memory. The global Sessions page lives at ⌘⇧J. ‡ "V" for version control. Git is artifact-scope only; there's no global Git page.
Other tool actions
| Shortcut | Action |
|---|---|
| ⌘⇧/ | Toggle resolved comments visibility |
| ⌘⇧D | Toggle code-changes overlay |
Terminals
| Shortcut | Action |
|---|---|
| ⌘⇧` | New terminal session (in current artifact) |
| ⌘` | New native terminal (hand off to your OS terminal) |
Session tabs (when the terminal pane is focused)
| Shortcut | Action |
|---|---|
| ⌃⌘[ | Previous session tab |
| ⌃⌘] | Next session tab |
| ⌃⌘1 – ⌃⌘9 | Jump to session tab 1–9 |
Git
All Git shortcuts operate on the open artifact and no-op outside an artifact context. Each one corresponds to an entry in the Git tab of the tool panel.
| Shortcut | Action |
|---|---|
| ⌘⇧W | Start working (create branch + worktree) |
| ⌘⇧O | Checkout branch |
| ⌘⇧C | Commit |
| ⌘⇧P | Push |
| ⌘⇧S | Stash changes |
| ⌘⇧U | Pop stash |
| ⌘⇧R | Update from main |
| ⌘⇧L | Create pull request |
| ⌘⇧G | Merge to main |
| ⌘⇧⌫ | Delete branch |
| ⌘⇧I | View uncommitted changes |
| ⌘⇧H | View branch commits |
| ⌘⇧B | View all branch changes |
Dynamic shortcuts (unbound by default)
Spruce auto-registers shortcut entries for runtime-discovered things:
- Creation: one entry per artifact template (
Create Feature,Create Task,Create <your custom type>, …). - Actions: one entry per project-defined action (
Run dev server,Run tests,Launch Claude, …). - Views: one entry per saved view (
view:<id>).
These ship unbound so they don't collide with the built-in shortcuts when you add a new template or action. Assign keys to the ones you reach for most under Settings → Keyboard Shortcuts; they're grouped under Creation, Actions, and Views in the settings panel.
Dev
| Shortcut | Action |
|---|---|
| ⌘⇧T | Toggle feature flags |
Rebinding
Every shortcut above is a default, not hard-coded. Open Settings → Keyboard Shortcuts to rebind any action. Overrides are stored in your browser's localStorage per machine. Switching machines (or signing in on a fresh install) gives you the defaults again.
Related
- Command Palette — the primary keyboard entry point.
- Embedded vs. global — what the ⌘⌥ half of the tool pairs navigates to.
- The tool panel — what the ⌘⇧ half toggles.
- Global Preferences — where rebindings live.