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:
@@ -1,12 +1,17 @@
|
||||
Calendula ist eine moderne, quelloffene Kalender-App für Android. Sie liest
|
||||
direkt aus dem System-Kalender-Provider — jede Quelle, die mit deinem Gerät
|
||||
synchronisiert ist (Nextcloud über DAVx5, Google, lokal, WebCal-Subscriptions)
|
||||
erscheint automatisch.
|
||||
Calendula ist eine moderne, quelloffene Kalender-App für Android. Sie
|
||||
arbeitet direkt auf dem System-Kalender-Provider — jede Quelle, die mit
|
||||
deinem Gerät synchronisiert ist (Nextcloud über DAVx5, Google, lokal,
|
||||
WebCal-Subscriptions), erscheint automatisch, und deine Änderungen
|
||||
synchronisieren auf demselben Weg zurück.
|
||||
|
||||
Termine erstellen, bearbeiten und löschen — auch wiederkehrende, mit
|
||||
wählbarer Reichweite (nur dieser Termin / dieser und alle folgenden / ganze
|
||||
Serie) und einem einfachen Wiederholungs-Picker. Erinnerungen stellt
|
||||
Calendula selbst als Benachrichtigung zu — ein Tipp darauf öffnet den
|
||||
Termin.
|
||||
|
||||
Der Unterschied liegt im Design: echtes Material 3 Expressive durchgehend,
|
||||
mit Dynamic Color, expressiven Animationen und neuen Shape-Sprachen.
|
||||
|
||||
V1 ist read-only. Erstellen, Bearbeiten und Löschen von Events kommt mit V2.
|
||||
|
||||
Datenschutz: keinerlei Telemetrie, kein Tracking, kein Netzwerkzugriff — deine
|
||||
Daten bleiben auf dem Gerät.
|
||||
Datenschutz: keinerlei Telemetrie, kein Tracking, kein Netzwerkzugriff —
|
||||
deine Daten bleiben auf dem Gerät.
|
||||
|
||||
Reference in New Issue
Block a user