Opening it, and the split itself

The three concepts cover what the browser pane is. This covers how you get to it and how the split behaves — the parts of Adam's spec I originally waved past as "already designed". They are not. See the correction below.

Correction to my own index page. I wrote that the divider, resize, collapse, swap, full-screen, URL-encoded layout and mobile fallback were "all already specified" by split-view.pages.dev. I checked. That mock has a drag splitter and two panes and nothing else — no collapse, no swap, no full-screen, no persistence, no URL state, no mobile fallback. Only the divider was real. The recommendation still holds (extend that system rather than build a second one) but the remaining work is larger than I implied, so this page designs the missing pieces.

1 · The icon

One object in the agent's shell header, five states. The shape never changes — only its fill and badge — so your eye learns a single target and then reads its state, instead of hunting for a different control each time.

No sessionnothing running
Cole · Conversite publish onboarding site
Start browser
Startingprovisioning
Cole · Conversite publish onboarding site
Starting…
Activeagent driving
Cole · Conversite publish onboarding site
Live
Waiting for youapproval or control
Cole · Conversite publish onboarding site
Needs you1
Completedreplay available
Cole · Conversite publish onboarding site
Replay · 04:12

Clicking it opens that exact agent's browser in the context pane. The binding is explicit and one-to-one: Floor agent → active task → browser session → live stream. An agent with no active task has no session to open, and the icon stays in its No session state rather than offering a browser that would belong to nothing.

2 · Open beside

You should not have to walk back to War Room to look at a browser. Open beside is a global command — the same palette that already exists in the Cockpit — and it lists live sessions first because that is what you are almost always reaching for.

open beside|
LIVE BROWSER SESSIONS
Cole · Conversite
Needs you01:12
Gab · Greenpen
2FA00:24
Nico · Keystack
Drivinglive
OTHER PANES
Task drawer
⌘2
Test Evidence
⌘3
Docs
⌘4

3 · Split behaviour

Each of these changes the URL, which is what makes a layout shareable and survivable across a refresh. Paste the URL to a colleague and they land on the same arrangement — watching, not driving, because control is never transferred by a link.

Default50/50 on open. ?pane=browser:cole
ResizeDrag the divider. Snaps at thirds. &split=35
CollapseEither side folds to a rail; the pane keeps running. &collapse=left
SwapBrowser to the left for right-handed reading. &swap=1
Full screenBrowser only. The shell is one keystroke back. &full=browser
PersistRestored on refresh from the URL, not from local state. shareable · survives reload
One rule that is not obvious. The URL restores the layout, never the control. Reopening a shared link puts you in watch-only, even if the person who sent it had taken control. Otherwise a pasted link silently hands someone the keyboard on a live production page.

4 · Mobile

Two panes on a phone is two unusable panes. Adam's call to use tabs is right. The part worth designing is the tab bar itself: it has to carry the state you would otherwise lose by not seeing the browser, so the browser tab shows its own status even while you are reading the shell.

ShellBrowser 1
Cole · Conversite

Description written. The publish button is gated — I've raised it for your approval rather than clicking it.
Shell tab · browser flags 1 approval
ShellBrowser
Conversite
Publish
Site details
How this site introduces itself.
A conversational front door for the Melbourne pilot cohort…
Publish to live domain
Browser tab · fit-to-width

What actually exists today

Corrected against the deployed mock rather than from memory:

BehaviourIn split-view.pages.devStatus
Two panes side by sideYesShipped
Drag dividerYesShipped
Collapse either sideNoDesigned here
Swap sidesNoDesigned here
Full screenNoDesigned here
URL-encoded layoutNoDesigned here
Persist across refreshNoDesigned here — via the URL
Mobile fallbackNoDesigned here
Shared rail across panesNo — duplicates the whole app twice Open engineering call, flagged in that mock's own advisory

Sana · design · 30 Jul 2026 · ← back to the concepts