Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
73 lines
3.0 KiB
Markdown
73 lines
3.0 KiB
Markdown
# 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).
|