Advertise the Linux desktop app on the landing page - #3426
Merged
SawyerHood merged 2 commits intoSep 10, 2026
Merged
Conversation
The desktop-latest release has shipped a Linux x64 AppImage alongside the macOS dmg since desktop 0.42, but getbb.app only ever offered "Download for macOS" and pointed Linux visitors at npx. Add a /download/linux redirect that resolves the AppImage from desktop-version-linux.json the same way /download/macos resolves the dmg, and generalize the download endpoint over a DesktopPlatform so both routes share the feed parsing, fallback, and PostHog tracking. The tracked event name keeps its per-platform shape (landing_download_<platform>_clicked) so existing macOS dashboards are unaffected. The hero, nav, and footer now detect the visitor's platform after hydration and label the primary button accordingly, with an "Also for macOS/Linux" link under the hero button for the other platform. Server rendering keeps macOS as the default so Windows and mobile visitors see the same page as before. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Replaces the hand-drawn penguin with the CC0-licensed Linux icon from Simple Icons so the button reads as Tux at 16px. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
SawyerHood
marked this pull request as ready for review
September 10, 2026 18:39
SawyerHood
deleted the
bb/can-we-open-a-pr-that-advertises-the-linux-deskt-thr_i5b9png8zw
branch
September 10, 2026 18:42
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Human comments
What was wrong
The
desktop-latestrelease has published a Linux x64 AppImage and adesktop-version-linux.jsonfeed since desktop 0.42, but getbb.app only advertised "Download for macOS" everywhere and told Linux visitors to usenpx. There was no Linux download redirect on the site at all.What changed
apps/web/src/landing/site.ts: aDesktopPlatformtype and aDESKTOP_DOWNLOADStable (labels, installer extension, version feed URL, redirect path) replace the macOS-only constants.downloadHref(platform, placement)replacesdownloadMacosHref.apps/web/src/landing/endpoints.ts:handleDownload(platform, ...)generalizes the macOS redirect. It fetches the platform's feed, picks the first asset with that platform's installer extension, and falls back to the release page. The PostHog event keeps its per-platform name (landing_download_<platform>_clicked) anddownload_target, so the existing macOS dashboards keep working.apps/web/src/routes/download.linux.tsx: new/download/linuxroute./download/macosnow calls the shared handler.apps/web/src/landing/desktop-platform.ts:detectDesktopPlatformreads client hints,navigator.platform, and the UA string. It returnslinuxfor X11 Linux (not Android or ChromeOS),macosfor Macs (not iPads reportingMacIntel), andnullotherwise.useDesktopPlatformapplies it after hydration with macOS as the SSR default.npxnote now reads "Windows (via WSL), Intel Macs & remote machines". The Linux button uses a new inlineLinuxIconcarrying the CC0-licensed Tux glyph from Simple Icons, since hugeicons free has no Linux icon.npx).Design note: this is the "detect the visitor's OS, primary button follows it, other platforms as a secondary link" pattern that VS Code, Cursor, Zed, and Warp use. Two alternatives were mocked up and rejected: side-by-side macOS and Linux buttons (three CTAs crowd the hero), and a static macOS button with an "Also available: Linux AppImage" line beneath (buries the Linux path for Linux visitors).
How you verified
desktop-platform.test.tscovers client hints, X11 Linux, Android, ChromeOS, macOS, iPad-as-MacIntel, and Windows.endpoints.test.tsadds Linux feed resolution, a guard that a Linux request never returns a.dmg, and asserts the tracked event name,download_target, and placement.site-chrome.test.tsxasserts the SSR nav href stays/download/macos?placement=nav.pnpm exec turbo run typecheck test lint --filter=@bb/webpasses (23 files, 124 tests).vite dev:curl -I /download/linuxreturns a 302 tobb-0.42.1-x86_64.AppImage;/download/macosstill returns the 0.42.1 dmg. In headless Chrome on Linux the nav and hero show "Download for Linux" with hrefs to/download/linux; with a macOS UA andMacIntelplatform emulated they show "Download for macOS". Checked the 390px dark-mode layout as well.🤖 Generated with Claude Code