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.php to use the renamed analytics-provider functions.
    • Requires extrachill_get_analytics_events() instead of ec_get_events().
    • Uses extrachill_count_analytics_events() when available for pagination totals.
    • Requires extrachill_get_analytics_event_stats() instead of ec_get_event_stats().

[0.10.6] – 2026-01-07

Added

  • Requires extrachill_get_analytics_events() instead of ec_get_events().
  • Uses extrachill_count_analytics_events() when available for pagination totals.
  • Requires extrachill_get_analytics_event_stats() instead of ec_get_event_stats().

Changed

  • Requires extrachill_get_analytics_events() instead of ec_get_events().
  • Uses extrachill_count_analytics_events() when available for pagination totals.
  • Requires extrachill_get_analytics_event_stats() instead of ec_get_event_stats().

[0.10.5] – 2026-01-07

Changed

  • SEO Config Endpoint: Added inc/routes/seo/config.php to expose network-level SEO settings via REST.
    • GET /wp-json/extrachill/v1/seo/config returns default_og_image_id, default_og_image_url, and indexnow_key.
    • PUT /wp-json/extrachill/v1/seo/config updates default_og_image_id and/or indexnow_key (both optional).
    • Permission enforced via manage_network_options.

[0.10.4] – 2026-01-06

Added

  • GET /wp-json/extrachill/v1/seo/config returns default_og_image_id, default_og_image_url, and indexnow_key.
  • PUT /wp-json/extrachill/v1/seo/config updates default_og_image_id and/or indexnow_key (both optional).
  • Permission enforced via manage_network_options.

Changed

  • GET /wp-json/extrachill/v1/seo/config returns default_og_image_id, default_og_image_url, and indexnow_key.
  • PUT /wp-json/extrachill/v1/seo/config updates default_og_image_id and/or indexnow_key (both optional).
  • Permission enforced via manage_network_options.

[0.10.3] – 2026-01-05

Added

  • Analytics Meta Endpoint: Updated inc/routes/analytics/meta.php to avoid placeholder blog names.
    • Replaced "Blog {id}" fallback with the actual multisite blogname via get_blog_option( $blog_id, 'blogname' ).

Changed

  • Replaced "Blog {id}" fallback with the actual multisite blogname via get_blog_option( $blog_id, 'blogname' ).

[0.10.2] – 2026-01-05

Added

  • Replaced "Blog {id}" fallback with the actual multisite blogname via get_blog_option( $blog_id, 'blogname' ).

Changed

  • Admin Forum Topic Moves (bbPress Independence): Updated inc/routes/admin/forum-topics.php to update _bbp_topic_count, _bbp_reply_count, and _bbp_last_active_time using direct WP_Query/get_posts() logic rather than relying on bbPress helper functions.
  • Newsletter Admin Mode Permission: Updated inc/routes/newsletter/subscription.php (registers POST /newsletter/subscribe) admin-mode permission check to allow either multisite is_super_admin() or single-site manage_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/subscribe now accepts an emails array (each entry supports email and optional name).
    • Supports list_id admin mode (requires manage_options) and context public mode.
    • Response now includes subscribed, already_subscribed, failed, and errors counts for batch processing.
  • Analytics Events Pagination: Enhanced events listing to support search and pagination totals.
    • GET /wp-json/extrachill/v1/analytics/events now supports search.
    • Response now includes total (uses extrachill_count_analytics_events() when available).

[0.9.5] – 2026-01-04

Added

  • POST /wp-json/extrachill/v1/newsletter/subscribe now accepts an emails array (each entry supports email and optional name).
  • Supports list_id admin mode (requires manage_options) and context public mode.
  • Response now includes subscribed, already_subscribed, failed, and errors counts for batch processing.

Changed

  • GET /wp-json/extrachill/v1/analytics/events now supports search.
  • Response now includes total (uses extrachill_count_analytics_events() when available).

[0.9.4] – 2026-01-02

Changed

  • POST /wp-json/extrachill/v1/newsletter/subscribe now accepts an emails array (each entry supports email and optional name).
  • Supports list_id admin mode (requires manage_options) and context public mode.
  • Response now includes subscribed, already_subscribed, failed, and errors counts for batch processing.

0.9.3

Added

  • GET /wp-json/extrachill/v1/analytics/events now supports search.
  • Response now includes total (uses extrachill_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 handles share clicks and link_page_link clicks via a unified click_type parameter.
    • 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 handles share clicks and link_page_link clicks via a unified click_type parameter.
  • 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 handles share clicks and link_page_link clicks via a unified click_type parameter.
  • 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.php and share.php route files.
    • Updated README.md and CLAUDE.md to reflect the streamlined 3-endpoint analytics architecture.
  • Documentation Alignment:
    • Updated artist analytics documentation to reference the new unified click endpoint.
    • Refined shop documentation to include error response structures for the "Ships Free" label bypass logic.

Technical Notes

  • Removed deprecated link-click.php and share.php route files.
  • Updated README.md and CLAUDE.md to reflect the streamlined 3-endpoint analytics architecture.

0.9.1

Fixed

  • Updated artist analytics documentation to reference the new unified click endpoint.
  • Refined shop documentation to include error response structures for the "Ships Free" label bypass logic.

Technical Notes

  • Removed deprecated link-click.php and share.php route files.
  • Updated README.md and CLAUDE.md to reflect the streamlined 3-endpoint analytics architecture.

0.9.0

Added

  • Updated artist analytics documentation to reference the new unified click endpoint.
  • 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_free boolean field to product CRUD and responses.
    • Added ships_free_only flag to artist order responses.
    • Implemented automatic blockage of shipping label purchases for orders containing only free-shipping items.

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_free boolean field to product CRUD and responses.
  • Added ships_free_only flag 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_free boolean field to product CRUD and responses.
  • Added ships_free_only flag 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/details endpoint for retrieving paginated audit results by category (missing excerpts, alt text, broken links, etc.). Supports CSV export via export=true parameter.
  • 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 GET routes for administrative data management:
    • GET /wp-json/extrachill/v1/admin/team-members – List network team members with pagination and search
    • GET /wp-json/extrachill/v1/admin/artist-access – List pending/processed artist access requests
    • GET /wp-json/extrachill/v1/admin/lifetime-membership – List users with active lifetime memberships
    • GET /wp-json/extrachill/v1/admin/forum-topics – List and manage bbPress topics across network
    • GET /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 management
    • GET /wp-json/extrachill/v1/admin/artist-relationships – Inspect and manage user-artist links
  • Standardized Pagination: Admin list endpoints now consistently support per_page and page parameters with X-WP-Total and X-WP-TotalPages headers.

Technical Notes

  • GET /wp-json/extrachill/v1/admin/team-members – List network team members with pagination and search
  • GET /wp-json/extrachill/v1/admin/artist-access – List pending/processed artist access requests
  • GET /wp-json/extrachill/v1/admin/lifetime-membership – List users with active lifetime memberships
  • GET /wp-json/extrachill/v1/admin/forum-topics – List and manage bbPress topics across network
  • GET /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 management
  • GET /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 search
  • GET /wp-json/extrachill/v1/admin/artist-access – List pending/processed artist access requests
  • GET /wp-json/extrachill/v1/admin/lifetime-membership – List users with active lifetime memberships
  • GET /wp-json/extrachill/v1/admin/forum-topics – List and manage bbPress topics across network
  • GET /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 management
  • GET /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-capable context for finding users eligible for artist profile management.
    • Added exclude_artist_id support to prevent duplicates in roster management.
  • 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-capable context for finding users eligible for artist profile management.
  • Added exclude_artist_id support to prevent duplicates in roster management.

Added

  • Added artist-capable context for finding users eligible for artist profile management.
  • Added exclude_artist_id support 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_page and page parameters.

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-export for 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-markdown dependency

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-markdown dependency

Changed

  • Supports standard posts, bbPress topics (with replies), and events
  • Useful for content sharing and AI agent context feeding
  • Requires league/html-to-markdown dependency

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.1 for 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-handoff for cross-platform authentication flows
  • Taxonomy Synchronization: Added POST /wp-json/extrachill/v1/admin/taxonomies/sync for 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 configuration
    • GET/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 configuration
  • GET/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 configuration
  • GET/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, and extrachill-seo plugins

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/ namespace
    • POST /wp-json/extrachill/v1/seo/audit – Start new SEO audit in full or batch mode
    • POST /wp-json/extrachill/v1/seo/audit/continue – Continue batch audit processing
    • GET /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-seo plugin for audit functionality

Technical Notes

  • POST /wp-json/extrachill/v1/seo/audit – Start new SEO audit in full or batch mode
  • POST /wp-json/extrachill/v1/seo/audit/continue – Continue batch audit processing
  • GET /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-seo plugin for audit functionality

0.6.0

Changed

  • POST /wp-json/extrachill/v1/seo/audit – Start new SEO audit in full or batch mode
  • POST /wp-json/extrachill/v1/seo/audit/continue – Continue batch audit processing
  • GET /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-seo plugin for audit functionality

Technical Notes

  • New Dependencies: Requires extrachill-seo plugin 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_post hook instead of transition_post_status for 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

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 state
    • POST /wp-json/extrachill/v1/admin/festival-wire/migrate – Execute batch migration with attachment preservation
    • POST /wp-json/extrachill/v1/admin/festival-wire/validate – Mark migration complete and prevent accidental deletion
    • POST /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_source parameter to Google OAuth and user registration endpoints
    • Added registration_method and registration_page parameters for better analytics
    • Enables tracking of registration origins (web app, mobile app, etc.)

Changed

  • POST /wp-json/extrachill/v1/admin/festival-wire/preflight – Analyze migration scope and current state
  • POST /wp-json/extrachill/v1/admin/festival-wire/migrate – Execute batch migration with attachment preservation
  • POST /wp-json/extrachill/v1/admin/festival-wire/validate – Mark migration complete and prevent accidental deletion
  • POST /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_source parameter to Google OAuth and user registration endpoints
  • Added registration_method and registration_page parameters 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 state
  • POST /wp-json/extrachill/v1/admin/festival-wire/migrate – Execute batch migration with attachment preservation
  • POST /wp-json/extrachill/v1/admin/festival-wire/validate – Mark migration complete and prevent accidental deletion
  • POST /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_source parameter to Google OAuth and user registration endpoints
  • Added registration_method and registration_page parameters 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_options capability
  • 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-handoff endpoint 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/me endpoint with comprehensive user context data

    • Added artist_ids array – 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_urls object 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
  • Avatar Menu Documentation: Added docs/routes/users/avatar-menu.md documenting deprecation

    • Directs clients to use /auth/me endpoint instead
    • Improves developer understanding of migration path

0.2.4

Added

  • Added artist_ids array – 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_urls object 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/me endpoint instead
  • Improves developer understanding of migration path

0.2.3

Added

  • Added artist_ids array – 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_urls object 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/me endpoint 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 status
    • PUT /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_address on 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 selection
    • GET /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_verification filter 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

Removed

  • GET /wp-json/extrachill/v1/shop/shipping-address?artist_id=X – Retrieve artist shipping address with validation status
  • PUT /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_address on 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 selection
  • GET /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_verification filter 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 status
  • PUT /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_address on 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 selection
  • GET /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_verification filter 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_datetime post 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
  • 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_datetime post 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_datetime post 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

javascript
.then(data => { if (data.success) { ... } })

Taxonomy Synchronization Tool: Admin endpoint for syncing shared taxonomies across multisite network

javascript
.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
  • Authentication Parameter Enhancement: Made Turnstile verification optional in user registration

    • Changed turnstile_response parameter from required to optional in POST /auth/register
    • Enables registration flows without CAPTCHA verification when appropriate
    • Maintains backwards compatibility with existing clients sending Turnstile tokens

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_response parameter from required to optional in POST /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_response parameter from required to optional in POST /auth/register
  • Enables registration flows without CAPTCHA verification when appropriate
  • Maintains backwards compatibility with existing clients sending Turnstile tokens