Two bugs in the export_ics path: 1. X-WR-CALNAME was written raw: calendar names containing commas, semicolons or backslashes produced invalid ICS (RFC 5545 §3.3.11 requires those characters to be escaped as \, \; and \\). Fix: wrap cal.name in the existing _ics_escape() helper, which is already used for SUMMARY, DESCRIPTION, and LOCATION on the lines immediately below. 2. DTSTART and DTEND on non-all-day events always emitted the naive ISO string (e.g. 20260602T100000) regardless of CalendarEvent.is_utc. Consumers treat a naive datetime as floating/local time, so UTC events imported into Google Calendar or Apple Calendar shifted by the user's timezone offset. Fix: append 'Z' when is_utc is True, matching the pattern already used by the serialise_event() helper at line 408.
3.4 KiB
3.4 KiB