diff --git a/backend/models.py b/backend/models.py index 7374830..105177b 100644 --- a/backend/models.py +++ b/backend/models.py @@ -338,6 +338,14 @@ class UserPreferences(SQLModel, table=True): show_ratings: bool = Field(default=True) show_comments: bool = Field(default=True) + # Theme preference (synced from frontend) + theme: str = Field(default="system", description="light, dark, or system") + + # Email notification preferences + email_on_reply: bool = Field(default=True, description="Email when someone replies to your review") + email_on_chase: bool = Field(default=True, description="Email when your chase song is played") + email_digest: bool = Field(default=False, description="Weekly digest email") + user: User = Relationship(back_populates="preferences") class Profile(SQLModel, table=True): diff --git a/backend/schemas.py b/backend/schemas.py index 251e79e..f13c669 100644 --- a/backend/schemas.py +++ b/backend/schemas.py @@ -328,6 +328,10 @@ class UserPreferencesBase(SQLModel): wiki_mode: bool = False show_ratings: bool = True show_comments: bool = True + theme: str = "system" + email_on_reply: bool = True + email_on_chase: bool = True + email_digest: bool = False class UserPreferencesCreate(UserPreferencesBase): pass @@ -336,6 +340,10 @@ class UserPreferencesUpdate(SQLModel): wiki_mode: Optional[bool] = None show_ratings: Optional[bool] = None show_comments: Optional[bool] = None + theme: Optional[str] = None + email_on_reply: Optional[bool] = None + email_on_chase: Optional[bool] = None + email_digest: Optional[bool] = None class UserPreferencesRead(UserPreferencesBase): user_id: int diff --git a/docs/ROADMAP.md b/docs/ROADMAP.md index 04ceb6d..c40c87b 100644 --- a/docs/ROADMAP.md +++ b/docs/ROADMAP.md @@ -1,6 +1,6 @@ # Elmeg Platform Roadmap -**Last Updated:** 2023-12-23 +**Last Updated:** 2025-12-26 --- @@ -15,7 +15,7 @@ | Postal Mail Server | ✅ Running on tangible-aacorn | | SMTP Host | `smtp.elmeg.xyz:25` | | Web Dashboard | | -| SPF Record | ✅ Configured | +| SPF Record | ✅ Fixed (ip4:159.69.219.254) | | DKIM Record | ✅ Configured | | DMARC Record | ✅ Configured | | Return Path | ✅ Configured | @@ -34,7 +34,18 @@ --- -## Recent Completions (Dec 23, 2023) +## Recent Completions (Dec 26, 2025) + +| Feature | Status | +|---------|--------| +| Rating submission bug | ✅ Fixed | +| Hydration error fix | ✅ Fixed | +| Venues page (all 441) | ✅ Fixed | +| Cloudflare HTTP/3 disabled | ✅ Complete | +| SPF DNS record fixed | ✅ Complete | +| Password reset tested | ✅ Complete | + +## Previous Completions (Dec 23, 2025) | Feature | Status | |---------|--------| @@ -135,8 +146,8 @@ ### High Priority -- [ ] Test email verification flow end-to-end -- [ ] Test password reset flow end-to-end +- [x] Test email verification flow end-to-end +- [x] Test password reset flow end-to-end ### Medium Priority @@ -158,8 +169,8 @@ 1. [x] Register test account to trigger verification email 2. [x] Registration UX shows "Check Your Email" message -3. [ ] Test password reset flow -4. [ ] Monitor email deliverability in Postal dashboard +3. [x] Test password reset flow +4. [x] Monitor email deliverability in Postal dashboard ### This Week