Skip to content

cmux NEXT: cancel the update download; text left, a bigger cancel on the right, vertically centred - #29653

Merged
teamleaderleo merged 2 commits into
feat-cmux-nextfrom
fix/update-card-cancel
Oct 31, 2026
Merged

teamleaderleo merged 2 commits into
feat-cmux-nextfrom
fix/update-card-cancel

Conversation

@teamleaderleo

@teamleaderleo teamleaderleo commented Oct 31, 2026 •

Copy link
Copy Markdown
Collaborator

Leo (2026-10-31): "AND WHY CAN'T I CANCEL THE DOWNLOAD OPTIONALLY AND WHY IS THE SYMBOL SO FING SMALL THIS IS STUFF ASS SPACING WHY NOT JUST LEFT ALIGN THE TEXT PUT A BIGGER SYMBOL ON THE RIGHT" / "I SHOULDN'T HAVE TO SAY THIS, EVER:" / "ALSO CENTER THE FING BUTTON ON THE RIGHT VERTICALLY"

What changes

The sidebar's update notice card (SidebarNoticeCardView, fed by SidebarCardFeed.notice):

  • Text left. Update status cards drop the small leading glyph and the leading spinner. The title, detail and progress bar all start at the card's padding (Metrics.space3).
  • Bigger control on the right, vertically centred. A running download shows a cancel (xmark.circle.fill, 18 pt glyph in a 28 pt hit square, both from Metrics.space*) on the card's right padding, centred on the card's height. The text and the bar stop space4 short of it. The new SidebarNoticeCard.trailing drives it, so other notice cards (tip, announcements, Tidy Up) are unchanged.
  • Cancellable download. UpdateCardAction.cancelDownload calls Sparkle's download cancellation (UpdateState.Downloading.cancel, the SPUUserDriver showDownloadInitiated(cancellation:) callback), which stops the transfer and removes the partial file. The card then goes back to the found update ("Update Available", with Update / Release Notes / Hide). Update checks again and downloads what that check finds. Hide clears the card. Any later Sparkle move clears the cancelled card.

Spec: leo-workspace design/sidebar.md gains the rule "status cards: text left, primary control right and vertically centred; long operations are cancellable".

Tests

UpdateDownloadCancelTests (new):

  • the downloading card has a cancel and no leading glyph; checking and unpacking have no cancel
  • the title starts at the padding; the cancel is ≥ 24 pt, on the right padding and vertically centred; pressing it sends cancel_download
  • cancel stops the download, the card returns to the found update with Update, a second cancel does nothing, and Update checks again and downloads once
  • an Update click whose check ends empty never downloads a later scheduled update
  • a new check ends the cancelled card

Fleet: cmux-ci compile-check --app passed; the touched suites (UpdateDownloadCancel, UpdateLoadingIndicator, UpdateCheckFeedback, SidebarNoticeCardClose/Switch, ThemedSpinnerAndSegments, UpdateFeedCard, SidebarCardTransition) were run with package-test-lane.sh at the head.

Risk: low. The change covers only the update status card's layout and a new cancel path. The other notice cards get trailing == nil and keep their layout.

Follow-ups (from review): after a cancel, the found-update card no longer claims the slot over Now Playing (userAsked is false); the cancelled card's Remind-me-later options clear it without recording a snooze.

🤖 Generated with Claude Code

Agent session: agent session


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


Summary by cubic

Makes the sidebar's update status card cancellable and reworks its layout: text is left-aligned at the card's padding, and a running download shows a larger, vertically centered cancel button on the right.

  • The cancel stops Sparkle's transfer and deletes the partial file; the card returns to the found update, whose Update checks again and downloads what it finds.
  • A cancel after the download already finished does nothing; Hide clears the cancelled card, and any later Sparkle move ends it.
  • Other notice cards (tips, announcements, Tidy Up) keep their current layout.

Written for commit 54e78ff. Summary will update on new commits.

View guided diff Turn on auto-fix

teamleaderleo and others added 2 commits October 31, 2026 13:14
…gger cancel on the right, vertically centred

Leo (2026-10-31): "AND WHY CAN'T I CANCEL THE DOWNLOAD OPTIONALLY AND WHY IS THE SYMBOL SO
FUCKING SMALL THIS IS SHIT ASS SPACING WHY NOT JUST LEFT ALIGN THE TEXT PUT A BIGGER SYMBOL ON
THE RIGHT" / "ALSO CENTER THE FUCKING BUTTON ON THE RIGHT VERTICALLY".

- The update status card drops its small leading glyph and leading spinner: the text and the
  progress bar start at the card's padding.
- A running download shows a 28 pt cancel (xmark.circle.fill) on the right, vertically centred
  in the card; the text and the bar stop a grid step short of it.
- Cancel calls Sparkle's download cancellation (it stops the transfer and deletes the partial
  file); the card goes back to the found update. Its Update checks again and downloads what it
  finds; close clears it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-d750cf10922c785efa64
…pty never downloads a later update

Review follow-up: downloadAfterCheck stayed set when the check ended hidden.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-d750cf10922c785efa64
@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Review (subagent, correctness first): SHIP at 54e78ff. The ed2417b review's follow-up 1 (stale downloadAfterCheck) is fixed in 54e78ff, with a test. Fleet: compile-check --app passed; the 8 touched suites pass at 54e78ff (package-test-lane). Follow-ups: the found-update card after a cancel does not claim the slot over Now Playing; the cancelled card's Remind-me-later options do not record a snooze.

@teamleaderleo
teamleaderleo merged commit 2fed73b into feat-cmux-next Oct 31, 2026
96 of 111 checks passed
@teamleaderleo
teamleaderleo deleted the fix/update-card-cancel branch October 31, 2026 20:29
@github-actions

github-actions Bot commented Oct 31, 2026 •

Copy link
Copy Markdown
Contributor

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

Review 54e78ff: 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=pr29653 -f ref=fix/update-card-cancel -f platform=macos -f backend_mode=local

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

CI passes on 54e78ffa53 (run 41239081334 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.

Shipped in:

@github-actions github-actions Bot added the risk:high Risk tier (docs/ci/risk-tiers.md) label Oct 31, 2026
teamleaderleo added a commit that referenced this pull request Oct 31, 2026
…9653) (#29656)

The fast gates' Sidebar-Look check flagged #29653's commits for no trailer.

Sidebar-Look: AND WHY CAN'T I CANCEL THE DOWNLOAD OPTIONALLY AND WHY IS THE SYMBOL SO FUCKING SMALL THIS IS SHIT ASS SPACING WHY NOT JUST LEFT ALIGN THE TEXT PUT A BIGGER SYMBOL ON THE RIGHT / ALSO CENTER THE FUCKING BUTTON ON THE RIGHT VERTICALLY

Agent-Session: https://cmux.com/deeplink/agent?id=aid-d750cf10922c785efa64

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

This branch was previously deployed

1 inactive deployment
ci-routing-agent — 54e78ffa Deployed Oct 31, 2026 by teamleaderleo via namespace autofix #10149
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant