Skip to content

fix(agent-chat): keep the composer edge fade compact - #26370

Merged
teamleaderleo merged 8 commits into
feat-cmux-nextfrom
nx-transcript-blur-audit-1027
Oct 29, 2026
Merged

teamleaderleo merged 8 commits into
feat-cmux-nextfrom
nx-transcript-blur-audit-1027

Conversation

@teamleaderleo

@teamleaderleo teamleaderleo commented Oct 27, 2026 •

Copy link
Copy Markdown
Collaborator

Jump to latest no longer widens the fading band above the composer from 18px to 56px. The normal short edge keeps text readable while retaining a soft boundary and hiding rows beneath the dock.

Leo, 2026-10-27: "why are you blurring all the way up here?" The apparent blur was a transcript alpha mask. The gallery compares the old 56px band, the selected 18px edge, and no fade at the same 760×700 size. The short edge preserves separation without washing out almost three text lines. The composer and transcript bounds, scroll position, glass, and input behavior remain the same.

The residual small-control audit covered sender chips, Details, Show more, code Copy/Wrap, retry, and pair Resume: their hover paint is local to their controls. The full-width tool/thinking disclosure rows are themselves the controls. The PR-control layout and duplicate Copy are handled separately by #26082 and #26096.

The minimap reserves the same 18px bottom fade as the transcript. Keeping its former 56px clearance shortened the rail by 38px. In a 320px pane, the lower rail boundary now reaches 298px instead of 260px, with the top boundary still 22px; the existing height caps still apply. The CSS/model check now requires equality, and the short-pane geometry tests use the actual fade width.

Repair validation for 1388f0d2d71107999eb8c381e5a02a9b04ed463a: focused remote run 40805012438 passed 38 minimap tests / 258 assertions and 10 edge, wheel and parked-stream tests / 101 assertions, plus full bun run check (2,948-file typecheck). The tested snapshot and final commit have the identical source tree 4fe9657cf7524d8d6f574b6b6aed771c23361ca4; the final scoped gate and diff whitespace check pass. No transcript follow-state or rail height-policy change is included. Existing captures below are explicitly pinned to the earlier fade-only head.

Earlier reconciliation validation at 52c4de8911b6f20886d7152e17df2f9dda51dd5a (base 096c26446c932be59e780f26aba4b0283e7feb68):

  • Focused remote run 40795220219 passed on the exact source tree ac54fbd7bc2f6d3fd189ce3b2dc54a9cae709552: soft edges 1 test / 6 assertions, parked streaming 3 / 41, wheel pass-through 6 / 54 across Chromium and WebKit.
  • bun run check passed, including lint, formatting, protocol checks and typechecking 2,948 files.
  • Scoped prepush-gate.py --base 096c26446c932be59e780f26aba4b0283e7feb68 --head 52c4de8911b6f20886d7152e17df2f9dda51dd5a passed with no new violations; git diff --check passed.
  • App.tsx is byte-identical to the merged base, preserving fix: stop streaming from recapturing a parked transcript reader #26088's renderScroll anchor synchronization and follow-state behavior.
  • Initial combined run 40794305018 returned exit 1 with missing final command verdicts. It is not counted as passing or excused as a base red; the focused recovery above completed all requested suites with explicit per-command exits.

Original implementation validation (historical heads):

  • Red regression commit b919f6c1a05ce83a5c2c35c0c84b6035c7ad160e: the real Chromium alpha-mask probe 30px above the dock reads red-channel 134 (required >240). The same test passes after the fix, including soft-edge and hidden-under-dock assertions.
  • CMUX_BROWSER_TESTS=1 bun test test/agent-pane-soft-edges.test.ts: 1 pass, 6 assertions.
  • CMUX_BROWSER_TESTS=1 bun test test/transcript-parked-stream.test.ts: 3 pass, 41 assertions; parked painted cases show zero jitter, remounts, or false-fade frames.
  • CMUX_BROWSER_TESTS=1 bun test test/agent-pane-wheel-pass-through.test.ts: Chromium 3 pass, 27 assertions; WebKit is not installed locally.
  • bun run check: passes at final head 8530cdb7e6fd579ddb849f63172ae08a2786fc70, including formatting, lint, 2,883-file typecheck, and protocol generation.
  • PR-scoped bun test test/gallery-coverage.test.ts: 6 pass; unrelated base coverage debt prints as warnings.
  • python3 scripts/verify-local.py: unchanged localization debt exceeds the base baseline (identical 91 -> 126); this PR changes no strings or localization files. Other selected checks pass.

Gallery: agent-pane.composer-edge

Fresh fixture captures from head 52c4de8911b6f20886d7152e17df2f9dda51dd5a, base 096c26446c932be59e780f26aba4b0283e7feb68: gallery run 40794611729, artifact gallery-advisory-26370-52c4de8911b6f20886d7152e17df2f9dda51dd5a. All six images render the same 420×700 CSS-pixel viewport at device scale 2 (840×1400 PNG), with scrollTop 1200. Every variant reports exact head/source provenance, passing play steps and zero layout shift. The wide-edge arm reproduces the previous 56px mask on this head; the selected arm uses the production 18px edge. Source: composer-edge fixture.

Appearance Before behavior: 56px wide-edge arm Selected: 18px production edge
Dark 56px edge, dark 18px edge, dark
Light 56px edge, light 18px edge, light

Current no-fade alternative: dark, light. These six images contain synthetic fixture text only and passed the media helper's OCR privacy check. Reference matched: the Codex bottom-docked composer, using a local soft edge; the private reference image is not published.

Preserved historical fixture evidence and its limitations

Gallery: agent-pane.composer-edge, variants wide-edge, short-edge, and no-edge. The six original Chromium capture links are preserved below. These are historical fixture evidence, not a recapture of the reconciled head. The composer stays at (20, 542), 720×94px; scrollTop stays 1200 and the jump control stays at (364, 498), 32×32px in every arm. Reference matched: the Codex bottom-docked composer, using a local edge rather than a wide obscured band. The images below are synthetic cmux gallery fixtures.

Before and after, at the same window size. Inspection during reconciliation found that every file labelled light is byte-identical to its dark counterpart. The short-edge and no-edge captures are also identical at this fixture position. These captures demonstrate the dark wide-to-short change; they do not establish light-mode coverage or visually distinguish the 18px and 0px alternatives.

Appearance Before: 56px band Selected: 18px edge
Dark Before: wide composer edge, dark After: short composer edge, dark
Original light-labelled files (render dark) Before: wide composer edge, light After: short composer edge, light

The no-fade alternative: dark, original light-labelled file, renders dark.

Takes back #22860: this PR intentionally supersedes only #22860's 56px Jump-to-latest fade; Leo's follow-up requires the existing 18px edge so transcript text above the composer remains readable.

Changelog

Fixed: Keep transcript text readable above the composer while Jump to latest is visible.

Review (independent Codex gpt-6-astra high, review_fade_final_26370): SHIP at 1388f0d

The separate read-only reviewer inspected the entire nine-file final diff, including the 18px rail-model repair from the bare mirror. No concrete blocker was found; primary inspection agrees. This is a different-model subagent review, not a fleet review-box run.

The two earlier head-only CI flags composer-row-steps.test.ts and composer-type-scale.test.ts failed during gallery warmup before executing any tests; they are not excused as base reds. At the preceding 52c4de8 head, run 40801139762 passed type-scale (50 tests); run 40803020790 passed row-steps plus edge tests (16 tests) and minimap tests (28 tests). Final rail-repair run 40805012438 passed 38 minimap tests / 258 assertions and 10 edge, wheel and parked-stream tests / 101 assertions, plus the full web check. Its tested tree 4fe9657cf7524d8d6f574b6b6aed771c23361ca4 equals the final source tree. At a 320px pane, rail room now ends at 298px instead of 260px; 720px rail height remains capped at 662px by the existing 92% maximum. No new App or scroll-follow change. Existing captures precede this rail geometry repair.

Agent session: agent session

@github-actions

github-actions Bot commented Oct 27, 2026 •

Copy link
Copy Markdown
Contributor

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

Review 1388f0d: 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=pr26370 -f ref=nx-transcript-blur-audit-1027 -f platform=macos -f backend_mode=local

Unclear: web / react-apps-base-check (2) failed: no known signature; failed step: Run base reds and compare. This PR merged before its CI finished: fix forward on main.

CI failed on 1388f0d2d7 (run 40806926019 attempt 1): 2 unknown.

Job Verdict Why
web / react-apps-base-check (2) unknown no known signature; failed step: Run base reds and compare
web / react-apps-check unknown no known signature; failed step: Check webview test shards

Not re-run automatically: web / react-apps-base-check (2), web / react-apps-check are not machine failures.

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.

red: cmux-next checks (god files, concurrency, crash safety, l10n); NEW: red check: Package dependency lists sorted is not red on the base 096c264; do not merge until green; see lane-rules
red: web / Web status; base red: the same failure on the base 096c264; does not block
red: web / react-apps-base-check (2); no finished base run on 096c264 to compare; do not merge until green; see lane-rules
red: web / react-apps-check; base red: the same failure on the base 096c264; does not block

Gallery before/after for 1388f0d: the capture produced no images (run).

@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 27, 2026
@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Bead cx-96u09r created for this PR by the cmux coordinator.

@blacksmith-sh

blacksmith-sh Bot commented Oct 27, 2026 •

Copy link
Copy Markdown

Found 6 test failures on Blacksmith runners:

Failures

Test View Logs
/tmp/tmppimxgmbi/summary-missing.json (live):/summary-missing.json (live): View Logs
/tmp/tmpz1glrw5_/summary-fail.json (live):/summary-fail.json (live): View Logs
[new_workspaces] debug.new_workspace timed 0 of 50 new workspace rows/
[new_workspaces] debug.new_workspace timed 0 of 50 new workspace rows
View Logs
[new_workspaces] the window draws no frames/[new_workspaces] the window draws no frames View Logs
[tabs] debug.tab_switch timed 0 of 40 switches/
[tabs] debug.tab_switch timed 0 of 40 switches
View Logs
[tabs] the window draws no frames/[tabs] the window draws no frames View Logs

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 gpt-6-astra xhigh, next-review): SHIP at 8530cdb

No blocking findings.

@teamleaderleo teamleaderleo removed the risk:normal Risk tier (docs/ci/risk-tiers.md) label Oct 27, 2026
@github-actions github-actions Bot added the risk:normal Risk tier (docs/ci/risk-tiers.md) label Oct 27, 2026
@cmux-bot cmux-bot Bot removed the risk:normal Risk tier (docs/ci/risk-tiers.md) label Oct 27, 2026
@github-actions github-actions Bot added the risk:normal Risk tier (docs/ci/risk-tiers.md) label Oct 27, 2026
@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Orphaned: no activity for 13 h, and no lane holds a lease on it. Adopted by the orphan sweep: merged feat-cmux-next in at 20aae81. A later pass queues it for the merge hub if it is reviewed, small and red only on base reds.

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Review (codex gpt-6-astra high, next-review): SHIP at 20aae81

No blocking findings.

@cursor

cursor Bot commented Oct 28, 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.

@cmux-bot
cmux-bot Bot temporarily deployed to ci-routing-agent October 28, 2026 13:52 Inactive
@cmux-bot
cmux-bot Bot temporarily deployed to ci-routing-agent October 28, 2026 13:52 Inactive
@teamleaderleo teamleaderleo added the hold cmux-next batch queue: keep this PR out of the batch (docs/ci/cmux-next-batch.md) label Oct 29, 2026
@teamleaderleo teamleaderleo removed the hold cmux-next batch queue: keep this PR out of the batch (docs/ci/cmux-next-batch.md) label Oct 29, 2026
@teamleaderleo
teamleaderleo merged commit 7e81852 into feat-cmux-next Oct 29, 2026
205 of 215 checks passed
@teamleaderleo
teamleaderleo deleted the nx-transcript-blur-audit-1027 branch October 29, 2026 02:56
@github-actions

github-actions Bot commented Oct 29, 2026 •

Copy link
Copy Markdown
Contributor

This branch was previously deployed

1 inactive deployment
ci-routing-agent — 1388f0d2 Deployed Oct 29, 2026 by teamleaderleo via wait for same-key tree publisher #74429
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