Skip to content

fix(next): let composer content follow the chat font size - #26523

Merged
teamleaderleo merged 8 commits into
feat-cmux-nextfrom
lane/picker-content-font
Oct 28, 2026
Merged

teamleaderleo merged 8 commits into
feat-cmux-nextfrom
lane/picker-content-font

Conversation

@teamleaderleo

@teamleaderleo teamleaderleo commented Oct 28, 2026 •

Copy link
Copy Markdown
Collaborator

Changing Chat Display’s font size now scales the composer’s text, headings and code, New Tab and shell prompts, queued prompts and their editors, and transcript headings and tables. These surfaces previously used fixed type sizes while the conversation body followed the setting.

Leo, word for word: "leo make sure font size everywhere (like text input area) is customizable".

Audit: fixed the rich-text draft and placeholder; inline/fenced code and draft headings; the legacy prompt and New Tab fields; the live New Tab agent, shell and console fields; chat shell mode; queued prompt text and editing; and transcript headings/tables. The regular transcript body, transcript code, and sent-message editor already follow the chat setting. Cmd +/− already changes agentPane.zoom through native whole-pane zoom and scales all webview text, including chrome; that path stays intact. Native Interface Size propagation is separate work in #25703.

Composer controls follow the last content line as its height changes, and the minimum composer height and editor caps scale with that line height. Risk: this changes editor geometry at large text sizes; the browser regression exercises 14, 21 and 28px in both themes and chat, new-chat and real New Tab contexts, plus shell and queued editing.

Gallery: agent-pane.composer/font-size-{chat,new-chat,new-tab}-{14,21,28}.

Validation: 40648556110 at fa4324dc7543ce4d2a3d9d50714cc787536f97f8 passes all 7 browser tests (86 assertions) and the full webview check: formatting, lint, types, static gates and protocol codegen. 40647875413 proves all 7 font cases fail on the base, and all 4 existing alignment tests pass on the identical product source. The test cycles 21 → 14 → 28px; shell mode uses the editor's supported typing API, waits for the shell field to be visible, then checks its computed font size. No sleeps. Design-token/type-scale baselines shrink. No new timer or observer; no native source change or app compile.

No capture: No native app tour was run because this changes webview typography only, with no native source or glass material changes. The real composer and New Tab gallery captures below exercise all changed text contexts in light and dark.

Generated gallery captures at base 0c8336391b32df85bcdd7db7eac2f3f0f82a54d8 and product head 4eb0aca6c57d21ce88c80302cd8605e5315fe544 (product/gallery source unchanged at fa4324dc7543ce4d2a3d9d50714cc787536f97f8).

Chat

Size Light before Light after Dark before Dark after
14px chat light 14px base chat light 14px head chat dark 14px base chat dark 14px head
21px chat light 21px base chat light 21px head chat dark 21px base chat dark 21px head
28px chat light 28px base chat light 28px head chat dark 28px base chat dark 28px head

New Chat

Size Light before Light after Dark before Dark after
14px new-chat light 14px base new-chat light 14px head new-chat dark 14px base new-chat dark 14px head
21px new-chat light 21px base new-chat light 21px head new-chat dark 21px base new-chat dark 21px head
28px new-chat light 28px base new-chat light 28px head new-chat dark 28px base new-chat dark 28px head

New Tab

Size Light before Light after Dark before Dark after
14px new-tab light 14px base new-tab light 14px head new-tab dark 14px base new-tab dark 14px head
21px new-tab light 21px base new-tab light 21px head new-tab dark 21px base new-tab dark 21px head
28px new-tab light 28px base new-tab light 28px head new-tab dark 28px base new-tab dark 28px head

Independent Astra review at fa4324dc7543ce4d2a3d9d50714cc787536f97f8 is pending.

Changelog

Fixed: Composer input, New Tab, shell and queued prompts, and Markdown headings and tables follow the chat font size.

Agent session: agent session

@github-actions

github-actions Bot commented Oct 28, 2026 •

Copy link
Copy Markdown
Contributor

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

Review fa4324d: 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=pr26523 -f ref=lane/picker-content-font -f platform=macos -f backend_mode=local

Probably yours: changes-stage-hunk-keys.test.ts fails here but not on main's latest full suite. Seen on other PRs too (likely flaky): agent-pane-dock-gutters.test.ts, agent-pane-dock-gutters.test.ts, agent-pane-queue-steer.test.ts and 28 more.

CI failed on fa4324dc75 (run 40648503105 attempt 1): 4 code, 1 unknown.

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

Failures:

  • seen on other PRs agent-pane-dock-gutters.test.ts chromium > the gutter beside every part of the stack scrolls the transcript, and the part keeps the ...: failed (job)
  • seen on other PRs agent-pane-dock-gutters.test.ts webkit > the gutter beside every part of the stack scrolls the transcript, and the part keeps the po...: failed (job)
  • seen on other PRs agent-pane-queue-steer.test.ts queued and steering prompts > the queue takes its own place in the stack: nothing is cut off or draw...: failed (job)
  • seen on other PRs changelog-pictures.test.tsx a change's picture opens enlarged on a click, and Close closes it: failed (job)
  • seen on other PRs chat-inspector-overlay-toggle.test.ts chromium: over the chat the Inspector is as tall as its sections, and scrolls when they are taller: failed (job)
  • seen on other PRs chat-inspector-overlay-toggle.test.ts webkit: over the chat the Inspector is as tall as its sections, and scrolls when they are taller: failed (job)
  • seen on other PRs chat-open-perf.test.ts a live row drawn before a slow chat is read shows whole, with no fade after: failed (job)
  • seen on other PRs composer-bottom-space.test.ts chromium: New Tab stage with the template dots: the quiet row stays clear of the dots: failed (job)
  • seen on other PRs layout.test.ts only page.css imports the page's sheets: failed (job)
  • seen on other PRs agent-pane-queue-scroll-bottom.test.ts chromium > a prompt the fold hides, run elsewhere, leaves no room as the stack shrinks, opens and cl...: failed (job)
  • ... 22 more in the job logs
Matched log lines
web / react-apps-base-check (1): (fail) chromium > the gutter beside every part of the stack scrolls the transcript, and the part keeps the pointer [8656.35ms]
web / react-apps-base-check (4): (fail) only page.css imports the page's sheets [26.38ms]
web / react-apps-base-check (3): (fail) no orange or system accent and no opaque glass on the gallery stages [531971.34ms]
web / react-apps-base-check (2): (fail) the summary card lists the chat's background tasks: running ones first, the finished folded [985.07ms]

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

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

gh run download 40649058950 -R manaflow-ai/cmux -n gallery-advisory-26523-fa4324dc7543ce4d2a3d9d50714cc787536f97f8 (then read gallery-review.json)

States
State Theme Status Diff Picked by
agent-pane.add-project-panel/environment Apple System Colors Light unchanged 0% own styles.css
agent-pane.add-project-panel/environment Apple System Colors unchanged 0% own styles.css
agent-pane.add-project-panel/sources Apple System Colors Light unchanged 0% own styles.css
agent-pane.add-project-panel/sources Apple System Colors unchanged 0% own styles.css
agent-pane.add-project-panel/directory Apple System Colors Light unchanged 0% own styles.css
agent-pane.add-project-panel/directory Apple System Colors unchanged 0% own styles.css
agent-pane.add-project-panel/keyboard Apple System Colors Light unchanged 0% own styles.css
agent-pane.add-project-panel/keyboard Apple System Colors unchanged 0% own styles.css
agent-pane.changes-file-menu/closed Apple System Colors Light unchanged 0% own styles.css
agent-pane.changes-file-menu/closed Apple System Colors unchanged 0% own styles.css
agent-pane.changes-file-menu/open Apple System Colors Light unchanged 0% own styles.css
agent-pane.changes-file-menu/open Apple System Colors unchanged 0% own styles.css
agent-pane.changes-file-menu/keyboard Apple System Colors Light unchanged 0% own styles.css
agent-pane.changes-file-menu/keyboard Apple System Colors unchanged 0% own styles.css
agent-pane.changes-git-actions/toolbar Apple System Colors Light unchanged 0% own styles.css
agent-pane.changes-git-actions/toolbar Apple System Colors unchanged 0% own styles.css
agent-pane.changes-git-actions/commit-form Apple System Colors Light unchanged 0% own styles.css
agent-pane.changes-git-actions/commit-form Apple System Colors unchanged 0% own styles.css
agent-pane.changes-git-actions/include-new Apple System Colors Light unchanged 0% own styles.css
agent-pane.changes-git-actions/include-new Apple System Colors unchanged 0% own styles.css
agent-pane.changes-git-actions/keyboard Apple System Colors Light unchanged 0% own styles.css
agent-pane.changes-git-actions/keyboard Apple System Colors unchanged 0% own styles.css
agent-pane.changes-git-actions/busy Apple System Colors Light unchanged 0% own styles.css
agent-pane.changes-git-actions/busy Apple System Colors unchanged 0% own styles.css
agent-pane.changes-git-actions/push-refused Apple System Colors Light unchanged 0% own styles.css
agent-pane.changes-git-actions/push-refused Apple System Colors unchanged 0% own styles.css
agent-pane.changes-options-menu/closed Apple System Colors Light unchanged 0% own styles.css
agent-pane.changes-options-menu/closed Apple System Colors unchanged 0% own styles.css
agent-pane.changes-options-menu/open Apple System Colors Light unchanged 0% own styles.css
agent-pane.changes-options-menu/open Apple System Colors unchanged 0% own styles.css
agent-pane.changes-options-menu/keyboard Apple System Colors Light unchanged 0% own styles.css
agent-pane.changes-options-menu/keyboard Apple System Colors unchanged 0% own styles.css

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

Copy link
Copy Markdown
Collaborator Author

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

@blacksmith-sh

blacksmith-sh Bot commented Oct 28, 2026 •

Copy link
Copy Markdown

Found 162 test failures on Blacksmith runners:

Failures

Test View Logs
src/pages/settings/layout.test.ts/layout.test View Logs
src/pages/settings/layout.test.ts/layout.test View Logs
test/accent-glass-invariants.test.ts/accent-glass-invariants.test View Logs
test/accent-glass-invariants.test.ts/accent-glass-invariants.test View Logs
test/agent-pane-agents-pill.test.ts/agent-pane-agents-pill.test View Logs
test/agent-pane-agents-pill.test.ts/agent-pane-agents-pill.test View Logs
test/agent-pane-background-tasks.test.ts/agent-pane-background-tasks.test View Logs
test/agent-pane-background-tasks.test.ts/agent-pane-background-tasks.test View Logs
test/agent-pane-chat-unavailable.test.ts/agent-pane-chat-unavailable.test View Logs
test/agent-pane-chat-unavailable.test.ts/agent-pane-chat-unavailable.test View Logs

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

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 high, next-review): SHIP at 674c1b2

No blocking findings.

@teamleaderleo
teamleaderleo merged commit 35e4e8e into feat-cmux-next Oct 28, 2026
181 of 214 checks passed
@teamleaderleo
teamleaderleo deleted the lane/picker-content-font branch October 28, 2026 08:17
lawrencecchen added a commit that referenced this pull request Oct 28, 2026
…t out the queue's height move in tests

#26523 made a queued prompt's line follow the chat font (22.75px at 14px), but
the row's actions kept a -2px margin sized for the old 18px line, so they sat
2.4px off the text's centre. The actions now take the line's height.

#24718 eases the queue's fitted max-height on the move token. The whole-row
checks in agent-pane-queue-collapse and agent-pane-queue-steer measured one or
two frames after the list re-fit, mid-transition, and saw rows cut by the
still-moving edge. They now wait for the list to settle first. The steer
one-line check reads the line height from CSS instead of a fixed 18px.
lawrencecchen added a commit that referenced this pull request Oct 28, 2026
… scrollbar holds still

#26523 made a composer line follow the chat font (22.75px at 14px). The lift
that draws the rows up with a growing composer was rounded to whole pixels, so
the room under the rows (dock space less the lift) changed by a fraction on
every line. That moved the content's rounded scrollHeight and the followed
offset by 1px (agent-pane-scrollbar-full-height: top 5129 to 5128, height 5801
to 5800 to 5801). The lift is now the growth exactly; only its cap is rounded.
lawrencecchen added a commit that referenced this pull request Oct 28, 2026
…ontent-sized menus

- composer-edges: #24593 gave the glass card its light rim, a top and a bottom
  line with no spread. The test counted those as edges, and read their
  color(srgb … / 0) alpha as 1, so borders none looked like two edges left.
  It now reads color() alphas and counts the ring (an inset layer with a
  spread) as the edge.
- composer-type-scale: the queued prompts (#26523) and the model picker's menu
  (#26071, "match composer text size") follow the chat font size
  (--text-content) on purpose, as the prompt does; the test now lets those
  surfaces use it.
lawrencecchen added a commit that referenced this pull request Oct 28, 2026
…rue end

With the chat font's fractional line heights (#26523) the transcript's end is
fractional. WebKit floors a fractional scrollTop but rounds scrollHeight, so
the end as written rested 1px short (agent-pane-jump-latest-motion webkit:
fromEnd 1 after Jump to latest). settleFollowBottom now writes the end rounded
up, which the browser clamps to its own end, and skips the write once the
scroller is already there.

test(webviews): the jump test reads the last row where it lays out. A row that
arrives live rises 4px into place (cv-enter's translate, #20003). That is drawn
only and never moves layout, and the turn footer arriving as the glide lands
read as a row under the card.
lawrencecchen added a commit that referenced this pull request Oct 28, 2026
…h's column

composer-alignment-centers (2026-10-27) put the + glyph's center 22 px in from
the box (an 8 px grid inset, a 28 px button), replacing Claude desktop's 16 px
inset of 2026-10-20; the New Tab's + is an 18 px glyph in a 28 px button 18 px
in since #25125. The plain and tray top strips still put their first ink on the
old 16 / 18 px content edge: --acpmux-top-strip-edge is now 14 px in the chat's
card and 23 px in the New Tab's, the + glyph's box.

- composer-row-rhythm checks the + glyph's and the last control's centers 22 px
  in, not the 16 px glyph inset and a bottom gap equal to the side gap (the
  bottom now centers on the prompt's last line, which follows the chat font
  size since #26523).
- composer-top-strip-variants measures the New Tab strip on the Default
  template with Claude's quiet row: since #24519 every other template with the
  plain footer draws the strip in the quiet row, not over the box.
@github-actions

github-actions Bot commented Oct 28, 2026 •

Copy link
Copy Markdown
Contributor

This branch was previously deployed

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