From b8c8e9257a6e6427601f30bccf644343be1fdbce Mon Sep 17 00:00:00 2001 From: mARTin Date: Sun, 29 Mar 2026 16:29:26 +0200 Subject: [PATCH] fix: retry individual Apple calendar fetches on network timeout Batch errors like 'fetch failed' were only retried at the login/client-init level. Per-calendar fetchCalendarObjects calls had no retry, so a single transient iCloud network timeout silently dropped all events from that calendar. Now wraps each fetchCalendarObjects with withRetry(2 retries, 3s/6s). v1.77.5 --- package.json | 2 +- src/lib/apple-calendar.ts | 17 ++++++++++------- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/package.json b/package.json index ea1a727..d186511 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "my-weekly-todo-list", - "version": "1.77.4", + "version": "1.77.5", "description": "A web-based weekly task management application that organizes to-dos and calendar events in a single, intuitive weekly view", "main": "index.js", "scripts": { diff --git a/src/lib/apple-calendar.ts b/src/lib/apple-calendar.ts index a61e929..bbca861 100644 --- a/src/lib/apple-calendar.ts +++ b/src/lib/apple-calendar.ts @@ -496,13 +496,16 @@ export const getUpcomingEventsBatch = async ( continue; } - const events = await client.fetchCalendarObjects({ - calendar: targetCalendar, - timeRange: { - start: new Date(timeMin).toISOString(), - end: new Date(timeMax).toISOString(), - }, - }); + const events = await withRetry( + () => client.fetchCalendarObjects({ + calendar: targetCalendar, + timeRange: { + start: new Date(timeMin).toISOString(), + end: new Date(timeMax).toISOString(), + }, + }), + 2, `fetchCalendarObjects:${calendarUrl.split('/').pop()}` + ); const parsedEvents: AppleCalendarEvent[] = []; const minTime = new Date(timeMin).getTime();