Spaces and panes
A space is one thread of work — a bug fix, a feature, a migration — holding the panes that belong to it. Splits tile themselves, the layout survives restarts, and closing the window closes nothing.
Splits
⌘D splits the focused pane along its longer axis, so repeated splits produce a balanced grid instead of ever-thinner slivers. ⌘⇧D splits vertically regardless. Dividers drag, and the ratios persist per space. Closing a pane collapses its branch of the tree.
One pane. ⌘D splits it along its longer axis — press it a few times.
⌘⏎ zooms the focused pane to the whole canvas; the others wait underneath, still running. The zoom belongs to the window, not the daemon, so another window on the same session keeps seeing the split. Escape still reaches the program inside, so Vim and shell editing keep working while zoomed.
- ⌘DSplit along the longer axis
- ⌘⇧DSplit vertically
- ⌘⏎Zoom / unzoom the focused pane
- ⌘⇧HJKLFocus the pane left / below / above / right
- ⌘]Cycle panes within the space
- ⌘⇧MMove the pane into a space of its own
Spaces
⌘T opens a terminal in a fresh space of its own. Spaces title themselves from the checked-out branch, else the working directory, and ⌘⇧N renames the active one. Each space is either in default mode — a tree of manual splits, like any terminal — or agent mode, a central terminal with balanced side panes, built for one agent per pane.
- ⌘TNew terminal, in a new space
- ⌘1–9Jump to space N
- ⌘⇧[⌘⇧]Previous / next space
- ⌘⇧NRename the active space
- ⌘BHide the sidebar — spaces become a strip across the top
Motion mode
⌘⇧G drops the modifier from every direction key for as long as you are in it, with a badge at the foot of the window saying so. hjkl focus panes, HJKL walk spaces, ud page the scrollback, gG jump to its ends, [] walk between shell prompts and o selects one command’s whole output. Any chord ends the mode and still runs, so ⌘K opens the palette from inside it.
Those prompt-aware motions come from the shell integration the installer sets up for you. With it, each command is a unit rather than a stretch of scrollback — and a pane running something that has not titled itself wears the command as its title, in the sidebar and the space strip, until it finishes.
Closing is not losing
⌘W closes the focused pane immediately, jobs and agents included — and ⌘Z puts it back, in the space it was in, at the directory it was in. Undo is a stack two dozen deep and it survives daemon restarts. ⌘⇧Z reopens the last closed space, with its pinned title and pull request.
What comes back is your place and bounded saved output, with exact agent conversation references where they exist. A killed build stays killed; the last command a pane ran is a label, and nothing ever re-runs it. Typing in the palette finds a closed pane by its directory, its agent, or that command.
Pane history goes further back: ⌘K → Open pane history opens a pane over the whole durable record. Search it by title, directory, agent session, note or pull request — and reopening a pane does not erase its row.
The window is detachable
Closing the window does not end anything. Your session keeps running with no window attached — every pane, every shell, every agent — and opening Raven again puts you back on it, mid-turn if that is where you were.
Your layout is saved as you go, so even a full quit restores spaces, splits, working directories, scrollback and running agent sessions. If Raven ever cannot read that layout, it opens one fresh space and writes nothing — saying so in a band across the top — so what is on disk survives until you change something yourself. And if a restore comes back short of the panes it saved, the palette can put the previous one back.