= 3.3.4 - 2026-10-06 =
* New: Calculator initial request always sends `is_plugin: true`.
* New: Each courier shipping method is now a separate admin/checkout option (e.g. enable Post method 38 without method 40 on the same courier).
* Enhancement: Calculator response logging includes enabled, returned, and missing shipping method IDs.
* Enhancement: One-time migration enables sibling shipping methods when a courier's first method was already enabled.
* Fix: Legacy label filter no longer hides current API methods whose titles contain "پست پیشتاز".
* Fix: AI prediction and COD rates use per-method IDs consistently.

= 3.3.3 - 2026-09-05 =
* New: Dynamic shipping providers from Amadast `/plugin/couriers` API (cached + offline fallback). Static methods kept: Peyk, in-person pickup, custom shipping.
* New: Admin shipping cost test modal — multi-product select, destination city, packaging source (AI/algorithm), rates intro/table, compare two cities.
* New: Minimum-order free shipping and related WooCommerce general shipping options.
* New: Per-provider blocked cities (disable a courier for selected destinations).
* New: Provider icons in admin; optional checkout/cart icon display setting.
* New: Expanded Support & FAQ content for common setup mistakes and troubleshooting.
* New: Duplicate plugin guard — detect multiple active Amadast Shipping copies by Text Domain / plugin name even if folder names differ; keep newest, auto-deactivate older.
* Enhancement: Calculator polling waits for full completion before adding checkout rates; logs which requested providers are missing and why.
* Enhancement: Admin activity log filtered to real events (settings, calculator, packaging, auth, connectivity, errors) — removed noisy init/debug noise.
* Fix: Mixed free + paid cart products no longer hide paid Amadast rates behind free shipping.
* Fix: Legacy removed providers (regular/express post and similar) filtered out; migration normalizes saved allow-methods to the new API IDs.
* Fix: Duplicate courier rows caused by mapping both courier id and shipping_method id.
* Fix: Provider city modal closes correctly on confirm/close.
* Fix: Admin shipping-test price display uses readable currency labels instead of broken IRT HTML.
* Fix: Checkout provider label duplication when icons are enabled.

= 3.3.2 - 2026-08-31 =
* Enhancement: Redesigned admin settings with a right-side sidebar navigation and per-page headers.
* Enhancement: Calculator API wait time is now fixed between 60–120 seconds; the manual setting was removed to prevent misconfiguration.
* Enhancement: Shipping method is created automatically on install/update; a warning banner appears only if auto-creation fails.
* Fix: Only Amadast-related admin notices are shown on plugin settings pages.

= 3.3.1 - 2026-06-28 =
* Fix: OTP login page — mobile field and form actions now render correctly (wp_kses_post was stripping script tags and tel inputs).
* Fix: Moved OTP/auth JavaScript to enqueued assets/js/auth.js per WordPress coding standards.

= 3.2.3 - 2026-06-11 =
* New: Display priority per shipping provider — control checkout order (lower number = shown first).
* New: Max weight limit per provider — hide methods when cart weight exceeds the limit (grams).
* New: Custom shipping methods with conditional display (province, city, weight, cart total, products).
* New: Custom methods support free/paid shipping and COD (پس کرایه), shown as Amadast methods in orders.
* Compliance: WordPress.org review fixes — plugin rename, readme metadata, external services docs, escaping/sanitization.

= 3.2.2 - 2026-06-02 =
* Compliance: Set WordPress "Tested up to" to major version 7.0 (WordPress.org plugin guidelines).
* Compliance: Removed custom Plugin Update Checker; updates are delivered only via WordPress.org.

= 3.2.1 - 2026-05-29 =
- New: Configurable calculator API wait time on checkout (default 4 seconds) in calculator settings.
- Enhancement: On timeout, fallback to AI price estimation (1 second) when enabled, then fixed rate.
- Enhancement: Faster shipping price polling and deadline-aware HTTP timeouts on checkout.
- Enhancement: Fixed-rate shipping label on checkout shows as "هزینه ارسال:"; admin orders show "هزینه ثابت" as rate source.

= 1.0.0 - 2023-09-23 =
* Official Plugin Release

= 2.0.3 - 2024-12-29 =
* Official WordPress Repository Release

= 2.1.0 - 2025-01-01 =
* feat: Set weight in woocommerce api
* chore: ordering cities
* chore: show hint if the cart page is not supported
* chore: show hint if the checkout page is not supported

= 2.1.1 - 2025-01-04 =
* fix: reported issues
 
= 2.1.2 - 2025-09-01 =
* Compatibility: Tested with WordPress 6.7.1 and WooCommerce 9.5.1. Requires PHP 8.0+ (compatible with 8.2+).
* Fix: Resolved PHP 8.2 deprecations by adding typed properties to AMDSP_Online_Method and removing dynamic property writes.
* Fix: Avoided deprecated intval() usage with null base; now properly handles defaults.
* Enhancement: Treat WooCommerce Cart/Checkout Blocks as compatible to remove false error notices.
* Enhancement: Fallback resolution from city name to city ID with Persian/Arabic character normalization for better Blocks support.
* Enhancement: Admin compatibility notices are now dismissible.
* Dev: Use AMDSP_VERSION for script versioning to improve cache-busting across releases.
 * New: Completely redesigned settings panel UI with improved UX and Persian typography.
 * New: OTP-based Amadast account authentication inside settings with account info view and logout.
 * New: Logs tab with inline viewer (tail) and secure log download.
 * New: Export/Import all plugin settings as JSON from the settings page.
 * New: Advanced city picker for selecting free-shipping cities with search and multi-select.
 * New: Auto-detect WooCommerce weight unit and normalize to grams; manual override option available.
 * New: Default product dimensions (cm) setting to improve package-size detection when product dimensions are missing.
 * New: Post-payment (pay-on-delivery) toggle with per-carrier options (Post, Tipax).
 * New: Admin tool to ensure the Amadast shipping method exists in WooCommerce zones (with AJAX button).
 * Change: Added extra-cost (fixed and percent) settings and "hide other methods when free shipping is available" toggle.
 * Change: Added fallback shipping price when API is down (base + per-kilo extras) settings.
 * Dev: Version upgrades include data migrations (2.1.2 to ensure shipping method; 2.1.3 to convert default dimensions from mm to cm when needed).

 
= 3.2.0 - 2026-04-08 =
- Compatibility: Added broader compatibility improvements with newer WordPress/WooCommerce versions.
- Enhancement: Added automatic detection and auto-fix tools for city/state checkout fields, including an alternative loading method for improved reliability.
- Fix: Resolved an issue where Post and other courier services could intermittently not appear on the checkout page.
- Enhancement: Improved overall stability and compatibility with newer environments.
- New: AI-based shipping price estimation when Amadast/Post services are unavailable.
- New: Integrated a new AI-powered package type detection service (box_id + packing_id).
- New: Added Boxit shipping provider.
- New: Added in-person pickup option for local customers.
- New: Added advanced fallback customization when Amadast/Post APIs are unavailable (custom message or admin-defined fixed pricing).
- Enhancement: Improved plugin settings UX and added more customization options.
- Enhancement: Improved plugin logging (more structured, safer, and more actionable).
- Dev: In the WooCommerce wc-json order output, packing metadata can be identified via: box_id, packing_id, and source (ai / algo / manual).
