Merge main into release/v2.19.4

Brings #248 (EXDATE moves with the series when its times change) onto the
release branch, alongside the translations and dependency updates that landed on
main.

#245 and #248 both grew EventWriteMapper's EXDATE handling in the same place,
which conflicted. They are independent — #245 added exdateContains for the
detach path, #248 added shiftedExdate/exdateAfter for re-anchoring — so both
sides are kept, and their tests with them.
This commit is contained in:
2026-08-31 19:45:48 +02:00
8 changed files with 1359 additions and 249 deletions

View File

@@ -8,6 +8,16 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
### Fixed
- **A deleted occurrence no longer comes back when the series is re-timed.**
Delete a single occurrence of a repeating event, then change the time of the
whole series, and the occurrence you had removed reappeared. Doing it the
other way round — "This and all following events" — lost every removal in the
part of the series being changed. Removals now travel with the event: they
keep their place in the series across a time change, a move to a different
day, a timezone change and a switch to or from an all-day event, and they
carry over when a series is split. Repeating events on your device's own
calendars are affected, including the birthday and anniversary calendars
Calendula creates from your contacts ([#248]).
- **Home-screen widgets now turn the page at midnight.** Both the month and the
agenda widget kept highlighting yesterday as "today" — and the agenda kept
greying out the wrong events as already past — until you paged the month back
@@ -1522,3 +1532,4 @@ automatically, with zero telemetry and no internet permission.
[#225]: https://codeberg.org/jlmakiola/calendula/issues/225
[#228]: https://codeberg.org/jlmakiola/calendula/issues/228
[#234]: https://codeberg.org/jlmakiola/calendula/issues/234
[#248]: https://codeberg.org/jlmakiola/calendula/issues/248