Skip to content

fix(next): keep composer drafts on whole lines - #24772

Closed
teamleaderleo wants to merge 3 commits into
feat-cmux-nextfrom
codex/composer-line-snapping
Closed

teamleaderleo wants to merge 3 commits into
feat-cmux-nextfrom
codex/composer-line-snapping

Conversation

@teamleaderleo

@teamleaderleo teamleaderleo commented Oct 24, 2026 •

Copy link
Copy Markdown
Collaborator

Leo asked:

“also this bottom area still has fades? idk odd or even numbered lines when it goes down it doesn't do it proper or whatnot”

The composer draft now keeps its scroll offset and eight-line cap on whole line boxes, including the field padding. The prompt no longer applies an edge fade that can cut through the caret's line; the attachment strip keeps its horizontal fade. The line-grid rules live in a dedicated stylesheet so the shared composer CSS lanes stay isolated.

The test matrix covers 1–12 wrapped and unwrapped lines at 300px and 760px, including the capped state. The implementation matches the cmux-design-references composer notes and long-draft gallery state.

Validation:

  • bun test test/composer-draft-wrap.test.ts — Chromium: 17 passed, 360 assertions; local WebKit unavailable.
  • bun run typecheck — passed.
  • bun run fmt -- --check — passed.
  • prepush-gate.py --base origin/feat-cmux-next — no new violations.
  • Exact-head fleet focused browser lane: d094680d57010abb8a077331 (queued).
  • Exact-head fleet compile: 113461e4064436e3af1b7cb2 stopped with the same compile-lane red as base 563a31c0be54f99c0c7632a8; both receipts contain only existing Swift warnings before the fleet verdict.
  • GitHub gallery health rendered the composer long-draft state on the head; its five red states are existing gallery health/base reds (three allowlisted). A gallery compare trigger is unavailable because the gallery controller SSH route cannot be resolved from this host.

agent-identity footer

@github-actions

github-actions Bot commented Oct 24, 2026 •

Copy link
Copy Markdown
Contributor

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

Review f9c340f: 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=pr24772 -f ref=codex/composer-line-snapping -f platform=macos -f backend_mode=local

Probably yours: agent-pane-wheel-pass-through.test.ts, diff-label-bundle.test.ts, diff-label-bundle.test.ts fails here but not on main's latest full suite. Seen on other PRs too (likely flaky): claimPaint.test.tsx, claimPaint.test.tsx, agent-pane-locale.test.ts and 26 more.

CI failed on f9c340f302 (run 40063237020 attempt 1): 4 code, 1 unknown.

Job Verdict Why
web / react-apps-check (3) code a web test failed
web / react-apps-check (1) code a web test failed
web / react-apps-check (2) code a web test failed
web / react-apps-check (4) code a web test failed
web / react-apps-check unknown no known signature; failed step: Check webview test shards

Failures:

  • seen on other PRs claimPaint.test.tsx a pooled Settings page claimed by the host reports its paint once its first screen is in: failed (job)
  • seen on other PRs claimPaint.test.tsx a Settings page loaded fresh reports its first paint once its first screen is in: failed (job)
  • seen on other PRs agent-pane-locale.test.ts agent pane first paint > chromium: under its own meta CSP (cmux-agent://pane), a German app paints G...: failed (job)
  • seen on other PRs agent-pane-locale.test.ts agent pane first paint > chromium: under the page host's CSP header, a German app paints German from...: failed (job)
  • seen on other PRs agent-pane-locale.test.ts agent pane first paint > chromium: a policy without 'self' blocks the pane's scripts, so the checks ...: failed (job)
  • seen on other PRs agent-pane-locale.test.ts agent pane first paint > webkit: under its own meta CSP (cmux-agent://pane), a German app paints Ger...: failed (job)
  • seen on other PRs agent-pane-locale.test.ts agent pane first paint > webkit: under the page host's CSP header, a German app paints German from t...: failed (job)
  • seen on other PRs agent-pane-locale.test.ts agent pane first paint > webkit: a policy without 'self' blocks the pane's scripts, so the checks ab...: failed (job)
  • seen on other PRs agent-history.test.ts agent history > lists every chat, multi-selects, and brings the selection into active sessions: failed (job)
  • seen on other PRs agent-pane-step-rows.test.ts every step is one 26px row on one rhythm, across transcript rows: failed (job)
  • ... 22 more in the job logs
Matched log lines
web / react-apps-check (3): (fail) a pooled Settings page claimed by the host reports its paint once its first screen is in [707.34ms]
web / react-apps-check (1): (fail) agent history > lists every chat, multi-selects, and brings the selection into active sessions [31114.34ms]
web / react-apps-check (2): (fail) by default the running agents sit in the tray above the composer, not in the transcript [1149.04ms]
web / react-apps-check (4): (fail) a chat on an SSH machine > counts its running turn from the prompt and offers no machine switch mid-chat [1626.28ms]

Not re-run automatically: web / react-apps-check (3), web / react-apps-check (1), web / react-apps-check (2), web / react-apps-check (4), 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); no finished base run on 86d1939 to compare; do not merge until green; see lane-rules
red: web / Web status; NEW: green on the base 86d1939; do not merge until green; see lane-rules
red: web / react-apps-check; no finished base run on 86d1939 to compare; do not merge until green; see lane-rules
red: web / react-apps-check (1); no finished base run on 86d1939 to compare; do not merge until green; see lane-rules
red: web / react-apps-check (2); no finished base run on 86d1939 to compare; do not merge until green; see lane-rules
red: web / react-apps-check (3); no finished base run on 86d1939 to compare; do not merge until green; see lane-rules
red: web / react-apps-check (4); no finished base run on 86d1939 to compare; do not merge until green; see lane-rules

Gallery before/after for f9c340f: 16 states rendered, 3 images differ, 882 more touched states not rendered. Images are in the run's artifact, not on this public PR.

gh run download 40063236961 -R manaflow-ai/cmux -n gallery-advisory-24772-f9c340f302e58533a35136aa8c3914462a5b2787 (then read gallery-review.json)

States
State Theme Status Diff Picked by
agent-pane.composer/new-chat Apple System Colors Light unchanged 0% own MarkdownField.tsx
agent-pane.composer/new-chat Apple System Colors unchanged 0% own MarkdownField.tsx
agent-pane.composer/side-session Apple System Colors Light unchanged 0% own MarkdownField.tsx
agent-pane.composer/side-session Apple System Colors unchanged 0% own MarkdownField.tsx
agent-pane.composer/new-chat-suggest-open Apple System Colors Light unchanged 0% own MarkdownField.tsx
agent-pane.composer/new-chat-suggest-open Apple System Colors unchanged 0% own MarkdownField.tsx
agent-pane.composer/new-chat-suggest-failing Apple System Colors Light unchanged 0% own MarkdownField.tsx
agent-pane.composer/new-chat-suggest-failing Apple System Colors unchanged 0% own MarkdownField.tsx
agent-pane.composer/new-chat-suggest-draft Apple System Colors Light unchanged 0% own MarkdownField.tsx
agent-pane.composer/new-chat-suggest-draft Apple System Colors unchanged 0% own MarkdownField.tsx
agent-pane.composer/new-chat-reasoning Apple System Colors Light unchanged 0% own MarkdownField.tsx
agent-pane.composer/new-chat-reasoning Apple System Colors unchanged 0% own MarkdownField.tsx
agent-pane.composer/agent-home Apple System Colors Light unchanged 0% own MarkdownField.tsx
agent-pane.composer/agent-home Apple System Colors unchanged 0% own MarkdownField.tsx
agent-pane.composer/agent-home-path Apple System Colors Light changed 0% own MarkdownField.tsx
agent-pane.composer/agent-home-path Apple System Colors unchanged 0% own MarkdownField.tsx
agent-pane.chat-width/standard Apple System Colors Light unchanged 0% imports MarkdownField.tsx (1 hops)
agent-pane.chat-width/standard Apple System Colors unchanged 0% imports MarkdownField.tsx (1 hops)
agent-pane.chat-width/wide Apple System Colors Light changed 1.53% imports MarkdownField.tsx (1 hops)
agent-pane.chat-width/wide Apple System Colors unchanged 0% imports MarkdownField.tsx (1 hops)
agent-pane.chat-width/wide-blocks Apple System Colors changed 23.4% imports MarkdownField.tsx (1 hops)
agent-pane.chat-width/wide-blocks Apple System Colors Light unchanged 0% imports MarkdownField.tsx (1 hops)
agent-pane.composer-floats/scrolled-to-end Apple System Colors Light unchanged 0% imports MarkdownField.tsx (1 hops)
agent-pane.composer-floats/scrolled-to-end Apple System Colors unchanged 0% imports MarkdownField.tsx (1 hops)
agent-pane.composer-floats/composer-grown Apple System Colors Light unchanged 0% imports MarkdownField.tsx (1 hops)
agent-pane.composer-floats/composer-grown Apple System Colors unchanged 0% imports MarkdownField.tsx (1 hops)
agent-pane.composer-row/claude-auto Apple System Colors Light unchanged 0% imports MarkdownField.tsx (1 hops)
agent-pane.composer-row/claude-auto Apple System Colors unchanged 0% imports MarkdownField.tsx (1 hops)
agent-pane.composer-row/long-model Apple System Colors Light unchanged 0% imports MarkdownField.tsx (1 hops)
agent-pane.composer-row/long-model Apple System Colors unchanged 0% imports MarkdownField.tsx (1 hops)
agent-pane.composer-row/leo-report Apple System Colors Light unchanged 0% imports MarkdownField.tsx (1 hops)
agent-pane.composer-row/leo-report Apple System Colors unchanged 0% imports MarkdownField.tsx (1 hops)

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

@github-actions github-actions Bot added the risk:normal Risk tier (docs/ci/risk-tiers.md) label Oct 24, 2026
@cursor

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

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

@blacksmith-sh

blacksmith-sh Bot commented Oct 24, 2026 •

Copy link
Copy Markdown

Found 192 test failures on Blacksmith runners:

Failures

Test View Logs
---/--- View Logs
---/--- View Logs
---/--- View Logs
---/--- View Logs
---/--- View Logs
---/--- View Logs
---/--- View Logs
---/--- View Logs
---/--- View Logs
---/--- View Logs

...and 182 more test failures. View all on Blacksmith: run 40063237020, run 40063236989

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

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Owned by nx-composer on big-red

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Superseded by the Goldilocks composer-height work in #25281. This stale branch hard-caps at eight lines and removes the existing scroll-edge fade/followScrollEdges that Leo explicitly asked to keep; #25281 adopts the shared twelve-line/40vh cap across chat, New Tab and Cmd-I while preserving the fade.

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