LiveWhale Calendar 3.0.0 beta

This is the first testable version of our next major release, LiveWhale 3. Calendar testing will begin May 2026 with upgrades starting later this summer.

NOTE: This is the complete list of release notes for LiveWhale Calendar 3.0.0 beta. For a more user-focused list, including testing and upgrade instructions, see the Upgrade Guide.

CSV importing & exporting

  • Added new CSV importing/exporting functionality (with validation) for blogs, blurbs, events, files, groups, news, places, and redirects.
  • CSV imports now support sharing across groups using custom_share_id and custom_share_parent columns.
  • Updated CSV import to import items as new if the selected update key has no match.
  • Added balloons to the native CSV export/import for blogs, profiles, and news stories.
  • The core users CSV export/import now supports importing switch groups by name rather than ID.

AI suggestions

  • You can now use generative AI (ChatGPT) to suggest headlines and summaries for news and events.

Drafts & Workflow

  • Added new draft functionality, including save and publish draft, comparing draft and published versions, and the ability to set up users who require approval before their changes can be published. Drafts can be created for new events, or you can save a draft with changes to an existing published event.

Submissions

  • Submitted content (events, news) now comes into LiveWhale as a draft instead of a Hidden item.
  • Submitted content now goes into the system group “Submitted Content” (formerly “Public”); the system module has been renamed from “public” to “submissions.”

Privacy & visibility

  • New privacy setting: “Limited Visibility” events show in widget/list views but certain detail fields require SSO login.
  • Event Types can now have Global Tags associated with them as editor suggestions; hideable with DISABLE_SUGGESTED_TAGS=true.

Backend & admin changes

  • Global, client, and public config files replaced with a consolidated livewhale/client.config.php.
  • Back-end manager now suggests filter changes when no results are found.
  • Added notification panels (now collapsible) for pending drafts, suggestions from other groups, and submitted items.
  • New sidebar filter option: “By star” to select starred or unstarred items.
  • You can now edit existing Redirects via the manager; redirects enabled for LiveWhale Calendar.
  • LiveWhale now provides an estimate about image usage in the image editor and at time of deletion.
  • Added a new “Help Topics” feature for administrators to add back-end documentation.
  • Added a checkbox option to event RSVPs for “Show registration count and maximum on the RSVP form.”

Calendar theming

  • Calendar filters (group, calendar, category, audience, campus, tag, location) are now rendered as dropdowns in core components; long lists get an automatic type-to-filter input.
  • New calendar setting filter_all_events_only (defaults to true); removed non-modular calendar theme option.
  • Calendar pagination is now themeable separately as its own component.
  • You can now add Custom Field filters to the front-end calendar theme using new lw_calendar_custom_filter_FieldName variables.
  • You can now add view-specific event components to your theme (lw_cal_all_event.html, lw_cal_week_event.html, etc.).
  • Calendar theme components for categories, audiences, campuses, and tags now have a _with_usage object with a .has_results flag.
  • Added variables for categories_clean, categories_audience_clean, and categories_campus_clean to list and detail components.

Widget options

  • Added support for a “footer” arg in widgets, supporting full HTML markup.
  • Added support for new CSS option in widget editor; new widget_preview stylesheet option; retired core widgets.less/css files.
  • New event widget options: date_range format variable for multi-day/ongoing events, and show_today_on_ongoing_events toggle.
  • Added support for onCustomFields handler for dynamic runtime addition of custom fields.
  • Deprecated widget settings: columns, list_order, slideshow, slideshow_interval, slideshow_no_pausing.
  • Widget editor revised: collapsible options, wrapper provides helper buttons, new show_calendar_link option; removed theme, use_tag_classes, use_category_classes, show_rss_link, show_ical_link (replaced with rss_link and ical_link).

Accessibility improvements

  • You can now set or override image ALT text when attaching to a content piece.
  • Image links on the front-end (calendar or widget results) now use an aria-label in the title link to indicate the event or story title—this way the link’s screen-reader announcement describes the link destination, rather than reading the image ALT text. Image ALT is still included in the event and news story details pages.
  • Added aria-live announcements when a new set of paginated calendar results is loaded, and placed focus on the first new event.

Behavior adjustments

  • You can now set Linked Calendar events as online or hybrid feed-wide.
  • Content layouts in the “Insert” menu are now sorted by Title instead of filename.
  • Event RSVP Custom Fields are now disabled by default on new events; enable per-event or set is_enabled=true in PHP config.
  • Retired the ability to “archive” events; past events are optimized for search by default.
  • The global XPHP variable “is_logged_in” now refers to both LiveWhale users and SSO-only users.
  • JSON results for blurbs, files, images, news stories, pages, and profiles now use “group_title” rather than “group” as the array key.
  • The calendar component variable for day_start_date now removes the leading zero (April 8 instead of April 08).
  • The categories widget format variable now links to calendar results for each event type rather than being plain text.
  • Officially retired the legacy #! URL style for calendar views; existing links will automatically forward to hashless versions.
  • Disabled the ability to save multi-day repeating events — to create a repeating series, the initial event must be within a single day.
  • Back-end events searches will no longer sort by keyword ranking, and will instead sort chronologically by default.
  • Inline galleries no longer restrict width=auto or height=auto based on the first image; calculated per-image.

WYSIWYG editing

  • When editing source code in the WYSIWYG editor, the window now uses syntax highlighting; when inside a content layout, only the current editable area is shown in View Source.
  • When editing an inline image, the library now defaults to the current image’s collection.
  • Added an emoticon insert button option in WYSIWYG fields via the ENABLE_EMOTICONS config option.
  • CSS classes applied to images using the “style_formats” tool will now be preserved during saving and editing.
  • Fixed an issue where inline widget formatting (CSS classes) could sometimes be overwritten with mceNonEditable when editing or saving.

Bugs

  • Fixed an issue with saving widgets where the format setting from a widget template was being overridden.
  • Fixed an issue that could prevent admin lw_auth tokens from being used with certain permission-based API actions.
  • Fixed an issue with cached API requests that could cause them to sometimes have the wrong browser cache header response.
  • Fixed an issue where quotes in group names could prevent them from being properly imported as switch groups in a User CSV import.
  • Fixed an issue where LiveWhale Calendar views embedded via iframe could mistakenly use // as a link base instead of /.
  • Fixed an issue where ongoing or multiday events could show yesterday’s date instead of today’s.
  • Fixed an issue that prevented mailto: email links from honoring “open in a new window” setting.
  • Fixed an issue that prevented certain blocked phrases (like “Update”) from being saved as part of Redirect notes.

Developer options

  • The RSVP form now uses div tags instead of a table for labels and inputs for easier theming.
  • A stylesheet at _ingredients/backend/wysiwyg.less/scss/css will now auto-load into all WYSIWYG editors.
  • You can now use /live/json/users to pull a list of LiveWhale user accounts.

Behind-the-scenes

  • Updated database optimization to improve performance of pulling current and upcoming events.
  • Updated database encoding from utf8mb3 to utf8mb4 for extended character support.
  • NVM is now the recommended method of supporting node modules.
  • Migrated from node-sass to newer sass binary for SASS compilation.
  • Replaced most lodash functions and removed the globally included library from frontend and backend.
  • Upgraded TinyMCE to version 7.
  • Upgraded jQuery UI to version 1.14.1.
  • Upgraded jQuery to version 3.7.1.
  • Upgraded Ace Editor to version 1.37.5.
  • Updated PHP SAML toolkit to v4.2.0.
  • Since .es6 syntax is now natively supported, core and theme files renamed from .es6 to .js.
  • Separate bootstrap CSS from other concatenated CSS files.
  • Optimized page cache requests to leverage Apache and free up PHP resources faster.
  • Performance improvement: only load custom fields on event listings if they are included in the event theme component.
  • Optimized fetching of single vs. ongoing events when displayed separately in front-end calendar theming.
  • Improved optimization of the front-end calendar tag selector loading.
  • SMTP email notifications now use a built-in queue so failed sends can be re-attempted hourly for 24 hours.
  • Retired code for Disqus comment integration.
  • Retired the WOEID weather lookup config in favor of WEATHER_ID.
  • Streamlined a back-end process for updating and reporting on NPM package dependencies.
  • Updated npm packages for LESS (4.5.1 to 4.6.4) and SASS (1.97.3 to 1.99.0).
  • Add diagnostics monitoring for client modules that are slowing down page load.
  • Modernized how LiveWhale calculates relative timezones for individual datetime transpositions.
  • Fixed security warnings in third-party node modules: semver, minimatch.
  • Improved error reporting of certain behind-the-scenes command line queries.
  • No longer sending “max-age” header when CloudFront is used.

Release date: May 10, 2026

Other Recent Releases

View All