Version 2.2.0
October 20, 2026
Features
- cp: add a status filter to the calendar (7a7ed4b)
- cp: default new events to user's preferred timezone (77b191e)
- cp: display city for selected timezone (1aa9335)
- cp: improve timezone picker ux (21d13dd)
- cp: link the title in calendar popovers to the edit page, with the event type above it (9b06fe8)
- cp: match the field settings to Craft's Date field (32d7f78)
- cp: open the editor slideout when double-clicking calendar events (9be1a85)
- cp: override Craft's timezone inputs (ad88a5e)
- cp: show the calendar in the user's preferred timezone (8c8a13f)
- cp: show the event's status in calendar popovers (b011d46)
- end date for all-day events (517e7b6)
- event to customize the organizer filter query (9051890)
- event to override the timezone labels (7a2a57a)
- format any event date with eventDate filter and EventDateHelper::formatDate() (c467530)
- get a query for the events of each source with getEventQueries() (e7b68ba)
- show fields based on whether an event repeats or is all day (334de2c)
Bug Fixes
- apply the constraint in getOccurrences() to events that don't repeat (1eee142)
- cp: calendar browser history (5e99ead)
- cp: delete the right occurrence from the calendar for events in other timezones (2ba7e59)
- cp: display time zones in calendar popup when they differ from user's (e540206)
- cp: handle timezones newer than the intl extension's data (d082d21)
- cp: keep weekly repeat weekdays when start date doesn't change (f802893)
- cp: read dates from mobile date inputs as local dates (cc72502)
- cp: show all-day events on the right day in element indexes (e5fcdc2)
- cp: show event dates in event's timezone (1e37114)
- cp: show events ending early the next morning on their start day only (02f9cc5)
- cp: show the selected view in the calendar's view menu (f941fd8)
- cp: show unpublished events (e.g. disabled or pending) as hollow instead of struck through (28f83e4)
- cp: style calendar block events consistently with dot events (938058e)
- cp: update timezone dropdown labels when start date changes (e3b22ee)
- cp: use RRULE weekdays for monthly repeats (645921b)
- don't fail when saving a new event element directly (33434da)
- don't fail when skipping the format of the eventDate filter (ff495bb)
- format dates and times in site locale (d75d12a)
- increase a new event's sequence on its first change, instead of leaving it at 0 (819298a)
- increase an event's sequence when it's deleted or restored, so calendars apply the change (5936086)
- keep days of all-day events in system timezone (b32d35a)
- keep paragraphs and line breaks in ICS descriptions (23d4ffe)
- rename the after build ICS event from
beforeExporttoafterBuildIcs(a7eb124) - store all-day events in system timezone (67c4442)
- throw a clear exception for an unknown event source key (150ba00)
- throw an error for an invalid event date format (09b6d52)
- use a hard-deleted event's latest sequence in its ICS, instead of 0 (5bca8d7)
Version 2.0.1
October 15, 2026
Bug Fixes
- find the last end date of events with more than 732 occurrences (3dd4945)
- ics: convert dates in fixed offset timezones to UTC (a8b24a7)
- ics: define timezones for inclusions before the start (05c42df)
- ics: don't define a timezone for UTC (52e8475)
- ics: include seconds in timezone offsets (9d97fdb)
- ics: timezone definitions (b6e7a77)
- include field label in validation errors (d2cf5f7)
Version 2.0.0
October 9, 2026
EventDate::getNextOccurrence()now only returns a future occurrence, instead of the first occurrence today.
Features
- field: optional all day events (2b9ba9d)
Bug Fixes
- all day events in ICS exports and repeating rules (0144229)
- all day events in twig filters (d37adcf)
- compare the calendar secret in constant time (0d891d3)
- consistent separator for repeating event date ranges (dccc61e)
- end an event the next day if end time is before start time (86b99ab)
- field: always fill the start & end times (b9b6a30)
- field: never-ending events dropping out of the calendar (c1f0e21)
- ics: skip events without dates in exports (0793205)
- only return occurrences that start after now (7bb1d0c)
- refresh occurrences and repeat description when the rule is refreshed (925e422)
- require post request to delete event occurrence (da0378e)
- show both dates for events that end the next day (76cc0a0)
- throw 400 when events action is passed invalid dates (6b29579)
Version 1.1.1
August 8, 2026
Bug Fixes
- field: validation for infinite repeat (f9a5f1d)
Version 1.0.0
August 6, 2026
Features
- initial commit (47d35a7)