Skip to content

Agent chat: remove the PR chip row from transcript messages - #29614

Merged
teamleaderleo merged 4 commits into
feat-cmux-nextfrom
lane/remove-transcript-pr-chips
Oct 31, 2026
Merged

teamleaderleo merged 4 commits into
feat-cmux-nextfrom
lane/remove-transcript-pr-chips

Conversation

@teamleaderleo

@teamleaderleo teamleaderleo commented Oct 31, 2026 •

Copy link
Copy Markdown
Collaborator

Removes the PR chip row from agent chat transcript messages: the #N repo #M repo +N links at the right of a message's line. Its stand-in row after the latest message goes too. This is a removal only (+20 / −2910). Nothing replaces it.

Leo's words:

  • 2026-10-31 04:41Z, picking option (a) "Remove that chip row from the end of messages": "a) remove the chips they're so bad"
  • 2026-10-31 ~19:50Z: "i literally said to just remove this"
  • "like 12 hours ago"
  • "JUST ENTIRELY FING REMOVE THIS STUPID FING ELEMENT"
  • "WHY ALL THIS STUFF FOR A REMOVAL"

What is removed:

  • summary/PullRequestDock.tsx, its gallery, and the gallery-only legacy and comparison modes (PullRequestDockLegacy.tsx, PullRequestDockComparisons.ts).
  • pullRequestPlacement.ts (the stand-in row) and pullRequestRows.ts.
  • The dock's hosts: TurnFooter, ReplyActions, ReceivedActions, the RevealedMarkdown tail, and App.tsx's row and transcript wiring.
  • The dock's CSS, its five unused prDock.* strings, and its own tests.
  • Dock assertions in the shared browser tests.

What stays: Session Info's Changes (it still uses prDock.dismiss), the header PR chip, link hover cards, and PR links inside message text.

Supersedes #29279, which reworks the same chips.

Review: a subagent review at the head returned SHIP. Its three follow-ups only reword stale test comments.

🤖 Generated with Claude Code

Agent session: agent session


View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need.


Summary by cubic

Removes the PR chip row from agent chat transcript messages: the #N repo links on each message's action line and the stand-in row after the latest message. The chip planner merged in from the rework, with its tests and CSS, goes too. Nothing replaces it.

  • Adds a test ensuring the footer's Copy, Fork, Read aloud, and More buttons never shift and no PR link joins the row.
  • Drops the dock's CSS, five unused prDock.* strings, and the dock's shared browser tests, and shrinks the design-token baseline.
  • Session Info's Changes, the header PR chip, link hover cards, and PR links inside message text still work.

Written for commit dff6606. Summary will update on new commits.

View guided diff Turn on auto-fix

Leo (2026-10-31): "a) remove the chips they're so bad", then "i literally
said to just remove this" and "JUST ENTIRELY FUCKING REMOVE THIS STUPID
FUCKING ELEMENT". Removes PullRequestDock (the '#N repo ... +N' links on
a message's action line and its stand-in row after the latest message),
its placement, legacy comparison modes, gallery, styles, strings and tests.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-d750cf10922c785efa64
@github-actions

github-actions Bot commented Oct 31, 2026 •

Copy link
Copy Markdown
Contributor

cmux status (one comment, edited in place; each line is updated by the job that owns it)

Review dff6606: HQ feed card · gallery before/after runs · checks

App of this head (app.zip, kept 1 day)

gh workflow run reload-build.yml -R manaflow-ai/cmux --ref feat-cmux-next -f tag=pr29614 -f ref=lane/remove-transcript-pr-chips -f platform=macos -f backend_mode=local

Gallery before/after for dff6606: 16 states rendered, 6 images differ, 2664 more touched states not rendered. Images are in the run's artifact, not on this public PR; the independent review of this head reads them on its own, so the PR needs no hand-made screenshots of these states.

gh run download 41236343360 -R manaflow-ai/cmux -n gallery-advisory-29614-dff66069fa27ee957d8d91b2ffe95f1507b49211 (then read gallery-review.json)

States
State Theme Status Diff Picked by
agent-pane.access-offer/turn-no-credits Apple System Colors Light unchanged 0% own TurnRows.tsx
agent-pane.access-offer/turn-no-credits Apple System Colors unchanged 0% own TurnRows.tsx
agent-pane.access-offer/turn-low-credits Apple System Colors Light unchanged 0% own TurnRows.tsx
agent-pane.access-offer/turn-low-credits Apple System Colors unchanged 0% own TurnRows.tsx
agent-pane.access-offer/turn-no-offer Apple System Colors Light unchanged 0% own TurnRows.tsx
agent-pane.access-offer/turn-no-offer Apple System Colors unchanged 0% own TurnRows.tsx
agent-pane.background-activity/duration-columns Apple System Colors Light unchanged 0% own summary.css
agent-pane.background-activity/duration-columns Apple System Colors unchanged 0% own summary.css
agent-pane.background-activity/pinned-live-tail-light Apple System Colors Light unchanged 0% own summary.css
agent-pane.background-activity/pinned-live-tail-light Apple System Colors unchanged 0% own summary.css
agent-pane.background-activity/pinned-live-tail-dark Apple System Colors Light unchanged 0% own summary.css
agent-pane.background-activity/pinned-live-tail-dark Apple System Colors unchanged 0% own summary.css
agent-pane.background-activity/after-latest-message-light Apple System Colors Light unchanged 0% own summary.css
agent-pane.background-activity/after-latest-message-light Apple System Colors unchanged 0% own summary.css
agent-pane.background-activity/after-latest-message-dark Apple System Colors Light unchanged 0% own summary.css
agent-pane.background-activity/after-latest-message-dark Apple System Colors unchanged 0% own summary.css
agent-pane.background-activity/compact-pill-light Apple System Colors Light unchanged 0% own summary.css
agent-pane.background-activity/compact-pill-light Apple System Colors unchanged 0% own summary.css
agent-pane.background-activity/compact-pill-dark Apple System Colors Light unchanged 0% own summary.css
agent-pane.background-activity/compact-pill-dark Apple System Colors unchanged 0% own summary.css
agent-pane.background-activity/side-panel-light Apple System Colors Light unchanged 0% own summary.css
agent-pane.background-activity/side-panel-light Apple System Colors unchanged 0% own summary.css
agent-pane.bottom-stack/pr-queue Apple System Colors Light changed 0.0557% own bottomStack.gallery.ts
agent-pane.bottom-stack/pr-queue Apple System Colors changed 0.0463% own bottomStack.gallery.ts
agent-pane.bottom-stack/trust-permission-queue Apple System Colors Light unchanged 0% own bottomStack.gallery.ts
agent-pane.bottom-stack/trust-permission-queue Apple System Colors unchanged 0% own bottomStack.gallery.ts
agent-pane.bottom-stack/trust-individual-queue Apple System Colors Light unchanged 0% own bottomStack.gallery.ts
agent-pane.bottom-stack/trust-individual-queue Apple System Colors unchanged 0% own bottomStack.gallery.ts
agent-pane.bottom-stack/trust-then-permission Apple System Colors Light changed 0.0197% own bottomStack.gallery.ts
agent-pane.bottom-stack/trust-then-permission Apple System Colors changed 0% own bottomStack.gallery.ts
agent-pane.bottom-stack/trust-then-individual Apple System Colors Light changed 0.0272% own bottomStack.gallery.ts
agent-pane.bottom-stack/trust-then-individual Apple System Colors changed 0% own bottomStack.gallery.ts

Pick other states with a Gallery: entry.id, entry.id/variant line in the PR body.

Shipped in:

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Owned by an agent session · session

@github-actions github-actions Bot added the risk:normal Risk tier (docs/ci/risk-tiers.md) label Oct 31, 2026
Leo (2026-10-31): "DON'T FUCKING SHIFT THE FUCKING COPY/FORK/WHATEVER FUCKING
BUTTONS WITH THIS BULLSHIT".

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-d750cf10922c785efa64
@cursor

cursor Bot commented Oct 31, 2026

Copy link
Copy Markdown

Bugbot needs on-demand usage enabled

Bugbot uses usage-based billing for this team and requires on-demand usage to be enabled.

A team admin can enable on-demand usage in the Cursor dashboard.

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Review (subagent): SHIP at e782cf7

Follow-ups (non-blocking): stale wording in test comments (agent-pane-queue-steer.test.ts header 'pull request bar', subagent-pane-own-state.test.ts 'bar'); bottomStack.gallery.ts play name checkPrQueue.

…anner, its tests and CSS)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-d750cf10922c785efa64
@teamleaderleo
teamleaderleo merged commit 05431f4 into feat-cmux-next Oct 31, 2026
183 of 185 checks passed
@teamleaderleo
teamleaderleo deleted the lane/remove-transcript-pr-chips branch October 31, 2026 20:22
teamleaderleo added a commit that referenced this pull request Oct 31, 2026
MessageActions: base removed the PR dock (#29614); the reply action row keeps only its blank-gap target.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
teamleaderleo added a commit that referenced this pull request Oct 31, 2026
#29614's markup check pinned the opening tag exactly; the reply action row now carries its blank-gap target. The check still holds that the row starts with its buttons.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
teamleaderleo added a commit that referenced this pull request Nov 1, 2026
Conflicts:
- App.tsx: base removed the per-message PR chip row (#29614) and the
  agents pill (#29792). Keep both removals; keep this PR's N PRs stack
  (PullRequestStackProvider, PullRequestList, PullRequestCountInStack).
  useTranscriptPullRequests moves into summary/PullRequestStack.tsx
  (without the removed legacy modes), and its three strings
  (prDock.label, prDock.count, prDock.countOne) come back.
- bottomStack.css: keep the stack edge tokens; drop the agents-pill
  anchor, pr-dock and pr-comparison selectors base removed.
- summary.css: take base (the pr-dock and pr-comparison rules are gone).
- design-tokens-baseline.jsonl: base's, regenerated with
  --update-baseline (one entry shrinks: the recap's old padding).
- Tests and gallery: drop the legacy-bars variant, the agent-pane.pr-dock
  frames and the agents-pill part; the per-message pills now count 0.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-f71664ebfb6cf5206479
teamleaderleo added a commit that referenced this pull request Nov 1, 2026
…with the prose (#29124)

* Agent pane: red test, status rows share the prose's left edge and sit centred between replies

A gallery entry (agent-pane.transcript-row-alignment) with a reply, a subagent that finished, a
reply, a background command that ended, a reply, another agent's message and a reply, under a
folded turn's Worked for line and a footer with its time, tokens and actions; and a browser test
that measures every row's first ink against the prose's left edge, the iconed rows' shared text x,
and the room above and below each status row.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-92fa78a91e29868c5eaa

* Agent pane: red test, transcript rows share one icon column and one text inset

A gallery state (agent-pane.agent-message-row / icon-column) stacks a command
row, a message from a Codex session (its logo), this agent's send (the
envelope) and a message from a sender with no mark (the bot). The browser test
measures each top-level row's icon slot, glyph center, drawn glyph size and
first word's x, and fails while a received message's mark sits 8px right of
the tool rows' slot, its name 5.5px right of their words, and its logo draws
at 14px beside the envelope's 11.5px.

Leo: "the alignment i feel like we might as well"

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-63b9964940c20354b639

* Agent pane: messages between agents sit in the tool rows' icon column

Tool rows lay out as a grid: the 16px glyph slot at the row's left edge, the
8px gap, the words at 24px (grid.md 5.5). Messages did not:
- a received message's line and sender each added 4px of inline padding, so
  its mark sat 8px right of the slot and its name started at 28px; the line
  drops the padding and the mark takes the slot (its hover chips keep their
  place before the chevron);
- a sent message's line is flex, where the tool icon's -1.5px end margin (a
  no-op in the grid) pulled its words to 22.5px; it is 0 there;
- the waiting group's chevron moves into the same slot.
A harness logo draws at 12px, the stroke glyphs' drawn size, instead of 14px.

Leo: "the alignment i feel like we might as well"

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-63b9964940c20354b639

* Agent pane: status rows sit centred between replies; action rows start on the prose's left edge

Leo, 2026-10-30: "see how claude code has those centered tool calls / id like more alignment too",
and "1 CODEX 2 US 3 US 4 CODEX 5 CLAUDDE WE NEED TO LINE OUR SHIT UP LIKE THEIRS".

- A status row between two replies (a tool run, a subagent's or a background command's end,
  another agent's message, a compaction, a failover, a session start: model.ts isStatusRow) has as
  much room under it as over it: the reply's action row (4 + 24) and the step's 2px margin, 30px
  each side (--cv-status-gap). It was 38 over and 4 to 10 under. Inside an opened Worked for, whose
  replies draw no action row, 12 each side. model.ts statusEdge marks the rows from the next drawn
  row alone (acpmux-row--before-status / --before-reply), and the estimates follow.
- The reply's and the footer's action row starts its first glyph on the prose's left edge, its 24px
  button overhanging by the glyph's 4px inset; the footer's "Worked for 5s" label and the activity
  line under a plan drop their 2px inset. Rows that hold an action row keep layout containment
  alone, so the overhanging hover pill is not cut.
- Gallery agent-pane.transcript-row-alignment gains roomy and off variants.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-92fa78a91e29868c5eaa

* Agent pane: tool rows' words start at the shared +24 again

#28018 made .cv-tool a flex row; the icon's -1.5px right margin, which the grid's fixed 16px track used to absorb, now pulled the label to 22.5px, off the agent-message rows' 24px. Drop it so every iconed row's words share one x (design/grid.md 5.5).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Agent pane: name the plain status gap's reply share as a token

check:design-tokens refuses a raw calc in padding-bottom; the derived value lives in --cv-status-gap-plain-over beside its parts.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Agent pane: a drag can start from a reply's blank action row

Over a status row a reply's action row is its whole bottom room, so the row-gap target (its bottom padding) is 0px there and a press in that gap started nothing (gallery health: agent-pane.gutter-select#agent-to-tool-gap). The action row's own blank box, never its buttons, is now a transcript gap (data-transcript-gap=blank).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Agent pane: the icon-column check measures the drawn mark, not its wrapper

Base's AgentIdentity (#27575) wraps the sender mark in a span whose box is its line height; the check took that span as the glyph and read 17-19px. Prefer the svg or img the row draws.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Agent pane: reply-actions test counts the status gap a following message takes

A reply that gains an agent message after it gains its action row (28px) and gives its 8px message gap to the status row's centred room, so it grows by 20, not 28.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Agent pane: footer-actions test allows the action row's own attributes

#29614's markup check pinned the opening tag exactly; the reply action row now carries its blank-gap target. The check still holds that the row starts with its buttons.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Agent pane: text under a tool row starts at the row's words again

--cv-tool-text-inset still subtracted the 1.5px icon overlap this PR removed, so a hook's block, a failure's cause and the other text under a tool row started 1.5px left of the row's words (tool-row-column-browser.test.ts).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Agent pane: a status row takes the centred room only between two replies

Review BLOCK at 82758fc: a tool row under a prompt and over a reply (a turn that starts with a tool) took the 30px room under it while keeping its prompt gap over it. statusEdge now reads the drawn row above for that side (prevDrawnRow), and a settled folded reply, which keeps its action row, gets the full room (#29585).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Agent pane: row-alignment capture hovers a reply's action row only where one exists

#29740 left a turn's copy to its footer, so no reply in the gallery draws its own action row and the hover waited out its timeout. The geometry (every lead at 0, every status gap 12/12) already held.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
teamleaderleo added a commit that referenced this pull request Nov 1, 2026
The coordinator's ruling relays Leo: "remove the things", so the removal in
#29614 stands. This takes the compact "N PRs" count, its chip list
(summary/PullRequestStack.tsx), the prDock.count/countOne/label strings,
their CSS, gallery variants and tests out of this PR. What stays is the
glass that joins the running tray and the composer, plus Stop in a tray
row's right-click menu.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-63b9964940c20354b639
teamleaderleo added a commit that referenced this pull request Nov 1, 2026
…ay row's menu (#28533)

* test(agent-pane): every bottom card shares the composer card's edges

Add agent-pane.bottom-stack-styles, the whole bottom stack with synthetic
data (nine background subagents, one chat waiting, two PRs, the composer),
and a geometry test: every card over the composer takes the composer card's
left and right x to 1px, the cards stand one --acpmux-stack-gap apart, and
a one-line "N PRs" row opens on the click to chips at the card's width.
Red on base: no PR row, no stack gap token.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-63b9964940c20354b639

* fix(agent-pane): the bottom stack is one glass on the composer's edges, with its N PRs row back

Leo, 2026-10-30: "you guys fucking removed the # prs thing entirely instead
of just simply fucking doing it". cmux#26082 moved the PR pills into each
message's action row and dropped the dock's collapsed count. The count comes
back as one row in the bottom stack (summary/PullRequestStack.tsx): the PR
mark, "N PRs" and a disclosure on the tray header's columns, opening on the
click with no fade to one full-width chip per PR with the reply links' hover
card. The per-message pills stay.

Every card over the composer takes the composer card's two edges and stands
--acpmux-stack-gap over the next; the selected look is one glass stack (gap
0, squared joins, one hairline between parts). The gallery compares it with
separate cards 4px apart and a compact strip.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-63b9964940c20354b639

* fix(agent-pane): the N PRs count opens Changes; its disclosure opens the chips, each with ×

Keep the settled PR dock design (design/session-info.md, Leo 2026-10-26): the
count opens Session Info > Changes and counts what Changes counts; the
disclosure beside it opens the chips, and a chip's × hides that shortcut only,
in the dock's existing per-chat dismissal list. The disclosure's glyph centers
on the stack's trailing line, 22 from the card's right edge.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-63b9964940c20354b639

* chore(design): map the bottom stack and the running tray to their specs

bottomStack.css and the PR stack join the composer surface (design/composer.md);
the running tray gets its own surface (design/running-tray.md).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-63b9964940c20354b639

* test(agent-pane): the N PRs row is a part of the stack; it rides up with the composer

agent-pane-dock-gutters lists the PR row among the stack's parts and checks its
gutter passes the wheel through as the tray's does; pr-dock-inline-layout lets
the dock and the PR row move up with a queued prompt that grows the form, their
own size unchanged. The styles gallery covers PullRequestStack.tsx only (a cover
names a component, not a sheet).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-63b9964940c20354b639

* test(agent-pane): every stacked row's chevron shares one x

The N PRs row's disclosure, the tray header's chevron and each tray line's
chevron must center within 1px of each other at 1100, 760 and 420px. Red at
7e9f7a6: the N PRs chevron sits about 25px right of the tray's.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-63b9964940c20354b639

* fix(agent-pane): the N PRs chevron ends on the tray's chevron column

--acpmux-stack-trail-end is the stack's one trailing chevron column, the
running tray's (row padding, Stop track, gap); the N PRs disclosure ends on it,
so the stacked rows' chevrons share one x. Once the tray moves its chevron past
Stop (#27930), this variable becomes the row padding alone, and the geometry
test fails until it does.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-63b9964940c20354b639

* test(agent-pane): the folded N PRs count adds no row; × on hover only; no PRs without the composer

Leo, 2026-10-30: "BUT IF IT'S ONLY N PRS DON'T FUCKIGN TAKE THE ENTIRE ROW AND
FUCKING BLANK IT OUT". The edges test now holds the stack as tall with the
folded count as with no pull requests (with and without the tray), the count
to its content's width with its own highlight, the tray's chevrons to one x,
and the opened chips' × to their row's hover or focus (Tab reaches it, Delete
dismisses). agent-pane-pr-stack-gate reads App.tsx's syntax tree: the pull
requests live only inside the composer's element, so a handoff review or the
Sandboxed receipt shows none. The dock-gutter and inline-layout tests go back
to base: no row of the count stands in the stack.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-63b9964940c20354b639

* fix(agent-pane): the N PRs count is a compact control in the quiet row, not a row

The folded count is one content-sized button beside the permission mode in the
composer's quiet row, a row already there, so it adds no row with or without
the tray; its pill lights only itself. It opens the chips on the click with no
fade, right over the composer at the card's width; a chip's × shows only on its
row's hover or focus, with no fade, and Delete or Backspace on a focused row
dismisses it. The count and the chips share one provider that is the composer
element's own `!reviewing` branch, so they cannot show without the composer.
The gallery compares the count on the tray's header line and over the
composer's left edge; the tray-line one falls back to the quiet row with no
tray.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-63b9964940c20354b639

* fix(agent-pane): the opened pull requests skip the stack's rise-on-mount

The rule that turns the stack's ui-enter off for the chips came before the
ui-enter rule with the same specificity, so the chips still rose and faded in
on the click. It now comes after it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-63b9964940c20354b639

* test(agent-pane): the opened-chips still has the pointer on its first row

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-63b9964940c20354b639

* fix(agent-pane): focus goes to the prompt after the last PR row; the expanded gallery state settles

Router review at 3106205: after the last PR row was dismissed, focus went to the
count, which is disabled with nothing left to open, so keyboard focus was lost.
It now goes on to the composer's prompt; the edges test dismisses the last row
with Delete and checks the active element is the prompt, never the body.

gallery-health's agent-pane.bottom-stack-styles#expanded timed out: its play
waited for every animation in the dock to end, and a running line's spinner
never ends. The play now waits only for motion that ends.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-63b9964940c20354b639

* fix(agent-pane): no control repeats on every opened PR row; a row's own menu dismisses it

The opened chips drew a × on every row (shown on hover or focus), which repeats a control on
every row. A row is now its link alone; right-click (or Shift-F10) opens its menu with
"Dismiss pull request #N", and Delete or Backspace on a focused row still dismisses it.
The edges test asserts no row carries a control at rest, hovered or focused, Tab goes row to
row, and the menu's Dismiss removes the row and moves focus to the next one.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-63b9964940c20354b639

* test(agent-pane): open a PR row's menu from the keyboard (the hover card from the earlier hover sat over the row)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-63b9964940c20354b639

* fix(agent-pane): the N PRs count and its rows keep the arrow cursor

check-default-cursor (Leo, 2026-10-30: "change all pointers back to
cursor-default") flagged the two cursor: pointer rules this branch added.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-63b9964940c20354b639

* fix(agent-pane): a settled tray stays cardless in the one-glass stack

Base #29276 made a settled tray (nothing runs) draw no card. The stack's join
rules gave it a rim and squared the part under it, so the
subagent-row-anatomy#done-one scene threw. A settled tray now joins nothing.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-63b9964940c20354b639

* fix(agent-pane): a tray line's Stop moves into its context menu

#28533's review [P1][blocking]: a Stop button on every running tray line is a
control repeated down the rows. Each running subagent and registry command now
stops from its line's context menu (right-click, or Shift-F10 / the menu key on
the focused line), through the shared ui/ContextMenu (the app's native menu).
The item keeps the old button's states: off while the request is out, "Couldn't
stop X" and retryable when refused; a command's says "Stop only this command".
The line stays lit while its menu is open. Lines with nothing to stop get no menu.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-63b9964940c20354b639

* fix(agent-pane): the PR stack reads ChangesSection from session-info after the base rename

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-63b9964940c20354b639

* test(agent-pane): a tray line that can stop keeps its focused node when it no longer can

Red at this commit: the line's ContextMenu host is dropped when nothing can be stopped, so React
remounts the focused row.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-63b9964940c20354b639

* fix(agent-pane): a tray line keeps its context menu host when nothing can stop

A line that ends, or whose command's process id arrives, was rendered without its ContextMenu
wrapper, so React remounted the row and dropped its keyboard focus. The host now always wraps the
line, with no items when nothing can stop; ui/ContextMenu keeps the default right-click and opens
nothing for an empty list.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-63b9964940c20354b639

* test(agent-pane): a subagent stopped, ended and resumed can be stopped again

Red at this commit: the tray keeps the line's taken Stop as "stopping" after the run ends, so the
resumed run's Stop stays off.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-63b9964940c20354b639

* fix(agent-pane): a taken Stop lasts one run; a resumed subagent can stop again

The tray kept a line's Stop as "stopping" after its run ended, so a subagent that ended and resumed
while the tray stayed mounted had its Stop off for good. When the tray's lines change, a Stop whose
line no longer can stop (it ended, or left) is dropped. One stopKey names a line's Stop for both.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-63b9964940c20354b639

* test(agent-pane): the short-dock Stop check gives the list a whole narrow line

9e2dc28 moved the tray line's Stop into its context menu, so the short-dock test now measures the
running line's button instead of the Stop button. A narrow line is two rows (56px at scale 1: its
time and state wrap under its name), but the test grew the dock by two header heights, of which
the squeezed composer took back ~31px, leaving the list a one-row (27px) viewport. The old 22px
Stop fit in it; the whole line cannot, so scrollIntoViewIfNeeded could not bring it inside the
list and its center (the right-click point) sat over View all. The tray layout is unchanged from
before 9e2dc28; the test now grows the dock until the list holds the whole running line and
asserts that before measuring.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-63b9964940c20354b639

* Bottom stack: drop the "N PRs" control, keep the glass

The coordinator's ruling relays Leo: "remove the things", so the removal in
#29614 stands. This takes the compact "N PRs" count, its chip list
(summary/PullRequestStack.tsx), the prDock.count/countOne/label strings,
their CSS, gallery variants and tests out of this PR. What stays is the
glass that joins the running tray and the composer, plus Stop in a tray
row's right-click menu.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-63b9964940c20354b639

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: cmux-bot[bot] <348531757+cmux-bot[bot]@users.noreply.github.com>
teamleaderleo added a commit that referenced this pull request Nov 2, 2026
…nd N more" (#32183)

* Agent chat: a started chat's row names every pull request on its own, no "and N more"

Leo (2026-10-31): "this +11 is really bad you guys should just render them
all separately". The PR chip row he said it of was removed on his later
order (#29614); the started chat's status line was the last place that still
folded a chat's pull requests into a count. It now names each one
(`cmux #22092 · cmux #22093 · ...`), wrapping onto more lines instead.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-1811af59a5bf16d868b8

* Agent chat: format the started-chat PR tests

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-1811af59a5bf16d868b8

* Agent chat: key a started chat's other PRs by place; gallery indent (review follow-ups)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-1811af59a5bf16d868b8

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
austinywang added a commit that referenced this pull request Nov 3, 2026
Conflicts came from base renaming Inspector to Session Info (inspector/ to
session-info/, .acpmux-chat-inspector to .acpmux-session-info) and from
#32763 (a split pane starts with Session Info closed). sessionInfoState.ts
keeps both rules: a chat with no saved state starts closed when it replaces
another chat's session or sits under a split pane's key; base's Show more,
section versioning and split keys stay, and the saved state keeps its v: 2.
App.tsx calls startNewSessionInfoChat at the handshake reset. The PR's
gallery plays open Session Info with the renamed selector;
PullRequestDockComparisons.ts stays deleted as on base (#29614). The per-pane
test folds Context instead of opening it, since base opens Context by default.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

This branch was previously deployed

1 inactive deployment
ci-routing-agent — dff66069 Deployed Oct 31, 2026 by teamleaderleo via wait for same-key tree publisher #91206
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

risk:normal Risk tier (docs/ci/risk-tiers.md)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant