A × on the transcript's "queued…" bubble withdraws the `task_inputs` row with a new `DELETE`, refused once the message has been handed over, and puts its text and images back in the composer. Claude Code, Zed and Devin all let a queued follow-up be taken back.
Clicking a diff line opens a comment box under it; pending comments live in `drafts.ts` beside the composer draft, and "Send N comments" posts them as one ordinary message, each as `path:line`, the quoted line and the comment. No new API. Conductor, Claude Code desktop, the Codex app, Warp, Factory and Superset all send batched line comments to the agent this way.
- Screenshots from implementers
Give implementer sessions the reviewer's `playwrightMCP` entry, so a turn that changes something visible can embed screenshots it took in its summary, as Cursor's artifacts, Devin's test recordings and Claude Code's `autoVerify` do.
- Continue on another model or vendor with Compact
Compact takes an optional `model`; the handoff is written by the old session as now, and the continuation session starts on the chosen model on either vendor, reusing `handoffPrompt` and `handoffPreamble`. Superset's "Continue with another agent" and Factory's `/handoff` do the same. It can't rescue a vendor that is rate-limited, since the old session writes the handoff.
A `schedules` table (project, cron, prompt or workflow) and a timer that creates the task the way the lead's `create_task` does, managed with lead tools and no UI, like workflows. Example: every Monday, run `go vet ./...` and `gofmt -l` and check `docs/operations.md` against the code. Claude Code Routines, Codex Automations, Copilot cloud automations, Devin, Factory and Conductor all schedule agents.
A more collaborative version of forks and workflow handoff: agents in related tasks (a workflow run's stages, a task and its forks or subtasks) talk to each other while they work, instead of one stage passing a single output to the next. Claude Code agent teams (shared task list, per-agent mailboxes) and Claude Code desktop's cross-session messaging are the nearest designs.
- Close stale notifications once the item is dealt with
`notifications.ts` keeps each `Notification` by tag and closes it when `inbox.updated` leaves the item no longer open, or `summary.read` covers its `turn-<seq>`, so a question answered in another view, the macOS client or by the lead leaves Notification Center. Factory clears notifications when the session is focused.
Side by side with the web client on the same server, window size and appearance, using disposable tasks: every tab, switcher, Inbox choice types, merge/discard dialogs, light/dark, narrow windows. Document build, install and storage in `docs/operations.md`.
A native client for the phone over the same API, sharing the macOS client's SwiftUI code where it can. Every surveyed tool has one (Claude, Codex, Cursor and Conductor apps, GitHub Mobile, Superset for iPhone); it needs its own layout, since two half-width panes don't fit a phone.
- Drop the web app
Once the native clients cover everything, remove `web/` and the server's static files, and the AGENTS.md rules that only concern it.