From 2f5abc034e9e0f6800432cee94b569ad0b5049ea Mon Sep 17 00:00:00 2001 From: Bryan Van Deusen Date: Fri, 10 Apr 2026 08:31:16 -0400 Subject: [PATCH] style: update email templates to Modern Fable visual identity Replace indigo (#6366f1) with deep violet (#7c3aed) gradient header, violet-tinted card border and background, refined border radius and spacing, and violet-accented footer to match the app's design language. Co-Authored-By: Claude Sonnet 4.6 --- src/fabledassistant/services/email.py | 32 +++++++++++-------- src/fabledassistant/services/notifications.py | 4 +-- 2 files changed, 21 insertions(+), 15 deletions(-) diff --git a/src/fabledassistant/services/email.py b/src/fabledassistant/services/email.py index b199a10..946d76d 100644 --- a/src/fabledassistant/services/email.py +++ b/src/fabledassistant/services/email.py @@ -40,29 +40,35 @@ _EMAIL_LOGO_SVG = ( def _email_html(title: str, body: str) -> str: """Wrap email body content in the standard Fabled Assistant template.""" return f""" - - - -
+ + + + + + + +
-
+ + +
-
-
- {_EMAIL_LOGO_SVG}Fabled Assistant +
+
+ {_EMAIL_LOGO_SVG}Fabled Assistant
-

{title}

+

{title}

-
+
{body}
-
-

This email was sent by your Fabled Assistant instance.

+
+

Sent by your Fabled Assistant instance.

@@ -169,7 +175,7 @@ async def send_email(to: str, subject: str, html_body: str) -> None: async def send_test_email(to: str) -> None: """Send a branded test email.""" body = """ -

SMTP is configured correctly

+

SMTP is configured correctly

Your Fabled Assistant instance can send email notifications.

""" await send_email(to, "Fabled Assistant - Test Email", _email_html("Test Email", body)) diff --git a/src/fabledassistant/services/notifications.py b/src/fabledassistant/services/notifications.py index 94a03c2..a6c4b71 100644 --- a/src/fabledassistant/services/notifications.py +++ b/src/fabledassistant/services/notifications.py @@ -103,7 +103,7 @@ async def send_password_reset_email(email: str, reset_url: str) -> None: We received a request to reset your password. Click the button below to choose a new password.

@@ -136,7 +136,7 @@ async def send_invitation_email(email: str, invite_url: str, invited_by_username Click the button below to create your account.