Improved: heartbeat now runs via Action Scheduler instead of wp_schedule_event so the connection-status badge stays accurate on quiet/dev/staging stores where WP-cron silently skips fires (Action Scheduler runs via its own background processor, independent of visitor traffic). Same library used by Stripe, Klaviyo, MailPoet etc.
Added: lifecycle webhook on plugin deactivation/uninstall — Dropleather now learns within seconds when a seller deactivates or deletes the plugin, instead of waiting on the 2-hour heartbeat-stale threshold. Fixes the “I uninstalled and the dashboard still says Connected” UX gap
1.1.4
Added: 5-minute liveness heartbeat (wp_schedule_event) so the Dropleather dashboard’s /integration page can show a real 3-state health badge (active / idle / stale) instead of a stale “Connected” pill that lies after the plugin is deactivated or the WP server goes offline. One ping fires synchronously on activation and after a successful pair so the seller is shown active immediately
Added: dashboard orders table now refreshes via WordPress Heartbeat API delta tick — new WooCommerce orders appear within ~15 s without reloading the WP-admin tab. Steady-state cost on the api side is one indexed since lookup per tick when nothing changed
Fixed: stable-tag mismatch in the WP.org submission (Stable tag now matches the plugin header Version)
1.1.3
Internal: bumped to ship the orders auto-refresh code path
Fixed: setup wizard redirect now fires only once on activation (one-shot transient) instead of on every admin page load — addresses WordPress.org Guideline 11
Fixed: Plugin URI now points to a live page (/integrations/woocommerce)
1.1.1
Fix: webhook registration now purges every webhook pointing at the Dropleather delivery URL before creating new ones — prevents accumulation across reconnects, plugin delete/reinstall, or manual DB edits
1.1.0
WordPress.org submission prep: removed the bundled GitHub update checker (plugins on WP.org are updated through WP.org’s own update channel)
Migrated every log-table query to the native %i identifier placeholder introduced in WordPress 6.2
Bumped minimum WordPress requirement to 6.2 and tested-up-to to 6.9
Removed redundant load_plugin_textdomain() — translations are auto-loaded for WP.org-hosted plugins since WP 4.6
Slug renamed to dropleather-for-woocommerce (WordPress trademark policy requires the “for woocommerce” pattern)
1.0.4
Verification release for the GitHub-based auto-update channel
1.0.3
Hardened PHPCS compliance — escaped version-requirement notices, prefixed global variables in uninstaller + dashboard template, renamed $order loop variable to avoid colliding with WooCommerce’s global
Resolved PHPCS errors reported by the WordPress-Extra + WordPress.Security rulesets so CI runs clean
Whitelisted WooCommerce’s manage_woocommerce capability in phpcs.xml.dist
No runtime-visible changes — purely code-quality + CI hygiene
1.0.2
Hardened logger DB queries (centralised table-name validation, back-ticked identifiers, DELETE in place of TRUNCATE for broader hosting compatibility)
Added pre-connect privacy disclosure aligned with the full Dropleather Privacy Policy — lists every data field exchanged, two-way (store → Dropleather and Dropleather → store), retention periods (48h / 7y / 30d), sub-processors, and GDPR Article 17 handling
Registered a suggested privacy-policy snippet via WP’s Privacy Policy Guide (Settings → Privacy → Policy Guide)
1.0.1
Health check auto-disconnect when token is revoked on the Dropleather dashboard