0.2.2
June 30th, 2026
What's fixed
- Resolve event dates in the configured timezone for Statamic 6. Statamic 6 stores date fields as the UTC instant of the editor's selected day, so the resolver built an invalid recurrence
DTSTART— crashing the occurrence-cache rebuild on every entry save — and read dates one day early in timezones ahead of UTC. Recurrence (DTSTART/UNTIL/EXDATE/RDATE) is now expanded in the event timezone, so wall-clock times and DST are handled correctly (#20) - Harden recurrence resolution: a missing start date, missing frequency, or malformed time no longer aborts the whole cache rebuild (#20)
What's new
statamic-calendar.timezoneconfig option — the timezone events are authored and displayed in. Defaults tostatamic.system.display_timezone, thenapp.timezone, then UTC (#20)
What's changed
- Support Statamic 6 in the test harness (extends Statamic's
AddonTestCase); CI now runs the suite against both Statamic 5 and 6 (#21)
0.2.1
June 7th, 2026
What's fixed
- Exclude unpublished event entries from occurrence cache rebuilds, live calendar tag resolution, and direct occurrence routes (#19)
- Return 404 for direct occurrence URLs belonging to unpublished entries (#19)
What's changed
- Harden npm installs in CI with
--ignore-scripts,--no-audit, and package manager guardrails (#18)
0.2.0
May 1st, 2026
What's new
- Add
OccurrenceBuilding, a cache-build event for enriching materialized occurrences with custom fields (#15) - Persist custom occurrence fields through cached
OccurrenceData, JSON API responses, and{{ calendar }}tag output - Expose both the source entry and resolved occurrence to listeners, so extras can depend on occurrence-specific data like start/end dates
- Add pagination to the REST API with
page/per_pageparameters andapi.max_per_pagelimits (#7) - Add Statamic-style pagination to
{{ calendar }}and{{ calendar:for_organizer }}, includingpaginate,page_name, andassupport (#7)
What's changed
- Align calendar tag output with Statamic's
OutputsItemsconventions and default paginated keyoccurrences - Keep core occurrence fields authoritative when custom extras use reserved keys
- Document custom occurrence fields and pagination options in README, config comments, and event class docblock
0.1.2
April 20th, 2026
What's fixed
- Fix
{{ calendar:ics_download_url }}inside{{ calendar }}loops — loop items now exposeoccurrence_id(composed{entry_id}-{Y-m-d-His}), so .ics download links resolve correctly instead of 404-ing (#10)
0.1.1
April 20th, 2026
What's fixed
- Fix eloquent driver compatibility: normalize numeric organizer IDs and tag-level entry IDs to strings (#9)
0.1.0
February 8th, 2026
🎉 Initial Release
Recurring events and cached occurrences for Statamic v5/v6.
Features
- Recurring events — define recurrence rules (RRULE) on entries; occurrences are expanded and cached automatically
calendar:monthtag — render a monthly grid view in your Antlers templatescurrent_occurrencetag — resolve the current or next upcoming occurrence for an entry- iCalendar (.ics) export — full calendar feed and per-event download
- "Add to calendar" links — generate links for Google Calendar, Outlook, etc.
- JSON REST API — query occurrences programmatically via
/!/calendar/occurrences - Auto-registered routes — index and date-segment routes configured from
config/calendar.php - Default templates — ships with ready-to-use index, show, and month-grid views (Tailwind CDN)