Skip to content

Agent pane: move VirtualTranscript out of App.tsx into its own module (pure move) - #36620

Merged
teamleaderleo merged 1 commit into
feat-cmux-nextfrom
lane/acpmux-app-split-2
Nov 5, 2026
Merged

teamleaderleo merged 1 commit into
feat-cmux-nextfrom
lane/acpmux-app-split-2

Conversation

@teamleaderleo

@teamleaderleo teamleaderleo commented Nov 5, 2026 •

Copy link
Copy Markdown
Collaborator

Leo, 2026-11-05: "i meant can you do all of htem" (the ranked shipping list, item 3: "Split the eight hottest files: App.tsx into modules"). This is slice 2 of the acpmux/App.tsx split, after #36363. It's a pure move with no behavior change.

What moves

VirtualTranscript, the transcript's virtualized list, plus everything in App.tsx that only it uses, moves unchanged into webviews/src/agent-session/acpmux/VirtualTranscript.tsx. App.tsx goes from 15046 to 10935 lines. The moved code: RowFrame and its memo comparison (sameRowFrame, sameReferenceScope, sameFields), the drawn-height helpers (DrawnHeight, sameDrawn, changesDrawn, drawnHeightOf), the follow and scroll helpers and their constants, JumpToLatest, OlderRowFade, ReadOnlyBoundary and TranscriptContext. In the last 14 days this region took the second-most commits in App.tsx (92 commits touched the VirtualTranscript body alone).

App.tsx imports back NO_ROWS, rowKind and ScrollAnchor. It re-exports VirtualTranscript, FOLLOW_BOTTOM_DEADBAND_PX, SCROLL_ANCHOR_SETTLE_MS and ScrollAnchor, so every importer (ChiefWeb, GuestPage, the galleries, tests) keeps working unchanged. Nothing is renamed. The only edit inside moved code is the export keyword a declaration needs in its new module. Trailing comments move with their lines (the first push dropped one // motion-allow: comment; the move tool is fixed and nothing else was lost).

Outside the move, three things point at the code's new home:

  • test/drawn-height-priority.test.tsx reads sameDrawn and flushDrawn from VirtualTranscript.tsx.
  • test/popover-instant-open.test.ts lists the four Web Animations calls under VirtualTranscript.tsx.
  • test/transcript-parked-stream.test.ts's probe plugin instruments VirtualTranscript.tsx.
  • scripts/cmux-next/check-switch-fetches.py allows the transcript's moved visibilitychange listener under its new file. It clears the rows still entering when the page hides and reads no data.

Gallery covers lines name VirtualTranscript.tsx#VirtualTranscript. The two stale App.tsx#RowFrame covers (RowFrame was never exported) now cover the whole VirtualTranscript.tsx.

To review it as a move: git show --color-moved=dimmed-zebra --color-moved-ws=allow-indentation-change HEAD.

Open PRs whose App.tsx hunks this relocates

Git's rename detection doesn't follow a partial move. For each of these, re-apply the hunk in VirtualTranscript.tsx:

None of Leo's open PRs touch this region. That's from the open-PR read at the start of this series; the live pr-overlap read was refused by the host's GitHub quota at push time.

Verification

  • bun run check in webviews/: passes.
  • bun run test over the 1,147 test files that touch the agent pane, App.tsx or the gallery: everything passes except gallery-coverage, theme-colors and react-compiler-skips-optimized-deps. All three fail the same way on base locally.
  • scripts/cmux-next/prepush-gate.py: no new violations.
  • The CI webview verdict's reds at the first head, run locally with the browser lane: transcript-parked-stream, motion-scale and accent-glass-invariants-3 pass at this head. popup-surface and new-tab-paste-attachments fail the same tests on base locally too.

Changelog

none

Agent session: agent session

🤖 Generated with Claude Code

@github-actions

github-actions Bot commented Nov 5, 2026 •

Copy link
Copy Markdown
Contributor

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

Review fbbd9b5: 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=pr36620 -f ref=lane/acpmux-app-split-2 -f platform=macos -f backend_mode=local

Gallery before/after for fbbd9b5: 16 states rendered, 0 images differ, 2158 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 42055994744 -R manaflow-ai/cmux -n gallery-advisory-36620-fbbd9b5526cf097e10f8667d01ec40da7a4d64f5 (then read gallery-review.json)

States
State Theme Status Diff Picked by
agent-pane.chat-width/standard Apple System Colors Light unchanged 0% own VirtualTranscript.tsx
agent-pane.chat-width/standard Apple System Colors unchanged 0% own VirtualTranscript.tsx
agent-pane.chat-width/wide Apple System Colors Light unchanged 0% own VirtualTranscript.tsx
agent-pane.chat-width/wide Apple System Colors unchanged 0% own VirtualTranscript.tsx
agent-pane.chat-width/wide-blocks Apple System Colors Light unchanged 0% own VirtualTranscript.tsx
agent-pane.chat-width/wide-blocks Apple System Colors unchanged 0% own VirtualTranscript.tsx
agent-pane.composer-edge/short-edge Apple System Colors Light unchanged 0% own VirtualTranscript.tsx
agent-pane.composer-edge/short-edge Apple System Colors unchanged 0% own VirtualTranscript.tsx
agent-pane.composer-edge/wide-edge Apple System Colors Light unchanged 0% own VirtualTranscript.tsx
agent-pane.composer-edge/wide-edge Apple System Colors unchanged 0% own VirtualTranscript.tsx
agent-pane.composer-edge/no-edge Apple System Colors Light unchanged 0% own VirtualTranscript.tsx
agent-pane.composer-edge/no-edge Apple System Colors unchanged 0% own VirtualTranscript.tsx
agent-pane.composer-floats/scrolled-to-end Apple System Colors Light unchanged 0% own VirtualTranscript.tsx
agent-pane.composer-floats/scrolled-to-end Apple System Colors unchanged 0% own VirtualTranscript.tsx
agent-pane.composer-floats/composer-grown Apple System Colors Light unchanged 0% own VirtualTranscript.tsx
agent-pane.composer-floats/composer-grown Apple System Colors unchanged 0% own VirtualTranscript.tsx
agent-pane.composer-rest-gap/gap-40 Apple System Colors Light unchanged 0% own VirtualTranscript.tsx
agent-pane.composer-rest-gap/gap-40 Apple System Colors unchanged 0% own VirtualTranscript.tsx
agent-pane.composer-rest-gap/gap-56 Apple System Colors Light unchanged 0% own VirtualTranscript.tsx
agent-pane.composer-rest-gap/gap-56 Apple System Colors unchanged 0% own VirtualTranscript.tsx
agent-pane.composer-rest-gap/gap-72 Apple System Colors Light unchanged 0% own VirtualTranscript.tsx
agent-pane.composer-rest-gap/gap-72 Apple System Colors unchanged 0% own VirtualTranscript.tsx
agent-pane.continuation-spacing/shipped Apple System Colors Light unchanged 0% own VirtualTranscript.tsx
agent-pane.continuation-spacing/shipped Apple System Colors unchanged 0% own VirtualTranscript.tsx
agent-pane.continuation-spacing/two-thirds Apple System Colors Light unchanged 0% own VirtualTranscript.tsx
agent-pane.continuation-spacing/two-thirds Apple System Colors unchanged 0% own VirtualTranscript.tsx
agent-pane.continuation-spacing/half-tucked Apple System Colors Light unchanged 0% own VirtualTranscript.tsx
agent-pane.continuation-spacing/half-tucked Apple System Colors unchanged 0% own VirtualTranscript.tsx
agent-pane.continuation-spacing/before Apple System Colors Light unchanged 0% own VirtualTranscript.tsx
agent-pane.continuation-spacing/before Apple System Colors unchanged 0% own VirtualTranscript.tsx
agent-pane.copy-controls/output Apple System Colors Light unchanged 0% own VirtualTranscript.tsx
agent-pane.copy-controls/output Apple System Colors unchanged 0% own VirtualTranscript.tsx

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

Passes: CI passes on fbbd9b5526.

CI passes on fbbd9b5526 (run 42055967865 attempt 1).

Written by scripts/ci/classify_failures.py (ci-failure-attribution.yml); signatures are its SIGNATURES table. A machine verdict is the runner's fault, not this PR's; yours means the failing file is one this PR changes, also red on main that main's latest full suite fails the same way, seen on other PRs that it failed on another pull request's run lately.

web and size checks: green

Shipped in:

@blacksmith-sh

blacksmith-sh Bot commented Nov 5, 2026 •

Copy link
Copy Markdown

Found 22 test failures on Blacksmith runners:

Failures

Test View Logs
src/pages/settings/rowSummary.test.tsx/rowSummary.test.tsx View Logs
src/pages/settings/rowSummary.test.tsx/rowSummary.test.tsx View Logs
test/agent-pane-ctrl-b-background.test.ts/agent-pane-ctrl-b-background.test View Logs
test/agent-pane-ctrl-b-background.test.ts/agent-pane-ctrl-b-background.test View Logs
test/agent-pane-sent-images.test.ts/agent-pane-sent-images.test View Logs
test/agent-pane-sent-images.test.ts/agent-pane-sent-images.test View Logs
test/agent-pane-unsent-draft.test.ts/agent-pane-unsent-draft.test View Logs
test/agent-pane-unsent-draft.test.ts/agent-pane-unsent-draft.test View Logs
test/composer-one-row-layout.test.ts/composer-one-row-layout.test View Logs
test/composer-one-row-layout.test.ts/composer-one-row-layout.test View Logs

...and 12 more test failures. View all on Blacksmith

Blacksmith runners detected OOM events on the following jobs:

Job Details
web / react-apps-base-check (4) View Job

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

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Review (codex, router-review): SHIP at edd496c

Reviewer: codex gpt-6.1-sol xhigh, fast tier.

Follow-ups: 1. They land as checklist items in this PR's one follow-up tracking issue in this repo (Follow-ups: #N ..., label follow-up; add to an open one before filing, never one issue per finding), linking this receipt; the lane that opened the PR fixes them forward.

SHIP at edd496c

Visual verdict: no images; Leo tries the build

  1. [P2] [follow-up] [category:tests] [finding:F1] [outcome:pending] MessageEntrance.gallery.tsx:67 and CopyControls.gallery.tsx:35 still cover agent-session/acpmux/App.tsx#RowFrame; update these stale covers to the moved transcript module so gallery coverage tracks the relocation.

Follow-ups: F1 — update the two stale RowFrame gallery covers.

@cmux-bot cmux-bot Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

cmux-bot approves edd496c: an independent review passed this exact head (router-review receipt by teamleaderleo). A push needs a new review; a later BLOCK at this head dismisses this approval.

… (pure move)

VirtualTranscript and everything in App.tsx only it uses (RowFrame and its
memo comparison, the drawn-height and scroll-follow helpers and constants,
JumpToLatest, OlderRowFade, TranscriptContext, ReadOnlyBoundary) move
unchanged into webviews/src/agent-session/acpmux/VirtualTranscript.tsx,
trailing comments included. App.tsx imports back NO_ROWS, rowKind and
ScrollAnchor and re-exports VirtualTranscript, FOLLOW_BOTTOM_DEADBAND_PX,
SCROLL_ANCHOR_SETTLE_MS and ScrollAnchor, so every importer keeps working.
Declarations gain only the `export` keyword their new module needs.

Tests and checks that read the moved code by path follow it:
drawn-height-priority, popover-instant-open, transcript-parked-stream's
probe plugin and check-switch-fetches. Gallery covers name
VirtualTranscript.tsx.

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

Copy link
Copy Markdown
Collaborator Author

Review (codex, router-review): SHIP at fbbd9b5

Reviewer: codex gpt-6.1-sol xhigh, fast tier.

SHIP at fbbd9b5

Visual verdict: no images; Leo tries the build

The moved body matches the deleted code after whitespace/export normalization. Import/export checks and switch-fetch checks pass.

Follow-ups: none

@cmux-bot cmux-bot Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

cmux-bot approves fbbd9b5: an independent review passed this exact head (router-review receipt by teamleaderleo). A push needs a new review; a later BLOCK at this head dismisses this approval.

@teamleaderleo
teamleaderleo merged commit 9b8897b into feat-cmux-next Nov 5, 2026
195 of 202 checks passed
@teamleaderleo
teamleaderleo deleted the lane/acpmux-app-split-2 branch November 5, 2026 16:30
teamleaderleo added a commit that referenced this pull request Nov 5, 2026
#36620 moved VirtualTranscript out of App.tsx into VirtualTranscript.tsx (a pure move). This PR's
App.tsx change, which removes the hidden page-back walk on reopen (seeking, seekExpired,
OPEN_AT_PAGE_MS/OPEN_AT_SEEK_MS, data-seeking), is re-applied hunk by hunk to
VirtualTranscript.tsx; App.tsx takes base's side.

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

This branch was previously deployed

1 inactive deployment
ci-routing-agent — fbbd9b55 Deployed Nov 5, 2026 by teamleaderleo via cmux-tui tree preflight #116760
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