feat: export meal plan to a calendar (.ics) file

Hand-rolled a minimal RFC 5545 writer (lib/ics.ts) rather than adding
a dependency for what's a handful of VEVENTs. Meal slots have no
stored time-of-day, so each mealType maps to a conventional wall-clock
time (dinner 7pm, etc.) written as floating local time, not pinned to
a timezone. Authenticated-only download for now, not a subscribe URL
— that would need a new unguessable-link mechanism on meal plans,
which don't have one today (unlike shopping lists' isPublic).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
Arnaud
2026-07-13 22:22:33 +02:00
parent 00ca8b9d68
commit 6513bfa6ee
9 changed files with 151 additions and 4 deletions
+1
View File
@@ -830,6 +830,7 @@
"markCooked": "Mark as cooked",
"markCookedSuccess": "Marked as cooked",
"markCookedFailed": "Failed to mark as cooked",
"exportCalendar": "Export to calendar",
"clearDay": "Clear day",
"clearWeek": "Clear week",
"clearDayConfirmTitle": "Clear {day}?",
+1
View File
@@ -818,6 +818,7 @@
"markCooked": "Marquer comme cuisiné",
"markCookedSuccess": "Marqué comme cuisiné",
"markCookedFailed": "Échec du marquage comme cuisiné",
"exportCalendar": "Exporter vers le calendrier",
"clearDay": "Vider la journée",
"clearWeek": "Vider la semaine",
"clearDayConfirmTitle": "Vider {day} ?",