v2.2.0
New Features
- Accept a top-level
slugon event create and update requests, sanitized and stored as the WordPresspost_name, so callers (including MCP clients) can set an event's URL slug instead of always deriving it from the title. Omittingslugkeeps the existing behavior. (Fixes #4.)
Improvements
- Restricted the public MCP schema manifest so the granular capability matrix (
custom_event_api_capabilities) and per-capability RSVP flags (rsvp_attendees_enabled,rsvp_counts_enabled) are returned only to authenticated administrators; anonymous callers receive the coarse availability booleans only. - Capped the events
slugfilter at 100 values and appliedsanitize_titleconsistently across the string and array forms to keep thepost_name__inquery bounded. - Moved the settings-page styles and scripts into enqueued asset files (
assets/css/admin-settings.css,assets/js/admin-settings.js) so they are cacheable and no longer emitted inline on every settings render. - Restructured the plugin internals into focused, single-responsibility modules: the monolithic REST handler, MCP manifest, and core bootstrap files were split into smaller
includes/modules, with shared helpers replacing duplicated logic. No change to API behavior. - Added a dependency-free PHP unit test suite (
npm run test:unit) and a CI workflow that lints every source file and runs the suite, covering the helpers, slug filter, validation, MCP visibility gate, capability map, and RSVP list logic.
Bug Fixes
- Removed the orphaned RSVP delta-sync post meta (
_eventon_apify_updated_at_gmt) during plugin uninstall.
Full Changelog: v2.1.1...v2.2.0