*** Express One Changelog ***

2025-12-24 - version 1.0.1
* Initial release
* Add - Core functionality for Orders created via WooCommerce are forwarded to Express One, converted into shipments, create barcode, tracking etc.
* Add - WooCommerce compatibility (tested up to WooCommerce 10.3.5)
* Add - Basic settings page with configuration options
* Add - Internationalization (i18n) support
* Dev - Code structured for maintainability and future enhancements

2026-03-26 - version 1.0.2
* Add - HPOS (High-Performance Order Storage) compatibility: all order meta now uses WooCommerce order CRUD (`get_meta`, `update_meta_data`, `save`) instead of `get_post_meta` / `update_post_meta`
* Add - `express_one_is_hpos_enabled()` helper to detect whether WooCommerce custom orders table is active
* Add - `express_one_get_order_edit_url()` helper to generate the correct order edit URL for both HPOS and legacy post-based orders
* Add - `express_one_build_collies()` helper to distribute order items across a configurable number of collies using round-robin logic
* Add - Collie count modal on order edit screen: admins can now specify how many collies to use when creating or updating a shipment (capped to number of order items)
* Add - `admin-collie-count.js` script enqueued on order edit screens (both legacy and HPOS) with localized modal strings
* Add - `data-max-collies` attribute on Create and Update Shipment buttons for JS validation
* Fix - Admin notices now correctly detect the order edit screen under both legacy (`post.php?post=`) and HPOS (`admin.php?page=wc-orders&id=`) URL formats
* Fix - `express_one_admin_error_redirect()` now uses transients for error messages instead of passing them in the query string, consistent with success notices
* Fix - Bulk label handler now loads the full order object via `wc_get_order()` before reading shipment meta, ensuring HPOS compatibility
* Dev - "Create Express One" button label renamed to "Create Express One Shipment" for clarity
* Dev - Order action button HTML restructured into a wrapping `<p>` tag for consistent spacing

2026-03-30 - version 1.0.3
* Fix - Parcel Shops error dialog fixed for different page builders

2026-05-20 - version 1.0.4
* Add - Approximate Location Check Added
* Fix - Location Availability Removed in Parcel Shop Location Selection

2026-06-01 - version 1.0.5
* Add - International shipping eligibility check for Home Delivery: non-SI destinations are now validated against the Express One API before checkout is allowed
* Add - WooCommerce Blocks (Gutenberg) checkout support for country eligibility validation via Store API hook
* Fix - Country eligibility check now works for both classic shortcode checkout and block-based checkout

2026-08-05 - version 1.0.6
* Fix - Bulk "Print Labels" action on the Orders list no longer silently no-ops when WooCommerce/HPOS passes the selected order IDs under an unexpected request key; the handler now falls back to reading the raw request so the action always runs
* Fix - Bulk "Print Labels" now always shows a result notice: an explicit "No orders were selected" notice if nothing was picked up, instead of doing nothing
* Fix - Label PDF generation failures (label API HTTP errors, non-2xx responses, empty/undecodable label data, failed disk writes) are now surfaced as a clear error notice instead of failing silently
* Fix - Missing API Key / missing Label Layout ID during bulk label creation now show a normal admin notice instead of a dead-end wp_die() screen

2026-08-06 - version 1.0.7
* Fix - "cargo" flag set to false when creating a new shipment (express_one_handle_create_shipment); the shipment update request (express_one_handle_update_shipment) still sends "cargo" as true

2026-08-14 - version 1.1.0
* Add - New "Pickup Shipment (Weight-Based)" and "Home Delivery Shipment (Weight-Based)" shipping methods, priced dynamically by parcel weight, grouped per destination country with a "Default" fallback group for any country without an explicit override
* Add - Optional maximum parcel size (sum of length + width + height) limit for the weight-based Pickup method
* Add - The new methods reuse the existing pickup-point map selection and Home Delivery courier API eligibility checks
* Add - Weight-based methods become unavailable at checkout if the cart's destination country/weight falls outside every configured tier, or if any cart item is missing its Weight (or, for Pickup with a size limit set, its Length/Width/Height) — unless the cart already qualifies for free shipping
* Add - Weight-based methods and their original (fixed-rate) counterparts are now mutually exclusive: enabling one automatically disables the other, with an admin notice explaining why
* Add - New admin settings pages under Express One for the weight-based methods
* Dev - Internal refactor, no functional changes to the existing fixed-rate methods: split the single plugin file into includes/ (shipping-helpers, pickup-map, order-integration, admin-settings, one file per shipping method class) and includes/traits/, deduplicating postcode matching, country matching, shipping-method registration, and the negative-price cart label that were previously copy-pasted across the Pickup and Home Delivery classes
* Dev - Verified byte-for-byte: all API endpoint URLs, nonce action strings, existing saved option names, and the two original shipping method IDs are unchanged, so existing shipping zone configuration and saved settings keep working without any action needed
