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