v0.160.0: feat(auth-email): brand the 4 default GoTrue auth emails to match the invite
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 mirroringinvite.html's system:- Georgia serif italic headline,
#1a1a1aheader band with the Strummy wordmark,#c9a84cgold 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.
- Georgia serif italic headline,
config.toml— registered the four[auth.email.template.*]blocks alongsideinvite, 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 generatedout/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+ thesupabase-post-start.shpatch. - 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