LiveWhale 2.20.0 5/11/2025
“Move to Group” for group-switchers
Administrators have long been able to use “With checked items…” to find “Move to Group” for moving events, images, and more between groups. In LiveWhale 2.20.0, this behavior has been extended to all group switchers, whether or not you’re an administrator.
Auto height/width now allowed in data-image-size definitions
Since LiveWhale 2.17+ you can use data-image-size=”600x400” to only allow wysiwyg images of precisely that size to be inserted into an editable area. Now, you can use auto in those settings as well to lock just width or just height in your page template or content layout, allowing the other dimension to be filled proportionally with the image size. [docs]
<div id="my-image" class="editable" data-image-size="800xauto"></div><div id="my-image2" class="editable" data-image-size="autox450"></div>
New handler: onInputFilter
By default, LiveWhale will sanitize and strip certain formatting from POSTed variables, and accepting WYSIWYG data might be stripped. If you’re using LiveWhale Forms or native Custom Fields, this is handled automatically for you. However, you might have a custom module that includes its own custom fields, outside of the native config. In these cases, supporting WYSIWYG submissions will require adding your custom field to the input filter. This can be done using the new onInputFilter handler. [docs]
LiveWhale 2.19.0 3/23/2025
New calendar theming options
Hero image width and height
The “Use first image image as hero” functionality in LiveWhale Calendar has, for a long time, returned an 800px width version of your main image. This was enough for lots of calendar designs, but not very flexible (and some have already been using JavaScript workarounds to customize its width/height). Now, you can do so easily in your calendar’s widget settings: new options for hero_image_width and hero_image_height let you set precise dimensions for the hero image display variable. [docs]
Image ALT text
Calendar event details now support the image_alt variable, containing the ALT text for the main thumbnail image, and it’s also been added to the default event details component for when the image is set as a hero image. This ALT text was already available as part of the fully-composed image display variable, but having image_alt separately can help those wishing to craft more customized HTML designs. [docs]
New optional JSON endpoint values
Balloons
Add /response_fields/balloons to your JSON API query to see the precise balloon prioritization that your editors have configured for news, profiles, blurbs, etc. on the back-end.
Live/Hidden Status
Include /response_fields/status in your JSON API request to distinguish between live and hidden results (1=live, 2=hidden). As before, hidden results will only appear when using ?include_hidden=1 (requires being logged-in or using an auth token). [docs]
LiveWhale 2.18.0 12/1/2024
Improvements to RSVP cancellations
New public submission option: event_image_alt and news_image_alt
Logged-in editors to LiveWhale have separate options for Caption vs ALT Description when adding and editing images, and the public submission form now has matching options so you can choose to grant news/event submitters the same flexibility. Images still require either a caption or an ALT Description, so if you choose to provide both in your submission form HTML, validation will check that at least one is completed before accepting the submission. For backwards compatibility, event_image_caption will still be used in place of ALT if event_image_alt is not used. [docs]
New config option: VIEWPORT
For designs where the default viewport meta tag might be not be sufficient, the new VIEWPORT option allows you to set your own customized viewport meta tag. [docs]
LiveWhale 2.17.0 9/15/2024
New CMS page editing options
Locking the size of images added to an editable area
The attribute data-image-size=”600x300” can now be added to div class=”editable” areas in page templates to enforce image size of any WYSIWYG image that gets added or edited to its contents. This extends functionality that was already available on inner divs or content layouts, making it now available to the outermost editable area. [docs]
Allowing users to customize certain widget settings
This extends the global config setting of the same name but allows it to be used on a per-widget-template basis instead of only site-wide. [docs]
LiveWhale 2.16.0 7/14/2024
Organizing Widget Templates and Content Layouts
You can now divide /_ingredients/templates/widgets/ and /_ingredients/templates/wysiwyg/ into further subdirectories (such as /_ingredients/templates/widgets/news, etc.). LiveWhale will scan recursively for all WTs/CLs, and will flag with a dashboard error if any duplicates are detected (filenames must be unique).
New widget setting: min_image_size for inline galleries
Introduced in LiveWhale 2.13.0, min_image_size=true lets you skip results whose thumbnail image is smaller than the widget’s thumb_width and thumb_height, allowing you to preserve the design intent of widgets rather than loading in images that may be too small. In LiveWhale 2.16.0 this was extended to inline gallery widgets, so your gallery can skip images that are too small when min_image_size=true.
Beta support for Content Layouts v2
For CMS sites under active development, LiveWhale 2.16.0 adds beta support for a new way of managing Content Layouts [docs]. This approach is backwards-compatible with the original Content Layouts v1, the current insert/edit functionality shouldn’t be at all disrupted by this addition.
LiveWhale 2.15.2 5/17/2024
Improvements to the upgrade process
In the last year, more and more of you have been successfully running your own upgrades. To help make that process smoother, LiveWhale 2.15.2 comes bundled with some messaging and process improvements. (These won’t be visible when you get this version, but will appear the following time you upgrade.)
First off: future LiveWhale releases will now be tied to specific release dates, rather than being available for automatic and manual upgrades immediately. This is to allow greater time for testing on development servers, and to more intelligently steer clear of inopportune times for automatic upgrades (holidays, etc.). We’ll announce the release date with each forthcoming new version announcement.
We’re also rolling out new dashboard messages (examples in the docs) and updated confirmation messaging (example) for those running their own upgrades. These include helpful links to the release notes and reminders about testing on dev before pulling to production.
LiveWhale 2.15.0 4/12/2024
New widget option: Hide “Show all” pagination links
Widgets that support pagination can now specify hide_pagination_show_all=true to optionally disable the “(X total)” link. The widget will still be paginated and will display the “Show more…” link until all results are shown.
Disabling notifications for “declined” suggestions
When users have “All notifications” enabled in their user settings, they get emails for all sharing actions, including when someone in another group has declined their content suggestion. Now you can disable this type of notification site-wide by adding the following to client/global.config.php:
$_LW->CONFIG['DISABLE_SHARING_DECLINED_NOTIFICATIONS']=true;
Customizing the default timezone for RSS feeds
By default, the /live/rss/events endpoint sets event date/time as the “pubDate” attribute using Coordinated Universal Time (UTC), and it’s up to any RSS integrations consuming LiveWhale events to translate that into their local timezone (or the event’s timezone, using the livewhale:timezone RSS attribute). Now, you can choose to customize that site-wide timezone for the /live/rss events endpoint by adding the following to client/public.config.php:
$_LW->REGISTERED_WIDGETS['events']['custom']['rss_timezone']="America/New_York"; // default: UTC
New theming option: deferred styles and scripts
We’re still experimenting with this functionality in some of our projects, but the tools are here now if you’d like to try them out too: any script or stylesheet files in your theme’s scripts/ or styles/ folder can now be moved into scripts-defer/ and styles-defer/, where LiveWhale will auto-detect them and load them after the initial page load. That is, it won’t wait until the entire page has loaded, but “deferring” the files tells the browser “don’t wait on this CSS/JS, keep loading and display the rest of the contents.”
Render-blocking CSS has a big impact on site speed, so this may represent a big performance improvement (especially for mobile) – often times your complete global theme includes CSS/JS that isn’t critical for the first above-the-fold page load. If you end up finding success (or struggles) with this new option, please let us know!
LiveWhale CMS: New option for pre-defining image sizes
Adding data-image-size=”300x200” to HTML containers in your WYSIWYG-editable areas and content layouts will require users select an image of that size when adding/editing an image inside that area via the Edit Page interface. This matches the existing class=lw_fixed_dimensions functionality that already exists – and you may already be using – but will persist even if the original image is deleted and a new one is added into that area.
LiveWhale 2.14.0 1/26/2024
New related content widget settings
In LiveWhale CMS, you might be displaying Related Content on your news and profile pages – starting in LiveWhale 2.14.0, we’ve greatly increased the design flexibility around how you show related content with new widget settings. For any widget type, you can add the new setting my_related_content to show items related to the current item (or specify a certain type by my_related_content_type). Similarly, if you’re using a widget with the related_to setting, you can also specify related_to_type to limit to certain types of results. [docs]
Blurb widget templates
When using Insert > Blurb in LiveWhale CMS, the output format has been dictated by the default widget template for blurbs. And, while you can customize that default widget template, we found often you’ll want different formatting for different blurb types. Now, you can now specify a widget template for each blurb type that will be used when Insert > Blurb is selected for that blurb (or any other blurbs widget where id is specified).
More customizable gallery headers
The widget setting “header” is now available on inline galleries in LiveWhale CMS. Headers are not automatically added to the output, as with other widgets, however, use of the header format variable is permitted. This allows you to incorporate the header into your gallery design, but also override the header text on a per-use basis more easily.
LiveWhale 2.20.0 5/11/2025
- Fixed an accessibility issue where the hidden “cancel” link for customized URLs could erroneously be tabbable, causing visible focus to disappear.
- Added title to widget preview iframe.
- Fixed timepicker scrolling when using keyboard.
- Made quick upload keyboard and screen-reader usable.
- Fixed labels on Settings page.
- Made “remove” places button keyboard/SR usable.
- Added checkbox screen-reader text to widget editor.
- Fixed keyboard issue when multiselect was only tabbable option in an overlay (i.e., places selector).
- Fixed ALT text on map images in locations manager.
- Updated status dropdown to use role=listbox always.
- Updated search results sidebar to use accessible multiselect.
- Added aria button states to widget editor option filters.
LiveWhale 2.19.0 3/23/2025
- Added aria-live announcements to the front-end calendar. The calendar now announces to screen-readers live results for each date, view, search, and filter change as they occur. (e.g., “31 events found from March 4, 2025 with tags ‘Alumni, Reunion’”). The mini-cal also announces which month is in view as the calendar gets navigated.
- Fixed an issue causing configured ALT text to not be used when generating calendar event listings for day/week/all views.
- Accessibility improvements to the back-end images editor and modal close button focus state.
- The public submission form’s submission_group field now support explicit labeling.
- Improved a few labels/ALT texts of images in the back-end image manager.
- Numerous accessibility improvements to the images manager, live/hidden switcher, and front-end calendar view selector.
LiveWhale 2.16.0 7/14/2024
- The JSON API endpoint now includes thumbnail_alt as a separate value from thumbnail_caption, where an ALT text is set on the image.
- Updated aria-required to move it to radiogroup element for required radio buttons in forms and RSVP forms.
- Inserted WYSIWYG images now use alt variables instead of hardcoded caption in their widget format (leveraging the existing ALT functionality more consistently).
LiveWhale 2.15.1 4/19/2024
The following improvements have been made to the front-end calendar.
- For keyboard and screen-reader users
- The default “Search events” component now has a focusable (but visually hidden) submit button using the new class=”lw_sr_only_focusable”. (To improve visual styling for keyboard users, consider display:flex on the container of your themed search form.)
- For screen-reader users
- The month view table now has a screen-reader-only “caption” tag that updates as the current month is changed.
- When the #lw_cal_this_day header is empty, it now gets hidden to avoid empty-header warnings.
- The view selector (day, week, month, all) now has aria-current=”true” added to the currently selected view.
- The “Close Event” button in event details view now has a more descriptive screen-reader label.
- The Subscribe button no longer needs to be an <a> tag - instead, you can use <button class=”lw_cal_subscribe_button”> for better semantic HTML (<a> still supported for backwards compatibility).
- The Subscribe modal now has more descriptive ARIA labels on each individual RSS/iCal link.
LiveWhale 2.15.0 4/12/2024
- The h4.lw_accordion_block_title tag generated by accordions can now be customized and replaced with div or any other block-level HTML tag using the new ACCORDION_BUTTON_WRAPPER config option in client/global.config.php:
$_LW->CONFIG['ACCORDION_BUTTON_WRAPPER'] = 'div';
LiveWhale 2.20.2 7/13/2025
- Performance improvement: Initial event listings now preload with the calendar on page load, rather than requiring a separate AJAX request.
- Linked Calendars with events that run from midnight to midnight of another day will be imported as “All Day” events.
- Relocated accessibility checking for LiveWhale CMS 2.x into Page Details toolbar item (this built-in checker is being deprecated in LiveWhale 3.0).
LiveWhale 2.20.1 6/15/2025
- Add the year to the start date of a calendar event’s date range when it differs from the year of the end date.
- Added month and year variables to the calendar’s month day template.
- SiteImprove crawler is now permitted to bypass normal bot/scanner rules to refresh the page cache on its own, to ensure more up-to-date reporting for SiteImprove users.
LiveWhale 2.20.0 5/11/2025
- The calendar “home” view will now only render if the enable_home_view option is set to true.
- LiveWhale now strips username from group weather_id field when saving, since browsers can sometimes erroneously autofill.
- The events ICAL parser now honors X-WP-IMAGES-URL the same way it interprets image ATTACH syntax. [docs]
LiveWhale 2.19.0 3/23/2025
- Updates to front-end event date displays
- Changed the date and time format for multi-day events on the front-end calendar (list and details views). The complete date range is now reflected more elegantly: instead of “until March 14,” the full “March 7 - 14” is shown, for example.
- Events that repeat every X days/weeks/months/years now indicate the repeat pattern in details view (“Repeats every other day,” “Repeats every three weeks,” etc.).
- Prevented themed copies of important core functionality (livewhale/theme/core/scripts) from being overridden in theme folders. If found, they are skipped on the front-end and flagged as warnings on the Diagnostics page.
- Removed a restriction preventing linked calendars from loading all events from another LiveWhale installation.
LiveWhale 2.18.0 12/1/2024
- In events widgets, events with no “details” (description, cost, RSVP, etc.) no longer link to the event details URL by default. This brings the event widgets behavior into alignment with the way that front-end calendar events lists have always worked.
LiveWhale 2.17.0 9/15/2024
- When exporting CSVs for RSVP attendance, first and last name of an attendee are now indicated as separate fields.
- Disabling backend login access now also disables form submissions from the frontend to aid with upgrade freezes. [docs]
- Updated URL validation to undo the 50-character limit from LiveWhale 2.16.1. URLs can once again be 60 characters long.
- Prevented all known web crawler user agents from cancelling RSVPs via the /live/events/cancel endpoint (to avoid automated email scanners erroneously cancelling RSVPs).
- Allowed 404 page template to be supported at _i/templates/404.php in addition to the existing default _i/templates/details/404.php.
LiveWhale 2.16.1 8/4/2024
- Auto-generated titles when inserting a WYSIWYG video no longer get prefixed with “VIDEO:” (titles are still fully editable when inserting and editing).
- Removed the requirement that groups called “Homepage” or “Home Page” set their URL to /. Homepage groups can use any URL or no URL.
- Lowered the length of custom URLs to 50 characters to prevent database errors when saving drafts. All existing URLs over 50 characters will continue to work and be shortened automatically on next save. This will include a redirect from the old to new URL for backwards-compatibility.
LiveWhale 2.16.0 7/14/2024
- Restored prior behavior for showing 404 to logged-out users when trying to view hidden news, profiles, blurbs, and redirecting hidden events. This replaces the behavior of redirecting to login, which some found confusing.
- Added details_issue_slug to news/blurbs template when part of an Issue (for creating a link back to the issue). You can also use the existing variable details_issue_url for this.
LiveWhale 2.15.0 4/12/2024
- LiveWhale now validates replacement images by file type extension, to ensure that the file type does not change.
- LiveWhale CMS Only: The QuickAccess widget (for placing top links on a search page results) will no longer match partial words (like “art” returning “department”).
LiveWhale 2.14.1 3/8/2024
- LiveWhale now defaults to loading all iframes via lazy loading, unless a manually applied loading attribute is already present.
- Event types are now included in the RSS and ICAL event endpoints even when JSON API v2 is enabled, restoring the RSS/ICAL default behavior.
- Using the my_related_content arg now respects the manually chosen sort order of related content items, unless sort_my_related_content=true is utilized as an override to respect sort_order.
- LiveWhale will auto-correct back-end event editor URLs from events_sub_edit to events_edit, in addition to vice versa.
- Group directory/calendar values are now properly validated based on allowed characters.
LiveWhale 2.14.0 1/26/2024
- The location auto-suggestion that appears when you type will now show global locations and your group’s locations (it had erroneously been showing locations from all groups).
- LiveWhale CMS Only
- When a page is deleted, LiveWhale now removes not just the empty parent directory of that page, but also other empty parent directories up to the web root.
- When a form is attached to an event RSVP, the confirmation email for the RSVP now includes the form responses.
LiveWhale 2.18.0 12/1/2024
- Fixed an issue with the search index that could arise when an item search phrase (like the title) was comprised entirely of search stop-words.
LiveWhale 2.15.2 5/17/2024
- QuickAccess is now enabled when applied to inputs of type=”search”, just as they are for type=”text”.
- Added support for data-qa-results-div-id attribute on QuickAccess fields, which optionally allows targeting an existing element in the page by ID for use as a results container.
- Changed QuickAccess JavaScript to wait for new results before clearing the old ones.
LiveWhale 2.15.1 4/19/2024
- Added a new setting to the QuickAccess options to specify a results div by ID (data-qa-results-div-id=”id-of-results-div”). This is an alternative to the default behavior where a results container is automatically added after your form input.
LiveWhale 2.14.1 3/8/2024
- LiveWhale CMS Only: QuickAccess link titles no longer enforce Title Case when saving.
LiveWhale 2.20.2 7/13/2025
- Restored the ability to drag the corner of full wysiwyg areas to resize them. (Limited wysiwyg fields do not resize.)
LiveWhale 2.19.0 3/23/2025
- Re-enabled backspace and delete in Content Layouts when WYSIWYG editing (disabled in LiveWhale 2.18.0). Instead, if any typing would result in merging or removing editable areas (class=”mceEditable”), undo that action.
LiveWhale 2.18.0 12/1/2024
- Fixed an issue when editing inside of .mceEditable areas where backspace and delete could sometimes unintentionally remove or merge editable areas. Backspace and delete have been selectively disabled when editing inside an .mceEditable area to preserve the intended layout of those elements.
LiveWhale 2.17.1 10/6/2024
- When pasting into a WYSIWYG field, <span style=”font-weight:400”> and list item style/aria-level attributes that get frequently copied from Google Docs are now stripped.
LiveWhale 2.15.0 4/12/2024
- Added descriptive label to XPHP includes when viewing in the WYSIWYG editor.
LiveWhale 2.20.2 7/13/2025
- Fixed an issue where Linked Calendars could occasionally get “stuck” in the refreshing state, preventing them from being updated in the next hourly sync.
- Fixed a bug, introduced in LiveWhale 2.20.1, which could cause newly created event series to not show all events even when hide_repeats settings should be showing all instances.
- Fixed an edge-case issue where certain widget settings like include_javascript could be overwritten by settings from a nested widget.
- Fixed a typo in the events RSS feed formatting for categories_campus.
- LiveWhale CMS Only
- Fixed an issue with generating calendar event URLs when calendar_details_embed_url is configured.
- Robots.txt refreshing now happens asynchronously, and on login any hidden pages from the database missing from robots.txt will be added.
- Fixed an issue where malformed LiveURLs referencing custom details templates could sometimes result in infinite redirect loops.
- Fixed an issue, introduced in LiveWhale 2.19.0, that would erroneously strip /type/ arguments from tag details pages thinking they were absent custom detail templates. An exception has been added for /live/tags details to preserve earlier functionality.
LiveWhale 2.20.1 6/15/2025
- Added robots.txt overwrite protection for LiveWhale-managed robot rules.
- Fixed an issue that could prevent the group calendar url from appearing in the canonical URL for individual events.
- Fixed an issue that could cause an erroneous redirect on a tag details request.
- Fixed an issue, introduced in 2.16.0, that could unintentionally affect the default formatting of /live/rss/ API endpoints. This fix restores the normal RSS syntax unless you’ve specifically chosen to override it using _ingredients/templates/widgets/events.rss_default.xml.
- Upgraded the clean-css-cli npm module to version 5.6.3, fixing an issue where styles in :not() declarations could become malformed.
- Fixed an issue that prevented async curl requests from being able to bypass the load balancer.
- Removed defunct “Hide Details” toggle from image uploader modal.
LiveWhale 2.20.0 5/11/2025
- Fixed an issue where line breaks or whitespace inside of calendar settings could result in pagination not appearing for “All Upcoming Events” lists.
- Fixed an issue that could cause a javascript error in the frontend calendar when displaying multi-day events that also repeat over a range.
- Fixed an issue causing event times to display in the wrong timezone in the “RSVP confirmed from waitlist” notification email.
- Fixed an issue where lw_layout_block actions (add/remove/reorder) weren’t always being properly shown and hidden for Content Layouts on the back-end editors.
- Fixed an issue where Content Layouts didn’t appear in alphabetical order by title in the insert dropdown.
- Fix a bug that removed a script tag from a wysiwyg field when it was the only content in the field.
- Fixes for bugs introduced in 2.19.0
- Fixed an issue that can sometimes erroneously disable nested widgets when rendering a page.
- Fixed an issue affecting LiveWhale Calendar widget links to events.
LiveWhale 2.19.0 3/23/2025
- Updated the auto-generated ICAL links for “only this event” vs “all events in series” to properly return the correct event/series even from an event in the middle of a repeating event.
- Fixed an issue where replacing an image file with one of different dimensions wasn’t always clearing custom thumbnail selections. Those thumbnail dimensions are now reset when the image size changes.
- Fixed an issue that could affect Linked Calendars ability to immediately refresh events after Customize checkboxes have been unchecked. Added clarified help text to editor when Customize gets unchecked (e.g., “Note: Original location from feed will sync when you save this event. This may take up to 10 minutes. In the meantime, the current location may still appear here and on the public-facing calendar.”).
- Fixed an issue that prevented single-sign-on AUTH_ATTRIBUTES from being properly passed from stored cookies into custom LW modules.
- Fixed an issue that could sometimes cause a delay before a hidden item became visible to the public after setting it as live.
- Fixed an issue that prevented trashed items from restoring their custom field values when restored.
- Fixed an issue that could cause a prior version of an updated URL to be shown in widget/api results instead of the most current URL.
- Fixed an issue in LiveWhale Calendar where links to event tags were sometimes going to /live/tags rather than the calendar filtered-by-tag view.
- Removed details template customizations from the LiveWhale Calendar group editor since they are a CMS-only feature.
- Fixed an issue where events from Day View (multi-day events overlapping or ending today) were being excluded from only_today/true API and widget results.
- Fixed an issue where clicking a link to dynamic content on a site where a LiveWhale login has recently expired could erroneously cause a session timeout error to be shown.
- Fix bug that inserted the user’s group in the calendar’s subscription menu header on non-group calendars.
- Fixed the submit button label on the multiple image upload screen to properly reflect plurality of images.
- Fixed a PHP8 error that could cause issues with the Page Error manager.
- Fixed an issue where a failed database connection could result in a redirect loop when attempting login, instead of correctly pointing to the database error page.
- Fixed location labels in the calendar’s now showing menu. Now, even if you don’t use the locations dropdown filter, you can hard-link to /all/locations/place_id and show calendar results matching that saved location (including the location title).
- Fixed an issue with admin auth tokens that prevented them from returning certain hidden results when requested from the API (?include_hidden=1).
- Fixed an issue with AP Style where duplicate am/pm flags weren’t always correctly being removed, depending on whitespace in the time format settings.
- Fixed an issue where tags in public submissions could erroneously be split by spaces when only one tag was submitted.
- Fixed an issue that prevented Content Layour UI for class=”lw_layout_block” (buttons for add, remove, move up, move down) from appearing in back-end editors when cursor was placed inside of a content layout.
- Fixed an issue that could cause LiveWhale Calendar pages to generate event links starting with // erroneously when loading calendar views within an iframe.
- LiveWhale CMS Only
- Fixed an issue where file upload fields weren’t loading properly when in a LiveWhale Form attached to an event RSVP.
- Fixed an issue where Event RSVPs with extra LiveWhale Forms attached could fail Recaptcha validation.
- Fixed an issue where requesting a custom details template that was missing (404 error) would fail to redirect to the working default template.
- Fixed an issue that could cause problems with gallery widgets nested inside the format_widget setting of another widget.
- Fixed an issue with LiveWhale Blogs that could prevent certain group template variables from being correctly populated on a blog post with a customized URL.
- Fixed an issue where shared blurbs could sometimes erroneously show a broken link icon in the manager, even if they don’t have any underlying details URLs.
- Fixed an issue where custom blog post templates could not display custom variable values.
- Silenced broken-URL warnings when saving blurb types that don’t have details pages (no front-end linking exists). Also updated the editor page to link to the back-end editor for such shared blurbs instead of any front-end URL.
- Fixed an issue where using a /path/to/custom/template at the end of a details URL could get dropped if redirecting to a newer version of that same URL.
LiveWhale 2.18.0 12/1/2024
- Fixed an issue where event URLs that had been customized could sometimes erroneously return 404 Not Found.
- Fixed an issue where requests for cropped images were sometimes showing black bars around the image. Instead, they now get proportionally scaled down to match dimensions that the image file can accommodate.
- Fixed an issue where embedded widgets on details pages could sometimes not filter by global details template variables.
- Fixed an issue where occasionally Safari web browsers could incorrectly trigger a logout due to changing user agents.
- Fixed an issue with large accordion areas that could be out of viewport when opened. They now scroll into view shortly after opening in that case.
- Repeating events fixes
- Fixed an issue where auto-accepting a repeating event to multiple other groups could result in erroneous and redundant suggestions of the same event to those groups.
- Fixed an additional case where the last instance of a repeating event might not be created after repeating into a different DST state.
- Fixed an issue with multi-day events coming from Linked Calendars not correctly appearing in ongoing (“repeating_events”) section of front-end calendar, when themed to be separate from single_events.
- API fixes
- Fixed an issue that could prevent LOCATION: from appearing in default ICAL feeds when the site-wide base API version is set to v2.
- Fixed an issue introduced in LiveWhale 2.12.0 where header arguments could erroneously be added into the response for an RSS API endpoint.
- Fixes some contexts where ?callback=jsonp was used but the header application/javascript was not being sent in API results.
- LiveWhale CMS only
- Fixed an issue where Galleries could sometimes be excluded from Issues details pages when a group wasn’t configured to sort Galleries into Issues.
- Fixed JavaScript error that broke the widget tags selector.
- Fixed an issue in the page editor where drafts could not be saved for very large >65k character pages.
- Fixed an issue where an option value of 0 for a form element could show as a blank value.
- Fixed an issue where sitewide custom fields on Forms wouldn’t be displayed on front-end Forms details.
- Fixed an issue where redirects added using the LW Redirects manager weren’t applying correctly to calendar URLs.
- Fixed an issue where certain navigation edits could inadvertantly delete a page, requiring an additional step to click restore.
- Removed extra space at top of drafts when user is logged out.
LiveWhale 2.17.1 10/6/2024
- Fixed an issue introduced in LiveWhale 2.15.0 that can affect cases where custom code is applying a custom format to a WYSIWYG image.
- Fixed a bug that removed inline widget args when editing customizable args with the WYSIWYG widget edit dialog.
- Fixed an issue where async getUrl requests could fail on some web servers.
- Fixed missing support for “my_related_content” and “related_to” on the files widget.
- Fixed an issue that could allow a long list of format variables to overspill the widget editor interface.
- LiveWhale CMS Only
- Fixed an issue where suggesting or copying a blurb or profile to another group did not automatically authorize them for that global blurb/profile type if they were not yet authorized.
- Fixed a bug that broke the page editor when image captions in content layouts contained HTML.
- Fixed an issue preventing custom fields on blog posts from restoring their content when editing.
LiveWhale 2.17.0 9/15/2024
- Fixed an issue where multi-day all-day events could sometimes erroneously show “12:00 am” instead of “All Day” on their final day in calendar list and week views.
- Fixed an issue that could allow invalid email addresses to be used in the public submission form.
- Fixed an issue causing images in the current group to sometimes be excluded from the Shared Images view in the image library selector.
- Fixed an issue with AP Style that could sometimes cause double-commas to be included in datetime strings.
- Fixed an issue where multi-day events would not be recognized as satisfying the requirements for the “min” arg when used with the events widget.
- Fixed a bug that prevented widget format and format_starred arg values from being set from a widget template when switching to a new template from the widget editor.
- Fixed an issue preventing query strings (GET variables) from being preserved during the process when details page requests get redirected to the proper canonical URL.
- Fixed an issue that prevented XPHP field conditionals from being used for total and header variables in the format_widget setting.
- Fixed JS and CSS compilation error file creation when using symbolic links to the document root.
- LiveWhale CMS Only
- Shared content between two subdomains on the same LiveWhale instance will now redirect to the proper subdomain for details view if the group has a custom details template URL that is subdomain-specific.
- Excluded /_ingredients/templates/includes/ files from being listed in the Templates manager.
- Fixed an issue that could cause XPHP IF tags to sometimes be damaged during a page template refresh.
LiveWhale 2.16.1 8/4/2024
- Fixed an issue where the year would not show on the frontend calendar if the “repeats until” date extended into another year.
- Fixed an issue introduced in LiveWhale 2.15 that could sometimes cause explicit width/height attributes to be removed from image tags when calculating image size.
- Fixed an issue causing certain images to be shrunk (rather than returning original size) when larger versions are requested. This could result in og:image sharing tags missing from content with small images attached.
- Fixed a PHP8 bug affecting widgets sorted by most-tags-matched when only one tag was applied.
- LiveWhale CMS: Fixed an issue where certain /live details requests could erroneously get flagged in the Page Error log as 404s.
LiveWhale 2.16.0 7/14/2024
- Fixed an issue that could cause inaccuracy in determining the next upcoming instance in a repeating event series when hide_repeats=true was used.
- Fixed an issue that prevented RSVP comments by the editor from being editable on the event registrant editor.
- Fixed an issue that could cause the wrong alt text to be used when using the variable in an image widget.
- Fixed an issue that could cause integrity or crossorigin attributes to be altered when consecutive script tags were used in a file include.
- Fixed an issue that could cause certain kinds of images to skip Retina image support.
- Fixed an issue that could prevent credits from being optionally displayed for WYSIWYG images.
- LiveWhale CMS Only
- Fixed an issue preventing the use of group variables in the widget preview panel.
- Fixed an issue causing incorrect and inconsistent behavior when cropping the full-sized images in a gallery.
- Fixed an issue that could cause the page errors report to erroneously indicate certain broken images or files.
LiveWhale 2.15.2 5/17/2024
- Fixed an issue where certain repeating events could be hidden from the backend manager.
- Fixed an issue where Event Organizer Comments weren’t being saved from the RSVP manager.
- Fixed a bug where captions were ignored after uploading images directly to a new gallery.
- Fixed an issue where media queries on WYSIWYG images could sometimes be mistakenly removed when editing images.
- Fixed an issue that could cause drafts of linked calendar events to become unlinked from their calendar when published.
- LiveWhale CMS Only
- Fixed an issue where navigation items nested under separator text could sometimes show the wrong parent in the breadcrumb menu.
- Fixed a PHP8 bug affecting the Password Protect this Directory tool.
- Fixed missing markers in Places widgets due to Google Maps API changes.
LiveWhale 2.15.1 4/19/2024
- Fixes for bugs introduced in LiveWhale 2.15.0:
- Fixed an issue that could cause certain widget settings to result in PHP8 errors.
- Fixed an issue that could sometimes prevent a custom module from loading properly.
- Added code to prevent redirect loops on the calendar when the url of a linked calendar event is the same as the current url.
- Fixed a bug that prevented changes to RSVPs in the RSVP manager.
- Fixed an issue that could cause incorrect pagination behavior on certain managers when remembering the state of the last visited page (e.g., in the RSVP manager).
- Fixed an issue that caused admin-only tags to be copied to other groups when content with those tags got moved between groups.
- Fixed periodic visual bugs with overflowing content on the profile and widget editor screens.
- Fixed an issue that could interfere with double-click to edit WYSIWYG images that are owned by other groups.
- LiveWhale Calendar Only
- Fixed an issue with using the &filter= setting in embedded widgets.
- LiveWhale CMS Only
- Fixed an issue that could cause erroneous 404 page errors referencing local links to dynamic content.
- Fixed an issue that prevented profile types with location=”none” (never display) from being used in custom sort orderings.
LiveWhale 2.15.0 4/12/2024
- Fixed a bug that could allow non-admins to remove admin tags from content.
- Fixed an issue where the accordion +/- icons wouldn’t change when an accordion was opened.
- Fixed an issue that could cause some RSS feeds to not make their link tags full remote URLs.
- Fixed a MySQL 8.x compatibility issue that impacted the display of bulletins in the bulletins manager.
- Fixed an issue introduced in 2.14.1 that could cause javascript breakage with JSON-encoded iframes in the page source.
- LiveWhale CMS Only
- Fixed an issue preventing widgets from being placed in editable areas that only allow inline (and not block) elements.
- Fixed an issue preventing Linked Profile fields from showing more than 1000 options.
- Fixed an issue where using a CSV as a profile data source could cause the wrong values to be pulled during sync.
- Fixed an issue that could cause erroneous 404 page errors referencing local links to dynamic content.
- After running a prod-to-dev content sync, LiveWhale will now attempt to load each page from all navigations to warm the page and image caches.
- Fixed an issue where the code samples button, when enabled, wouldn’t show up in the front-end page editor.
- Fixed an issue with pages appearing in a stream widget and sorted by last-modified.
- Fixed an issue where the incorrect meta image could be used when sharing Issues to Facebook.
- Fixed an issue that prevented profile types with location=”none” (“never display”) from being used in custom sort orderings.
LiveWhale 2.14.1 3/8/2024
- Fixed an issue where the “With checked items” form could erroneously update the last modified datetime/user on items that weren’t actually changed.
- Fixed an issue introduced in LiveWhale 2.10 where event metadata (schema.org / LD+JSON) was not embedded in the event details view.
- Fixed an issue that could prevent images from appearing in the back-end UI when a group had been excluded from site-wide search and API results.
- Fixed an issue with using the image_size=200x200 shorthand in a widget template and overriding it via the widget editor. Now, modifying thumb_width or thumb_height via the widget editor will correctly unset image_size coming from a WT.
- Fixed an edge case issue where images encoded a certain way could have their colors inverted when derivative sizes were generated from the master image.
- Fixed an edge case where a redirect loop could occur.
- Fixed front-end date entry fields (in LiveWhale Forms and the Public Submissionn Form) from allowing pasting of non-date-formatted values. Back-end forms like the widget editor still support free-form date entry for relative dates.
- Fixed an issue that prevented some theme files (especially SCSS partials) from triggering cache refreshes when edited.
- Fixed an issue where the Google Maps script that loads on the location editor wouldn’t recache when the saved Google Maps API key was updated.
- Fixed an issue that prevented certain system cleanup tasks from running on web2 in load-balanced environments.
- Fixed some PHP8.1 compatibility errors related to events, galleries, and SAML testing.
- LiveWhale CMS Only
- When editing a profile type, changing a field type from multiple choice will now clear any saved multiple-choice options.
- Fixed an issue that could cause Facebook to not retrieve an image when sharing a link to an Issue.
- Fixed an issue that prevented Forms from being indexed for search when created via the Duplicate option.
- Fixed an issue with clicking an anchor link leading to a result inside of a LiveWhale Accordion on the same page.
LiveWhale 2.14.0 1/26/2024
- Fixed an issue where deleting an entire group, and then restoring it, would result in some of that group’s content being restorable from trash and others not.
- Fixed a bug that could cause some repeating events to be placed into the trash when performing bulk actions from the events manager.
- Fixed an issue where “Share to Group” dropdown would make full copies rather than normal “Accept as Live” linked copies.
- Fixed an issue where custom fields erroneously allowed dashes to be used in their names, which could lead to frontend loading issues.
- Fixed an incompatibility between the locations widget and the exclude_group arg.
- Fixed an issue with the places widget that prevented images from displaying when desired in custom marker formatting.
- Fixed an issue where customized file URLs wouldn’t work if they started with another file’s ID number.
- Fixed ?id= backwards-compatibility support for Issues, as well as ensuring that Issues list widgets use the correct customizable URL rather than the legacy ?id= format.
- Fixed a 404 error that would come up when embedding LiveWhale Calendar widgets when no global/styles/widgets.css stylesheet was present. Now, when that stylesheet is requested specifically, it has a special case to return a 200 OK message with the empty response instead of 404 Not Found.
- Added an error message when trying to move an event into another group where a shared copy of that event already exists.
- Fixed an issue preventing the “Edit this item” link from displaying on the frontend in details-viewing contexts.
- LiveWhale redirects are now considered before redirecting from archived slugs or non-canonical detail requests to the canonical url.
- Fixed an issue with validating new redirects where it could erroneously warn that a directory exists even if a page did not exist at the specified url.
- Fixed an issue where the group switcher would not immediately update when a group was restored from the trash.
- Fixed an edge-case bug that could sometimes cause foo/ and foo.php to get caught in an infinite redirect loop.
- Fixed an issue with the functionality and appearance of the Collection dropdown on the Bulk Upload Images tool.
- Fixed an issue with viewing stories in a LiveWhale Issue, where a link copy did not pull variables for the associated Issue after redirecting to the original.
- Fixed an issue where LiveWhale Issues did not properly set the url variable for the Issue homepage.
- Fixed an issue with LiveWhale Forms where missing field error messages wouldn’t always appear alongside the screen-reader announcement.
- Fixed an issue that prevented files, tags, and locations from appearing as links in the toolbox for Publisher users.
LiveWhale 2.20.2 7/13/2025
- Public submission forms with related content URLs (event_url or news_url) can now accept user-submitted titles for those links with the new fields event_url_title and news_url_title. If absent, link title will default to “More Information”. [docs]
- Added capability for user to set SAML username mapping on first SAML login, or when SAML_DEBUG is enabled. Also added new option SAML_DEBUG=’silent’ which tracks all received IdP attributes without interrupting login. [docs]
- Added group id (gid) format variable to locations widget output.
LiveWhale 2.20.1 6/15/2025
- The user setting “Disable minimization, concatenation, and client-side browser caching of all scripts and stylesheets” now applies to back-end resources as well as front-end styles/scripts.
- Custom fields that are configured without a unique name now appear as a dashboard configuration warning.
LiveWhale 2.20.0 5/11/2025
- You can now use “url” in the event_share_icons calendar component to create custom share links for other services.
- For custom /live/ endpoints in subdirectories, folders before /live/ are stripped when processing LiveURL requests.
LiveWhale 2.19.0 3/23/2025
- Unmapped X- attributes in the iCAl parser are now passed through to the saved data buffer where they will be available to custom module code.
- Updated default 404 page for installations where it has not been customized.
LiveWhale 2.18.0 12/1/2024
- LiveWhale now supports the use of XPHP shorthand syntax (<xphp before=..., <xphp after=) within scheduling/timely conditional content attributes.
- The cached /live/places/maps_js Google Maps JS can now be manually refreshed using ?refresh=1, for cases where your Google Maps API key has been updated.
LiveWhale 2.17.1 10/6/2024
- Remove share_by_default from sample config for images and files, which don’t currently support sharing by default.
LiveWhale 2.17.0 9/15/2024
- You can now enable the “Feedback?” email form on the Dashboard for logged in users, so long as its configured to send to your own custom helpdesk email address. [docs]
LiveWhale 2.16.1 8/4/2024
- Core calendar.less styles have been organized into LESS partials, such that livewhale/theme/core/styles/calendar.less will output the same styles for backwards compatibility, but developers now have the option to selectively include just portions of the core theming when designing calendars. More about this new approach is in the theming documentation.
LiveWhale 2.15.2 5/17/2024
- Added a SAML configuration setting SAML_ALLOW_EMAIL_AS_USERNAME that allows full email addresses to be used as SAML username attributes (otherwise, anything @ and after would be stripped).
- In breadcrumb widgets, separator text items from a navigation can now be shown by including include_separator_text=true in the widget settings.
LiveWhale 2.15.1 4/19/2024
- The date range separator ( - ) is now configurable to replace with other dash types (e.g., –) with or without spaces. This setting is available in sample.public.config.php: $_LW->REGISTERED_WIDGETS[‘events’][‘custom’][‘date_range_separator’]=’ - ‘;
- Calendar initialization now waits until document ready to allow custom code to bind to the calBeforeInit event. This fixes an issue that was causing custom functions triggered by calBeforeInit to not run in time for the calendar initialization, preventing them from altering certain core functionality. (In testing, this change only delays calendar initialization by around 1/100th of a second.)
LiveWhale 2.15.0 4/12/2024
- For custom back-end modules: exposed the manager state object (LW.manager.manager_state) to custom code, allowing for modules to save custom data using the “Save these changes” action from list view.
LiveWhale 2.14.1 3/8/2024
- The h4.lw_accordion_block_title tag generated by accordions can now be customized and replaced with div or any other block-level HTML tag using the new ACCORDION_BUTTON_WRAPPER config option.
- Custom fields now track their last modified date/time, allowing for eventual expiration of selected custom data.
LiveWhale 2.14.0 1/26/2024
- The XPHP text and text-content casts, as well as *_clean variables, now strip any leading or trailing whitespace from the output.
- You can now enable editors to insert code snippets into their WYSIWYG fields by seeing ENABLE_CODE_SAMPLES=true in the config.
- Added a host setting for RESTRICT_COOKIES_TO_SUBDOMAIN which disables multiple-domain support but can be used to avoid auto-deletion of login cookies by certain external scripts.
LiveWhale 2.20.2 7/13/2025
- Performance improvement to prevent excess server load when refreshing the cache entries for a lot of LiveURLs at once.
- Extended the time limit for upgrade steps to 1 hour.
- Automatically truncate the widget cache if it exceeds 10 GB, to prevent upticks in malicious traffic from rapidly filling disk space.
- PHP8.3 compatibility fix for an issue which could break the configuration of a site’s internal UUID.
LiveWhale 2.20.1 6/15/2025
- Performance Improvements
- Removed hidden “summary” field from calendar month view to improve loading times.
- Custom fields are now only loaded on event listings if they are included in the event theme component.
- Variables that are commented out in calendar components are now skipped when pulling event listings to improve loading times.
- Improved search page performance by adjusting the handling of exact phrases and by improved segmentation of search index data by content type.
- Improved caching of calendar results in cases where multiple themes or timezones may be used.
- Improved performance by increasing caching of per-group timezone settings.
- Improved performance of front-end events requests by indexing certain hide_repeats information.
- LiveWhale CMS only: Added some security checks to prevent spam submissions in LiveWhale forms.
LiveWhale 2.20.0 5/11/2025
- Back-end ES6 files have been moved to JS files, to take advantage of increased browser support for ES6.
- Performance Improvements
- Extends search stopwords (small words skipped in search queries) to another context as a performance improvement.
- Blocked /live/ requests with a massive REST depth (more than fifty instances of /) which we’ve seen correspond to malicious and spam requests.
- Fixed an issue where Barracuda user agent link scanners aren’t properly processing url-encoded ampersands before making requests to the web server.
- Fixed a performance issue when loading backend managers for installations that have enabled the drafts-based workflow feature.
- If a database is temporarily unavailable and unable to connect, prevent repeated attempts from the current process which can slow down the server.
- Improved cache performance for requests using &li_ or &trk tracking variables.
- Updated security filters for malicious requests and move some of them earlier in the cache process for a faster error response.
- Adjusted search handling of numeric search terms.
- The hourly profile sync now skips the Midnight–4am window when other resource-intensive nightly tasks take place.
- Optimizations to profile syncing to reduce CPU load.
- Miscellaneous performance improvements especially to 404 page handling.
- Updated database optimization to improve performance of pulling current and upcoming events.
- Optimization to the getUrl function when performing async requests.
LiveWhale 2.19.0 3/23/2025
- Improved performance of logic that generates front-end checkboxes for calendar categories.
- Adjusted the timing of some overnight database optimization to improve performance.
- Fixed an issue where the SiteImprove scanner was being blocked from generating new image variations, which could cause false positives when scanning for 404 errors.
- Fixed an issue with SAML integrations in cases where the IdP sends duplicate values for FriendlyName in its SSO response.
LiveWhale 2.18.0 12/1/2024
- Fixed an issue where some CSS styles from front-end theming were bleeding into the LiveWhale toolbar fonts.
- Fixed a performance issue affecting widgets inside format args where they would be executed anyway even if within conditional blocks that are never met.
- Improved the accuracy of the diagnostic check for favicons.
LiveWhale 2.17.1 10/6/2024
- Increased the minimum PHP version requirement of LiveWhale to 7.2.24.
- Updated behavior to make /live/ URL error reporting match the same standard rules that all other LiveWhale URLs use.
- Restructured certain MySQL queries for tags and categories to use subqueries instead of table joins, which has demonstrated a performance improvement in MySQL 8+.
LiveWhale 2.17.0 9/15/2024
- Removed outdated references to old documentation site and support email.
- Fixed an issue that could sometimes cause the widget cache to not be cleared when the page cache was updating.
- Added a performance optimization to the hide_repeats arg which could sometimes cause a lag in the fetching of results.
- Improved LiveWhale’s automatic user-agent detection that serves stronger cached results to bots and web crawlers.
LiveWhale 2.16.1 8/4/2024
- You can now opt in to receive email notifications of frequent 404 URLs with the $_LW->CONFIG[‘EMAIL_404_REPORTS’] setting. [docs]
LiveWhale 2.16.0 7/14/2024
- The minimum PHP version required to run LiveWhale is now 7.0.33.
LiveWhale 2.15.2 5/17/2024
- Added behind-the-scenes notifications of spikes in 404s as a potential screening tool for URLs broken by unintentional user or developer action.
- Removed an unused dependency (htmLawed).
LiveWhale 2.14.1 3/8/2024
- Update SAML OneLogin plugin to 4.1 to improve PHP 8 compatibility.
- Silenced the false positive error message “Called RSET without being connected” for SMTP mailing.
- Performance improvements: when saving groups and users, the page permissions being reset now occurs asynchronously, to speed up the saving process.
LiveWhale 2.14.0 1/26/2024
- Reduced overall CPU usage during the processing of linked calendars on an hourly basis.
- Tracking of LiveWhale uploads for instant data-recovery is now limited to a 2 year upload history.
- Fixed a compatibility issue with MySQL 5.x affecting breadcrumb widgets using the use_current_path option.
New versions will be announced via Dashboard messages in LiveWhale, or you can sign up to receive email notifications.