Skip to content

cmux NEXT: minimap rail and Apps chips keep the shared scroller (fixes the check-scrollbars base red) - #23285

Merged
teamleaderleo merged 1 commit into
feat-cmux-nextfrom
cmux/minimap-shared-scroller
Oct 21, 2026
Merged

teamleaderleo merged 1 commit into
feat-cmux-nextfrom
cmux/minimap-shared-scroller

Conversation

@teamleaderleo

@teamleaderleo teamleaderleo commented Oct 21, 2026 •

Copy link
Copy Markdown
Collaborator

cmux-next checks fails on feat-cmux-next at check-scrollbars: 13 hits over its ceiling of 10. Three are web rules hiding a scrollbar, which SCROLLBARS-THIN forbids (scrollbar-width and ::-webkit-scrollbar turn WebKit's overlay scroller into a custom one):

Both now keep the shared thin overlay scroller, hidden until the user scrolls. The minimap keeps its edge fades and overscroll-behavior: contain. Removing only the minimap's two would leave 11, still over the ceiling, so the chips line goes too. The check is now at 10 (warnings only; the rest are Swift ratchet debt).

Tests

  • SCROLLBARS_WARN_MAX=10 scripts/cmux-next/check-scrollbars.sh on this branch: passes (10 warnings), and on feat-cmux-next it fails (13 hits).
  • No test or gallery asserts these scrollbars are hidden.

No capture: webview CSS only; a scroller that shows only while scrolling, no change at rest.

Agent session: cosmic-gray

🤖 Generated with Claude Code


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


Summary by cubic

Fixes the cmux-next check-scrollbars failure (13 hits over its ceiling of 10) by stopping the minimap rail and Apps Discover chips from hiding their scrollbars.

Both hid them with scrollbar-width: none and, for the minimap, ::-webkit-scrollbar { display: none } — rules that turn WebKit's overlay scroller into a custom one, which SCROLLBARS-THIN forbids. They now keep the shared thin overlay scroller, hidden until the user scrolls, so there's no visual change at rest. The minimap keeps its edge fades and overscroll-behavior: contain; the check drops to 10 warnings.

Tests

  • SCROLLBARS_WARN_MAX=10 scripts/cmux-next/check-scrollbars.sh passes on this branch and fails on feat-cmux-next (13 hits).
  • No test or gallery asserts these scrollbars are hidden.

Written for commit 3ca83c7. Summary will update on new commits.

View guided diff Turn on auto-fix

check-scrollbars (SCROLLBARS-THIN) fails cmux-next checks on
feat-cmux-next: the thread minimap's list (#22879) and the Apps Discover
chips hid their scrollbars with scrollbar-width and ::-webkit-scrollbar,
which turn WebKit's overlay scroller into a custom one. They now keep the
shared thin overlay scroller, hidden until the user scrolls. That takes the
check from 13 hits to 10, back under its ceiling.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15d18-aabc-7850-af29-f0655b1d2a1a&host=cosmic-gray
@teamleaderleo teamleaderleo added the risk:low Risk tier (docs/ci/risk-tiers.md) label Oct 21, 2026
@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Owned by subsession-visibility-2 on cosmic-gray · session

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Review (independent Claude subagent, subsession-visibility-2): SHIP at 3ca83c7

check-scrollbars passes (10 Swift ratchet-debt warnings, no hard failure). Both pages install the shared scroller CSS (pages/shared/desktop → installScrollers), so the rule removal is the fix the check asks for, not an exception. No test, gallery or snapshot depends on the hidden scrollbars (headless Chromium hides scrollbars anyway).

Follow-up, not blocking: with macOS "Show scroll bars: Always", a compact minimap rail that overflows draws an 8px legacy scroller over the right end of its 36px ticks, covering the bookmark dot's hit area. Overlay mode (the default) is unaffected. A follow-up can widen the rail by --cmux-scroller-size under data-scrollers="legacy".

Agent session: cosmic-gray

@blacksmith-sh

blacksmith-sh Bot commented Oct 21, 2026 •

Copy link
Copy Markdown

Found 15 test failures on Blacksmith runners:

Failures

Test View Logs
/tmp/tmpmgeutcnb/summary-fail.json (live):/summary-fail.json (live): View Logs
/tmp/tmpyjq5x2nt/summary-missing.json (live):/summary-missing.json (live): View Logs
convention violations found (ERROR lines above)./
convention violations found (ERROR lines above).
View Logs
test/agent-pane-math.test.tsx/agent-pane-math.test.tsx View Logs
test/agent-pane-math.test.tsx/agent-pane-math.test.tsx View Logs
test/agent-pane-scrollbar-full-height.test.ts/agent-pane-scrollbar-full-height.test View Logs
test/agent-pane-scrollbar-full-height.test.ts/agent-pane-scrollbar-full-height.test View Logs
test/home-composer-menu.test.tsx/home-composer-menu.test.tsx View Logs
test/home-composer-menu.test.tsx/home-composer-menu.test.tsx View Logs
test/home-quote-selection.test.tsx/home-quote-selection.test.tsx View Logs

...and 5 more test failures. View all on Blacksmith: run 39580790764, run 39580781911

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

@github-actions

github-actions Bot commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

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

Unclear: web / react-apps-check (3) failed: no known signature; failed step: Test webviews. This PR merged before its CI finished: fix forward on main.

CI failed on 3ca83c7a27 (run 39580790764 attempt 1): 2 code, 2 unknown.

Job Verdict Why
web / react-apps-check (3) unknown no known signature; failed step: Test webviews
web / react-apps-check (1) code a Python test failed
web / react-apps-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 gallery-coverage.test.ts gallery coverage > the entries are valid: failed (job)
  • seen on other PRs agent-pane-scrollbar-full-height.test.ts a composer that grows and shrinks leaves the rows a reader reads where they were on every frame: failed (job)
  • seen on other PRs agent-pane-scrollbar-full-height.test.ts a composer that grows and shrinks keeps a followed view at its end on every frame: failed (job)
  • seen on other PRs agent-pane-math.test.tsx each delimiter typesets once math appears: failed (job)
  • seen on other PRs pane-english.test.ts agent pane strings > no user-visible English is written in the pane's sources: failed (job)
Matched log lines
web / react-apps-check (1): FAIL: test_coverage_base_gap_warns_on_a_pr_changing_the_gallery_format (__main__.ScopedChecksTests.test_coverage_base_gap_warns_on_a_pr_changing_the_gallery_format)
web / react-apps-check (2): (fail) each delimiter typesets once math appears [71.81ms]

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

CI fast guards failed on 3ca83c7a27 (https://github.com/manaflow-ai/cmux/actions/runs/39580782047). It does not block the merge; a red guard merged into main breaks it for every open PR.
The log named no failed step; see the run.

Agents: python3 scripts/ci/guard_attribution.py fix applies the mechanical fixes locally.

Tour of 3ca83c7a27 (run): no media. The tour did not run: only webview code changed (2 path(s)), which the gallery advisory run checks in Linux Chromium on the pull request (its artifact holds any captures); add the media-tour-mac label to tour it on a Mac.

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

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

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

codex-review: SHIP at 3ca83c7

  • Reviewed the current diff, focused tests, and affected call paths; no correctness bug found.

@teamleaderleo
teamleaderleo merged commit a404630 into feat-cmux-next Oct 21, 2026
@teamleaderleo
teamleaderleo deleted the cmux/minimap-shared-scroller branch October 21, 2026 10:20
@github-actions

github-actions Bot commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

teamleaderleo added a commit that referenced this pull request Oct 21, 2026
…e left edge) (#23735)

* test(webviews): the agent chat ships with no thread minimap (red)

The default arm of thread-minimap-layout is full since #22784, so every
agent chat draws the full-height ScrollMap (a dash per message and a view
box) down the transcript's left edge, and the compact rail's list shows a
second scroller since #23285. These tests fail until the default is off
and the list stops scrolling on its own.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a16027-a80b-79c0-ab31-500e58883d27&host=cosmic-gray

* fix(webviews): the agent chat draws no thread minimap by default

Leo on the nightly (2026-10-21): a column of dashes and a thumb box down
the left edge of the chat, and a second scroller. That is the full-height
ScrollMap, the default arm since #22784 (lit band #22879), and the compact
rail's own list, which shows a scroller since #23285 dropped its hiding.

- thread-minimap-layout gets an off arm, and off is the default: no map,
  no rail, nothing at the left edge. Previous and Next Turn and the
  bookmarked-prompt steps still work. full and compact stay selectable
  from cmux.experiments for dogfood.
- The compact rail's list is overflow: hidden: it still scrolls from
  script and focus (band follow, scrub, Tab) but never draws a scroller,
  so the transcript keeps its one shared thin scroller (SCROLLBARS-THIN).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a16027-a80b-79c0-ab31-500e58883d27&host=cosmic-gray

* style(webviews): format the minimap experiment and its test

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

risk:low Risk tier (docs/ci/risk-tiers.md)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant