Skip to content

fix: wrap Linux browser download card label - #11157

Merged
teamleaderleo merged 3 commits into
manaflow-ai:mainfrom
RaphaelKhalid:codex/fix-linux-download-card-label-wrap
Sep 27, 2026
Merged

teamleaderleo merged 3 commits into
manaflow-ai:mainfrom
RaphaelKhalid:codex/fix-linux-download-card-label-wrap

Conversation

@RaphaelKhalid

@RaphaelKhalid RaphaelKhalid commented Aug 28, 2026 •

Copy link
Copy Markdown
Contributor

Summary

  • Fix the Linux Browser Nightly download-card label clipping in long/localized layouts.
  • Preserve the existing download URL, click telemetry, and unavailable-platform behavior.

What changed

The shared card action now wraps its children in a shrinkable label span:

<span className="min-w-0 text-balance whitespace-normal text-center">
  {children}
</span>

The outer CTA retains its existing whitespace-nowrap styling. The inner span can shrink within the fixed-width card and wrap the label without changing link or button semantics.

Before / after

Linux download card before and after

The comparison uses the exact same label in both states:

Download auto-updating installer (.run)

Verification

  • pnpm dlx bun test tests/browser-download-card-action.test.tsx
  • Result: 3 passed, 0 failed, 18 expectations.
  • Local /en/browser render verified the Linux label wraps to two centered lines.
  • Existing Linux download target remains /api/download/browser-nightly/linux-x64/run.

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


Summary by cubic

Fixes the Linux browser download card so long or localized labels wrap onto multiple centered lines instead of clipping in both enabled and disabled actions, leaving the download URL, click telemetry, and unavailable-platform behavior unchanged.

Written for commit 2afc733. Summary will update on new commits.

Review in cubic

Summary by CodeRabbit

  • Bug Fixes

    • Long localized download labels now wrap correctly within fixed-width landing-page download cards.
    • Improved label alignment and readability for both enabled and disabled download options.
  • Tests

    • Added coverage to verify long download labels render completely with the expected wrapping and alignment.

Changelog

none

@vercel

vercel Bot commented Aug 28, 2026

Copy link
Copy Markdown

@RaphaelKhalid is attempting to deploy a commit to the Manaflow Team on Vercel.

A member of the Team first needs to authorize it.

@coderabbitai

coderabbitai Bot commented Aug 28, 2026 •

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 8dcabec0-0cd7-4bbb-b8e7-61ba233f988b

📥 Commits

Reviewing files that changed from the base of the PR and between ae7fbce and dd9aec3.

⛔ Files ignored due to path filters (1)
  • docs/evidence/linux-download-card-before-after.png is excluded by !**/*.png
📒 Files selected for processing (2)
  • web/app/[locale]/(landing)/browser/browser-download-card-action.tsx
  • web/tests/browser-download-card-action.test.tsx

Included review availability: Your plan provides up to 10 included reviews per hour; 9 remain after this review.


📝 Walkthrough

Walkthrough

The download card action now wraps available and disabled labels in a styled span. The styles support wrapping and centered text for long localized labels. A test verifies the wrapper classes and preserves the complete label text.

Changes

Download label wrapping

Layer / File(s) Summary
Shared label wrapper and validation
web/app/[locale]/(landing)/browser/browser-download-card-action.tsx, web/tests/browser-download-card-action.test.tsx
Available and disabled download actions render labels through DownloadLabel, which applies wrapping and centering classes. The test verifies the rendered span, its classes, and the full label text.

Estimated code review effort: 2 (Simple) | ~5 minutes

Merge Risk: ⚪ Minimal · up to dd9ae

This change only makes long Linux browser download-card labels wrap within the existing card while preserving download behavior and platform handling; no actionable merge-blocking risk remains after normal checks and review.

🚥 Pre-merge checks | ✅ 25
✅ Passed checks (25 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 2 functions across 2 files.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Cmux Swift Actor Isolation ✅ Passed PASS: The pull request introduces no Swift changes. The HEAD-to-parent diff contains only a PNG, a TypeScript/TSX production file, and a TypeScript test. Therefore, the Swift actor-isolation failure c…
Cmux Swift Blocking Runtime ✅ Passed PASS — The pull request changes only a TSX production component, a TSX test, and a PNG. The parent-to-HEAD diff contains no Swift files or Swift blocking/timing primitives. The Swift-specific failure …
Cmux Browser Automation Off-Main ✅ Passed PASS. The PR changes only the web download-card component, its web test, and an image. The diff contains no Swift changes or browser socket automation commands. Both rule-scoped files, `Sources/Termin…
Cmux Expensive Synchronous Load ✅ Passed PASS: The pull request changes only a TSX component, its test, and a documentation image. The parent-to-HEAD diff contains no Swift files and no agent-history or workspace load code. The custom check …
Cmux Cache Substitution Correctness ✅ Passed PASS — The production diff only adds a presentational DownloadLabel span around existing children. It does not replace any authoritative read or introduce a cached value. The changed component is a …
Cmux No Hacky Sleeps ✅ Passed PASS: The production change only adds a presentational DownloadLabel span with CSS wrapping classes. The test adds deterministic React-element assertions. The diff introduces no sleeps, timers, poll…
Cmux Algorithmic Complexity ✅ Passed PASS: The production diff only adds a DownloadLabel span around existing children in both CTA branches. It adds no loops, collection scans, sorting, filtering, joins, or batch processing. The relate…
Cmux Swift Concurrency ✅ Passed PASS — the pull-request diff changes only a web TSX file, its TSX test, and a PNG asset. git diff HEAD^ HEAD -- '*.swift' returns no paths. Therefore the check is not applicable, and the pull reques…
Cmux Swift @Concurrent ✅ Passed PASS: The pull request changes only a PNG, two TSX files, and a TypeScript test. The exact parent-to-HEAD diff contains no Swift files, Swift annotations, async Swift functions, or Swift call sites. T…
Cmux Swift Package Boundaries ✅ Passed PASS — The pull request changes only TSX, a test file, and one PNG. The exact diff contains no Swift files, SwiftPM manifests, or production Swift changes. The Swift package-boundaries check is theref…
Cmux Swiftpm Lockfiles ✅ Passed PASS: The pull request changes only the web download-card component, its test, and an evidence image. The parent-to-HEAD diff contains no Package.swift, Package.resolved, .gitignore, workflow, Xcode p…
Cmux Swift Logging ✅ Passed PASS: The pull request changes only a PNG, a TSX component, and a TypeScript test. The exact diff contains no production Swift files and adds or materially changes no Swift logging, diagnostic output,…
Cmux User-Facing Error Privacy ✅ Passed PASS: The production diff only wraps an existing download label in a span and adds CSS classes. It adds no error, alert, command output, API error body, or recovery copy. The added test and documentat…
Cmux Full Internationalization ✅ Passed PASS: The production diff only adds a DownloadLabel wrapper and CSS classes. It adds no user-facing text, localization key, metadata, API copy, or message-file content. The existing browser page con…
Cmux Swiftui State Layout ✅ Passed PASS: The pull request changes only two TSX files and one PNG. The committed diff contains no Swift or SwiftUI code and no state/layout markers covered by the rule. The SwiftUI state/layout check is t…
Cmux Architecture Rethink ✅ Passed PASS: The pull request changes only a TypeScript/TSX download-card component, its test, and an image. The exact diff contains no Swift changes and introduces no sleeps, dispatch timing, polling, locks…
Cmux Swift Auxiliary Window Close Shortcuts ✅ Passed PASS: The pull request changes only a PNG, a TSX component, and a TSX test. The exact commit diff contains no Swift files and no NSWindow, NSPanel, NSWindowController, SwiftUI Window, or WindowGroup c…
Cmux Source Artifacts ✅ Passed The diff adds only intentional source/test changes and one deliberate documentation asset. web/app/[locale]/(landing)/browser/browser-download-card-action.tsx and `web/tests/browser-download-card-ac…
Cmux No Test Or Debug Seam In Production Source ✅ Passed PASS: The pull request changes only a web TSX file, a web test file, and an image. The diff adds no Swift files under any production Sources/ path, so it cannot introduce a Swift test/debug seam cov…
Cmux No Ambient Global State ✅ Passed PASS: The pull request does not change production Swift code. The committed diff changes only two .tsx files and one PNG; `git diff --name-only HEAD^ HEAD -- '.swift' '.swiftinterface' '*.xcodepro…
Title check ✅ Passed The title clearly identifies the primary change: wrapping the Linux browser download card label.
Description check ✅ Passed The description explains the problem, implementation, preserved behavior, test command and result, visual verification, and changelog status. It does not use the template's exact Testing, Demo Video, …
✨ Finishing Touches 💡 1
🛠️ Fix failing CI checks 💡
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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

Copy link
Copy Markdown
Collaborator

Thanks for this! We checked the download button wrap fix against current main and would like to land it. The one thing left is the CLA (CLA.md): if you're OK with it, comment exactly I have read the CLA Document v2.2 and I hereby sign the CLA and we'll take it from there.

@github-actions

github-actions Bot commented Sep 26, 2026 •

Copy link
Copy Markdown
Contributor

All contributors have signed the CLA ✍️ ✅
Posted by the CLA Assistant Lite bot.

@RaphaelKhalid

RaphaelKhalid commented Sep 26, 2026 •

Copy link
Copy Markdown
Contributor Author

I have read the CLA Document v2.2 and I hereby sign the CLA @teamleaderleo

Thanks :) Happy to help

github-actions Bot added a commit that referenced this pull request Sep 26, 2026
teamleaderleo and others added 2 commits September 27, 2026 09:50
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@teamleaderleo
teamleaderleo merged commit 972c449 into manaflow-ai:main Sep 27, 2026
64 of 66 checks passed
@teamleaderleo

Copy link
Copy Markdown
Collaborator

Merged, thanks @RaphaelKhalid! I moved the before/after image out of the tree and pinned the description's link to your original commit so it keeps rendering.

@github-actions

Copy link
Copy Markdown
Contributor

Merge receipt for 2afc733cb2, merged 2026-09-27 14:17:56 UTC

  • Not verified at merge: Web complexity (in progress)
  • Verified: ci-status, web-validation, CI fast guards, CI timing, Fast static checks, guards (16), Testbox broker trust boundary, tests, Web complexity candidate, Web status, Web tests (1/4), Web tests (2/4), and 6 more
  • Skipped by policy: agent-session-web-resources, browser, Claude wrapper regressions, diff-sidecar-check, GhosttyKit release check, linux-preflight, macos, macOS admission gate, react-apps-check, remote-daemon, suite-coverage, web-build, and 3 more
  • Full suite: runs on main after merge.

Labeled merged-unverified: if main breaks near this merge, look here first.

@github-actions github-actions Bot added the merged-unverified A judging check was not green at merge; see the merge receipt comment label Sep 27, 2026
rustybret pushed a commit to rustybret/bmux that referenced this pull request Sep 27, 2026
648d5c1 Add a Paste Last Screenshot action with an unbound shortcut (manaflow-ai#14955)
ff61677 ci: avoid partial blobs in catch-up merges (manaflow-ai#15023)
4d0d112 ci: retry transient catch-up GraphQL failures (manaflow-ai#15021)
212e808 ci: attribution scores a lone suspect and reports app-host crashes apart (manaflow-ai#14952)
4cabdf4 test: settle the window before measuring the unread sidebar-row invalidation (manaflow-ai#14568)
12ec99b Add a release-media capture tool for changelog screenshots and clips (manaflow-ai#15010)
ee2cda0 Backfill Unreleased changelog and draft next release cards (manaflow-ai#14999)
be4adf8 Show a brief notice when Cmd+V fails on an oversized image or a timeout (manaflow-ai#14953)
23d22d7 ci: an owned pool the run starts on now beats an earlier one it queues on (manaflow-ai#14993)
05d0190 ci: catch-up posts once per head, says less, and merges inserted declarations (manaflow-ai#15018)
4ee4b21 ci: fail stalled Swift package tests instead of waiting out the job timeout (manaflow-ai#14997)
9ce512a merge-main: run local guards only when asked (manaflow-ai#15016)
d60108a ci: clear test-e2e's fixed DerivedData with clear-dirs.sh (manaflow-ai#14994)
1d7895e ci: run the shell and CLI no-socket lanes in parallel (manaflow-ai#14990)
6e7d25f Honor macOS Differentiate Without Color, Increase Contrast and Reduce Transparency (manaflow-ai#14991)
966b355 Stop interrupting focused work: sidebar jumps, Computer Use focus steal, quit dialog on logout (manaflow-ai#14961)
e1f1cb2 Strip control characters from feedback attachment filenames (manaflow-ai#14783)
0758c9f test: find the onboarding window the test presented, not a leftover (manaflow-ai#15015)
b35c540 fix(spm): resolve GhosttyKit/GhosttyRuntimeTestStubs target name collisions (manaflow-ai#10569)
ef33bed Map .purs artifacts to the Haskell highlight.js grammar (manaflow-ai#14202)
e2a167a Highlight Elixir and Erlang files in the file editor (manaflow-ai#13732)
972c449 fix: wrap Linux browser download card label (manaflow-ai#11157)
f563884 Add Aside to browser data import detection (manaflow-ai#13379)
091d0ea Add cmux send --paste and hint at it for large multi-line sends (manaflow-ai#14937)
3ffcdbb test(ios): keep folder-tap stat tests off the real 2 s deadline (manaflow-ai#15017)
68d3936 test: keep CmuxTerminal pasteboard tests off the cooperative pool (manaflow-ai#15006)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

merged-unverified A judging check was not green at merge; see the merge receipt comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants