Skip to content

feat(billing): render cloud plans dynamically for three-tier pricing#2710

Merged
mekilis merged 1 commit into
mainfrom
pde-884-cloud-three-tier-pricing
Jul 8, 2026
Merged

feat(billing): render cloud plans dynamically for three-tier pricing#2710
mekilis merged 1 commit into
mainfrom
pde-884-cloud-three-tier-pricing

Conversation

@mekilis

@mekilis mekilis commented Jul 8, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • Cloud now builds its plan list from the billing catalog (Pro, Premium, Enterprise) instead of a hardcoded two-plan default, enriched with default comparison copy and sorted deterministically (checkout plans by price ascending, contact-only plans last). Adds cloud_premium to the plan keys and checkout-eligible set.
  • Plan cards render curated marketing highlights ("Everything in X, plus:") with a global expand/collapse chevron and fade, an "On trial"/"Current plan" pill, and a current-plan check.
  • Comparison table columns are dynamic per plan count and scroll horizontally instead of clipping a third plan.
  • Usage-period value drops to one line (16px) only for a year-spanning date range; short labels and "No active cycle" keep the normal size. Card contains any overflow as a fail-safe.
  • Contact-only detection is centralized in one helper so plan sort ordering and checkout gating cannot drift.

Depends on the billing service returning the three cloud plans (cloud_premium seeded + linked on Maple).

Test plan

  • Manage plan shows Pro, Premium, Enterprise in that order for cloud
  • Premium/Enterprise comparison rows differ per the catalog; no third-column clip or wrap
  • Chevron expands/collapses all cards to equal height; collapsed cards fade
  • On-trial org shows the "On trial" pill on the trial plan; current plan shows the pill + check
  • Annual usage period renders on one line without spilling into the next card

Note

Medium Risk
Changes how cloud plans are listed and checkout/contact eligibility is resolved, which affects upgrade flows if the billing API is incomplete; UI-only elsewhere with no auth or payment logic changes.

Overview
Cloud plan catalog no longer maps a fixed two-card default onto the API. It lists whatever cloud plans billing returns (enriched with default comparison copy and highlights), sorts checkout plans by price with contact-only last, and treats an empty cloud catalog as unavailable. cloud_premium is added to plan keys and checkout-eligible keys.

Manage plan / catalog preview plan cards show curated "Everything in X, plus:" bullets (with supported-feature fallback), On trial / Current plan badges, a shared chevron to expand/collapse long highlight lists with a fade, and a footer so CTAs align. The compare table uses dynamic grid columns for N plans and horizontal scroll so a third tier is not clipped.

Billing overview applies a compact one-line 16px style only when the usage period string spans two years; cards use overflow hidden as a fail-safe.

planRequiresContact is centralized on PlanCatalogService for sort order and checkout gating. Specs are updated for dynamic cloud catalog behavior.

Reviewed by Cursor Bugbot for commit ca37d20. Bugbot is set up for automated code reviews on this repo. Configure here.

cloud now builds its plan list from the billing catalog (pro, premium,
enterprise) instead of a hardcoded two-plan default, enriched with default
comparison copy and sorted deterministically (checkout plans by price, contact
plans last). plan cards show curated marketing highlights with a global
expand/collapse chevron and fade, an "on trial"/"current plan" pill, and the
current-plan check. comparison table grid columns are dynamic and scroll instead
of clipping a third plan. usage-period date shrinks to one line only for
year-spanning ranges.
@linear

linear Bot commented Jul 8, 2026

Copy link
Copy Markdown

PDE-884

@mekilis mekilis merged commit b97bb00 into main Jul 8, 2026
30 checks passed
@mekilis mekilis deleted the pde-884-cloud-three-tier-pricing branch July 8, 2026 16:34
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