80bdb91acf107b6e9346f0ba5c0b66926e983df8
mergeIntoCache() unconditionally evicted all cached events in the fetched range, so a transient sync failure (expired CalDAV credentials, an HA/Google token-refresh failure) wiped the affected calendar until the next clean fetch. Home Assistant was the most visible victim: a token failure aborts the whole account fetch and the error arrives without a calendar_id. Now sync errors are split into per-calendar keys (error carries a calendar_id) and whole sources (account-level error without one). mergeIntoCache() keeps matching cached events, and only extends the cached range on a fully clean fetch so failed calendars are retried on the next load. Mirrors the iOS fix. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Description
Languages
Kotlin
100%