feat(edit): conflict dialog on save + store metadata refresh (v2.0)
No locking (plan 03, decision 5): openForEdit keeps an EditSnapshot — the prefilled form plus the raw Events-row times, which the form itself can't see (it derives its times from the tapped occurrence, so an externally moved event would otherwise stay invisible). Right before writing, performSave re-reads the event and compares snapshots: a mismatch parks the save in SaveUiState.AwaitingConflict carrying the already-chosen recurring scope, and the dialog offers overwrite / discard / cancel (OptionCard style). Overwrite still writes only dirty fields, so external changes to untouched fields survive either way. A deleted event lands in SaveUiState.Gone — an informational dialog that closes form and detail. Fields the form can't write (attendees, status, self response, reminder methods) are excluded from the comparison so sync noise can't fake a conflict. The load-time zone is pinned in the EditTarget so a device timezone change mid-edit can't either. Store metadata: F-Droid descriptions (DE+EN) and the README stop claiming read-only and now describe write support and reminder delivery. New fastlane phoneScreenshots (6 per locale: week/month/day/detail/form/ reminder onboarding), captured on-device against demo-only calendars. Tests: EditSnapshot equality (unchanged event, field change, row-time move the form can't see, non-writable changes stay quiet). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
13
CHANGELOG.md
13
CHANGELOG.md
@@ -7,6 +7,19 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||
|
||||
## [Unreleased]
|
||||
|
||||
### Added
|
||||
- Conflict handling when saving an edit: if the event changed elsewhere
|
||||
(sync, another device) while the form was open, saving now asks whether
|
||||
to keep or discard your changes instead of silently overwriting the
|
||||
edited fields — and tells you when the event was deleted in the meantime.
|
||||
"Keep" still writes only the fields you touched; external changes to
|
||||
untouched fields survive either way
|
||||
- F-Droid store screenshots (German + English), captured with demo data
|
||||
|
||||
### Changed
|
||||
- F-Droid description and README no longer claim the app is read-only —
|
||||
they now describe write support and reminder delivery
|
||||
|
||||
## [1.4.0] — 2026-06-11
|
||||
|
||||
### Added
|
||||
|
||||
Reference in New Issue
Block a user