Repository navigation
Reminders
Status: Current implemented behavior. Audience: Users and contributors. Implementation:
features/hydration/reminders,features/mindfulness/reminders,features/cycle/reminders,features/settings. Navigation: hydration detail, mindfulness detail, Settings → Cycle, reminder-related settings. Related: Feature map, Hydration, Mindfulness, Cycle tracking.
OpenVitals reminders are local device notifications for supported wellness workflows.
Hydration reminders can use an active time window and interval schedule. They pause after the daily hydration goal is reached and resume on the next day. Saving a hydration entry can automatically hide an active hydration reminder.
The countdown is anchored to the last logged drink rather than to a fixed clock, so logging a drink pushes the next reminder out by a full interval and the user is nudged after a real gap.
The reminder itself shows today's intake against the daily goal with a progress bar. Tapping it opens the app.
A hydration reminder carries two one-tap add buttons, so a drink can be logged from the notification without opening the app. The offered volumes are the most recently used container sizes, padded with the last custom amount and then a glass and a bottle, so there are always two valid sizes. Metric volumes are labelled in millilitres; imperial volumes use the app's fluid-ounce formatting.
Mindfulness reminders can help users return to timer or session logging workflows. Reminder settings stay local to the device.
Cycle reminders are off by default and are configured in Settings → Cycle. Three kinds exist:
- Daily log at a chosen time (21:00 by default). It is skipped when the day already has a log.
- Upcoming range, 1 to 3 days before the estimated next period range. It exists only while there is an estimate.
- Late cycle, 0 to 7 days after the estimated range ends without a new period start.
What the notification shows is a separate choice: concealed (a neutral "Reminder" text that reveals nothing, the default), descriptive (says why the reminder came, only on an unlocked screen), or custom (the user's own title and message). The lock-screen version is always neutral.
The schedule is recomputed after every day-log save, delete, exclusion or backfill and every settings change, so a reminder that no longer applies is cancelled rather than shown late. Turning the reminders on asks for the notification permission first and enables them once it is granted. The estimate is read strictly and only with the background-read grant; without it, or when Health Connect cannot answer, the window and late-cycle alarms already armed stay as they are and are re-planned the next time the app opens, like the other reminders.
Reminders are scheduled as wall-clock alarms, so the schedule is re-armed after:
- A device reboot.
- An app update that replaces the installed package.
- A time zone change.
- A manual or network clock change.
Without the re-arm, an alarm set before the change would fire at the old absolute instant, which is the wrong time of day. Hydration, mindfulness, and cycle reminders are restored the same way.
On Android versions that require it, OpenVitals asks for notification permission before showing reminders. Boot completion permission is used to restore local schedules after reboot or app update.
Reminder preferences are stored locally. Reminders do not upload health data and do not require an OpenVitals account.
Generated from docs/features/reminders.md. Edit it there; changes made here are overwritten.
This wiki mirrors the Markdown in Hale-MTU/OpenVitals on every push to main.
Features
- Features
- Achievements
- Activity And Training Plans
- Activity Metrics
- Apple Health Import
- Beverage Logging And Caffeine
- Bluetooth LE Sensors
- Body Energy
- Body Metrics
- CoMaps Navigation Context
- CSV Import
- Cycle Tracking
- Daily Readiness
- Elevation Correction
- Feature Map
- FIT Files Import
- Food Logging
- GPX/KML/KMZ/TCX Route Import
- Health Connect Metrics Dashboard
- Health Report Export
- Heart And Vitals
- Heart Rate Recovery
- Home Screen Widgets
- Hydration
- Manual Entry Of Metrics
- Medical Records
- Metric Detail Customization
- Mindfulness
- Non Health Connect Metrics Dashboard
- Nutrition
- Offline Maps Support
- Onboarding And Permissions
- Preloaded Beverage Nutrition Reference
- Privacy, Support, And Diagnostics
- Recording Of Activity
- Reminders
- Settings And Preferences
- Sleep Score And Recovery
- Sleep Tracking
- Statistics
- Sync With Another Phone
How-to
App
- App Guide
- FAQ
- Getting Started
- Health Connect
- Install
- Local And Connected Editions
- Permissions
- Privacy
- Screenshots
- Support
Reference
- Design Reference
- Reference
- Design Guidelines for Offline & Sync
- OpenVitals UI Notes
- Reference: Data Capture
- Reference: Data Display
- Reference: Health Connect Matchmaking
- Reference: Health Connect Onboarding
- Reference: Health Connect Permissions
- Reference: Health Connect UX
- Reference: Promoting Health Connect
Engineering
- Code Analysis
- Engineering
- Flutter ↔ Kotlin test-parity matrix
- apple-health-import
- Architecture
- body-cycle-recovery
- Design system conformance
- Development
- Feature Playbook
- Flutter -> Kotlin test parity: domain/data/core/contract/state/navigation/di/bootstrap/l10n/widget_test
- Flutter → Kotlin test-parity matrix: features section
- Flutter → Kotlin test-parity matrix: ui / goldens / integration / fixtures
- Flutter-to-Kotlin test-parity matrix — dashboard + devicesync
- manual-entry
- Translations
Proposals
- Proposals
- Activity Start Flow Analysis
- Activity Start Flow Simplification Proposals
- Caffeine Detail And Future Sleep Insights
- Cycle Tracking: Design and Status
- Medical Records Through Health Connect
- Medical Records: What Is Left
Releases
- OpenVitals 2.16.0
- OpenVitals 2.15.2
- OpenVitals 2.15.1
- OpenVitals 2.15.0
- OpenVitals 2.14.5
- OpenVitals 2.14.4
- OpenVitals 2.14.3
- OpenVitals 2.14.2
- OpenVitals 2.14.1
- OpenVitals 2.14.0
- OpenVitals 2.13.0
- OpenVitals 2.12.0
- OpenVitals 2.11.2
- OpenVitals 2.11.1
- OpenVitals 2.11.0
- OpenVitals 2.10.1
- OpenVitals 2.10.0
- OpenVitals 2.9.1
- OpenVitals 2.9.0
- OpenVitals 2.8.0
- OpenVitals 2.7.3
- OpenVitals 2.7.2
- OpenVitals 2.7.1
- OpenVitals 2.7.0
- OpenVitals 2.6.6
- OpenVitals 2.6.5
- OpenVitals 2.6.4
- OpenVitals 2.6.3
- OpenVitals 2.6.2
- OpenVitals 2.6.1
- OpenVitals 2.6.0
- OpenVitals 2.5.0
- OpenVitals 2.4.1
- OpenVitals 2.4.0
- OpenVitals 2.3.2
- OpenVitals 2.3.1
- OpenVitals 2.3.0
- OpenVitals 2.2.8
- OpenVitals 2.2.7
- OpenVitals 2.2.6
- OpenVitals 2.2.5
- OpenVitals 2.2.4
- OpenVitals 2.2.3
- OpenVitals 2.2.2
- OpenVitals 2.2.1
- OpenVitals 2.2.0
- OpenVitals 2.1.0
- OpenVitals 2.0.4
- OpenVitals 2.0.3
- OpenVitals 2.0.2
- OpenVitals 2.0.1
- OpenVitals 1.9.0
- OpenVitals 1.8.0
- OpenVitals 1.7.7
- OpenVitals 1.7.6
- OpenVitals 1.7.5
- OpenVitals 1.7.4
- OpenVitals 1.7.3
- OpenVitals 1.7.2
- OpenVitals 1.7.1
- OpenVitals 1.7.0
- OpenVitals 1.6.3
- OpenVitals 1.6.2
- OpenVitals 1.6.1
- OpenVitals 1.6.0
- OpenVitals 1.5.1
- OpenVitals 1.5.0
Project