fix(pricing): align landing actions with subscription state - #7239
Conversation
🚀 Landing page previewThis PR is deployed to a Cloudflare Pages preview — not staging or production:
|
|
Saw the draft — keeping |
|
Ready for review noted — leaving the current head with @mrcfps for the code pass. |
mrcfps
left a comment
There was a problem hiding this comment.
@Siri-Ray thanks for the careful Pricing subscription-state work — this is a solid fix.
I reviewed the changed ranges across the resolver (resolvePersonalPlanAction / loadPersonalPricingContext), Pricing page CTA wiring (interval sync, intro eligibility, disable/re-enable + syncCtas), Team monthly/yearly checkout labels, and the Pricing-only account opt-in. The action matrix matches the stated product rules (same-interval upgrades, monthly→yearly, blocked dual changes and yearly→monthly, scheduled/canceling/checkout-unavailable), href restoration after re-enable looks correct, and the focused red-spec coverage plus header/Pricing opt-in contracts give good confidence.
No actionable correctness, safety, or maintainability issues on this head. Nice job landing a clear preview of Vela’s boundaries without overreaching into Team/workspace authority.
🔁 Powered by Looper · runner=reviewer · agent=opencode · An autonomous AI dev team for your GitHub repos.
Why
The public Pricing page can read the signed-in user's billing summary, but it previously reduced that state to a Personal tier. That made month/year changes, first-month eligibility, pending changes, cancel-at-period-end, and Personal-checkout restrictions look actionable when Vela would reject or reroute them.
This PR makes Landing's catalog an honest preview of the checkout behavior while leaving Vela authoritative for workspace roles, Team subscription mutations, seats, and payment state. It also restores the existing signed-in account avatar and account menu on Pricing only, where subscription context is relevant.
What users will see
Surface area
apps/weborapps/desktop(including Electron menu bar)odsubcommand or flag, newtools-dev/tools-packflag, or newOD_*env var/api/*endpoint, new SSE event, or changed shape inpackages/contractsskills/,design-systems/,design-templates/, orcraft/, or change to the skills protocolTRANSLATIONS.mdfor the locale workflow)package.json(dependenciesordevDependencies); workspace-packagepackage.jsonfiles are out of scope. Include a paragraph on what we get vs. what bytes we ship (seeCONTRIBUTING.md→ Code style)Screenshots
The review document contains the state matrix and nine screenshots covering default Personal pricing, the Pricing-only account menu, dual changes, Team monthly pricing, a yearly subscriber switching to the Monthly tab, checkout restrictions, scheduled changes, cancel-at-period-end, and the Vela fallback toast:
https://powerformer.feishu.cn/docx/DU1RdSqQRoMxqNxFtCic7huRn7e
Bug fix verification
apps/landing-page/tests/pricing-current-plan.test.ts,apps/landing-page/tests/pricing-contract.test.ts, andapps/landing-page/tests/header-download-cta.test.tsmainand green on this branch? yesValidation
pnpm --filter @open-design/landing-page test— 198 passedpnpm --filter @open-design/landing-page typecheck— 0 errors, 0 warnings, 179 existing hintspnpm --filter @open-design/landing-page build:static— 6,739 pages builtpnpm guardpnpm typecheck/faq/renders no account modulegit diff --checkRelated