Releases: KashCal/KashCal
v23.1.2
v23.1.1
v23.0.0
What's New
- Device Calendar Integration: See your phone's calendar in KashCal alongside iCloud, CalDAV, and ICS
- Zoho CalDAV: Zoho calendar verified working
- Multi-Home-Set: Support for CalDAV servers with multiple calendar-home-set URLs
Plus many bug fixes and performance improvements.
v22.5.15
Fix: False parse-failure counting for VTODO/VJOURNAL
CalDAV sync-collection returns hrefs for all resource types (VEVENT, VTODO, VJOURNAL), but KashCal only syncs VEVENTs. Non-event resources were falsely counted as parse errors, causing:
- Sync token held for 3 retry cycles (wasted bandwidth)
- Session status showed PARTIAL instead of SUCCESS
- "⚠ N failed to parse" warnings in Sync History
- Resources permanently "abandoned" after max retries
Fix: Detect VTODO/VJOURNAL/VFREEBUSY resources before counting parse errors. Non-event resources are now silently skipped.
Affected servers: Nextcloud, SOGo (any server with mixed VEVENT+VTODO calendars). iCloud unaffected (separates Reminders into filtered VTODO-only calendar).
v22.5.14
Changes
Features
- Support multiple calendar-home-set URLs per RFC 4791 (#70)
- Handle CalendarContract VIEW/EDIT intents for launcher compatibility
Fixes
- Stop applying default reminders to CalDAV-synced events (#74)
- Default "Start Week On" to system locale instead of Sunday
Tests
- Add coverage for birthday sync, RRULE edge cases, ICS export, and location suggestions
- Add coverage for first day of week system default (#71)
- Add edge case coverage for CalendarContract intent parsing
v22.5.13
Batched concurrent multiget for large calendar sync
Zoho CalDAV compatibility fixes
Fix trimIndent() XML corruption in fetchEventsByHref (iCloud 400, Nextcloud 500)
Fix CalDAV sync trigger for non-iCloud accounts
Tests: 133+ new unit tests, Docker server integration tests, diagnostic tests
v22.5.9
v22.5.7 - Multi-Server CalDAV Fix
Bug Fixes
- Fix CalDAV account collision when same username exists on different servers (#69) — Two CalDAV accounts with the same username (e.g. "admin") but different server URLs no longer collide. Previously, adding a second server silently overwrote the first account. Now each server gets its own account row. Includes database migration and URL normalization for calendar-home-set URLs.
Improvements
- Filter CalDAV calendars by supported-calendar-component-set (RFC 4791) — Only calendars that support VEVENT are shown. Task-only or journal-only collections are excluded.
v22.5.6
What's Changed
Shared calendar sync fix
- fix: Retry with fresh etag on 412 conflict instead of silently discarding local changes. When another user edits a shared calendar event between pull and push, the PUT with the stale etag returns 412. PushStrategy now fetches a fresh etag and retries once before falling through to conflict resolution. Also protects against stale CDN reads overwriting just-pushed data.
CalDAV provider improvements
- fix: Make getctag optional for Zoho CalDAV support (fixes #61)
- fix: Fail visibly when credential save fails during account discovery (fixes #55)
- fix: AIA certificate chain completion for ICS subscriptions (fixes #63)
- fix: AIA URL extraction trims ASN.1 junk from DER-encoded certs (#63)
- fix: Improve iCalendar parsing robustness
v22.5.3 - iCalendar parsing robustness
What's New
iCalendar Parsing Robustness (fixes #55)
- Malformed properties no longer kill entire .ics file parsing — events are preserved
- Events missing UID are assigned a generated UUID instead of being silently dropped
- Missing DTSTART falls back to DTEND; swapped DTEND/DTSTART are auto-corrected
- Malformed UTC offsets and day durations are preprocessed before parsing
- IcsPatcher ensures correct UID on push to prevent sync mismatch
Bug Fixes
- Pre-1970 dates no longer incorrectly show today's events (fixes #53)
Technical
- Upgraded icaldav library to 3.2.0