Skip to main content

Terminals & Panels

The panel model in Daintree: the seven built-in panel kinds, the grid, dock and dialog presentations, tabs, maximize, and how panels get their titles.

Reviewed

Everything in the main content area of a Daintree window is a panel. A panel has a kind (what it is) and a presentation (where it currently lives). Those two axes are independent, and understanding them is most of what you need to know to move around the habitat.

This page covers the panel model itself. Terminal behavior (the renderer, scrollback, search, links, drag-and-drop) lives on Terminals.

Panels tile the grid; every one carries the same header controls

Panel Kinds

Daintree ships seven built-in panel kinds. Each carries its own icon and accent color, so you can tell them apart at a glance in the grid, the dock, and the quick switcher.

KindAccentProcessWhat it is
TerminalGrayPTYA shell session. Runs any command, including an agent CLI.
BrowserBlueNoAn embedded Chromium browser. See Browser Panels.
Dev PreviewTealNoA dev server paired with a live preview. See Dev Preview.
ReviewVioletNoThe Review Hub bound to one worktree, so a diff sits next to the agent producing it.
File ViewerAmberNoA read-only view of one file. See File Viewer.
File BrowserCyanNoA tree plus folder listing for a worktree, scratch workspace, or plain project folder. See File Browser.
Diff ViewerGreenNoA single file's changes. Always opened against a target file, so it has no bare launcher entry.

Plugins register additional kinds through the same registry. A plugin panel gets an orange brand color, appears in the launcher alongside the built-ins, and is restored across restarts like any other panel.

Note
"Agent" is not a panel kind. An agent is a terminal panel running an agent CLI, which is why an agent panel can be searched, redrawn, restarted, and dropped on like any other terminal. See Agents for the roster and what Daintree tracks about a running agent.

Three Presentations: Grid, Dock, Dialog

A panel has up to three presentations: grid and dialog always, dock only for kinds that support it (see below). The panel record is the same across all of them (only its location changes), so moving a panel between presentations never restarts anything or loses state.

PresentationWhat it is
GridThe main content area. This is where work happens.
DockThe compact chip row along the bottom. A docked panel stays fully live and opens in a popover on demand. See UI Layout.
DialogA modal over the workspace. Used when you want to look at something without giving up a grid cell.

A dialog carries an Open as panel button in its header. Press it and the panel moves into the grid, keeping everything it had loaded: scroll position, expanded folders, the file you were on. That is the intended path from "glance at this" to "keep this open".

Dialogs layer rather than replace. Opening the Review Hub as a dialog and drilling into a per-file diff leaves the hub mounted underneath; closing the diff returns you to it exactly as you left it. Only the topmost frame takes focus, and only the topmost frame offers Open as panel. The File Browser and Diff Viewer pin their dialogs at a fixed near-full height, so expanding a folder or stepping to the next file doesn't resize the frame under your cursor.

A panel presented as a dialog, with the promote button in the header

Which kinds can be docked

Every panel kind is dockable by default; a kind opts out only when it has no meaningful compact form.

DockableNot dockable
Terminal, Browser, File ViewerDev Preview, Review, File Browser, Diff Viewer

The four that opt out are all surfaces whose whole value is the area they occupy: a live preview, a two-pane browser, a side-by-side diff. Squeezing them into a chip row would produce something you'd have to reopen to use. They can still be presented as dialogs.

When a reading panel leaves the grid (docked or closed), focus returns to whatever you were last looking at rather than jumping to the first terminal in the worktree.

Creating Panels

  • The launcher is the one searchable surface for starting anything: agents, terminals, panels, recipes, and closed sessions. Open it from the toolbar or the empty grid. See Palettes & Menus.
  • Panel palette: Command-N Control-N Control-N opens a picker for the non-terminal kinds.
  • Direct shortcuts for the kinds you open constantly, listed below.
ActionShortcut
New terminal Option-Command-T Control-Alt-T Control-Alt-T
Terminal in the current worktree Option-Command-N Control-Alt-N Control-Alt-N
Claude Code agent Option-Command-C Control-Alt-C Control-Alt-C
Codex agent Option-Command-X Control-Alt-X Control-Alt-X
Gemini agent Option-Command-G Control-Alt-G Control-Alt-G
Browser panel Option-Command-B Control-Alt-B Control-Alt-B
File Browser panel Option-Command-F Control-Alt-F Control-Alt-F
Duplicate the focused panel Command-T Control-T Control-T
Panel palette Command-N Control-N Control-N

Every kind routes its launch through a single action, so the toolbar, the launcher, the palette, a worktree card, and an agent calling it over MCP all resolve the target the same way. That is why opening a File Browser for a folder that already has one focuses the existing panel instead of stacking a second copy.

Managing Panels

ActionShortcut
Close focused panel Command-W Control-W, or Control-F4 Control-W
Reopen last closed panel Shift-Command-T Control-Shift-T Control-Shift-T
Resume a closed session Command-K, then Command-R Control-K, then Control-R Control-K, then Control-R
Close all panels Command-K, then Command-W Control-K, then Control-W Control-K, then Control-W
Restart all panels Command-K, then Command-A Control-K, then Control-A Control-K, then Control-A
Kill the focused panel Command-K, then Command-Q Control-K, then Control-Q Control-K, then Control-Q
Restart the focused panel Command-K, then Command-E Control-K, then Control-E Control-K, then Control-E
Rename the focused panel Command-K, then Command-L Control-K, then Control-L Control-K, then Control-L
Find in the focused panel Command-F Control-F Control-F
Focus panel 1–9 Command-1, through Command-9 Control-1, through Control-9 Control-1, through Control-9
Next panel (includes docked) Control-Tab Control-Tab Control-Tab
Previous panel (includes docked) Control-Shift-Tab Control-Shift-Tab Control-Shift-Tab
Back to the previously focused panel Option-Command-` Control-Alt-` Control-Alt-`
Move the focused panel to the dock Option-Shift-Command-D Control-Alt-Shift-D Control-Alt-Shift-D
Move the focused panel to the grid Option-Shift-Command-G Control-Alt-Shift-G Control-Alt-Shift-G
Toggle every panel's dock state Option-Shift-Command-M Control-Alt-Shift-M Control-Alt-Shift-M

Three more chords act on every session in the active worktree at once: Command-K, then Command-M Control-K, then Control-M Control-K, then Control-M docks them all, Command-K, then Command-X Control-K, then Control-X Control-K, then Control-X maximizes them all, and Command-K, then Command-V Control-K, then Control-V Control-K, then Control-V resets their renderers. The full list is on Keyboard Shortcuts.

Maximize & Focus Mode

There are two ways to clear the space around a single panel, and they are easy to confuse. Maximize expands one panel to fill the grid while the sidebar stays put. Focus Mode goes further and hides the sidebar and the assistant entirely. Use maximize when you want one panel large but still want the worktree list in reach; use Focus Mode when you want nothing but the panel.

Maximize a panel

  • Keyboard: Control-Shift-F Control-Shift-F Control-Shift-F toggles maximize on the focused panel.
  • Hotkey twice: Command-1, through Command-9 Control-1, through Control-9 Control-1, through Control-9 focuses the panel at that position. Press the same hotkey again and it maximizes; once more and the grid comes back.
  • Double-click the panel header: click the header's drag area: the icon or the empty space beside the title, not the title text, a tab, a button, or an input.

Double-clicking a panel's title text or a tab starts an inline rename instead, and double-clicking a docked panel's header moves it back to the grid rather than maximizing it.

Note
Maximize state is scoped per worktree. Switch away and Daintree stashes the maximize you had up; switch back and it restores it, provided the panel it named still exists. That means an oversized agent in one worktree doesn't follow you into the next one, and you don't have to re-maximize every time you come back.

Focus Mode

Focus Mode gives a single panel the whole window. The sidebar is hidden (not collapsed), and the Daintree Assistant goes with it.

  • Keyboard: Command-K, then Command-F Control-K, then Control-F Control-K, then Control-F (a two-key chord)
  • View menu: Toggle Focus Mode
  • Command palette: Shift-Command-P Control-Shift-P Control-Shift-P , then search for "Toggle Focus Mode"

An Exit Focus button appears in the header as the way back. If other panels are open behind it, a background indicator in the center of the header shows how many are still running, with an animated pulse for the ones actively working. Focus Mode is saved per project, so reopening a project restores whichever mode you were last in, including the sidebar width you had.

Panel Tabs

A panel can hold more than one session. Once it does, the header switches from a single title to a tab bar, with each tab showing the panel's icon, a truncated title, and a close button on hover. Single-tab panels keep the standard header and reveal a + button on hover.

Creating tabs

Command-T Control-T Control-T duplicates the focused panel as a new tab alongside it. The + button does the same. Both create a new session of the same kind. Agent tabs show a state badge next to the title (a spinner for working, a pause icon for waiting), so you can track progress across tabs without switching.

ActionShortcut
Next tab Shift-Command-] Control-Shift-] Control-Shift-]
Previous tab Shift-Command-[ Control-Shift-[ Control-Shift-[

These work from anywhere in the panel and wrap at the edges. When the tab bar itself has keyboard focus, ArrowLeft and ArrowRight move between tabs and Home and End jump to the first or last. Arrow navigation is there for accessibility, not as the fast path.

Overflow and management

When tabs exceed the header width, scroll arrows appear at the edges on a gradient fade. Clicking one pages the bar by roughly 80% of its visible width. Switching to a tab by any means scrolls it into view, so the active tab is never lost behind an edge.

  • Rename: double-click a tab title to edit it inline. Enter or a click away confirms, Escape cancels.
  • Reorder: drag a tab left or right within the bar.
  • Close: hover a tab to reveal its × button. Closing the active tab moves focus to the nearest neighbor.

Panel Grid Layout

Pick a layout strategy in Settings > Panel Grid:

StrategyBehavior
Automatic (default)Columns are chosen from the available width, not the panel count.
Fixed ColumnsLock to N columns (1–10).
Fixed RowsLock to N rows (1–10).

The automatic grid is size-driven. It fits as many columns as will hold a panel at least 380 px wide, capped at four, with a dead band at each boundary so nudging a window edge doesn't flap the whole layout. Rows stretch to fill the height until a row would fall below a minimum readable height (roughly sixteen text rows), and at that point the grid scrolls rather than shrinking panels into uselessness. Panel count on its own never triggers scroll mode; running out of vertical room does.

In scroll mode the grid uses its own overlay scrollbar rather than the platform one: a chunky, always-visible handle with a minimum size, modelled on the terminal's own slider. It re-measures whenever the layout could have changed the content height (a panel opening or closing, a column-count flip, entering or leaving scroll mode), because those change the scrollable height without firing a scroll or resize event, which is exactly when a native scrollbar goes stale.

Two-pane split

Enable a side-by-side split in Settings > Panel Grid. Panels arrange into two panes at a ratio you set anywhere from 20% to 80%. A prefer preview option routes browser and dev preview panels into the secondary pane automatically, which is the "agent on the left, live preview on the right" arrangement most people want it for.

Moving panels and focus

  • Move focus left, right, up, or down: Option-Command-Left Arrow Control-Alt-Left Arrow Control-Alt-Left Arrow , Option-Command-Right Arrow Control-Alt-Right Arrow Control-Alt-Right Arrow , Option-Command-Up Arrow Control-Alt-Up Arrow Control-Alt-Up Arrow , Option-Command-Down Arrow Control-Alt-Down Arrow Control-Alt-Down Arrow .
  • Move the panel itself within the grid: Option-Shift-Command-Left Arrow Control-Alt-Shift-Left Arrow Control-Alt-Shift-Left Arrow , Option-Shift-Command-Right Arrow Control-Alt-Shift-Right Arrow Control-Alt-Shift-Right Arrow , Option-Shift-Command-Up Arrow Control-Alt-Shift-Up Arrow Control-Alt-Shift-Up Arrow , Option-Shift-Command-Down Arrow Control-Alt-Shift-Down Arrow Control-Alt-Shift-Down Arrow .
  • Option-Command-Z Control-Alt-Z Control-Alt-Z undoes the last layout change; Option-Shift-Command-Z Control-Alt-Shift-Z Control-Alt-Shift-Z redoes it.

You can also drag panels between worktrees using the sidebar's drop targets.

Restore order

Reopening a project doesn't bring every panel back at once. The active worktree's panels load first. Within every other worktree, the panel you most recently focused is restored ahead of the rest, and the remainder fill in behind on a staggered schedule. Daintree tracks this by stamping each panel with the time you last focused it. See Session Management for what is saved and what is rebuilt.

The Empty Grid

An empty grid is a launcher, not a blank slate. It stacks five sections, each arriving a beat after the one above it:

  1. Recipes: run a saved workspace setup straight from here. See Recipes.
  2. Resume: a one-line shortcut back into a closed agent session.
  3. Quick actions: a chip per agent whose toolbar button is currently visible, plus New terminal and Browse files, and a button into the full searchable launcher.
  4. Project pulse: the worktree's recent activity. See Project Pulse.
  5. Tips: a rotating hint, shown once you've launched an agent at least once.

Recipes lead deliberately: the fastest way to fill an empty grid correctly is to replay a setup you already trust. Switching projects replays the entry sequence rather than remounting the sections, so the fetches and rotation timers behind them keep their state.

An empty grid is not empty space: it is the launcher

Panel Titles

A panel's title comes from one of three owners, and the stronger owner always wins. This is what stops an agent's own task title from overwriting a name you chose.

OwnerSet byBehavior
DefaultNobody, the starting stateDerived from live runtime identity. Flips as detection promotes or demotes an agent, and composes in the agent's observed task title.
CustomAutomation: a preset, a launch name, an MCP or Assistant renameFrozen against detection rewrites. Task composition still applies, and a later automation rename can replace it.
UserYou, by renaming the panelFully frozen. No detection rewrite, no task composition, and automation renames bounce off it.

A user-set title survives a respawn, a restart, and duplication into a new tab: it is part of the panel record, not a label on the process. Renaming a panel to an empty string resets it to Default and hands the title back to detection. Rename with Command-K, then Command-L Control-K, then Control-L Control-K, then Control-L , by double-clicking the title text, or from the panel's context menu.

Where to Go Next

  • Terminals: the renderer, scrollback, search, links, drag-and-drop, and everything else terminal-specific.
  • File Viewer: reading a single file without leaving the habitat.
  • File Browser: browsing a worktree's files and handing them to an agent.
  • QuickRun: firing off a command or a detected script from the sidebar.
  • UI Layout: the toolbar, sidebar, and dock that surround the grid.
  • Recipes: saving a panel arrangement you want back.
  • Session Management: what persists across a close, a restart, and a project switch.