Skip to content

v3.2.1

Choose a tag to compare

@github-actions github-actions released this 30 Jul 07:50
· 19 commits to main since this release
fa46f6e

New Features

  • None.

Improvements

  • The default events list orders by start timestamp through a single LEFT JOIN instead of an EXISTS/NOT EXISTS meta query, which forced two joins plus a filesort on every list request and could inflate total when duplicate meta rows existed.
  • Date-filtered listings fetch candidate IDs only and read the three occurrence meta keys in one query, instead of priming roughly 90 meta rows per candidate event that the occurrence scan then discards. Caches are primed only for the page actually serialized.
  • flags.all_day is declared in the MCP contract, so the manifest and generated schemas stay in sync with the read payload.
  • Internal cleanup with no behavior change: a shared instant-to-wall-clock converter replaces three hand-rolled copies, the accepted post statuses come from one allow-list rather than four, interaction modes derive from a single map, and two dead functions were removed.

Bug Fixes

  • Fix EventON term meta still losing legitimately falsy values such as a latitude of 0. The 3.2.0 fix checked whether the incoming request carried a falsy value, but EventON's evo_save_term_metas() runs array_filter() over the merged result and so destroys values that are already stored: writing lat: 0 succeeded, then any later partial update without a falsy value routed back through EventON and deleted it. All writes now merge through this plugin's own path, which clears only on an empty string.
  • Fix a read-modify-write client still corrupting the times of dl/ml/yl events. Reads exposed EventON's boundary-extended timestamps as the writable start_date/start_time/start_at, so a client that read an event, changed an unrelated field, and wrote the body back sent 00:00/23:59 and overwrote the real times. The 3.2.0 guard only covered requests that omitted date fields entirely. Those writable fields now derive from the event's base wall clock (evcal_srow/evcal_erow), and the extended values remain available through the read-only event_start_timestamp/event_end_timestamp, making a read-modify-write round trip lossless.
  • Fix flags.all_day writing EventON's legacy evcal_allday meta, which EventON core reads but never writes. All-day in EventON is time_extend_type of dl, the setting that snaps the extended timestamps to 00:00/23:59, so a written all_day produced an event that displayed as all-day without extended timestamps, and setting time_extend_type produced the inverse. flags.all_day is now read-only and derived from time_extend_type, falling back to the legacy meta for imported events. Set time_extend_type to dl to make an event all-day.
  • Fix a test double for maybe_unserialize() that returned its input unchanged, which silently weakened a repeat-occurrence assertion. WordPress core test doubles now live in one place and behave like core.

Full Changelog: v3.2.0...v3.2.1