# 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).
