All-day events live at UTC midnight, so a raw "1 day before" reminder
fires at an off hour (02:00 local in CEST) rather than the morning. Add a
global "all-day reminder time" setting (default 09:00) and encode it into
the provider MINUTES offset so the reminder lands at the chosen wall-clock
time the day before instead.
- AllDayReminderEncoding: pure to/from provider-minutes helpers, keeping
the form/UI/diff in whole-day "semantic" minutes and converting only at
the Reminders read/write boundary (insertEvent, reconcileReminders,
EventDetailMapper). Covers DST, negative offsets, and pre-existing rows.
- SettingsPrefs.allDayReminderTimeMinutes (default 540) threaded from the
repository into the data-source write paths.
- Settings: a time-picker row, plus a shared TimePickerAlert lifted from
the event editor.
- Fix the time picker's 12/24-hour detection: honour an explicit system
override, else fall back to the device locale rather than the app's
per-app language, so it matches the rest of the device.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>