Skip to content

3.3.0

Choose a tag to compare

@PaulArgoud PaulArgoud released this 16 Feb 12:39
· 62 commits to main since this release

Added

  • Queue observability hook — New wp4odoo_job_processed action fires after each sync job with module ID, elapsed time (ms), Sync_Result, and raw job object. Enables external monitoring and performance dashboards
  • Retry visibility — Queue admin tab now shows a "Scheduled" column with human-readable countdown (e.g. "2 hours") for pending jobs with future scheduled_at, or "Now" for immediately-ready jobs
  • Module dependency graph — New Module_Base::get_required_modules() method declares inter-module dependencies. WC Subscriptions, WC Bookings, WC Bundle BOM, WC Points & Rewards, and WC Memberships now require the WooCommerce module to be active. Module_Registry enforces this at boot time and generates an admin warning if a dependency is missing

Changed

  • Error classification in module catch blocks — WC Points & Rewards, GamiPress, WC Pull Coordinator, and Stock Handler now use Error_Classification::classify_exception() instead of hardcoded Error_Type::Transient in catch blocks. Permanent errors (validation, access denied) are no longer retried unnecessarily
  • Loyalty_Card_Resolver trait extraction — Extracted shared find-or-create loyalty.card logic from WC Points & Rewards and GamiPress into a reusable Loyalty_Card_Resolver trait (~75 LOC deduplication)
  • CLI trait extraction — Extracted queue subcommands (stats, list, retry, cleanup, cancel) and module subcommands (list, enable, disable) from CLI class into CLI_Queue_Commands and CLI_Module_Commands traits for testability and separation of concerns
  • Rate_Limiter extraction — Extracted transient-based rate limiting from Webhook_Handler into a standalone Rate_Limiter class, parameterized by prefix, max requests, and window duration for reusability
  • push_entity() standardization — Converted 16 Queue_Manager::push() callsites across 8 hook traits (FluentCRM, FunnelKit, SimplePay, BuddyBoss, Amelia, RCP, WooCommerce, Membership, TutorLMS) to use the push_entity() helper, ensuring consistent should_sync() guards and automatic create/update determination via mapping lookup

Fixed

  • uninstall.php — Added missing wp4odoo_log_cleanup cron event cleanup (previously only wp4odoo_scheduled_sync was cleared)