Security hardening + design system
Added
- Cloudflare Turnstile on signin (Google + magic link), free key redemption, and promo code redemption — bot protection across every public-input endpoint.
- Sentry error monitoring across all 23 pages with PII stripping, ad-blocker noise filtered, performance tracing off to conserve quota.
- Branded /security page with sub-processor list and security practices. Branded /500 error page with request-ID display.
- Design system v2 in global.css — color/spacing/type/motion tokens for consistent styling across new components.
- 5 new use-case landing pages: YouTube creators, podcasters, agencies, course creators, video editors.
- 4 new comparison pages: vs Descript, vs Opus Clip, Premiere Pro auto edit plugins, vs AutoPod, vs TimeBolt.
- /contact, /changelog, dedicated /features/auto-zoom pages.
Security
- Strict-Transport-Security with HSTS preload (
max-age=63072000; includeSubDomains; preload). - X-Frame-Options switched from
SAMEORIGINtoDENY; full Permissions-Policy lockdown; COOPsame-origin; CORPsame-site. - Content-Security-Policy in report-only mode, violations route to Sentry. Enforce mode after 24h of clean reports.
- Session cookies migrated to
__Host-prefix — blocks subdomain takeover attacks. - Per-user rate limiting on free tier (independent of IP); webhook race condition closed via atomic insert claim; refund handler refuses to guess on ambiguous license matches.
- CodeQL, Semgrep, gitleaks, Dependabot configured for the GitHub repo.
Fixed
- Browser
prompt()dialog removed from checkout flow — replaced with proper signed-in detection + login redirect. - Admin user table now defaults to "Active" filter; Revoked and Blocked users hidden by default but reachable via filter tabs.
- FAQ accordion JS no longer crashes when page contains
<details>-based FAQ (homepage CSP report-only no-blank-page regression). - Privacy page provider list updated to reflect actual sub-processors (Anthropic, Pexels, Pixabay added).