Skip to content

cx-5dvig: sidebar update cards fit, share the composer's surface; popup adds only the rest, no arrow - #20297

Merged
teamleaderleo merged 6 commits into
feat-cmux-nextfrom
feat-cmux-next-update-card
Oct 13, 2026
Merged

teamleaderleo merged 6 commits into
feat-cmux-nextfrom
feat-cmux-next-update-card

Conversation

@teamleaderleo

@teamleaderleo teamleaderleo commented Oct 13, 2026 •

Copy link
Copy Markdown
Collaborator

Leo reported (10-13, nightly, cosmic-gray) problems with the sidebar's update cards. The Update Ready popover had AppKit's stock NSPopover arrow, unstyled against the theme. The card's version line truncated at the default sidebar width ("1.0.0 nightly 3845050 · Oct 13, 2..."). The card and popover repeated the same facts: the version, the date, and See all changes twice. A second report followed: the "Updated to" card was opaque over the wallpaper, unlike the composer. Its version truncated, its fallback sentence wrapped awkwardly, and "Share cmux" was a bare text link with no affordance.

What changed

  • Update Ready card: Update Ready, a short version and date ("nightly 3845050 · Oct 13"), the Automatic Updates checkbox and Restart to Update. The changelog lines and See all changes leave the card. The short line drops the "1.0.0" every nightly shares and the year. A release keeps its version ("1.0.1 · Oct 13").
  • Popover: shows only what the card lacks: the full build ("1.0.0-nightly.3845050428001"), the highlights, and See all changes once. The "is ready" headline and the date are gone, since the card has both.
  • Arrow: the popover is now the themed popup every cmux popover uses (Glass.makeOverlayPanel in PopupStyle), beside the card and top-aligned with it, with no arrow. It takes clicks, never becomes key, and keeps its hover rules.
    • It opens to the right of the card, or to the left when there is no room on the right. It never covers the card.
    • It closes when the app goes inactive, so it never comes back stuck open on reactivation.
  • One card surface: every sidebar card now sits on the composer's surface: the theme's text at 13% over whatever is behind (the wallpaper on a wallpaper theme), a 0.5 pt edge at 18%, no shadow. This covers Update Ready, the notice and tip cards (they were Liquid Glass under a veil) and the web "Updated to" card (it was an opaque elevated fill). Under Reduce Transparency all of them draw opaque and follow the setting live. The cards keep a 12 pt radius, as the composer-styled dictation notice does.
    • Native: a new CardSurfaceView in CmuxNextDesign, registered with ReduceTransparency like OverlaySurfaceView.
    • Web: .wn-card uses the composer's color-mix formula.
  • Updated card: "Updated to nightly 3845050" (the short form, matching the native card). With no listed highlights it reads "What's new in this build". The Share cmux text link is gone, along with its page op, sidebar intent and string. Share cmux stays in the palette and the Help menu (app.shareCmux).
  • Accessibility: the popover opens on hover only, so "See all changes" stays on the card as a VoiceOver action of Restart to Update.
  • Strings: adds updates.card.whatsNewInBuild in all 21 locales. Removes updates.card.share, updates.card.noHighlights and the updater's updater.updated.share. Generated page strings regenerated (node scripts/pages/gen-strings.mjs changelog).

Update check and install behavior is unchanged. I told the lane changing it (cx-nightly-release-xhigh) which files this touches.

Tests

  • Tests/CmuxNextAppTests/UpdateReadyCardLayoutTests.swift stages an update the way debug.updater stage does, then reads the card off a sidebar at Metrics.sidebarWidth. It checks:
    • every text fits its frame;
    • the card has no See all changes, and "See all changes" is its accessibility action;
    • the popup is a visible child window beside the card, top-aligned and the page's height, with no NSPopover.
    • Red on 302d10d (10 issues: the version line needs 189 pt and has 184.5 pt, the card shows "See all changes", an _NSPopoverWindow shows, the popup covers the card). Green on 5d16494 and on 4d6b96c.
  • Tests/CmuxNextAppTests/SidebarCardSurfaceTests.swift draws the Update Ready card and a tip card in a themed window and reads each card's backmost full-size fill against the composer's (the theme's text at 13%).
    • Red on 8231590: the Update Ready fill is 0.87 too opaque (the elevated fill), and the tip card's is 0.19 off (the glass veil).
    • Green on 4d6b96c: Suite SidebarCardSurfaceTests passed.
  • webviews/test/update-ready-popover.test.tsx checks the popover (full build, highlights, no "is ready", no date, See all changes once) and the Updated card ("Updated to nightly 3845050", "What's new in this build", only Close and See What's New buttons).
    • Red on 302d10d for the popover (Received: "1.0.0-nightly.3845050428001 is ready") and on 8231590 for the card (Received: "Updated to 1.0.0-nightly.3845050428001"). Green on 4d6b96c.
  • The fleet suite steps exit 1 only on DaemonCapabilityExportTests, which fails on base too.
  • Release compile: green on 4d6b96c.
  • Gallery: pages.changelog.update-surfaces has the Updated card and the popover on a plain page and on a wallpaper backdrop (card, card-wallpaper, card-no-highlights, card-no-highlights-wallpaper, popover, popover-wallpaper), each in light and dark. The native Update Ready and tip cards are covered by SidebarCardSurfaceTests.

Changelog

  • Changed: sidebar cards (Update Ready, Updated to, tips) share the composer's translucent surface. The Update Ready card shows a short version and date that fit, and its popover adds only the full build, the highlights and See all changes, in the app's themed popup with no arrow. The Updated card is terse and drops the Share cmux link (Share cmux stays in the palette).

🤖 Generated with Claude Code

@coderabbitai

coderabbitai Bot commented Oct 13, 2026 •

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration
  • Configuration used: Repository: manaflow-ai/cmux/.coderabbit.yaml
  • Review profile: ASSERTIVE
  • Plan: Advanced
  • Run ID: 4ea186d4-3d29-4302-8190-41d67d9ca07b

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@teamleaderleo
teamleaderleo force-pushed the feat-cmux-next-update-card branch from 0febccc to e612785 Compare October 13, 2026 21:49
@github-actions

github-actions Bot commented Oct 13, 2026 •

Copy link
Copy Markdown
Contributor

all web/size checks green

@github-actions

github-actions Bot commented Oct 13, 2026 •

Copy link
Copy Markdown
Contributor

Not verified: macOS jobs did not run: compile and app tests were skipped on 32de386c44; ci-status is green without them.

CI passes on 32de386c44 (run 38484577246 attempt 1).
macOS jobs did not run: compile and app tests were skipped: Fast static checks skipped (the macos job needs both to succeed). Re-run CI once they pass, before merging.

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.

@github-actions

github-actions Bot commented Oct 13, 2026 •

Copy link
Copy Markdown
Contributor

CI fast guards passes on 32de386c44 (https://github.com/manaflow-ai/cmux/actions/runs/38484577246). This covers only the fast guards, not CI: CI's result is the ci-status check, and the CI failure attribution comment names any failing test.

teamleaderleo and others added 3 commits October 13, 2026 14:53
…up adds only what it lacks (cx-5dvig)

Leo 2026-10-13: at the default sidebar width the card's version line
truncated (1.0.0 nightly 3845050 · Oct 13, 2...), the card and its popup
both had See all changes and the version and date, and the popup was
AppKit's NSPopover with its stock arrow.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…the rest, themed, no arrow (cx-5dvig)

Leo 2026-10-13. The card: Update Ready, the short version and date
("nightly 3845050 · Oct 13", whole at the default sidebar width),
Automatic Updates and Restart to Update. The popup: the full build, the
highlights and See all changes, once; no "is ready" and no date (the
card has both). The popup is the themed popup every cmux popover is (the
solid popup surface with its hairline and shadow, beside the card,
top-aligned), not AppKit's NSPopover with its stock arrow.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…or VoiceOver (cx-5dvig)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@teamleaderleo
teamleaderleo force-pushed the feat-cmux-next-update-card branch from e612785 to 5d16494 Compare October 13, 2026 21:56
@github-actions

github-actions Bot commented Oct 13, 2026 •

Copy link
Copy Markdown
Contributor

Gallery

Review in feed

59 states changed: pages.changelog.update-surfaces/card, pages.changelog.update-surfaces/card-long-title, pages.changelog.update-surfaces/card-one-change, pages.changelog.update-surfaces/card-no-highlights, pages.changelog.update-surfaces/popover, ... · 24 new states · 15 broken states

Diff page and renders (the run's gallery-pr artifact)

State Before · after
pages.changelog.update-surfaces/card (Apple System Colors Light, chromium)
pages.changelog.update-surfaces/card-long-title (Apple System Colors Light, chromium)
pages.changelog.update-surfaces/card (Apple System Colors Light, webkit)
pages.changelog.update-surfaces/card-long-title (Apple System Colors Light, webkit)
pages.changelog.update-surfaces/card-one-change (Apple System Colors Light, chromium)
pages.changelog.update-surfaces/card-one-change (Apple System Colors Light, webkit)

53 more on the diff page.

Live preview (follows this branch; start it with scripts/gallery-live.sh up <branch> from an hq checkout):

  • pages.changelog.update-surfaces/card: /wt/feat-cmux-next-update-card/?entry=pages.changelog.update-surfaces#/pages.changelog.update-surfaces/card
  • pages.changelog.update-surfaces/card-long-title: /wt/feat-cmux-next-update-card/?entry=pages.changelog.update-surfaces#/pages.changelog.update-surfaces/card-long-title
  • pages.changelog.update-surfaces/card-one-change: /wt/feat-cmux-next-update-card/?entry=pages.changelog.update-surfaces#/pages.changelog.update-surfaces/card-one-change
  • pages.changelog.update-surfaces/card-no-highlights: /wt/feat-cmux-next-update-card/?entry=pages.changelog.update-surfaces#/pages.changelog.update-surfaces/card-no-highlights
  • pages.changelog.update-surfaces/popover: /wt/feat-cmux-next-update-card/?entry=pages.changelog.update-surfaces#/pages.changelog.update-surfaces/popover
  • pages.diff/deleted: /wt/feat-cmux-next-update-card/?entry=pages.diff#/pages.diff/deleted
  • 7 more on the diff page

8 nondeterministic states differed from a second render of the same head (a clock or fixture leak) and are not counted as changes.

238 unchanged · base 737df09 · head 32de386

@teamleaderleo
teamleaderleo force-pushed the feat-cmux-next-update-card branch from 5ffe743 to c891e57 Compare October 13, 2026 22:32
teamleaderleo and others added 2 commits October 13, 2026 15:46
Red: the Update Ready card draws an opaque elevated fill, the notice card
Liquid Glass; the Updated card says "Updated to 1.0.0-nightly.3845050428001"
and has a Share cmux text link.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Every sidebar card (Update Ready, notices and tips) now sits on
CardSurfaceView, the agent composer's surface: the theme's text at 13% over
the wallpaper with an 18% 0.5 pt edge, opaque under Reduce Transparency. The
web Updated card draws the same. It names the short build ("Updated to
nightly 3845050"), falls back to "What's new in this build", and drops the
Share cmux text link (Share cmux stays in the palette). Gallery shows the
card and popup on a plain page and on a wallpaper.

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

Card surfaces register with ReduceTransparency, so toggling it redraws
them at once, as OverlaySurfaceView does.
@teamleaderleo
teamleaderleo force-pushed the feat-cmux-next-update-card branch from c891e57 to 4d6b96c Compare October 13, 2026 22:46
@teamleaderleo teamleaderleo changed the title cx-5dvig: Update Ready card fits the sidebar; its popup adds only the rest, themed, no arrow cx-5dvig: sidebar update cards fit, share the composer's surface; popup adds only the rest, no arrow Oct 13, 2026
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@teamleaderleo
teamleaderleo merged commit d6f0566 into feat-cmux-next Oct 13, 2026
111 of 113 checks passed
@teamleaderleo
teamleaderleo deleted the feat-cmux-next-update-card branch October 13, 2026 23:52
teamleaderleo added a commit that referenced this pull request Oct 20, 2026
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
teamleaderleo added a commit that referenced this pull request Oct 20, 2026
…reds (#22118)

* fix(next): clear the webviews type-scale and text-focus base reds

- syncMotion.gallery.css (c611de1) set three raw font sizes; they use the
  type scale tokens (body, heading, title).
- CookieImportConsentPanel (60807d3) made a selectable label without
  focusRingType = .none.

Both checks (bun run check:type-scale, check:text-focus) fail at the
feat-cmux-next tip and pass here.

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

* style(webviews): format settings icons.tsx (vp fmt base red from 91424a7)

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

* fix(next): clear the webviews theme-colors, elevation, ui-rules and system-blue base reds

- theme-colors: the markdown.theme paper colors (bb58f0f) are fixed by
  design and marked theme-fixed; prototypes/ is skipped as the comment says
  (the pattern only matched a prototype/ folder).
- subtle-elevation: the subagents prototype sheet casts --elevation-2.
- ui-rules: the code editor's keydown listener only reads Monaco's chord
  state (91424a7), marked ui-allow.
- check-system-blue: the cookie consent panel's requester link uses
  Palette.accent, not .controlAccentColor (60807d3).

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

* fix(next): re-resolve the cookie consent requester tint in the theme hook

Review of #22118: reading Palette.accent once at build time froze the
tint across theme changes (check-theme-scope rule 1). ThemeChangeView
runs the hook on window attach and on appearance change.

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

* test(webviews): warm the older-rows-fade dev server before the first load

check:browser-lanes has been red on feat-cmux-next since 4b5c7ad
(#20633): the new test starts an in-process Vite server without warming
it, so its first page.goto pays for the cold module graph.

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

* fix(webviews): clear the sync-motion lint warnings that fail vp check

react-apps-check has been red on feat-cmux-next since c611de1
(sync motion): vp check fails on warnings, and syncMotion.ts used
new Array(n) while useSyncListMotion's exhaustive-deps suppression sat
on the useMemo call instead of the dependency array it reports on.
Same behavior; bun run check passes on Huge Blue.

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

* fix(next): clear the webviews test reds the lint red hid

With check:browser-lanes green, react-apps-check runs the suites and shows
reds that were already on feat-cmux-next:

- settings categories: two Settings layouts both placed the Markdown Viewer
  group (General beside Diff Viewer, and Code Editor), and Agent Input
  (browser.showAgentCursor) had no home. Markdown Viewer stays in General;
  Agent Input joins Browser after Bookmarks (Swift layout and export).
- settings editors: editor.rulers is the first page-visible number_list row.
  The page now draws a number token field (in range, Return or comma adds).
- tooltip contrast: #21785 dropped the pages' fallback tint to 60% (the floor);
  the host sends the per-theme tint (about 0.7 dark). The test draws with the
  host's tint, computed as TooltipSurface.tintAlpha does.
- static status loops: the agent notice's harness spinner had no Static rule.
- composer plain footer / mode keys: plain is the default since #22050; the
  tests turn it off where they check the chip look.
- hairline rims: the four raw 0.5px rims in files this PR touches use
  var(--cmux-hairline).
- markdown wide tables: gfm leaves out columnResizing, so no table ever had the
  .tableWrapper the scroll CSS targets; the editor installs TableView itself.

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

* fix(next): wide markdown tables scroll sideways on the first wheel step

The TableView wrapper is the scroller, and scrollers.ts marks a scrolling
element with data-cmux-scrolling. ProseMirror read that attribute change on
the table node view's dom as an edit and redrew the table, resetting
scrollLeft to 0, so a sideways wheel never moved it. The table view now
ignores attribute changes on its wrapper. The code-line test scrolls the code
block into view first: it sits below the 14-column table.

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

* style(webviews): vp fmt the #20297 update-card files (base fmt red)

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

* chore(next): PR autofix at 62a0f5b

- regenerated schemas/settings-export/settings-schema.sources.sha256
- regenerated cmux-tui/crates/cmux-app-host/generated/scopes.json

Autofix-Run: https://github.com/manaflow-ai/cmux/actions/runs/39348548509

* fix(webviews): clear the markdown WidthField lint warnings that fail vp check (base red from 7d0f57d)

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

---------

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant