*** HustlePay Payment Connector Changelog ***
2026-08-28 - version 0.9.3
* Fixed a PHP 8 fatal error on the WooCommerce-missing/inactive admin notice (undefined text-domain constant).
* Admin scripts/styles no longer load on every wp-admin page — scoped to this gateway's settings screen and order-edit screens only.
* Fixed: a late or out-of-order webhook could no longer flip an already-paid or refunded order back to failed.
* The payment return-flow redirect now verifies a signed, order-bound token before trusting the order.
* Fixed the uninstall routine: it now actually removes HustlePay's order meta and transients (the cleanup queries never matched the real keys, so nothing was removed before).
* Removed the processing-fee toggle and its checkout fee logic — merchants could disable the fee via the setting, defeating its purpose; fee enforcement belongs on the widget side.

2026-08-06 - version 0.9.2
* Fixed refunds: the WooCommerce admin refund action now calls the HustlePay refund API instead of only marking the order as refunded locally. Partial-amount refunds are rejected (not supported by HustlePay), and split-payment orders are only reported as fully refunded when every transaction succeeds.
* Locked the refund amount field to the correct refundable total for HustlePay orders and removed the "Refund manually" option, which never actually notified HustlePay that a refund happened. The refund controls are disabled once an order has nothing left to refund.
* Fixed: retrying a refund on a split-payment order now succeeds once every transaction is refunded, including legs a previous attempt already refunded (HustlePay reports those as an "already refunded" error on retry, which no longer counts against the overall result).
* Fixed: orders with a partial refund recorded before HustlePay refund integration existed are now blocked with a clear message instead of silently failing every refund attempt.
* Added a guard so refunds can't be requested on orders that were never actually paid via HustlePay.
* Fixed refund error messages sometimes showing the literal text "Array" instead of the actual upstream error detail.
* Refund failures are now always written to the WooCommerce log (source: hustlepay_payment), even when debug logging is disabled.
* The HustlePay refund ID and per-transaction result are now stored on the order for support/reconciliation.

2026-08-05 - version 0.9.1
* Added PayPal as a separate payment service provider.

2026-07-21 - version 0.9.0
* Added NMI as a payment service provider.

2026-06-20 - version 0.8.6
* Added a processing fee toggle in plugin settings.

2026-05-20 - version 0.8.5
* Updated and synchronized the codebase.
* Minor logic improvements.

2026-05-20 - version 0.8.4
* Made checkout session validation independent of the logged-in WordPress user to support order-pay links across customer, admin, and cached page contexts.

2026-05-20 - version 0.8.3
* Fixed checkout session creation by avoiding WordPress REST cookie nonce handling for the HustlePay order nonce.

2026-04-30 - version 0.8.1
* WordPress.org distribution cleanup.
* Clarified that HustlePay is a checkout orchestration connector, not a payment processor or payment service provider.
* Documented external service usage, transmitted data, Terms of Service, and Privacy Policy.
* Removed the self-hosted plugin updater from the WordPress.org build.
* Bundled the HustlePay icon locally instead of loading it from the HustlePay CDN.
* Fixed the missing admin notice fallback when WooCommerce requirements are not met.

2026-04-08 - version 0.8.0
* Update - Major UI/UX changes and improvements: updated the visual style, added animations, and improved input behavior.
* Update - Payment methods are now set up as a single list: the order and priority of these methods depend on the configuration in the HustlePay dashboard.
* Added - Optional appearance config to the widget, allowing merchants to adjust fonts, colors, borders, and related checkout styling.
