=== QTech Shipping ===
Contributors: qtech
Tags: woocommerce, shipping, flat rate, free shipping
Requires at least: 6.3
Requires PHP: 7.4
Stable tag: 1.2.3
License: GPLv2 or later

Lightweight WooCommerce shipping method with a flat rate and optional free shipping threshold.

== Features ==

* Add QTech Shipping to any WooCommerce shipping zone.
* Set a flat shipping rate.
* Enable or disable a free shipping threshold.
* Set the threshold amount.
* Set separate customer-facing titles for Flat Shipping and Free Shipping.
* Display a configurable free shipping reminder with the remaining amount.
* Optionally display a free shipping progress bar.
* Optional shipping tax calculation.
* Supports multiple zone instances.

== Example ==

Flat rate: AED 20
Free shipping threshold: AED 200

Orders below AED 200: AED 20 shipping.
Orders at or above AED 200: Free shipping.

Reminder example: You only need AED 50 more to get free shipping!

== 1.0.3 ==

* Fixed the reminder so it can appear on dynamic cart and checkout pages.
* Added frontend refresh handling for WooCommerce cart/checkout updates.
* Kept the same qtech-shipping plugin slug for in-place updates.

== 1.0.5 ==

* Fixed an early frontend class access that could cause a fatal error and blank cart page.
* Reminder configuration is now printed only after WooCommerce is initialized.
* Removed DOM mutation observation and retained safe cart refresh handling.

== 1.0.6 ==

* Reworked the free shipping reminder to follow the WooCommerce lifecycle used by Flexible Shipping.
* The reminder is generated from the actual calculated QTech shipping rate.
* Uses native WooCommerce notices on classic Cart and Checkout pages.
* Added WooCommerce fragment refresh support so the remaining amount updates after cart changes.
* Added Flexible Shipping-style progress bar markup.
* Removed the previous frontend polling/configuration approach.

== 1.0.7 ==

* Reworked free shipping reminder to follow Flexible Shipping's WooCommerce lifecycle.
* Removed recursive/manual shipping recalculation that could cause Cart and Checkout fatal errors.
* Reminder is now generated directly from WooCommerce package rates and stored in the session.
* Native WooCommerce notice and checkout fragment behavior added.

== 1.0.8 ==

* Reworked free shipping reminder to follow the Flexible Shipping lifecycle more closely.
* Generates reminder data during WooCommerce package-rate calculation and stores it in the session.
* Uses native WooCommerce notices and checkout fragments.
* Added a safe shipping-zone fallback without recursively recalculating shipping.

== 1.0.9 ==

* Reworked the free shipping reminder to render directly in the WooCommerce Cart and Checkout lifecycle.
* Added reliable Checkout fragment refresh support.
* Removed the previous session/notice timing implementation that could silently fail.

== 1.1.0 ==
* Reworked the free-shipping reminder to follow Flexible Shipping's package-rate/session lifecycle.
* Added reliable Cart/Checkout rendering and checkout fragments.
* Avoided recursive shipping calculations.

== 1.2.0 ==

* Reworked the free shipping reminder to follow WooCommerce's native notice lifecycle and the relevant Flexible Shipping architecture.
* Removed frontend polling and reminder JavaScript.
* Added safe progress bar markup to the native WooCommerce notice.

== 1.2.1 ==

* Finalized free shipping reminder lifecycle to match WooCommerce and Flexible Shipping behavior.
* Uses calculated/cached package rates without recursive shipping calculation.
* Renders through native WooCommerce notices on Cart and Checkout.

== 1.2.3 ==

* Fixed the free shipping reminder appearing twice after Cart/Checkout updates.
* Removed native WooCommerce session-backed reminder notices in favor of one dedicated QTech reminder container.
* Added a single Cart/Checkout render hook and cart fragment replacement for reliable updates.
* Clears legacy QTech reminder notices left by previous plugin versions.
