Accessibility improvements
- Fixed a typo in the mini-cal aria-label, and updated the accessibility (dialog settings and keyboard trapping) of the “Subscribe” dialog on the front-end calendar.
Behavior adjustments
- Privacy and visibility settings for Linked Calendar events can now be set and overridden on a per-event basis. Before, the visibility of the Linked Calendar would always take precedence over the individual event settings.
- Linked Calendars with multiple CATEGORIES: lines in a single ICAL event record will now be combined when syncing.
Bugs
- Linked Calendar fixes
- Fixed an issue introduced in 2.21.1 that would auto-restore even manually deleted Linked Calendar events (one-off, or via Save and reset all events). Now, only automatically deleted events are candidates for auto-restore. Other events can still be manually restored from the trash can, unlinked from the Linked Calendar feed.
- Fixed an issue that could prevent ATTACH: images from Linked Calendars from being loaded in certain front-end contexts.
- Fixed an issue with copying custom fields via linked calendar to instances of a repeating event.
- Repeating and multi-day event fixes
- Fixed an issue affecting ICAL “All events in series” links for monthly events that repeat by day of the week which could cause the wrong week to be selected in some cases.
- Fixed an issue where a link copy of a multi-day event would become out of sync when the parent event was later switched to a single-day event.
- Fixed an issue where repeating events whose start/end dates are later edited could fail to appear in certain upcoming events lists.
- Fixed an issue where the front-end calendar’s “repeats_end” value could be erroneously empty when events are set to repeat by number of occurrences rather than end date.
- Fixed an issue where the dashboard “Upgrade Scheduled” notice could sometime show a date in the past for sites using SELF_UPDATE=true.
- Fixed an issue where events could erroneously be skipped from only_today=true widgets or API requests.
- Fixed an issue where a custom variable containing widget settings (<arg id=”“> tags) wouldn’t work if loaded conditionally into a widget.
- Fixed an issue affecting enforcement of best-practice line lengths for ICAL output in LiveWhale-generated ICAL feeds.
- Fixed calendar bug that caused the event detail AJAX request to query for event_id when the slug was numeric.
- Fixed broken links for events already on a page when adding more events by clicking a pagination link.
- Fixed a bug that caused the wrong date and time string to display on calendar list views for events that spanned daylight savings offsets.
- Fixed a PHP 8.3 compatibility bug when loading calendar preload results.
- Fixed a case where repeated calls to the logout function could result in duplicate cookies being set, overfilling the allowed header size.
- Fixed an issue that could cause custom fields to not be returned in JSON API v1 results.
- Fixed an issue with using custom fields on locations in a locations widget.
- Fixed an issue affecting event links and prevented events from loading for sites using the old-style #! urls (non-pushstate). This URL style will be fully deprecated in LiveWhale 3.0.
- Fixed an issue that prevented mailto: email links from honoring “open in a new window” setting in WYSIWYG areas.
- Fixed a bug with AP style date formatting that could cause DTEND to be parsed incorrectly in an ICAL feed.
- Fixed an issue where a dev server could periodically report a missing backup when attempting to run a content sync from production.
- Fixed a JavaScript bug that prevented date and time pickers from closing after selecting a value when the beta Planning View is enabled.
- LiveWhale CMS Only
- Fixed a bug that caused all navigation data to be lost under with an unusual save sequence.
- Fixed an issue affecting the addition/removal of disallows from the robots.txt refresh process.
- Fixed an issue that could cause the editor toolbar to appear on the front-end for profile-only editors.
Developer options
- You can now use relative dates (“today”, “+1 week”, “-7 day”) in widget “filter” arguments.
- During Linked Calendar syncing, the “has this item changed?” check now runs after custom code, so you can use the onBeforeSync to trigger data changes that will get captured on the next automatic or manual sync.
- Added support for custom variables in the format_widget arg of inline galleries.
Behind-the-scenes
- Performance improvement to linked calendar syncing and auto-restore from trash added in 2.20.1.
- Performance improvement: aggregated a few additional JS and CSS resources on the front-end calendar to improve calendar load by removing a few HTTPS calls.
- Fixed an XSS bug, introduced in LiveWhale 2.21.1 with support for quoted calendar search strings, that could allow JavaScript to be inserted into the search “now showing” component.
- Addressed a possible XSS injection vector via /live URLs.
- Consolidated code checking for broken URLs into one isBrokenLink function, fixing some cases where link checker might return erroneous results.
Release date: December 07, 2025