Pular para o conteúdo principal

Metered Plans Changelog

Version 1.5.3 - Released on 2026-05-19

  • Fix: OAuth-pool provider plugins (ai-provider-for-anthropic-max and its ChatGPT Codex / Google AI Pro siblings) were not being registered with the AI Client SDK on subsites, causing the AI Agent admin page to render its "Set Up an AI Provider" gate even when the main site had a valid pool. Root cause: those providers self-register at init priority 5 and read their pool option via get_option(), but Connector_Enforcement only hooked its pre_option_* override at init priority 20. The subsite's empty local option row was returned, PoolManager::count() returned 0, and the provider was skipped. The statically-known EXTRA_PROVIDER_OPTIONS keys are now hooked during plugins_loaded so the override is live before any provider's init:5 read. Dynamic Connectors-API-discovered keys still hook at init priority 20 as before (they depend on _wp_connectors_init() having run at init:10). Filter hooking is deduped per option key so the two phases never produce double-fires.

Version 1.5.2 - Released on 2026-05-12

  • Fix: Prevent latent infinite recursion in the main-site write-through path. The pre_update_option_{$key} filter callback write_through_to_main_site() called switch_to_blog(MAIN) and update_option(), which would re-fire the same filter and re-enter the method without a recursion guard — the symmetric counterpart of the 1.5.1 read-path bug. Adds the same two-part guard: short-circuit when already on the main site, and a per-option in-flight $resolving_write flag with try/finally.

Version 1.5.1 - Released on 2026-05-12

  • Fix: Prevent infinite recursion in main-site option override. The pre_option_{$key} filter callback override_with_main_site_option() called switch_to_blog(MAIN) and get_option(), which re-fired the same filter and re-entered the method without a recursion guard. On networks with many sites and many BerlinDB tables, this caused 89,000+ switch_to_blog events per subsite admin request, exhausting PHP memory and returning HTTP 500. The callback now short-circuits when already on the main site and uses an in-flight resolving guard for defence-in-depth.

Version 1.1.0 - Released on 2026-05-05

  • New: AI token billing for multisite subsites — track and bill AI token usage across customer sites with configurable per-token rates
  • New: Connector enforcement rebuilt with dynamic limit discovery and write-through, ensuring real-time accuracy across all connectors
  • Fix: Database table upgrades now correctly aligned with BerlinDB schema definitions, preventing upgrade failures on new installs
  • Fix: Database upgrade callbacks converted to the correct format, resolving silent upgrade failures
  • Fix: Fractional values now accepted in the AI Usage Overage Markup input field
  • Fix: Resolved fatal errors and double-initialization issues on plugin load
  • Improved: Added check-env npm script so developer environments self-configure on first run

1.0.3

  • Updated to Plugin Update Checker v5
  • Added modern WordPress plugin headers
  • Improved compatibility with latest WordPress versions
  • Enhanced usage tracking performance

1.0.2

  • Bug fixes and performance improvements
  • Enhanced usage reporting

1.0.0

  • Initial release
  • Core metered billing functionality
  • Usage tracking and overage calculation
  • Automatic invoice generation