= 6.8.0 =
* Security: the plugin no longer bundles symfony/process 3.4, kriswallsmith/assetic or robloach/component-installer. They came in only to install the calendar files, were never used, and symfony/process has known Windows advisories (CVE-2024-51736, CVE-2026-24739) that security scanners would flag. The calendar files are unchanged
* Added: show events from EventKiln alongside your Eventbrite events, or on their own with no Eventbrite key. Add your EventKiln API key under Settings, EventKiln. EventKiln events appear in date order in every layout and the calendar, with prices, tickets left, sold out, not yet on sale and postponed (Pro; postponed once EventKiln supports it), music details and line-up (Pro), and Get Tickets going to the EventKiln ticket selector or to the organiser's own ticket site
* Added: EventKiln events are fetched in the background on the same schedule as Eventbrite results are cached (once a day, or the Pro Manage Cache setting, or the wfea_eventbrite_cache_expiry filter, never more often than every 5 minutes) and when the settings are saved. The last good copy is kept, so if EventKiln is unreachable or the key is revoked visitors still see the events and the admin gets a notice saying why
* Added: with the popup option on, Get Tickets for an EventKiln event opens EventKiln's checkout in a pop-up on your site, in every layout and the calendar. The organiser adds the website under EventKiln Settings, Checkout on your own website. If the checkout script is blocked the button still goes to the event page, and it needs no cookie consent as it sets no cookies (Pro Only)
* Added: the EventKiln settings box explains what EventKiln is, with links to request access, find out more and see pricing, until EventKiln is connected; once connected it links to managing your events in EventKiln
* Added: with the details pop-up on (long_description_modal), Read More on an EventKiln event opens the same full details pop-up as Eventbrite events, with Add to Calendar and the EventKiln checkout pop-up (Pro Only)
* Added: in the details pop-up, EventKiln events use EventKiln's own calendar links for Google, Outlook, Apple and Yahoo, the venue links to a map, and the venue's accessibility and travel notes are shown (Pro Only)
* Added: instant updates for EventKiln events. If the EventKiln API key has the webhooks permission, the site subscribes to EventKiln webhooks when the settings are saved, and EventKiln tells it within about 2 minutes when tickets sell or an event changes, so sold out and edits show without waiting for the next refresh. Notices are checked against their signature and the refetch runs in the background. Turn it off with Instant updates in the EventKiln settings; it needs https, and is re-enabled automatically if EventKiln switched it off while the site was down (Pro Only)
* Added: staging sites (WP_ENVIRONMENT_TYPE staging) can point at another EventKiln, as development sites already could
* Added: venue_id filters EventKiln events too, with EventKiln venue IDs written as ek-12 (Pro Only)
* Fixed: the Outlook Calendar and Apple Calendar buttons in the details pop-up did nothing, as the pop-up removed their forms (Pro Only)
* Fixed: the details pop-up ignored the list's settings, such as the excerpt length, and always used the defaults, so it had no Get Tickets button (Pro Only)
* Fixed: with the popup option on, Get Tickets did nothing on themes that load pages without a full page load (such as Waveme) when visitors reached the events page from the site's menu, or when the Eventbrite script was blocked. The checkout pop-up is now set up when the events arrive, however the page was loaded, and until it is ready, or if it is blocked, the button links to the event on Eventbrite (Pro Only)
* Fixed: the details pop-up button (Read More / View details) was missing whenever Full content was on. The block turns Full content on by default, so in the One, Grid, Venue, Slide Show and Accordion layouts the block had no button while the equivalent shortcode did (Pro Only)
* Fixed: activating Pro while the free plugin was active (or the reverse) showed "The plugin generated unexpected output during activation", because the second copy redefined the plugin's constants and PHP warned. The second copy now hands over to the first before defining anything
* Fixed: PHP warnings (Attempt to read property "id" on null, Undefined property venue / organizer) when the Elementor widget built its venue or organizer list and some events had no venue, such as online events
* Fixed: in the block editor, Pro plan controls such as Show Availability appeared twice, and layouts and plans were added twice, because the Pro block filters were registered twice (since 6.5.0) (Pro Only)
* Fixed: Show Availability set in the Display Eventbrite Events block was not saved, because the block attribute was misnamed. Existing blocks keep availability off (0), as the shortcode does (Pro Only)
* Fixed: Read More on EventKiln events went to the ticket selector instead of the event page
* Fixed: screen reader labels and link titles on EventKiln events said "on Eventbrite"; they now say EventKiln. The free Book Now button's screen reader label read "%4$s" instead of the event title
* Fixed: Add to Calendar links for Google, Yahoo and Outlook.com put the event at the wrong time outside UTC (an hour late for UK events in summer), and events with no end time got a wrong end. The downloaded calendar file was already right (Pro Only)
* Fixed: "Sold Out" shown as the availability of Eventbrite events whose tickets are sold on another website, where the number of tickets left is not known (Pro Only)
* Added: choose which events a list shows with source="all" (the default), "eventbrite" or "eventkiln" on the shortcode, and Show Events From on the blocks and Elementor widget once an EventKiln API key is set. An EventKiln-only list doesn't call Eventbrite at all
* Added: for developers, wfea_include_eventkiln_events, wfea_eventkiln_event, wfea_eventkiln_event_url and wfea_eventkiln_widget_src filters, and a wfea_eventkiln_order_complete jQuery event on document with { orderReference, eventId } (Pro); EventKiln events carry original_system "eventkiln" and an eventkiln property with the EventKiln id and URLs

= 6.7.2 =
* Fix the settings page refusing to save a new API key after the saved one expired (for example after an Eventbrite password change) - the key check disabled Save as soon as the page loaded and often never re-enabled it. The check is now a warning only and the key is still validated when you save
* Fix readmore doing nothing on the Short Date layout - with the details popup turned off (long_description_modal="false") a Read More link to the Eventbrite page is now shown when readmore is on. With the popup on, its button remains the read more and is hidden with long_description_modal="false" (Pro Only)
* Fix a stray quote mark printed after the details button, and in its accessible label, for events not from Eventbrite (Pro Only)
* Updated Freemius SDK to the latest version
* Developers: the custom layout documentation now links to a public example plugin, github.com/alanef/display-eventbrite-custom-layout-example - the previous example link returned a 404

= 6.7.1 =
* Fix fatal error on every front end page of the free plugin in 6.7.0 - a hook registered in the shared code pointed at a Pro-only method that is removed from the free build. Pro was unaffected

= 6.7.0 =
* New: option to hold back the Eventbrite embedded checkout until the visitor has given cookie consent, so no advertising or social cookies are set beforehand - works with any consent plugin supporting the WP Consent API, and Book Now links through to Eventbrite while consent is withheld (Pro Only)
* Fix Eventbrite's script being loaded from eventbrite.com on every calendar page through a script dependency, whether or not the popup was used (Pro Only)
* Fix corrupted markup in the How to Use settings box that broke the two-column settings layout, hiding the Save and Shortcode Builder panels
* Fix a PHP deprecation notice filling the debug log when the first_of_series option is used, which would become a fatal error on PHP 9 (Pro Only)
* Developers: wfea_consent_gate_enabled, wfea_consent_force_block and wfea_consent_categories filters to bypass, force or retune the consent gate, plus window.wfeaGrantConsent() for banners that do not support the WP Consent API (Pro Only)

= 6.6.0 =
* Fix collection_id showing a repeating event as a single long event instead of its individual dates (Pro Only)
* Fix series_id shortcode option returning no events (Pro Only)
* Fix filter_by_attrs being silently ignored when the editor saved `&&` as `&amp;&amp;` - chained conditions now work however the editor stores them (Pro Only)
* Filter conditions that cannot be parsed are now logged and listed in the debug output instead of being dropped without trace, so a filter that does nothing no longer looks like a working one (Pro Only)
* Avoid a PHP 8 warning, and an event being wrongly shown as unavailable, when the Eventbrite API returns no ticket availability data for an event (Pro Only)
* Show event prices on the Card and Slider layouts when Prices is enabled - previously the setting had no effect on these two layouts (Pro Only)
* Reduce package size by excluding unused FullCalendar source/build files (src, tests, demos, tasks, plugins, locale, build config) from the distribution — only dist/ assets are loaded at runtime

= 6.5.12 =
* Fix calendar failing to load (FullCalendar styles and scripts blocked) due to packaging excluding bundled vendor assets (Pro Only)
* Raise minimum WordPress version to 5.9

= 6.5.11 =
* Fix Eventbrite descriptions sometimes showing the current WordPress page content instead of the event description in modal and inline content layouts (Pro Only)
* Fix modal image alt text and details button labels to use the event title instead of the current page title (Pro Only)

= 6.5.10 =
* Fix modal popup displaying garbled markup when optimization plugins duplicate frontend scripts (Pro Only)
* Add safety guard against corrupted AJAX responses from server cache or error handlers (Pro Only)
* WordPress 7.0 compatibility: update block apiVersion to 3 for iframe editor support
* Update npm dependencies to align with React 18 and latest @wordpress packages

= 6.5.9 =
* Fix calendar date showing wrong day in non-UTC timezones (e.g. Brisbane)
* Fix event repetition after page 5 in paginated results (Pro Only)

= 6.5.8 =
* Fix thumb_width constraint incorrectly applied to card layout
* Fix premium-only scripts (popup, calendar) incorrectly enqueued in free admin widget preview
* Fix encoding of special characters in Calendar List layout
* Enable ticket availability display in short_date layout ( Pro Only )

= 6.5.7 =
* Improve security for block editor and Elementor widget controls

= 6.5.6 =
* Fix webhook payload URL not persisting after generation (Pro Only)
* Fix background API transient cache not clearing on webhook or manual clear (Pro Only)

= 6.5.5 =
* Minor fix foryes  Calendar tip position out of bounds ( Pro Only )
= 6.5.4 =
* Fix calendar script loading issues with Elementor and shortcodes in themes like Astra
* Fix missing hyphen in Elementor widget calendar script handle
* Fix moment.js handle to use WordPress bundled version
* Remove duplicate FullCalendar bundling in block editor scripts to prevent moment.js conflicts

= 6.5.3 =
* Fix missing spacing between block elements when stripping HTML for excerpts

= 6.5.2 =
* Fix long_description=true parameter not displaying full content in excerpts
* Add dedicated wfea_excerpt_text property for clearer excerpt handling
* Add get_excerpt_text() utility method for templates
* Update all templates and calendar methods to respect long_description setting
* Add documentation for event description display options

= 6.5.1 =
* Tested to WP 6.9

= 6.5.0 =
* Fix legacy Gold plan detection using license plan_id instead of unreliable plan name checks
* Add helper method for detecting legacy Gold plan users (plan_id 7700)
* Fix block editor not displaying Gold plan options correctly
* Update all Gold plan checks throughout codebase to use new detection method
* Ensure JavaScript receives correct Gold plan status for block editor features

= 6.4.1 =
* Modernize build and release process with GitHub Actions automation
* Replace gulp-based build with composer scripts and wp-cli dist-archive
* Add automated quality checks (PHP 7.4-8.3 compatibility, PHPCS, security)
* Add automated Freemius deployment with free version sync
* Add WordPress Plugin Check integration
* Improve build performance and maintainability

= 6.4.0 =
* Add support for Eventbrite Collections - filter events by collection_id (Pro only)
* Fix undefined $events variable warning in build_event_array()
* Add automatic start_date_range_start when end date is in future

= 6.3.11 =
* Fix Elementor widget thumbnail display issue where original (uncropped) images were not showing correctly on frontend

= 6.3.10 =
* Add venue_name option to short_date layout
* Add overflow hidden to wfea-fullcalendar to stop issues in some themes

= 6.3.9 =
* Fix PHP syntax errors in API key settings that could cause fatal errors
* Add robust handling for various API key storage formats during migration

= 6.3.8 =
* Add integration for Music Events Addon
* Add wfea_get_tags filter

= 6.3.7 =
* Fix all short_date layout display and image issues on PRO, Starter and Free
* Add wfea_get_organizers filter (allows developer addon)

= 6.3.6 =
* Fix PHP Fatal with short_date on Free

= 6.3.5 =
* Fix short_date layout now working on Free
* Fix Shortcode default regression

= 6.3.4 =
* Add layout option: short_date - best optimised for single events

= 6.3.3 =
* Fix Carousel / Slider not always showing correct number of items
* Minor code cleanup

= 6.3.2 =
* Fix Slider not working on PHP8.1+ and Starter Plan

= 6.3.1 =
* Fix Elementor Calendar Events not working

= 6.3.0 =
* Add event filtering by tags and tag display with new API
* Add show_tags shortcode attribute to display event tags
* Add tags shortcode attribute for tag-based event filtering
* Migrate from deprecated Eventbrite categories API to new tags endpoint
* Fix tag display styling and integration with event templates
* Maintain backward compatibility with existing category_id filtering

= 6.2.2 =
* Fix slider

= 6.2.1 =
* Fix CSS for modals so close button visible
* Fix image aligment in sidebar widgets

= 6.2.0 =
* Add multiple api key selection for shortcode and block attribute for Professional Plan
* Add tooltip to blocks for more common attributes
* Add social share option for Professional Plan

= 6.1.1 =
* Regression: Fix calender using API call for Professional plan

= 6.1.0 =
* Additional options (free and paid) passed to calender for customisation
* Block Editor: Improve live preview with shortcode display

= 6.0.2 =
* Fix single event display not having correct event with eb_id

= 6.0.1 =
* Multiple API keys now supported
* New Plan pricing Professional replaces Gold
* Fix  widgets not registering correctly
* Fix Starter not showing correct calendar options
* Block Editor changes to show preview in admin
* Various fixes and improvements

= 5.1.7 =
* Fix register of Block for non Starter / Gold Plans

= 5.1.6 =
* Fix register of Elementor Widget for FSE themes

= 5.1.5 =
* Fix Elementor widget to allow free options when Starter / Gold

= 5.1.4 =
* Add filter for fullcalendar javascript

= 5.1.3 =
* Fix Gutenberg Block for Starter Plan Calendars

= 5.1.2 =
* Improve Widget Order with multiple shortcodes

= 5.1.1 =
* Fix missing variable for started events

= 5.1.0 =
* Add Gutenberg Block Editor support with live preview
* Add coming_soon_button, unavailable_button for CTA buttons
* Fix ticket dropdown labels
* Fix PHP 8.2 deprecation warnings
* Add ical download calendar for Google, Outlook, Yahoo calendars

= 5.0.3 =
* Fix Carousel

= 5.0.2 =
* Fix title format on free version

= 5.0.1 =
* Fix Gold Plan detection
* Allow ID and collection ID filter at same time

= 5.0.0 =
* Starter Plan introduces collection based filtering  ( Gold Plan now only available to existing customers )
