feat(email): brand verification and 2FA emails #56

Merged
eliott merged 1 commit from feat/branded-email-templates into develop 2026-07-08 20:59:47 +02:00
Owner

What

Replaces the two bare-text transactional emails (account verification, two-factor code) with a shared, branded HTML shell matching the rollnote-front "Ember" theme.

  • New renderEmail() helper: bulletproof table layout, inline styles only, no external images/fonts, light-mode only - renders consistently across Gmail/Outlook/Apple Mail.
  • Verification email: amber CTA button + paste-link fallback + improved plain-text.
  • 2FA email: boxed monospace code block + safety note + improved plain-text.
  • Function signatures unchanged, so auth.ts wiring is untouched.
  • Adds unit coverage for both emails.

Not included

Password-reset email/flow was scoped out: the frontend has no reset-password page yet, so wiring the backend hook now would link to a 404. Tracked as a follow-up feature (backend hook + two Angular pages).

Versioning

API-only change -> patch bump 0.8.1 -> 0.8.2. No changelog entry (changelog tracks the front app).

https://claude.ai/code/session_018Rm9ZqNGRtSw7okhJENr13

## What Replaces the two bare-text transactional emails (account verification, two-factor code) with a shared, branded HTML shell matching the rollnote-front "Ember" theme. - New `renderEmail()` helper: bulletproof table layout, inline styles only, no external images/fonts, light-mode only - renders consistently across Gmail/Outlook/Apple Mail. - Verification email: amber CTA button + paste-link fallback + improved plain-text. - 2FA email: boxed monospace code block + safety note + improved plain-text. - Function signatures unchanged, so `auth.ts` wiring is untouched. - Adds unit coverage for both emails. ## Not included Password-reset email/flow was scoped out: the frontend has no reset-password page yet, so wiring the backend hook now would link to a 404. Tracked as a follow-up feature (backend hook + two Angular pages). ## Versioning API-only change -> patch bump `0.8.1` -> `0.8.2`. No changelog entry (changelog tracks the front app). https://claude.ai/code/session_018Rm9ZqNGRtSw7okhJENr13
Replace the bare-text verification and two-factor emails with a shared,
bulletproof table-based HTML shell matching the rollnote-front Ember
theme (amber accent, stone card, text wordmark, fallback link/plain
text). Function signatures are unchanged, so auth.ts wiring is untouched.
Adds unit coverage for both emails.

Claude-Session: https://claude.ai/code/session_018Rm9ZqNGRtSw7okhJENr13
eliott merged commit e8977b2c12 into develop 2026-07-08 20:59:47 +02:00
eliott deleted branch feat/branded-email-templates 2026-07-08 20:59:47 +02:00
Sign in to join this conversation.
No reviewers
No labels
run-ci
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
RollNote/rollnote-api!56
No description provided.