A system page names itself once. Tasks, Agents, Inbox and Assistant no longer show the page name as a trail line above the same h1. A drill-in such as #/orgs/<id>/agents keeps its trail.
A plain click on a thread link opens that thread as a pane on #/assistant. With three open, the new thread replaces the first pane that holds no unsent message. When all three hold one, nothing is replaced and the page says why.
Each pane header has a "Full view" link to the thread's own page and a "Messages" link to that pane's organization. The bar no longer names the organization opened last.
Links that need the full conversation keep it: a requirement's "Open conversation", and the project page's "Review decision", "Requests in progress" and "Needs your input".
"Resume assistant" in a pane is a small secondary control.
Inbox class chips use words ("Within role"), from the map the Class filter already used.
A stopped organization's page shows one restart control.
The unused Side by side parameters are removed from projects.js and workspace.js.
How
brand.js hides the trail when it has no link and its text equals the visible h1. Two per-page shell.css rules that did the same are gone.
assistant.js adds a capture-phase click handler for thread links. Modified clicks, target, download, typed or pasted addresses and links marked data-full-view are left to the browser.
No new server route, no new write route.
Tests
New or changed browser tests in assistant-threads, projects-review, single-pane, system-agents, system-inbox, system-tasks and workspace-pages, each red before its fix.
Lane gate on a9912983e: 188 webui test files, 1483 pass, 0 fail, 4 skipped (org-quick-live, needs a live scratch instance).
Lead check on a9912983e: 141 pass, 0 fail over the changed test files plus org-switch, unified-workspace and browser.
Review
Three rounds, each a fresh claude-opus-5-5 reviewer. Rounds 1 and 2 each asked for two changes, all fixed. Round 3 approved and reproduced the red-first runs.
Left for later
"Resume assistant" still shows whenever thread writes are allowed, not only when the assistant is paused or stopped.
Leaving the Assistant page drops unsent pane drafts.
A pane with a send in flight counts as free for replacement.
Per-organization decision and message lists still show the raw class.
With three panes at about 761 to 850 px the pane header wraps to two rows.
## What changes
- A system page names itself once. Tasks, Agents, Inbox and Assistant no longer show the page name as a trail line above the same h1. A drill-in such as `#/orgs/<id>/agents` keeps its trail.
- A plain click on a thread link opens that thread as a pane on `#/assistant`. With three open, the new thread replaces the first pane that holds no unsent message. When all three hold one, nothing is replaced and the page says why.
- Each pane header has a "Full view" link to the thread's own page and a "Messages" link to that pane's organization. The bar no longer names the organization opened last.
- Links that need the full conversation keep it: a requirement's "Open conversation", and the project page's "Review decision", "Requests in progress" and "Needs your input".
- "Resume assistant" in a pane is a small secondary control.
- Inbox class chips use words ("Within role"), from the map the Class filter already used.
- A stopped organization's page shows one restart control.
- The unused Side by side parameters are removed from `projects.js` and `workspace.js`.
## How
- `brand.js` hides the trail when it has no link and its text equals the visible h1. Two per-page `shell.css` rules that did the same are gone.
- `assistant.js` adds a capture-phase click handler for thread links. Modified clicks, `target`, `download`, typed or pasted addresses and links marked `data-full-view` are left to the browser.
- No new server route, no new write route.
## Tests
- New or changed browser tests in assistant-threads, projects-review, single-pane, system-agents, system-inbox, system-tasks and workspace-pages, each red before its fix.
- Lane gate on a9912983e: 188 webui test files, 1483 pass, 0 fail, 4 skipped (`org-quick-live`, needs a live scratch instance).
- Lead check on a9912983e: 141 pass, 0 fail over the changed test files plus org-switch, unified-workspace and browser.
## Review
Three rounds, each a fresh claude-opus-5-5 reviewer. Rounds 1 and 2 each asked for two changes, all fixed. Round 3 approved and reproduced the red-first runs.
## Left for later
- "Resume assistant" still shows whenever thread writes are allowed, not only when the assistant is paused or stopped.
- Leaving the Assistant page drops unsent pane drafts.
- A pane with a send in flight counts as free for replacement.
- Per-organization decision and message lists still show the raw class.
- With three panes at about 761 to 850 px the pane header wraps to two rows.
- A system page with nothing above it in the trail hides the trail that repeats its h1; drill-in trails stay.
- A project's thread link and each open-in-chat link add that thread as a pane on #/assistant. With three
open, the first pane without an unsent message is replaced; when all three hold one, nothing is
replaced and the page says why. Per-org chat addresses still work typed or pasted.
- "Messages in <org>" moves from the bar into each pane header as a link.
- The pane composer's Resume assistant is a small secondary control; behaviour unchanged.
- Inbox class chips read the one map of decision classes to words.
- Removes the unused pane, idPrefix and views params from projects.js and workspace.js; fixes the stale
comment on the held-message status line.
- While an organization's bus is down, the header draws no bus control; the down banner's restart is the one.
- assistant.css: the pane title shrinks before the header tools wrap, so the close button stays on the title's line at 1440.
- assistant.js: paintNote draws the line under the lead; a refusal marks it data-refused and the line shows in the warning colour until the next change clears it.
- assistant-threads browser test: the refusal line carries data-refused, and closing a pane clears it.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
What changes
#/orgs/<id>/agentskeeps its trail.#/assistant. With three open, the new thread replaces the first pane that holds no unsent message. When all three hold one, nothing is replaced and the page says why.projects.jsandworkspace.js.How
brand.jshides the trail when it has no link and its text equals the visible h1. Two per-pageshell.cssrules that did the same are gone.assistant.jsadds a capture-phase click handler for thread links. Modified clicks,target,download, typed or pasted addresses and links markeddata-full-vieware left to the browser.Tests
a9912983e: 188 webui test files, 1483 pass, 0 fail, 4 skipped (org-quick-live, needs a live scratch instance).a9912983e: 141 pass, 0 fail over the changed test files plus org-switch, unified-workspace and browser.Review
Three rounds, each a fresh claude-opus-5-5 reviewer. Rounds 1 and 2 each asked for two changes, all fixed. Round 3 approved and reproduced the red-first runs.
Left for later