What
Replace the single next-occurrence wake alarm with a per-weekday schedule (Mon–Sun, each with a time + enable toggle), persisted locally, plus two notification safety nets so a missed alarm is never a surprise.
Schedule
- New table
alarm_schedule (weekday, hour, minute, enabled) with a laddered migration; the existing single-alarm value migrates into its matching weekday slot.
- On every successful connect and headless sync, arm the strap for the next scheduled occurrence (the strap holds one alarm; re-arm on connect is the WHOOP-app pattern). Skip re-arming when the currently armed target already matches the next occurrence.
- UI: 7 weekday rows with time pickers + toggles, a live 'Next: Tue 07:30 — Confirmed / Waiting / Not confirmed' status line, Test buzz, and Cancel-all. Arm state stays honest — real strap confirmation only, no fabricated green ticks.
Safety notifications (toggles in the existing notification settings surface)
- Latch failure — if the arm write doesn't receive event 56 within the confirmation grace window, send a local notification immediately: the alarm was not confirmed.
Happy to implement as a PR.
What
Replace the single next-occurrence wake alarm with a per-weekday schedule (Mon–Sun, each with a time + enable toggle), persisted locally, plus two notification safety nets so a missed alarm is never a surprise.
Schedule
alarm_schedule(weekday, hour, minute, enabled) with a laddered migration; the existing single-alarm value migrates into its matching weekday slot.Safety notifications (toggles in the existing notification settings surface)
Happy to implement as a PR.