Files
famapp/docs/tasks/89-calendar-reminders-overhaul.md
ginnoir e1c2a090fb feat: p2 batch 28-31 reminders lists comments bang stats
Calendar events support multiple reminder offsets with presets and per-user defaults.

Lists index adds inline task entry and list property editing.

Generic entity comments on list detail. New bangs.stats dashboard widget.

Closes Gitea #28, #29, #30, #31. Migrations 0022 and 0023.
2026-07-04 22:17:35 -05:00

40 lines
1.3 KiB
Markdown

# 89 — Calendar reminders overhaul
## Goal
Replace the single "Remind me 30 min before" checkbox with multiple reminders, presets, and custom offsets.
## What we decided
- Store multiple reminder rows per calendar event in the generic `reminders` table (drop one-per-entity unique constraint).
- Offsets are minutes before event start; presets + custom value/unit in UI.
- Per-user default offsets live on `users.default_event_reminder_offsets` (jsonb, default `[30]`).
- Notes/garden keep single-reminder behavior via delete-then-insert in `scheduleReminder`.
## Depends on
- 41 (reminders engine)
## Scope
- Migration: drop `reminders_entity_unique`, add `offset_minutes`, add user default column.
- `_core/reminders.ts`: `syncRemindersForEntity`, refactor `scheduleReminder`.
- Shared `ReminderPicker` component + offset helpers.
- Calendar create/edit + quick-add dialogs; sync reminders on create/update/delete.
- Optional: settings field for default reminder offsets.
## Out of scope
- Recurring reminders, snooze.
## Acceptance criteria
- [x] Users can add/remove multiple reminders on an event
- [x] Preset list and custom offset both work
- [x] Reminders fire via existing notification bus
- [x] Per-user default reminder preferences (stored + applied on new events)
## Notes
- Gitea: [ginnoir/famapp#28](https://gitea.ginnoir.com/ginnoir/famapp/issues/28)