Skip to content

v0.160.0: feat(auth-email): brand the 4 default GoTrue auth emails to match the invite

Choose a tag to compare

@github-actions github-actions released this 14 Jul 21:08

feat(auth-email): brand the 4 default GoTrue auth emails to match the invite

What & why

Strummy sent five auth emails, but only the student invite was custom-designed. The other four — signup confirmation, magic link, password reset, email change — shipped as Supabase's unstyled GoTrue defaults (a bare <h2> heading and a raw link on white). That meant a self-serve teacher's first email looked broken next to the brand, and any password-reset or magic-link email did too.

This PR brings all four up to parity with the invite's editorial design.

What changed

  • 4 new templates in supabase/templates/confirmation.html, magic_link.html, recovery.html, email_change.html — each mirroring invite.html's system:
    • Georgia serif italic headline, #1a1a1a header band with the Strummy wordmark, #c9a84c gold rule, Courier-mono eyebrows/footer, dark CTA button, and a manual OTP-code fallback.
    • Per-type copy and subjects (e.g. "Reset your Strummy password", "Confirm your new Strummy email"); the email-change template renders both old → new addresses.
  • config.toml — registered the four [auth.email.template.*] blocks alongside invite, with branded subject lines. TOML validated.
  • scripts/preview/render-all-emails.ts (new dev tool) — renders every outbound email (GoTrue auth + app transactional) into one self-contained gallery HTML for visual review; its generated out/ is gitignored.

⚠️ Deploy note (not automatic)

Per the existing note in config.toml, prod auth config is applied via the Supabase Management API, not supabase config push (the rest of the [auth.*] block is local-dev oriented and would clobber prod). So merging this does not push the templates to live prod on its own:

  • Local / StrummyProd (CLI-managed): take effect on next supabase start + the supabase-post-start.sh patch.
  • Live prod: needs a Management-API apply step (inline HTML, not a Kong URL — GoTrue silently drops the email if a template fetch 404s). Recommend wiring this into the StrummyProd P4 cutover.

Full Changelog: v0.159.0...v0.160.0
Merged PR: #521