Release 0.28
September 22, 2026
Highlights
- Sign in with Google on /login and /signup, a branded password-reset page, and a Log in link that returns you to the page you were on
- Service emails now run on their own transactional lane: a welcome email arrives once after you verify your address, and consented signups reach our promo campaigns
- Every article gets a generated cover and social preview image, and App Store strips now show landscape screenshots properly
- Curated collections in the app catalog: browse apps grouped by theme, not only by category
What shipped
- Google sign-in on the public auth surface (/login, /signup)COR-879
- Transactional email infrastructure: service emails on Resend, promo stays on HubSpotCOR-859
- auth.welcome: transactional "thanks for registering" email on the Resend seam, sent once after email verificationCOR-899
- Nav "Log in" link returns the user to the page they were on instead of /pulseCOR-898
- HubSpot registration sync: enroll consented signups into promo campaignsCOR-860
- Programmatic article cover generator: templated covers + OG images for every articleMAR-632
- Collection primitive: collections/{slug} record, pure module, guarded upsert CLI, readers + catalog facetCOR-880
- Thin pages Google refuses to index: expand, merge, or noindexMAR-635
- Enable branded /auth/action password-reset page (set Firebase email action URL)COR-283
- Launch guards: SSRF-rejected requests bypass rate limitingPLS-49
- Resolve likely keyword cannibalization: duplicate A/B testing and dependent-variable articlesMAR-636
- Storefront strip: support landscape App Store screenshotsMAR-637
- Platform improvements and internal tooling