You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This commit was created on GitHub.com and signed with GitHub’s verified signature.
Added
A session another session launched (session.launched_by, sessionpipe 0.10.0) says so in its
header with a link to the launcher, and the launcher's header links what it launched. Neither is
read as a subagent: no nesting, no muted toasts, no "N subagents" count.
A paired machine you rely on that went offline gets one quiet line at the top of the
board: "build-box is offline, last heard 14:02. 2 messages wait until it's back.", with
Machines beside it. Only a paired machine with a message waiting or a session that needs
you, works or went stale counts; one that only sends events has no heartbeat and is never
called offline. × hides the line on this device until something changes: it clears
itself when the machine is back, and a new drop brings it back.
Since you looked. An idle or done session with news you haven't seen (a turn ended
or the session ended since you last had it open) draws its glyph filled in, in ink, and
the folded Done header says "3 unread". Opening it for a second, as a page or the
panel's tab, marks it read on every device. A turn you typed at the terminal of a
session you attend is not news; working, needs-you and unattended rows are never
unread, and nothing from before the first run is.
Mark as read / Mark as unread in an idle or done session's menu and the phone's
long-press sheet, u on the board's cursor, and Mark all as read in the board's
view menu. The marks live in <stateDir>/marks.json (GET / PATCH /api/ui/marks, a marks frame on every change); a forgotten session loses its marks.
Notify me, per session. Every session's menu (and the phone's long-press sheet) has Notify me: When it needs me, as before; When it needs me or finishes, which
also sends "Deploy billing finished" with its last answer each time it has news and is
idle or done (a click opens it); or Never, which sends no notification, banner or
sound for it while it still waits in Needs you and the Inbox. A row set to Never shows a
small bell with a slash. A parent session can quiet its subagent sessions, never make
them louder. The choice is kept in marks.json (notify), so it holds on every device;
the browser's permission, the global Notify me and sounds stay per device.
A New line where you left off. A session with news since you looked opens with a
quiet "New" hairline above the first answer you haven't read, in Simple and Advanced
and on a phone. When there's more than a screen of it, the session opens with the line
a third of the way down instead of at the bottom. Your own turns at the terminal never
count, the line doesn't move while the page is open, and it's gone when you come back.
A session you haven't opened yet opens at the bottom as before.
Hidden sessions can be found again. The board keeps what this device hid in a Hidden group after Done, folded like Done and under the same filters; its rows are
ordinary rows, and Unhide (the row's menu, e, a phone's trailing swipe) puts one
back in its state's group.
Hide until it needs you, below Hide in a row's menu (or ⇧E), for a session that
loops ("every 30 minutes, check the nightly build"): new turns leave it hidden, and it
shows only while it needs you. e hides or unhides the row under the cursor.
How much each account has left. A Usage page, a line per account in the sidebar, and
each agent in New session say how much of its 5-hour and weekly windows is left and when
they reset, from sessionpipe's limits.observed. Claude Code's week is "This week, all
models"; a per-model week it adds later shows as its own row ("This week, Fable only").
A window past its reset says so instead of its last number, and a report older than 15
minutes says how old. On a machine whose agent has two accounts there is no number, since
a start can't choose one. Claude Code's numbers need its status line, on Pro and Max: sessionpipe install --status-line. Harnesses with no source say so in one line, never
0%. g u opens the page; the sidebar lines can be hidden in Settings › General.
Several Claude accounts on one machine. A machine whose sessionpipe pools accounts
(sessionpipe pool, 0.11) says so in its hello, and the GUI reads the pool: the accounts
in the machine's order, which one is in use, which is used up and when it is back, which
needs signing in again, and each one's freshest numbers on the Usage page even while it is
idle. Turning the pool on or off, reordering, enabling, disabling, removing and refreshing
an account, and signing a new one in, are signed pool commands through the same channel
as everything else, verified here before they are carried; a machine whose hello has no
pool is told so before anything is queued. A session the pool moved to another account
says which one serves it and since when, and its chat shows the switch. Demo mode has a
machine with the pool on, one with an account in error, and one with the pool off.
Agents that use agents. sessionpipe's next release lets a session ask another agent
on its machine (sessionpipe ask codex "…") and lets a receiver hand a task to an agent
with the answer brought back into a session (reply_to on a signed prompt or start). The GUI reads the two events, delegation.started and delegation.ended, into
the session (delegations, delegatedBy, counts.delegationsRunning), keeps a session
working while an ask is open, and shows a capability only where a machine's hello says ask or handoff, so a 0.10 daemon keeps working as before.
Ask another agent… on a session's page (the control strip, its menus, a reply's
right-click "about this…", ⌘K, ⇧A): one sheet, prefilled with the last reply, that asks
an existing session on the same machine or a new one of a harness the hello lists, with
"Bring the answer back into this session" where the machine takes handoffs. The asking
session shows the row at once.
Lineage. "Asked Codex · new session · running 1 m 20 s" where the ask happened in the
chat and the timeline, the answer folded under it or drawn as that agent's turn when it
was brought back; the asked session's bar says "for " with a link; the board nests
it under its parent; Machines says "Agents here can ask each other"; the Feed and the
Activity page word the events and the handoff.
Workflows (/workflows, g w): chain and fan out steps across your agents and
machines (implement → review → fix; two agents in parallel, a third compares). Three
templates, an editor of native rows that saves itself, Run with the input it names, and
a run view with every step's state, elapsed, reply and session. The server owns a run
(workflows.json, workflow-runs.json, moved by control's acks); the browser is only
the signer, from any device that can sign, with claims as the guard across tabs. A
browser signs the runs it started on its own; one started elsewhere asks once ("Sign
here"), so nothing on the loopback or another site can set your passkey to work. The
signed command goes back through the run itself, queued only once the server has seen
the step is still that tab's: a step cancelled or re-offered mid-signature queues
nothing, and one the receiver refuses fails in place instead of being offered again
every minute. A step is never signed without the level or model it names when the
machine's hello does not offer it; the run says so. Every write to /api/ui/workflows
is JSON only, an empty POST too, and refuses a cross-site request.
Demo mode plays an ask and a handoff on lab-mac, whose hello now says ask and handoff; the mock stream has the same.
Changed
A chained shell command reads one step per line on a session's permission strip:
"Allow Bash to run:", then npm run build, && npm test -- bm25, && npm run deploy …
each on its own line, so nothing wraps mid-token before you answer. Quotes, $( … ) and
groups stay whole, a pipeline is one step, and a short command stays on the question's
line. The command is the call's own, whole, when the session sent it; otherwise the
first 200 characters the machine sends, ending in "…". Four steps show, then "Show 2
more lines", and Deny and Allow keep to the question's line. On a phone a longer one
scrolls inside, cut through a line, so you see there is more.
A plan review reads as a plan. When Claude Code asks to leave plan mode, the strip
asks "Ready to start on this plan?" and shows the plan under it (at tier 3), eight lines
until Show the whole plan, with Approve plan and Keep planning where Allow and
Deny were; a and d are unchanged. Keep planning carries what you type in the composer
("What should change?") to the agent as the answer's note, and Enter there sends it.
While the composer holds a note, Approve plan waits, so the note is never dropped: send
it with Keep planning, or clear it. The row menus, the command palette and the Inbox
name the same two answers, and the tool reads Plan.
Fixed
The row menu says "Allow Shell" (and Deny), as the strip and the Inbox do, not
"Allow run_shell_command".