3.0 KiB
Phase 11: Per-Event Reminders - Discussion Log
Audit trail only. Do not use as input to planning, research, or execution agents. Decisions are captured in CONTEXT.md — this log preserves the alternatives considered.
Date: 2026-06-13 Phase: 11-per-event-reminders Areas discussed: Existing-alarm display, All-day treatment, Notification copy, Recurring events
Existing-alarm display (edit / preserve)
| Option | Description | Selected |
|---|---|---|
| "Custom (kept)" sentinel | Read-only Custom entry; preserve verbatim unless changed | |
| Snap to nearest preset | Show nearest preset; risks silent rewrite | |
| Show exact if single | Render real value for single relative alarm; "Custom" for absolute/multiple | ✓ |
User's choice: Show exact if single. Notes: Off-list single relative alarm shows its real value ("45 min before"); absolute-time or multiple alarms → read-only "Custom (kept)", preserved verbatim (CAL-14).
All-day treatment
| Option | Description | Selected |
|---|---|---|
| Hidden when all-day | Picker disappears once All-day toggled on | |
| Shown but disabled | Picker greyed with a hint | |
| (Free text) All-day fires reminders like any event, in days | User override of the locked roadmap criterion | ✓ |
User's choice: All-day events DO get reminders, with day-granularity leads. Notes: Reverses ROADMAP criterion 5 / PITFALLS Pitfall 3 (which locked selector hidden/disabled for all-day). Follow-up: presets None / 1d / 2d / 1wk, fire at 9 AM local. Later in discussion the user added "Same day" to the all-day presets ("why not"), giving None / Same day / 1d / 2d / 1wk.
Notification copy
| Option | Description | Selected |
|---|---|---|
| Humanized relative | "Starts in 2 days" / "in 1 hour" / "in 30 min" | ✓ |
| Absolute local time | "Starts at 3:00 PM" / "Tomorrow 9:00 AM" | |
| Keep "Starts in N min" | No change |
User's choice: Humanized relative.
Notes: Replaces hardcoded Starts in ${minutes} min (reminderScheduler.ts:157), which is absurd for long leads.
Recurring events
| Option | Description | Selected |
|---|---|---|
| Series-level only | One VALARM on master; per-occurrence fire via scheduler | ✓ |
| Per-occurrence override | RECURRENCE-ID override per occurrence |
User's choice: Series-level only. Notes: Per-occurrence override deferred to a possible future phase.
Claude's Discretion
- Picker placement within
EventForm.tsx(reuse Recurrence<select>pattern). - Exact humanized-unit thresholds/wording for the notification body.
Deferred Ideas
- Per-occurrence (RECURRENCE-ID) reminder override — its own phase if wanted.
- Reminder snooze / notification-preferences UI — already out of scope per REQUIREMENTS.md.
- Reviewed-not-folded todos: PWA BottomTabBar overlap (Phase 17), Gitea CI regression/Docker publish (Phase 8 / backlog).