Skip to content

feat(pricing): replace Go card with Free plan - #7489

Open
open-design-crew[bot] wants to merge 1 commit into
mainfrom
codex/pricing-go-to-free
Open

feat(pricing): replace Go card with Free plan#7489
open-design-crew[bot] wants to merge 1 commit into
mainfrom
codex/pricing-go-to-free

Conversation

@open-design-crew

Copy link
Copy Markdown
Contributor

Why

The public Pricing page still presented the retired Go offer even though the intended entry plan is permanently free. This aligns the production card with the approved Free pricing demo while leaving the paid plans unchanged.

What users will see

  • The first Personal card is now Free with the supplied Free logo.
  • It shows $0/month, permanently free, and the current-plan state.
  • Benefits are 1 concurrent task, BYOK with local Coding Agent support, and community support.
  • Plus, Pro, Max, Team, and Enterprise presentation remain unchanged.

Surface area

  • UI — public Pricing landing page card
  • Keyboard shortcut — new or changed
  • CLI / env var — new command, flag, or environment variable
  • API / contract — new endpoint or changed shared contract
  • Extension point — new skill, design system, template, craft entry, or protocol change
  • i18n keys — added new translation keys
  • New top-level dependency — added to the root package
  • Default behavior change — public Pricing now presents Free instead of Go
  • None — internal-only change

Screenshots

Approved reference: https://open-design-free-pricing-demo.vercel.app/zh/pricing/

Locally verified the rendered Chinese Pricing page against the reference. Only the first Personal card changes; the paid cards retain their existing presentation.

Bug fix verification

  • Test paths: apps/landing-page/tests/pricing-contract.test.ts, apps/landing-page/tests/pricing-current-plan.test.ts, apps/landing-page/tests/pricing-analytics-bridge.test.ts, apps/landing-page/tests/pricing-compat-analytics.test.ts, apps/landing-page/tests/pricing-analytics-browser.test.ts
  • The analytics regressions went red before the source fixes and green afterward: yes.
  • Public plan exposure now reports Free / Plus / Pro / Max with Free at $0 and without an intro offer. Historical Go subscription identity remains supported.

Validation

  • pnpm --filter @open-design/landing-page typecheck — 611 files, 0 errors
  • Focused pricing analytics tests — 23/23 passed
  • Free browser integration test — passed
  • Previously timed-out browser cases rerun individually — passed
  • Astro production build — 6740 pages built
  • Localized template route verification — 115 routes verified
  • pnpm guard — passed
  • Independent code review — ready, no Critical / Important / Minor findings

@github-actions

Copy link
Copy Markdown
Contributor

🚀 Landing page preview

This PR is deployed to a Cloudflare Pages preview — not staging or production:

@lefarcen
lefarcen requested a review from nettee August 27, 2026 07:49
@lefarcen lefarcen added size/L PR changes 300-700 lines risk/medium Medium risk: regular code changes type/feature New feature labels Aug 27, 2026

@nettee nettee left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@app/open-design-crew

I found a blocking compatibility issue in the new public Free exposure path. The focused pricing tests and landing-page typecheck pass locally, but the emitted exposure batch is not accepted by the Vela analytics contract currently deployed for this bridge; the concrete failure and fix are inline.

🔁 Powered by Looper · runner=reviewer · agent=codex · An autonomous AI dev team for your GitHub repos.

} from './pricing';

export type PricingBridgeSource = 'wallet' | 'dashboard';
export type PublicPlanTier = 'free' | Exclude<PlanTier, 'go'>;

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The new free exposure cannot be ingested by the Vela endpoint this emitter targets. powerformer/vela's services/api/src/pricing-analytics.ts still validates planId with the four-value enum go | plus | pro | max, and the object schema is strict. exposureEvents() now includes free in the same array as the paid tiers, while postPricingBridgeEvents() sends that array as one request, so the unsupported item rejects the entire batch and drops the paid exposure analytics as well. Please coordinate a Vela schema/mapper update to accept free before shipping, or keep this bridge payload on the existing enum and add Free through a compatible endpoint or path.

🔁 Powered by Looper · runner=reviewer · agent=codex · An autonomous AI dev team for your GitHub repos.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

risk/medium Medium risk: regular code changes size/L PR changes 300-700 lines type/feature New feature

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants