= 2.3.8 - 2026-08-21 =
* Compatibility - **Tested and confirmed compatible with WordPress 7.1.** "Tested up to" bumped from 7.0. The release was audited against the 7.1 codebase rather than smoke-tested: every WordPress function the plugin calls was resolved against the 7.1 symbol table (no removed or renamed API is used), the plugin's global function, class and constant names were diffed against the 92 functions and 5 classes 7.1 introduces (no redeclaration collisions), and the full plugin tree was scanned with PHPCompatibility for PHP 7.4 through 8.4 (zero issues).
* Compatibility - **jQuery UI 1.14.2** ships in WordPress 7.1 (up from 1.13.3). The payment-gateway drag-to-reorder list on Settings -> Payment uses `.sortable()` and `.disableSelection()`; both remain available because core enables `jQuery.uiBackCompat` and still bundles the disable-selection module. The four APIs 1.14 removed (`$.fn._form`, `$.ui.ie`, `$.ui.safeActiveElement`, `$.ui.safeBlur`) are not used anywhere in the plugin.
* Compatibility - **The enforced iframed post editor in 7.1 does not affect Easy Invoice.** Invoices and quotes are edited through the plugin's own admin screens; their post types register with `show_ui => false` and the one UI-visible post type does not declare `editor` support, so no plugin JavaScript or CSS reaches across the editor document boundary.
* Compatibility - Admin styling verified against 7.1 markup: the `#adminmenu`, `#adminmenuwrap`, `#adminmenuback`, `#wpcontent`, `#wpbody-content` and `#wpfooter` containers the plugin restyles are all still emitted by `wp-admin/admin-header.php` and `menu-header.php` in 7.1, and the persistent admin toolbar change touches `#wpadminbar`, which the plugin does not style.
* Compatibility - The REST and media changes in 7.1 (image dimension validation on the sideload endpoint, size-aware encoding quality in attachment responses) are not applicable: the plugin registers no REST routes and calls no attachment or sideload APIs.
* Fixed - **Payment-gateway drag-to-reorder relied on incidental script ordering.** The `easy-invoice-settings` script handle is registered in two different places, and WordPress keeps whichever registration runs first while silently discarding the other's dependency array. The registration that wins did not list `jquery-ui-sortable`, so `settings.js` was printed ahead of jQuery UI Sortable and only worked because its code runs inside a DOM-ready callback. The jQuery UI handles are now declared explicitly on that registration, so `wp_scripts` resolves the load order instead of it falling out of enqueue sequence - worth tightening now that 7.1 ships a new jQuery UI build.

= 2.2.1 - 2026-05-15 =
* Fixed - PDF download quality: crisp text and sharp table borders.
  - html2canvas scale 1.5x → 2x (retina-grade).
  - JPEG @ 0.92 → lossless PNG (no more colour-fringe around glyphs).
  - Locked capture width so responsive CSS doesn't shrink the layout mid-capture.
  - jsPDF FlateDecode compression + 'SLOW' addImage flag for better embedded image quality.
* Internal - Cache buster bumped so browsers pick up the new document-pdf.js immediately.

= 2.2.0 - 2026-05-13 =
* Added - "Export Selected (Pro)" option in the Bulk Actions dropdown on both Invoice and Quote listings; picking it without Pro opens the Upgrade-to-Pro dialog.
* Added - "Unlock more payment gateways" teaser block on Settings → Payment when Pro is inactive (Stripe, Square, Authorize.Net, Mollie, Paystack, Moneris, Bank Transfer, Cheque, Cash).
* Improved - Pro-gated submit interceptors moved to native capture-phase listeners so they always run before the listing template's inline jQuery submit handlers.
* Improved - JS cache buster bumped so users always pick up the new bulk-action teaser script on first page load after the upgrade.
* Fixed - Quote listing search form posted to a wrong page slug (`easy-invoice-quotes-all`); corrected to `easy-quote-all`.
* Fixed - Default Invoice / Quote email bodies no longer ship the literal `[easy_(invoice|quote)_url ...]` shortcode-reference line that was emailed to clients as raw text. One-time migration strips it from saved options.

= 2.1.22 - 2026-05-13 =
* Added - Filter by Client dropdown on All Invoices and All Quotes listings. Filter persists across view tabs, search, pagination, and status filters.
* Improved - Listing controllers now pass the available clients list and selected client_id to the template, providing a clean extension point for Pro modules.

= 2.1.21 - 2026-05-11 =
* Added - "Documentation" link in the Easy Invoice plugin sidebar (under Join Community) that opens the new official documentation site (https://easy-invoice.matrixaddons.com/docs/).
* Updated - All in-plugin documentation references and readme.txt links now point to the new dedicated docs site.

= 2.1.20 - 2026-04-29 =
* Security: Manual payment proof uploads validated with WordPress file type APIs; safe stored extension only.
* Security: Quote accept/decline use per-quote nonces and published-quote access for non-admins.
* Security: Payment instructions for guests limited to published invoices.
* Security: Invoice/quote send-email AJAX consolidated with published checks for guests.

= 2.1.19 - 2026-04-27 =
* Minor UI issue fixed
* Minor bug fixed on both plugins

= 2.1.18 - 2026-04-21 =
* Maintenance - Version bump release

= 2.1.17 - 2026-04-17 =
* Fixed - PDF download for long invoice/quote content: corrected JPEG image data used with PNG format (blank pages); respect browser canvas size limits; capture very tall HTML in vertical slices and paginate onto A4.
* Fixed - PDF page breaks respect table row and summary block edges so items are not split across pages (row-aware canvas crops).

= 2.0 - 2024-08-14 =
* NEW - Complete plugin rewrite with modern architecture and improved codebase
* NEW - Enhanced migration system for seamless updates from previous versions
* NEW - Improved user interface with Tailwind CSS and modern design
* NEW - Better invoice and quote templates with professional layouts
* NEW - Enhanced payment gateway integration with better error handling
* NEW - Improved email templates and notifications system
* NEW - Better client management system with enhanced data handling
* NEW - Advanced settings and customization options
* NEW - Multi-language support improvements and translation enhancements
* NEW - Version badges in sidebar header showing Free and Pro versions
* NEW - Improved responsive design for mobile and tablet devices
* FIXED - Division by zero error in invoice calculations
* FIXED - JavaScript errors in invoice and quote builders
* FIXED - Duplicate ID issues in quote forms
* FIXED - Resize logic removed for better performance and stability
* FIXED - Various bug fixes and performance improvements
* FIXED - Security enhancements and code sanitization
* FIXED - WordPress 6.4 compatibility issues
* FIXED - Improved error handling and user feedback

= 1.1.3 - 2024-10-31 =
* Fixed - Email issue fixed
* Fixed - Version compatibility

== Upgrade Notice ==

= 2.0.0 =
This is a major update with a new architecture and migration system. If you are upgrading from a version older than 2.0, please run the migration when prompted to move your old invoices, quotes, and settings.


= 1.1.2 - 2024-02-19 =
* Fixed - Readme update

= 1.1.1 - 2024-02-17 =
* Fixed - Astra Compatibility fixed
* Added - Minor fixes

= 1.1 - 2024-01-19 =
* Added - Quotation feature
* Added - Report features

= 1.0.9 - 2023-12-17 =
* Fixed - WP Compatibility fixed

= 1.0.8 - 2023-09-17 =
* Fixed - WP Compatibility fixed
* Added - Added Terms and conditions option on single invoice

= 1.0.7 - 2023-09-13 =
* Fixed - WP Compatibility fixed
* Fixed - Javascript issue on backend

= 1.0.6 - 2023-04-29 =
* Fixed - 6.2 compatibility test

= 1.0.5 - 2023-01-08 =
* Fixed - Email issue fixed

= 1.0.4 - 2022-10-29 =
* Fixed - float issue resolved

= 1.0.3 - 2022-10-21 =
* Fixed - Minor issue fixed
* Added - Addon updater and license manager
