Tabs
In-page tabs
Several destinations open at once inside one window, all of them running. The chat streams on one tab while the workbench works on another, and switching between them is instant because nothing is torn down.
The strip sits under the top bar.
A tab is a location
Activating one navigates the router; navigating records the new path back onto the active tab. So a tab behaves like a browser tab that remembers where it was: deep links, the top bar's active highlight and the back button all keep working.
What the route does not decide is what is mounted.
Drawing the diagram…
Switching tabs is a display change. A stream's target nodes, a scroll position, a terminal's scrollback and Monaco's models all survive it.
A tab's view is mounted on first activation, not when the tab is restored, so a tab left open from the last session costs nothing until you open it.
Each tab reads its own route
A background /refinery/:id tab renders its book, not the foreground one's. That matters more than it sounds: without it, every tab would read the window's current route and show the same page.
Two tabs side by side
On a wide monitor, Ctrl+S splits the tab you are on: a second half opens beside it, at the start of the same destination, so an AgentDeck half offers its session list. Navigate that half anywhere, Settings included. The split button beside + in the strip and Split Tab in the command bar do the same, and Split With puts a tab you already have open beside this one.
Each half is a tab of its own. The one with the accent line along its top is the one your keys and the top bar go to; click the other half, or press Ctrl+S again, to move there.
- Resize by dragging the seam between the halves. Focus the seam with Tab and use the arrow keys, with Shift for bigger steps. Double-click it, or press Enter on it, to even the halves.
- Close a half with its own cross in the strip, where a split shows as one wider tab holding both halves. The other half stays open, as an ordinary tab.
- Unsplit from the command bar or with
uin tab mode, which keeps both halves open as separate tabs.
Ctrl+S still saves wherever there is something to save, such as a settings page with unsaved changes or a file in BedoIDE. A split needs the tab strip to be switched on.
Keyboard and the command bar
Ctrl+T enters tab mode. There, h and l walk the tabs and the halves of a split, s splits, u unsplits, H and L move the seam and = evens it.
Chrome and Edge on Windows and Linux keep Ctrl+T for themselves, and so does the desktop app on Linux. Use Alt+T there, which does the same thing. A terminal also keeps Ctrl+T for its shell.
The command bar also opens, closes, switches, renames, splits and duplicates tabs, and Alt+Enter on any command bar result runs it in a new tab rather than in this one.
The same actions are available to the chat and the companion through the app control tools, splits included. Either can also type into the prompt box of a tab, so asking the chat how something is done in AgentDeck can end with a session open beside the chat and the line already written in its box, waiting for you to send it. It sends the line itself, a slash command like /fork included, only when you ask it to. With teaching mode or confirm-before-acting on, the companion asks before each of these steps.
What this costs
Every open tab is a mounted view with its own subscriptions. That is the point - but it means a composable that polls per caller multiplies against every open tab at once, which is why fetching in mechabedo is shared rather than per-caller.
For you, the practical rule is the ordinary one: keep the tabs you are using.
Next
- The window - the bar the strip sits under
- AgentDeck - the destination most worth a second tab