cmux Pro — badge & upgrade options

Everything on the feat-pro-plan branch. Live in the tagged build pro1. Pick a badge and I'll ship one, deleting the rest.

Badge variants — switch live in Debug → Debug Windows → Pro Badge Style…

ProText: Pro
Get ProText: Get Pro
UpgradeText: Upgrade
ProGradient: Pro (tint) — the one you liked
ProGradient: Pro (solid)
♔ ProCrown + Pro
♔Crown only
♔ ProCrown + Pro (gradient)
✦ ProSparkles + Pro
⚡ ProBolt + Pro
▢ ProiPhone + Pro
👑 ProEmoji crown
✨ ProEmoji sparkles
💎 ProEmoji gem
🚀 ProEmoji rocket

The gradient

The badge uses the cmux logo chevron gradient, but a narrow slice of it. On the icon the ramp is spread across the whole chevron, so any small patch shifts hue only slightly — the tiny badge samples the middle stretch so it reads as a soft blue shimmer, not a full rainbow.

full logo ramp  #12c7f5 → #2d8cff → #6c5cff
badge slice  #249ffc → #4b75ff

Interaction

Click the badge → opens the native pricing screen docked on the right side, inside the app (all four plans; no external browser).

Hover → only the capsule width animates to reveal a dismiss ✕ inside it (the ✕ itself doesn't fade or slide — it's wiped in by the widening capsule). Click the ✕ to hide the badge for good.

Dismissal persists across launches. Reset it from the same debug window (“show it again”). Settings → Account keeps the durable upgrade entry regardless.

Placements

  • Sidebar footer, bottom-left, next to Help
  • Window titlebar, top-right, left of the iPhone button

Also reachable from

  • Settings → Account (“cmux Pro” card)
  • Command palette → “Upgrade to cmux Pro”
  • Help menu → “Upgrade to cmux Pro…”

iPhone button

Separate from the badge: a small iPhone icon in the titlebar top-right that opens Mobile Pairing in one click. It's a real built-in tab-bar action (cmux.mobileconnect) too, so it's also configurable via cmux.json.

Feature flags (PostHog project 244066)

Pro entrypoints available · badge respects local dismissal mobile-connect-button-enabled-release — titlebar iPhone button · ON

Each is registered in code (owner + review date + safe default), gated live from the PostHog dashboard, and enforced by scripts/lint-feature-flags.py in CI against the posthog.com feature-flag-mistakes rules. Pricing checkout is launched and no longer feature-gated.

In-app pricing screen (native)

Every upgrade entrypoint — badge, Settings → Account, command palette, Help menu — now opens a native SwiftUI pricing screen docked to the right of the window, inside cmux. It shows Free / Pro / Team / Enterprise cards (Pro highlighted with the logo gradient CTA); the plan buttons open the web checkout for the actual purchase.

Pricing page (web)

/pricing — Free / Pro / Team / Enterprise, adopted from PR #6791. Pro is $30/mo billed annually ($360/yr, the checkout default), $45/mo month-to-month. CTA one-clicks into Stack hosted checkout when the checkout flag is on; download link otherwise. Hosted-networking and Vault copy are flagged off until they ship (Tailscale still required).