Fixes [#82](https://codeberg.org/jlmakiola/calendula/issues/82) — found while investigating [#67](https://codeberg.org/jlmakiola/calendula/issues/67). Search formatted a result's date with `ZoneId.systemDefault()`, while the month, week, day, agenda and detail surfaces all resolve an all-day event's dates in UTC. All-day events are stored at UTC midnight with an exclusive end, so west of UTC that difference is a whole day: an event on the 19th came back from search dated the 18th, contradicting the grid it was filed in. East of UTC the offset lands on the same date, which is why it went unnoticed. ### What changed The rule was already written down three times — a private helper in `AgendaUiState`, inline in `coversDay`, inline in `formatWhen` — so rather than add a fourth copy, `dateZone` / `spanFirstDay` / `spanLastDay` / `spansMultipleDays` move into `domain/Models.kt`, where they are pure date logic rather than agenda UI state. Search reads its date through `spanFirstDay`; the clock time stays in the device zone, as it is only ever rendered for timed events. ### Testing New `domain/EventInstanceSpanTest` pins both directions: the west-of-UTC case from this issue and the east-of-UTC leak from #65, plus multi-day spans, timed events following the device zone, and zero-length events. Local sweep green: `test` (541), `lint`, `assembleDebug`, `check_translations.py`. On-device reviewed on the Pixel 10 with the device timezone set to New York (fix confirmed) and back to Berlin (no regression in search, month, week, day, agenda or the agenda widget). --- _Recreated on Codeberg from Gitea PR #102 (same head `7c94425`, unchanged) as part of the forge migration. Already on-device signed off._ Co-authored-by: Jean-Luc Makiola <business@jeanlucmakiola.de> Reviewed-on: https://codeberg.org/jlmakiola/calendula/pulls/88
This commit is contained in:
@@ -37,6 +37,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||
unaffected.
|
||||
|
||||
### Fixed
|
||||
- Search results now show an all-day event's real date. West of UTC — anywhere in
|
||||
the Americas, say — a search hit was dated one day early, disagreeing with the
|
||||
day the month, week and agenda views file the same event under ([#82]).
|
||||
- Reminders now arrive for every calendar you have switched on. A calendar that
|
||||
was hidden at system level — switched off in another calendar app, or never
|
||||
switched on after being added — still showed its events and listed their
|
||||
@@ -1166,3 +1169,4 @@ automatically, with zero telemetry and no internet permission.
|
||||
[#75]: https://codeberg.org/jlmakiola/calendula/issues/75
|
||||
[#76]: https://codeberg.org/jlmakiola/calendula/issues/76
|
||||
[#78]: https://codeberg.org/jlmakiola/calendula/issues/78
|
||||
[#82]: https://codeberg.org/jlmakiola/calendula/issues/82
|
||||
|
||||
Reference in New Issue
Block a user