Please find below a revision for productivity/baikal. As explained in [0], when creating a calendar via the web interface, Baikal sets cal:calendar-timezone to a timezone string instead of a VTIMEZONE. This causes an issue when querying events with expanded recurrences, see [1].
The patch below --proposed in [0], but not yet merged-- fixes this issue. Tested on my server running Baikal. Ok? [0] https://github.com/sabre-io/Baikal/issues/1241 [1] https://github.com/sabre-io/Baikal/issues/1325 Index: Makefile =================================================================== RCS file: /cvs/ports/productivity/baikal/Makefile,v diff -u -p -r1.42 Makefile --- Makefile 25 Dec 2025 08:35:45 -0000 1.42 +++ Makefile 1 Feb 2026 12:24:09 -0000 @@ -2,6 +2,7 @@ COMMENT= lightweight CalDAV and CardDAV VERSION= 0.11.1 DISTNAME= baikal-${VERSION} +REVISION= 0 SITES= https://github.com/sabre-io/Baikal/releases/download/${VERSION}/ DISTFILES= ${DISTNAME}.zip CATEGORIES= productivity www Index: patches/patch-vendor_sabre_dav_lib_CalDAV_Plugin_php =================================================================== RCS file: patches/patch-vendor_sabre_dav_lib_CalDAV_Plugin_php diff -N patches/patch-vendor_sabre_dav_lib_CalDAV_Plugin_php --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-vendor_sabre_dav_lib_CalDAV_Plugin_php 1 Feb 2026 12:24:09 -0000 @@ -0,0 +1,22 @@ +https://github.com/sabre-io/Baikal/issues/1241 +https://github.com/sabre-io/Baikal/issues/1325 + +Index: vendor/sabre/dav/lib/CalDAV/Plugin.php +--- vendor/sabre/dav/lib/CalDAV/Plugin.php.orig ++++ vendor/sabre/dav/lib/CalDAV/Plugin.php +@@ -508,14 +508,7 @@ class Plugin extends DAV\ServerPlugin + $tzProp = '{'.self::NS_CALDAV.'}calendar-timezone'; + $tzResult = $this->server->getProperties($path, [$tzProp]); + if (isset($tzResult[$tzProp])) { +- // This property contains a VCALENDAR with a single +- // VTIMEZONE. +- $vtimezoneObj = VObject\Reader::read($tzResult[$tzProp]); +- $calendarTimeZone = $vtimezoneObj->VTIMEZONE->getTimeZone(); +- +- // Destroy circular references so PHP will garbage collect the +- // object. +- $vtimezoneObj->destroy(); ++ $calendarTimeZone = new DateTimeZone($tzResult[$tzProp]); + } else { + // Defaulting to UTC. + $calendarTimeZone = new DateTimeZone('UTC');
