The browser surface

The server's Chromium as a full-window takeover: the page fills the window under a slim client bar, and the bar carries the hand-off's actions and the profile's tab picker. No window, no browser tab strip and no browser chrome - the page is the surface. A hand-off's Open and the strip's browser row both open it; the sessions drive the same tabs while it is closed.

engine: the server's CEF host one host per org profile the host owns the tabs the phone and the web are viewers too

The takeover

live - the page under the bar, the whole window
back to chat browser hand-off · tab 2 Cmd Opt Down to focus the bar 2 · Senior Rust engineer · Busytools/forge/lead ▾ take control Done Not now
The CV form is showing a CAPTCHA. Solve it, then pick Upload CV again.
hiring cafe

Senior Rust engineer

Remote, India. Apply with your CV and a short note on the systems you have shipped.

Apply nowform
Upload CVpdf, docx
Save for latersaved
the picker moves this surface to another tab of the same profile; a tab is created by the session whose calls drive it and closes with that session, never from here. take control makes this surface the one viewer whose clicks, keys, wheel and history arrows reach the page; a watcher's arrows are drawn disabled, and the server refuses a move from anyone but the holder. The server pushes who holds the role, so another surface says take control rather than guessing. The gestures land as trusted input, and the person's own cursor is drawn by the page, not by the client. The two arrows are the page's own history: back was enabled by the link that reached this page, forward has nowhere to go yet, and Cmd+[ and Cmd+] are their keys. The ask's own words sit under the bar because the hand-off's card is drawn in the chat behind this page; a page moved to another tab keeps the ask's name in the bar and offers none of its answers, and a page raised for another seat is lowered when that seat is left, so it never covers the seat whose ask is waiting.

The phone

the same page on the phone - the same bar, a canvas instead of a native layer
back to chat browser hand-off · tab 2 2 ▾ take control Done Not now
The CV form is showing a CAPTCHA. Solve it, then pick Upload CV again.
example domain

This domain is for use in documentation examples

The server encoded this frame; the phone painted it on a canvas at the phone's own size.

the phone's shell has no native overlay, so each relayed frame is a WebP still the page draws on a canvas. The picture keeps its own shape - a wide page in a portrait phone is letterboxed, and taking control lays it out at the phone's shape. The bar over it is the same bar, and a hand-off's row is wider than the phone in portrait: its actions wrap to a line of their own, so Done, send feedback once the note has words and Not now stay on screen and under the finger at the narrowest width. take control makes the phone the one viewer whose taps, keys and swipes reach the page, the bar clears the status band with its own safe-area padding, and the newest frame is kept for a canvas that mounts after it arrived.

The web

the same page in a browser tab - the page owns the overlay, the canvas is the picture
https://forge.hub/session/Busytools/job-hunt/lead
back to chat browser hand-off · tab 2 2 ▾ take control Done Not now
The CV form is showing a CAPTCHA. Solve it, then pick Upload CV again.
hiring cafe

Senior Rust engineer

The server encoded this frame; the page drew it on a canvas sized to the tab.

a plain browser tab has no shell, so the page draws the whole takeover itself: a fixed overlay over the viewport, the bar at its top and a canvas under it. Attaching, listing the tabs, lowering, taking control, moving through history and laying the page out are the socket's own messages rather than the shell's invokes, and there is no rect to report - the overlay's own box is the surface. Back to chat lowers it and leaves the hand-off parked, and the chat is still under it, so the tab never leaves the app.

The bar's other two doors

the note line - the words ride whichever answer is picked
back to chat browser hand-off · tab 2 2 · Senior Rust engineer · Busytools/forge/lead ▾ Done send feedback Not now
The CV form is showing a CAPTCHA. Solve it, then pick Upload CV again.
the note rides whichever answer is picked: Done approves, send feedback asks for a revision and Not now defers the ask. For feedback the words go as a prompt and the session addresses them before handing the page off again. The mic is the composer's own, so a take here is the same capture the dock draws. Back to chat closes the takeover and leaves the hand-off parked, the session still waiting.
a take in the note line - the field gives its line up to the card
back to chat browser hand-off · tab 2 2 · Senior Rust engineer · Busytools/forge/lead ▾
a take replaces the field with the dock's own card, and the card takes the line: it grows to everything the mic leaves and its graph takes that room, so what the take is doing is the row's meter rather than a pill in an otherwise empty row. The mic is the press that ends the take, and the card's ✕ abandons it without sending.
a take still opening - the press landed, and nothing else would say so
back to chat browser hand-off · tab 2 2 · Senior Rust engineer · Busytools/forge/lead ▾
opening the microphone…
the card draws from this page's own take, which exists only once the capture has opened; until then the row keeps its field and mic, and nothing says the take is running, so a slow open reads as a dead press. The line is drawn only once the open outlasts a quick one - a fast press is not a state to flash - and it goes when the card arrives.
an answer that did not leave - the words stay, and the bar says why
back to chat browser hand-off · tab 2 2 · Senior Rust engineer · Busytools/forge/lead ▾ Done send feedback Not now
Not sent - the connection is down.
the socket was gone before the frame crossed, so the bar names the loss in its own line and the field keeps the words: the hand-off is not answered, and an answer can be pressed again when the connection is back. An answer that does leave clears no line here and ends the park.

Before Open, and the strip

the hand-off's card
▸ browser hand-off · tab 2
The Apply form needs your CV uploaded, and the upload only takes your own files.
Open browser shows the page the session prepared, exactly as it stands. The session waits, with no timeout, for your answer.
Open browser Done Not now
once the takeover is up the card leaves the actions to the bar.
browser3 tabs Busytools/work · connected · closing in 27m
Busytools/work · connected closing in 27m
tab 1 Senior Rust engineer Busytools/job-hunt/lead · in use show
tab 2 portal Busytools/job-hunt/w1 · idle hide
tab 3 sign in Busytools/job-hunt/w2 · held show
tab 4 checkout Busytools/job-hunt/lead · idle confirm waiting show
the strip's row opens the same takeover outside a hand-off; its panel lists the profile's tabs with each one's owner and state, and show raises that tab. Hide returns to the chat and the sessions keep driving the tabs. The row only exists while the profile has a tab: with none, the segment draws nothing at all rather than an empty "0 tabs" row.

The states before a frame

opening - drawn in the page area
back to chat browser hand-off · tab 2
opening the browser…
failed - the shell's sentence, the hand-off still parked
back to chat browser hand-off · tab 2 2 · Senior Rust engineer · Busytools/forge/lead ▾ try again Done Not now
the browser did not start in time - try again
a failure draws the shell's own sentence - the port, the profile, the framework, or a page area that could not be placed - and the hand-off stays parked until Done, Not now or send feedback once the note has words; try again asks the shell for the surface once more. The tab picker is drawn only when the last list it read or was pushed still has tabs.