This was generated by AI during triage.
Triaged 8 September 2026 with the owner. Verified against lib/features/profile/domain/daily_reminder.dart, lib/features/profile/presentation/settings_screen.dart, prototype/settings.jsx:100-112, prototype/onboarding.jsx:68-82, pubspec.yaml (no notification package) and pub.dev (flutter_local_notifications 22.3.0; Swift Package Manager support since 19.0.0).
The ruling
Daily reminders are not part of the v1 launch, and are the next thing built after it. Recorded in docs/design/09-deferred-v2.md. Until they exist, the two Settings rows (the Notifications switch and the Daily reminder time row) are hidden: a switch that stores a wish nothing reads is the inert row the repo's rule forbids (#448, #531). The stored preference stays where it is.
Two rows because the design draws two controls for the one reminder: a switch to turn it on, and a row showing the time it arrives, dim and reading Off while the switch is off. They come back together when this ships.
What exists
#395 built both rows and the time sheet; DailyReminder holds the design's eight slots (6:30, 7:00, 7:30, 8:00, 8:30 AM · 12:30, 6:00, 8:30 PM) and the sheet's promise, One quiet reminder a day to keep your streak alive. Nothing schedules anything. The app is iOS only (ios/ is the only platform directory), so there is no Android half.
Scope of the build
- Scheduling.
flutter_local_notifications (SPM-supported since 19.0.0, so it fits the SPM-only iOS project) behind a small ReminderScheduler seam with a no-op for tests, the way payments, ads and the share sheet are seamed. A daily repeating local notification at the chosen slot, in the device's local time; rescheduled when the time or the switch changes, and re-asserted on launch so a reboot, an upgrade or a timezone change cannot silently drop it.
- Permission. Turning the switch on asks the OS. A refusal leaves the switch off and the row's value telling the truth, with a way to system settings; the switch never shows on when the OS will not deliver.
- What it says. Title BrewPath, body Today's practice keeps your streak alive. Ruled 8 September 2026: no quantity in the sentence, because one lesson is not what keeps a streak — any qualifying activity does.
- When it fires. Only on a day with no qualifying activity yet (ruled 8 September 2026); a day already done gets no nudge.
- Tests. The seam's fake asserts what was scheduled and when; the permission-denied path has a widget test.
Acceptance criteria
The ruling
Daily reminders are not part of the v1 launch, and are the next thing built after it. Recorded in
docs/design/09-deferred-v2.md. Until they exist, the two Settings rows (the Notifications switch and the Daily reminder time row) are hidden: a switch that stores a wish nothing reads is the inert row the repo's rule forbids (#448, #531). The stored preference stays where it is.Two rows because the design draws two controls for the one reminder: a switch to turn it on, and a row showing the time it arrives, dim and reading Off while the switch is off. They come back together when this ships.
What exists
#395 built both rows and the time sheet;
DailyReminderholds the design's eight slots (6:30, 7:00, 7:30, 8:00, 8:30 AM · 12:30, 6:00, 8:30 PM) and the sheet's promise, One quiet reminder a day to keep your streak alive. Nothing schedules anything. The app is iOS only (ios/is the only platform directory), so there is no Android half.Scope of the build
flutter_local_notifications(SPM-supported since 19.0.0, so it fits the SPM-only iOS project) behind a smallReminderSchedulerseam with a no-op for tests, the way payments, ads and the share sheet are seamed. A daily repeating local notification at the chosen slot, in the device's local time; rescheduled when the time or the switch changes, and re-asserted on launch so a reboot, an upgrade or a timezone change cannot silently drop it.Acceptance criteria
1cb7cbe4, 9 Sep), with the scope-doc entry;settings_screen_testasserts the rows are absentdart format,flutter analyze, the metrics gate and the suite pass, with a changelog bullet