fix(02): window occurrences in UTC, not server-local timezone

ICAL.Time.fromJSDate(window, false) interpreted the UTC-midnight window bounds in the
server's local TZ (America/New_York in dev), shifting the window by the server offset and
dropping evening occurrences near a day window's end (e.g. June 11 17:45-04:00 = 21:45Z was
excluded from the June-11 day view). Use UTC so the window is deterministic and correct.
This commit is contained in:
Lucas Berger
2026-06-05 15:28:26 -04:00
parent d07e8af88d
commit 05d9f70b45
+7 -2
View File
@@ -209,8 +209,13 @@ export function expandOccurrences(
const allDay: boolean = dtstart.isDate const allDay: boolean = dtstart.isDate
const uid: string = event.uid ?? '' const uid: string = event.uid ?? ''
const rangeStart = ICAL.Time.fromJSDate(windowStart, false) // useUTC=true: windowStart/windowEnd are absolute instants (midnight-UTC of the
const rangeEnd = ICAL.Time.fromJSDate(windowEnd, false) // requested dates). Interpreting them in UTC keeps the occurrence-window comparison
// absolute. With useUTC=false ical.js used the SERVER's local timezone, shifting the
// window by the server's offset and dropping evening occurrences near the window end
// (e.g. a 17:45-04:00 event = 21:45Z fell past a day window whose end was shifted to 20:00).
const rangeStart = ICAL.Time.fromJSDate(windowStart, true)
const rangeEnd = ICAL.Time.fromJSDate(windowEnd, true)
const occurrences: CalendarOccurrence[] = [] const occurrences: CalendarOccurrence[] = []