Palettes & Menus
The shared palette surface, the action palette's ranking and pinning model, the quick switcher, and every right-click menu in Daintree.
Daintree is driven from two families of surface. Palettes are the keyboard half: a search field over a ranked list, opened by a shortcut and closed by Escape. Context menus are the pointer half: the same actions, reached by right-clicking the thing you want to act on. This page covers both.
One palette surface
Every palette in Daintree renders on a single shared shell. That is a design constraint rather than an implementation detail: palettes open from the same keyboard reflex and often in sequence, so a free width per palette reads as the box jumping around rather than as a deliberate size.
The shell has two width tiers, and a palette declares which one it is:
| Tier | Width | Used for |
|---|---|---|
| Anchored | 484px | Launcher-style pickers that hang off a button: the launcher, the panel palette, the worktree palette, Send to agent. |
| Command | 608px | Full palettes that take the window: the action palette, the quick switcher, the project switcher, Pilot. |
Chrome scales with the tier, so a toolbar launcher and a command palette no longer share one box. Three more rules follow from the shared shell:
- A footer renders only when it names what Enter does. Most surfaces have no footer band at all, because a decorative strip of key hints is chrome, not information.
- Selection is one treatment everywhere. A selected row gets a neutral raised fill plus a hairline outline, driven by the rendered
aria-selectedattribute rather than a JavaScript prop, so the highlight and the screen-reader announcement cannot disagree. The outline, not the fill, carries the contrast: the fill alone clears barely more than 1:1 against the palette surface. The same token is the search field's focus border, so the focused field and the selected row are one treatment at two strengths. - Band labels are one type treatment. "Pinned", "Recently used", "Scratch" all render identically wherever they appear.
Selection is deliberately not accent-colored. Green is reserved for links and active state; a stacked accent rail on every palette row diluted it, and it read as "this row is special" rather than "this is where Enter goes".
Only one palette can be open at a time. Opening one closes whatever was already up. That mutex is what makes the mode prefixes below work: the action palette can hand off to the worktree palette atomically, without two overlays ever being on screen together.
The palettes you can open directly
Every palette below opens from a rebindable shortcut. See Keyboard Shortcuts.
| Palette | Shortcut | What it searches |
|---|---|---|
| Action palette | Double Shift, or Shift-Command-P Control-Shift-P Control-Shift-P | Every action in the app |
| Quick switcher | Command-P Control-P Control-P | Open panels and worktrees |
| Launcher | Toolbar or dock + | Agents, panel kinds, recipes, presets |
| Panel palette | Command-N Control-N Control-N | Panel kinds to create |
| Worktree palette | Command-K, then Command-O Control-K, then Control-O Control-K, then Control-O | Worktrees in the current project |
| Project switcher | Option-Command-P Control-Alt-P Control-Alt-P | Projects and scratch workspaces |
| Prompt history | Command-R Control-R Control-R | Prompts you have sent in this project |
| Resume sessions | Command-K, then Command-R Control-K, then Control-R Control-K, then Control-R | Closed agent sessions |
| Send to agent | Shift-Command-E Control-Shift-E Control-Shift-E | Where to send the current terminal selection |
| Theme palette | Command-K, then Command-T Control-K, then Control-T Control-K, then Control-T | Themes |
| Pilot | Option-Command-O Control-Alt-O Control-Alt-O | Every agent run across every project |
A handful more open from a button or from inside another surface rather than a shortcut: the new terminal and quick create worktree pickers, the project switcher's own dropdown, the fleet picker (see Fleet), the command picker behind the input bar's ❯ button, the plugin quick pick a plugin can raise, and the two stacked log level pickers in diagnostics.
Pilot (Option-Command-O Control-Alt-O Control-Alt-O , header "All agents") is a palette-family surface, and it opens, navigates and dismisses like every other one here. What it lists is different enough to have its own page: every agent run across every project and scratch workspace, banded worst-first and filterable. See Pilot.
Action palette
The action palette lists every command in Daintree. Press Shift twice within 300ms to open it, or use Shift-Command-P Control-Shift-P Control-Shift-P . It is the same reflex as JetBrains' Search Everywhere or the VS Code command palette. The header reads Actions and the field prompts Find an action.
An empty query browses the whole inventory
Open it and type nothing, and you get the full action surface, grouped and uncapped:
- Favorites: actions you have pinned, in pin order.
- Recently used: up to five, ranked by frecency.
- Every remaining action, grouped by category: Worktrees, Panels, Git, Projects, Forge, Agents, Terminals, Files, and on down through Settings, Voice, Help and Diagnostics.
Recall on top, browsing below. A palette opened to find out what the app can do now has somewhere to go, which a favorites-plus-recents rail did not. The category order is fixed and sequenced by task flow rather than by how many actions each happens to hold. A browse list that reorders itself between opens is not browsable. Within a category, rows are alphabetical.
Every action appears in exactly one place: an action promoted into Favorites or Recently used is skipped in its category. An action hidden from the recents rail, or one that fell past the five-row cap, still appears under its category: hiding demotes an action out of frecency, it does not retire it. Actions that plugins contribute are in the list too, under their own category, appended after the built-in groups.
Typing ranks instead
Type and the bands collapse into one ranked list of at most 20 results, with a notice reporting how many more matched. Matching runs across action titles, categories, descriptions and keywords, weighted so a title match outranks the rest.
Two bonuses sit on top of the raw match score:
- Frecency. Actions you run often and recently carry an MRU bonus. Ties on score break by most recent use, so a recently-used-once action outranks a stale one.
- Context boost. Actions relevant to what is focused get lifted. Focus a terminal and terminal and panel actions rise; focus a browser and you get browser and panel actions; open the settings dialog and settings and preferences actions come up. An active worktree lifts worktree, git and forge actions.
Each row carries a color-coded category badge, the title, a short description and the assigned shortcut. An action unavailable in the current context renders as a disabled row with an italic reason directly under the description ("Worktree has no resource connect command configured"), inline, with no hover needed.
Pinning and eviction
The empty-query rail is editable. Hover a row and two controls appear:
- Pin to Favorites promotes an action to the top band, up to 100 of them. Pinning supersedes hiding, so pinning a previously hidden action restores it.
- Hide from Recently used evicts an action from the frecency band, up to 200. It is offered only on Recently-used rows. Offering it on a category row would promise an eviction that surface cannot perform. A 30-second undo toast titled "Hidden from Recently used" carries a Show in Recently used action.
Neither control appears on a destructive row. A confirm-tier action can never be pinned, is never listed in Favorites or Recently used, and never appears in the empty-query browse rail at all. Search still finds it: someone who types the name has named the destructive action, where someone scrolling an inventory has not.
Mode prefixes
On an empty query, five characters route the palette somewhere else:
| Prefix | Goes to |
|---|---|
> | Commands: stays in the action palette, as an in-place chip |
@ | Worktrees |
# | Panels |
: | Prompt history |
/ | Projects |
The mode shows as a chip beside the query, and Backspace at the start of the field pops it. The footer says ⌫ exit scope while one is active. A one-time discoverability row teaches the prefixes and then retires, because it is teaching content rather than chrome. A query containing a slash or starting with a dot or tilde looks like a path, so the Projects hint surfaces then too.
Destructive actions
Every action declares one of three danger levels (safe, confirm or restricted), along with a mandatory rationale explaining the classification. It is a declared property, not an inference from whether something happens to open a dialog.
A confirm row renders with a warning glyph, an ellipsis appended to its title following the platform convention for "this opens something", and aria-haspopup="dialog" so assistive tech announces the same thing. Confirm actions are also excluded from repeat-last-action.
Repeat last action (Shift-Command-. Control-Shift-. Control-Shift-. ) re-runs the last action you triggered from the palette, with its context refreshed against whatever is focused now. Useful when you are applying one command across several worktrees in a row.
Quick switcher
Command-P Control-P Control-P jumps to any open panel or worktree. With no query, results are ordered most-recently-used, so your last-focused panel is at the top. Type and fuzzy matching takes over, still with a recency boost.
Each result carries the agent or panel icon, a type badge, and a subtitle showing the working directory or worktree path. Backgrounded panels are marked as such. Selecting a panel that lives in a different worktree switches to that worktree on the way.
Project switcher
Option-Command-P Control-Alt-P Control-Alt-P lists your projects and scratch workspaces. Two details are worth knowing because they are easy to misread.
The project you are in and the row Enter will land on are marked separately. The selection highlight is the one authority on the Enter target; the current project rides aria-current instead, exactly as every other active-row marker in the app does, and says ", current" in its accessible name because bare aria-current is announced unreliably inside a listbox. Picking the project you are already in is a "never mind": the palette closes and nothing reloads.
Rows collapse to one line. A second line is earned, not standing: it appears when the row has something to say about what the project is doing, or when a path hint is needed to tell two projects with the same folder name apart. "Opened 13h ago", repeated down twenty rows, was most of the palette's height and none of its meaning.
Right-click a row for Open in new window, Free memory, Stop all agents and Close project. Command-Enter Control-Enter Control-Enter opens the highlighted project in a new window and Alt+Enter loads it in the background without switching focus.
The command HUD
Several actions live behind a two-key chord starting with Command-K Control-K Control-K . Press it alone and release, and a searchable HUD anchored to the bottom of the window lists every completion of that layer, grouped by category, each row carrying its second key as a chip. Command-K, then Command-K Control-K, then Control-K Control-K, then Control-K closes it. It is documented in full on Keyboard Shortcuts.
Context menus
Every panel, worktree card and file row has a right-click menu. Menus follow your theme, show inline shortcut hints, and support full keyboard navigation: arrows, Enter, Escape, and left and right for submenus.
Four ways to open one:
- Right-click inside a panel, on a dock pill, on a tab, on a worktree card, or on a file row.
- The
...button on a worktree card header, which opens the same menu as right-clicking the card. - Shift-F10 Shift-F10 Shift-F10 , or the hardware Context Menu key, for the focused panel.
- The action palette: search for "Open Context Menu".
Terminal and agent panels
This is the deepest menu in the app. Sections appear as they apply, so an idle plain terminal shows far less than a working agent.
Clipboard and selection
- Copy: the terminal selection. Disabled when nothing is selected. On Windows and Linux plain Ctrl+C is an interrupt, so the menu item, or Ctrl+Shift+C, is the copy path.
- Paste
- Send to agent: forwards the selection into another terminal's input. Disabled with no selection.
- Open link / Copy link address: only over a detected URL. Trailing punctuation is stripped.
- Open in file browser and Reveal in Finder (Show in Explorer, Show in folder): only over a detected file path. A right-clicked folder is expanded as well as selected.
- View file / Open folder: when the selected text itself resolves to a path.
Fleet (on eligible panels, see Fleet)
- Add to fleet / Remove from fleet
- Arm all in this worktree
- Clear fleet: destructive, shown only when a fleet of two or more is armed.
- Snooze (submenu): silences a known run for a chosen duration, with Wake now appearing only once something is actually snoozed.
Layout
- Move to Worktree (submenu): every other worktree. Shown only with more than one.
- Move to New Worktree...: agent panels only.
- Move to Dock / Move to Grid
- Maximize / Restore (Control-Shift-F Control-Shift-F Control-Shift-F ): grid panels only.
Terminal actions
- Redraw terminal: redraws the renderer, which clears display glitches.
- Restart terminal: restarts the process.
- Force resume (paused): only when a terminal has been paused by output backpressure.
- Lock input / Unlock input: stops keyboard input reaching the terminal.
- Lock dictation to this panel and Recent dictation targets (submenu). See Voice Input.
- Watch terminal / Cancel watch: subscribes to activity notifications. Agent panels only; see Notifications & Sound.
Identity and lifecycle
- Duplicate terminal, Rename terminal, View terminal info
- Send to background: out of the grid without closing.
- Trash terminal: soft-closes immediately, no dialog. Recoverable from the dock's Trash container, and Shift-Command-T Control-Shift-T Control-Shift-T restores the most recent one.
- Kill terminal: hard-kills the process. Destructive, in red. A confirmation appears only when a running agent session is attached; an idle terminal is killed straight away.
Browser, Dev Preview and Review panels
All three share the layout section, then add their own. The last item on each is the destructive one.
| Panel | Own items |
|---|---|
| Browser | Reload page, Open in browser, Copy URL, Duplicate browser, Rename browser, Send to background, Trash browser, Remove browser |
| Dev Preview | Reload preview, Open in browser, Copy URL, Duplicate dev preview, Rename dev preview, Send to background, Trash dev preview, Stop dev server |
| Review | Duplicate review, Rename review, Send to background, Trash review, Remove review |
Open in browser and Copy URL are disabled when no valid URL is loaded. There is no "Close" item on any of the three: trashing is the recoverable close, and Remove is the permanent one.
File Viewer, File Browser, Diff Viewer and plugin panels
These four are reading surfaces with no process behind them, so they share one short menu: the layout section, then Rename panel, Send to background, Trash panel, and the destructive Remove panel.
Worktree card menu
Right-click a worktree card in the sidebar, or use the ... button on its header. Both open the same menu.
- Move Up / Move Down: reorders the card.
- Launch (submenu): every available agent, then Open Terminal, Open Browser, Open Dev Preview.
- Open Panel Palette, Browse Files
- Sessions (submenu): Dock All, Maximize All, Close All, Terminate All, Reset All Renderers, Clear Session History, Select All Terminals, Select Waiting Agents, Select Working Agents. Each shows a count of what it would affect.
- Open in Editor, Reveal in Finder, Copy Path
- Stop Dev Server / Restart Dev Server: when one is running.
- Resource (submenu): Environment, Provision, Teardown, Resume, Pause, Connect, Check Status. See Remote Compute.
- Attach to Issue... / Change Issue..., and View Plan when one exists.
- Open changes, Review & Commit: opens the Review Hub.
- Compare Worktrees…
- Copy Context (submenu): full context or modified files only. See CopyTree.
- Pin to Top / Unpin, Collapse Card / Expand Card
- Run Recipe (submenu) and Save Layout as Recipe. See Recipes.
- Delete Worktree...: destructive.
See Worktrees for what the card itself shows.
File row menus
Right-clicking a file row gets a file menu, not the menu of whatever panel it sits in. This applies on all four file-listing surfaces: the worktree card's changed files, the File Browser tree, the Review Hub list, and the diff sidebar.
- Open diff, Open file, Open in editor
- Insert file reference: drops an
@filechip into the focused agent's input. See Unified Input. - Copy context for that one file
- Copy path, Copy relative path, Copy file name
- Reveal in Finder (Show in Explorer, Show in folder)
Plugins reach every file surface through this one section, so a plugin's file action appears on all four with the clicked file passed as its subject.
Empty grid right-click
Right-clicking empty panel-grid space renders the full launcher inventory inline (the same agents, panels and recipes the toolbar + shows, as menu items), then a Grid Layout submenu (Automatic, Fixed Columns, Fixed Rows), then Terminal Settings….
Dock and toolbar right-clicks
Right-clicking a toolbar button offers Pin to toolbar / Unpin from toolbar and Customize toolbar…. Right-clicking empty dock space offers the Dock density submenu. Both are covered on UI Layout.
For the full shortcut reference, see Keyboard Shortcuts.