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.
40 lines
1.3 KiB
Markdown
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)
|