feat: granular per-category push notification settings

New Settings → Notifications section with a toggle per category (follow,
comment, reply, reaction, rating, mention, leftover-expiring, shared
shopping list) — previously it was all-or-nothing (browser permission only).

userNotificationPrefs (one row per user, defaults all-on so existing users
see no behavior change until they opt out of something). Gated the push
send in the three places that dispatch one: lib/notifications.ts (the 6
in-app notification types), the leftover-expiry cron, and shopping-list-notify
— in-app notification-center entries and email are unaffected, this only
gates the push itself, matching the literal ask.

Verified locally: GET/PUT round-trips correctly, disabling a category
and confirming the settings page renders all 8 toggles.
This commit is contained in:
Arnaud
2026-07-12 19:07:32 +02:00
parent e78c959c49
commit 4d5269aced
13 changed files with 5037 additions and 6 deletions
+12
View File
@@ -1068,6 +1068,18 @@
}
},
"settingsForm": {
"notificationCategories": {
"title": "Notification categories",
"description": "Choose which push notifications you want to receive.",
"follow": "New followers",
"comment": "Comments on your recipes",
"reply": "Replies to your comments",
"reaction": "Reactions to your comments",
"rating": "Ratings on your recipes",
"mention": "Mentions in comments",
"leftoverExpiring": "Leftovers expiring soon",
"shoppingList": "Shared shopping list updates"
},
"profile": "Profile",
"changePhoto": "Change photo",
"removePhoto": "Remove photo",