You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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)