mirror of
https://github.com/go-vikunja/vikunja.git
synced 2026-07-16 06:42:23 -05:00
iOS Reminders (and other RFC 6578 clients) never learned about tasks deleted on the Vikunja side: caldav-go answers unknown REPORT types with 412, which makes iOS silently stop syncing, and deleted tasks left no protocol-level trace a client could observe. Intercept sync-collection REPORTs before caldav-go sees them and answer per RFC 6578: tasks changed since the sync token as 200 entries and deleted tasks as 404 entries. Deletion records come from task soft-deletes, which are kept for 30 days before being purged. Token edge cases: delta comparisons are inclusive because tokens have second granularity (re-reported items keep their etag, so clients skip the download), and tokens older than the soft-delete retention answer 403 + valid-sync-token to force a full resync instead of a delta that would silently miss purged deletions.