Changelog
What's new, newest first.
marketingseo
Marketing and polish
- MDX blog with SEO metadata, JSON-LD, and syntax-highlighted code blocks.
- Waitlist mode — a feature flag that swaps self-serve signup for an email-capture waitlist, with admin invites.
- Dynamic OG images — branded social-share images generated per page and per blog post.
- Legal pages and a cookie consent banner that only appears when analytics is actually configured.
- This changelog, plus newsletter capture in the footer.
uploadsnotificationsadmin
Uploads, notifications, and admin superpowers
- File uploads — presigned S3/MinIO uploads for avatars, org logos, and private org documents.
- Notifications — an in-app bell with an optional per-user email preference.
- Admin superpowers — ban, unban, and impersonate users, each fully audit-logged.
- Feature flags — DB-backed, toggleable at
/admin/flagswith no deploy required.
billingsecurity
Billing polish and hardening
- Customer portal + invoices — self-serve plan changes and downloadable invoices via Stripe's portal.
- Discount codes, trials, and automatic tax — all optional, off by default.
- Webhook robustness — idempotency ledger so a redelivered Stripe event can't double-process.
- Rate limiting on auth and public forms, security headers, optional Turnstile bot protection.
- Audit log — append-only record of sensitive actions, browsable at
/admin/audit.
organizationstesting
Teams, testing, and CI
- Organizations — better-auth's org plugin, with a switcher, invitations, and role-scoped settings.
- Session & account management — active-session list, revoke-elsewhere, account deletion.
- Vitest unit + integration suite, and a Playwright e2e suite covering signup through billing.
- GitHub Actions CI running all of the above on every push.