From 301f105fbc3df8185cd981043065ddbe8405aebf Mon Sep 17 00:00:00 2001 From: Jean-Luc Makiola Date: Thu, 11 Jun 2026 20:57:44 +0200 Subject: [PATCH] =?UTF-8?q?release:=20cut=20v1.3.0=20=E2=80=94=20event=20e?= =?UTF-8?q?dit?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Version bumped to 1.3.0 / 11. No code changes beyond the version — 1.3.0 is the reviewed-and-approved edit slice: shared form for editing, scope-at-save for recurring events (this / this and following / all, exception rows and series splits), three-way recurring delete, simple recurrence picker with weekly weekday toggles, and the stale-instances split fix. CHANGELOG [1.3.0] carries the details. Co-Authored-By: Claude Fable 5 --- CHANGELOG.md | 41 +++++++++++++++++++++++++++++++++++++++++ app/build.gradle.kts | 4 ++-- 2 files changed, 43 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cf09621..15266b4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,47 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [1.3.0] — 2026-06-11 + +### Added +- Event editing: a pencil action on the detail screen (writable calendars + only) opens the event form prefilled with the event. Only fields you + actually changed are written back; saving an untouched form is a no-op. + Sections holding data are always shown, regardless of the form-field + defaults; the calendar itself can't be changed while editing +- Recurring events — scoped writes, chosen when saving (Google model): + "only this event" (a modified-occurrence exception), "this and all + following" (the series is split at the occurrence), or "all events in + the series". Changing the recurrence rule rules out "only this event" +- Deleting a recurring event gained the middle option too: "this and all + following events" ends the series just before the chosen occurrence +- Recurrence picker (create and edit): one-tap daily/weekly/monthly/yearly + presets plus a custom step with interval + unit, weekday toggles for + weekly rules ("every week on Mon and Fri"), and an end condition (never / + on a date / after a number of times). Rules the picker can't express + (e.g. "second Thursday monthly") are shown humanized and preserved + verbatim unless replaced. Recurrence also joined the optional form + fields and their settings defaults +- Validation: a repeat that would end before the event starts is flagged + (it would otherwise vanish from every view) + +### Changed +- Editing reminders reconciles against the provider's actual rows: + reminders you didn't touch keep their method (e.g. email reminders on + synced events survive unrelated edits) +- The contextual WRITE_CALENDAR upgrade for v1.0 installs covers the edit + action like delete + +### Fixed +- Splitting a series ("this and following") sends the complete time-column + set in one update, so the provider regenerates its cached instances — an + RRULE-only update left a stale duplicate of the tapped occurrence on the + split day +- RRULE UNTIL values are written as the local end of day expressed in UTC + (instead of a flat `T235959Z`), so recurrences can't leak an extra day in + timezones ahead of UTC +- `versionName`/`versionCode` bumped to 1.3.0 / 11 + ## [1.2.1] — 2026-06-11 ### Added diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 9b9965f..d96f35a 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -23,8 +23,8 @@ android { applicationId = "de.jeanlucmakiola.calendula" minSdk = 29 targetSdk = 36 - versionCode = 10 - versionName = "1.2.1" + versionCode = 11 + versionName = "1.3.0" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" }