EventKoi Pro Changelog

May 24, 2026

1.3.12.1 – WordPress 7.0 compatibility

Compatibility

  • Tested against WordPress 7.0 — admin Settings, calendar, event editor and frontend all verified.

May 21, 2026

1.3.12.0 – Google-style week view, unified recurrence engine & dozens of fixes

New

  • Settings → Overview: toggle to disable the "See all events in this series" backlink injected on recurring instance pages.
  • REST API now supports custom orderby on /wp/v2/eventkoi_event: start_date, event_start, upcoming, past — for use in core Query Loop blocks and headless integrations.
  • Empty Trash button on the Events list.

Improvements

  • Week view: Google-style overlap cascade so stacked events stay readable instead of collapsing into "+more".
  • Week view: sticky event title on multi-day continuation bars (title visible on every visible day, not just the first).
  • Week view: compact Google-style time format ("9 AM" / "3pm" depending on the 12/24-hr toggle).
  • Week view: red "now" indicator line.
  • Week view: non-working days tinted using the working_days setting.
  • Month view: compact time prefix on dot-style events.
  • Event popover anchors at the click point instead of jumping.
  • Calendar + List blocks: "Select all calendars" is now honored in the editor preview (matches the frontend).
  • Calendar block editor preview lands on the current week when timeframe is set to "week".
  • Events admin: top toolbar layout (selected count left, pagination right) matches the footer.
  • Empty states for "Event not found" and "Event in Trash" — centered card with icon + CTA.
  • Sold-out ticket widget stays visible (with sold-out label) instead of disappearing once capacity is reached.
  • Event editor date and media UX hardened — end-time defaults, draft cleanup, structured-field guards.
  • Page builders: unified occurrence engine across Beaver Builder, Bricks, and Elementor — all read the same instance context for recurring events.
  • Tickets / Orders / Emails: instance-aware titles, itemized refunds, multi-seat expansion fixes.
  • RSVPs: standard events can now run in event-wide RSVP mode (vs. per-instance).
  • TEC importer: paragraphs preserved, address split into structured fields, organizer email/phone/website mapped, _EventCost mapped to ticket price, _EventURL imported as virtual location.
  • Upcoming Query Loop: cache-stampede single-flight, ranked dataset for predictable ordering.
  • Per-event ownership checks across admin endpoints + healer audit trail.
  • i18n: more admin strings wrapped in __() for Loco / translate.wp.org.

Fixes

  • Multi-day timed events: time now shows on every visible day instead of only the last; nested "+1 more" stops cascading.
  • iCal export: full RFC 5545 compliance — CRLF line endings, line folding, proper PRODID, RRULE syntax.
  • JSON-LD: recurring event endDate is now Google-compliant; each instance gets its own JSON-LD block.
  • iCal UIDs are stable across recurrences (previously regenerated, breaking subscriber dedup).
  • Recurrence cap enforced on UNTIL-style rules; recurring rule summary validated against the cap.
  • Stripe webhook + ticket checkout: TOCTOU race fixed (no more oversell under load).
  • WooCommerce: duplicate order suppression on retried payment posts.
  • Tickets: ticket-duplication and refund-state regressions resolved.
  • Capacity claim on RSVPs uses FOR UPDATE locking so two concurrent submitters don't both succeed against the last slot.
  • RSVP CSV export sanitises against Excel formula injection (=, +, -, @).
  • RSVP prefetch no longer leaks event meta into unauthenticated responses.
  • Calendar admin: archive-view event color leak fixed; static-singleton state resets between renders.
  • Editor block preview no longer renders the wrong week when timeframe is "week".
  • Site editor query loop no longer returns 400 on eventkoiSig.
  • "Publish stuck" — events that wouldn't progress past saving now publish reliably.
  • Bulk confirm dialogs surface backend errors instead of silently failing.
  • Sorting in admin tables is disabled when pagination is server-side, so sort no longer reorders just the current page.
  • QR-scanned check-ins guard against double-scan (replay).
  • RSVP phantom-instance gate: RSVPs no longer attach to non-existent instances.
  • "Invalid Date" guard in attendee TZ normalize.
  • API key dead-state regression fixed.
  • Lock leaks on WooCommerce checkout cleaned up.
  • Plugin .zip build now excludes .vite-hot and agent artifacts.

May 11, 2026

1.3.11.0 – User permissions & custom date/time formats

New

  • Settings → User permissions — grant non-admin WordPress roles access to specific EventKoi areas (events, calendars, attendees, orders, settings sub-tabs) without sharing the admin password. Admins always have full access; the panel is empty by default so existing behaviour is unchanged until you grant something.
  • Settings → Default settings → custom Date format and Time format inputs. Type a PHP date format string (e.g. Y-m-d, d-M-Y at H:i) to override WordPress Settings → General everywhere EventKoi renders dates (events list, single event, calendar/list blocks, RSVP and ticket emails, dynamic tags). Leave blank to keep using WordPress defaults.

Improvements

  • When a custom Time format is set, the 12/24-hour toggle is bypassed so the typed string wins as-is. With the field blank, the toggle keeps working exactly as before.
  • Calendar grid event tile labels now honour the 12/24-hour toggle (sites set to 24-hour see "13:00" instead of "1pm").

Fixes

  • Ticket check-in QR code from email now matches the code shown in the admin attendees list, and scans successfully for Stripe-native orders.
  • Recurring event series pages now honour the custom time format on every listed instance (previously some instances ignored it).
  • Resolves a WordPress 6.7 "Translation loading triggered too early" notice introduced by the permissions filter.

May 11, 2026

1.3.10.0 – RSVP windows, button states & block polish

New

  • RSVP availability window — set start and end dates for when RSVPs open and close on each event, with per-instance overrides on recurring events.
  • RSVP button now reflects three states — "RSVP" when open, "RSVP: Closed" when capacity is reached or the RSVP window has ended, and "Event ended" once the event itself is over.
  • "RSVP opens soon" label automatically appears within 24 hours of the configured open date.
  • "Select all calendars" toggle on the Calendar and List blocks — automatically include every calendar (including ones added later) without having to re-edit existing pages.
  • WooCommerce next-steps panel on Settings → Payments — quick links to set up payments and currency in WooCommerce when WC checkout is selected.
  • "Sold out" Get-tickets button label when the entire event's inventory is exhausted.
  • Pagination at the top of admin data tables for faster navigation.
  • Editor color picker upgrades, calendar dot indicators, text alignment and heading-level controls on event blocks.

Improvements

  • Localization coverage expanded across the admin React UI; POT regenerated and verification tests added.
  • "Allow RSVP edits" now defaults ON for new events. The default RSVP confirmation email link line auto-swaps between "View / manage your RSVP" and "View event page" based on the toggle (custom templates pass through unchanged).
  • Inline currency switcher beside Net earnings; counts and money totals decoupled from currency filter in stats.
  • Multi-currency stats now stack vertically and columns are reordered for readability.
  • Currency filter dropdown shrunk to a tiny pill in Ticket sales and per-event sales-history.
  • WooCommerce panel only renders when WooCommerce is installed and active.

Fixes

  • RSVP defaults (allow edits, show remaining) now reach the new-event template correctly.
  • TDZ ReferenceError that was hiding the entire RSVP widget on the frontend.
  • All ticket sales now visible in stats regardless of which provider (Stripe or WooCommerce) is currently active.
  • RSVPs stay attached to their event when an event's date changes.

May 3, 2026

1.3.9.9 – Translatable admin, calendar timezone fixes & editor polish

i18n

  • Full admin React UI is now translatable via Loco Translate or bundled JSON. Previously the admin stayed in English even when the site locale was set. POT regenerated with all new strings.

Fixes

  • Continuous standard events with specific times were being shown in the All-day lane in calendar Week view (and as full-width strips in Month view). They now render in their correct time slots.
  • Picking a start or end time could roll the date back a day when the browser timezone differed from the site timezone. Times now apply in the site timezone consistently.
  • Auto-filled end date inherits the picked start time, so users no longer hit "End date cannot be before the start date" the moment they add a non-midnight start time.
  • "Display timezone in event page" toggle is now respected on the frontend — when off, the timezone label no longer appears on the event page.
  • Completed events were leaking into the Upcoming Query Loop, and future events into the Past Query Loop.
  • WordPress was prepending http:// to [eventkoi … as=link] URLs, producing broken double-protocol links. Bogus prefix is stripped on render.
  • Standalone editor preview now resolves every event_* dynamic token (date, time, timezone, etc.) instead of showing {Field Name} placeholders.
  • Scalar custom fields (text, textarea, dropdown, radio, checkbox, url) auto-unwrap in the [eventkoi] shortcode by default, matching url-typed behavior.
  • Tickets "Change currency" link points to WooCommerce settings when WooCommerce is the checkout method, instead of EventKoi settings.
  • Stripe webhooks no longer accumulate as dead endpoints when the plugin is deactivated on staging — the webhook is disabled in Stripe on deactivation.
  • Live-mode Stripe keys can no longer be saved on staging environments (avoids accidental real charges).
  • QR check-in handler now redirects logged-out users to the login URL (HTML) and surfaces a "Log in" button in the JSON overlay; {qr_code} tag stripped from email templates in Lite where the feature is gated.
  • Editing a saved event no longer crashes due to a missing translation import in the description component.

Improvements

  • Page Numbers block "Number of links" (mid_size) attribute is now honored by EK Query Loop pagination on the frontend.

April 28, 2026

1.3.9.8 – Past events query, recurring date polish & ticket-delete safeguards

New

  • "Past events" query option in the Event Query Loop block, Elementor, Bricks, Beaver, and Divi loop surfaces — sort completed events with their most recent past occurrence (rolls backward as time passes, mirroring how Upcoming rolls forward).
  • Event Data block exposes the full set of canonical event tokens — separate event_date, event_time, event_date_year, event_date_month, event_date_day, event_date_iso, plus ticket-data tokens (capacity, sold, sold_out, low_stock, ticket_count, ticket_summary, sales_start/end), RSVP tokens, and ticket price + date format presets.
  • event_date and event_time dynamic tokens for Elementor, Divi, Beaver Builder and shortcode pickers.
  • License notice in admin when the Pro license isn't active, with a one-click jump from the plugins page to license settings.

Improvements

  • Recurring events in query loops now display the next upcoming occurrence (not the original series start). Past mode shows the latest past occurrence.
  • Recurring "ends on" defaults to one year from today, so newly created recurring events are bounded out of the box.
  • Event Query Loop grid is responsive on tablet and mobile breakpoints.
  • Calendar week view lands on the current week (not the start of the displayed month) when toggling from Month.
  • Ticket delete now requires confirmation and is only persisted when you click Save — refresh restores tickets you removed by mistake.
  • Drop the recurring rule summary from the ticket checkout modal — buyers see only what they're booking.
  • Stripe currency now auto-detects from the connected account; "Business name" only required in Live mode.
  • Test-mode Stripe link points to the Stripe Sandbox dashboard.
  • License persists across plugin uninstall + reinstall.
  • Ticket counts column reads "N ticket(s)" / "N RSVP(s)" with proper pluralization, and reflects gateway-completed orders only.
  • Admin pages share a unified 1280px content width.
  • Event Query Loop respects upstream render_block wrapper classes (Block Visibility extension etc.).

Fixes

  • Recurring "ends on" date is inclusive — the user-picked end date is now part of the series instead of being silently dropped.
  • Block Visibility extension is honored on Calendar, List, and event-data blocks.
  • Switching the WordPress timezone setting no longer crashes the site when gmt_offset returns an empty string.
  • Wrapper classes from render_block filters are preserved on Calendar and List blocks.
  • Per-instance override read paths are hardened against stdClass values returned by some import flows.
  • Event description list styling is preserved on the front end.

April 19, 2026

1.3.9.7 – Ticket Save Fixes & Loco Translate Compatibility

Fixes

  • Fixed ticket save on the event's Tickets tab. Tickets now persist when you click Save or when you switch to another tab — previously some edits could be lost on navigation.

Improvements

  • Tickets auto-save when you switch away from the Tickets tab, so edits are preserved even if you forget to click Save.
  • Translations saved to the plugin's own languages folder (Loco Translate's "Author" location) are now picked up automatically.

April 19, 2026

1.3.9.6 – Ampersand & Calendar Block Fixes

Fixes

  • Fixed ampersand (&) display in calendar names across the admin UI, multiselect dropdowns, builder module dropdowns (Divi, Elementor, Bricks, Beaver), and the frontend calendar archive page.
  • Fixed calendar block showing "Invalid calendar" when the default calendar option was missing or pointed to a deleted term. The block now resolves from its own attributes first, falls back to the default option, and finally to the first available calendar.

Improvements

  • Added self-healing for the default calendar option — if the stored value references a deleted or invalid term, it is automatically repointed to a real calendar on the next page load.
  • Empty-state calendar block now shows a friendlier message; admins also get a "Create a calendar" link.
  • Block editor no longer seeds the calendar block with an invalid default ID when the default option is missing.

April 18, 2026

1.3.9.5 – Divi Integration (Beta), Stripe Fixes & Polish

New

  • Added Divi Builder integration (Beta) — EventKoi Calendar, Event, and Loop modules, with occurrence-aware loop expansion and dynamic content tokens for event fields.
  • Added admin notification email templates for New RSVP and New ticket sale events.

Improvements

  • Added Stripe sync checkout confirmation fallback for environments where webhooks are not reachable (e.g. local development sites).
  • Admin notification emails now use the saved sender name and email from the Emails settings.
  • Backfilled the Site instance ID UUID automatically on version bump.
  • Restored the Site instance ID display on Settings > Integrations.
  • Tightened WordPress coding standards compliance and verified-build stability.

Fixes

  • Fixed Stripe account currency drift — checkout now uses the connected account's default currency instead of silently defaulting to USD.
  • Fixed admin sale notification not firing on Stripe checkout.
  • Prevented a fatal error in the admin sale notification pipeline.
  • Fixed theme CSS bleed into FullCalendar cells on Divi-like themes.
  • Fixed the WP-CLI eventkoi seed command's recurrence rule schema.
  • Fixed archive/unarchive actions for ticket sales on the global and per-event views.

April 12, 2026

1.3.9.4 – UI & Calendar Improvements

Improvements

  • Centralized confirmation dialogs with consistent centered modal design across all destructive actions.

Fixes

  • Bulk actions on the global ticket sales page now correctly show Archive/Unarchive instead of Duplicate/Move to trash.

April 11, 2026

1.3.9.3 – WooCommerce Gateway & Reporting Fixes

Improvements

  • Tickets are now issued as soon as a WooCommerce order moves to "processing", so every gateway (including Cash on Delivery and Bank Transfer) works out of the box.
  • Ticket refund emails now fire automatically when a WooCommerce order is partially or fully refunded, matching the Stripe flow.
  • Centralized the ticket sales query builder so the global Orders list, per-event Sales History, and stats endpoints always stay in lockstep on currency, gateway, and status filters.

Fixes

  • Orders with a partial refund now display the correct "Partially refunded" status on the Orders list and per-event sales history (previously showed "Pending payment").
  • Ticket sales totals, net earnings, and per-event stats no longer mix amounts from different WooCommerce currencies.
  • Pro now follows the active WooCommerce currency when the checkout method is WooCommerce, so stats stay consistent even when a stale currency was stored in plugin settings.
  • In-progress checkout holds are no longer counted toward sales stats.

April 11, 2026

1.3.9.1 – Direct Stripe & Ticketing Polish

New

  • Stripe now runs directly against your own Stripe account — no Supabase edge functions, no Connect OAuth. Enter your API keys in Settings → Payments and you're live.
  • Webhook handler creates orders, generates check-in codes, and sends confirmation emails locally, identical to the WooCommerce checkout flow.
  • Admin refunds now call the Stripe API directly and sync to the local orders database.

Improvements

  • Ticket refund emails fire automatically when a WooCommerce order is refunded.
  • Orders list and sales history CSV exports are now working.
  • WooCommerce order links in orders, attendees and sales history open in the same tab.
  • master_checkin_code is populated from WooCommerce order meta so check-in works consistently.
  • Attendees tab refreshes reliably after ticket status changes.
  • Billing information (name, email) is auto-filled for logged-in users during ticket checkout.
  • Clearer error messaging when WooCommerce is not installed.
  • Removed Beta badges from ticket-related UI.

Fixes

  • Fatal error in Orders::create_order caused by a stray Stripe class reference.
  • Stripe webhook now passes the correct checkout session ID into confirmation emails (activity note now shows on direct Stripe orders).
  • Order status filter tabs on the Tickets → Orders page now point at the correct base.
  • Event status dropdown is hidden on non-event admin pages.
  • React "Rules of Hooks" error on the Event Attendees tab.
  • Removed undefined isResendEmail reference in the Attendees component.
  • Hidden the attendees bulk-actions toolbar when no row-level actions are available.
  • REST API responses no longer break when third-party plugins emit PHP notices.
  • Stripe webhook secret handling for array-shaped values.
  • Wrong text domain in block descriptions.

April 10 2026

1.3.9.0 – Ticket Sales, Import Tools & More

New

  • Added ticket sales feature (Beta) — sell paid tickets for events via Stripe or WooCommerce checkout.
  • Added Payments settings page for Stripe Connect configuration and checkout method selection.
  • Added ticket management per event with pricing, capacity, and availability controls.
  • Added order management with real-time updates, status filtering, and CSV export.
  • Added sales history and attendee tracking per event.
  • Added customer list with order history across events.
  • Added event import from The Events Calendar (TEC) — full migration tool.
  • Added URL-based event import — import events by pasting a URL.
  • Added import tools to Events dropdown menu for easy access.

Improvements

  • Added Beta badges to ticket-related UI sections (Payments settings, Tickets event tab, attendance mode selector).
  • Admin dashboard performance optimizations.
  • Updated JSON-LD structured data output.
  • Accessibility improvements.
  • Improved payment method switch reliability by fixing race condition between checkout method and Stripe currency settings.

Fixes

  • Fixed REST API responses breaking when third-party plugins emit PHP notices.
  • Fixed Stripe webhook secret handling for array-shaped values.
  • Fixed wrong text domain in block descriptions.
  • Fixed Google Maps settings card and onboarding UI.
  • Fixed payment method switch reverting to WooCommerce due to concurrent settings POST race condition.
  • Fixed Stripe currency self-heal firing multiple times on component remount.

March 21 2026

1.3.2.0 – Page Builder Integrations, Accessibility & Performance

New

  • Added Elementor Pro Loop Grid integration with occurrence-aware query
    rewriting, custom controls (orderby mode, date range, include instances), and
    dynamic tag support for instance-specific dates, titles, and permalinks.
  • Added Bricks Builder query loop integration with the same occurrence
    expansion, pagination, and filtering capabilities as Beaver Builder and
    Elementor.
  • Added Event Instance Datetime Elementor dynamic tag that
    renders instance-specific start dates in loop templates.
  • Added rate limiter to QR check-in endpoint (20 requests/minute per IP) to
    prevent brute-force scanning.
  • Added per-event default template selector in Settings with support for block
    templates and Elementor templates.
  • Added performance test harness (tests/perf/) for benchmarking
    query and rendering operations.

Improvements

  • Improved RSVP capacity enforcement with database-level transaction locking
    to prevent race conditions under concurrent submissions.
  • Improved Beaver Builder loop pagination to correctly resolve
    paged/page query vars from the request instead of relying
    solely on builder-injected args.
  • Improved event template resolution so page builders (Elementor Theme
    Builder, Beaver Themer) only override the template when explicitly assigned in both
    the builder and EventKoi's template selector.
  • Improved frontend script loading to prevent duplicate
    wp_localize_script calls when multiple EventKoi blocks appear on the
    same page.
  • Improved admin page load performance by inlining the Supabase remote config
    into the page so the frontend no longer makes a separate network request on every
    admin page load.
  • Improved temporal event status filtering (live,
    upcoming, completed) to handle mutual exclusivity
    correctly when multiple temporal statuses are passed.

Accessibility

  • Added aria-hidden="true" to all decorative icons across admin
    components (filters, order headers, stats, instances table, dropzone, multiselect,
    date range, navigation).
  • Added aria-label to interactive controls: refund checkboxes,
    quantity inputs, working day toggles, edit buttons, multiselect remove buttons, and
    template editor links.
  • Added aria-pressed to working day toggle buttons and
    aria-current="page" to active side-tab navigation links.
  • Replaced non-interactive elements with proper <button>
    elements where click handlers were attached (event name edit, dropzone).
  • Added role="progressbar" with
    aria-valuenow/aria-valuemax to the RSVP capacity bar and
    role="alert" to error messages on the frontend.
  • Added keyboard support (Enter/Space) to dropzone
    and edit icon interactions.
  • Wrapped hardcoded admin UI strings in __() for
    internationalization (settings, stats, filters, date range, instances table).
  • Added sr-only labels for links that open in new tabs.

Fixes

  • Fixed Elementor Loop Grid date range filter, section labels, and display
    issues.
  • Fixed Beaver Builder loop link resolution for recurring event instances so
    instance-specific URLs are generated instead of parent series URLs.
  • Fixed occurrence status detection so live events are correctly counted as
    started occurrences.
  • Fixed date field clear interaction by replacing the external Clear button
    with an inline clear control inside the input.
  • Fixed stale integration tests that expected per-code row expansion instead
    of the current aggregated-order normalization format.

February 27 2026

1.3.1.2 – Calendar, Loop & Schema Bug Fixes

Fixes

  • Fixed structured data output for event locations to prevent empty/
    invalid Location fields in Event schema.
  • Fixed schema handling for physical, virtual, and mixed event locations
    so JSON-LD location data is generated correctly.
  • Fixed EventKoi list display edge case where small per_page</ code> + max_results values could return no results when sorting
    by upcoming events.
  • Fixed recurring-event link resolution in Beaver loop contexts so
    instance links resolve correctly instead of pointing to the parent series
    URL.
  • Fixed Beaver editor preview issue where EventKoi list output
    could appear empty in builder preview.
  • Fixed recurring weekday/day alignment and related timezone drift
    issues across event edit, instances, and calendar views.
  • Fixed date range filtering inconsistencies affecting event/instance
    results.
  • Fixed event list date/time display inconsistencies in admin table
    views.
  • Fixed location consistency issues so updated event locations are
    reflected reliably across EventKoi views.
  • Fixed multiple UI layering and overflow issues in calendar popovers
    and compact/responsive layouts.

February 19 2026

1.3.1.1 – Activation Safety & Stability

Improvements

  • Improved plugin activation flow to initialize EventKoi schema directly
    and more predictably.
  • Improved database recovery on activation by ensuring missing core
    EventKoi tables are recreated reliably.
  • Improved overall reliability of activation and update lifecycle
    behavior.

Fixes

  • Fixed activation-time compatibility issue that could cause conflicts
    with other active plugins.
  • Fixed duplicate initialization behavior during activation that could
    trigger fatal errors in some environments.
  • Fixed missing table recreation edge cases for core ticketing and order
    data after reactivation.

February 15 2026

1.3.1.0 – Beaver Builder Integration & Stability

New

  • Added Beaver Builder integration for EventKoi templates.
  • Added EventKoi Beaver modules (Event module and Calendar module).
  • Added EventKoi dynamic tags support for Beaver Builder content.
  • Added support for using Beaver templates from EventKoi template settings
    (global and per-event).

Improvements

  • Improved template rendering compatibility across Beaver Theme and block
    themes.
  • Improved token replacement behavior in Beaver module/template output.</ li>
  • Improved timezone/calendar handling consistency across views and local-
    time scenarios.
  • Improved admin settings/navigation cleanup and UX consistency.

Fixes

  • Fixed Beaver Event module context resolution when “Use current event
    context” is selected.
  • Fixed calendar week/day header and local timezone shift issues in
    specific views.
  • Fixed RSVP/check-in status/count edge-case inconsistencies.
  • Fixed email/template token rendering and formatting regressions.
  • Fixed multiple template fallback/selection issues with custom
    builders.

January 29 2026

1.3.0.0 – RSVP & Check-in

New

  • Added RSVP management with attendee statuses, counts, and RSVP
    finder.
  • Added attendee check-in flow with QR codes and QR check-in UI.
  • Added RSVP email notifications, resends, and email editor.
  • Added CSV export for RSVP data.

Improvements

  • Improved date/time handling and timezone display.

Fixes

  • Fixed issue with some custom fields were not displaying.
  • Fixed default/global event template applied to new events.
  • Fixed slugs and permalink-related issues.

January 13 2026

1.2.0.0 – Custom fields & Integrations

New

  • Added Custom Fields with field groups, global fields, and event-level
    field editing.
  • Added builder integrations: Elementor widgets/dynamic tags and Bricks
    elements/query loop.

Improvements

  • Added default event template setting and template editor shortcut.
  • Added timezone settings and local-time display support across admin and
    frontend.
  • Improved dashboard event thumbnails and admin UI layout.

Fixes

  • Fixed onboarding wizard navigation step handling.
  • Fixed demo event image handling in onboarding.
  • Fixed admin table rendering issues.

January 1 2026

1.1.0.2 – Calendar timezone fix

Fixes

  • Fixed calendar day headers shifting when the server timezone differs
    from the WordPress timezone.

December 23 2025

1.1.0.1 – Style fixes

Fixes

  • Fixed image styling in the Event Query Loop block.
  • Fixed Event Data block styling.

December 16 2025

1.1.0.0 – Elementor Widgets & Onboarding

New Changes

  • Added Elementor Event Data widget to place event details anywhere.
  • Added Elementor Event Calendar widget to embed calendars visually.
  • Added event data support in Elementor dynamic tags for flexible
    templating.
  • Introduced a quick start plugin tour plus onboarding hints to guide
    first-time setup.

Improvements

  • Added missing translation strings and refreshed the POT file.

Fixes

  • Event counts now update correctly in the Events list.
  • `eventkoi` shortcode now displays the event image reliably.
  • Fixed missing JS imports.

December 4 2025

1.0.0.1 – Fixed missing JS imports

Fixes

  • Fixed issue with missing i18n imports.

December 3 2025

1.0.0 – Event query loop block, event series page & more

New changes

  • Introduced the new Event Query Loop block with templating, layout controls, and live editor previews.
  • Added the new Event Series page/template with automatic instance listings and proper permalink routing.

Improvements

  • Improved recurring rule UI with corrected weekday alignment, more accurate date handling, and reduced off-by-one errors.
  • Enhanced Event Editor to always display dates in the WordPress timezone while saving clean UTC values internally.
  • Optimized calendar rendering and ensured consistent color propagation for per-calendar event colors.

Fixes

  • Fixed issue where recurring instances displayed on the wrong weekday in FullCalendar when using non-UTC timezones.
  • Fixed incorrect “Ends On” dates when selecting a date in the recurring editor.
  • Fixed recurring instances shifting by one hour or one day because of mixed UTC/Singapore conversions.

October 21 2025

0.9.7 – Week View Layout & Locale Handling Improvements

Improvements

  • Redesigned week view header to display weekday names and dates on separate lines for improved readability.
  • Improved locale detection and validation to ensure consistent weekday labels across languages.

Fixes

  • Fixed issue where month view displayed extra numbers beside month names.
  • Minor refinements to header rendering and date formatting for smoother cross-locale behavior.

October 20 2025

0.9.6 – Important bug fix

Fixes

  • Fixed issue with recurring instances not loading. (May require saving permalinks again)

October 19 2025

0.9.5 – Performance, Accessibility & Calendar Enhancements

Improvements

  • Optimized event query performance for faster calendar and dashboard loading.
  • Improved weekly view layout and navigation consistency in the calendar UI.
  • Enhanced accessibility in frontend event interfaces.
  • Refined date and timezone handling for more reliable multi-timezone scheduling.

Fixes

  • Fixed event "Add to calendar" and "Share" buttons.

October 9 2025

0.9.4 – Calendar View & Localization Fixes

Improvements

  • Enhanced localization support across admin and frontend interfaces.
  • Improved responsiveness and overall stability in calendar rendering.

Fixes

  • Resolved layout and navigation issues in the weekly calendar view.
  • Corrected locale handling and improved date/time formatting consistency.
  • Fixed recurring instances appearing blank when event time was unset or set as an all-day rule.

October 3 2025

0.9.3 – Accessibility, Security & Performance

New changes

  • Added accessibility improvements across calendar and admin interfaces.
  • Added option for setting the initial month/year in calendar view.

Improvements

  • Improved security by disabling direct file access for sensitive files.
  • Improved how styles are enqueued using WordPress standards instead of inline CSS.
  • Enhanced calendar performance for faster load times.
  • Improved calendar date selection navigation in the admin area.
  • Added responsive/mobile support for the calendar view.

Fixes

  • Fixed calendar search box functionality.
  • Fixed recurring rule summary display.
  • Fixed date and time display issues in the admin.
  • Fixed theme conflict issues affecting calendar output.
  • Fixed mobile/responsive display issues.

September 8 2025

0.9.2 – Calendar & Admin Improvements

New changes

  • Introduced time format picker (12/24 hour).
  • Added links to the “Account” page in plugin admin/dashboard.

Improvements

  • Enhanced search event feature in calendar view.
  • Added navigation support to the search event feature in calendar view.
  • Improved timezone picker/switcher for better usability.

Fixes

  • Fixed date range filter in backend.
  • Fixed calendar blocks.

August 28 2025

0.9.1 – Admin & Calendar Fixes

Fixes

  • Fixed CSS conflict with WordPress admin styles.
  • Fixed CSS issues affecting the plugin UI in the admin area.
  • Fixed “Add to Calendar” feature to ensure proper functionality.

July 25 2025

0.9.0 – First Pro release

Release notes

  • Initial release of EventKoi Pro plugin.