Changelog
This file records notable changes in the ExtraChill API plugin.
[0.11.2] – 2026-03-05
Changed
- Wrap QR route around extrachill/generate-qr-code ability so endpoint is a thin API surface.
[0.11.1] – 2026-03-04
Fixed
- Rebuild release package so Composer vendor dependencies ship in deploy artifacts (Endroid QR code support).
[0.11.0] – 2026-03-02
Added
- Add 6 events wrapper endpoints for DM abilities (calendar, filters, venues, venue detail, duplicate check, geocode)
[0.10.13] – 2026-03-01
Changed
- Remove obsolete admin REST routes for 404 logger, tag migration, and forum topic migration
Fixed
- Fix share click tracking: migrate from broken ec_track_event() to Abilities API
[0.10.11] – 2026-02-12
Fixed
- Fix profile URLs: rename ec_get_user_profile_url to extrachill_get_user_profile_url
[0.10.10] – 2026-01-28
Fixed
- Fix taxonomy counts to use direct WP_Query for reliability
[0.10.9] – 2026-01-28
Changed
- Remove hardcoded blog ID fallback in shipping labels endpoint
- Add community taxonomy counts endpoint for cross-site linking
- added text domain
- Version bump to 0.10.8 – Dependency updates and route improvements
- Bump version to 0.9.2 – New auth, shop, and SEO endpoints
- Bump version to 0.9.1 – Activity taxonomy badge color fix
- Bump version to 0.9.0 – SEO audit endpoints
- Bump version to 0.8.6 – Documentation cleanup and activity emitters refactor
- Bump version to 0.8.5 – Festival wire migration tool cleanup
- Bump version to 0.8.4 – Festival wire inline upload migration
- Bump version to 0.8.3 – Festival wire migration and taxonomy sync tools
- Bump version to 0.8.2 – Browser handoff authentication endpoint
- Bump version to 0.8.1 – Enhanced auth/me endpoint with user context data
- Bump version to 0.8.0 – Shop shipping management and Turnstile enhancements
- Bump version to 0.7.2 – Activity enhancements for events and bbPress replies
- Bump version to 0.7.1 – Documentation reorganization and auth parameter enhancement
- Bump version to 0.7.0 – Activity enhancements, Google OAuth, and onboarding system
- Bump version to 0.6.5 – Artist access management API
- Bump version to 0.6.4 – Activity data display fixes
- Bump version to 0.6.3 – Activity system fixes
- Bump version to 0.6.2 – Auth endpoints, catalog cleanup
- Bump version to 0.6.1 – Shop enhancements, new endpoints, and prefix updates
- Bump version to 0.6.0 – Refactor artist endpoints to /artists/{id}/ API structure
- Bump version to 0.5.2 – Remove incorrect WooCommerce hack and orders endpoint
- Bump version to 0.5.1 – Users leaderboard endpoint and WooCommerce utility
- Bump version to 0.5.0 – Authentication system, Stripe webhooks, and stream status
- Bump version to 0.4.0 – Activity system, community drafts, and newsletter campaigns
- Bump version to 0.3.1 – Add contact form submission endpoint
- Bump version to 0.3.0 – Blocks to Blog refactoring and new shop APIs
- Bump version to 0.2.8 – Dynamic blog ID handling and new orders API
- Bump version to 0.2.7 – Remove excerpt support from docs sync
- Bump version to 0.2.6 – Internal link resolution for documentation
- Bump version to 0.2.5 – Pages collection and header ID fixes
- Bump version to 0.2.4 – Dynamic blog IDs and enhanced link tracking
- Bump version to 0.2.3 – Bug fixes and docs info enhancement
- Bump version to 0.2.2 – Documentation reorganization and enhancement
- Bump version to 0.2.1 – Add artist creation and roster management
- Bump version to 0.2.0 – Add documentation sync and ID generation
- Bump version to 0.1.9 – Add user management and admin APIs
- Bump version to 0.1.8 – Reorganize block endpoints under /blocks/ namespace and enhance link page tracking
- Bump version to 0.1.7 – Add Stripe Connect endpoints and comprehensive route documentation
- Bump version to 0.1.6 – Add artist analytics and shop products endpoints
- Bump version to 0.1.5 – Add Artist API and unified media endpoints
- Bump version to 0.1.4 – Add artist roster, chat, and analytics endpoints
- Bump version to 0.1.3 – Add analytics and artist subscription endpoints
- Add analytics link-click tracking and artist subscribe endpoints
- Bump version to 0.1.2 – Add QR code generator, analytics, community features, and enhanced event submissions
- Bump version to 0.1.1
- Initial commit: Scaffold ExtraChill API infrastructure
Fixed
- Fix activity data display – decode HTML entities in titles and excerpts
[0.10.7] – 2026-01-08
Changed
- Analytics Events + Summary Endpoints: Updated
inc/routes/analytics/events.phpto use the renamed analytics-provider functions.- Requires
extrachill_get_analytics_events()instead ofec_get_events(). - Uses
extrachill_count_analytics_events()when available for pagination totals. - Requires
extrachill_get_analytics_event_stats()instead ofec_get_event_stats().
- Requires
[0.10.6] – 2026-01-07
Added
- Requires
extrachill_get_analytics_events()instead ofec_get_events(). - Uses
extrachill_count_analytics_events()when available for pagination totals. - Requires
extrachill_get_analytics_event_stats()instead ofec_get_event_stats().
Changed
- Requires
extrachill_get_analytics_events()instead ofec_get_events(). - Uses
extrachill_count_analytics_events()when available for pagination totals. - Requires
extrachill_get_analytics_event_stats()instead ofec_get_event_stats().
[0.10.5] – 2026-01-07
Changed
- SEO Config Endpoint: Added
inc/routes/seo/config.phpto expose network-level SEO settings via REST.GET /wp-json/extrachill/v1/seo/configreturnsdefault_og_image_id,default_og_image_url, andindexnow_key.PUT /wp-json/extrachill/v1/seo/configupdatesdefault_og_image_idand/orindexnow_key(both optional).- Permission enforced via
manage_network_options.
[0.10.4] – 2026-01-06
Added
GET /wp-json/extrachill/v1/seo/configreturnsdefault_og_image_id,default_og_image_url, andindexnow_key.PUT /wp-json/extrachill/v1/seo/configupdatesdefault_og_image_idand/orindexnow_key(both optional).- Permission enforced via
manage_network_options.
Changed
GET /wp-json/extrachill/v1/seo/configreturnsdefault_og_image_id,default_og_image_url, andindexnow_key.PUT /wp-json/extrachill/v1/seo/configupdatesdefault_og_image_idand/orindexnow_key(both optional).- Permission enforced via
manage_network_options.
[0.10.3] – 2026-01-05
Added
- Analytics Meta Endpoint: Updated
inc/routes/analytics/meta.phpto avoid placeholder blog names.- Replaced
"Blog {id}"fallback with the actual multisiteblognameviaget_blog_option( $blog_id, 'blogname' ).
- Replaced
Changed
- Replaced
"Blog {id}"fallback with the actual multisiteblognameviaget_blog_option( $blog_id, 'blogname' ).
[0.10.2] – 2026-01-05
Added
- Replaced
"Blog {id}"fallback with the actual multisiteblognameviaget_blog_option( $blog_id, 'blogname' ).
Changed
- Admin Forum Topic Moves (bbPress Independence): Updated
inc/routes/admin/forum-topics.phpto update_bbp_topic_count,_bbp_reply_count, and_bbp_last_active_timeusing directWP_Query/get_posts()logic rather than relying on bbPress helper functions. - Newsletter Admin Mode Permission: Updated
inc/routes/newsletter/subscription.php(registersPOST /newsletter/subscribe) admin-mode permission check to allow either multisiteis_super_admin()or single-sitemanage_options.
[0.10.1] – 2026-01-05
Added
- Analytics Meta Endpoint: Added an admin-only metadata endpoint used to populate analytics filters.
GET /wp-json/extrachill/v1/analytics/meta
Changed
GET /wp-json/extrachill/v1/analytics/meta
[0.10.0] – 2026-01-04
Added
GET /wp-json/extrachill/v1/analytics/meta
Changed
- Newsletter Subscription Contract: Updated the subscription endpoint to support bulk subscription and admin-driven list targeting.
POST /wp-json/extrachill/v1/newsletter/subscribenow accepts anemailsarray (each entry supportsemailand optionalname).- Supports
list_idadmin mode (requiresmanage_options) andcontextpublic mode. - Response now includes
subscribed,already_subscribed,failed, anderrorscounts for batch processing.
- Analytics Events Pagination: Enhanced events listing to support search and pagination totals.
GET /wp-json/extrachill/v1/analytics/eventsnow supportssearch.- Response now includes
total(usesextrachill_count_analytics_events()when available).
[0.9.5] – 2026-01-04
Added
POST /wp-json/extrachill/v1/newsletter/subscribenow accepts anemailsarray (each entry supportsemailand optionalname).- Supports
list_idadmin mode (requiresmanage_options) andcontextpublic mode. - Response now includes
subscribed,already_subscribed,failed, anderrorscounts for batch processing.
Changed
GET /wp-json/extrachill/v1/analytics/eventsnow supportssearch.- Response now includes
total(usesextrachill_count_analytics_events()when available).
[0.9.4] – 2026-01-02
Changed
POST /wp-json/extrachill/v1/newsletter/subscribenow accepts anemailsarray (each entry supportsemailand optionalname).- Supports
list_idadmin mode (requiresmanage_options) andcontextpublic mode. - Response now includes
subscribed,already_subscribed,failed, anderrorscounts for batch processing.
0.9.3
Added
GET /wp-json/extrachill/v1/analytics/eventsnow supportssearch.- Response now includes
total(usesextrachill_count_analytics_events()when available).
Improved
- Unified Click Tracking: Consolidated multiple individual tracking routes into a single high-performance endpoint:
POST /wp-json/extrachill/v1/analytics/click– Now handlesshareclicks andlink_page_linkclicks via a unifiedclick_typeparameter.- Improved URL normalization for all tracked clicks, stripping Google Analytics query parameters while preserving affiliate tags.
- Centralized error handling for missing tracking functions or invalid destinations.
Technical Notes
POST /wp-json/extrachill/v1/analytics/click– Now handlesshareclicks andlink_page_linkclicks via a unifiedclick_typeparameter.- Improved URL normalization for all tracked clicks, stripping Google Analytics query parameters while preserving affiliate tags.
- Centralized error handling for missing tracking functions or invalid destinations.
0.9.2
Added
POST /wp-json/extrachill/v1/analytics/click– Now handlesshareclicks andlink_page_linkclicks via a unifiedclick_typeparameter.- Improved URL normalization for all tracked clicks, stripping Google Analytics query parameters while preserving affiliate tags.
- Centralized error handling for missing tracking functions or invalid destinations.
Improved
- Analytics Refactor:
- Removed deprecated
link-click.phpandshare.phproute files. - Updated
README.mdandCLAUDE.mdto reflect the streamlined 3-endpoint analytics architecture.
- Removed deprecated
- Documentation Alignment:
- Updated artist analytics documentation to reference the new unified
clickendpoint. - Refined shop documentation to include error response structures for the "Ships Free" label bypass logic.
- Updated artist analytics documentation to reference the new unified
Technical Notes
- Removed deprecated
link-click.phpandshare.phproute files. - Updated
README.mdandCLAUDE.mdto reflect the streamlined 3-endpoint analytics architecture.
0.9.1
Fixed
- Updated artist analytics documentation to reference the new unified
clickendpoint. - Refined shop documentation to include error response structures for the "Ships Free" label bypass logic.
Technical Notes
- Removed deprecated
link-click.phpandshare.phproute files. - Updated
README.mdandCLAUDE.mdto reflect the streamlined 3-endpoint analytics architecture.
0.9.0
Added
- Updated artist analytics documentation to reference the new unified
clickendpoint. - Refined shop documentation to include error response structures for the "Ships Free" label bypass logic.
Technical Notes
- Cross-Site Taxonomy Counts: New endpoints for retrieving post and product counts across the multisite network:
GET /wp-json/extrachill/v1/blog/taxonomy-counts– Blog post counts by artist, venue, location, etc.GET /wp-json/extrachill/v1/events/upcoming-counts– Upcoming event counts by venue, location, artist, or festival.GET /wp-json/extrachill/v1/shop/taxonomy-counts– Product counts by artist.GET /wp-json/extrachill/v1/wire/taxonomy-counts– Wire post counts by taxonomy.
- Shop Enhancements:
- Added
ships_freeboolean field to product CRUD and responses. - Added
ships_free_onlyflag to artist order responses. - Implemented automatic blockage of shipping label purchases for orders containing only free-shipping items.
- Added
0.8.6
Changed
GET /wp-json/extrachill/v1/blog/taxonomy-counts– Blog post counts by artist, venue, location, etc.GET /wp-json/extrachill/v1/events/upcoming-counts– Upcoming event counts by venue, location, artist, or festival.GET /wp-json/extrachill/v1/shop/taxonomy-counts– Product counts by artist.GET /wp-json/extrachill/v1/wire/taxonomy-counts– Wire post counts by taxonomy.
Technical Notes
- Added
ships_freeboolean field to product CRUD and responses. - Added
ships_free_onlyflag to artist order responses. - Implemented automatic blockage of shipping label purchases for orders containing only free-shipping items.
0.8.5
Removed
GET /wp-json/extrachill/v1/blog/taxonomy-counts– Blog post counts by artist, venue, location, etc.GET /wp-json/extrachill/v1/events/upcoming-counts– Upcoming event counts by venue, location, artist, or festival.GET /wp-json/extrachill/v1/shop/taxonomy-counts– Product counts by artist.GET /wp-json/extrachill/v1/wire/taxonomy-counts– Wire post counts by taxonomy.
Technical Notes
- Added
ships_freeboolean field to product CRUD and responses. - Added
ships_free_onlyflag to artist order responses. - Implemented automatic blockage of shipping label purchases for orders containing only free-shipping items.
0.8.4
Enhanced
- Documentation: Updated CLAUDE.md and README.md with new taxonomy count endpoints and reorganized feature categories.
Technical Notes
- SEO Audit Details Endpoint: New
GET /wp-json/extrachill/v1/seo/audit/detailsendpoint for retrieving paginated audit results by category (missing excerpts, alt text, broken links, etc.). Supports CSV export viaexport=trueparameter. - Admin Management Expansion:
GET /wp-json/extrachill/v1/admin/forum-topics– List and manage bbPress topics across network.GET /wp-json/extrachill/v1/admin/404-logger– Monitor 404 errors for SEO management.GET /wp-json/extrachill/v1/admin/artist-relationships– Manage user-artist links.
- Tools Expansion:
GET /wp-json/extrachill/v1/tools/markdown-export– Export posts, topics, and events as markdown for AI context or archiving.
0.8.3
Added
GET /wp-json/extrachill/v1/admin/forum-topics– List and manage bbPress topics across network.GET /wp-json/extrachill/v1/admin/404-logger– Monitor 404 errors for SEO management.GET /wp-json/extrachill/v1/admin/artist-relationships– Manage user-artist links.
Enhanced
GET /wp-json/extrachill/v1/tools/markdown-export– Export posts, topics, and events as markdown for AI context or archiving.
Technical Notes
GET /wp-json/extrachill/v1/admin/forum-topics– List and manage bbPress topics across network.GET /wp-json/extrachill/v1/admin/404-logger– Monitor 404 errors for SEO management.GET /wp-json/extrachill/v1/admin/artist-relationships– Manage user-artist links.
0.8.2
Added
GET /wp-json/extrachill/v1/tools/markdown-export– Export posts, topics, and events as markdown for AI context or archiving.
Technical Notes
- Endpoint Count: Total endpoint files increased to 66 across 18 feature categories.
- Documentation: Updated README.md with comprehensive list of current endpoints and feature categories.
0.8.1
Added
- Admin Data Listing Endpoints: New
GETroutes for administrative data management:GET /wp-json/extrachill/v1/admin/team-members– List network team members with pagination and searchGET /wp-json/extrachill/v1/admin/artist-access– List pending/processed artist access requestsGET /wp-json/extrachill/v1/admin/lifetime-membership– List users with active lifetime membershipsGET /wp-json/extrachill/v1/admin/forum-topics– List and manage bbPress topics across networkGET /wp-json/extrachill/v1/admin/tags– Manage and migrate tags network-wide
- Analytics Expansion: New tracking endpoints for enhanced platform insights:
POST /wp-json/extrachill/v1/analytics/click– Unified click tracking (share,link_page_link)
- Utility Routes:
GET /wp-json/extrachill/v1/admin/404-logger– Log and monitor 404 errors for SEO managementGET /wp-json/extrachill/v1/admin/artist-relationships– Inspect and manage user-artist links
- Standardized Pagination: Admin list endpoints now consistently support
per_pageandpageparameters withX-WP-TotalandX-WP-TotalPagesheaders.
Technical Notes
GET /wp-json/extrachill/v1/admin/team-members– List network team members with pagination and searchGET /wp-json/extrachill/v1/admin/artist-access– List pending/processed artist access requestsGET /wp-json/extrachill/v1/admin/lifetime-membership– List users with active lifetime membershipsGET /wp-json/extrachill/v1/admin/forum-topics– List and manage bbPress topics across networkGET /wp-json/extrachill/v1/admin/tags– Manage and migrate tags network-wide
0.8.0
Added
POST /wp-json/extrachill/v1/analytics/click– Unified click tracking (share,link_page_link)
Changed
GET /wp-json/extrachill/v1/admin/404-logger– Log and monitor 404 errors for SEO managementGET /wp-json/extrachill/v1/admin/artist-relationships– Inspect and manage user-artist links
Technical Notes
GET /wp-json/extrachill/v1/admin/team-members– List network team members with pagination and searchGET /wp-json/extrachill/v1/admin/artist-access– List pending/processed artist access requestsGET /wp-json/extrachill/v1/admin/lifetime-membership– List users with active lifetime membershipsGET /wp-json/extrachill/v1/admin/forum-topics– List and manage bbPress topics across networkGET /wp-json/extrachill/v1/admin/tags– Manage and migrate tags network-wide
0.7.2
Added
POST /wp-json/extrachill/v1/analytics/click– Unified click tracking (share,link_page_link)
Technical Notes
GET /wp-json/extrachill/v1/admin/404-logger– Log and monitor 404 errors for SEO managementGET /wp-json/extrachill/v1/admin/artist-relationships– Inspect and manage user-artist links
0.7.1
Changed
- Membership Refactor: Standardized "Ad-Free License" terminology to "Lifetime Membership" throughout the codebase and documentation.
- User Search Enhancements:
- Added
artist-capablecontext for finding users eligible for artist profile management. - Added
exclude_artist_idsupport to prevent duplicates in roster management.
- Added
- Endpoint Count: Total endpoints increased to 68 across all feature categories.
- Documentation: Updated CLAUDE.md and README.md to reflect the new administrative and analytics infrastructure.
Removed
- Added
artist-capablecontext for finding users eligible for artist profile management. - Added
exclude_artist_idsupport to prevent duplicates in roster management.
Added
- Added
artist-capablecontext for finding users eligible for artist profile management. - Added
exclude_artist_idsupport to prevent duplicates in roster management.
Technical Notes
- Admin Data Listing Endpoints: Initial implementation of administrative data management routes.
- Standardized Pagination: New admin list endpoints support standard
per_pageandpageparameters.
0.7.0
Added
- Endpoint Count: Total endpoints increased to 63 across all categories.
Changed
- Standardized Site Counts: Updated network documentation to reflect 11 active sites (IDs 1-5, 7-12) across all documentation files.
- Blog ID Abstraction: Replaced remaining hardcoded blog ID references in documentation with the mandatory
ec_get_blog_id()pattern.
Technical Notes
- Markdown Export Endpoint: New
GET /wp-json/extrachill/v1/tools/markdown-exportfor exporting content as markdown- Supports standard posts, bbPress topics (with replies), and events
- Useful for content sharing and AI agent context feeding
- Requires
league/html-to-markdowndependency
0.6.5
Added
- Supports standard posts, bbPress topics (with replies), and events
- Useful for content sharing and AI agent context feeding
- Requires
league/html-to-markdowndependency
Changed
- Supports standard posts, bbPress topics (with replies), and events
- Useful for content sharing and AI agent context feeding
- Requires
league/html-to-markdowndependency
Technical Notes
- Artist Profile Security: Added trim and empty check validation for artist names in
POST /artists/{id}handler - Multisite Reliability: Replaced hardcoded blog ID fallbacks with direct
ec_get_blog_id()calls in shop shipping routes for more robust site resolution
0.6.4
Fixed
- Dependencies: Added
league/html-to-markdown: ^5.1for markdown conversion - Auth Documentation: Standardized authentication terminology across route documentation
- Changes are additive with no breaking modifications to existing data contracts
Technical Notes
- Browser Handoff Authentication: New
POST /wp-json/extrachill/v1/auth/browser-handofffor cross-platform authentication flows - Taxonomy Synchronization: Added
POST /wp-json/extrachill/v1/admin/taxonomies/syncfor network-wide taxonomy term management - Shop Shipping Management: Comprehensive fulfillment tools for artist managers
GET/PUT /wp-json/extrachill/v1/shop/shipping-address– Artist return address configurationGET/POST /wp-json/extrachill/v1/shop/shipping-labels– Shippo-powered label purchase and tracking
- SEO Audit System: Complete multisite auditing endpoints under
/seo/audit/namespace - Comprehensive Documentation: Added detailed markdown documentation for all new endpoints in
docs/routes/
0.6.3
Fixed
GET/PUT /wp-json/extrachill/v1/shop/shipping-address– Artist return address configurationGET/POST /wp-json/extrachill/v1/shop/shipping-labels– Shippo-powered label purchase and tracking
Technical Notes
GET/PUT /wp-json/extrachill/v1/shop/shipping-address– Artist return address configurationGET/POST /wp-json/extrachill/v1/shop/shipping-labels– Shippo-powered label purchase and tracking
0.6.2
Added
- Artist Data Validation: Added strict name length validation and trimming in
POST /artists/{id}handler - Blog Resolution: Removed redundant checks and hardcoded fallbacks in shipping routes for more reliable blog context switching
- Documentation Alignment: Updated README.md and CLAUDE.md with new endpoint categories and directory structure
Removed
- Changes are additive or corrective with no breaking modifications to existing data contracts
- Dependencies: New features integrate with
extrachill-users,extrachill-shop, andextrachill-seoplugins
Technical Notes
- Activity Taxonomy Badge Color Extraction: Fixed regex pattern in
extrachill_api_activity_get_taxonomy_badge_color_map()to avoid matching "background-color" properties by using negative lookbehind(?<!background-)colors*:s*([^;]+);i
0.6.1
Changed
- Backward Compatibility: All changes are fixes with no breaking modifications
- Activity System: Improved accuracy of taxonomy badge color extraction for activity cards
Added
- SEO Audit Endpoints: Complete multisite SEO auditing system under
/seo/audit/namespacePOST /wp-json/extrachill/v1/seo/audit– Start new SEO audit in full or batch modePOST /wp-json/extrachill/v1/seo/audit/continue– Continue batch audit processingGET /wp-json/extrachill/v1/seo/audit/status– Get current audit progress and results- Tracks missing excerpts, alt text, featured images, broken images, and broken internal/external links
- Batch processing for large networks with progress tracking
- Super admin permissions required (
manage_network_options) - Integrates with
extrachill-seoplugin for audit functionality
Technical Notes
POST /wp-json/extrachill/v1/seo/audit– Start new SEO audit in full or batch modePOST /wp-json/extrachill/v1/seo/audit/continue– Continue batch audit processingGET /wp-json/extrachill/v1/seo/audit/status– Get current audit progress and results- Tracks missing excerpts, alt text, featured images, broken images, and broken internal/external links
- Batch processing for large networks with progress tracking
- Super admin permissions required (
manage_network_options) - Integrates with
extrachill-seoplugin for audit functionality
0.6.0
Changed
POST /wp-json/extrachill/v1/seo/audit– Start new SEO audit in full or batch modePOST /wp-json/extrachill/v1/seo/audit/continue– Continue batch audit processingGET /wp-json/extrachill/v1/seo/audit/status– Get current audit progress and results- Tracks missing excerpts, alt text, featured images, broken images, and broken internal/external links
- Batch processing for large networks with progress tracking
- Super admin permissions required (
manage_network_options) - Integrates with
extrachill-seoplugin for audit functionality
Technical Notes
- New Dependencies: Requires
extrachill-seoplugin for audit functions (ec_seo_*functions) - Endpoint Count: Increased from 53 to 56 total endpoints
- Backward Compatibility: All changes are additive with no breaking modifications
0.5.2
Removed
- Documentation Cleanup: Streamlined CLAUDE.md by removing detailed endpoint documentation and reorganizing into summarized endpoint categories for improved maintainability.
- Activity Emitters Refactor: Updated post event emission to use
save_posthook instead oftransition_post_statusfor more reliable activity tracking, with corresponding parameter and logic adjustments.
Fixed
- All changes are additive with no breaking modifications.
- Activity System: Improved reliability of post activity emission through hook change and parameter updates.
Technical Notes
- Festival Wire Migration Endpoints: Removed one-time admin migration tooling after migration completion
- Deleted
inc/routes/admin/festival-wire-migration.php(974 lines) - Removed all festival wire migration endpoints from the API
- This temporary admin tool was only needed for one-time content migration between sites
- Migration has been completed successfully and tooling is no longer required
- Deleted
0.5.1
Added
- Deleted
inc/routes/admin/festival-wire-migration.php(974 lines) - Removed all festival wire migration endpoints from the API
- This temporary admin tool was only needed for one-time content migration between sites
- Migration has been completed successfully and tooling is no longer required
Documentation
- Deleted
inc/routes/admin/festival-wire-migration.php(974 lines) - Removed all festival wire migration endpoints from the API
- This temporary admin tool was only needed for one-time content migration between sites
- Migration has been completed successfully and tooling is no longer required
Updated
- Code Cleanup: Removal of 974 lines of temporary migration code
- Breaking Change: Festival wire migration endpoints are no longer available (not intended for long-term use)
- Endpoint Count: Reduced from 57 to 53 total endpoints
Technical Notes
- Festival Wire Migration Inline Uploads: Enhanced migration system to handle inline uploads within post content
- Extracts and migrates images embedded directly in HTML content (not just Gutenberg blocks)
- Supports srcset attributes and various URL formats for comprehensive image migration
- Automatically sets post thumbnail from first inline image when no featured image exists
- Improved duplicate detection with title/date-based fallback queries
- Enhanced attachment URL normalization for multisite compatibility
0.5.0
Added
- Extracts and migrates images embedded directly in HTML content (not just Gutenberg blocks)
- Supports srcset attributes and various URL formats for comprehensive image migration
- Automatically sets post thumbnail from first inline image when no featured image exists
- Improved duplicate detection with title/date-based fallback queries
- Enhanced attachment URL normalization for multisite compatibility
Changed
- Extracts and migrates images embedded directly in HTML content (not just Gutenberg blocks)
- Supports srcset attributes and various URL formats for comprehensive image migration
- Automatically sets post thumbnail from first inline image when no featured image exists
- Improved duplicate detection with title/date-based fallback queries
- Enhanced attachment URL normalization for multisite compatibility
Technical Notes
- Backward Compatibility: All changes are additive with no breaking modifications
- Migration Safety: Enhanced duplicate detection prevents data loss during re-migrations
- Performance: Efficient URL extraction and attachment ID resolution
0.4.0
Added
Festival Wire Migration System: Complete admin tool for migrating festival_wire posts between sites with full attachment handling
POST /wp-json/extrachill/v1/admin/festival-wire/preflight– Analyze migration scope and current statePOST /wp-json/extrachill/v1/admin/festival-wire/migrate– Execute batch migration with attachment preservationPOST /wp-json/extrachill/v1/admin/festival-wire/validate– Mark migration complete and prevent accidental deletionPOST /wp-json/extrachill/v1/admin/festival-wire/delete– Remove migrated content from source site- Handles featured images, embedded attachments, and Gutenberg block media references
- Maintains migration state and prevents duplicate migrations
Taxonomy Synchronization Tool: Admin endpoint for syncing shared taxonomies across multisite network
POST /wp-json/extrachill/v1/admin/taxonomies/sync– Sync taxonomies (location, festival, artist, venue) from main site to target sites- Supports hierarchical taxonomy sync with parent-child relationships preserved
- Provides detailed sync reports with created/skipped/failed term counts
- Designed for Admin Tools UI integration
Authentication Source Tracking: Enhanced user registration and OAuth flows with source attribution
- Added
registration_sourceparameter to Google OAuth and user registration endpoints - Added
registration_methodandregistration_pageparameters for better analytics - Enables tracking of registration origins (web app, mobile app, etc.)
- Added
Changed
POST /wp-json/extrachill/v1/admin/festival-wire/preflight– Analyze migration scope and current statePOST /wp-json/extrachill/v1/admin/festival-wire/migrate– Execute batch migration with attachment preservationPOST /wp-json/extrachill/v1/admin/festival-wire/validate– Mark migration complete and prevent accidental deletionPOST /wp-json/extrachill/v1/admin/festival-wire/delete– Remove migrated content from source site- Handles featured images, embedded attachments, and Gutenberg block media references
- Maintains migration state and prevents duplicate migrations
Fixed
POST /wp-json/extrachill/v1/admin/taxonomies/sync– Sync taxonomies (location, festival, artist, venue) from main site to target sites- Supports hierarchical taxonomy sync with parent-child relationships preserved
- Provides detailed sync reports with created/skipped/failed term counts
- Designed for Admin Tools UI integration
Technical Notes
- Added
registration_sourceparameter to Google OAuth and user registration endpoints - Added
registration_methodandregistration_pageparameters for better analytics - Enables tracking of registration origins (web app, mobile app, etc.)
0.3.1
Added
POST /wp-json/extrachill/v1/admin/festival-wire/preflight– Analyze migration scope and current statePOST /wp-json/extrachill/v1/admin/festival-wire/migrate– Execute batch migration with attachment preservationPOST /wp-json/extrachill/v1/admin/festival-wire/validate– Mark migration complete and prevent accidental deletionPOST /wp-json/extrachill/v1/admin/festival-wire/delete– Remove migrated content from source site- Handles featured images, embedded attachments, and Gutenberg block media references
- Maintains migration state and prevents duplicate migrations
0.3.0
Changed
POST /wp-json/extrachill/v1/admin/taxonomies/sync– Sync taxonomies (location, festival, artist, venue) from main site to target sites- Supports hierarchical taxonomy sync with parent-child relationships preserved
- Provides detailed sync reports with created/skipped/failed term counts
- Designed for Admin Tools UI integration
Added
- Added
registration_sourceparameter to Google OAuth and user registration endpoints - Added
registration_methodandregistration_pageparameters for better analytics - Enables tracking of registration origins (web app, mobile app, etc.)
Technical Notes
- Activity System: Added event card building and taxonomy badge color mapping functionality
- Improved activity feed presentation with enhanced metadata handling
- Added taxonomy-based visual styling for activity cards
0.2.8
Added
- Improved activity feed presentation with enhanced metadata handling
- Added taxonomy-based visual styling for activity cards
Changed
- Improved activity feed presentation with enhanced metadata handling
- Added taxonomy-based visual styling for activity cards
Technical Notes
- New Dependencies: Festival wire migration requires
ec_get_blog_id()function availability - Admin Permissions: All new endpoints require
manage_optionscapability - Migration Safety: Festival wire migration includes validation steps and state tracking to prevent data loss
- Taxonomy Sync: Supports selective syncing of specific taxonomies to targeted sites
- Backward Compatibility: All changes are additive with no breaking modifications
- Endpoint Count: Increased from 52 to 57 total endpoints
0.2.7
Changed
- Browser Handoff Authentication: New
POST /wp-json/extrachill/v1/auth/browser-handoffendpoint for cross-platform authentication flow- Generates one-time URLs that set WordPress auth cookies in real browsers and redirect to specified destinations
- Validates redirect URLs to ensure they target extrachill.com domains only
- Prevents extrachill.link domain usage for security
- Requires logged-in user and integrates with extrachill-users plugin token management
- Includes comprehensive input validation and error handling for redirect URLs
- Supports absolute URL requirements with proper host validation
0.2.6
Added
- Generates one-time URLs that set WordPress auth cookies in real browsers and redirect to specified destinations
- Validates redirect URLs to ensure they target extrachill.com domains only
- Prevents extrachill.link domain usage for security
- Requires logged-in user and integrates with extrachill-users plugin token management
- Includes comprehensive input validation and error handling for redirect URLs
- Supports absolute URL requirements with proper host validation
0.2.5
Added
- Generates one-time URLs that set WordPress auth cookies in real browsers and redirect to specified destinations
- Validates redirect URLs to ensure they target extrachill.com domains only
- Prevents extrachill.link domain usage for security
- Requires logged-in user and integrates with extrachill-users plugin token management
- Includes comprehensive input validation and error handling for redirect URLs
- Supports absolute URL requirements with proper host validation
Fixed
- Backward Compatibility: All existing endpoints maintain current behavior
- Dependencies: Requires extrachill-users plugin for
extrachill_users_create_browser_handoff_token()function - Security: Domain validation prevents unauthorized redirects; token-based one-time URL generation
- Endpoint Count: Increased from 51 to 52 total endpoints
Changed
Auth Me Endpoint Enhancement: Extended
/auth/meendpoint with comprehensive user context data- Added
artist_idsarray – All artist profile IDs managed by the user - Added
latest_artist_id– Most recently accessed artist profile ID - Added
link_page_count– Total number of link pages created by user - Added
can_create_artists– Boolean permission flag for artist profile creation capability - Added
can_manage_shop– Boolean permission flag for shop management capability - Added
shop_product_count– Total number of shop products listed by user - Added
site_urlsobject with URLs for community, artist, and shop sections - All new fields are conditional with function existence checks for graceful degradation
- Enables mobile/web clients to build comprehensive navigation without additional API calls
- Added
Avatar Menu Documentation: Added
docs/routes/users/avatar-menu.mddocumenting deprecation- Directs clients to use
/auth/meendpoint instead - Improves developer understanding of migration path
- Directs clients to use
0.2.4
Added
- Added
artist_idsarray – All artist profile IDs managed by the user - Added
latest_artist_id– Most recently accessed artist profile ID - Added
link_page_count– Total number of link pages created by user - Added
can_create_artists– Boolean permission flag for artist profile creation capability - Added
can_manage_shop– Boolean permission flag for shop management capability - Added
shop_product_count– Total number of shop products listed by user - Added
site_urlsobject with URLs for community, artist, and shop sections - All new fields are conditional with function existence checks for graceful degradation
- Enables mobile/web clients to build comprehensive navigation without additional API calls
Changed
- Directs clients to use
/auth/meendpoint instead - Improves developer understanding of migration path
0.2.3
Added
- Added
artist_idsarray – All artist profile IDs managed by the user - Added
latest_artist_id– Most recently accessed artist profile ID - Added
link_page_count– Total number of link pages created by user - Added
can_create_artists– Boolean permission flag for artist profile creation capability - Added
can_manage_shop– Boolean permission flag for shop management capability - Added
shop_product_count– Total number of shop products listed by user - Added
site_urlsobject with URLs for community, artist, and shop sections - All new fields are conditional with function existence checks for graceful degradation
- Enables mobile/web clients to build comprehensive navigation without additional API calls
Fixed
- Directs clients to use
/auth/meendpoint instead - Improves developer understanding of migration path
Changed
- Backward Compatibility: All new fields are additive; existing response contract unchanged
- Graceful Degradation: New fields only included if their respective helper functions exist
- Performance: No database impact; all data derived from existing user metadata and helper functions
- Dependencies: Conditional integration with extrachill-artist-platform and extrachill-shop functions
0.2.2
Changed
Shop Shipping Address Management: New REST endpoints for artists to configure their return/from-address for label printing
GET /wp-json/extrachill/v1/shop/shipping-address?artist_id=X– Retrieve artist shipping address with validation statusPUT /wp-json/extrachill/v1/shop/shipping-address– Update artist shipping address with full address fields (name, street1, street2, city, state, zip, country)- Stores address data in post meta
_shipping_addresson artist profile - Includes helper functions:
extrachill_api_get_artist_shipping_address(),extrachill_api_save_artist_shipping_address(),extrachill_api_artist_has_shipping_address() - Permission checks ensure only artist managers can access/modify shipping addresses
- Gracefully handles missing artist blog ID with fallback to blog ID 4
Shop Shipping Labels Integration: New endpoints for purchasing and managing Shippo shipping labels
POST /wp-json/extrachill/v1/shop/shipping-labels– Purchase shipping label with automatic cheapest USPS rate selectionGET /wp-json/extrachill/v1/shop/shipping-labels/{order_id}– Retrieve existing label and tracking information- Validates artist has configured shipping address before allowing label purchase
- Integrates with
extrachill_shop_shippo_create_label()for label generation - Stores label metadata on order:
_artist_label_*,_artist_tracking_*,_artist_label_data_* - Automatically updates order status to ‘completed’ with tracking note
- Sends email confirmation to user who purchased label with tracking number and label URL
- Supports reprint of existing labels without re-charging
Development Turnstile Bypass: Enhanced security verification for local development
- Added automatic bypass for Turnstile verification in local environments (
WP_ENVIRONMENT_TYPE === 'local') - Added
extrachill_bypass_turnstile_verificationfilter hook for fine-grained control - Applied to both contact form (
POST /contact/submit) and event submissions (POST /event-submissions) endpoints - Enables testing and development workflows without requiring valid CAPTCHA tokens
- Maintains full security in production environments
- Added automatic bypass for Turnstile verification in local environments (
Removed
GET /wp-json/extrachill/v1/shop/shipping-address?artist_id=X– Retrieve artist shipping address with validation statusPUT /wp-json/extrachill/v1/shop/shipping-address– Update artist shipping address with full address fields (name, street1, street2, city, state, zip, country)- Stores address data in post meta
_shipping_addresson artist profile - Includes helper functions:
extrachill_api_get_artist_shipping_address(),extrachill_api_save_artist_shipping_address(),extrachill_api_artist_has_shipping_address() - Permission checks ensure only artist managers can access/modify shipping addresses
- Gracefully handles missing artist blog ID with fallback to blog ID 4
0.2.0
Added
POST /wp-json/extrachill/v1/shop/shipping-labels– Purchase shipping label with automatic cheapest USPS rate selectionGET /wp-json/extrachill/v1/shop/shipping-labels/{order_id}– Retrieve existing label and tracking information- Validates artist has configured shipping address before allowing label purchase
- Integrates with
extrachill_shop_shippo_create_label()for label generation - Stores label metadata on order:
_artist_label_*,_artist_tracking_*,_artist_label_data_* - Automatically updates order status to ‘completed’ with tracking note
- Sends email confirmation to user who purchased label with tracking number and label URL
- Supports reprint of existing labels without re-charging
Changed
- Added automatic bypass for Turnstile verification in local environments (
WP_ENVIRONMENT_TYPE === 'local') - Added
extrachill_bypass_turnstile_verificationfilter hook for fine-grained control - Applied to both contact form (
POST /contact/submit) and event submissions (POST /event-submissions) endpoints - Enables testing and development workflows without requiring valid CAPTCHA tokens
- Maintains full security in production environments
0.2.1
Added
GET /wp-json/extrachill/v1/shop/shipping-address?artist_id=X– Retrieve artist shipping address with validation statusPUT /wp-json/extrachill/v1/shop/shipping-address– Update artist shipping address with full address fields (name, street1, street2, city, state, zip, country)- Stores address data in post meta
_shipping_addresson artist profile - Includes helper functions:
extrachill_api_get_artist_shipping_address(),extrachill_api_save_artist_shipping_address(),extrachill_api_artist_has_shipping_address() - Permission checks ensure only artist managers can access/modify shipping addresses
- Gracefully handles missing artist blog ID with fallback to blog ID 4
Changed
POST /wp-json/extrachill/v1/shop/shipping-labels– Purchase shipping label with automatic cheapest USPS rate selectionGET /wp-json/extrachill/v1/shop/shipping-labels/{order_id}– Retrieve existing label and tracking information- Validates artist has configured shipping address before allowing label purchase
- Integrates with
extrachill_shop_shippo_create_label()for label generation - Stores label metadata on order:
_artist_label_*,_artist_tracking_*,_artist_label_data_* - Automatically updates order status to ‘completed’ with tracking note
- Sends email confirmation to user who purchased label with tracking number and label URL
- Supports reprint of existing labels without re-charging
0.1.9
Added
- Added automatic bypass for Turnstile verification in local environments (
WP_ENVIRONMENT_TYPE === 'local') - Added
extrachill_bypass_turnstile_verificationfilter hook for fine-grained control - Applied to both contact form (
POST /contact/submit) and event submissions (POST /event-submissions) endpoints - Enables testing and development workflows without requiring valid CAPTCHA tokens
- Maintains full security in production environments
Changed
Contact Submit Endpoint Enhancement: Improved Turnstile verification with development bypass
- Now checks local environment before requiring valid Turnstile token
- Allows filter-based bypass for testing scenarios
- Maintains backward compatibility with existing production behavior
Event Submissions Endpoint Enhancement: Improved Turnstile verification with development bypass
- Now checks local environment before requiring valid Turnstile token
- Allows filter-based bypass for testing scenarios
- Maintains backward compatibility with existing production behavior
0.1.7
Added
- Now checks local environment before requiring valid Turnstile token
- Allows filter-based bypass for testing scenarios
- Maintains backward compatibility with existing production behavior
Changed
- Now checks local environment before requiring valid Turnstile token
- Allows filter-based bypass for testing scenarios
- Maintains backward compatibility with existing production behavior
Technical Notes
- Now checks local environment before requiring valid Turnstile token
- Allows filter-based bypass for testing scenarios
- Maintains backward compatibility with existing production behavior
0.1.6
Added
- Now checks local environment before requiring valid Turnstile token
- Allows filter-based bypass for testing scenarios
- Maintains backward compatibility with existing production behavior
Changed
- Backward Compatibility: All changes are additive with no breaking modifications
- New Dependencies: Shipping labels endpoint depends on Shippo integration via
extrachill_shop_shippo_create_label()function - Database: New post meta keys added (
_shipping_address,_artist_label_*,_artist_tracking_*,_artist_label_data_*) - Permissions: All shipping endpoints use
extrachill_api_shop_user_can_manage_artist()for access control - Email: Shipping label purchase now triggers email confirmation via
wp_mail()with order and label details
0.1.5
Added
Event Activity Card Enhancement: Enhanced activity system to include event-specific metadata for datamachine_events posts
- Extracts event date/time from
_datamachine_event_datetimepost meta and adds to activity cards - Parses datetime using WordPress timezone for proper event scheduling context
- Includes venue name from taxonomy terms in activity card data
- Improves event discovery through activity feeds with complete event context
- Extracts event date/time from
bbPress Reply Activity Context: Added parent topic context to reply activity emissions
- Captures parent topic ID and title when publishing bbPress replies
- Uses
bbp_get_reply_topic_id()for reliable topic association - Properly decodes HTML entities in topic titles for consistent display
- Enables better navigation and context awareness in activity feeds for forum discussions
Removed
- Extracts event date/time from
_datamachine_event_datetimepost meta and adds to activity cards - Parses datetime using WordPress timezone for proper event scheduling context
- Includes venue name from taxonomy terms in activity card data
- Improves event discovery through activity feeds with complete event context
Changed
- Captures parent topic ID and title when publishing bbPress replies
- Uses
bbp_get_reply_topic_id()for reliable topic association - Properly decodes HTML entities in topic titles for consistent display
- Enables better navigation and context awareness in activity feeds for forum discussions
0.1.4
Added
- Extracts event date/time from
_datamachine_event_datetimepost meta and adds to activity cards - Parses datetime using WordPress timezone for proper event scheduling context
- Includes venue name from taxonomy terms in activity card data
- Improves event discovery through activity feeds with complete event context
Changed
- Captures parent topic ID and title when publishing bbPress replies
- Uses
bbp_get_reply_topic_id()for reliable topic association - Properly decodes HTML entities in topic titles for consistent display
- Enables better navigation and context awareness in activity feeds for forum discussions
Migration Notes
Festival Wire Migration System: Complete admin tool for migrating festival_wire posts between sites with full attachment handling
.then(data => { if (data.success) { ... } })Taxonomy Synchronization Tool: Admin endpoint for syncing shared taxonomies across multisite network
.then(response => {
if (!response.ok) return response.json().then(err => Promise.reject(err));
return response.json();
})
.then(data => { /* access data.property directly */ })0.1.3
Added
- Backward Compatibility: All changes are additive with no breaking modifications
- Activity System: Enhanced data structure provides richer context for events and discussions
- Dependencies: No new dependencies added; uses existing WordPress and bbPress functions
0.1.2
Added
Documentation Reorganization: Consolidated route documentation structure and reorganized CLAUDE.md directory listings
- Reorganized
inc/directory structure in documentation for clarity - Updated feature categories from 18 to 20 (added Configuration and reorganized admin/user sections)
- Refreshed endpoint count documentation to reflect 51 total endpoints
- Reorganized
Authentication Parameter Enhancement: Made Turnstile verification optional in user registration
- Changed
turnstile_responseparameter from required to optional inPOST /auth/register - Enables registration flows without CAPTCHA verification when appropriate
- Maintains backwards compatibility with existing clients sending Turnstile tokens
- Changed
Changed
- Reorganized
inc/directory structure in documentation for clarity - Updated feature categories from 18 to 20 (added Configuration and reorganized admin/user sections)
- Refreshed endpoint count documentation to reflect 51 total endpoints
Dependencies
- Changed
turnstile_responseparameter from required to optional inPOST /auth/register - Enables registration flows without CAPTCHA verification when appropriate
- Maintains backwards compatibility with existing clients sending Turnstile tokens
0.1.1
Added
- Reorganized
inc/directory structure in documentation for clarity - Updated feature categories from 18 to 20 (added Configuration and reorganized admin/user sections)
- Refreshed endpoint count documentation to reflect 51 total endpoints
0.1.0
Added
- Changed
turnstile_responseparameter from required to optional inPOST /auth/register - Enables registration flows without CAPTCHA verification when appropriate
- Maintains backwards compatibility with existing clients sending Turnstile tokens