Repository navigation
Show inline edit placeholders while the diff renderer loads - #27650
Conversation
|
cmux status (one comment, edited in place; each line is updated by the job that owns it) Review App of this head (app.zip, kept 1 day)
Gallery before/after for
States
Pick other states with a Passes: CI passes on CI passes on Written by web and size checks: green Shipped in:
|
|
Owned by an agent session · session |
|
Review (codex, router-review): SHIP at 523e862 Reviewer: codex gpt-6-astra high, fast tier. Follow-ups: 1. Each lands as an issue in this repo that links this receipt; the lane that opened the PR fixes it forward. SHIP at 523e862 Visual verdict: no images; Leo tries the build No correctness regressions found in source review. Tests could not run: Bun and webview dependencies are unavailable.
Follow-ups:
|
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
There was a problem hiding this comment.
1 issue found across 7 files
Prompt for AI agents (unresolved issues)
Check if these issues are valid — if so, understand the root cause of each and fix them. When an issue isn't valid or won't be fixed in this PR, reply in its thread with the reason and then resolve the thread. If appropriate, use sub-agents to investigate and fix each issue separately.
<file name="webviews/test/edit-diff-loading.test.tsx">
<violation number="1" location="webviews/test/edit-diff-loading.test.tsx:126">
P3: This assertion only checks that the empty-edit explanation has some text. Assert the exact `changes.noLineChanges` string so a wrong or missing message fails the test.</violation>
</file>
Reply with feedback, questions, or to request a fix.
View guided diff | Turn on auto-fix | Re-trigger cubic
| const empty = file(0); | ||
| empty.edits[0]!.hunks = []; | ||
| await draw(empty); | ||
| expect(host.querySelector(".cv-edit-diff__empty")?.textContent).toBeTruthy(); |
There was a problem hiding this comment.
P3: This assertion only checks that the empty-edit explanation has some text. Assert the exact changes.noLineChanges string so a wrong or missing message fails the test.
Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. When an issue isn't valid or won't be fixed in this PR, reply in its thread with the reason and then resolve the thread. At webviews/test/edit-diff-loading.test.tsx, line 126:
<comment>This assertion only checks that the empty-edit explanation has some text. Assert the exact `changes.noLineChanges` string so a wrong or missing message fails the test.</comment>
<file context>
@@ -0,0 +1,128 @@
+ const empty = file(0);
+ empty.edits[0]!.hunks = [];
+ await draw(empty);
+ expect(host.querySelector(".cv-edit-diff__empty")?.textContent).toBeTruthy();
+ expect(host.querySelector(".cv-edit-diff__loading-lines")).toBeNull();
+});
</file context>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Orphaned: no activity for 13 h, and no lane holds a lease on it. The orphan sweep could not merge |
…conflict resolution by lander-open-prs) Agent-Session: https://cmux.com/deeplink/agent?id=aid-fc739fd2f4e557ae7189
|
Review (subagent claude-opus-5-5 medium, conflict-resolution delta): SHIP at f8c93b8
|
|
Review (next-review patch-id; carried): SHIP at 508bb57 The independent SHIP at a7a177c carries to this head: the PR's own change ( |
…ve it Red on 4367630: the fold's placeholder makes the transcript overflow mid-fold, the not-yet-opened chat jumps to its latest row and the user row reads 25 px, not 44. cmux-ci test: bun test test/edit-diff-loading.browser.test.ts (run 41413975193): 1 fail. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-fc739fd2f4e557ae7189
|
Review (codex gpt-6.1-sol high, sweep, via the review router; full diff from merge base 35647a2 to this head): SHIP at 508bb57 [P2] [follow-up] webviews/src/agent-session/acpmux/conversation/EditDiffLoading.tsx:39 - For wrapped prose edits, all lines beyond the first 400 are collapsed into a single |
…here the reader is Opening an edit's card in a chat that fit drew its placeholder at the rendered diff's height, so the fold's height animation made the transcript overflow mid-fold. The not-yet-opened chat then took its first overflow as "open at latest": it set the offset to the end (18.7 px), and the fold hold put it back a frame later. Rows above the card bounced -19/-9/-7 px (gallery health, transcript#edit-long-line-*). Past the hold the same path moved the whole thread up under the clicked line (base: -113 px when the diff painted 430 ms after the click). While a clicked disclosure holds its line, the chat opens at the current offset and follows only if that is the end. Box shift of the edit states is now 0 (was 0.0024-0.0098). What gallery health still counts is Chromium's layout-shift entries for the rows below the card moving down while the fold opens to the diff's real height, as every tool disclosure does (cut-line-open 0.0129). On base the card folded open to its header only and the diff popped in after the step's settle window, so the motion was unmeasured, not absent. The four rows take the measured values: code 0.0125, code-cut 0.0156, prose 0.015, preview-open 0.0781 (its Show all step alone is 0.0619). Red/green: bun test test/edit-diff-loading.browser.test.ts via cmux-ci - red without this commit (run 41413975193): user row 25 px, expected 44 - green with it (run 41414663522): 8 pass; also edit-diff-loading.test.tsx, agent-pane-fold-keeps-place, transcript-fold-motion, reopened-chat-history, transcript-parked-stream all pass. Gallery health on 46 transcript cases (run 41417656420): edit states box shift 0. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-fc739fd2f4e557ae7189
…m:manaflow-ai/cmux into lane/aiforui-inline-diff-loading-20261029
Bugbot needs on-demand usage enabledBugbot 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. |
|
Review (codex, router-review): SHIP at f769f6b Reviewer: codex gpt-6.1-sol xhigh, fast tier. Follow-ups: 2. Each lands as an issue in this repo that links this receipt; the lane that opened the PR fixes it forward. SHIP at f769f6b
Source inspection and syntax parsing completed. Tests could not run because Bun and dependencies are absent. Follow-ups:
|
A newer verdict blocks 07685a9 (no independent SHIP at the head).
|
Review (next-review patch-id; carried): SHIP at 07685a9 The independent SHIP at f769f6b carries to this head: the PR's own change ( |
…old hold is over The reading play opens a tool output. Outside a transcript its fold keeps the clicked line in place by moving the scroller until the fold and FOLD_SETTLE_MS are over (useAnchoredCollapse keepHeader). With the edit's placeholder holding its height the stage is ready inside that window, so the test's scrollIntoView was put back to 0 and the off-screen diagram never drew its error: the webview verdict's own red on #27650 (transcript-content-font, dark and light). cmux-ci: bun test test/transcript-content-font.test.ts - red at f769f6b (run 41423087171): 2 fail, .cv-diagram__error never visible - green (run 41425507433): 2 pass Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-fc739fd2f4e557ae7189
…m:manaflow-ai/cmux into lane/aiforui-inline-diff-loading-20261029
Bugbot needs on-demand usage enabledBugbot 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. |
|
Review (codex gpt-6.1-sol xhigh, router-review): BLOCK at 0e2a2bb BLOCK at 0e2a2bb Visual verdict: no images; Leo tries the build
|
Review BLOCK at 0e2a2bb (router-review): the fixed waitForTimeout broke check:fixed-waits. The diagram is now scrolled to on each frame until its error draws, so a fold hold that puts the scroll back only delays it. cmux-ci (run 41428914421): transcript-content-font 2 pass; bun run check rc 0. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-fc739fd2f4e557ae7189
Bugbot needs on-demand usage enabledBugbot 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. |
|
Review (codex, router-review): SHIP at 51bdab0 Reviewer: codex gpt-6.1-sol xhigh, fast tier. Follow-ups: 1. Each lands as an issue in this repo that links this receipt; the lane that opened the PR fixes it forward. SHIP at 51bdab0 Source review found no blocking correctness issue. Unit/type checks could not start because dependencies are absent. Follow-ups:
|
![Fix with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/fix-with-codesmith-light-3x.png)
Opening a transcript edit currently shows its filename above a blank body until the lazy diff renderer arrives. This change draws static line placeholders using the existing code line height, preview cap and fade; header controls remain usable.
Leo (2026-10-29):
Audit
webviews/src/agent-session/acpmux/conversation/EditDiff.tsx:98(base)Suspense fallback={null}leaves only the header and optional preview actionNo syntax-renderer dependency is added to the initial bundle. One painted placeholder block per edit avoids creating a DOM element per line. There are no new timers, observers or animations.
Geometry limit: the collapsed preview retains its existing cap. Expanded wrapped text and skipped-line separators receive their exact height only after the renderer loads. The fallback does not duplicate the diff parser or wrapping engine.
Validation
bun run checkandscripts/web-lint.sh: passed.changes.loadingandchanges.noLineChanges; no new product copy.pr-overlapwas run but its API form is unsupported by the publishing broker; symbol search found no competing inline loading fix.Before / after
Pending gallery capture of
agent-pane.inline-diff-loadingin both themes. Fixtures contain synthetic code only.UI review
Verdict: blocked
Blockers
Should fix
Nits
Needs a human / needs a device
Agent session: agent session
Need help on this PR? Tag
@codesmith-botwith what you need.Summary by cubic
Shows placeholder lines while the inline diff renderer loads, so opening a transcript edit no longer leaves a blank body under its filename, and keeps the transcript from jumping when a fitting chat overflows.
Written for commit 51bdab0. Summary will update on new commits.