= 1.2.0 - XXIV-IX-MMXXVI - 2026-09-24 =
* New - Automatic subscription renewals — WooCommerce subscriptions can now renew automatically through WooCommerce Stripe.
* New - Subscription Health — A new Subscriptions → Health screen helps you quickly find payments, renewals, and subscriptions that need attention.
* New - Safer staging and backup restores — Prevents staging sites and restored backups from accidentally charging real customers.
* New - Automatic handling of unpaid subscriptions — Unpaid WooCommerce subscriptions now expire automatically after the configured grace period.
* New - Customer payment updates — Customers can update their saved payment card from My Account → Payment methods.
* New - Customer downloads — Customers can now access their Licenzo downloads from My Account → Downloads.
* New - Reliable monthly billing dates — Monthly subscriptions can stay aligned to the end of the month, including shorter months.
* New - Recurring plan sign-up fees — Add a sign-up fee to recurring plans across your store.
* New - Protected downloads — Downloadable packages can now be stored privately for better protection.
* New - Flexible licences — Customers can add or remove products from an existing licence.
* New - Better licence history — See which website or host was used to activate a licence.
* New - Personal data tools — Licenzo now works with WordPress's Export Personal Data and Erase Personal Data tools.
* New - Privacy Policy guidance — Licenzo can suggest a Privacy Policy section based on the payment gateways enabled on your store.

* Improved - WooCommerce subscriptions now activate automatically when an order is completed.
* Improved - Cancelled, refunded, and failed orders now update licences correctly.
* Improved - Licenzo products in WooCommerce are now treated as virtual products, so customers no longer need to enter a shipping address.
* Improved - Moving your store from WooCommerce, EDD, FluentCart, or WPSubscription is now easier to start, resume, and complete.
* Improved - Subscription renewals are more reliable.
* Improved - Settings are now easier to navigate with Store, Payments, Delivery, and Advanced sections.
* Improved - Licence history now provides clearer information about what happened to each licence.
* Improved - Subscriptions created by store administrators now issue licences consistently.

* Fixed - Fixed issues with subscription renewals, billing dates, cancellations, and payments.
* Fixed - Fixed licences incorrectly expiring or becoming active again after being revoked.
* Fixed - Fixed licence activation and seat-limit issues.
* Fixed - Fixed licence delivery and product linking issues with WooCommerce and EDD.
* Fixed - Fixed licence and customer data becoming incorrectly connected after changes or store migrations.
* Fixed - Fixed checkout and payment processing issues.
* Fixed - Fixed settings navigation and extension-related issues.
* Fixed - Fixed plugin update, store migration, and uninstall issues.

* Security - Improved protection for plugin files, customer downloads, backups, temporary files, and checkout payments.


= 1.1.1 - 2026-04-26 =

* Fix - Use WordPress wrapper functions (wp_json_encode, wp_parse_url) instead of PHP native equivalents
* Fix - Escape and sanitize all output and user input per WordPress coding standards
* Fix - Remove dev-only renewal simulator from production bootstrap

= 1.1.0 =

* New - Easy Digital Downloads (EDD) integration for order, subscription, and license management
* New - Native Stripe Subscription support for automated recurring billing with proper customer consent
* New - Stripe webhook endpoint with configurable secret for subscription lifecycle events
* New - EDD renewal orders — renewal transactions are recorded in both Licenzo and EDD
* New - Customer portal downloads now serve EDD native download files when no Licenzo release exists
* New - Admin settings for Stripe auto-renewal toggle, webhook URL, and webhook secret
* New - Rate limiting uses relational identity (license key, auth token, webhook provider) instead of IP addresses
* Fix - Dunning service reads admin-configured retry count and interval from settings
* Fix - EDD Recurring Payments addon detected to prevent double subscription handling
* Fix - Currency drift guard on subscription renewals
* Fix - Stripe requires_action treated as distinct state, not payment failure
* Fix - Single-cycle policy enforced for non-Stripe EDD gateways
* Fix - Notification system fully wired — all 14 notification types have settings, templates, and listeners
* Fix - WooOrderService notification dispatch uses correct payload format
* Fix - Customer lifetime value displays correctly on subscription and license detail pages
* Fix - Customer portal download authentication works with both pretty and non-pretty permalinks
* Security - Path traversal vulnerability fixed in data import chunked assembly
* Security - Rate limiting hardened with per-route named policies and route-template bucket keys
* Security - Trusted proxy-aware IP resolution foundation
* Security - Removed internal audit references and error_log calls from shipped code

= 1.0.0 =

* Initial release
