=== ICS Calendar Pro Changelog ===

= 6.1.9.3 - 2026.05.19 =

* Updated embedded ICS Calendar to 12.0.8.4. See `vendors/ics-calendar/changelog.txt` for details on additional changes in this version.

= 6.1.9.2 - 2026.05.13 =

* Full view:
  * Extended resolution of initial loading date issue introduced in version 6.1.9. Version 6.1.9.1 resolved the issue for calendars that load with Month tab as the default; this change should resolve the issue for other default tabs as well.
* Miscellaneous:
  * Resolved issue that may cause the calendar page to load an admin screen for logged-in administrators immediately after a plugin version update.
* Vendors:
  * Updated embedded ICS Calendar to 12.0.8.3-RC-1. See `vendors/ics-calendar/changelog.txt` for details on additional changes in this version. (Note: This version is given a 'release candidate' designation solely because the _only_ change in it is a requirement for the changes in this Pro update; since the changes are irrelevant to users of the free version, it is not being released directly at this time.)

= 6.1.9.1 - 2026.05.11 =

* AJAX:
  * Fixed a bug that would cause calendars not to load via AJAX once the "No AJAX" Calendar Builder option had been set, regardless of whether it was currently set on or off.
* Full view:
  * Resolved a bug (introduced with the new print logic in version 6.1.9) that would cause the calendar to load displaying the first available month (with default `pastdays` setting, 3 months prior to "today") instead of the current month.
  * Resolved incomplete logic introduced in 6.1.9 for handling preloading the calendar with a specific date selected using the `r34icsym` query string variable.

= 6.1.9 - 2026.05.08 =

* Calendar Builder:
  * Fixed a potential issue with setting a fixed **Start Date** that is earlier than the default **Past Days** setting for the selected view.
* Full view:
  * Fixed bug with **Start Date** parameter being ignored.
  * Improved support for Print button; restored **Print Button** option in Calendar Builder. Note: Due to the way Full view renders, a fixed maximum width needs to be set before the paper type to be printed on is known; the width has been optimized for portrait (vertical) printing on A4, US Letter and US Legal paper. This arbitrary restriction will be removed in a future update if possible.
* Month with Sidebar / Year with Sidebar views:
  * Added **No Sidebar Scroll** option to disable the default functionality that scrolls the page to the top of the day details sidebar when the user clicks on a date in the main calendar grid.
* Year Availability / Year with Sidebar views:
  * Fixed "Undefined variable $months_count" warning.
* i18n:
  * Updated translation strings.
* Vendors:
  * Updated embedded ICS Calendar to 12.0.8.1. See `vendors/ics-calendar/changelog.txt` for details on additional changes in this version.

= 6.1.8 - 2026.05.05 =

* Calendar Builder:
  * Added **No AJAX** and **User Agent** options (under **Advanced** tab).
  * Minor CSS refinements.
* i18n:
  * Updated translation strings.
* Vendors:
  * Updated embedded ICS Calendar to 12.0.8. See `vendors/ics-calendar/changelog.txt` for details on additional changes in this version.

= 6.1.7.1 - 2026.04.29 =

* ICS Events:
  * Resolved .ics output formatting issues that were causing Google Calendar to fail to load events when subscribing to the feed. Specifically, this involved: 1) adding full `DAYLIGHT`/`STANDARD` definitions to the `VTIMEZONE` block, 2) removing `FREEBUSY` from the `VEVENT` blocks, and 3) changing the `UID` to conform to a hexadecimal UUID format. (`UID` was breaking import _only_ on recurring events, for reasons that cannot be determined due to Google's limited feedback on ICS import failures.)
* Vendors:
  * Updated embedded ICS Calendar to 12.0.7.1. See `vendors/ics-calendar/changelog.txt` for details on additional changes in this version.

= 6.1.7 - 2026.04.27 =

* Admin:
  * Improved appearance of some Calendar Builder elements with changes in WordPress 7.0.
* Full view:
  * Added workaround to apparent CSS layering bug in Safari for event description hover box on all-day/multiday events.
* JSON-LD structured data:
  * Added square bracket array wrappers on output.
* Vendors:
  * Updated embedded ACF PRO version to 6.8.0.1.
  * Updated embedded ICS Calendar to 12.0.7. See `vendors/ics-calendar/changelog.txt` for details on additional changes in this version.

= 6.1.6 - 2026.04.01 =

* Month view:
  * Fixed bug in mobile view that would cause the date grid for past months to display incorrectly when `nomobile` was set.
* Miscellaneous:
  * Bumped 'tested up to' to 7.0.
* Vendors:
  * Updated embedded ACF PRO version to 6.8.0.
  * Updated embedded ICS Calendar to 12.0.6. See `vendors/ics-calendar/changelog.txt` for details on additional changes in this version.

= 6.1.5.1 - 2026.03.23 =

* Vendors:
  * Updated embedded ICS Calendar to 12.0.5.2. See `vendors/ics-calendar/changelog.txt` for details on additional changes in this version.

= 6.1.5 - 2026.03.10 =

* License:
  * Improved license diagnostics.
* i18n:
  * Added Icelandic.
* Vendors:
  * Updated embedded ICS Calendar to 12.0.5. See `vendors/ics-calendar/changelog.txt` for details on additional changes in this version.

= 6.1.4.2 - 2026.02.27 =

* Full view:
  * Fixed list view auto-scroll to scroll to next date that has events if "today" doesn't have any.
* Subscribe link:
  * Fixed bug that would cause the button not to appear or to be empty if the "text" option was selected.
* i18n:
  * Reworked `r34ics_i18n_symlinks()` to delete old translation files before copying or symlinking new file, to ensure changes are picked up.
  * Updated translation strings.
* Vendors:
  * Updated embedded ICS Calendar to 12.0.4.2. See `vendors/ics-calendar/changelog.txt` for details on additional changes in this version.

= 6.1.4.1 - 2026.02.07 =

* Plugin conflicts:
  * Resolved a conflict that would cause the Calendar Builder, ICS Events and Illustrations Library editing fields not to appear when Secure Custom Fields (SCF) is active on the site. (This extends existing logic to work around a conflict with the free version of Advanced Custom Fields.) _Note: If this update does not immediately resolve the issue, you may need to deactivate and reactivate ICS Calendar Pro, which will trigger copying the required `r34cspro-no-acf.php` file into the `wp-content/mu-plugins` folder._
* i18n:
  * Added workaround logic for edge case with Loco Translate conflict fix (introduced in 6.1.3), for servers where the PHP `symlink()` function is not available. The plugin now checks for `symlink()`, falls back to `copy()` if needed, and if both fail, it displays an admin notice addressing the conflict with Loco Translate.
  * Updated translation strings.
* Vendors:
  * Updated embedded ICS Calendar to 12.0.4.1. See `vendors/ics-calendar/changelog.txt` for details on additional changes in this version.

= 6.1.4 - 2026.02.02 =

* Print Button:
  * Updated logic for Print button in Calendar Builder to hide the option on incompatible views (currently: Full, Masonry, Up Next, Widget and Widget Availability). _NOTE: Support for Full view will be coming in a future update._
* Vendors:
  * Updated embedded ICS Calendar to 12.0.4. See `vendors/ics-calendar/changelog.txt` for details on additional changes in this version.

= 6.1.3.1 - 2026.01.21 =

* Bug fixes:
  * Changed call to `r34ics_i18n_locales()` to `r34icspro_i18n_locales()` in `ics-calendar-pro.php` to fix a fatal error that may occur in certain site configurations.
  * Resolved an issue that was causing Full view calendars to fail to load on some sites after 6.1.3 update. (Involved changed logic around `$args['ajax']` in `R34ICS::shortcode()`.)
* Vendors:
  * Updated embedded ICS Calendar to 12.0.3.1. See `vendors/ics-calendar/changelog.txt` for details on additional changes in this version.

= 6.1.3 - 2026.01.19 =

* Admin:
  * Fixed a bug that replaced the filtering dropdowns on other post types' admin index pages.
* Calendar Builder:
  * Select2 dropdown for **Category** is failing to load any results. Troubleshooting is ongoing, but in the meantime, the field has temporarily been changed from a dropdown to radio buttons.
* Plugin conflicts:
  * Worked around conflict with Loco Translate plugin by creating symlinks to ICS Calendar's general language translation files with locale-specific names in the `WP_LANG_DIR` path when Loco Translate is active. (Normally, the general language files self-contained within ICS Calendar load directly, but Loco Translate overrides this functionality.)
* Miscellaneous:
  * Added Illustrations Library data to System Report and relabeled "Saved Calendars" to "Calendar Builder."
  * Refactored instances of directly checking the `active_plugins` core option to use the `is_plugin_active()` function instead.
  * Tweaked CSS for Subscribe button icon.
* i18n:
  * Corrected ICS Calendar Pro brand name in German translation.
* Vendors:
  * Updated embedded ACF PRO version to 6.7.0.2.
  * Updated embedded ICS Calendar to 12.0.3. See `vendors/ics-calendar/changelog.txt` for details on additional changes in this version.

= 6.1.2 - 2026.01.16 =

* Appearance:
  * Fixed minor CSS issues.
* Calendar Builder:
  * Added new options to **Subscribe Link** to allow the link to be displayed as an icon, text, or both; fixed an issue with the Subscribe button CSS that would cause the text to become invisible on hover.
  * Updated help text.
* Full view:
  * Added CSS to address an issue of the calendar loading with zero width in certain themes.
* Widget view:
  * Fixed CSS error that prevented "today" from being highlighted in the calendar grid.
* Developer:
  * Added filters to the files in the `field_groups` directory to allow changing field configurations. Useful mainly for changing field default values. Exercise caution when using these filters; some changes to the arrays could break plugin functionality.
* i18n:
  * Updated translation strings.
* Vendors:
  * Updated embedded ICS Calendar to 12.0.2. See `vendors/ics-calendar/changelog.txt` for details on additional changes in this version.

= 6.1.1 - 2026.01.07 =

* Appearance:
	* Changed default **Base color palette** value to "custom palette" to avoid disrupting existing settings carried over from the Customizer pre-version 6.0.
  * JavaScript and CSS tweaks and minor bug fixes in color selection interface.
* Bug fixes:
  * Fixed "undefined constant" fatal error in `R34ICSLicense::_delete_license()` method.
* Miscellaneous:
  * Optimized images.
* i18n:
  * Updated translation strings.
* Vendors:
  * Updated embedded ICS Calendar to 12.0.1. See `vendors/ics-calendar/changelog.txt` for details on additional changes in this version.

= 6.1.0 - 2026.01.05 =

* Appearance:
  * Revamped **Base color palette** functionality to resolve some inconsistent behavior and bugs when customizing the color palette. Now the new "custom palette" option must be selected to access the editable color swatches, and customizations are saved correctly. _Note: This may break backwards compatibility with migrating existing Customizer palette changes pre-6.0, but this should be a one-time change._
* Bug fixes:
  * Added `array_walk()` logic in `R34ICSPro::display_calendar_args_params_merge()` method to avoid fatal errors on new `wp_kses()` data sanitization logic when parameter value is an array.
  * Fixed bug in ICS Events that caused recurring events with **End Recurrence** set to "after..." to continue indefinitely. (Missing `COUNT` parameter in ICS output, due to conditional error.)
  * Fixed fatal error on initial activation if an ICS Calendar version before 12.0.0 is already active.
  * Fixed issue with ICS Events admin page that was preventing the month dropdown from working to load a non-current month. (Required new `$force_reload` parameter added to `R34ICS::display_calendar()` method in free version.)
* i18n:
  * Updated translation strings.
* Vendors:
  * Updated embedded ICS Calendar to 12.0.0.1. See `vendors/ics-calendar/changelog.txt` for details on additional changes in this version.

= 6.0.0.3 - 2025.12.31 =

* Admin:
  * Fixed PHP warning on Appearance tab if certain settings are missing a value.
* Full view:
  * Fixed dynamic CSS for **Zoom** setting.
  * Fixed minor CSS issues with links in event descriptions.

(Note: Version 6.0.0.2 was withdrawn due to an additional minor CSS issue in Full view discovered a few minutes after its release.)

= 6.0.0.1 - 2025.12.29 =

* Minor bug fixes in admin interface (JavaScript on "Customize individual element colors" checkbox on the **Appearance** tab; default value for "Calendar page URL" setting.)

= 6.0.0 - 2025.12.29 =

* Admin:
  * Added improved license diagnostics to assist us in providing support when users encounter license activation issues.
  * Added setting for early access to beta updates.
  * Added view filtering on Calendar Builder index page.
  * Redesigned admin header and added "add" buttons for Calendar Builder and ICS Events; additional minor design refinements throughout.
  * Removed *System Report* tab for non-Administrators, since only Administrators can access the System Report.
* Appearance:
  * Added 13 new open source fonts.
  * Added 5 new color palettes, and translation of color palette names. Some of the new color palettes were created from photos taken during an autumn walk through the [Minnesota Landscape Arboretum](https://arb.umn.edu)
  * Inverted order of colors in "midnight" color palette to match the others; to continue using midnight on websites with a dark background, turn on the **Dark mode** setting.
  * Replaced Customizer with Appearance tab on Settings and Utilities page, added extensive new tools for customizing the color palette and other visual elements of calendars.
* Block Editor:
  * Introduced new **ICS Calendar Pro** (`ics-calendar-pro/shortcode`) block to replace the removed ACF-based block. This block allows you to select an existing Calendar Builder configuration. If you were using the old ACF-based ICS Calendar blocks and have not yet converted them, the **Convert ICS Calendar Blocks** will now create saved Calendar Builder configurations and insert this new block in your pages, with the same calendar configuration.
* Calendar Builder:
  * Streamlined and reorganized interface elements.
* CSS:
  * Extensively restructured CSS for greater efficiency (especially making use of the `:is()` pseudo-element).
  * Moved most color specifications to CSS variables for easier customization.
* Developer:
  * Added support for overriding default calendar templates by creating an `ics-calendar` folder (_not_ `ics-calendar-pro`) within your theme or child theme, and placing appropriately named replacement files (e.g. `calendar-month.php`) in that folder. Developers who wish to override templates are encouraged to copy the existing template to use as a starting point. Note that you can use this folder to override either individual calendar templates or the ICS Events CPT single (`single-r34icspro_event.php`) and archive (`archive-r34icspro_event.php`) templates.
* Full view:
  * **Calendar Height** now defaults to `80vh` instead of empty on new calendars. This ensures that the "year" tab scrolls to the current year by default but may improve overall usability of most views. An empty value is still allowed, and behaves as before.
  * Added **Mobile Tabs** and **Default Mobile Tab** parameters to allow limiting the mobile views to options that display well on small screens. (The defaults are "day", "list" and "year" tabs, with "year" as the default.) This replaces the old **Default to list tab on mobile breakpoint** checkbox.
  * Revamped CSS to make default appearance more closely match other views.
  * Stacked navigation header on mobile to prevent movement when switching tabs.
  * The "list" tab now loads pre-scrolled to "today" if today is in the currently selected date range.
  * The "year" tab is now on by default as well as the other tabs.
* ICS Events:
  * Added public feed URL(s) to top of ICS Events admin page.
  * Rebuilt single event detail page.
* Illustrations Library:
  * Limit loading Illustrations Library field groups to relevant admin page only.
* Legend and feed color coding:
  * Bug fix: The legend no longer displays on views that don't support show/hide toggles in the legend (Masonry, Widget Availability, Year Availability) unless feed color coding is being used.
* Masonry view:
  * Added option to tile events individually or grouped by date.
* Performance:
  * Due to observed issues with some sites using `reload` in ways that exceed request rate limits, causing providers like Google Calendar to put temporary blocks on IP ranges, the `reload` option is now forced to a minimum value of 120 (2 minutes), _unless_ `debug` is also set to `2` or higher. **The `reload` option is intended for troubleshooting only.** If your calendar updates more frequently than once per hour, the best option is to change the **Transient (cache) expiration** setting to a lower value. Recommended value: 300 (5 minutes).
  * The **pre-caching** feature has been temporarily removed in this version, pending a full review of the functionality. In many cases the previous version was not effective, and under certain circumstances it was producing some runaway activity that affected server performance and may have been triggering rate limit-related IP blocks.
* Year Availability and Year with Sidebar Views:
  * Year dropdown and year-by-year display of months now only applies if the full range of the calendar is greater than 18 months. For calendars showing fewer than 18 months total, the dropdown will not appear, and all months within the available range are displayed at once.
* Miscellaneous:
	* Changed most saved options to autoload = false.
  * Began work on certain new features slated for versions 6.1/6.2. (Relevant stub code is currently commented out.)
  * Moved `widget.php` to `classes/class-r34icspro-widget.php` and refactored some related logic.
  * Refactored some uses of ternary and null coalescing operators to avoid PHP warnings.
  * Removed disused asset files.
  * Removed several deprecated functions and methods that had been replaced with equivalent functions in the free version or that otherwise are no longer in use.
  * Various other minor code refactoring throughout the plugin to address inefficiencies, improve organization, and resolve some PHP notices and warnings.
* i18n: 
  * Added new translations: Romanian, Serbian, Slovak, Turkish and Ukrainian.
  * Revised _all_ translation strings for all languages. Please note: By necessity we are using machine translations. (Most strings are translated by DeepL; a few that produced errors with DeepL are cross-referenced with Google Translate.) If you find any translation errors, please let us know at the link below.
  * Streamlined language files to one default file per language, rather than separate files for each locale. Note: This will make translations available to many more locations, rather than defaulting to U.S. English if a file for a specific language _and_ locale were not previously present. However, the new translations may be slightly less accurate for specific locales that previously had a dedicated file.
* Vendors:
  * Updated embedded ACF PRO version to 6.6.2.
  * Updated embedded FullCalendar version to 6.1.20.
  * Updated embedded ICS Calendar to 12.0.0. See `vendors/ics-calendar/changelog.txt` for details on additional changes in this version.

**If you identify any translation issues, please use our [Translation Suggestions](https://icscalendar.com/translation-suggestions/) form to contact us.**

Note: Version 6.0.0 was branched from version 5.11.2. Subsequent patches to the 5.11.2 branch (5.11.2.1 and above) have been merged.

= 5.11.2.3 - 2025.12.08 =

* Performance:
  * Due to observed issues with some sites using `reload` in ways that exceed request rate limits, causing providers like Google Calendar to put temporary blocks on IP ranges, the `reload` option is now forced to a minimum value of 120 (2 minutes), _unless_ `debug` is also set to `2` or higher. **The `reload` option is intended for troubleshooting only.** If your calendar updates more frequently than once per hour, the best option is to change the **Transient (cache) expiration** setting to a lower value. Recommended value: 300 (5 minutes). Also changed the **Reload** setting in Calendar Builder from a checkbox to a number input. (Updated help text for that input coming in version 6.0.0.)
* Updated embedded ICS Calendar to 11.7.0.4. See `vendors/ics-calendar/changelog.txt` for details on additional changes in this version.

= 5.11.2.2 - 2025.11.30 =

* Added `r34icspro_get_all_options()` function to retrieve all ICS Calendar options for the admin utility **Clear Cached Calendar Data** with the **Also reset all ICS Calendar settings** option checked. There is currently no way (even with filters) to force the WP core function `wp_load_alloptions()` to retrieve non-autoload options. (See [this note](https://developer.wordpress.org/reference/functions/wp_autoload_values_to_autoload/#comment-7430) for details. It's unclear whether this is a performance-focused intentional decision or a bug in the core `wp_autoload_values_to_autoload()` function.)
* Updated embedded ICS Calendar to 11.7.0.3. See `vendors/ics-calendar/changelog.txt` for details on additional changes in this version.

= 5.11.2.1 - 2025.11.28 =

* Updated embedded ICS Calendar to 11.7.0.2. See `vendors/ics-calendar/changelog.txt` for details on additional changes in this version.

= 5.11.2 - 2025.10.29 =

* ICS Events:
  * Added `CLASS` (`PUBLIC`, `PRIVATE`, `CONFIDENTIAL`) and `IMAGE` to feed output.
  * Added JSON-LD structured data to individual event pages.
* Miscellaneous:
  * Bumped 'tested up to' to 6.9.
* Vendors:
  * Updated embedded ICS Calendar to 11.7.0.1. See `vendors/ics-calendar/changelog.txt` for details on additional changes in this version.

= 5.11.1.2 - 2025.10.21 =

* Year with Sidebar and Year Availability views:
  * Fixed an issue that may cause month headings not to display if the calendar was previously saved in Month or Month with Sidebar view and had **Month Navigation Style** set to "Compact."
  * Fixed displayed date range, so empty months before the earliest included event date and after the latest included event date do not display.
* Miscellaneous:
  * Minor code refactoring.

= 5.11.1.1 - 2025.10.19 =

* Calendar Builder:
  * Fixed bug that caused **Past Days** to fail to use the view default value when left blank. (In other words, it was defaulting to 0 instead of the correct default value for the selected view, e.g. `90` for Month view.)

= 5.11.1 - 2025.10.10 =

* Print:
  * Added _partial_ support for the new `print` parameter introduced in ICS Calendar 11.6.0. Current limitations: 1) this parameter is not included in Calendar Builder, but can be manually added to your shortcodes, e.g. `[ics_calendar id="123" print="true"]`, and 2) support for this parameter has only been added to the Month with Sidebar, Year with Sidebar, and Year Availability views. (It is also supported by all of the free views: Month, Week, List and Basic.) Support will be added to all Pro views when the parameter is added to Calendar Builder in the next update.
* Vendors:
  * Updated embedded ICS Calendar to 11.6.0. See `vendors/ics-calendar/changelog.txt` for details on additional changes in this version.

= 5.11.0.2 - 2025.10.06 =

* Admin:
  * Added precise height and width to ICS Calendar Pro SVG logo image in admin bar so it will display in Firefox.
* a11y:
  * Added ARIA attributes and `label` to HTML `select` tags in Month with Sidebar, Year Availability, and Year with Sidebar views, and previous/next arrows in Month with Sidebar view.
* i18n:
  * Added English (UK) translations. _Note: Machine translations sometimes fail to replace US spellings with UK spellings. If you are using UK English and notice any US spellings in ICS Calendar Pro output after this update, please [let us know](https://icscalendar.com/translation-suggestions/)._
  * Updated translation strings.
* Vendors:
  * Updated embedded ICS Calendar to 11.5.17.4. See `vendors/ics-calendar/changelog.txt` for details on additional changes in this version.

= 5.11.0.1 - 2025.09.23 =

* Full view: Fixed bug introduced in 5.11.0 that prevented view tabs from displaying.

= 5.11.0 - 2025.09.23 =

* ICS Events:
  * Added **Bypass IP validation on ICS Events admin calendar view** setting to resolve an issue with certain server configurations that prevents the ICS Events admin calendar view from displaying events due to a failure to validate the server's IP address when requesting the read-only admin events feed (which includes "draft" events). The default setting is designed to prevent any access to the feed other than from the server itself when rendering the admin page. Turning on this option removes that restriction, but the nonce is still validated.
* Miscellaneous:
  * Refactored code to pass [Plugin Check](https://wordpress.org/plugins/plugin-check) tests, and added relevant comments throughout.
  * Added new settings to System Report.
* i18n:
	* Changed text domain from `r34icspro` to default expected text domain `ics-calendar-pro`.
	* Updated translation strings.
* Vendors:
  * Removed Masonry library and switched to using the version included in WP core.
  * Updated embedded ICS Calendar to 11.5.17.2. See `vendors/ics-calendar/changelog.txt` for details on additional changes in this version.

= 5.10.12 - 2025.09.18 =

* Calendar Builder:
  * Modified conditional logic to add **Empty Day Background Color** option to any views that support **Fill Empty Days** (i.e. Month, Week, Month with Sidebar) in addition to existing support for Widget Availability and Year Availability.
* ICS Events:
  * Addressed an issue that may be causing events not to appear in the admin "All ICS Events" calendar view on some sites. Modified REST API permissions callback method to support both IPv6 localhost, and IP address lookup by domain when direct IP address matching fails. This _may_ fix a permission verification failure, which is the reason events aren't displaying, on servers where the site's domain resolves to multiple IP addresses. Since we are not able to test every possible scenario, [feedback](https://icscalendar.com/support/) on this change is welcomed.
  * Modified "list" tab of admin calendar view to always display all events for the current month, rather than just future events. Removed "Show past events" link.
  * Related to the above change, added an error message to display on the admin calendar view if permission verification fails (or if the feed request on this page returns any other HTTP error in the 4xx-5xx range).
  * Hotfix: Fixed an issue with category feeds when the category slug contains an underscore.
* Miscellaneous:
  * Resolved "Undefined array key" PHP warnings that may occur in `R34ICSPro::deprecated_feature_check()`.
* Vendors:
  * Updated embedded ICS Calendar to 11.5.17.1. See `vendors/ics-calendar/changelog.txt` for details on additional changes in this version.

= 5.10.11 - 2025.09.17 =

* Full view:
  * Fixed overflow issue on year tab when **Calendar Height** is set.
  * Fixed bug with **Daily Start Time** and **Daily End Time** that was imposing arbitrary start and end times when these fields were left blank, rather than showing the full 24 hours of the day.
* ICS Events:
  * Added **Color** field. This ties in with the stub functionality added in ICS Calendar 11.5.17. (Events get a `data-color` attribute, which can be used with custom CSS/jQuery to modify event appearance.) This is not yet supported in Full view. Additional color-related functionality will be coming in a future update.
* Miscellaneous:
  * Minor admin CSS tweaks.
* Vendors:
  * Updated embedded ICS Calendar to 11.5.17. See `vendors/ics-calendar/changelog.txt` for details on additional changes in this version.
  * Updated embedded ACF PRO version to 6.5.1.
  * Updated embedded FullCalendar version to 6.1.19.

= 5.10.10.1 - 2025.09.04 =

* Changed license validation server connectivity test URL.
* Updated embedded ICS Calendar to 11.5.16.1. See `vendors/ics-calendar/changelog.txt` for details on additional changes in this version.

= 5.10.10 - 2025.09.02 =

* Subscribe button: Refactored JavaScript for "Copy URL" link to use a more modern method, with graceful degradation.
* Admin UI visual refinements.
* Updated embedded ICS Calendar to 11.5.16. See `vendors/ics-calendar/changelog.txt` for details on additional changes in this version.

= 5.10.9.1 - 2025.08.26 =

* Updated embedded ICS Calendar to 11.5.15.1. See `vendors/ics-calendar/changelog.txt` for details on additional changes in this version.

= 5.10.9 - 2025.08.20 =

* Bug fix: Restored **Use Local (Client) Timezone** functionality that was broken after AJAX security changes introduced in ICS Calendar 11.5.14.2. Uses new `r34ics_ajax_js_args` filter added in ICS Calendar 11.5.15.
* Customizer: Removed empty option in color palette selection menu, as that seemed to be causing issues with refreshing the page on changes to the color palette.
* ICS Events: Fixed an issue where HTML code was visible in a field label on the editing screen.
* Removed redundant CSS color variables.
* Vendors:
  * Updated embedded ACF PRO version to 6.5.0.1.
  * Updated embedded ICS Calendar to 11.5.15. See `vendors/ics-calendar/changelog.txt` for details on additional changes in this version.

= 5.10.8.2 - 2025.08.19 =

* Modified call to `R34ICS::_url_get_contents()` to make the `$recursive` parameter an integer instead of a boolean, per changes in ICS Calendar 11.5.14.4.
* Updated embedded ICS Calendar to 11.5.14.4. Resolved an issue with Microsoft Office 365 calendars not loading after recent Microsoft changes. See `vendors/ics-calendar/changelog.txt` for details on additional changes in this version.

= 5.10.8.1 - 2025.08.14 =

* Calendar Builder: Removed beta indicator badges on **Compact** and **Combine Multiday Events**.
* i18n:
  * Removed `load_plugin_textdomain()` call after testing in WP 6.8.2 indicates it is no longer needed. If you are receiving error messages or if some translations appear to have gone missing after this update, please let us know using the [support request form](https://icscalendar.com/support/).
  * Added `load_plugin_textdomain()` for embedded ICS Calendar (free) translations. (Needed after this explicit call was removed in ICS Calendar 11.5.14.3, included in this update.)
* Updated embedded ICS Calendar to 11.5.14.3. See `vendors/ics-calendar/changelog.txt` for details on additional changes in this version.

= 5.10.8 - 2025.08.13 =

* ICS Events:
  * Admin calendar view: Fixed an issue that caused only published events to be shown. Unpublished events have the current post status appended to the displayed event title.
  * Security: Added obfuscation string to feed URLs. **Note:** This means that subscribe URLs for ICS Event feeds have changed.
  * Additional minor code refactoring.
* Miscellaneous: Commented out Safari 18 CSS glitch workaround (`R34ICSPro::safari_18_temp_fix()` on `admin_print_styles` action), as it no longer appears necessary. Will be removed entirely in a subsequent update if the problem does not resurface.
* i18n: Updated translation strings.

= 5.10.7.1 - 2025.08.11 =

* Updated embedded ICS Calendar to 11.5.14.2. See `vendors/ics-calendar/changelog.txt` for details on additional changes in this version.

= 5.10.7 - 2025.08.01 =

* Admin:
	* Updated icon set at right of ICS Calendar Pro admin header for consistency with all tabs of the Settings and Utilities page.
	* Added all Settings and Utilities page tab links to action links on WP Plugins page.
  * Minor CSS refinements.
* Calendar Builder:
  * Removed HTML tags from field labels due to change in ACF 6.4.3 that would cause those tags to be rendered as on-screen text.
* i18n:
  * Updated translation strings.
* Vendors:
  * Added vendor versions to System Report.
  * Updated embedded ACF PRO version to 6.4.3.
  * Updated embedded ICS Calendar to 11.5.14. See `vendors/ics-calendar/changelog.txt` for details on additional changes in this version.

= 5.10.6 - 2025.07.23 =

* Updated embedded ICS Calendar to 11.5.13. See `vendors/ics-calendar/changelog.txt` for details on additional changes in this version.

= 5.10.5.1 - 2025.07.01 =

* ICS Events: Added logic to dequeue other plugins' conflicting date/time pickers on the ICS Events editing screen.
* Customizer: Changed conditional introduced in 5.10.5 to more accurately identify affected Block Themes and limit the scope of when the color palette selectors are removed. When the issue has been resolved, the color palette selectors will be restored for Block Themes.

= 5.10.5 - 2025.07.20 =

* ICS Events:
  * Bug fix:
    * Fixed start and end date/time input glitches when using the French time format `G\hi`.
  * Enhancements:
    * End date/time loads empty on new events, and changes to match start when start is set, or if start is changed to a value later than the current end. If end is edited to be earlier than start, it is erased, an alert is displayed.
    * Start and end dates sync between all-day and time-based options on save. (Facilitates switching an event from all-day to time-based and vice-versa, without having to re-enter the dates.)
  * Settings:
    * Added "ICS Events Minute Increment" setting to control the minute increments in the start and end date/time pickers. (Default remains 5 minutes.)
  * Admin Calendar View:
    * Added placeholder '[...]' if event is saved without a title; resolves issue of the event not having a clickable link in this view.
    * Refactored code to use `r34ics_display_calendar_event_item` filter instead of `r34ics_display_calendar_filter_ics_data`.
* Customizer:
  * Added logic to turn off ICS Calendar Pro's color palette tools in the Customizer for Block Themes that support the Site Editor (a.k.a. Full Site Editing), because it is not currently functioning properly in that context. Users of Block Themes are encouraged to turn on the **Match calendar color palette to current Block Theme colors** setting instead.
* i18n:
  * Updated translation strings.
  * Added missing JavaScript translation strings.
* Vendors:
  * Updated embedded ICS Calendar to 11.5.12.7. See `vendors/ics-calendar/changelog.txt` for details on additional changes in this version.

= 5.10.4 - 2025.07.12 =

* Calendar Builder: Added **Event Text Replacement** to **Filters** tab. This filter allows you to automatically apply a calendar-wide find-and-replace on any text strings in your event titles and descriptions. (Uses [`r34ics_display_calendar_event_item`](https://icscalendar.com/developer/#r34ics_display_calendar_event_item) filter.)
* Full view:
  * Added **Year Tab Max Columns** option in Calendar Builder. By default, the year tab shows 3 months across when space allows; this option lets you set that number to 1 or 2 if 3 columns is too cramped for your layout.
  * Fixed CSS that prevented year tab from scrolling when calendar height is set.
* i18n: Updated translation strings.
* Vendors:
  * Updated embedded ACF PRO version to 6.4.2.
  * Updated embedded FullCalendar version to 6.1.18.
  * Updated embedded ICS Calendar to 11.5.12.6. See `vendors/ics-calendar/changelog.txt` for details on additional changes in this version.

= 5.10.3.7 - 2025.07.03 =

* Admin:
  * Changed ICS Events link in Calendar Builder tooltip.
  * Changed order of tabs.
* i18n: Updated translation strings.
* Updated embedded ICS Calendar to 11.5.12.5. See `vendors/ics-calendar/changelog.txt` for details on additional changes in this version.

= 5.10.3.6 - 2025.06.20 =

* Updated embedded ICS Calendar to 11.5.12.4. See `vendors/ics-calendar/changelog.txt` for details on additional changes in this version.

= 5.10.3.5 - 2025.06.12 =

* Updated `r34icspro-no-acf.php` (located in `mu-plugins` folder for Multisite installations) to account for situations where Advanced Custom Fields (free) is network active. Previously it was only detecting when ACF free was activated directly on the individual site. (This file suppresses the free version of ACF on ICS Calendar Pro admin pages that require features of the embedded ACF Pro.)
* Updated embedded ICS Calendar to 11.5.12.2. See `vendors/ics-calendar/changelog.txt` for details on additional changes in this version.

= 5.10.3.4 - 2025.06.12 =

* Settings page: Extending the change from 5.10.3.3, also added a workaround for servers that set `max_execution_time` to a value greater than 3600.

= 5.10.3.3 - 2025.06.10 =

* ICS Events: CSS change to fix an issue where calendar view might run off edge of screen on classic themes and certain block themes.
* Settings page: Added a workaround for DreamHost's default value of `-1` for the `max_execution_time` PHP setting causing the form to fail validation, which prevented saving changes to the plugin settings.

= 5.10.3.2 - 2025.06.04 =

* Added FullCalendar.io CSS variables to `style.css` and mapped most colors to ICS Calendar Pro's color variables to adjust a few items in Full view that were not properly picking up ICS Calendar Pro colors. A future update will further clean up redundant Full view-related CSS.
* Added `data-month` attributes to each month element in Year Availability and Year with Sidebar views; added `data-date` attribute to each date element in Month with Sidebar, Widget Availability, Widget, Year Availability and Year with Sidebar views.
* Updated embedded ICS Calendar to 11.5.12.1. See `vendors/ics-calendar/changelog.txt` for details on additional changes in this version.

_(Note: Version 5.10.3.1 was withdrawn a few minutes after release in order to include the `data-month` and `data-date` attributes noted above.)_

= 5.10.3 - 2025.06.03 =

* Customizer: Removed ICS Calendar Pro Color Palette options in Customizer when the new **Match calendar color palette to current Block Theme colors**  or **Dark mode** setting is turned on. (These new features are currently off by default.)
* CSS: Moved `.beta-indicator` and `.deprecated-indicator` CSS to free version.
* i18n: Updated translation strings.
* Updated embedded ICS Calendar to 11.5.12. See `vendors/ics-calendar/changelog.txt` for details on additional changes in this version.

= 5.10.2 - 2025.05.16 =

* Added support for multiple styles in Basic view. Replaced the **No Style** checkbox in Calendar Builder with a **Basic View Style** dropdown. Introduced "flexbox" style option. (More style options will be added in the future.)
* Calendar Builder: Changed options for **Event Downloads** to match new `eventdl` options in ICS Calendar 11.5.1.
* i18n: Updated translation strings.
* Updated embedded ICS Calendar to 11.5.11. See `vendors/ics-calendar/changelog.txt` for details on additional changes in this version.

= 5.10.1.2 - 2025.05.09 =

* i18n: Updated translation strings.
* Updated embedded ICS Calendar to 11.5.10.1. See `vendors/ics-calendar/changelog.txt` for details on additional changes in this version.

= 5.10.1.1 - 2025.05.06 =

* Calendar Builder: Fixed bug that was causing **ID Attribute** to be ignored.
* Bumped "tested up to" to 6.8.1.

= 5.10.1.2 - 2025.05.09 =

* i18n: Updated translation strings.
* Updated embedded ICS Calendar to 11.5.10.1. See `vendors/ics-calendar/changelog.txt` for details on additional changes in this version.

= 5.10.1 - 2025.05.02 =

* ICS Events:
  * Added button to add an event in each cell of the calendar table on the admin page. When clicked, the selected date pre-fills into the start and end date fields for the event.
  * New events without a specified date now default to pre-filling current date.
  * Minor admin interface tweaks (field labels/layout).
* Vendors:
  * Added logic to avoid attempting to load the embedded ACF PRO if another plugin has already loaded an embedded copy of ACF.
  * Updated embedded ICS Calendar to 11.5.10. See `vendors/ics-calendar/changelog.txt` for details on additional changes in this version.
* i18n: Updated translation strings.

= 5.10.0.1 - 2025.04.28 =

* Updated embedded ICS Calendar to 11.5.9.1. See `vendors/ics-calendar/changelog.txt` for details on additional changes in this version.
* Hotfix: Updated Full View CSS changes from 5.10.0 to limit scope of margin/padding adjustments, to fix an issue with the List tab.

= 5.10.0 - 2025.04.24 =

* Full View:
  * Added CSS to resolve layout, color and font size issues in some popular themes.
  * Changed **Full View Text Scaling** font sizes in the Customizer to us exact pixels, after observing that some popular themes have extremely small `rem` base sizes. Currently saved values will not be modified, but the new options will be presented the next time the Customizer is used.
  * Fixed issue that may cause HTML entity codes to display in the calendar under certain circumstances.
* ICS Events:
  * **ICS Events is now active by default.** ICS Events lets you create and manage events directly within your WordPress site, _in addition to or instead of_ external ICS feeds. You can integrate ICS Events directly into the same Calendar Builder calendars you use with external ICS feeds. ICS Events includes three custom taxonomies (category, location and organizer), supports recurring events, and has options to automatically generate pages on your site for both calendar categories and individual events. And, of course, it generates its own ICS feeds you can subscribe to... or even use on other sites with ICS Calendar! (If you will not be using this feature, it can be deactivated on the ICS Calendar Settings and Utilities page.)
  * Added details toggle for full list of recurrence dates to single event page for recurring events.
  * CSS refinements to improve appearance in some popular themes.
* License/Updater:
  * Added mechanism for early access to beta updates.
  * Replaced Plugin Update Checker with streamlined custom code based on [misha-update-checker](https://github.com/rudrastyh/misha-update-checker).
* Miscellaneous:
  * Minor code refactoring.
* Vendors:
  * Removed embedded Plugin Update Checker library.
  * Updated embedded ICS Calendar to 11.5.9. See `vendors/ics-calendar/changelog.txt` for details on additional changes in this version.
* i18n: Updated translation strings.

= 5.9.4 - 2025.04.22 =

* Calendar Builder: CSS and layout refinements.
* ICS Events: Added button in header of Classic List View to switch back to Calendar View.
* i18n: Updated translation strings.
* Updated embedded ICS Calendar to 11.5.8. See `vendors/ics-calendar/changelog.txt` for details on additional changes in this version.

= 5.9.3.1 - 2025.04.11 =

* Changed special `limitdays` logic for Full (and Week) view to be based on 8 days, rather than 7, as a temporary workaround for a discrepancy that is causing Full view to show one fewer day than specified. Setting **Limit Days** to 8 and **Past Days** to 0, and using Full view with "week" as the only selection for **Tabs**, approximates the appearance of the deprecated Grid view. Further refinements and enhancements will be made to this functionality prior to the planned removal of the now-deprecated Grid view, in version 6.x.
* Added error suppression if `timezone_open()` receives an invalid timezone string in `R34ICSPro::_get_ics_json_events()`.
* Updated embedded ICS Calendar to 11.5.7.1. See `vendors/ics-calendar/changelog.txt` for details on additional changes in this version.

= 5.9.3 - 2025.03.20 =

* Fixed a bug that was causing the `none` option for **Month Navigation Style** not to work with the Month with Sidebar view.
* Modified activation process to jump directly to **Getting Started** tab of admin page.
* Vendors:
  * Updated embedded ICS Calendar to 11.5.7. See `vendors/ics-calendar/changelog.txt` for details on additional changes in this version.

= 5.9.2 - 2025.03.06 =

* Admin:
  * Styled tabs on Calendar Builder and ICS Events editing screens to match tabs on Settings and Utilities page.
  * Fixed manual license activation message that was erroneously appearing on Plugins page regardless of activation status.
* ICS Events:
  * _Beta:_ Added **Append `icsevent` query string to Event/Registration URL?** option when setting an **Event/Registration URL**. This feature can be used to integrate with third-party form plugins such as [Gravity Forms](https://docs.gravityforms.com/using-dynamic-population/#h-query-string) or [Ninja Forms](https://ninjaforms.com/docs/querystrings/) to allow you to create a single event registration form page and dynamically insert event-specific details into the form. Detailed instructions are available on [our website](https://icscalendar.com/integrating-ics-events-with-forms/).
  * Added links to category list admin page to jump straight to the calendar view admin page showing just events from that category.
  * Fixed logic bug that may have prevented the new calendar view admin page from displaying.
  * Relabeled some menu items.
  * Added note to event editing screen indicating that attachments are stored in the Media Library and are publicly accessible.
* i18n: Updated translation strings.
* Vendors:
  * Updated embedded ICS Calendar to 11.5.6.1. See `vendors/ics-calendar/changelog.txt` for details on additional changes in this version.

= 5.9.1.2 - 2025.03.04 =

* ICS Events:
  * Restored `reload` on calendar view admin page (removed in 5.9.1.1) because it was causing issues with selecting different months.
  * Added note explaining that on the calendar view admin page, recurrence rules are only calculated for one year beyond the current date.
* License:
  * Added alternate license entry method using a constant. This method will not be documented, and should only be used as a last resort if your site has difficulty connecting to the licensing server, because the plugin cannot automatically check for updates.
* Admin:
  * Refactored various pages with translation string escape functions.
* i18n: Updated translation strings.

= 5.9.1.1 - 2025.02.27 =

* ICS Events:
  * Fixed a pair of issues that may cause new calendar view admin page not to load properly. (If your site is still displaying this error message after the update, you may need to clear the routing caches by loading and re-saving the **Settings / Permalinks** page, or by deactivating and reactivating ICS Calendar Pro.)
  * Removed `reload` on calendar view admin page for performance. (Reload on every page load is not needed since editing an event forces the cache to clear.)
* Admin Header:
  * Updated **ICS Events** link to point to the new calendar view admin index page, rather than the old post list-style index page.
  * ICS Calendar Pro logo now links to the **Settings and Utilities** page, **Utilities** tab, instead of the **Calendar Builder** page, and the tool icon links directly to the **Settings** tab.
  * Refactored code: replaced PHP arrays and complex logic for determining current page with a more straightforward HTML-based structure.

= 5.9.1 - 2025.02.26 =

* ICS Events:
  * Replaced default "post list" style admin index page for ICS Events with a calendar view. This is a much more efficient and intuitive way to access events to edit, especially for recurring events. The "Classic List View" option is retained for users who may still wish to access the standard post list format.
* Miscellaneous:
  * Corrected minor errors in the changelog for version 5.9.0.
* i18n:
  * Updated translation strings.
* Vendors:
  * Updated embedded ICS Calendar to 11.5.6. See `vendors/ics-calendar/changelog.txt` for details on additional changes in this version.

= 5.9.0 - 2025.02.24 =

* ICS Events:
  * Added **last** option to week recurrence, for events that always occur in the last week of the month.
  * Changed recurrence options that were previously radio buttons into checkboxes, allowing recurrences on multiple days of the week, days of the month, and weeks of the month.
  * Recurrence now includes an **Exception Dates** option to exclude specific dates from a recurrence set.
  * Fixed bug that ignored **End After** setting for recurrence.
  * Added safeguards to force PHP error reporting off when generating iCalendar output.
  * Refactoring: Replaced calls to ACF `get_field()` function with core WP `get_post_meta()` function.
* ICS Widget:
  * Updated and refactored ICS Calendar Widget functionality.
  * Added **Color(s)** option and additional instructions.
* Miscellaneous:
  * Removed color key toggle checkboxes from views where their functionality was confusing (Widget and Year with Sidebar).
* i18n:
  * Updated translation strings.
* Vendors:
  * Updated embedded ICS Calendar to 11.5.5. See `vendors/ics-calendar/changelog.txt` for details on additional changes in this version.

= 5.8.3.1 - 2025.02.10 =

* Fixed logic bug that was causing the **Event CSS Classes** filter in Calendar Builder to have no effect.
* Modified logic for **Default to list tab on mobile breakpoint** in Full view so it only applies on the initial page load and not on browser resize (e.g. when the user rotates their device).
* Updated embedded ICS Calendar to 11.5.4.1. See `vendors/ics-calendar/changelog.txt` for details on additional changes in this version.

_Note: Version 5.8.3 was withdrawn due to an issue discovered in ICS Calendar v. 11.5.4 a few minutes after its release._

= 5.8.2.2 - 2025.02.07 =

* Updated embedded ICS Calendar to 11.5.3.2. See `vendors/ics-calendar/changelog.txt` for details on additional changes in this version.

= 5.8.2.1 - 2025.02.06 =

* Updated embedded ICS Calendar to 11.5.3.1. See `vendors/ics-calendar/changelog.txt` for details on additional changes in this version.

= 5.8.2 - 2025.02.03 =

* Added new **Pagination Auto-cycle** option for Basic and List views. When the pagination feature is enabled, this will automatically cycle through the pages every 5 seconds. (Note: Any user interaction with the previous/next page links will stop cycling.)
* Added support for **Reverse** parameter in Basic view in Calendar Builder. (This parameter was already supported in Basic view; it was just missing from Calendar Builder.)
* Updated copyright to 2025.
* i18n: Updated translation strings. Added non-country specific translation files for German and Dutch.
* Updated embedded ICS Calendar to 11.5.3.1-beta-1. See `vendors/ics-calendar/changelog.txt` for details on additional changes in this version.

= 5.8.1.1 - 2025.01.28 =

* Updated embedded ICS Calendar to 11.5.1.3. See `vendors/ics-calendar/changelog.txt` for details on additional changes in this version.

= 5.8.1 - 2025.01.20 =

* Added **No Overlap** option for Full view. By default, concurrent events in the time grid (Day and Week tabs of Full view) display in an overlapping fashion. Turning on this option will prevent the overlap. Note: This change may not be optimal for narrow page layouts.
* i18n: Updated translation strings.
* Updated embedded ICS Calendar to 11.5.1.2. See `vendors/ics-calendar/changelog.txt` for details on additional changes in this version.

= 5.8.0.1 - 2025.01.08 =

* Updated embedded ICS Calendar to 11.5.1.1. See `vendors/ics-calendar/changelog.txt` for details on additional changes in this version.

= 5.8.0 - 2025.01.07 =

* Added license activation debugging tools. If you are unable to resolve license issues with the suggestions on the License tab, add `define('R34ICSPRO_LICENSE_DEBUG', true);` to your site's `wp-config-php` file, then try entering your license details again. The **License API request URL** will be displayed in an admin notice. Please include that URL in a [support request](https://icscalendar.com/support).
* Corrected release dates for versions 5.7.0.2 and 5.7.0.3 in `readme.txt` and `changelog.txt`.
* Rewrote description text for **Start Date** field in Calendar Builder, for clarity.
* Minor code refactoring.
* i18n: Updated translation strings.
* **Updated embedded ICS Calendar to 11.5.1.** See `vendors/ics-calendar/changelog.txt` for details on additional changes in this version. _Note: ICS Calendar version 11.5.x includes numerous updates based on current best practices recommended for the WordPress Plugin Directory. Corresponding changes to ICS Calendar Pro code outside of the free version are not yet included here, but will be incorporated into the next update._

= 5.7.0.3 - 2024.12.14 =

* Updated embedded ICS Calendar to 11.4.1.2. See `vendors/ics-calendar/changelog.txt` for details on additional changes in this version.

= 5.7.0.2 - 2024.12.14 =

* Added `availability_only` shortcode parameter. _This feature is still an experimental work-in-progress, so it is not yet available in the Calendar Builder interface._
* Updated embedded ICS Calendar to 11.4.1.1. See `vendors/ics-calendar/changelog.txt` for details on additional changes in this version.
* Bumped "Tested up to" to 6.7.1.

= 5.7.0.1 - 2024.12.06 =

* Vendors:
  * Updated embedded ICS Calendar to version 11.4.1 to revert a change introduced in version 11.4.0 (which was included in the Pro 5.7.0 update), that caused certain view-specific default values to override saved Calendar Builder parameters. (The identified issue was that "Count" was ignored in List view, but there may have been other similar issues.) 
* Miscellaneous:
  * Updated copyright/license verbiage in `readme.txt` and `ics-calendar-pro.php` to more explicitly emphasize that ICS Calendar Pro is not open source software.

= 5.7.0 - 2024.12.03 =

* Added `R34ICSPro::shortcode_defaults_merge_pro()` method to take advantage of new `r34ics_shortcode_defaults_merge` filter, introduced in ICS Calendar 11.4.0.
* Updated embedded ICS Calendar to 11.4.0.1-beta-1. Includes addition of new **Bypass nonce on AJAX requests** setting (see note below). See `vendors/ics-calendar/changelog.txt` for details on additional changes in this version.

_**Note on AJAX nonce:** ICS Calendar AJAX loading uses a [nonce](https://developer.wordpress.org/plugins/javascript/ajax/#nonce), per WordPress best practices for optimal database security. (The nonce is not strictly necessary in this case, as the plugin's AJAX calls have only limited ability to interact with the database, and all AJAX POST data is validated and sanitized.) **In general we recommend leaving the nonce validation in place.** However, we have found that some caching plugins -- particularly LiteSpeed Cache -- may cache the nonce code with your page content, causing calendars to fail to load after the nonce expires. Turn on this setting to bypass ICS Calendar's AJAX nonce validation._

= 5.6.2 - 2024.11.18 =

* Added `class_exists()` check in all class files.
* Calendar Builder layout tweaks.
* Restored `R34CISPro::deprecated_feature_check()` call. Transients limit execution to once per week. Database queries only need to be run once (status is then stored in `wp_options`). Notices are dismissible.
* Standardized handling of all admin notices using `r34ics_deferred_admin_notices()` function, and modified some notices to be dismissible.
* i18n: Updated translation strings.
* Vendors:
  * Updated embedded ACF PRO to version 6.3.11.
  * Updated embedded ICS Calendar to 11.3.7. See `vendors/ics-calendar/changelog.txt` for details on additional changes in this version.

= 5.6.1.1 - 2024.11.14 =

* Removed call to `R34CISPro::deprecated_feature_check()` as the check for ICS Calendar Block (introduced in 5.6.0) can cause significant database activity if the transient isn't being saved properly. A new means of warning admins about the presence of the deprecated ICS Calendar Block will be added in a subsequent update.

= 5.6.1 - 2024.11.11 =

* i18n: Added Czech translations.
* Updated embedded ICS Calendar to 11.3.6.1.

= 5.6.0 - 2024.11.07 =

* **Deprecated the ICS Calendar Block,** and added **Convert ICS Calendar Blocks** to convert existing blocks. See note 1 below for more details. 
* Added `r34ics_admin_utilities_more` action.
* Added new **Load embedded ACF PRO early** setting. See note 2 below for more details.
* Fixed minor CSS issue with new ICS Calendar Pro admin header bar.
* Added forced deprecated feature check on install/update and shortened transient expiration on standard deprecated feature check from 1 week to 1 day, to ensure that notices about deprecated features appear quickly.
* Additional minor code refactoring.
* Updated embedded ICS Calendar to 11.3.5.1.

_Note 1, on ICS Calendar Block deprecation and the **Convert ICS Calendar Blocks** utility: The ICS Calendar Block was deprecated due to its reliance on ACF Blocks and significant performance issues we have observed with them in the Block Editor during WordPress 6.7 beta testing. The utility allows you to find all instances of ICS Calendar Block throughout your site, quickly convert them to saved calendars in Calendar Builder, and replace the block in your posts and pages with the corresponding new Calendar Builder shortcode. The plugin also runs an auto-detection of existing ICS Calendar Blocks and displays an admin notice if you need to run the utility. _ICS Calendar Block will be removed entirely in version 6.0._ We expect to introduce a new option for the Block Editor in a later 6.x point release. (The *Convert ICS Calendar Blocks** utility is not displayed if the site has the Classic Editor plugin active.)_

_Note 2, on **Load embedded ACF PRO early** setting: Version 5.4.3.1 changed when the embedded ACF PRO loads, to avoid new warnings being added in WordPress 6.7, pertaining to the `load_plugin_textdomain()` function being called too early. (A large number of plugins and themes are affected by these new warnings.) Changing the loading sequence can have a cascading effect on other plugins and themes, resulting in various unpredictable issues. Turn on this new setting to revert ACF PRO to its previous loading sequence, which has resolved these issues for some users. Be aware that with this setting turned on, if you have `WP_DEBUG` set to `true`, WordPress 6.7 may begin displaying warnings, especially if your site is configured to use a language other than English._

= 5.5.0 - 2024.11.05 =

* Added ICS Calendar Pro admin header bar on all relevant admin pages.
* Fixed month/list toggle bug introduced with removal of cookie logic in version 5.4.3.1.
* Modified version-specific upgrade notices not to display on initial installation.
* Updated support links.
* i18n: Updated translation strings.
* Updated embedded ICS Calendar to 11.3.5.

= 5.4.4.3 - 2024.10.15 =

* Updated embedded ACF PRO version to 6.3.9. The 6.3.9 update includes an important security fix.
* Added logic to prevent direct access to ACF CPT editing pages when using the embedded version of ACF PRO.

= 5.4.4.2 - 2024.10.15 =

* This update addresses an issue with translation loading first introduced in version 5.4.3.1 (and free version 11.3.4.3). WordPress 6.7 adds a new warning message when the `load_plugin_textdomain()` function is called too early. Core team recommends not running this function at all, and instead relying on automatic just-in-time translation loading. However, after additional troubleshooting we have determined that the embedded ACF PRO requires the function to be called for some translations to load. We have adjusted both this function call and the `R34ICSPro::acf_init()` method call to be on the `init` action with extremely low priority values, to ensure that they run as early as possible. This arrangement appears to properly load translations without the 6.7 warning, while also loading ACF early enough for it to function properly. (We are working towards removing the embedded version of ACF PRO altogether, which is currently slated for version 6.0.0.)
* Converted all hook-related closures in `ics-calendar-pro.php` to named functions.
* Updated embedded ICS Calendar to 11.3.4.4.

= 5.4.4.1 - 2024.10.15 =

* ICS Events:
  * Fixed issues that were causing ICS Event category-specific calendars to incorrectly load all events, and also preventing Calendar Builder/ICS Calendar Blocks from loading the auto-complete Category dropdown.
  * Added method to use `r34ics_shortcode_feed_array_params` filter, and removed some related code that is no longer needed.
* Full View:
  * Added `r34icspro_fc_fixed_week_count` and `r34icspro_fc_show_non_current_dates` filters, to allow overriding FullCalendar.io's defaults for its [fixedWeekCount](https://fullcalendar.io/docs/fixedWeekCount) and [showNonCurrentDates](https://fullcalendar.io/docs/showNonCurrentDates) settings. These will be configurable options in a future update.

= 5.4.4 - 2024.10.10 =

* ICS Events:
  * Added Block Theme support to ICS Event archive (calendar landing page) and single templates.
	* Added "View Calendar" link under "ICS Events" in admin menu when **Generate calendar landing pages using view** checkbox is checked in ICS Calendar Settings.

= 5.4.3.1 - 2024.10.09 =

**Please note: Due to changes in the WordPress core version 6.7 betas, the ICS Calendar Block for Block Editor does not function reliably. We are currently investigating the issue. In the meantime, if you encounter problems, we recommend using Calendar Builder with a Shortcode block, rather than the ICS Calendar Block, or reverting to WordPress 6.6.x until the issue has been resolved.**

* Bug fixes and code refactoring:
  * Refactored code for reading saved calendar data to resolve `Undefined array key "hiddenonload"` PHP warning and other possible minor issues.
  * Refactored `R34ICSPro::display_calendar_args_params_merge()` and related methods to resolve `Uncaught TypeError: array_merge(): Argument #2 must be of type array, bool given` errors.
  * Refactored `R34ICSProEvent::acf_save_post()` method (as well as a few other instances of `get_post_meta()`). May resolve a PHP fatal error under certain circumstances when auto-saving ICS Events.
  * Removed `js.cookie.min.js` and all associated cookie logic. The use of cookies was very limited (saving the client-side status of certain toggle switches between page loads) and was not always working reliably, so the decision was made to remove them altogether.
  * Removed unnecessary `load_plugin_textdomain()` call, and set `$translate` input parameter to `false` on `get_plugin_data()` call, as these may cause PHP notices as of WordPress 6.7. See the [WordPress Trac](https://core.trac.wordpress.org/ticket/62154#comment:8) for more details. _Note: The explicit `load_plugin_textdomain()` call is still needed for the ICS Calendar Block (which uses ACF Blocks) to properly render translations in the Block Editor, so it is conditionally loaded when the `r34icspro_noblock` option is false._
* i18n:
  * Added missing translations for Illustrations Library and removed cookie-related text strings.
* Vendors:
  * Updated embedded ICS Calendar to 11.3.4.3.
  * Updated embedded ACF PRO version to 6.3.8.

= 5.4.3 - 2024.10.01 =

* ICS Events:
  * Added **Add an event** and **Edit event** buttons to archive and single event templates, visible only to users with `edit_others_posts` capability (Administrators and Editors).
  * Improved archive and single event templates. Note: Templates are currently being tested against the [Twenty Twenty-Four](https://wordpress.org/themes/twentytwentyfour/) and [Astra](https://wordpress.org/themes/astra/) themes, both with and without [Classic Editor](https://wordpress.org/plugins/classic-editor/).
  * Modified ICS Calendar options applied to the selected archive view to most closely match best use cases.
  * Removed some **Generate calendar landing pages using view** options that are not optimal for the current ICS Events functionality.
  * Fixed a bug that would cause the event's URL to always be the event page, even if a custom **Event URL** is set.
  * Implemented workaround for a bug that is preventing category calendar pages from loading when a custom **Calendar Page URL** is set. Currently always uses `/ics-categories/` in the URL path. This will be resolved in a future update.
  * _Feedback is welcomed._
* System Report:
  * Added new ICS Calendar Pro settings.
* i18n:
  * Updated translation strings.
* Vendors:
  * Updated embedded ICS Calendar to 11.3.4.2.

= 5.4.2 - 2024.09.28 =

* Admin:
  * Added Safari 18 layout bug CSS fix, based on the fix implemented in [Classic Editor 1.6.5](https://wordpress.org/plugins/classic-editor/#developers).
  * Changed status of Pro installation admin notice from `warning` to `info`.
  * Changed `flush_rewrite_rules()` (called on the Settings and Utilities page) to use `delete_option('rewrite_rules')` instead; `flush_rewrite_rules()` was failing to properly generate new rules due to when it was being called. See: [https://developer.wordpress.org/reference/functions/flush_rewrite_rules/#comment-4023](https://developer.wordpress.org/reference/functions/flush_rewrite_rules/#comment-4023). Also removed `flush_rewrite_rules()` call altogether from `R34ICSPro::purge_pro_calendar_transients()` because it should not be necessary there. 
* Customizer:
  * Added more (larger) options for text scaling.
* ICS Events:
  * Added error handling for cases where the event post is not published or has been deleted.
  * Added **Recurrence** column to admin index page.
  * Fixed issue that would prevent event pages from loading if the event occurred outside of the default date range (-90 to +365 days).
  * Fixed issue with sorting events by start/end dates on the admin index page.
  * Updated admin index page to display em dashes instead of current datetime when a saved event doesn't have start or end date/time set.
  * **Note:** Sorting updates to the admin index page may require a bulk edit and re-save of all existing events.
* Subscribe Link:
	* Replaced previous iCalendar-specific button with a floating menu allowing the user to select clickable links for Google Calendar, Apple iCalendar, Microsoft Outlook, or to copy the feed URL directly to their clipboard.
  * Placement of the **Subscribe** button now matches the **Legend Position** setting.
* Performance:
  * Added conditional to load the `R34ICSProEvent` class only if the ICS Events setting is turned on.
  * Added conditionals to only update `r34icspro_deferred_admin_notices` in the database when the queued notices have actually been changed. 
  * Removed plugin dependency check logic in `ics-calendar-pro.php`, as there are no longer any dependencies.
* i18n:
  * Updated translation strings.
* Vendors:
  * Updated embedded ICS Calendar to 11.3.4.1.

= 5.4.1 - 2024.09.24 =

* Search Filter:
  * Full and Masonry views are now fully integrated with the search filter, so hidden events are fully hidden and the calendar redraws as appropriate when the filter string changes or is reset.
* Miscellaneous:
  * Fixed possible PHP `undefined array key` warning caused by new `hiddenonload` option not being set for existing calendars.
  * Minor code refactoring.
* i18n:
  * Updated translation strings, including missing strings in some newer Calendar Builder features.
* Vendors:
  * Updated embedded ICS Calendar to 11.3.4.

= 5.4.0.1 - 2024.09.18 =

* Updated `nolink` functionality for Full view to match changes in ICS Calendar 11.3.3.2.
* Updated embedded ICS Calendar to 11.3.3.2.

= 5.4.0 - 2024.09.16 =

* Calendar Builder:
  * Added **Hidden on Load** option to allow controlling which calendar feeds are turned on or off on the initial page load. Redesigned layout of **ICS Calendar Feed(s)** section to accommodate the additional field and revised content of the associated help bubble.
  * Minor CSS enhancements.
* Illustrations Library:
  * Fixed bug that required custom keywords to be all-lowercase in order to match. Keyword matches are now entirely case-insensitive.
* i18n:
  * Updated translation strings.
* Miscellaneous:
  * Updated PHP requirement to 7.4 to match embedded ACF PRO requirement.
* Vendors:
  * Updated embedded ICS Calendar to 11.3.3.1.
  * Updated embedded ACF PRO version to 6.3.6.

= 5.3.3 - 2024.08.16 =

* Filters (Calendar Builder/ICS Calendar Block):
  * Modified callback methods to skip empty inputs, which could cause false matches.
  * Clarified help text for **Event CSS Classes** filter.
* Full view:
  * Added support for new **Open links...* (`sametab`) functionality. Support for this feature in other templates was added in 5.3.2.
  * Added CSS opacity workaround for stacking issue with tall upward event hover boxes layering behind the `thead` row. For an explanation of why this works, see: https://stackoverflow.com/a/11742116
  * Removed `JSON_PRETTY_PRINT` in JSON encoding for Full view event data, to reduce file size on calendars with large amounts of data.
* Illustrations Library:
  * Fixed bug in keyword matching due to `strip_tags()` causing words to occasionally run together if descriptions contain HTML tags.
* Block Editor:
  * Fixed an issue with duplicate IDs (`$args['guid']`) when duplicating an ICS Calendar block in the Block Editor, which could prevent all but the first calendar from rendering on the front end. (Note: The current fix appends a counter value to the ID on the front end only; it does not modify the value saved within the Block Editor.)
* i18n:
  * Updated translation strings.
* Miscellaneous:
  * Moved older changelog entries to new `changelog.txt` file.

= 5.3.2 - 2024.08.09 =

* Added **Disable front-end cookies** option on Settings page. By default, ICS Calendar Pro generates simple front-end cookies to remember the state of toggle checkboxes between page loads. No identifying information is tracked, and the cookies expire with the browser session. Check this box if you do not need this functionality and would prefer not to store these cookies.
* Modified Calendar Builder to support `sametab` functionality changes in ICS Calendar (free version). The previous checkbox for opening all links in the same tab has been replaced with **Open links...** radio buttons, with three options corresponding to the three new values for `sametab`.
* Minor block editor CSS adjustments.
* Removed stray comma in `R34ICSPro::admin_pro_plugin_action_links()` to address an edge-case PHP parsing error.
* Reverted change to conditional logic for events spanning two days, matching reversion in ICS Calendar (free version) 11.3.3.
* Updated embedded ICS Calendar (free version) to 11.3.3.

= 5.3.1.1 - 2024.07.23 =

* Fixed a bug in 5.3.1 that would cause valid annual licenses to be read as expired.
* Modified functions that check expired licenses not to run on AJAX calls.

= 5.3.1 - 2024.07.22 =

**Customizer note:** We have observed that the "Customize" admin menu link no longer directly opens the ICS Calendar Pro panel in the Customizer, and have determined this is due to an identified [bug in WordPress core](https://core.trac.wordpress.org/ticket/61561) that is currently slated to be patched in WordPress 6.7. The code in ICS Calendar Pro will therefore be left as-is, and the link should function properly again after WordPress core has been updated.

* Calendar Builder:
  * Added **View** and **Feeds** columns to admin index to make saved calendars easier to identify in the list.
* Full View:
  * Added missing support for **Fix Redundant Events** (`fixredundantuids`) and, more generally, the `r34ics_display_calendar_filter_ics_data` filter. Bear in mind if you are using this filter that the array structure for Full view differs significantly from all other views, so the logic in your filtering function must be adjusted according to the view.
* ICS Events:
  * Added custom slug option for ICS Events calendar landing page.
* License:
  * Refactored license verification method to prevent it from running multiple times per page request, and to save a transient value even when `false`. This should resolve a rare situation where WP admin performance is severely affected when the site cannot connect to the ICS Calendar Pro license API server.
* Up Next View:
  * Enabled the **Start On** and **Past Days** settings, with the latter defaulting to 0. See v. 5.3.0 changelog about **Limit Days** for more details.
* Bug Fixes:
  * Added conditional to prevent intermittent fatal errors with `R34ICSProLicense::puc_init()`.
  * Fixed bug with **Past Days** in Full view.
  * Fixed issue with admin notice handling change in version 5.3.0, that might cause admin notice text to display on the front end when loading calendars via AJAX.
  * Resolved an issue that was preventing the **Illustrations Library** from loading when Advanced Custom Fields (free version) is installed on the site.
* Deprecated Features:
  * Added mechanism for removing the deprecated Grid view in the upcoming 5.5 update, and automatically rendering all Grid view calendars in Full view, with week and day tabs. (This provides approximately compatible features with the existing Grid view, plus it adds new capabilities and will continue to receive updates.)
* Miscellaneous:
  * Changed names of settings actions to replace `admin_options` with `settings` for consistency with changes in 11.3.2.
  * Updated r34icspro_install() to re-install r34icspro-no-acf.php if applicable. (Needed for Illustrations Library fix noted above.)
* i18n:
  * New and updated translation strings. Corrected some errors in Italian and French.
* Vendors:
  * Modified check for ICS Calendar (free) to automatically deactivate it, rather than displaying an admin notice instructing the user to deactivate it manually.
  * Updated embedded ICS Calendar to 11.3.2.1.
  * Updated embedded ACF PRO version to 6.3.4.
  * Updated embedded FullCalendar version to 6.1.15.

= 5.3.0 - 2024.07.11 =

* Admin:
  * Updated handling of admin notices to use our deferred notices mechanism throughout.
* Calendar Builder:
  * Added **Calendar Height** option for Full view, to allow for setting a maximum height for the calendar container. Calendars that exceed this height will have internal scrollbars. Useful with time grid tabs (week/day) in conjunction with the new **Show All Hours** option, as this will cause the time grid to load snapped to the **Daily Start Time** instead of midnight.
  * Added **Show All Hours** option for Full view, to allow time grids to display the full 24-hour range but highlight the Start/End Times range. (Default behavior is to _only_ show those hours in the grid.) Corrected help bubbles for Start/End Times to reflect that default behavior.
* Developer:
  * Added clarifying comments for the conditionals in the `R34ICSPro::acf_init()` method.
* License:
  * Changed annual license renewal verbiage to steer users to the new **Renew** button on the [License Keys](https://icscalendar.com/my-account/api-keys/) page, rather than purchasing an additional license as in previous years.
  * Improved handling for edge cases where the site is unable to connect to our licensing server.
  * Updated language of some license-related error messages, and simplified instructions under the **Having trouble with your license?** heading on the License admin page.
* Up Next View:
  * Enabled the **Limit Days** setting, with a default of 30. (Prior versions had the limit hardcoded to 30.) This shorter default value was selected due to the common usage of this view with feeds that may contain a large number of recurring events daily; using a larger value for `limitdays` can cause severe performance issues with those calendars. However, calendars with a smaller number of events should be able to use a much larger value as needed.
  * Changed "No events found" message to "No events in the next 30 days." The number of days is dynamically inserted based on the **Limit Days** setting for the calendar; 30 is the default for this view as noted above.
* Widget View:
  * Fixed bug with **Empty Day Title/Empty Day Description** not working.
  * Added support for **Empty Day Background Color**.
* Miscellaneous:
  * Corrected release date for version 5.2.1 (2024.07.08) in changelog and other inconsistencies in structured comments in `ics-calendar-pro.php` and `readme.txt`.
  * Removed unnecessary and/or redundant `code-snippets.php` and `README.md` files, and reorganized file structure.
*i18n:
  * Updated translation strings.

= 5.2.1 - 2024.07.08 =

* Calendar Builder:
  * Fixed layout bug with certain help hover boxes introduced by changes in 5.2.0.
* ICS Calendar Block:
  * Changed default alignment to "wide".
* System Report:
  * Fixed multiple issues with list of saved calendars.
* i18n: Updated translation strings.
* Vendors:
  * Bumped embedded ICS Calendar (free) version to 11.3.2.

= 5.2.0 - 2024.07.03 =

* Illustrations Library:
  * Enhanced the existing **Event Illustrations** functionality to support managing a library of custom illustrations and keywords entirely within WordPress, with no coding needed. The new **Illustrations Library** admin page allows you to upload or select images from your WordPress Media Library and assign them to keywords. Then, any calendars that have the **Event Illustrations** option enabled for local images will automatically match keywords from the Illustrations Library and display the corresponding images as part of the event details in the calendar. Event Illustrations can still use the previous filter-based custom illustration path, or Google Calendar images if the source feed is a Google Calendar.
* Calendar Builder:
  * Reformatted HTML for help hover boxes from `<button>` tags to `<span>` tags and temporarily added `aria-hidden="true"` to make navigating the page with assistive technologies more manageable. This of course hides the help dialogs from assistive technologies, which is not the ultimate goal; further work is forthcoming on improving the accessibility of the Calendar Builder interface.
  * Removed "Beta" label on Up Next view, Filters tab items, and Event Illustrations.
* Full View:
  * Removed **Event Title Tag** and **Event Description Tag** options for Full view, since they are not applicable in that view and were breaking the UI. Added logic to force defaults on any saved calendars with bad values for these options.
* jQuery:
  * Replicated addition of `elem` parameter into `r34icspro_init()` function and `r34icspro_init_start` and `r34icspro_init_end` events, to match changes in ICS Calendar (free) 11.3.1. This allows for custom functionality to identify which calendar element fired off the event when the calendar was loaded via AJAX.
  * Moved the firing of `r34icspro_init()` function into the `r34ics_init_end` event to reduce possible unnecessary JavaScript execution.
* Miscellaneous:
  * Added new `r34icspro_get_saved_options()` and `r34icspro_is_google_calendar()` functions for specialized uses around Event Illustrations functionality.
  * Minor code refactoring.
* i18n:
  * New and updated translation strings.
* Vendors:
  * Bumped embedded ICS Calendar (free) version to 11.3.1.

= 5.1.1 - 2024.06.27 =

* Basic View:
  * Minor CSS tweak: removed `!important` from transparent background on events.
* Calendar Builder / ICS Calendar Block:
  * Layout refinements/CSS, particularly in the **ICS Calendar Feed(s)** table.
  * Rewrote description of **Pagination** field for clarity.
* Calendar Illustrations:
  * Added `r34icspro_calendar_illustration_keywords` filter to allow addition of custom keyword lists for calendar illustrations.
* Customizer:
  * Added [Rubik](https://fonts.google.com/specimen/Rubik) font.
* Miscellaneous:
  * Added new plugin settings to System Report.
* i18n:
  * Translation updates.
* Vendors:
  * Bumped embedded ICS Calendar (free) version to 11.3.0.1.

= 5.1.0.3 - 2024.06.22 =

* ICS Events:
  * Fixed date format bug that caused PHP fatal errors when site is configured to certain languages, e.g. German. (Switched two date function calls using PHP date formats from `r` to `c`.)
  * Rewrote `R34ICSProEvent::_get_ics_uid()` method to avoid potential `PHP Fatal error: Uncaught AssertionError` on some servers.

= 5.1.0.2 - 2024.06.15 =

* ICS Events:
  * Added action to purge ICS Calendar transients when saving an ICS Event.
  * Added option to select which view is used for the calendar/category landing pages.
  * Redesigned admin page with sortable start/end date columns and taxonomy filters.
  * Start/end date-time pickers:
    * Removed seconds.
    * Changed minute dropdown to 5-minute increments.
    * Added auto-complete of end date/time when setting start date/time.
  * Fixed bug with multi-day, all-day ICS Events ending one day early. (This is due to the iCalendar spec expecting `DTEND` to be the first date _after the event ends,_ rather than the last day on which it occurs.)
* Miscellaneous:
  * Fixed issue with `R34ICSPro::pro_views()` not properly updating the `R34ICSPro::views` property.

= 5.1.0 - 2024.06.14 =

* ICS Events:
  * **Introducing ICS Events!** ICS Calendar Pro now has the ability to create and manage events directly within WordPress, and to integrate these events into your calendars created with Calendar Builder or the ICS Calendar block. This feature is currently "beta" and is turned off by default. To use it, go to the ICS Calendar Settings and turn on the **Enable ICS Events** option.
* Calendar Builder:
  * Changed default feed timezone to match local site configuration, instead of always defaulting to Chicago.
  * Minor interface modifications.
* Admin:
  * Fixed jQuery issue that would force the admin page to flip to the "License" tab on load, even if the license is already activated.
  * Fixed jQuery issue that prevented clicking on links in ICS Calendar help bubbles.
  * Redesigned Settings tab with options grouped under subheadings.
  * Minor CSS fixes.
* Developer:
  * Added support for the new [`r34ics_display_calendar_event_item`](https://icscalendar.com/developer/#r34ics_display_calendar_event_item) filter in `R34ICSPro::_get_ics_json_events()`. _Note:_ Certain keys in the `$event_item` array are different for Full view than other views. For example, in most views the event title (the `SUMMARY` in ICS) is assigned to `$event_item['label']` but in Full view it is `$event_item['title']`.
  * Deprecated `r34icspro_is_calendar_builder()` function for new `r34icspro_is_r34icspro()` function. 
* Versions:
  * Updated embedded ICS Calendar version to 11.3.0.
  * Bumped "Tested up to" to 6.6.
* i18n: Updated translation strings.
* Hotfixes:
  * Temporarily removed "last" week-of-month option for ICS Events recurrences until logic issues are resolved.
  * Corrected WP option name `start_of_week` in code for generating `WKST` in recurrence rules for ICS Event CPT.
  * ICS Events date pickers now use site's configured `start_of_week`.

= 5.0.1 - 2024.06.07 =

* Versions:
  * Updated embedded ACF PRO version to 6.3.1.2.
  * Updated embedded FullCalendar version to 6.1.14. (Also added un-minified version to distribution, for easier diffs on future changes.)
  * Updated embedded ICS Calendar version to 11.2.3-beta-1.
  * Updated embedded Plugin Update Checker version to 5.4.
  * Bumped "Tested up to" to 6.5.3.

= 5.0.0 - 2024.05.30 =

**This version introduces a major change:** The free ICS Calendar plugin is now embedded in ICS Calendar Pro, so it is no longer necessary to keep ICS Calendar installed separately. Future updates to ICS Calendar Pro will always include the latest available version of the free ICS Calendar.

ICS Calendar Pro will first check to see if ICS Calendar is already installed separately, and if so, will use that version. But if it is not installed and active, the embedded version will be used. _However, we recommend deactivating and deleting ICS Calendar (free) to ensure that you are always running the embedded version, to ensure maximum compatibility with future ICS Calendar Pro updates._

Additional changes in this version:

* Full view:
  * Added `notranslate` CSS class to the container as a workaround, until a proper solution can be identified, for a conflict between the [FullCalendar.io](https://fullcalendar.io) library used by Full view and the [GTranslate](https://wordpress.org/plugins/gtranslate/) plugin. If you wish to have your calendars translated automatically by GTranslate, please use a different view. Bear in mind, automatic machine translations can produce inconsistencies and errors depending on context, and should be used with caution regardless of this specific issue. (For instance, when translating day name headers from English into French, the translation plugin interprets "SUN" as the word "sun", rather than an abbreviation for "Sunday", and translates it to "SOLEIL" instead of "DIM" or "DIMANCHE".)
* Month with Sidebar view:
  * Added support for new `fulldateintable` parameter.
* Calendar Builder:
  * Added **Cancelled Events** and **Tentative Events** options (under the **Advanced** tab) to support new parameters added in ICS Calendar 11.1.0.
  * Added **Event Local Time** option to support new `eventlocaltime` parameter in ICS Calendar 11.2.1. Note: Due to limitations in the FullCalendar.io library, Full view only displays timezone abbreviations in the event details hover box, not the main calendar grid. However, times shown do reflect the local event timezones.
  * Added **Full Date in Table** option for the new `fulldateintable` parameter introduced in ICS Calendar 11.1.1.
  * Excluded Month with Sidebar and Widget views from using **Filter (Event Search)** option until layout incompatibilities can be resolved. Also excluded Up Next, because this option has no logical use with that view. (This option was already excluded for Widget Availability and Year Availability because those views do not display specific event details.)
  * Moved **Extend Multi-day Events** to the **Advanced** tab.
  * **Removed** deprecated Grid view option, unless the new **Show deprecated options in Calendar Builder** setting is turned on, on the Settings page. Existing Grid view calendars will still function normally, but the setting must be turned on before making edits to those calendars.
* Miscellaneous:
  * Fixed un-minified `admin-script.min.js` file.
  * Removed `R34ICSPro::required_r34ics_version` and `R34ICSPRO_R34ICS_CRITICAL_VERSION` because they are no longer needed with embedded ICS Calendar.
  * Updated admin links on Plugins page.

= 4.12.0 - 2024.05.22 =

* Admin:
  * Changed admin menu label from "Add New" to "Add New Calendar" for consistency with updated WordPress standards.
  * Reorganized Settings and Utilities pages into a single page, with conditional logic to restrict access to the Settings and License tabs to administrators only; added a tabbed layout to match changes in ICS Calendar 11.1.0.
* Calendar Builder/ICS Calendar Block:
  * Added conditional to hide **AJAX** option on Calendar Builder if the new **Always use AJAX to render calendars** setting is turned on.
* Miscellaneous:
  * Added fallback to get event URL from the URI property if it exists. The iCalendar spec includes a [URI](https://icalendar.org/iCalendar-RFC-5545/3-3-13-uri.html) property, but not a URL property. However in our practical experience the URL property is commonly used by calendar vendors.
  * Added cookie to remember checked/unchecked status of each item in the "Legend" (color key) on calendars with multiple feeds. **Note:** This change requires a saved **ID Attribute** (`guid`) for the calendar. (Calendar Builder was modified in 4.11.1 to automatically set a fixed ID Attribute on new calendars, but calendars created with earlier versions had dynamically generated ID attributes on each page load. Re-saving those older calendars will set a new fixed ID.)
  * Replaced several instances of null coalescing operators (`?? null`) with short ternary operators (`?: ''`) setting empty strings rather than null values for event properties. This should not produce any noticeable changes in most cases, but may occasionally allow for values to be returned that have been missing in the output under the old logic.
  * Updated the set of fields that are masked by the `maskinfo` parameter to account for changes in the ics-parser library.
* i18n: Updated translation strings.

= 4.11.2 - 2024.05.15 =

* Up Next view:
  * Modified logic to retrieve all events for today _and_ tomorrow, plus one additional future event, and added a 24-hour automatic page reload, so Up Next can function properly in a window left open indefinitely (e.g. kiosk mode).
  * Force `limitdays` to 30, for additional performance improvements. The assumption here is that Up Next view is intended for feeds that typically have multiple events per day, or at least several per week, and thus is not relevant to situations where the next upcoming event is more than a month away.
  * Fixed bug in logic for displaying start and end times in descriptions of recurring events.
* Calendar Builder:
  * Added missing **Redundant Events** (`fixredundantuids`) option.
* Debugging:
  * Removed restriction that only reports dynamic peak of memory usage if debug level is set to 2 or higher.
* Miscellaneous:
  * Added Masonry and Up Next views to the new `r34ics_list_style_views` filter.
  * Minor admin screen layout adjustments.
* i18n:
  * Updated translation strings.
* Updated ICS Calendar critical version requirement to 11.0.1.2.

= 4.11.1.1 - 2024.05.06 =

* Up Next view:
  * Added missing logic to dynamically remove events from display after they end when the page is left open.
  * Hardcoded `pastdays` to `0` and defaulted `limitdays` to `90`, for better performance.
  * Added conditional logic to hide the date range selections in Calendar Builder on Up Next view (Limit Days, Start On, Start Date, Past Days).

= 4.11.1 - 2024.05.02 =

* Masonry view:
  * Removed Calendar Builder option to set **Details Toggle** to "inline" since that option is not compatible with Masonry.
* Up Next view:
  * Added option to show the date when it is "today."
* Calendar Builder:
  * Added new **Filters** tab, allowing access to the functionality of the [https://icscalendar.com/developer/#r34ics_display_calendar_exclude_event](`r34ics_display_calendar_exclude_event`) and [https://icscalendar.com/developer/#r34ics_event_css_classes](`r34ics_event_css_classes`) filters without writing any custom PHP code.
  * Updated some field labels and help text.
* i18n:
  * New translation strings.
* Updated ICS Calendar critical version requirement to 11.0.1.1.

**NEED TO UPDATE i18n!**

= 4.11.0.1 - 2024.04.23 =

* Added `r34icspro_upnext_refresh()` JavaScript function to allow Up Next view to refresh the "now" and "next" events every 5 minutes. (Note: This change is suitable for pages that are kept open for approximately one day. To use the Up Next view [or any view] on a public display or kiosk, it is best to configure the full page to refresh daily.)
* Added support for the new `r34ics_url_get_contents_legacy_method` setting introduced in ICS Calendar 11.0.0.3.
* Minor code refactoring.

= 4.11.0 - 2024.04.18 =

* Event illustrations (Google Calendar):
  * Added support for event illustrations: keyword-based images that will automatically appear on matching events. *This setting is currently experimental* and only supports English-language sites. It can be activated with the **Event Illustrations** option under the **Advanced** tab of Calendar Builder. **GDPR compliance consideration:** Please note that the Google Calendar illustrations are served directly from Google's servers.
  * Added [`r34icspro_illustration_path`](https://icscalendar.com/developer/#r34icspro_illustration_path) filter to allow for setting a custom file path for event illustrations. The value returned by the filter should be a subdirectory under your main site URL where your images are stored, e.g. `'wp-content/uploads/event-images'`. If a file does not exist for a given keyword, the standard image will be used as a fallback. Optimal aspect ratio for replacement images is 8:5, e.g. 800 x 500 pixels. Image filenames must follow the format `img_{KEYWORD}_2x.jpg` where `{KEYWORD}` is replaced by one of the defined Google Calendar "flair" keywords. Current list of supported filename keywords: `americanfootball, archery, art, artisticgymnastics, athleticsjumping, athleticsthrowing, babyshower, backtoschool, badminton, baseball, basketball, bbq, beer, billiard, birthday, bookclub, bowling, boxing, breakfast, camping, carmaintenance, chinesenewyear, chores, cinema, clean, climbing, code, coffee, concert, cooking, cricket, cycling, cyclingbmx, dancing, datenight, dentist, dinner, drinks, equestrian, fencing, fieldhockey, gamenight, genericnewyear, golf, graduation, gym, haircut, halloween, handball, handcraft, hiking, islamicnewyear, karate, kayaking, learninstrument, learnlanguage, lunch, manicure, mardigras, massage, nowruz, oilchange, pingpong, planmyday, pride, quinceanera, reachout, read, repair, rhythmicgymnastics, rowing, rugbysevens, running, sailing, saintpatricksday, santa, shooting, skiing2, sleep, soccer, swimming, tennis, thanksgiving, theatreopera, triathlon, valentinesday, videogaming, violin2, volleyball, walk, walkingdog, waterpolo, wedding, wrestling, xmas, xmasmeal, xmasparty, yoga`
* Up Next view:
  * A brand new view! Based on the visual style of the standard List view (customizable with your own CSS), this view automatically shows any events that are currently happening (using JavaScript to detect the current time on the user's device), along with the next upcoming future event. **This is a beta feature and is subject to change.**
* Full view:
  * Fixed link colors in event description hover boxes.
  * Increased `max-height` on description hover boxes from `25vh` to `60vh`.
* Admin:
  * Added "beta" indicator to beta options in Calendar Builder and reorganized some elements of Advanced tab.
  * Added support for new "Allowed Hosts" setting introduced in ICS Calendar 11.0.0.
  * Fixed issue of "Add Another Feed" button being white-on-white in Block Editor.
  * Removed "ICS Feed Loading Method" from Calendar Builder since that feature has been removed from ICS Calendar as of 11.0.0.
* Miscellaneous:
  * Added new CSS variables `--r34ics--image--max-width` and `--r34ics--widget--max-width`.
  * Added new methods to `R34ICSPro` class for `r34ics_has_desc` filter and `r34ics_event_description_html` action.
  * Updated calls to `R34ICS::_url_get_contents()` method to handle changes to the number of input parameters in the method as of ICS Calendar version 11.0.0.
  * Replaced previous cURL and fopen logic with `wp_remote_get()` in `R34ICSProLicense::_url_get_contents()` method. This is consistent with changes made to `R34ICS::_url_get_contents()` in ICS Calendar version 11.0.0.
  * Added ICS Calendar (free version) plugin requirement per the new [plugin dependencies](https://make.wordpress.org/core/2024/03/05/introducing-plugin-dependencies-in-wordpress-6-5/) functionality introduced in WordPress 6.5.
* Versions:
  * Updated embedded ACF PRO version to 6.2.9.
  * Updated ICS Calendar critical version requirement to 11.0.0.
  * Bumped "Tested up to" to 6.5.2.

= 4.10.2.2 - 2024.04.01 =

* Full view:
  * Added support for **Extend multi-day events** (`extendmultiday`) after fixing inconsistent behavior.
* Bug fixes:
  * Added `isset` checks for a pair of issues that would generate warnings in the Block Editor when removing focus from a new ICS Calendar block without entering any data.
* Miscellaneous:
  * Added work-in-progress files for new "Up Next" view. (This view is currently incomplete and cannot yet be selected in the Calendar Builder.)
	* Updated ICS Calendar critical version requirement to 10.14.1.4.

= 4.10.2.1 - 2024.03.19 =

* Full view:
  * Added **Zoom** option in Calendar Builder, to allow adjustment of the base time slot height in time grids (week and day tabs). Default value is `0.6`, which matches the previous default height of `1.5em`. (This default value is for backwards compatibility with the existing Zoom option for the deprecated "Grid" view.)
  * Added dynamic adjustment of FullCalendar's `slotLabelInterval` parameter based on the value of **Zoom**. By default the slot labels only show on the hour, but if Zoom is set to 1.3 or greater, they show on the half hour. Also added bold styling to the hours in the slot labels, which can be modified with the `--r34ics--fc--fc-timegrid-slot--hour-weight` CSS variable.
* Misc:
  * Removed disused 2021 logo images from `assets` folder.

= 4.10.2 - 2024.03.06 =

* Full view:
  * Added **Hide All Day** option to hide the "All Day" row at the top of time grid tabs (day and week).
  * Fixed glitch with day headings on list tab when resetting Search Filter.
* Masonry view:
  * Changed styling to make dates more prominent, and changed default date format to `D j M` (`D M j` in US).
* a11y:
  * Calendar Builder: Added outlines on tab headers (e.g. General, Header & Footer, etc.), and made input field help icons tab-accessible.
* i18n:
  * Translation updates for new text strings.
* Misc:
  * Modified logic for when timezone is displayed below calendar to use the "Timezones in Legend" setting, and modified description of that option to clarify its use. (Previously, ICS Calendar Pro was inserting the timezone below any calendar where there is only a single feed. The intention was to have the timezone display only when a timezone has been explicitly set for the calendar, but that logic is flawed since Calendar Builder *always* sets a timezone.)
  * Removed unnecessary `global $wp_locale;` line from all templates.
  * Search Filter: Added placeholder text, made Reset button invisible unless there's text in the search box, fixed vertical alignment.
  * Updated `r34icspro_wp_cron_activation()` function to remove the `r34icspro_wp_cron_hourly` hook on deactivation.
* Vendors:
  * Updated embedded FullCalendar.io library to version 6.1.11.

= 4.10.1.1 - 2024.02.21 =

* Full view:
  * a11y: Made navigation buttons in Full view tab-accessible and improved interactions with event description boxes.
  * Fixed event description boxes staying open when user clicks away on a link and then clicks Back.
  * Fixed event titles being made into clickable links if there's a single URL in the event description but no URL field, unless `linktitles` is true.
  * Streamlined some logic in the `eventClick` method.
* JavaScript:
  * Replaced `wp_localize_script()` with the now-preferred `wp_add_inline_script()` in `R34ICSPro::admin_enqueue_pro_scripts()` method. Fixes an issue where the "localized" script was not actually rendering in the page in some situations.
* R34ICSProLicense class:
  * Modified license validation method to reduce risk of errors in WP Admin if the site fails to communicate with the licensing server.

= 4.10.1 - 2024.01.26 =

* Added `R34ICSPRO::purge_pro_calendar_transients()` method using the new `r34ics_purge_calendar_transients` action to purge precached URL expiration rows from the `wp_options` table when clearing the transients.
* Admin: Changed alignment of help icons in Calendar Builder to appear just to the right of the field label. (Icons are still aligned right in the ICS Calendar Block due to overall CSS differences for ACF blocks vs. "classic" admin layouts. This will be addressed in a future update.)
* Customizer: Fixed bug that was inserting extra, unprocessed CSS code into the `ics-calendar-pro-inline-css` style tag.
* Full view: Fixed issue of offsite links inside event descriptions not opening in a new tab.
* Updated embedded ACF PRO version to 6.2.5.
* Updated embedded Plugin Update Checker version to 5.3.
* Updated ICS Calendar critical version requirement to 10.14.1.

= 4.10.0 - 2024.01.11 =

* **Local timezone detection:** Use the new `use_client_tz` parameter or the **Use Local (Client) Timezone** option found under the **Advanced** tab of the Calendar Builder/ICS Calendar block to display all events in the user's own local timezone rather than the site's timezone. **Note:** This feature is only available when loading the calendar via AJAX.
* Calendar Builder/ICS Calendar block: Moved AJAX and Use Local (Client) Timezone options to **General** tab.
* Misc: Removed redundant script enqueuing, along with unused `localize_pro_scripts()` method.
* i18n: Translation updates for new text strings.
* Updated ICS Calendar critical version requirement to 10.14.0.

= 4.9.3 - 2023.12.21 =

* Full view:
  * Bug fixes in list tab, especially on mobile. Tapping an event now no longer mangles the list layout; tapping the "List" tab at the top to reveal hidden past events in the current month now reveals the events themselves, not just the dates.
* Block:
  * Removed unnecessary Block Editor comment tags from output in block template.
* Miscellaneous:
  * Added tooltip to the "+n" indicator next to the Reset button in the Search Filter, to explain what the number means.
* Developer:
  * Added `r34icspro_debug_js_obj()` JavaScript function to display an alert containing the key/value pairs in an object.
* i18n: Translation updates for new text strings.

= 4.9.2 - 2023.12.08 =

* Full view:
  * Day numbers are now only clickable links if the Day tab is enabled.
  * Minor code refactoring and CSS tweaks.
  * Reinstated support for the `Year` tab option. **Please note:** This option is still considered "experimental" at this time, as we are testing and refining its performance. (Note for future reference: the `validRange` property is set for this view to include the entire current year, because as of FullCalendar v.6.1.10, setting it later than the first date of the year results in a JavaScript error.)
* Month view:
  * Fixed CSS issue that prevented date headings from showing in mobile list view when "Show Past Events" is clicked.
* Updated ICS Calendar requirement to 10.13.1 and critical version to 10.13.0.2.

= 4.9.1.1 - 2023.12.04 =

* Calendar Builder:
  * Added Basic Authentication option to Calendar Builder.
* Full view:
  * Fixed bug with Details Toggle set to lightbox, that required users to double-click events to see the event details.
  * Fixed bug that prevented links within event descriptions from working properly.
* Vendors:
  * Updated embedded FullCalendar.io library to version 6.1.10.
* i18n: Translation updates for new text strings.

= 4.9.1 - 2023.11.29 =

* Calendar Builder:
  * Added support for the new Basic view introduced in ICS Calendar v.10.13.
  * Added support for new parameters `htmltageventdesc`, `htmltageventtitle` and `htmltagtime`, and set all custom HTML tag inputs to allow null, for variable, view-specific defaults.
  * Rearranged elements on Advanced tab.
* Vendors:
  * Updated `R34ICSPro::acf_init()` with code to ensure ACF version updates are not shown when using the [embedded](https://www.advancedcustomfields.com/resources/including-acf-within-a-plugin-or-theme/) ACF PRO.
* i18n: Translation updates for new text strings.
* Miscellaneous:
  * Added new code snippets to `code-snippets.php`.
* Updated ICS Calendar requirement to 10.13.0.1.

= 4.9.0 - 2023.11.06 =

* Bug fixes:
  * Event descriptions: Using new `r34ics_eventdesc_include_time_and_title` filter to prevent redundant display of event times and titles for multiday events in Widget, Month, and Year with Sidebar views. (Requires ICS Calendar 10.13.0 or later.)
* Misc:
  * Added `code-snippets.php` file for temporarily storing code intended for future use. Code contained within this file will never be executed on the site.
  * Improved security of method to retrieve URLs from license API server.
* Vendors:
  * Updated embedded ACF PRO version to 6.2.2.
  * Updated embedded FullCalendar.io library to version 6.1.9.
  * Updated embedded Plugin Update Checker version to 5.2.
* Updated ICS Calendar requirement to 10.12.1.
* Hot fix: Restored missing `.event` CSS class to events in the Full view template. This fixes an issue where the search filter and legend color key toggles had no effect. (Issue first appeared in v.4.8.5.1.)

= 4.8.5.1 - 2023.10.25 =

* a11y: Added `tabindex="0"` to all events in Full and Widget views and corresponding CSS changes to make event hover descriptions tab-accessible. (Support for this functionality in other views is provided by ICS Calendar v. 10.12.)
* Full view: Added support for the `r34ics_event_css_classes` filter.
* R34ICSProLicense class: Added URL sanitization and validation.
* Updated ICS Calendar requirement to 10.12.0.3.

= 4.8.5 - 2023.10.03 =

* Masonry view: Added missing support for `timeformat` setting on multi-day event headings.
* Parser: Added automatic support for Microsoft Outlook `X-ALT-DESC` as primary event description, falling back to standard `DESCRIPTION` field if `X-ALT-DESC` is not present. (Change in ICS Calendar Pro only applies to Full view; parser logic for all other views is in the free version. Be sure you also update ICS Calendar to version 10.11.6 or later.)
* i18n: Swedish translation updates.

= 4.8.4.4 - 2023.09.06 =

* Rolled back newly introduced (4.8.4.3) conditional loading logic at top of Full view template, because it may cause the page not to load properly on certain site configurations.

= 4.8.4.3 - 2023.09.05 =

* CSS tweak for ICS Calendar Block to prevent long feed URLs from overflowing the placeholder box in the Block Editor.
* Fixed bug in Full view that would cause a blank page when the default tab is month. (This bug is date-sensitive, relative to the end date displayed in the calendar, so it only became apparent in September 2023 when the default end date started to result in an invalid calculation.)
* Fixed bug that would set the pre-caching memory limit to bytes instead of MB, causing pre-caching to fail in most instances.
* Removed conditional logic in Calendar Builder that only shows "No Links" and "Link Titles" options if "Event Descriptions" is checked. (Event titles may be linked even if descriptions are turned off.)

= 4.8.4.2 - 2023.08.09 =

* i18n:
  * Updated Polish translation files: refreshed several of the longer machine translation strings; fixed string error that was causing display errors in Calendar Builder.

= 4.8.4.1 - 2023.07.27 =

* i18n: Fixed several issues with translation strings in `.po` files. If you discover any additional issues, please use our [Translation Suggestions][https://icscalendar.com/translation-suggestions/] form to let us know!

= 4.8.4 - 2023.07.12 =

* Calendar Builder:
  * Changed options for *Compact* parameter (Advanced tab) to accommodate new options in the free version.
  * Removed invalid "inline" option for Details Toggle parameter for Full view.
* Full view:
  * Added "Mobile Default" option and corresponding logic to automatically switch to "list" tab on mobile devices. (Only works if the calendar is configured to include the "list" tab.)
  * Added logic to collapse full day name headers to "short" abbreviated versions on mobile for Full view. (Matches change introduced in ICS Calendar v.10.11.4 for all other views.)
  * Added some missing event data to resolve PHP errors in some circumstances.
  * Fixed issue of events on "non-business" days not being hoverable/clickable. (Seems to be a bug in FullCalendar.io; worked around with CSS.)
* Month view:
  * Fixed issue of month/list toggle not appearing on mobile breakpoint when `nomobile` parameter is set.
* Month with Sidebar view:
  * Removed (hid, via CSS) search filter on mobile. The way the search filter works is conceptually incompatible with this view, especially on mobile. Recommended solution is to simply not use the search filter with Month with Sidebar view.
* Vendors:
  * Updated embedded ACF PRO to version 6.1.7.
  * Updated embedded FullCalendar.io library to version 6.1.8.
* i18n:
  * Updated translation files with new text strings.
* Miscellaneous:
  * Updated plugin description and license terms.
  * Updated ICS Calendar requirement to 10.11.5.

= 4.8.3.1 - 2023.06.21 =

* Bug fixes:
  * Added `mapsource` to the set of parameters that are explicitly defined when loading data from the Calendar Builder. Previously the default setting of `google` was overriding the Map Source setting from the Calendar Builder (although setting `mapsource` directly in the shortcode worked).
  * Fixed undefined key error in Customizer.
  * Moved pre-cache logic from `r34icspro_wp_cron_hourly()` function into new public method `R34ICSPro::precache_feeds()` to resolve a scope error.

= 4.8.3 - 2023.05.09 =

* Vendors:
  * Updated embedded ACF PRO to version 6.1.6. (Addresses a critical issue that was present in ACF PRO versions 6.1.5 and earlier.)
* i18n:
  * Added support for `G.i` in `r34ics_time_format()` function.
  * Added Slovenian translation.

= 4.8.2.1 - 2023.05.05 =

* Bug fix: Restored `js.cookie.min.js` (removed in v.4.4.7) because it is still needed for some functionality (specifically, the Month/List toggle in Month view).

= 4.8.2 - 2023.04.29 =

* Calendar Builder:
  * Added several new parameter options to support features recently introduced in ICS Calendar.
  * Reorganized **Advanced** tab to include sub-groupings of parameters.
  * Updated tooltip for **Count** to remove indication that the default is all events. The default depends on the "Use new parameter defaults (v.10.6)" setting; it is all events if that box is not checked; 5 if it is. The best practice for List view is to *always* set **Count** to the desired number of events.  
* Month with Sidebar view:
  * Fixed doubled-up week number and table cell misalignment when the first day of the month is also the first day of the week. (This issue was fixed in Month view in ICS Calendar v.10.10.1.)
* All views:
  * Updated templates to add support for new `htmltagtitle`, `htmltagmonth` and `htmltagdate` parameters introduced in ICS Calendar v.10.11.0.
* General bug fixes:
  * Fixed bug caused by changed shortcode defaults (generating dynamic values for `guid` and `startdate`) which was preventing ICS Calendar caching from functioning properly. The issue would cause an explosion of separate transient entries in the `wp_options` data table. (This change in Pro only affects Full view; all other views receive this fix via ICS Calendar v.10.11.1.)
* Dependencies:
  * Updated ICS Calendar requirement to 10.11.1.
  * Updated embedded ACF PRO to version 6.1.4.
  * Updated embedded FullCalendar.io library to version 6.1.6.

= 4.8.1 - 2023.04.07 =

* Full view:
  * Fixed a bug that may cause past months' all-day events to pile up in the list tab if the feed data does not include end dates.
  * Fixed event height issue in timegrid layouts (week and day tabs) introduced after embedded FullCalendar v.6.1.5 was added in 4.8.0.
  * Fixed problem with search filter/feed toggles not being applied when clicking "today" or "previous" going back to the current month.
  * Updated the template's `locale` parameter to include country codes, to automatically adjust for regional date formatting differences within the same language, e.g. "April 7" vs "7 April" for US vs. UK English.
* Other views:
  * Fixed a bug that would prevent the Month with Sidebar view's sidebar from showing all of a day's events, due to a recent change in how the `.hidden_in_main` class is being used in conjunction with the Search Filter. (jQuery now removes this class from the event list HTML when filling in the content of the sidebar.) Added `r34icspro_refresh_filter_and_color_key()` function to encapsulate new 4.8.0 logic for refreshing the filter and color key when certain UI actions are taken.
* Block Editor and embedded Advanced Custom Fields Pro:
  * Added functions to detect ACF (free) or Classic Editor active on the site, and automatically prevent registering the ICS Calendar block.
  * Added **No ICS Block** admin option. Allows admins to turn off site-wide loading of our embedded ACF PRO, if the site does not need the ICS Calendar Block in the Block Editor. Resolves potential issues with residual ACF content surfacing on sites that *used to* have ACF installed.
  * Refactored logic determining when to load the embedded ACF PRO to further reduce potential conflicts.
* i18n: Added missing translation strings; manually updated several German text strings based on user submitted corrections.

= 4.8.0 - 2023.03.31 =

**Please note:** With this version we are implementing a new development cycle and release process. Update releases will be limited to *at most* once per week, unless there is a critical issue. You can read more about this change on our [blog](https://icscalendar.com/testing-a-new-development-cycle/).

* Full view:
  * Added missing event data that is necessary for certain logic in `R34ICS::event_description_html()`.
  * Added support for the event description toggle/lightbox functionality available in other views.
  * Changed **Business Days** defaults to all days.
  * Changed search filter and multi-feed toggle checkbox behavior to "fade" non-matching events rather than removing them entirely. This is a workaround to some incompatibilities between ICS Calendar's existing logic and the FullCalendar templating engine. This was done for a couple of reasons: first, the FullCalendar template doesn't handle ICS Calendar's full "hiding" of events well, especially when clicking between months, or on dates in adjacent months that are displaying in the current month grid; and second, because this UX gives the user a clearer indication of what is actually happening — i.e. that the plugin is "hiding" non-matching events that are already in the display, rather than performing a search. *Please share your feedback on this change.*
  * Corrected timezone offset issues in main calendar display (event description hover boxes were already displaying times correctly).
  * Corrected debugging output when **Debug** set to "extended" (`debug="3"`).
  * Fixed bug that caused date ranges for multi-day events to always display as the current date.
  * Fixed some inconsistent interactions between the search filter and multi-feed toggle checkboxes when switching months or tabs. (**Note:** *By design,* the search filter reactivates all feeds when the text string is changed. This is due to the complexity of the interaction between these features, and is the case in *all* views.) *We are aware of an additional issue with the search and feed toggles not functioning correctly on past dates in the current month after clicking to a future month and back to the current month. This will be fixed in a future update.*
* Other views:
  * Fixed logic for determining where to display the color key/multi-feed toggles in Masonry and Widget/Year Availability views.
  * Improved "angled background" CSS for multi-day events in Widget Availability and Year Availability views. Now dates that include both the end of one multi-day event and the beginning of another will display a thin "available" slash in the middle, indicating a switchover between bookings.
* Admin:
  * Block Editor: Updated "preview" (which cannot be a true live preview in the editor, due to the way calendars are loaded) to include the **View** and **ICS Feed URL** values, to make it easier to identify specific calendars on pages that contain multiple ICS Calendar blocks.
  * Customizer: Added new font options (Open Sans, Roboto Condensed), replaced specific "web safe" fonts with their generic font-family equivalents (excluding "cursive" and "fantasy" which are poor choices for calendar usability), and changed scope of font selection to apply to entire ICS Calendar container, not just the table. (Previously the font option had no effect on ICS Calendar's HTML heading tags or on list view.)
* Bug fixes:
  * Fixed: Added check for Multisite before using `switch_to_blog()` function in `R34ICSProLicense::license_modified()` method. Resolves fatal error that may occur when a site is converted from Multisite back to single-site.
  * Fixed: Added `unbind()` to jQuery for stepping through previous/next month links in navigation, to resolve an issue that caused the links to skip one or more months on pages that contain multiple AJAX-loaded calendars.
  * Fixed: CSS changes introduced in version 4.6.0 (to resolve issues with horizontal scrolling on mobile devices in Month with Sidebar, Widget Availability, and Year Availability views) have been moved into mobile breakpoint, to resolve a new flexbox layout issue they caused with Month with Sidebar on desktop.
  * Fixed: Logic for when to display or not display the legend below the calendar in some views.
* Miscellaneous:
  * jQuery: Added `r34icspro_init_start` and `r34icspro_init_end` custom jQuery events at start and end of `r34ics_init()` function, allowing developers to add their own callbacks that fire off just before and after ICS Calendar initializes itself on the page. (Note: ICS Calendar v.10.10.0 also adds `r34ics_init_start` and `r34ics_init_end` events, which may be more generally applicable; the `pro` versions should only be used if the callbacks are specific to logic contained in the `r34icspro_init()` function.)
  * Moved `r34icspro_init()` call from `jQuery(function())` into `jQuery(window).on('load')` to ensure page is fully ready before execution.
  * Bumped embedded FullCalendar version to 6.1.5.
  * Updated ICS Calendar critical version requirement to 10.10.0.

= 4.7.0 - 2023.03.24 =

* Added AJAX support for Full view and fixed logic that was preventing Event Downloads from showing as an option for Full view.
* Added Calendar Builder support for new parameters added in ICS Calendar v.10.9.x: `mapsource`, `paginationposition` and `resources`.
* CSS: Removed `white-space: nowrap` on `.ics-calendar-filter`.
* Reorganized some fields in the Calendar Builder.
* i18n: Translation string updates.
* Updated ICS Calendar critical version requirement to 10.9.1.1.

= 4.6.0 - 2023.03.20 =

* Major updates to Widget Availability and Year Availability views:
  * Added **Combined Availability**, **No Angled Backgrounds** and **Booked Day Background Color** options.
  * Added `r34icspro_day_has_availability()` function to support identifying dates that have at least one "vacancy" in multi-feed calendars.
  * CSS improvements.
  * Fixed bug that would ignore Empty Day Background setting unless at least one feed URL had a custom color.
  * Fixed logic in Calendar Builder to hide irrelevant options.
  * Imposed restriction on `pastdays` value in these views, to only show current and future months, and modified CSS to only show availability status for current/future dates. (Given our understanding of the practical uses of the availability views, past dates are irrelevant and may cause confusion for users.)
  * Updated instructions in Calendar Builder.
* Minor refactoring in `functions.php` file.
* i18n: Translation string updates.
* Updated ICS Calendar requirement to 10.8.8.3. (Critical version to 10.8.8.)

= 4.5.1.2 - 2023.03.17 =

* Fixed issue in `R34ICSProLicense::_url_get_contents()` (introduced in v. 4.5.0) that may cause license API access to fail if cURL is the only available connection method. (cURL is the preferred method, but due to the omission of a line of code, this was only using the fallback connection methods.)
* Updated styling for license-related admin notices; added admin notice if connection to licensing server failed.
* i18n: Translation string updates.

= 4.5.1.1 - 2023.03.16 =

* Improved handling of [ICS Parser](https://github.com/u01jmg3/ics-parser) v. 3.2.1 changes.
* Wrapped call to `r34ics_purge_calendar_transients()` in a conditional to prevent a fatal error if ICS Calendar Pro is active but ICS Calendar isn't. (Primarily relevant on Multisite installations.)

= 4.5.1 - 2023.03.16 =

* Commented out `empty($r34icspro_acf_bypass)` check in `r34icspro-no-acf.php` because it was causing the temporary bypass of ACF free to fail; updated `r34icspro_install()` function that runs on install/update to sync new version of this file; updated `r34icspro_mu_plugins_install()` function to allow a forced overwrite of the existing version of the file.
* Refactored logic around `maskinfo` to more effectively conceal event details when this option is being used. (Applies to Full view only; the same changes for all other views are included in ICS Calendar v. 10.8.7.2.)
* Updated some event properties to handle changes introduced in [ICS Parser](https://github.com/u01jmg3/ics-parser) library v. 3.2.1. Should resolve some issues relating to missing content, e.g. embedded images. (Applies to Full view only; the same changes for all other views are included in ICS Calendar v. 10.8.7.2.)

= 4.5.0.1 - 2023.03.14 =

* Added data sanitization to license key parameters to resolve possible fatal errors in version 4.5.0 if the license key was saved with extraneous spaces.

= 4.5.0 - 2023.03.13 =

* Added logic to read plugin version from `ics-calendar.php` header comments rather than hardcoding a constant value.
* Separated `R34ICSProLicense` class from extending `R34ICSPro` class, and added logic to allow it to run independently. **This resolves a bug** that would prevent ICS Calendar Pro updates from appearing in WordPress Multisite installations unless ICS Calendar (free) was network active.

= 4.4.12.1 - 2023.03.09 =

* Updated use of `r34ics_scrape_url_from_string()` in Full view to match change in ICS Calendar version 10.8.6.1.

= 4.4.12 - 2023.03.08 =

* Added support for pulling event URLs out of description for **Link Titles** option in Full view. (Requires ICS Calendar v. 10.8.6 or later.)
* Full view: adjusted placement of event detail hover box, to resolve a "gap" that made it impossible to mouse over the detail box for all-day events (or any event that fits on a single line).
* Updated ICS Calendar requirement to 10.8.6.

= 4.4.11 - 2023.03.06 =

* Modified license verification logic to reduce performance impact on admin pages when site is unable to contact the ICS Calendar license API server. (Specifically, license is now only checked on the Plugins page and on ICS Calendar admin pages, rather than on every admin page, and the license checking method first attempts to load a simple static text file to verify it is able to connect to the server at all, before initiating a full API request.)

= 4.4.10 - 2023.03.01 =

* Added **Regenerate Instance** button to Settings page to facilitate re-entering the license when a site has been moved to a new server.
* Fixed bug that caused Calendar Builder **Past Days** value to be ignored when set to 0.
* Fixed logic issue in the Calendar Builder that may display the **Details Toggle** option incorrectly based on the **Attachments** setting.
* Updated styling, and context for displaying certain information, on the ICS Calendar Settings page.
* i18n: Translation string updates.

= 4.4.9 - 2023.02.23 =

* Fixed issue that would cause event descriptions to display even if "Show event descriptions and links" was unchecked in Calendar Builder. (This was due to a conflict with the new 10.6 default values in ICS Calendar and would not affect older installations that are not using the new defaults.)
* Improved formatting and presentation consistency between Calendar Builder and ICS Calendar Block.
* Modified Calendar Builder logic to hide "Links" section under **Events** tab when "Show event descriptions and links" is unchecked. (This is because links automatically do not display if descriptions are not displayed.)
* Updated license status admin notice logic and layout.

= 4.4.8 - 2023.02.20 =

* Added call to `r34ics_purge_calendar_transients()` function when plugin is updated.
* Added **Empty Day Background Color** for Widget Availability and Year Availability views. (Found under the **Advanced** tab of Calendar Buildar/ICS Calendar block.)
* Added **Table Background Color** for all views, replacing previous Customizer-based setting, and matching option available via shortcode in the free version of the plugin. (Found under the **Advanced** tab of Calendar Buildar/ICS Calendar block.)

= 4.4.7 - 2023.02.18 =

* Added CSS to force Full view to capitalize month names in calendar headers. (By default, FullCalendar.io library displays month names in lowercase in some languages.)
* Consolidated some JS and CSS files. (Eliminated `js.cookie.min.js`, `view-full.css` and `view-masonry.css`. JS and CSS files loaded from vendor assets are still handled separately.)
* Minified JS and CSS files.

= 4.4.6.1 - 2023.02.16 =

* Fixed non-functional **Mask Info** (`maskinfo`) setting in Full view.
* Updated "Support" link on Plugins page to open in a new tab.
* Bumped "Tested up to" to 6.2.

= 4.4.6 - 2023.02.15 =

* Changed link text from "All Calendars" to "Calendar Builder" in admin menu.
* CSS: Added nowrap to table cells in availability views to prevent "30" from wrapping at certain sizes.
* Fixed bug in setting license verification transient expiration.
* Fixed various PHP 8.1 deprecation notices.
* Improved appearance of some admin notices.
* Modified logic to prevent license verification from attempting to connect to license API server before a key has been entered.
* Removed Customizer functionality for non-licensed installations.
* Swapped positions of Customize and Utilities in admin menu.

= 4.4.5 - 2023.02.14 =

* Added CSS to apply Customizer colors to calendar headings (h2, h3, h4 tags). Headings remain theme default colors if a color palette has not been configured in the Customizer.
* Fixed issue in `blocks/ics-calendar.php` that may result in a deprecation notice with PHP 8.1.
* **Temporarily removed the new "year" option from Full view,** due to severe performance issues with some calendars. (Will be restored in a future update when the issues have been resolved.)
* Improved precision of *Limit Days* and *Start Date* in Full view. **Note:** If the "month" tab is turned on, the date range is extended to the first day of the first month and the last day of the last month. (This is consistent with how the other month-based views work.) If the "month" tab is turned off, the exact date range is used.
* Modified Full view template to remove the "today" button if "today" is outside of the date range being shown on the calendar.
* Streamlined admin page sidebar.
* Updated ICS Calendar branding assets to new colors.
* Bumped embedded ACF PRO version to 6.0.7.
* Bumped embedded FullCalendar version to 6.1.4.
* Updated ICS Calendar requirement to 10.8.1.

= 4.4.4 - 2023.02.07 =

* Added the new **Year** tab option to **Full** view. This is similar to the existing **Year with Sidebar** view, but it is a fully integrated part of the FullCalendar library.
* Fixed PHP 8 deprecation notice in `R34ICSPro::_get_ics_json_events()` method.
* Hotfix: Added logic to prevent an empty row at the top of table-based views (month, week) when the first day of the month is also the first day of the week.

= 4.4.3.3 - 2023.02.06 =

* Added Shortcode block wrapper comments to ICS Calendar block output, to resolve an issue where the Block Editor was converting quotation marks in the shortcode output to "smart" quotes, causing some calendars not to render properly or at all.
* Fixed string formatting issues when using the Regular Expressions functionality in the ICS Calendar block or directly in shortcodes.

= 4.4.3.2 - 2023.02.06 =

* Added code to support new diagnostic output window in **ICS Feed URL Tester** introduced in ICS Calendar version 10.7.2.
* Updated ICS Calendar requirement to 10.7.2.

= 4.4.3.1 - 2023.02.01 =

* Added conditional so `r34icspro_init()` JavaScript function only runs on pages that contain a calendar.
* Fixed incorrect filter names in `R34ICSPro::__construct()`.
* Minor refactoring of Full view template; switched to using jQuery to trigger rendering.
* Renamed some methods in the `R34ICSPro` class to remove redundancies with `R34ICS`.
* Temporarily added early script/style enqueuing due to as-yet unresolved issues with FullCalendar and Customizer when enqueuing on shortcode.

= 4.4.3 - 2023.01.31 =

* Added new handling for registering JS/CSS separately from enqueuing them, in conjunction with changes in ICS Calendar 10.7.1.
* Fixed CSS issues with description hover boxes in Full view.
* Fixed HTML formatting issue with Search/Filter element, and replaced untranslated "hidden" text with a + sign.
* Fixed syntax error in `field_groups.php` that caused issues with conditional logic for some options under Events tab when using Full view.
* Modified `r34icspro_server_addr()` to use ipecho.net if the PHP-returned local IP address is 127.0.0.1. (Previously it only used ipecho.net if the PHP-returned local IP address was empty.) **This change should alleviate issues with certain load balancers, proxies, and other security setups where the server does not "know" its own external IP address. Users with this type of setup may need to re-enter their license keys after this update.**
* Removed **Load JS and CSS files on wp_enqueue_script action** option, as it is no longer needed.
* Bumped embedded FullCalendar version to 6.1.1.
* Updated ICS Calendar requirement to 10.7.1.

= 4.4.2 - 2023.01.25 =

* Full view updates:
  * Added support for **Date Format** and **Month/Year Format** options and improved general handling of date formatting. *Note: FullCalendar has its own functionality for localized handling of date formats; the PHP-style formatting in ICS Calendar's settings does not correspond exactly, so the results at this time are still "approximate."*
  * Added feed toggle functionality for calendars that display multiple feeds.
  * Added logic to hide past events in the current month when the calendar is set to use "list" as the default tab. *Note: By design, any interactions with the toolbar (the view tabs, "today", previous/next links) will restore all past events because at that point the user is choosing to interact with the full calendar, both past and future events.*
  * Added search filter functionality.
  * CSS improvements to size and placement of event description hover boxes, especially on mobile.
  * Fixed issue with setting `fc_tab_default` as a shortcode parameter being ignored unless `fc_tabs` is also provided. (The `fc_tabs` parameter can be omitted, which defaults to displaying all available tabs.)
  * Fixed line breaks in start/end time cell of list tab.
  * Fixed various issues with hover boxes being cut off or hidden behind other elements.
* Bumped embedded FullCalendar version to 6.0.3.

= 4.4.1 - 2023.01.23 =

* Added missing handling for regular expressions/custom filtering of event titles in Full view.
* CSS enhancements to the search/filter form; integrated layout of search/filter form and table/list toggle in month view.

= 4.4.0.1 - 2023.01.17 =

* Fixed bug with Full view not displaying the details hover box unless **Event Description** was turned on. (Should also work if **Location, Organizer** or **Attach** is turned on.)
* Modified Subscribe links to dynamically convert `webcal://` to `https://` on Android devices. Added JavaScript-based OS detection that will support additional OS-specific modification of this functionality in the future, if needed.

= 4.4.0 - 2023.01.16 =

* Added new **Pagination** parameter to Calendar Builder for list view (introduced in ICS Calendar 10.7).
* Minor admin page HTML updates.
* Moved **Transient (cache) expiration** in **Administrative Options** to shared code in ICS Calendar (free) version. Be sure both ICS Calendar and ICS Calendar Pro are running the latest versions to ensure you still have access to this setting.
* Removed **Skip** from Calendar Builder. It had previously been excluded intentionally because the better way to use it is to repeat the *same* saved calendar and manually add the `skip` parameter to separate instances of the shortcode. Additionally, the new `pagination` parameter should make `skip` obsolete in many cases.

= 4.3.1.2 - 2023.01.10 =

* Fixed CSS/JS enqueuing issue for Full view on non-Block Themes. (Previous workaround was to turn on the **Load CSS and JS files on wp_enqueue_scripts action** option; this should no longer be necessary.)
* Fixed issue in Full view that may cause some events' hover boxes to display "behind" events on later days.
* Fixed issue that would cause a single "Subscribe" button to display below a calendar with multiple feeds when **Subscribe Link** is turned on.
* Updated calendar table cell border colors for consistency between views.
* Updated System Report to include ICS Calendar's saved settings. (Changes will take effect when next ICS Calendar free update is released.)

= 4.3.1.1 - 2023.01.09 =

* Added conditional logic to only include some parameters in the `$args` array when using an applicable view, and some related refactoring.
* Fixed minimum value on **Count** input for List view in Calendar Builder. (Should allow 0; was previously set to 1.)
* Fixed logic issues that were preventing some Calendar Builder settings from being applied.
* Fixed CSS issue that caused number misalignment in "dot" on Month with Sidebar view.
* Updated ICS Calendar requirement to 10.6.1.1.

= 4.3.1 - 2023.01.08 =

* Added support for new **Load CSS and JS files on wp_enqueue_scripts action** admin option added to ICS Calendar 10.6.1.
* Converted customizer hooks to named functions instead of closures, and added conditional logic to enqueue Customizer styles based on new **Load CSS and JS files on wp_enqueue_scripts action** setting.
* Fixed 'Undefined array key "startdate"' warnings in `R34ICSPro::display_calendar_args_params_merge()`.
* Fixed bug that prevented "Skip" from containing a value of "0" for list view in Calendar Builder. (This was a hotfix released between versions 4.3.0.2 and 4.3.1.)
* Full view updates:
  * Added **Time Format** support.
  * Modified **Start Time** and **End Time** to represent the boundaries of the time grid rather than simply shading non-business vs. business hours.
  * Removed tab cookie since it is unintuitive.
* Updated ICS Calendar requirement to 10.6.1.

= 4.3.0.2 - 2023.01.08 =

* Fixed logic issue with new default settings for `title` and `description`.
* Fixed bug that prevented Regular Expressions logic from working as of version 4.3.0.

= 4.3.0.1 - 2023.01.07 =

* Fixed bug in `R34ICSPro::display_calendar_args_params_merge()` that may cause undefined array index errors for older saved calendars.

= 4.3.0 - 2023.01.07 =

* Added missing *Skip* setting for list view in Calendar Builder.
* Added new *Masonry* view.
* Added support for new Administrative Options (settings) in free ICS Calendar, including **Use new parameter defaults (v.10.6)** checkbox.
* Fixed some conditional logic and layout issues with Calendar Builder, added support for new Masonry view.
* Full view improvements:
  * Added debugger support.
  * Added times to event description hover boxes.
  * Fixed handling of `hours` parameter and restricted to Full and Grid views.
  * Fixed multiple event link bugs.
  * Fixed time grid layouts (Week, Day) not properly setting event block heights to match end times.
  * Modified output to *always* display a hover box even if event descriptions are turned off, to handle events whose time/title are too long to fit in the time grid block.
* Moved plugin dependency check admin notices to deferred notice mechanism. Resolves a potential issue where ICS Calendar Pro would interfere with status reporting of AJAX-based plugin deletions. (This only affected the reporting of the status, not the deletion itself.)
* Removed full `Plugin Data` dump from debug mode 1.
* Updated default settings in Calendar Builder to match default shortcode changes in ICS Calendar 10.6. This includes changing the functionality of the **Start On** field. The "Current date" option has been removed, as redundant. Default is now "Rolling date" with **Past Days** empty, which is functionally equivalent to the previous "Current date" option, but allows for view-specific default values for the `pastdays` parameter.
* Assorted minor logic adjustments to accommodate changes in ICS Calendar 10.6.
* i18n: Updated translation files.
* Updated ICS Calendar requirement to 10.6.

= 4.2.0 - 2023.01.04 =

* **Added Grid view deprecation notice.** Feature development on Grid view had been stalled since late 2020. The "week" and "day" layouts in the new Full view are functionally similar to Grid view, but include features that were never finished in Grid view, such as the "now" line, better event overlapping, and better handling of stepping through previous/next days. Grid view will remain as-is in this plugin indefinitely, and will receive bug fixes when applicable, but will receive no additional feature enhancements. **We strongly encourage all existing Grid view users to try Full view, and recommend that any *new* calendars should be set up using Full view, rather than Grid view.**
* Additional minor CSS adjustments to Full view.
* Changed scope of CSS color variables to include lightbox, matching changes in ICS Calendar 10.5.2.
* Fixed CSS for help hover boxes in ICS Calendar in Block Editor.
* Full view CSS refinements. Changed day event dot color from FC default blue to `var(--r34ics--color--gray)` to allow palette styling. Changed text color to `var(--r34ics--color--black)` for improved legibility and to match other views. Modified background color for "non-business" dates to use `var(--r34ics--color--trans10)`.
* Modified `pro/blocks.php` in embedded ACF Pro to work around [field instructions rendering in the wrong place](https://support.advancedcustomfields.com/forums/topic/blocks-instructions-always-display-below-field/#post-158664) in ACF Blocks.
* Removed display of color key in Full view if no colors are selected.
* Removed unsupported "White Text" option for Full view in Calendar Builder.
* Updated copyright date to 2023.
* i18n: Translation string updates.
* Updated ICS Calendar requirement to 10.5.2.

= 4.1.0 - 2022.12.31 =

* Tweaked color palettes in Customizer.
* Modified how Customizer handles setting custom colors; they are now based on the available CSS variables in ICS Calendar, rather than specific layout elements.
* Added new Customizer options for Full view.
* Streamlined CSS for Full view and added improved handling of customized color palettes.
* Fixed bug in Full view that may cause a PHP fatal error if Calendar Builder has only one layout option checked under Tabs.
* Fixed bug in Full view that may display month layout on page load even if that tab is not a displayed option.
* Fixed bug in Full view that would display layout selection tab even if only one is available. (Should not display unless the user can change the layout.)
* i18n: Added missing translations of some elements of the Customizer. (Cannot translate color palette names due to how they are presently configured.)

= 4.0.0 - 2022.12.29 =

* **Introduced *Full* view, using the [FullCalendar.io](https://fullcalendar.io) JavaScript library. This view creates an integrated display with month, week, day and list tabs.** Full view is still considered beta, as some features are not yet fully implemented. Your [feedback](https://icscalendar.com/pro-support) is welcomed.
* Embedded an assortment of open source fonts directly in the plugin for use with the Customizer, and removed any direct loading of fonts from Google, to address GDPR concerns around Google's collection of user data.
* Created new `R34ICSProLicense` class and moved all license-related functionality to that class.
* Refactored how `r34icspro_wp_cron_hourly()` handles pre-caching feeds. Now all feed URLs can be pre-cached, not just the ones that are contained in Calendar Builder saved calendars.
* Admin page CSS tweaks.
* Replaced calls to deprecated `r34ics_first_day_of_current()` and `r34ics_last_day_of_current()` functions with the newer `r34ics_first_day_of()` and `r34ics_last_day_of()` functions.
* Updated embedded FullCalendar.io library to 6.0.2 and removed extraneous files.
* i18n: New translation strings.
* Updated ICS Calendar requirement to 10.5.0.1.

= 3.19.1 - 2022.12.23 =

* Added **AJAX** parameter to Calendar Builder (under the **Advanced**) tab.
* Minor layout updates to Calendar Builder.
* i18n: New translation strings.
* Updated ICS Calendar requirement to 10.3.1.

= 3.19.0 - 2022.12.22 =

* Added functional support for the new `ajax` parameter introduced in ICS Calendar version 10.3.0. The changes in this version are limited to what is necessary for this parameter to function with Pro views. The `ajax` parameter is still "beta" and is not supported by Calendar Builder, although you can add `ajax="true"` to Pro shortcodes, including `id`-based shortcodes.
* Encapsulated JavaScript that was previously firing directly on DOM ready into `r34icspro_init()` function so it can also be fired when calendar is inserted dynamically by AJAX.
* Updated ICS Calendar requirement to 10.3.0.

= 3.18.5 - 2022.12.22 =

* Revamped System Report output to help provide more efficient user support.

= 3.18.4.2 - 2022.12.19 =

* Added function to retrieve the server IP address from ipecho.net as a fallback in rare cases (e.g. German web host Strato) where the server returns an empty value for the `$_SERVER['SERVER_ADDR']` variable. Needed for license key activation.

= 3.18.4.1 - 2022.12.15 =

* Fixed missing **Format** support in grid view.

= 3.18.4 - 2022.12.15 =

* Deprecated `r34icspro_system_report()` function and moved its functionality into the `R34ICSPro::system_report_array()` method, which hooks into the new `r34ics_system_report_array` filter in the free plugin's `r34ics_system_report()` function.
* Added **Customize** submenu link under **ICS Calendar** in admin sidebar for easier access. (The "Customize" tab was removed from the updated **Settings** page in version 3.18.0.)
* Minor HTML reformatting on **Settings** page.
* Alphabetized methods in `R34ICSPro` class.
* i18n: Updated translation strings.
* Bumped embedded ACF PRO version to 6.0.6.
* Updated ICS Calendar requirement to 10.2.2.


= 3.18.3 - 2022.12.14 =

* Changed ICS Calendar block to render in "auto" mode in Block Editor (preview until clicked, then edit settings), and updated appearance with icon and additional usage information.

= 3.18.2.1 - 2022.12.14 =

* Added default values to input parameters in four `R34ICSPro` methods to resolve PHP deprecation notices.

= 3.18.2 - 2022.12.13 =

* Added **Skip Domain Errors** and **Same Tab** options to Calendar Builder. (These features have been available in the free version using the `skipdomainerrors` and `sametab` shortcode parameters since version 9.9.)
* Minor Calendar Builder layout updates.
* i18n: Updated translation strings.

= 3.18.1 - 2022.12.13 =

* Added color coding support to Year with Sidebar, Widget Availability, and Year Availability views.
* Updated ICS Calendar requirement to 10.2.1.

= 3.18.0 - 2022.12.12 =

* Modified widget view to color-code days in the table to match the feed color for the event(s) on that date. If the date has events from multiple feeds, it continues to use the default colors.
* Minor CSS adjustments to widget view (changed cursor to pointer on hover over dates with events; fixed text alignment issue, added `!important` to force text to be white on current/selected date with dark background color).
* Split **Settings &amp; Tools** page into separate **Utilities** and **Settings** pages, and restricted access to the **Settings** page (containing the license settings and caching configuration) to the Administrator role only. The **Utilities** page (which contains the **Clear Cached Calendar Data** button as well as the feed URL tester and system report) is still accessible to all users.
* Removed link to WordPress Support Forums in admin sidebar. Pro users should just use the support request form for all support issues. Also removed the links to additional tools and reference, as they are not especially relevant for day-to-day use of the plugin.
* Added expanded copyright notice. 
* Fixed `printf()` "Too few arguments" error on admin notice for ICS Calendar / ICS Calendar Pro version mismatch.
* Updated ICS Calendar requirement to 10.2.0.

= 3.17.1 - 2022.11.18 =

* Bumped embedded ACF PRO version to 6.0.5.
* Bumped tested up to version to 6.1.1.

= 3.17.0 - 2022.11.07 =

* Added support for new `timeformat` option in the Calendar Builder.
* Refactored numerous functions and function calls to resolve PHP 8.1 deprecation notices when [passing `null` to non-nullable parameters of built-in functions](https://www.php.net/manual/en/migration81.deprecated.php#migration81.deprecated.core.null-not-nullable-internal).
* Updated all default shortcode values that were previously `null` to either `''` (empty string) or `0` (for integers).
* Removed `$license` parameter from `R34ICSPro::_delete_license()` method, as it is never used within the method.
* i18n: Updated translation files with new/changed text strings. Replaced all inline instances of "ICS Calendar" and "ICS Calendar Pro" with `printf` variables to ensure consistent use of the ICS Calendar brand name throughout, regardless of the site language. Added missing translations of license status messages.
* Updated ICS Calendar requirement to 10.0.2.1.

**Please see the [ICS Calendar changelog](https://wordpress.org/plugins/ics-calendar/#developers) for a list of the changes in version 10.0.x.**

= 3.16.3 - 2022.10.27 =

* Refactored logic determining when to load the embedded version of Advanced Custom Fields (ACF) PRO. Prior to version 3.16.0, the embedded ACF PRO was only loaded on Calendar Builder screens. The addition of the ICS Calendar block in the Block Editor required us to make the embedded ACF PRO available everywhere on the site. This caused a conflict with the free version of ACF.
* Bumped embedded ACF PRO version to 6.0.3.

*Why is there an embedded version of ACF PRO in ICS Calendar Pro?*

We include ACF PRO solely to enable features of the Calendar Builder, and as of version 3.16.0, the ICS Calendar block in the Block Editor.

*When does the embedded version of ACF PRO load?*

If you already have **ACF PRO** active on your site, the embedded version does *not* load, and your installed version is used instead. If you already have **ACF free** installed, then the embedded version of ACF PRO *only* loads on Calendar Builder pages, and the ICS Calendar block is not available in the Block Editor (because ACF free does not support ACF blocks). If you have **neither** ACF PRO nor ACF free installed on your site, then the embedded version of ACF PRO is loaded everywhere, to allow for the ICS Calendar block functionality.

*What are the limitations on the embedded version of ACF PRO?*

The embedded version of ACF PRO is specifically configured to work only with ICS Calendar Pro; general-purpose ACF PRO functionality (e.g. editing field groups) is restricted. This is consistent with our ACF PRO developer license, which allows for special-purpose embedding in commercial plugins. *An ICS Calendar Pro license does **not** automatically entitle you to the full use of ACF PRO.*

= 3.16.2 - 2022.10.18 =

* Refactored license verification method to eliminate multiple license server API calls per page load in admin and better handle license transient data.
* Minor CSS fix in settings page.

= 3.16.1 - 2022.09.20 =

* Moved **ICS Feed URL Tester** under **Admin** tab on **Settings & Tools** page, as it is now part of the built-in utilities of the free version.
* i18n: Updated .pot files.
* Updated ICS Calendar requirement to 9.8.1.

= 3.16.0 - 2022.09.08 =

* New feature: ICS Calendar block. Now the block editor supports inline configuration of a single-instance calendar, matching the features of the Calendar Builder. **The block editor feature is considered a beta at this time. Your [feedback](https://icscalendar.com/pro-support/) is welcomed.**
* Updated `r34icspro_get_saved_params()` function to support passing ACF field data directly as a second parameter, for the new block editor feature.
* Split logic for merging shortcode attributes with saved Calendar Builder parameters into the separate `R34ICSPro::display_calendar_args_params_merge()` method, allowing the new custom ICS Calendar block to dynamically generate a shortcode with the correct options.
* Modified logic determining when to load ACF Pro, to support ACF-based ICS Calendar block.
* In conjunction with ICS Calendar (free) v. 9.7.0: Added `r34ics_day_events_count()` function, and `data-events-count` attribute on `td` tags in calendar table; added `r34ics_day_events_feed_keys()` function, and `data-feed-keys` attribute on `td` tags in calendar table. These changes apply to all Pro views except Grid.
* Identified bug in ICS Calendar (free) that prevented **Month Navigation Style** from functioning on Month with Sidebar view. Upgrade ICS Calendar to v. 9.7.0.1 for the fix.
* Minor code refactoring.
* Bumped embedded ACF PRO version to 5.12.3.
* Bumped embedded Plugin Update Checker version to 4.13.
* Bumped tested up to version to 6.0.2.
* Updated ICS Calendar requirement to 9.7.0.

= 3.15.0 - 2022.08.26 =

* Added Widget Availability view in Calendar Builder, updated widget to support selecting standard Widget or Widget Availability view, and updated Usage Notes on Calendar Builder for Widget Availability and Year Availability views.
* Updated CSS to set `max-width: 360px` for Widget and Widget Availability views.

= 3.14.1 - 2022.08.26 =

* Added `@` to suppress undefined index warnings in **class-r34icspro.php** lines 667 and 675.
* Removed instances of `cursor: help;` in the plugin's CSS, due to frequent confusion over the intent of this cursor icon.
* Updated admin plugin action links.
* Bumped tested up to version to 6.0.1.

= 3.14.0 - 2022.05.24 =

* Added updated handling of `startdate` parameter to match ICS Calendar (free) v. 9.6.4.
* Refactored `switch` structures throughout.
* Added FullCalendar vendor library and `calendar-full.php` template to support future functionality. **This view is not yet ready for use, and is not yet supported in the Calendar Builder.**

= 3.13.0 - 2022.04.11 =

* Added support in Calendar Builder for new `reverse` and `stickymonths` features introduced in ICS Calendar 9.5.0 and 9.5.1.
* Changed input label in Calendar Builder from **GUID (HTML "id" Attribute)** to **ID Attribute** in preparation for renaming that shortcode attribute in a future ICS Calendar (free) update.
* Replaced inline `style="display: none;"` attributes in some templates with `r34ics-hidden-on-load` CSS class, to resolve conflicts with other plugins that may run ICS Calendar's output through `wp_kses_post()` (for consistency with ICS Calendar 9.5.2).
* Replaced all instances of `r34ics_guid()` with `r34ics_uid()`.
* General updates throughout to align with ICS Calendar (free) updates in versions 9.5.0 through 9.5.4.1.
* Updated ICS Calendar requirement to 9.5.4.1.
* Bumped embedded ACF PRO version to 5.12.2.
* Bumped embedded Plugin Update Checker version to 4.11.
* Bumped tested up to version to 5.9.3.

= 3.12.3.1 - 2022.03.25 =

* Fixed bug in refactored code of version 3.12.2 that may cause license verification on updates to fail.
* Updated templates (added support for `CATEGORIES`, removed extraneous `data-feed-color` attributes) in conjunction with ICS Calendar v. 9.4.1 updates.
* Minor CSS changes to admin pages.
* Updated ICS Calendar requirement to 9.4.1.

= 3.12.2 - 2022.03.15 =

* Added alternate license verification functionality for sites using load balancers. Details are available on the license entry screen.
* Refactored code that sets and checks the "instance" string used in validating licenses into new `r34icspro_check_instance()` and `r34icspro_generate_instance()` functions.
* Changed order of input fields on license page to match the order they appear on the [License Keys](https://icscalendar.com/my-account/api-keys/) page.

= 3.12.1.3 - 2022.03.09 =

* Added `function_exists()` check for `shell_exec()` before executing it in the **System Report** on the admin page. Most servers have the function enabled, but if they don't, the plugin's admin page returns a fatal error.
* Updated ICS Calendar requirement to 9.3.5.2.

= 3.12.1.2 - 2022.03.07 =

* Fixed mobile layout bug in month-with-sidebar, year-with-sidebar and year-availability views (introduced in v. 3.11.0 refactoring of `r34ics_calendar_classes` filter logic).

= 3.12.1.1 - 2022.02.22 =

* Fixed bug in year-with-sidebar view that would keep the previously selected date's events in the sidebar when user clicks on another date that has no events.
* Refactored `R34ICSPro::_verify_license()` method to eliminate unnecessary input parameter.
* Removed unused image assets.

= 3.12.1 - 2022.01.31 =

* Fixed bug in grid view that would not correctly handle max days and previous/next day links if the number of dates in the feed with events was less than the max days value, when the calendar is set to show empty days
* Improved logic for grid view's single-day toggle, to display only on days that have events, and previous/next day links, based on `limitdays` and `grid_max_days` settings.
* i18n: Updated Dutch translations. (Special thanks to Paul Shelton for translation assistance!)

= 3.12.0 - 2022.01.27 =

* Updated functionality for compatibility with ICS Calendar 9.3.0: fixed order of input parameters in some filters; replaced calls to `r34ics_url_get_contents()` function with protected method `R34ICS::_url_get_contents()`.
* Updated ICS Calendar requirement to 9.3.0.

= 3.11.0 - 2022.01.24 =

* Added new Calendar Builder options for features introduced in ICS Calendar v. 9.0.0 and 9.1.0.
* Refactored templates to consolidate `r34ics_calendar_classes` filter logic (consistent with ICS Calendar v. 9.1.0).
* Modified logic for month-with-sidebar and year-with-sidebar views to default to short column labels.
* Miscellaneous refactoring and updates for compatibility with ICS Calendar v. 9.1.0.
* Updated ICS Calendar requirement to 9.1.0.
* Bumped tested up to version to 5.9.

= 3.10.0 - 2022.01.19 =

* Changed labels for `r34icspro_calendar` CPT to use the "Calendar Builder" name, as part of standardizing the terminology used in the plugin's documentation.
* Increased width of input box displaying the shortcode in admin pages.
* i18n: Updated translations for new Calendar Builder labels.
* Minor code refactoring.
* Updated Room 34 logo on admin screens.
* Bumped tested up to version to 5.8.3.

= 3.9.0.1 - 2021.12.27 =

* Bug fix: Removed instances of `wp_kses_post()` added in ICS Calendar v. 8.11.0 that were being used unnecessarily on output from `R34ICS` class methods.
* Removed legend from Year Availability template since it does not function properly in that context.

= 3.9.0 - 2021.12.27 =

* New feature: Added support for new **Week Numbers** feature (introduced in ICS Calendar 8.11.0) in calendar builder and month with sidebar template.
* Security: Added filtering (using `wp_kses_post()` or `esc_attr()` as appropriate) to all variable output.
* Performance: Refactored templates to use new `r34ics_month_in_range()` function.
* i18n: Numbered all placeholders in `printf()` functions and updated translation strings that had multiple placeholders.
* Updated ICS Calendar requirement to 8.11.0.

= 3.8.2 - 2021.12.15 =

* Added extra input parameters into `r3417_event_description_html_filter`, `r3417_event_label_html_filter` and `r3417_event_sublabel_html_filter` filters, corresponding to changes made in ICS Calendar 8.10.3.
* i18n: Added extra translation files for Dutch ("Nederlands (Formeel)" and "Nederlands (België)").

= 3.8.1 - 2021.12.14 =

* Fixed issue with date range logic that might prevent Year with Sidebar view from showing the year selection dropdown menu.
* Added compatibility code for changes in ICS Calendar (free version) 8.10.1.
* Updated ICS Calendar requirement to 8.10.2.
* Bumped embedded ACF PRO version to 5.11.4.

= 3.8.0 - 2021.11.28 =

* Added support for the new `location="maplinks"` option, introduced in ICS Calendar 8.10.0, in the calendar builder. The previous **Event Locations** checkbox has been replaced with radio buttons, allowing the selection of "off", "on", or "on, with map links". Note that for this option to work, your events must include a complete, real physical address in the `LOCATION` field of the ICS feed. The plugin has no way to validate addresses before converting them into Google Maps links, so incomplete or invalid addresses may yield nonsensical results.
* Fixed bug in Customizer that may prevent Table Background color from updating when a new color palette is selected.
* Updated ICS Calendar requirement to 8.10.0.
* Bumped embedded ACF PRO version to 5.11.3.

= 3.7.0 - 2021.11.18 =

* Added support in the calendar builder for new options introduced in ICS Calendar v. 8.7.0 and 8.8.0.
* Removed restriction that prevented **Details Toggle** option from displaying for Month with Sidebar and Year with Sidebar views.
* Fixed bug on the Settings & Tools page that would cause the "An unknown error occurred while attempting to retrieve the requested URL" error message to display on the URL Tester tab after a form had been submitted under one of the other tabs.
* Fixed white-on-white content in event hover blocks when color palette is set to "Midnight" or a dark color is used for the "Table Background" setting.
* Fixed CSS issue that was causing the event count "dot" to appear on Month with Sidebar view on desktop when Table Cell Contents was set to "Events".
* Fixed some glitchy interactivity in Month with Sidebar view.
* Minor admin interface tweaks.
* Updated ICS Calendar requirement to 8.8.1.
* Bumped embedded ACF PRO version to 5.11.1.
* Bumped tested up to version to 5.8.2.

= 3.6.2 - 2021.10.27 =

* Changed **Max Days** option for grid view from radio buttons with 5 and 7 as the only options, to a number field supporting a range of 1 to 7 days.

= 3.6.1 - 2021.10.25 =

* Refactored `r34icspro_tz_list()` function to use PHP `timezone_identifiers_list()` rather than a hardcoded list of regions and cities.
* Added optional boolean `$show_sample_time` parameter to `r34icspro_tz_dropdown()` function.
* Removed 10 feed limit in calendar builder.

= 3.6.0 - 2021.10.19 =

* Added **Limit in Table** option for Month with Sidebar view, to allow adjusting the number of events per day to show in the month table. The default value is 3. Set to 0 to show *all* events on each day.
* Fixed bug that prevented the ICS Feed URL Tester on the admin Settings & Tools page from functioning.

= 3.5.1 - 2021.10.13 =

* Added `icstz` query string variable to allow end users to pass in a timezone string to override the timezones used to display event times on that page load. This can currently be used with custom code in the site theme. (Note that this must trigger a refresh of the entire page.) A future update to ICS Calendar Pro will include a Calendar Builder setting to include a dropdown menu for users to select their timezone, along with an optional cookie to retain that selection for the duration of the browser session.

= 3.5.0 - 2021.10.08 =

* Added "ICS Calendar Widget" as an actual widget, compatible with both the classic widgets editor and the new Widget Blocks Editor. This is a streamlined tool for inserting a basic widget with a single calendar feed. Full options remain available in the Calendar Builder, and can still be inserted into a Text widget using a shortcode, as before.
* Removed encoded HTML for "No events found" message in some templates that could potentially result in broken HTML tags displaying on the page.
* Fixed changelog Markdown formatting errors.
* Updated ICS Calendar requirement to 8.5.3, due to a jQuery bug fix in that version that applies primarily to ICS Calendar Pro.

= 3.4.1 - 2021.09.24 =

* CSS updates to correspond with JavaScript fixes in free version 8.4.1.

= 3.4.0 - 2021.09.24 =

* Added Table Background color setting to Customizer to correspond with introduction of new `tablebg` option in the shortcode in the free version. **Note:** We have included this as a site-wide setting in the Customizer rather than making it an editable calendar-specific option because we anticipate that in most cases this will not be something that would be set differently for different calendars within the same site. As with most of the other settings, you can always add standard ICS Calendar shortcode settings directly into your shortcodes for saved calendars to override the saved settings on that particular instance of the calendar.
* Updated ICS Calendar requirement to 8.4.0.

= 3.3.0 - 2021.09.21 =

* Added missing array indexes for empty day filler event.
* Fixed PHP notice "Undefined variable: d_i" in `calendar-month-with-sidebar.php` template.
* Fixed layout issues with new table/list toggle option in month view.
* Fixed display issues with search filter and legend checkbox interactions.
* Updated ICS Calendar requirement to 8.3.0.

= 3.2.0 - 2021.09.09 =

* Added Table Cell Contents option to "month with sidebar" view, to better accommodate use of this view in narrow page layouts.
* Added "Header & Footer" tab to calendar editing screen and reorganized some elements.
* Fixed "Undefined variable: day_events_count" bug in "month with sidebar" view.
* Fixed bug that counted empty day filler as an event in "month with sidebar" dot/mobile display.
* Updated icon in admin notices.
* Fixed PHP notices that may be displayed if license key is missing.
* Updated ICS Calendar requirement to 8.1.1.

= 3.1.0.4 - 2021.09.07 =

* Minor CSS fix.

= 3.1.0.3 - 2021.09.07 =

* Fixed date sorting issue on list view when Fill Empty Days is being used.
* Updated ICS Calendar requirement to 8.1.0.2 due to critical bug fix.

= 3.1.0.2 - 2021.09.06 =

* Fixed jQuery bug that prevented month/list toggle from showing selected state on initial load.

= 3.1.0.1 - 2021.09.06 =

* i18n: Added translations for new text strings introduced in version 3.1.0.

= 3.1.0 - 2021.09.05 =

* Added Month Table/List Toggle and List All options for "month" view; related CSS and JavaScript changes.
* Added `localize_scripts()` method to `R34ICSPro` class for future use.
* Added `r34ics_calendar_classes` filter to all views and corresponding logic in `R34ICSPro` class.
* Fixed issue of date headers remaining displayed in list views when all of a day's events are hidden by the filter.
* Added [js-cookie](https://github.com/js-cookie/js-cookie) library.
* Updated ICS Calendar requirement to 8.1.0.

= 3.0.1 - 2021.09.02 =

* Fixed missing auto scroll to top of sidebar when selecting a date in "year with sidebar" view.

= 3.0.0 - 2021.09.01 =

* ICS Calendar Pro has a new look! New logo and branding assets were added to this update. Your calendar templates are unchanged. This version is fully compatible with the version 2.x series.
* Updated ICS Calendar requirement to 8.0.0.
* Bumped embedded ACF PRO version to 5.10.2.

= 2.7.0 - 2021.08.30 =

* Moved JavaScript loading to footer.
* Updated ICS Calendar requirement to 7.9.0.
* Bumped tested up to version to 5.8.

= 2.6.0 - 2021.08.18 =

* Added "Hide Recurrence" option to calendar editor, to allow turning off the frequency text (e.g. "Recurs every 2 weeks") that displays by default in the descriptions for recurring events.
* Added "GUID" option to calendar editor, to allow assigning an arbitrary `id` attribute to the calendar wrapper. (By default, ICS Calendar generates a random GUID for use as the `id`.)
* Added `!important` to CSS output for calendar text size adjustments in Customizer, and added note that these settings may have no effect on sites whose themes define text sizes in pixels.
* Added description text to Customizer for text options; fixed Times New Roman font option.
* i18n: Updated translation files.
* Bumped embedded ACF PRO version to 5.9.9.
* Updated ICS Calendar requirement to 7.8.0.2.

= 2.5.1.2 - 2021.07.09 =

* Modified "Hide Weekends" CSS to fix issue with this setting not working on mobile breakpoints.

= 2.5.1.1 - 2021.06.29 =

* Changed two `div` tags nested inside an `h4` to `span` tags, for accessibility compliance in widget view.

= 2.5.1 - 2021.06.24 =

* Changed `$max_date` variable to `$limit_date` to match changes in ICS Calendar free version.
* Changed `.help` admin CSS class to `.r34icspro-help` to prevent conflicts with other plugins/themes.
* Based on user feedback, modified Subscribe Link functionality to show only the "Subscribe" button (`webcal://` link) and not the box with the feed URL (`https://` link). This may be changed to be a configurable option in a future update.
* Admin interface tweaks.

= 2.5.0 - 2021.06.01 =

* a11y: Added `aria-labelledby` attributes to calendar containers to improve screen reader user experience.
* Changed uses of `<h3>` through `<h5>` headers in some templates to resolve skipped levels.
* Added conditional to omit empty `<ul>` elements on dates with no events.
* Minor CSS adjustments related to the above changes.
* Refactored views to use new `r34ics_day_classes()` function added in ICS Calendar version 7.6.0. (Wrapped in conditionals to ensure that pages do not return a PHP fatal error if ICS Calendar Pro has been updated first, but note that ICS Calendar version 7.6.0 is now required for most views to display properly.)
* Added new color palette options in Customizer, revised "sunset" and "midnight" color palettes, and applied the selected "Header Text" color to day number labels in addition to column headers.
* Added ICS Calendar Pro Customizer settings to System Report to assist in troubleshooting technical support issues.
* Updated ICS Calendar requirement to 7.6.0.

= 2.4.0 - 2021.05.26 =

* Moved loading of functions.php file outside of 'plugins_loaded' action because we need access to some functions earlier.
* i18n: Added Polish.
* Updated ICS Calendar requirement to 7.5.0.

= 2.3.2 - 2021.05.25 =

* Added `r34icspro_server_addr()` function to correctly retrieve server IP address on Windows servers, to resolve issue where license key would need to be re-entered after every plugin update.
* Added bypass of system timezone check in System Report on Windows servers, since the code relies on a Linux shell command.
* Updated System Report with additional license details, server software and IP address.

= 2.3.1 - 2021.05.21 =

* Fixed bug that would return a PHP notice in the System Report if the system (OS) timezone can't be retrieved.
* Bumped embedded ACF PRO version to 5.9.6.

= 2.3.0 - 2021.05.21 =

* Reorganized field layout on saved calendar editing screen for more intuitive groupings and ease of use.
* Added **Max Days** option for grid view. Options are 5 and 7.
* i18n: Added new translations (Estonian, Latvian, Lithuanian, Russian), fixed issue where some translations may not have loaded properly (Finnish, Greek), and updated all translations.
* Updated ICS Calendar requirement to 7.4.0.

= 2.2.0 - 2021.05.13 =

* Modified Subscribe Link output to only include button (`webcal://` link) in legend rather than button and link in textarea, which was severely altering the presentation of the legend.
* Added handling for deprecation of `legendinline` setting.
* Updated ICS Calendar requirement to 7.3.3.

= 2.1.0.1 - 2021.04.27 =

* Fixed bug that would generate an undefined key notice when new Fill Empty Days setting is being used.

= 2.1.0 - 2021.04.26 =

* Added **Fill Empty Days** setting to add a standard "all-day" event to all days in the calendar that have no events.
* Updated Widget, Year with Sidebar and Year Availability templates to support Fill Empty Days.
* Moved base64-encoded admin icon SVG to main plugin.
* Updated ICS Calendar requirement to 7.3.1.

= 2.0.0 - 2021.04.24 =

* i18n: Added translations of all admin screens.
* Switched from using `acf-json` to PHP-based loading of ACF field groups on calendar editing screen, to support translation and other dynamic settings. (Plans for version 2.0 originally included completely removing the embedded copy of ACF PRO, however that is not yet a viable option. It will be removed in a future release.)
* Replaced "coming soon" message about translations in admin page's sidebar with message about helping improve translations.
* Added logic to only load our version of ACF PRO on the admin side, since we do not need its features on the front end.
* Removed **Bypass ACF Check** functionality and modified `r34icspro-no-acf.php` WPMU plugin to only run its code on the ICS Calendar editing page.
* Relabeled *Product Order API Key* to *Product Order License Key* for consistency with changes to terminology used on the ICS Calendar website.
* Bumped embedded ACF PRO version to 5.9.5.

= 1.12.1 - 2021.04.02 =

* Minor CSS adjustments.

= 1.12.0 - 2021.03.29 =

* Removed customized background color on all-day events and event description hover boxes, for consistency with changes to ICS Calendar 7.1.0 and better display on mobile.
* Moved ACF free `mu-plugins` logic from `plugins_loaded` hook to `admin_init` hook, to avoid a potential fatal error if that code executed on the front end, where the `is_plugin_active()` function does not exist by default.
* Added region/city hierarchy to Timezone dropdown in editor for easier selection. Also set default value to current WordPress timezone setting.
* i18n: Additional admin page translations.
* Updated ICS Calendar requirement to 7.1.0.

= 1.11.0 - 2021.03.23 =

* Replaced uses of `gmmktime()`, `date()`, and most uses of `wp_date()` function with new `r34ics_date()` introduced in ICS Calendar v. 7.0.0.
* Added `R34ICSPRO_R34ICS_CRITICAL_VERSION` constant to prevent loading ICS Calendar Pro code files if this version is dependent on a newer version of ICS Calendar (free) than is installed.
* Updated load order so required/included files are not loaded until after plugin dependencies have been tested.
* Added relevant PHP settings to System Report.
* Miscellaneous refactoring.
* Updated ICS Calendar requirement to 7.0.0.

= 1.10.1 - 2021.03.20 =

* Renamed option from `r34ics_transient_expiration` to `r34ics_transient_expiration` so it's not a transient itself.
* Updated ICS Calendar requirement to 6.11.1.

= 1.10.0 - 2021.03.19 =

* Modified System Report tool: 1) only include _active_ plugins instead of _all_ installed plugins, 2) show both system timezone and WordPress timezone, 3) pared down included cURL information.
* i18n: Added translations of admin sidebar. (Full translations coming in version 2.0, slated for May 2021.)
* Fixed issue with Japanese translations not displaying.
* Updated ICS Calendar requirement to 6.11.0.

= 1.9.2.1 - 2021.03.12 =

* Minor CSS tweak to fix width of all-day events in grid view with **Show Empty Days** on.

= 1.9.2 - 2021.03.11 =

* Changed minimum value for **Past Days** from `0` to `-3652`. Using negative values will cause the calendar to start that many days in the future, rather than the past. (Requires ICS Calendar 6.9.2.)
* Updated ICS Calendar requirement to 6.9.2.

= 1.9.1 - 2021.03.10 =

* Added **Show Empty Days** option for grid view. Default is that only days that have at least one event are included in the grid.
* Minor adjustments to saved calendar editing screen.
* Minor code refactoring.
* Updated ICS Calendar requirement to 6.9.1.

= 1.9.0.1 - 2021.03.10 =

* Fixed an issue that may prevent **Year with Sidebar** or **Year Availability** views from displaying properly on initial load on a page that contains multiple instances of either.

= 1.9.0 - 2021.03.09 =

* Added new **Year Availability** view. This view is optimal for holiday rental bookings, where the feed contains individual all-day/multi-day events. Only the booked/available status is displayed, in a year-at-a-glance grid, and the view includes angled backgrounds on start/end days of multi-day ranges, to show "gap" nights between bookings. Note: You may need to use this in conjunction with the new **Extend Multi-day Events** option, described below.
* Added **Extend Multi-day Events** calendar option to the **Dates/Times** tab, to support new `extendmultiday` shortcode parameter introduced in ICS Calendar v. 6.9.0.
* Modified Year-with-Sidebar view not to show past months if starting on current date.
* Minor saved calendar admin screen tweaks.
* Updated ICS Calendar requirement to 6.9.0.
* Bumped tested up to version to 5.7.

= 1.8.5 - 2021.02.25 =

* Fixed logic flaw that was preventing **Bypass ACF Check** functionality from working properly. (When checked, it should *always* prevent loading the embedded version of ACF Pro, regardless of whether ACF free version, Pro version, or neither is installed.)
* Updated ICS Calendar requirement to 6.7.0.1.
* Bumped tested up to version to 5.6.2.

= 1.8.4 - 2021.02.23 =

* Changed admin menu order to prevent ICS Calendar from appearing in the middle of the WooCommerce set, if WooCommerce is installed.
* Updated ICS Calendar requirement to 6.6.3.

= 1.8.3.2 - 2021.02.11 =

* Fixed HTML issue with changes in 1.8.3.1.

= 1.8.3.1 - 2021.02.11 =

* Added CSS classes to new Subscribe Link output, to allow hiding one or more of these elements, or additional visual customization: `.r34icspro-subscribe-link-wrapper` (overall container element), `.r34icspro-subscribe-link-webcal` (the Subscribe button with the `webcal://` link), `.r34icspro-subscribe-link-https-message` (the explanatory text above the input box containing the `https://` link) and `.r34icspro-subscribe-link-https` (the input box containing the `https://` link).
* Updated ICS Calendar requirement to 6.5.0.2.

= 1.8.3 - 2021.02.08 =

* Enhanced Subscribe Link functionality with `webcal://` URL on subscribe button for direct add-to-calendar functionality on systems that support it, along with a URL for the feed to manually add to other calendars. This addresses a potential issue where users were adding a static export of then-current events to their calendars, rather than a live-updating subscription.
* Changed Subscribe from a text link to styled button; button colors use "Dark Accent Color" and "Light Accent Color" options from Customizer.
* i18n: Added translations for the Subscribe button as well as the new supporting text for the subscribe link box.
* Added install link(s) to admin notice about missing required plugins.
* Added `R34ICSPRO_DEV_MODE` constant for internal development use.

= 1.8.2 - 2021.01.15 =
* Added **ICS Feed Loading Method** setting to calendar editor to support for new "method" setting introduced in ICS Calendar (free) v. 6.4.2.
* Changed **Modify Output** tab label on calendar editor to **Advanced**.
* Minor help bubble text updates.
* Bumped embedded ACF PRO version to 5.9.4.
* Updated ICS Calendar requirement to 6.4.2.

= 1.8.1.1 - 2020.12.31 =

* Fixed two grid view bugs with new 5-days-at-a-time feature introduced in version 1.8.0: a) the final day not being accessible ("Next Day" button disappearing one day too early), and b) the full set of days displaying, rather than just 5, when collapsing an expanded single day.

= 1.8.1 - 2020.12.28 =

* Fixed bug in widget view that would default to displaying the earliest month in the calendar when `pastdays` is set, not the current month.
* Added note on approximate value of **Past Days** setting.
* Minor refactoring of today's date variables in month and week views.
* Updated ICS Calendar requirement to 6.4.0.

= 1.8.0.3 - 2020.12.11 =

* Added upcoming renewal notice with discount offer.
* Resolved issues with correctly calculating expiration date of annual licenses. **All users with annual licenses should update to this version ASAP to ensure that your license can be renewed properly when it expires.**
* Verified limited functionality for unlicensed/expired installations is working as intended. (Calendars will still display and existing calendars can be edited, but new calendars cannot be created, and updates are not available.)
* Bumped embedded Plugin Update Checker with recent hotfixes.
* Bumped tested up to version to 5.6.

= 1.8.0.2 - 2020.12.04 =

* i18n: Added translations for new text strings introduced in 1.8.0.

= 1.8.0.1 - 2020.12.03 =

* Fixed bug that was causing start and end hours in grid view to be ignored; added workaround to issue with ACF not returning the hour values in the correct format.
* Added missing `$args_set` values in `R34ICSPro::display_calendar_args()` method.
* Removed misleading "final hour" of grid view, so the end cutoff time properly appears as the bottom edge of the grid.
* Fixed hour marker alignment on grid view on mobile.

= 1.8.0 - 2020.12.02 =

* Fixed CSS issues with table layout in grid view.
* Fixed issue that prevented zoom setting from being honored in grid view.
* Introduced `r34icspro_clean_tz_display()` function for timezone display output. Inserts a `wbr` tag after slash and replaces underscores with spaces.
* Added Customizer color palette support in grid view.
* Fixed bug in grid view that prevented "Past Days" setting from being honored.
* Modified grid view to show a maximum of 5 days at a time, with Previous Day / Next Day links to step through additional days. (Note: Grid view currently skips displaying days that contain no events. This may or may not be a desirable feature so we are leaving it as-is to gather feedback.)
* Updated ICS Calendar requirement to 6.3.0.
* Updated terms in README.md file to clarify that this software is provided as-is without warranty.

= 1.7.2.2 - 2020.11.10 =

* Fixed event count on Month with Sidebar mobile view when multiple events occur simultaneously.
* Fixed overflowing day name labels on Month with Sidebar mobile view.

= 1.7.2.1 - 2020.11.09 =

* Updated maximum allowed value for Transient Expiration to 86400 (one day) to align with the online documentation.

= 1.7.2 - 2020.11.04 =

* Updated details returned in System Report for diagnostics. Removed unnecessary items and added details of saved calendars.

= 1.7.1 - 2020.11.03 =

* Minor saved calendar admin screen layout improvements.
* Removed confusing "help" cursor on event titles in sidebar/widget view.
* Updated ICS Calendar requirement to 6.2.4.
* Bumped embedded ACF PRO version to 5.9.3.
* Bumped embedded Plugin Update Checker with recent hotfixes.

= 1.7.0.2 - 2020.10.29 =

* Changed Pro's default call to `r34ics_display_calendar_exclude_event` filter to priority 1 to avoid interference with users' custom code.
* Added version check to admin JavaScript enqueuing.

= 1.7.0.1 - 2020.10.28 =

* Fixed JavaScript bug in admin introduced in v. 1.7.0.

= 1.7.0 - 2020.10.28 =

* Added predefined color palettes ("neutral", "sunrise", "midday", "sunset" and "midnight") to Customizer.
* Applied color palette customizations to event description "hover block" on month and week views.
* i18n: Added translations for all Customizer description text.
* Added prepended underscore to a private property name.
* Minor CSS tweaks and fixes.
* Updated ICS Calendar requirement to 6.2.2.

= 1.6.3 - 2020.10.23 =

* Added support for new `monthnav` attribute with Month Navigation Style option in calendar configuration for Month and Month with Sidebar views.
* Added plugin version to `wp_enqueue_scripts()` call.
* Updated ICS Calendar requirement to 6.2.0.

= 1.6.2 - 2020.10.22 =

* Corrected number of input parameters on several custom hook calls and added placeholders for missing hooks with `__return_false`.
* Fixed bug that was preventing Limit Days option from functioning properly on Pro views.
* Added timezone display in Grid view.

= 1.6.1.2 - 2020.10.22 =

* Further refinements to `tz` parameter and timezone handling to avoid fatal errors if site does not have a timezone set and to default to WP timezone string instead of null if `tz` is not specified.
* Updated ICS Calendar requirement to 6.1.2.2.

= 1.6.1.1 - 2020.10.21 =

* Added `is_serialized()` (core WP function) check to `r34icspro_get_saved_params()` to prevent PHP notices.

= 1.6.1 - 2020.10.21 =

* Fixed issues with toggle event description excerpts in pro views.
* Fixed warnings from customizer.php if ICS Calendar (free) is not active.
* Updated i18n translation files with additional text strings. Added translations for Danish and Korean. Added localized translation versions for Austria, Belgium, Canada, Portugal, Spain, Switzerland. If you are interested in helping improve the accuracy of these machine translations please email us at support@room34.com.
* Updated ICS Calendar requirement to 6.1.2.

= 1.6.0 - 2020.10.21 =

* Added support for `data-feed-color` attribute added in core version 6.1.1.
* Used `data-feed-color` to remove unnecessary padding on events without a color background.
* Miscellaneous CSS refinements.
* Added missing support for hiding "All Day" indicator on Pro templates.
* Added "Hide Calendar Title and Description" option for more intuitive handling than typing "none" in each input.
* Reorganized tabs on calendar editing screen.
* Removed description toggle option on Month with Sidebar and Year with Sidebar views since it is not functioning properly on those views.
* Updated ICS Calendar requirement to 6.1.1.

= 1.5.0 - 2020.10.20 =

* Added Legend Style and Legend Position fields to replace Legend Inline.
* Added `isset()` check for `tz` parameter in `R34ICSPro::display_calendar_args()` method to prevent PHP notice on saved calendars that predate the existence of that setting.
* Updated ICS Calendar requirement to 6.1.0.

= 1.4.0.1 - 2020.10.19 =

* Fixed issue in v. 1.4.0 that would cause the "Bypass ACF Check" notice to display when ACF PRO, not ACF free, was installed.

= 1.4.0 - 2020.10.19 =

* Replaced ACF PRO functions with ICS Pro-specific alternates on front end and in WP-Cron job. (First step in the process of eliminating the need for the embedded copy of ACF PRO.)
* Removed `step` attributes from number inputs on Settings & Tools screen to avoid quirks of Safari's (and possibly other browsers') implementation of HTML5 number input fields preventing ability to save changes.
* Added admin notice on saved calendar editing screen if ACF free is active or "Bypass ACF Check" is on.
* Added logic to prevent admin notice about ICS Calendar Pro being deactivated appearing incorrectly.

= 1.3.0 - 2020.10.10 =

* Added support for setting arbitrary timezones for feeds.
* Added option to display calendar's timezone setting in legend.
* Updated ICS Calendar requirement to 6.0.1. **Note: Version 6 introduces new timezone management. If your feeds are displaying incorrect times after this update, please check that Settings > General > Timezone is set correctly for your site, or make adjustments to the new timezone settings for individual feeds in your saved calendars, as needed.**

= 1.2.3 - 2020.10.02 =

* Added missing configuration option for "toggle" setting in calendar editor.
* Fixed logic issue for ACF settings in dev mode.
* Re-synced acf-json file to fix issue that may have prevented the new Regular Expressions feature (v. 1.2.0) from appearing.
* Added message on license entry screen to provide additional guidance on license-related errors.
* Added logic to remove "unlicensed" warning that would still appear on settings page immediately after entering a valid license.
* Bumped embedded ACF PRO version to 5.9.1.
* Bumped embedded Plugin Update Checker version to 4.10.

= 1.2.2 - 2020.09.25 =

* Fixed issue that may prevent Subscribe Link from working with certain feeds.
* Updated ICS Calendar requirement to 5.10.0.1.

= 1.2.1 - 2020.08.21 =

* Fixed search filter on month-with-sidebar view so the grid shows all matching events when filtering, not just the first three per day.
* Configured month-with-sidebar CSS to *only* show event end times in the sidebar, not the main grid, to avoid a frequent issue of the space allocated for the end time causing a blank line on most events, depending on the window width.

= 1.2.0 - 2020.08.20 =

* Added Regular Expressions feature for customization of event text output.
* Reorganized tabs on saved calendar editing screen.
* Added link to Pro documentation website in the admin user guide.
* Updated ICS Calendar requirement to 5.9.1.
* Bumped tested up to version to 5.5.

= 1.1.2.1 - 2020.06.29 =

* Added type checks for certain arrays to resolve PHP Countable warnings in certain circumstances.
* Updated ICS Calendar requirement to 5.8.0.5. (Pro 1.1.2.1 probably still works with versions of ICS Calendar back to 5.7.2, but we are bumping the version requirement to encourage users to stay up-to-date, especially since the ICS Parser library was updated in 5.8.0.)
* Bumped tested up to version to 5.4.2.

= 1.1.2 - 2020.05.22 =

* Improved logic for detecting and notifying site administrator of expired or modified licenses.

= 1.1.1 - 2020.05.05 =

* Added support for new `legendinline` option.
* Implemented new `r34ics_feed_colors_css()` function in all templates.
* Bumped tested up to version to 5.4.1.
* Updated ICS Calendar requirement to 5.7.2.

= 1.1.0 - 2020.04.13 =

* Customizer enhancements incorporating several CSS-based options, based on suggestions we've made for users in the WordPress support forums.
* Bumped tested up to version to 5.4.

= 1.0.3 - 2020.04.09 =

* Fixed logic error in licensing-related admin notices when copy has not yet been registered, and improved general admin notice details.
* Fixed issue that could prevent license activation if auto-generated `r34icspro_instance` string contained certain special characters.
* Improved handling of WP-Cron for pre-caching.
* Streamlined admin Settings & Tools screen with help pop-ups.
* Added recommendation that transient expiration be set to 7200 (2 hours) or more if pre-caching is being used.
* Added hook to remove pre-caching WP-Cron task on plugin deactivation.

= 1.0.2 - 2020.04.06 =

* Fixed issues with license activation/deactivation on multisite installations.
* Refactored calls to licensing API.
* Modified `r34icspro_instance` option to reset if the server's IP address changes (i.e. the site has been moved).

= 1.0.1 - 2020.04.06 =

* Added **System Report** tab to **Settings & Tools** page. Information in the system report should be pasted into the [support request form](https://icscalendar.com/pro-support/).

= 1.0.0 - 2020.03.23 =

* First official release version.
* Updated license and update handling logic.
* Updated ICS Calendar requirement to 5.7.1.

= 0.9.4 - 2020.03.14 =

* Added machine translations for Chinese (Simplified), Dutch, Finnish, French, German, Greek, Hungarian, Italian, Japanese, Norwegian (Bokmål and Nynorsk), Portuguese (Brazil), Spanish (Mexico) and Swedish. Note: As with the free plugin, translations are currently limited to phrases displayed on front-end templates, not the admin screens.

= 0.9.3 - 2020.03.14 =

* Restructured WP-Cron logic for pre-caching saved calendars, resolved issues with cron job not running.
* Moved some logic for display of events in month-with-sidebar view from jQuery to main template.
* Added auto-scroll to top of sidebar when clicking a day in month-with-sidebar view.
* Additional Customizer options.

= 0.9.2.1 - 2020.03.13 =

* Bug fixes with filter on month-with-sidebar view.

= 0.9.2 - 2020.03.10 =

* Fully removed all code related to deprecated `tzoffset` and `tzignore` parameters.
* Added `r34icspro_day_events_count()` function to correct "n more events" display value on month-with-sidebar view.
* Added current (selected) date indicator in month-with-sidebar view.
* Removed option to change column headers on widget view. Always displays "min" (single-letter) headers.
* Fixed issue with calendar not displaying in year-with-sidebar view if only one year.
* CSS refinements.
* Updated ICS Calendar requirement to 5.7.0.

= 0.9.1.1 - 2020.03.10 =

* Added missing logic for Subscribe Link option.
* Updated ICS Calendar requirement to 5.6.1.1.

= 0.9.1 - 2020.03.10 =

* Added Subscribe Link option and related actions/methods. (Requires ICS Calendar v. 5.6.1.)
* Added year-with-sidebar template to repository. (Missing in 0.9.0 check-in.)
* Added custom updater icon.
* Bumped embedded Plugin Update Checker version to 4.9.
* Updated ICS Calendar requirement to 5.6.1.

= 0.9.0 - 2020.03.09 =

* Added new year-with-sidebar view. (Needs additional work for usability at phone breakpoint.)
* Added optional pre-caching of saved calendars. (Still experimental; may require a large amount of server memory as currently configured.)
* Fixed bug if a start date or rolling past date had been set, and then "Start On" was changed to "current date".
* UX/UI changes with color code key in conjunction with updates to the free plugin v. 5.6.0.
* Minor adjustments to admin settings interface.
* Updated ICS Calendar requirement to 5.6.0.
* Bumped embedded ACF PRO version to 5.8.8.

= 0.8.7 - 2020.03.03 =

* Added URL Tester feature to plugin's Settings page.
* Enhanced CSS for widget view.
* Expanded scope of Customizer color settings.

= 0.8.6 - 2020.03.03 =

* Fixed end time formatting in widget and month-with-sidebar view.
* Fixed bad include path for free plugin's admin sidebar.
* Added Transient Expiration option to plugin's Settings page.
* Updated ICS Calendar requirement to 5.5.1.

= 0.8.5 - 2020.02.28 =

* Added support for new `attach` parameter added to core version 5.5.0.
* Updated ICS Calendar requirement to 5.5.0.

= 0.8.4.1 - 2020.02.11 =

* Fixed bugs that were preventing month-with-sidebar view from showing calendar grid after 0.8.4 update.

= 0.8.4 - 2020.02.09 =

* Improved wrapper CSS classes and associated jQuery to prevent functionality conflicts when multiple calendars are present on the same page. (Follows updates to free version 5.3.0.)
* Improved CSS for widget view; should now display properly in sidebars as narrow as 200 pixels wide, depending on font.
* Updated ICS Calendar requirement to 5.3.0.

= 0.8.3 - 2020.02.03 =

* Fixed bug in widget view that would prevent calendar grid from displaying.
* Fixed bug with "Column Labels" setting that would not properly handle "Default for view" option in widget view.
* Fixed bug in widget and month-with-sidebar views in setting `data-event-count` attribute for months with no events.
* Updated ICS Calendar requirement to version 5.2.9.

= 0.8.2 - 2020.01.27 =

* Added license handling logic with purchase site API integration.

= 0.8.1 - 2020.01.27 =

* Implemented GitLab updater functionality.
* Updated admin notice about automatic deactivation of ACF (free), since we can't (yet) reliably reactivate ACF when ICS Calendar Pro is deactivated.

= 0.8.0 - 2020.01.27 =

* **Unstable test version.**
* Moved project from GitHub to GitLab.

= 0.7.3 - 2020.01.27 =

* Customizer enhancements: font selection and text scaling.
* Removed separate template file for search/filter.
* Additional logic for handling ACF (free). (Needs further refinement.)
* Minor CSS tweaks.

= 0.7.2 - 2020.01.23 =

* Added plugin conflict handling for sites that have Advanced Custom Fields (free) installed.

= 0.7.1 - 2020.01.21 =

* Added support for new `formatmonthyear` parameter.
* Updated ICS Calendar requirement to version 5.2.7.

= 0.7.0 - 2020.01.19 =

* Added admin settings page.
* Added License tab with entry/deletion form on settings page. (Not yet connected to license API.)
* Added Customize tab with link to Customizer on settings page.
* Additional license-handling logic.
* Reorganized admin template file structure to match core plugin version 5.2.6.1.
* Updated ICS Calendar requirement to version 5.2.6.1.

= 0.6.0 - 2020.01.18 =

* Added `showfilter` parameter, which adds a simple filter form to the top of a calendar, allowing users to narrow down the display to events matching their text string.
* Added **Hyphenation Off** option to Customizer to turn off the plugin's automatic hyphenation of long words in event titles and descriptions.
* Revised layout of Saved Calendars editing screen.
* Updated ICS Calendar requirement to version 5.2.6.

= 0.5.2 - 2020.01.09 =

* Added support for new `hidealldayindicator` parameter.
* Replaced all uses of PHP `mktime()` function with `gmmktime()`. See the changelog in ICS Calendar version 5.2.4.1 for more details on this issue.

= 0.5.1 - 2020.01.04 =

* Added support for event description excerpts in Saved Calendars for list and widget views.
* Added support for new toggle handling of event description excerpts.
* Revised layout of Saved Calendars editing screen.
* Refactored R34ICSPro class to remove unused methods.
* Added basic license expiration handling and related admin notices.
* Updated ICS Calendar requirement to version 5.2.2.

= 0.5.0 - 2020.01.01 =

* Added Customizer support for custom colors.
* Updated ICS Calendar requirement to version 5.1.1.

= 0.4.0 - 2019.12.31 =

* Introduced Saved Calendars feature.
* Added embedded Advanced Custom Fields plugin to support Saved Calendars editing interface. (Embedded ACF only loads if not already detected in site installation.)
* Reorganized admin pages.
* Updated ICS Calendar requirement to version 5.0.2.

= 0.3.1 - 2019.12.31 =

* Updated uses of `wp\_date()` function to use timezone property introduced in ICS Calendar version 5.0.1.
* Redesigned widget view.

= 0.3.0 - 2019.12.30 =

* Bumped WordPress requirement to 5.3 and PHP requirement to 7.0.0. WordPress requirement is due to the use of the new `wp\_date()` function to replace `date\_i18n()`.
* Replaced all uses of `date\_i18n()` with `wp\_date()` (if translations are needed for display) or PHP `date()` function (if dates are being formatted for processing only). Currently also using `date()` to format time-only display, due to issues on certain servers with redundant timezone offset adjustments when using `wp_date()`.
* Added guid check on interactions between calendar grid and detail list so multiple widget or month-with-sidebar views can exist on the same page without interfering with each other.
* Fixed some CSS issues with Twenty Twenty theme.
* Refactored r34icspro\_get\_timezone() function.
* Removed timezone offset indicator in grid view because the timezone defined for the overall feed may not actually match the timezone of the majority of events in the feed. (To be revisited in a future update.)

= 0.2.8.1 - 2019.12.18 =

* Completed month step navigation functionality for widget view introduced in version 0.2.8.

= 0.2.8 - 2019.12.17 =

* Updates for compatibility with changes in ICS Calendar 4.7.0. (Requires ICS Calendar 4.7.0 or later.)
* Added new social image.
* Added widget view (basically functional, but jQuery and CSS are incomplete).
* Various JavaScript and CSS updates.

= 0.2.7 - 2019.12.12 =

* Updates for compatibility with changes in ICS Calendar 4.6.2. (Requires ICS Calendar 4.6.2 or later.)

= 0.2.6 - 2019.11.18 =

* Updated grid template to use new logic introduced in ICS Calendar. (Requires ICS Calendar 4.6.0 or later.)
* Began development on "month with sidebar" view.

= 0.2.5 - 2019.10.02 =

* On grid view, made entire date header clickable to expand/collapse rather than just the toggle icon; hid toggle icon on closed state on phone breakpoint because it often overlaps date text.
* Renamed "Shortcode Builder" to "Calendar Builder". (Functionality still not yet implemented.)
* Updated panels in admin screen sidebar.
* Set bare minimum height for event blocks, to prevent first line of text being cut off vertically on very short events (less than 15 minutes).
* Minor CSS visual updates.

= 0.2.4.1 - 2019.09.30 =

* Updated to use new functions added to ICS Calendar. (This version requires ICS Calendar 4.3.1.)
* Fixed issue with event descriptions displaying at all times. (Should only display on hover/tap.)

= 0.2.4 - 2019.09.30 =

* Added time range handling to grid view. (Also increased spacing at top of time grid to account for extension of events that begin before displayed time range.)
* Changed minimum width of event hover state on grid view from 120 pixels to 180 pixels.

= 0.2.3 - 2019.09.27 =

* Updated grid template to use new R34ICS::event\_description\_html() method. (Requires ICS Calendar 4.3.0 or later.)
* Added missing color key below calendar.
* CSS and layout enhancements.

= 0.2.2 - 2019.09.23 =

* Changed handling of event background color to prevent illegible overlapping text on events that start at slightly different times. (Display still does not handle events that start at *very* close times, e.g. less than 15 minutes. For now users are encouraged to increase the `zoom` value if close staggered starts are needed.) **This change requires ICS Calendar v. 4.1.4.**
* Added toggle feature to grid view to focus on a single day.
* Reversed order of description and location in detail view.
* Added stub code for more advanced display of overlapping events. (Not yet implemented.)
* General layout improvements.
* Mobile optimizations.
* Minor refactoring.

= 0.2.1 - 2019.09.22 =

* Added default gray background colors for events in grid view if no custom colors are set.

= 0.2.0 - 2019.09.21 =

* Added `grid` view and related features, including `zoom` and `hours` shortcode parameters.

= 0.1.1 - 2019.09.12 =

* New logo files.
* Initial setup of admin pages and methods to access new hooks in the free plugin.

= 0.1.0 - 2019.09.10 =

* Initial check-in of barebones plugin framework.
