2.0.2
Released
Fixes
POST /api/billing/checkoutrefuses an account that already holds a Pro-granting subscription, with a 409 pointing at the Billing Portal. Hiding the buy buttons is not enforcement: a double click, a retry, or a direct call would open a second Checkout session, and Stripe will happily run two independent subscriptions for one customer (#486).Stripe customer creation carries an idempotency key derived from the user id, so two concurrent first checkouts converge on one customer. Without it both saw no mapping, both created a customer, and the losing upsert left one holding a live Checkout session and its invoices that neither the mapping nor the Billing Portal could find again (#486).
Locked personas in the model picker render as plain cards rather than disabled buttons. The "Upgrade to Pro" link was interactive content nested inside a disabled
<button>— invalid HTML, and unreachable by pointer and assistive technology alike, so the one control that could unlock the card was the one control that could not be used (#486).The dev TUI re-checks for a live-mode context after an account switch. The guard ran before the switch was offered, so choosing a live account from the picker walked straight past it into fetching a live webhook signing secret into
.envand forwarding production events at localhost (#486).Restored Vercel production deploy project linking by adding explicit workflow preflight checks for
VERCEL_TOKEN,VERCEL_ORG_ID, andVERCEL_PROJECT_ID, with support for storing Vercel identifiers as GitHub Actions variables or secrets.Updated deploy workflows to validate required Vercel app environment values after
vercel pull, failing before build/deploy whenNEXT_PUBLIC_SUPABASE_URL,NEXT_PUBLIC_SUPABASE_ANON_KEY, orSUPABASE_SERVICE_ROLE_KEYare missing.Pointed the production release health check at the public production domain by default so protected generated Vercel deployment URLs do not cause false 401 failures.
Refreshed Vercel deployment docs for the current Next.js
apps/webproject root, required Supabase env vars, and production health-check configuration.