=== WooCommerce ===
Contributors: automattic, woocommerce, mikejolley, jameskoster, claudiosanches, rodrigosprimo, peterfabian1000, vedjain, jamosova, obliviousharmony, konamiman, sadowski, wpmuguru, royho, barryhughes-1, claudiulodro, tiagonoronha, ryelle, levinmedia, aljullu, nerrad, joshuawold, assassinateur, haszari, mppfeiffer, nielslange, opr18, ralucastn, tjcafferkey, danielwrobert, patriciahillebrandt, albarin, dinhtungdu, imanish003, karolmanijak, sunyatasattva, alexandrelara, gigitux, danieldudzic, samueljseay, alexflorisca, opr18, tarunvijwani, pauloarromba, saadtarhi, bor0, kloon, coreymckrill, jorgeatorres, leifsinger, neosinner
Tags: online store, ecommerce, shop, shopping cart, sell online
Requires at least: 7.0
Tested up to: 7.1
Requires PHP: 7.4
Stable tag: 11.0.1
License: GPLv3
License URI: https://www.gnu.org/licenses/gpl-3.0.html

Everything you need to launch an online store in days and keep it growing for years. From your first sale to millions in revenue, Woo is with you.

== Description ==

[WooCommerce](https://woocommerce.com/woocommerce/) is the open-source ecommerce platform for WordPress.

Our core platform is free, flexible, and amplified by a global community. The freedom of open-source means you retain full ownership of your store’s content and data forever.

Whether you’re launching a business, taking brick-and-mortar retail online, or developing sites for clients, use WooCommerce for a store that powerfully blends content and commerce.

- **Create beautiful, enticing storefronts** with [themes](https://woocommerce.com/product-category/themes/?utm_medium=referral&utm_source=wordpress.org&utm_campaign=wp_org_repo_listing) suited to your brand and industry.
- **Increase revenue** with an optimized [shopping cart experience](https://woocommerce.com/checkout-blocks/?utm_medium=referral&utm_source=wordpress.org&utm_campaign=wp_org_repo_listing) that converts.
- **Customize product pages in minutes** using modular [product blocks](https://woocommerce.com/document/woocommerce-blocks/?utm_medium=referral&utm_source=wordpress.org&utm_campaign=wp_org_repo_listing).
- Showcase physical and digital goods, product variations, custom configurations, instant downloads, and affiliate items.
- Sell [subscriptions](https://woocommerce.com/products/woocommerce-subscriptions/?utm_medium=referral&utm_source=wordpress.org&utm_campaign=wp_org_repo_listing), [bookings](https://woocommerce.com/products/woocommerce-bookings/?utm_medium=referral&utm_source=wordpress.org&utm_campaign=wp_org_repo_listing), or [memberships](https://woocommerce.com/products/woocommerce-memberships/?utm_medium=referral&utm_source=wordpress.org&utm_campaign=wp_org_repo_listing), with our developer-vetted extensions.
- **Rise to the top of search results** by leveraging [WordPress’ SEO advantage](https://www.searchenginejournal.com/wordpress-best-cms-seo/).
- **Build on a platform that scales.** Get flexible ecommerce for [high-volume stores](https://woocommerce.com/high-volume-stores/?utm_medium=referral&utm_source=wordpress.org&utm_campaign=wp_org_repo_listing).

= ALL THE TOOLS YOU NEED TO SELL =

Built-in tools and popular integrations help you efficiently manage your business operations. Many services are free to add with a single click via the optional [Setup Wizard](https://woocommerce.com/document/woocommerce-setup-wizard/?utm_medium=referral&utm_source=wordpress.org&utm_campaign=wp_org_repo_listing).

- **Choose how you want to get paid**. Conveniently manage payments from the comfort of your store with [WooPayments](https://woocommerce.com/payments/?utm_medium=referral&utm_source=wordpress.org&utm_campaign=wp_org_repo_listing) (Available in the U.S., U.K., Ireland, Australia, New Zealand, Canada, Spain, France, Germany, and Italy). Securely accept credit cards, mobile wallets, bank transfers, and cash thanks to [100+ payment gateways](https://woocommerce.com/product-category/woocommerce-extensions/payment-gateways/?utm_medium=referral&utm_source=wordpress.org&utm_campaign=wp_org_repo_listing) – including [Stripe](https://woocommerce.com/products/stripe/?utm_medium=referral&utm_source=wordpress.org&utm_campaign=wp_org_repo_listing), [PayPal](https://woocommerce.com/products/woocommerce-gateway-paypal-checkout/?utm_medium=referral&utm_source=wordpress.org&utm_campaign=wp_org_repo_listing), and [Square](https://woocommerce.com/products/square/?utm_medium=referral&utm_source=wordpress.org&utm_campaign=wp_org_repo_listing).
- **Configure your shipping options**. Print USPS labels right from your dashboard and even schedule a pickup with [WooCommerce Shipping](https://woocommerce.com/products/shipping/?utm_medium=referral&utm_source=wordpress.org&utm_campaign=wp_org_repo_listing) (U.S.-only). Connect with [well-known carriers](https://woocommerce.com/product-category/woocommerce-extensions/shipping-methods/?utm_medium=referral&utm_source=wordpress.org&utm_campaign=wp_org_repo_listing) such as UPS and FedEx – plus a wide variety of delivery, inventory, and fulfillment solutions for your locale.
- **Simplify sales tax**. Add [WooCommerce Tax](https://woocommerce.com/products/tax/?utm_medium=referral&utm_source=wordpress.org&utm_campaign=wp_org_repo_listing) or [similar integrated services](https://woocommerce.com/product-category/woocommerce-extensions/tax?utm_medium=referral&utm_source=wordpress.org&utm_campaign=wp_org_repo_listing) to make automated calculations a reality.

= Grow your business, add features, and monitor your store on the go =

WooCommerce means business. Keep tabs on the performance metrics most important to you with a powerful and flexible central dashboard built into WooCommerce.

Expand your audience across marketing and social channels with [Google Ads](https://woocommerce.com/products/google-ads/?utm_medium=referral&utm_source=wordpress.org&utm_campaign=wp_org_repo_listing), [HubSpot](https://woocommerce.com/products/hubspot-for-woocommerce/?utm_medium=referral&utm_source=wordpress.org&utm_campaign=wp_org_repo_listing), [Mailchimp](https://woocommerce.com/products/mailchimp-for-woocommerce/?utm_medium=referral&utm_source=wordpress.org&utm_campaign=wp_org_repo_listing), and [Facebook](https://woocommerce.com/products/facebook/?utm_medium=referral&utm_source=wordpress.org&utm_campaign=wp_org_repo_listing) integrations. You can always check out the in-dashboard [Marketing Hub](https://woocommerce.com/document/marketing-hub/?utm_medium=referral&utm_source=wordpress.org&utm_campaign=wp_org_repo_listing) for fresh ideas and tips to help you succeed.

Enhance store functionality with hundreds of free and paid extensions from the [WooCommerce Marketplace](https://woocommerce.com/products/?utm_medium=referral&utm_source=wordpress.org&utm_campaign=wp_org_repo_listing). Our developers [vet each new extension](https://woocommerce.com/document/marketplace-overview/#section-6?utm_medium=referral&utm_source=wordpress.org&utm_campaign=wp_org_repo_listing) and regularly review existing extensions to maintain Marketplace quality standards. We are actively [looking for products that help store builders create successful stores](https://woocommerce.com/document/marketplace-overview/#section-2?utm_medium=referral&utm_source=wordpress.org&utm_campaign=wp_org_repo_listing).

Manage your store from anywhere with the free WooCommerce [mobile app](https://woocommerce.com/mobile/?utm_medium=referral&utm_source=wordpress.org&utm_campaign=wp_org_repo_listing) (Android and iOS). Spoiler alert: Keep an ear out for the slightly addictive "cha-ching" notification sound each time you make a new sale!

= Own and control your store data – forever =

With [WooCommerce](https://woocommerce.com/woocommerce/), your data belongs to you. Always.

If you opt to share [usage data](https://woocommerce.com/usage-tracking/?utm_medium=referral&utm_source=wordpress.org&utm_campaign=wp_org_repo_listing) with us, you can feel confident knowing that it’s anonymized and kept secure. Choose to opt-out at any time without impacting your store.

Unlike hosted ecommerce solutions, WooCommerce store data is future-proof; you’re free to export all your content and take your site to any platform you choose. No restrictions.

= Why developers choose (and love) WooCommerce =

Developers can use [WooCommerce](https://woocommerce.com/woocommerce/) to create, customize, and scale a store to meet a client’s exact specifications, making enhancements through extensions or custom solutions.

- Leverage [hooks and filters](https://woocommerce.com/document/introduction-to-hooks-actions-and-filters/?utm_medium=referral&utm_source=wordpress.org&utm_campaign=wp_org_repo_listing) to modify or create functionality.
- Integrate virtually any service using a robust [REST API](https://developer.woocommerce.com/docs/getting-started-with-the-woocommerce-rest-api/?utm_medium=referral&utm_source=wordpress.org&utm_campaign=wp_org_repo_listing) and webhooks.
- Design and build custom content blocks with React.
- [Inspect and modify](https://developer.woocommerce.com/docs/category/extension-development/?utm_medium=referral&utm_source=wordpress.org&utm_campaign=wp_org_repo_listing) any aspect of the core plugin code.
- Speed up development with a lightning-fast [CLI](https://developer.woocommerce.com/docs/category/wc-cli/?utm_medium=referral&utm_source=wordpress.org&utm_campaign=wp_org_repo_listing).

The core platform is tested rigorously and often, supported by a dedicated development team working across time zones. Comprehensive documentation is updated with each release, empowering you to build exactly the store required.

= Be part of our growing international community =

WooCommerce has a large, passionate community dedicated to helping merchants succeed – and it’s growing fast.

There are [WooCommerce Meetups](https://woocommerce.com/meetups/?utm_medium=referral&utm_source=wordpress.org&utm_campaign=wp_org_repo_listing) in locations around the world that you can attend for free and even get involved in running. These events are a great way to learn from others, share your expertise, and connect with like-minded folks.

WooCommerce also has a regular presence at WordCamps across the globe – we’d love to meet you.

= Contribute and translate =

WooCommerce is developed and supported by Automattic, the creators of WordPress.com and Jetpack. We also have hundreds of independent contributors, and there’s always room for more. Head to the [WooCommerce GitHub Repository](https://github.com/woocommerce/woocommerce?utm_medium=referral&utm_source=wordpress.org&utm_campaign=wp_org_repo_listing) to find out how you can pitch in.

WooCommerce is translated into multiple languages, including Danish, Ukrainian, and Persian. Help localize WooCommerce even further by adding your locale – visit [translate.wordpress.org](https://translate.wordpress.org/projects/wp-plugins/woocommerce/?utm_medium=referral&utm_source=wordpress.org&utm_campaign=wp_org_repo_listing).

= Connection to WooCommerce.com =

You can connect your store to [WooCommerce.com](https://woocommerce.com/) to manage your subscriptions on WooCommerce Marketplace and receive product updates without leaving WordPress admin. Connection also enables installation of purchased products right from WooCommerce.com and streamlines access to technical support. If you’d like to learn about what data is gathered and how it is used, please refer to our [Privacy Policy](https://automattic.com/privacy/).

== Frequently Asked Questions ==

= Where can I find WooCommerce documentation and user guides? =

For help setting up and configuring WooCommerce, please refer to [Getting Started](https://woocommerce.com/documentation/plugins/woocommerce/getting-started/?utm_medium=referral&utm_source=wordpress.org&utm_campaign=wp_org_repo_listing) and the [New WooCommerce Store Owner Guide](https://woocommerce.com/guides/new-store/?utm_medium=referral&utm_source=wordpress.org&utm_campaign=wp_org_repo_listing).

For extending or theming WooCommerce, see our [documentation](https://github.com/woocommerce/woocommerce/tree/trunk/docs), as well as the [Plugin Developer Best Practices](https://github.com/woocommerce/woocommerce/blob/trunk/docs/extension-development/extension-development-best-practices.md).

= Where can I get help or talk to other users about WooCommerce Core? =

If you get stuck, you can ask for help in the [WooCommerce Support Forum](https://wordpress.org/support/plugin/woocommerce/?utm_medium=referral&utm_source=wordpress.org&utm_campaign=wp_org_repo_listing) by following [these guidelines](https://wordpress.org/support/topic/guide-to-the-woocommerce-forum/?utm_medium=referral&utm_source=wordpress.org&utm_campaign=wp_org_repo_listing), reach out via the [WooCommerce Community Slack](https://woocommerce.com/community-slack/?utm_medium=referral&utm_source=wordpress.org&utm_campaign=wp_org_repo_listing), or post in the [WooCommerce Community group](https://www.facebook.com/groups/advanced.woocommerce?utm_medium=referral&utm_source=wordpress.org&utm_campaign=wp_org_repo_listing) on Facebook.

= Where can I get help for extensions I have purchased from the WooCommerce Marketplace? =

For assistance with paid extensions from the WooCommerce Marketplace: first, review our [self-service troubleshooting guide](https://woocommerce.com/document/woocommerce-self-service-guide/). If the problem persists, kindly log a support ticket via [our helpdesk](https://woocommerce.com/my-account/create-a-ticket/). Our dedicated Happiness Engineers aim to respond within 24 hours.

= I’m having trouble logging in to WooCommerce.com – what now? =

First, troubleshoot common login issues using this helpful [step-by-step guide](https://woocommerce.com/document/log-into-woocommerce-com-with-wordpress-com/?utm_medium=referral&utm_source=wordpress.org&utm_campaign=wp_org_repo_listing). Still not working? [Get in touch with us](https://woocommerce.com/contact-us/?utm_medium=referral&utm_source=wordpress.org&utm_campaign=wp_org_repo_listing).

= Will WooCommerce work with my theme? =

Yes! WooCommerce will work with any theme but may require some additional styling. If you’re looking for a theme featuring deep WooCommerce integration, we recommend [Storefront](https://woocommerce.com/storefront/?utm_medium=referral&utm_source=wordpress.org&utm_campaign=wp_org_repo_listing).

= How do I update WooCommerce? =

We have a detailed guide on [How To Update WooCommerce](https://woocommerce.com/document/how-to-update-woocommerce/?utm_medium=referral&utm_source=wordpress.org&utm_campaign=wp_org_repo_listing).

= My site broke – what do I do? =

Start by diagnosing the issue using our helpful [troubleshooting guide](https://woocommerce.com/documentation/get-help/troubleshooting-get-help/?utm_medium=referral&utm_source=wordpress.org&utm_campaign=wp_org_repo_listing).

If you noticed the error after updating a theme or plugin, there might be compatibility issues between it and WooCommerce. If the issue appeared after updating WooCommerce, there could be a conflict between WooCommerce and an outdated theme or plugin.

In both instances, we recommend running a conflict test using [Health Check](https://woocommerce.com/document/troubleshooting-using-health-check/?utm_medium=referral&utm_source=wordpress.org&utm_campaign=wp_org_repo_listing) (which allows you to disable themes and plugins without affecting your visitors) or troubleshooting the issue using a [staging site](https://woocommerce.com/document/how-to-test-for-conflicts/#section-3?utm_medium=referral&utm_source=wordpress.org&utm_campaign=wp_org_repo_listing).

= Where can I report bugs? =

Report bugs on the [WooCommerce GitHub repository](https://github.com/woocommerce/woocommerce/issues?utm_medium=referral&utm_source=wordpress.org&utm_campaign=wp_org_repo_listing). You can also notify us via our support forum – be sure to search the forums to confirm that the error has not already been reported.

= Where can I request new features, themes, and extensions? =

Request new features and extensions and vote on existing suggestions on our official [feature request board](https://woocommerce.com/feature-requests/woocommerce?utm_medium=referral&utm_source=wordpress.org&utm_campaign=wp_org_repo_listing). Our Product teams regularly review requests and consider them valuable for product planning.

= WooCommerce is awesome! Can I contribute? =

Yes, you can! Join in on our [GitHub repository](https://github.com/woocommerce/woocommerce/?utm_medium=referral&utm_source=wordpress.org&utm_campaign=wp_org_repo_listing) and follow the [development blog](https://developer.woocommerce.com/?utm_medium=referral&utm_source=wordpress.org&utm_campaign=wp_org_repo_listing) to stay up-to-date with everything happening in the project.

= Where can I find REST API documentation? =

Extensive [WooCommerce REST API Documentation](https://developer.woocommerce.com/docs/apis/rest-api/?utm_medium=referral&utm_source=wordpress.org&utm_campaign=wp_org_repo_listing) is available.

= My question is not listed here. Where can I find more answers? =

Check out [Frequently Asked Questions](https://woocommerce.com/document/frequently-asked-questions/?utm_medium=referral&utm_source=wordpress.org&utm_campaign=wp_org_repo_listing) for more.

== Installation ==

= Minimum Requirements =

* PHP 7.4 or greater is required (PHP 8.0 or greater is recommended)
* MySQL 5.5.5 or greater, OR MariaDB version 10.1 or greater, is required
* WordPress 7.0 or greater
* (Recommended) WordPress [memory limit](https://woocommerce.com/document/increasing-the-wordpress-memory-limit/) of 256 MB or greater.
* (Recommended) [HTTPS](https://woocommerce.com/document/ssl-and-https/) support.

= Automatic installation =

Automatic installation is the easiest option -- WordPress will handle the file transfer, and you won’t need to leave your web browser. To do an automatic install of WooCommerce, log in to your WordPress dashboard, navigate to the Plugins menu, and click “Add New.”

In the search field type “WooCommerce,” then click “Search Plugins.” Once you’ve found us,  you can view details about it such as the point release, rating, and description. Most importantly of course, you can install it by! Click “Install Now,” and WordPress will take it from there.

= Manual installation =

Manual installation method requires downloading the WooCommerce plugin and uploading it to your web server via your favorite FTP application. The WordPress codex contains [instructions on how to do this here](https://wordpress.org/support/article/managing-plugins/#manual-plugin-installation).

= Updating =

Automatic updates should work smoothly, but we still recommend you back up your site.

If you encounter issues with the shop/category pages after an update, flush the permalinks by going to WordPress > Settings > Permalinks and hitting “Save.” That should return things to normal.

= Sample data =

WooCommerce comes with some sample data you can use to see how products look; import sample_products.xml via the [WordPress importer](https://wordpress.org/plugins/wordpress-importer/). You can also use the core [CSV importer](https://woocommerce.com/document/product-csv-importer-exporter/?utm_source=wp%20org%20repo%20listing&utm_content=3.6) or our [CSV Import Suite extension](https://woocommerce.com/products/product-csv-import-suite/?utm_source=wp%20org%20repo%20listing&utm_content=3.6) to import sample_products.csv

== Changelog ==

= 11.1.0 2026-09-03 =

**WooCommerce**

* Fix - Activity Panel counts endpoint now respects an explicitly-empty actionable order statuses setting instead of falling back to the defaults, so a cleared setting reports zero orders to fulfill. [#66483](https://github.com/woocommerce/woocommerce/pull/66483)
* Fix - Add aria-label to Product Gallery Thumbnails [#67303](https://github.com/woocommerce/woocommerce/pull/67303)
* Fix - Add a visible validation message for the checkout terms and conditions checkbox. [#66449](https://github.com/woocommerce/woocommerce/pull/66449)
* Fix - Add explicit sale date fields to product Quick Edit and save schedules consistently with the full product editor. [#66931](https://github.com/woocommerce/woocommerce/pull/66931)
* Fix - Align the Core Breadcrumbs block output with WooCommerce Store Breadcrumbs on shop, product, account, archive, and custom taxonomy pages. [#66382](https://github.com/woocommerce/woocommerce/pull/66382)
* Fix - Align the Payments settings partner recommendations with the partnership tracking sheet: add Mayotte, add PayPal to Guyana, add Airwallex to Malaysia and South Korea, make MONEI the preferred provider in Andorra, and place Paytrail before GoCardless in Finland. [#67395](https://github.com/woocommerce/woocommerce/pull/67395)
* Fix - Allow customers to save account details when an unchanged display name is already an email address. [#66645](https://github.com/woocommerce/woocommerce/pull/66645)
* Fix - Allow null parent names in REST API order line items. [#66636](https://github.com/woocommerce/woocommerce/pull/66636)
* Fix - Allow Product Gallery variation events to use numeric string IDs. [#67768](https://github.com/woocommerce/woocommerce/pull/67768)
* Fix - Allow REST order updates to accept round-tripped line item meta display values with complex data. [#65513](https://github.com/woocommerce/woocommerce/pull/65513)
* Fix - Allow Shop Managers to save Local Pickup settings by adding a dedicated /wc/v3/pickup-locations REST route guarded by the manage_woocommerce capability, instead of posting to /wp/v2/settings which requires manage_options. [#65286](https://github.com/woocommerce/woocommerce/pull/65286)
* Fix - Analytics: initialize the Date type selector in Analytics settings with the effective date_paid default instead of rendering blank when the option was never saved. [#67423](https://github.com/woocommerce/woocommerce/pull/67423)
* Fix - Apply block support styles to legacy Product Reviews block wrappers. [#67754](https://github.com/woocommerce/woocommerce/pull/67754)
* Fix - Apply shipping tax to manual orders that contain shipping but no products. [#66639](https://github.com/woocommerce/woocommerce/pull/66639)
* Fix - Apply the stepper quantity-selector styles only to quantity containers that hold a visible quantity input, so a form containing both visible and hidden quantity fields no longer renders a stepper box around a hidden one. [#67153](https://github.com/woocommerce/woocommerce/pull/67153)
* Fix - Blueprint: match the restricted site options list regardless of the casing, padding or accents used in an imported key, so a variant spelling can no longer overwrite a restricted option such as wp_user_roles. [#67348](https://github.com/woocommerce/woocommerce/pull/67348)
* Fix - Cap quantity-form v4 refund amounts to the line's remaining refundable amount so sequential partial refunds can always refund the remaining items instead of failing on rounding drift. [#66884](https://github.com/woocommerce/woocommerce/pull/66884)
* Fix - Cart Link block: set the cart icon width to match the Mini-Cart icon size (1.5em) so it no longer renders oversized. [#65875](https://github.com/woocommerce/woocommerce/pull/65875)
* Fix - Change CSV batch exporter default fopen mode from a+ to a for S3 stream wrapper compatibility and add error logging when opening, writing to, or closing the export file fails. [#66295](https://github.com/woocommerce/woocommerce/pull/66295)
* Fix - Clarify the on-hold order email for payment flows that require another step. [#66914](https://github.com/woocommerce/woocommerce/pull/66914)
* Fix - Clear cached payment provider lists when the payment providers service cache is cleared. [#66909](https://github.com/woocommerce/woocommerce/pull/66909)
* Fix - Complete the WPDS token migration for the Settings UI shell while preserving compatibility-specific dimensions. [#67150](https://github.com/woocommerce/woocommerce/pull/67150)
* Fix - Correct the Macanese pataca currency symbol to MOP$. [#66716](https://github.com/woocommerce/woocommerce/pull/66716)
* Fix - Correct the Zambian kwacha currency symbol from ZK to K. This changes the public symbol returned by currency APIs and the symbol recognized when saving flat-rate shipping costs. [#66722](https://github.com/woocommerce/woocommerce/pull/66722)
* Fix - CSV importer: clear removed gallery images when reducing the number of images for an existing product. [#66213](https://github.com/woocommerce/woocommerce/pull/66213)
* Fix - CSV product importer: match special columns (attributes, downloads, meta) by prefix instead of with unanchored regexes, so columns that merely contain a special name no longer get the wrong formatting callback. [#66825](https://github.com/woocommerce/woocommerce/pull/66825)
* Fix - Delete expired transient files on sites whose uploads directory is a stream wrapper path, such as S3-Uploads and WordPress VIP installs, where the cleanup previously reported success without deleting anything. [#67670](https://github.com/woocommerce/woocommerce/pull/67670)
* Fix - Deprecate the woocommerce_coupon_object_updated_props action in favor of the new woocommerce_coupon_updated_props action, which reports only the properties changed by the current save. The deprecated action keeps firing with its historical payload (properties accumulated across saves through the same data store instance, with duplicates) whenever it has listeners. WC_Coupon_Data_Store_CPT::$updated_props is deprecated. [#67168](https://github.com/woocommerce/woocommerce/pull/67168)
* Fix - Detect REST API requests made via the ?rest_route= query parameter (plain permalinks, Jetpack-signed requests) in is_rest_api_request(). [#66816](https://github.com/woocommerce/woocommerce/pull/66816)
* Fix - Detect Store API requests made with plain permalinks (?rest_route=/wc/store/) so they are correctly identified. [#65781](https://github.com/woocommerce/woocommerce/pull/65781)
* Fix - Enhanced product search multi-selects (e.g. Linked Products) no longer list products that are already selected, so re-clicking a product in the results can no longer silently remove it from the selection. [#67063](https://github.com/woocommerce/woocommerce/pull/67063)
* Fix - Ensure Helcim account connectivity follows the gateway's setup status. [#67398](https://github.com/woocommerce/woocommerce/pull/67398)
* Fix - Ensure Product Categories, Product Tags, and Brands menu meta boxes are visible by default on the Appearance > Menus screen. [#65990](https://github.com/woocommerce/woocommerce/pull/65990)
* Fix - Ensure the toggle button in the product list table stays aligned on mobile view. [#58774](https://github.com/woocommerce/woocommerce/pull/58774)
* Fix - Ensure the woocommerce_placeholder_img_src filter applies to attachment-based product placeholders. [#66717](https://github.com/woocommerce/woocommerce/pull/66717)
* Fix - Ensure unsupported WooCommerce blocks are hidden from the Customizer's widget inserter. [#66650](https://github.com/woocommerce/woocommerce/pull/66650)
* Fix - Excluded product IDs no longer leak back into product search results through matching variations of a variable product or through numeric search terms. [#67308](https://github.com/woocommerce/woocommerce/pull/67308)
* Fix - Fire the cart store's cross-store sync event, legacy added-to-cart event, and screen-reader announcement once per mutation batch cycle instead of once per request, removing the redundant resync requests and duplicate events/announcements produced when several cart mutations are coalesced into one cycle. [#66748](https://github.com/woocommerce/woocommerce/pull/66748)
* Fix - Fix: make coming soon page theme-aware and simplify layout [#65816](https://github.com/woocommerce/woocommerce/pull/65816)
* Fix - fix: using window.wc instead of wc in classic checkout so they no longer break when a third-party script shadows the global wc binding. [#66349](https://github.com/woocommerce/woocommerce/pull/66349)
* Fix - Fix :where() selectors in Brands shortcode [#66497](https://github.com/woocommerce/woocommerce/pull/66497)
* Fix - Fix a fatal error on `/wp-admin/widgets.php` and other admin surfaces when a WooCommerce product block is registered to render in a widget area and a WooCommerce session becomes active during the request. [#66641](https://github.com/woocommerce/woocommerce/pull/66641)
* Fix - Fix a PHP warning raised on the first step of every CSV product export. [#66585](https://github.com/woocommerce/woocommerce/pull/66585)
* Fix - Fix a set of styling issues on the Payments settings screens: the white content background now reaches the bottom of the page, headings match the colour used elsewhere, the dividers under the headers are drawn consistently while the screen loads, the whole offline payments header title acts as the back control, and the offline payment method settings form is aligned and spaced evenly. [#67464](https://github.com/woocommerce/woocommerce/pull/67464)
* Fix - Fix clearing a log source so it reliably deletes all of that source's log files, and only that source's files (previously it stopped after 20 files and could remove files from other sources sharing the same name prefix). [#66170](https://github.com/woocommerce/woocommerce/pull/66170)
* Fix - Fix CSV importer HTML-encoding attribute names, which prevented matching existing global attributes and caused duplicate attributes or slug-too-long import errors. [#66656](https://github.com/woocommerce/woocommerce/pull/66656)
* Fix - Fix duplicate headers on Settings UI drill-down pages. [#66854](https://github.com/woocommerce/woocommerce/pull/66854)
* Fix - Fix duplicate React keys for review loading placeholders. [#67666](https://github.com/woocommerce/woocommerce/pull/67666)
* Fix - Fix false "Daily Cron: Not scheduled" on Status page for fresh WooCommerce installs. [#66188](https://github.com/woocommerce/woocommerce/pull/66188)
* Fix - Fix Free Shipping method name duplicated in order emails with improvements enabled [#66034](https://github.com/woocommerce/woocommerce/pull/66034)
* Fix - Fix invalid label markup for classic settings radio fields. [#66705](https://github.com/woocommerce/woocommerce/pull/66705)
* Fix - Fix keyboard flow in the order Add products modal so products can be added without a rogue search box, and fix the clear/chevron icon overlap. [#66381](https://github.com/woocommerce/woocommerce/pull/66381)
* Fix - Fix legacy `wc/v3/reports/sales` and the other legacy admin reports returning empty results on HPOS-authoritative sites with sync disabled by routing `WC_Admin_Report::get_order_report_data()` through the HPOS schema (`wc_orders` / `wc_orders_meta` / `wc_order_operational_data`). [#65493](https://github.com/woocommerce/woocommerce/pull/65493)
* Fix - Fix long product names in the Add products modal running under the clear/chevron icons on WP 7.0+ and stretching the table past the modal edge. [#67774](https://github.com/woocommerce/woocommerce/pull/67774)
* Fix - Fix Mini-Cart block not visible in RTL languages [#67453](https://github.com/woocommerce/woocommerce/pull/67453)
* Fix - Fix Mini-Cart styles. [#66651](https://github.com/woocommerce/woocommerce/pull/66651)
* Fix - Fix missing default layout styles for the product_brand_thumbnails_description shortcode. [#66280](https://github.com/woocommerce/woocommerce/pull/66280)
* Fix - Fix PHP 8.5+ deprecation notices when a block without a front-end script (e.g. Coming Soon) registers chunk translations with a null script handle. [#66197](https://github.com/woocommerce/woocommerce/pull/66197)
* Fix - Fix printed order receipts: show the discount line for orders discounted without a coupon so the amounts add up to the total paid, and stop rendering an empty payment method section. [#67760](https://github.com/woocommerce/woocommerce/pull/67760)
* Fix - Fix product CSV importer form crashing when the mbstring extension is unavailable. [#66732](https://github.com/woocommerce/woocommerce/pull/66732)
* Fix - Fix Product Gallery showing the previously selected variation's image when used with the classic Add to Cart Form. [#67715](https://github.com/woocommerce/woocommerce/pull/67715)
* Fix - Fix product image gallery alignment when slide widths are fractional. [#66631](https://github.com/woocommerce/woocommerce/pull/66631)
* Fix - Fix quick edit saving empty stock quantity as null instead of 0 when manage stock is enabled. [#64551](https://github.com/woocommerce/woocommerce/pull/64551)
* Fix - Fix review count not updating on WooCommerce Home after moderating multiple reviews [#65830](https://github.com/woocommerce/woocommerce/pull/65830)
* Fix - Fix right-to-left (RTL) layout issues in the admin: the sample product import overlay position and its list chevrons, and the Customize Your Store banner illustration placement. [#66518](https://github.com/woocommerce/woocommerce/pull/66518)
* Fix - Fix robots.txt `Disallow` rules pointing at the wrong location on installs that relocate `wp-content` or the uploads directory. [#64582](https://github.com/woocommerce/woocommerce/pull/64582)
* Fix - Fix scheduled sales briefly showing and charging the wrong price between the sale start/end time and the scheduled-sale event running. [#65551](https://github.com/woocommerce/woocommerce/pull/65551)
* Fix - Fix Tax settings REST validation rejecting valid values when plugins filter options into a structured format. [#66536](https://github.com/woocommerce/woocommerce/pull/66536)
* Fix - Fix the dashboard status widget out-of-stock count for unmanaged products. [#66666](https://github.com/woocommerce/woocommerce/pull/66666)
* Fix - Fix the order-review moderation guard missing legacy reviews of variable-product variations. [#67071](https://github.com/woocommerce/woocommerce/pull/67071)
* Fix - Fix the order-review moderation guard missing reviews written before 10.9.0. [#66897](https://github.com/woocommerce/woocommerce/pull/66897)
* Fix - Fix the product_import_complete Tracks event never firing by checking for the actual `_wpnonce` request parameter present on the importer's done step instead of a non-existent `nonce` parameter. [#66556](https://github.com/woocommerce/woocommerce/pull/66556)
* Fix - Fix the Revenue report double-counting returns when an order has a partial refund followed by a full refund. [#66320](https://github.com/woocommerce/woocommerce/pull/66320)
* Fix - Guard against non-string screen ID in visual attribute script enqueue [#66655](https://github.com/woocommerce/woocommerce/pull/66655)
* Fix - Hide additional address fields with show_in_order_confirmation set to false from the order confirmation block theme thank you page, classic theme order details, and My Account order details. [#66899](https://github.com/woocommerce/woocommerce/pull/66899)
* Fix - Hide shipping details for non-shipping orders in the admin order summary. [#66488](https://github.com/woocommerce/woocommerce/pull/66488)
* Fix - Honour the position argument of wc_admin_register_page() for sub pages, so extensions can control where their React-powered pages appear within a parent submenu. Previously position was only passed to add_menu_page() for top level pages and silently ignored for sub pages. [#66826](https://github.com/woocommerce/woocommerce/pull/66826)
* Fix - Ignore a stale quality_badge URL param in marketplace search requests when the badge is disabled or IAM settings are unavailable, so the listing cannot stay silently filtered without the toggle that clears it. [#67683](https://github.com/woocommerce/woocommerce/pull/67683)
* Fix - Import gallery images from a CSV Images cell whose first value is empty (e.g. a value starting with a separator) instead of silently dropping them and leaving the previous gallery in place. [#66586](https://github.com/woocommerce/woocommerce/pull/66586)
* Fix - Improve keyboard and screen reader accessibility for button-like links in the classic cart. [#67137](https://github.com/woocommerce/woocommerce/pull/67137)
* Fix - Improve Product Image srcset to prevent wide images from appearing blurry in square blocks [#67325](https://github.com/woocommerce/woocommerce/pull/67325)
* Fix - Improve Product Image srcset to prevent wide images from appearing blurry [#67105](https://github.com/woocommerce/woocommerce/pull/67105)
* Fix - Improve the color contrast of custom date fields in legacy Reports. [#67014](https://github.com/woocommerce/woocommerce/pull/67014)
* Fix - Include product brands in visibility-aware product term recounts. [#67656](https://github.com/woocommerce/woocommerce/pull/67656)
* Fix - Include variable products with out-of-stock variations in the Products stock status filter. [#66942](https://github.com/woocommerce/woocommerce/pull/66942)
* Fix - Introduce --wc-separator-color CSS custom property for theme-aware border colors. Migrate $universal-border-light, the login/register form borders, and the mini-cart footer border to use this token. [#65697](https://github.com/woocommerce/woocommerce/pull/65697)
* Fix - Keep external products visible in the catalog after converting them from an out-of-stock product. [#67622](https://github.com/woocommerce/woocommerce/pull/67622)
* Fix - Keep merchants on the current variation page, with their unsaved edits intact, when the pagination save warning is dismissed. [#66998](https://github.com/woocommerce/woocommerce/pull/66998)
* Fix - Keep responsive Settings UI shell gutters synchronized with WPDS spacing tokens. [#67449](https://github.com/woocommerce/woocommerce/pull/67449)
* Fix - Keep shipping details visible in admin for physical Store API orders without a shipping method. [#66627](https://github.com/woocommerce/woocommerce/pull/66627)
* Fix - Keep the product image help tip aligned when setting or removing an image. [#66659](https://github.com/woocommerce/woocommerce/pull/66659)
* Fix - Keep the Review Order page from restoring an intentionally empty Shop page setting. If this bug restored your intentionally cleared Shop page setting, clear it once more after updating. [#67127](https://github.com/woocommerce/woocommerce/pull/67127)
* Fix - Keep the transient files directory working on sites whose uploads directory is a stream wrapper path, such as S3-Uploads and WordPress VIP installs. [#67670](https://github.com/woocommerce/woocommerce/pull/67670)
* Fix - Keep WooCommerce blocks registered while filtering block inserter availability by editor context. [#66314](https://github.com/woocommerce/woocommerce/pull/66314)
* Fix - Leading zeros are now trimmed from the coupon amount on save for cleaner display. [#66682](https://github.com/woocommerce/woocommerce/pull/66682)
* Fix - Load frontend includes during new post editor requests to avoid Product Collection block hydration fatals. [#66225](https://github.com/woocommerce/woocommerce/pull/66225)
* Fix - Log and stop redundantly deleting invalid version string cache entries, and correctly detect misses from object cache drop-ins that report them as null. [#67164](https://github.com/woocommerce/woocommerce/pull/67164)
* Fix - Make focus indicators consistent on the Payments settings screen: stop the "More payment options" ring from appearing on mouse click, give it room to breathe, round the square rings on the drag handle and section header, and give the Official badge, the category info icons and the status badge info icon themed focus rings instead of the browser default. The highlighted row in the business location selector now follows the admin colour scheme too. [#67448](https://github.com/woocommerce/woocommerce/pull/67448)
* Fix - Make Product Gallery layout honor custom Product Image aspect ratios. [#66441](https://github.com/woocommerce/woocommerce/pull/66441)
* Fix - Match order withdrawal requests by email address and order number [#67433](https://github.com/woocommerce/woocommerce/pull/67433)
* Fix - Mini-Cart: prevent a stray trailing separator after hidden or malformed item data entries and harden item data rendering so it no longer depends on the Interactivity API swallowing an error when an item has no item data. [#66688](https://github.com/woocommerce/woocommerce/pull/66688)
* Fix - Normalize the Product Collection carousel header row by aligning the heading and navigation buttons, removing the heading's hardcoded spacing, and applying theme-aware colors to the navigation buttons. [#65691](https://github.com/woocommerce/woocommerce/pull/65691)
* Fix - NOX onboarding: automatically move to the next step and show a notice when the test account creation fails with a non-recoverable error, instead of a retry loop. [#66356](https://github.com/woocommerce/woocommerce/pull/66356)
* Fix - NOX onboarding: keep reporting the test account step as completed after it was skipped forward, so merchants are not routed back into it when the platform fell back to an account that requires verification. [#66492](https://github.com/woocommerce/woocommerce/pull/66492)
* Fix - Only enqueue the block notice styles (wc-blocks-style) on classic themes when block notices are actually in use. [#66417](https://github.com/woocommerce/woocommerce/pull/66417)
* Fix - Pass placeholder image attributes to the placeholder image filter. [#66691](https://github.com/woocommerce/woocommerce/pull/66691)
* Fix - Persist the default nav-menu hidden meta box snapshot on a user's first visit to Appearance > Menus, so meta boxes registered by plugins installed after that visit stay visible by default instead of being hidden on every recompute. [#66954](https://github.com/woocommerce/woocommerce/pull/66954)
* Fix - Persist the default nav-menu hidden meta box snapshot only for the current user on the Appearance > Menus screen, matching WordPress core, so a read of another user's option (e.g. user-switching or admin tooling) can no longer overwrite that user's own first-visit snapshot. [#66977](https://github.com/woocommerce/woocommerce/pull/66977)
* Fix - Preserve 0% tax lines when refunding order line items, so zero-rated tax entries are recorded on the refund order instead of being dropped. [#66615](https://github.com/woocommerce/woocommerce/pull/66615)
* Fix - Preserve cart contents when paying for an existing order. [#66090](https://github.com/woocommerce/woocommerce/pull/66090)
* Fix - Preserve category and tag terms attached to existing variations when re-importing them via CSV with "update existing" enabled, instead of unconditionally deleting them on every variation row. [#66946](https://github.com/woocommerce/woocommerce/pull/66946)
* Fix - Preserve Core Breadcrumbs callback compatibility for extensions. [#66822](https://github.com/woocommerce/woocommerce/pull/66822)
* Fix - Preserve existing order shipping line names that match the default Shipping label. [#66849](https://github.com/woocommerce/woocommerce/pull/66849)
* Fix - Preserve focus and screen reader feedback when hiding shipping recommendations, and restore marketplace links where the recommendations component is unavailable. [#66689](https://github.com/woocommerce/woocommerce/pull/66689)
* Fix - Preserve product archive rewrite rules when WP-CLI skips the active theme and another plugin flushes permalinks. [#67101](https://github.com/woocommerce/woocommerce/pull/67101)
* Fix - Preserve the legacy admin header when a Settings UI drill-down fails to render. [#66916](https://github.com/woocommerce/woocommerce/pull/66916)
* Fix - Preserve touch handling for interactive content nested inside FlexSlider galleries. [#66754](https://github.com/woocommerce/woocommerce/pull/66754)
* Fix - Preserve variation IDs when partially updating order line items through the REST API. [#67343](https://github.com/woocommerce/woocommerce/pull/67343)
* Fix - Prevent a fatal error when calculating totals for an order that has a fee stored with a blank value; the blank fee total is now treated as 0 during tax calculation. [#66231](https://github.com/woocommerce/woocommerce/pull/66231)
* Fix - Prevent a fatal error when WooCommerce checks the current admin screen before the WordPress screen API is available. [#66701](https://github.com/woocommerce/woocommerce/pull/66701)
* Fix - Prevent a fatal TypeError when force-downloading a remote file while a woocommerce_file_download_filename filter callback returns a non-string value. [#66658](https://github.com/woocommerce/woocommerce/pull/66658)
* Fix - Prevent a ghost 0.00 "Order fully refunded" refund from being created when partial refunds sum a float epsilon above the stored order total. [#66885](https://github.com/woocommerce/woocommerce/pull/66885)
* Fix - Prevent block initialization errors in the classic widget editor. [#67112](https://github.com/woocommerce/woocommerce/pull/67112)
* Fix - Prevent Brand Nav widget from poisoning shared product subcategory cache. [#65947](https://github.com/woocommerce/woocommerce/pull/65947)
* Fix - Prevent classic product image gallery swipes from closing the Facebook in-app browser. [#66602](https://github.com/woocommerce/woocommerce/pull/66602)
* Fix - Prevent client-side-only blocks from disappearing from the post editor inserter. [#66628](https://github.com/woocommerce/woocommerce/pull/66628)
* Fix - Prevent duplicate order download permissions when granting access to a product again. [#66410](https://github.com/woocommerce/woocommerce/pull/66410)
* Fix - Prevent early translation loading when checking unified block editor build assets. [#67072](https://github.com/woocommerce/woocommerce/pull/67072)
* Fix - Prevent early WooCommerce translation loading from breaking redirects when debugging is enabled. [#66582](https://github.com/woocommerce/woocommerce/pull/66582)
* Fix - Prevent fatal errors on plugins.php, update-core.php and the Extensions page when cached WooCommerce.com subscription data contains malformed entries. [#67152](https://github.com/woocommerce/woocommerce/pull/67152)
* Fix - Prevent fatal errors when older WooCommerce Analytics packages are loaded. [#66710](https://github.com/woocommerce/woocommerce/pull/66710)
* Fix - Prevent fatal errors when updating malformed payment gateway settings. [#66848](https://github.com/woocommerce/woocommerce/pull/66848)
* Fix - Prevent filtered review blocks from showing all reviews when no category or product is selected. [#67324](https://github.com/woocommerce/woocommerce/pull/67324)
* Fix - Prevent ID-less classic settings radio fields from sharing a single "-title" ID that could cross-label radio groups for assistive technology. [#66944](https://github.com/woocommerce/woocommerce/pull/66944)
* Fix - Prevent invalid object cache values from crashing the version string generator. [#67164](https://github.com/woocommerce/woocommerce/pull/67164)
* Fix - Prevent invalid Quick Edit sale dates and unavailable datepicker scripts from corrupting product pricing schedules. [#67052](https://github.com/woocommerce/woocommerce/pull/67052)
* Fix - Prevent notice about wp-editor being enqueued from appearing in the Widgets screen [#66979](https://github.com/woocommerce/woocommerce/pull/66979)
* Fix - Prevent product brand shortcode images from rendering empty or unitless inline dimensions. [#66745](https://github.com/woocommerce/woocommerce/pull/66745)
* Fix - Prevent product editor content from shifting during initial page load. [#67351](https://github.com/woocommerce/woocommerce/pull/67351)
* Fix - Prevent product variations imported via CSV from inheriting the default "Uncategorized" product category. [#66255](https://github.com/woocommerce/woocommerce/pull/66255)
* Fix - Prevent the Blueprint settings screen from fataling when a third-party filter throws while WooCommerce requests plugin or theme metadata from WordPress.org. [#67342](https://github.com/woocommerce/woocommerce/pull/67342)
* Fix - Prevent the Site Editor from showing unsaved changes when opening classic WooCommerce templates. [#67093](https://github.com/woocommerce/woocommerce/pull/67093)
* Fix - Prevent variations from being automatically included in product exports when a specific type filter (e.g. variable only) is set. [#66292](https://github.com/woocommerce/woocommerce/pull/66292)
* Fix - Prevent WC_Abstract_Order::add_item() from silently overwriting an unsaved item when items are removed and re-added before save() (count()-based temporary key collision). [#65607](https://github.com/woocommerce/woocommerce/pull/65607)
* Fix - Product CSV importer: respect the store's decimal separator setting when parsing weight and dimensions, so comma-separated values (e.g. "1,5") are no longer discarded. [#66205](https://github.com/woocommerce/woocommerce/pull/66205)
* Fix - Product searches with terms containing " or " now apply the include, exclude, status, product type and post type filters to every OR group instead of only a single group, so admin product pickers no longer suggest drafts, excluded products or wrong-type products matched by those groups. [#67420](https://github.com/woocommerce/woocommerce/pull/67420)
* Fix - Product Summary: apply responsive styles to current and legacy rendered summaries. [#67356](https://github.com/woocommerce/woocommerce/pull/67356)
* Fix - Rate limit order withdrawal requests by IP address and email. [#67069](https://github.com/woocommerce/woocommerce/pull/67069)
* Fix - Register legacy block bundle handles as deprecated compatibility placeholders when unified editor assets are enabled. [#67055](https://github.com/woocommerce/woocommerce/pull/67055)
* Fix - Register WooCommerce block types on demand when a product or variation description is rendered through do_blocks, so dynamic blocks placed in a description no longer render blank in the products REST API, the Store API, the variation AJAX endpoint or product webhooks. [#67663](https://github.com/woocommerce/woocommerce/pull/67663)
* Fix - Reject duplicate tax IDs in refund line items on the wc/v4 refunds endpoint and the wc/v3 compute_totals path, which previously created refunds whose stored line taxes did not add up to the refund amount. [#67613](https://github.com/woocommerce/woocommerce/pull/67613)
* Fix - Remove duplicate Shipping settings Marketplace link when shipping recommendations are shown. [#66110](https://github.com/woocommerce/woocommerce/pull/66110)
* Fix - Remove nofollow from product permalink links in product buttons. [#66743](https://github.com/woocommerce/woocommerce/pull/66743)
* Fix - Remove Sample badge from sample products generated during the CYS flow [#66322](https://github.com/woocommerce/woocommerce/pull/66322)
* Fix - Reorder the cart, mini-cart, and add-to-cart quantity steppers so the decrease button precedes the quantity input in the DOM, matching the visual order for a logical keyboard focus and screen-reader reading sequence. [#66670](https://github.com/woocommerce/woocommerce/pull/66670)
* Fix - Replace deprecated jQuery .focus() shorthand with .trigger( 'focus' ) / .on( 'focus' ) across legacy JS files. [#66273](https://github.com/woocommerce/woocommerce/pull/66273)
* Fix - Report whether approved download directory rules are enforced in Site Health. [#67479](https://github.com/woocommerce/woocommerce/pull/67479)
* Fix - Reset stock management and stock status when converting products to grouped or external types. [#67484](https://github.com/woocommerce/woocommerce/pull/67484)
* Fix - Respect dp parameter when formatting coupon line item discount and discount_tax values in REST API. [#66328](https://github.com/woocommerce/woocommerce/pull/66328)
* Fix - Respect hidden Date and Status columns on the admin orders list below 782px, so the Columns menu (Screen Options) is honored at every screen width. [#66242](https://github.com/woocommerce/woocommerce/pull/66242)
* Fix - Respect legacy WooCommerce Admin filters when disabling analytics. [#66444](https://github.com/woocommerce/woocommerce/pull/66444)
* Fix - Restore and harden the Site Health prompt after approved download directory synchronization. [#67491](https://github.com/woocommerce/woocommerce/pull/67491)
* Fix - Restore checkout compatibility handling for payment extensions with missing script dependencies. [#67365](https://github.com/woocommerce/woocommerce/pull/67365)
* Fix - Restore Mini-Cart inner blocks in the Site Editor. [#67416](https://github.com/woocommerce/woocommerce/pull/67416)
* Fix - Return early in Product block if product is not viewable [#67332](https://github.com/woocommerce/woocommerce/pull/67332)
* Fix - Return HTTP 400 instead of 500 for invalid refund_tax and auto-compute inputs on the wc/v3 refunds compute_totals path, by adding the missing HTTP status to five shared-engine validation errors and defaulting status-less engine errors to 400 at the v3 boundary. [#67757](https://github.com/woocommerce/woocommerce/pull/67757)
* Fix - Serve minified admin scripts only when the minified file actually exists, preventing broken admin pages when the minified-js feature is force-enabled (e.g. via WooCommerce Beta Tester) on builds that do not ship minified JS files. [#67515](https://github.com/woocommerce/woocommerce/pull/67515)
* Fix - Show the billing name for guest orders in the WooCommerce Home Orders activity panel instead of leaving the name blank. [#66279](https://github.com/woocommerce/woocommerce/pull/66279)
* Fix - Show the Local Pickup settings save confirmation on a successful save (and an error notice on failure), instead of only when the server response matched the sent payload, which suppressed the notice when values were sanitized (e.g. "&" normalized to "&amp;"). [#66459](https://github.com/woocommerce/woocommerce/pull/66459)
* Fix - Show the Save Draft button when creating a coupon. [#66663](https://github.com/woocommerce/woocommerce/pull/66663)
* Fix - Skip on-the-fly and background thumbnail regeneration for attachments no image editor supports (e.g. SVGs), preventing PHP notices and repeated doomed resize attempts. [#67347](https://github.com/woocommerce/woocommerce/pull/67347)
* Fix - Skip the brands product column when the product_brand taxonomy is deregistered [#66410](https://github.com/woocommerce/woocommerce/pull/66410)
* Fix - Start new bank accounts on the Direct bank transfer settings page in the business location set on the Payments settings screen. The store base country used before could arrive with a state suffix ("US:CA"), which matched no entry in the country field and no routing number format. [#67478](https://github.com/woocommerce/woocommerce/pull/67478)
* Fix - Stop counting test-mode WooPayments usage - a test-drive account or test-mode orders - when determining WooPayments incentives eligibility, so trialing WooPayments no longer disqualifies a store from incentives. Stores already disqualified this way get their eligibility re-determined once. [#67154](https://github.com/woocommerce/woocommerce/pull/67154)
* Fix - Store API: fall back to the billing address when a checkout request omits the shipping address and the cart needs shipping. [#66409](https://github.com/woocommerce/woocommerce/pull/66409)
* Fix - Sync trashed and untrashed order status to analytics so trashed orders no longer appear in reports, and remove deleted refunds from analytics lookup tables under HPOS. [#64157](https://github.com/woocommerce/woocommerce/pull/64157)
* Fix - Tighten authorization checks on the Stripe extension install redirect. [#66880](https://github.com/woocommerce/woocommerce/pull/66880)
* Fix - Tighten moderation checks on order reviews. [#66881](https://github.com/woocommerce/woocommerce/pull/66881)
* Fix - Tighten multisite site-membership handling during login. [#66879](https://github.com/woocommerce/woocommerce/pull/66879)
* Fix - Update Checkout total guard to run after addresses in the request have been applied. [#67773](https://github.com/woocommerce/woocommerce/pull/67773)
* Fix - Use gateway defaults when detecting enabled-state transitions from malformed settings. [#66912](https://github.com/woocommerce/woocommerce/pull/66912)
* Fix - Use the filename announced by the remote server (Content-Disposition/Content-Type) when force-downloading an external file whose URL has no filename in its path, such as Google Drive links. [#66604](https://github.com/woocommerce/woocommerce/pull/66604)
* Fix - Use the IPv6-capable ipify endpoint for external IP lookups. [#66735](https://github.com/woocommerce/woocommerce/pull/66735)
* Fix - Use the selected shipping method name for manually created orders. [#66811](https://github.com/woocommerce/woocommerce/pull/66811)
* Fix - Use the stable Block Selectors API. [#66596](https://github.com/woocommerce/woocommerce/pull/66596)
* Fix - Use WooCommerce Analytics to report legacy Select2 usage on storefront pages. [#66652](https://github.com/woocommerce/woocommerce/pull/66652)
* Fix - WC_Order_Item_Product::set_product() now resets variation_id to 0 when passed a non-variation product, so reassigning a line item's product no longer leaves a stale variation ID that made get_product() return the previous variation. [#66734](https://github.com/woocommerce/woocommerce/pull/66734)
* Fix - WP-CLI's blueprint command no longer risks a fatal error from loading its class twice. [#67074](https://github.com/woocommerce/woocommerce/pull/67074)
* Fix - WP-CLI no longer exits the whole process when the optional wp-cli/extension-command package isn't installed. [#67074](https://github.com/woocommerce/woocommerce/pull/67074)
* Fix - Exclude WordPress editorial notes from the WooCommerce comment count cache, so adding a note no longer inflates the pending comment count shown in wp-admin. [#67985](https://github.com/woocommerce/woocommerce/pull/67985)
* Fix - Fix Add to Cart + Options redirect when a plugin modifies the form and WooCommerce is installed in a subdirectory [#67798](https://github.com/woocommerce/woocommerce/pull/67798)
* Fix - Fix CSV variation import saving a catch-all variation and a stray global attribute when a global-flagged row matches a custom parent attribute. [#68002](https://github.com/woocommerce/woocommerce/pull/68002)
* Fix - Fix dropdown text and the clear icon running under the chevron in admin single selects on WP 7.0+, including the Order edit Country, State and Customer fields. [#67969](https://github.com/woocommerce/woocommerce/pull/67969)
* Fix - Fix has_orders_pending_sync() incorrectly returning false when an order changes after a full HPOS backfill [#67838](https://github.com/woocommerce/woocommerce/pull/67838)
* Fix - Hide the customer email verification prompt when its email notification is disabled. [#67994](https://github.com/woocommerce/woocommerce/pull/67994)
* Fix - Prevent REST order updates from failing when a line item's variation is deleted mid-update and the posted product resolves to the parent product. [#67860](https://github.com/woocommerce/woocommerce/pull/67860)
* Fix - Restore the wc_product_meta_lookup join when the Products list is filtered by "Out of stock", so posts_clauses callbacks registered after WooCommerce can still reference the alias. [#67890](https://github.com/woocommerce/woocommerce/pull/67890)
* Fix - Suppress the customer email verification prompt when guest checkout is disabled. [#67968](https://github.com/woocommerce/woocommerce/pull/67968)
* Fix - Correct the introductory text on the order withdrawal form. [#68125](https://github.com/woocommerce/woocommerce/pull/68125)
* Fix - Harden password visibility toggle markup handling. [#68176](https://github.com/woocommerce/woocommerce/pull/68176)
* Fix - Preserve custom data store cleanup when removing order items. [#68144](https://github.com/woocommerce/woocommerce/pull/68144)
* Fix - Preserve replacement order items saved by extensions during deferred checkout item deletion. [#68103](https://github.com/woocommerce/woocommerce/pull/68103)
* Fix - Properly strip tags from product names in AJAX responses [#68175](https://github.com/woocommerce/woocommerce/pull/68175)
* Fix - Temporarily disable Helcim payment provider recommendations. [#68119](https://github.com/woocommerce/woocommerce/pull/68119)
* Fix - Allow product attribute term columns to preserve non-string content. [#68273](https://github.com/woocommerce/woocommerce/pull/68273)
* Fix - Fix unnecessary repeated processing of fragments in the GraphQL side of the dual API. [#68241](https://github.com/woocommerce/woocommerce/pull/68241)
* Fix - Harden order line meta value handling in the REST API. [#68216](https://github.com/woocommerce/woocommerce/pull/68216)
* Fix - Harden REST API key authentication route handling. [#68199](https://github.com/woocommerce/woocommerce/pull/68199)
* Fix - Improve REST API key authentication for WooCommerce routes reached through custom URLs. [#68263](https://github.com/woocommerce/woocommerce/pull/68263)
* Fix - Improve WooPayments onboarding profile data handling. [#68236](https://github.com/woocommerce/woocommerce/pull/68236)
* Fix - Prevent extension gallery markup from breaking variable product add-to-cart forms. [#68219](https://github.com/woocommerce/woocommerce/pull/68219)
* Fix - Resolve REST API routes the way WordPress does when the request URI has repeated leading slashes or percent-encoded characters. [#68237](https://github.com/woocommerce/woocommerce/pull/68237)
* Fix - Restore plain-text product names in AJAX search responses. [#68191](https://github.com/woocommerce/woocommerce/pull/68191)
* Add - Add a "Send test email" action to the emails listing page (block email editor). [#66405](https://github.com/woocommerce/woocommerce/pull/66405)
* Add - Add a feature-gated public order withdrawal endpoint. [#66538](https://github.com/woocommerce/woocommerce/pull/66538)
* Add - Add a filter for product attribute taxonomy row actions in the Attributes admin table. [#66633](https://github.com/woocommerce/woocommerce/pull/66633)
* Add - Add Airwallex to payment providers recommendations in Japan. [#67359](https://github.com/woocommerce/woocommerce/pull/67359)
* Add - Add an opt-in compute_totals mode to POST /wc/v3/orders/{id}/refunds that computes per-line refund amounts server-side from quantities, validated against the order's refund history. [#67613](https://github.com/woocommerce/woocommerce/pull/67613)
* Add - Add an order withdrawal inbox notification for EU-selling live stores. [#67295](https://github.com/woocommerce/woocommerce/pull/67295)
* Add - Add a refund preview endpoint (POST /wc/v3/orders/{id}/refunds/preview) that returns server-computed refund totals and per-line breakdowns without creating a refund. [#67613](https://github.com/woocommerce/woocommerce/pull/67613)
* Add - Add beta support for videos in product galleries. [#65396](https://github.com/woocommerce/woocommerce/pull/65396)
* Add - Add CatalogSortOrder enum class for woocommerce_default_catalog_orderby option values and adopt it in the Product Collection block query builder. [#66877](https://github.com/woocommerce/woocommerce/pull/66877)
* Add - Add click tracking for the Things to do next task list. [#66125](https://github.com/woocommerce/woocommerce/pull/66125)
* Add - Add contextual image metadata to onboarding tasks via Task::get_image_url() and Task::get_image_alt(), so third-party tasks can supply their own illustration for My Home and the legacy dashboard setup widget. [#66500](https://github.com/woocommerce/woocommerce/pull/66500)
* Add - Add coupon validation filters for product_ids, product_categories, sale_items, excluded_items, excluded_product_ids, and excluded_product_categories in WC_Discounts. [#64363](https://github.com/woocommerce/woocommerce/pull/64363)
* Add - Add GoCardless as a recommended payment partner extension for GB (UK) merchants. [#67336](https://github.com/woocommerce/woocommerce/pull/67336)
* Add - Add Helcim to payment method recommendations in the United States and Canada. [#66960](https://github.com/woocommerce/woocommerce/pull/66960)
* Add - Add KOMOJU to payment providers recommendations in Japan. [#67359](https://github.com/woocommerce/woocommerce/pull/67359)
* Add - Add Mastercard Merchant Cloud as a recommended payment partner in select countries. [#64098](https://github.com/woocommerce/woocommerce/pull/64098)
* Add - Add merchant warning for order withdrawal requests outside the 14-day window. [#67160](https://github.com/woocommerce/woocommerce/pull/67160)
* Add - Adds an inbox note when a customer submits a withdraw order request [#67155](https://github.com/woocommerce/woocommerce/pull/67155)
* Add - Add StockDisplayFormat enum class for woocommerce_stock_format option values and adopt it in the Store API product schema. [#66802](https://github.com/woocommerce/woocommerce/pull/66802)
* Add - Add telemetry for legacy Select2 script usage. [#66245](https://github.com/woocommerce/woocommerce/pull/66245)
* Add - Add woocommerce_webhook_enable_delivery_log filter to disable delivery logs. [#64372](https://github.com/woocommerce/woocommerce/pull/64372)
* Add - Automatically create 9 default color terms when a new wc-visual product attribute is created, so users can start using color swatches without manually adding each color. [#65923](https://github.com/woocommerce/woocommerce/pull/65923)
* Add - Blueprint: list what an imported Blueprint will do before it runs, including how many database queries it executes and which plugins and themes it installs or activates, and state that a Blueprint should only be imported from a trusted source. [#67349](https://github.com/woocommerce/woocommerce/pull/67349)
* Add - Display user avatar in Customer Account block [#67032](https://github.com/woocommerce/woocommerce/pull/67032)
* Add - Order withdrawal form [#66783](https://github.com/woocommerce/woocommerce/pull/66783)
* Add - Pass the plain-text rendering context when personalizing transactional email subjects and preheaders so personalization tag values are not HTML-escaped in plain-text output. [#66937](https://github.com/woocommerce/woocommerce/pull/66937)
* Add - Product Price: support Responsive Styling. [#67007](https://github.com/woocommerce/woocommerce/pull/67007)
* Add - Show sale date fields in the product quick edit form. [#66931](https://github.com/woocommerce/woocommerce/pull/66931)
* Add - Show the WooCommerce.com quality badge on in-app marketplace product cards and add a "show only" filter toggle, both driven by the WooCommerce.com API. [#67658](https://github.com/woocommerce/woocommerce/pull/67658)
* Add - Store API/Checkout Block: reject the order with a 409 when the total the shopper confirmed no longer matches the total calculated on the server (e.g. a product, price or quantity changed during checkout), so shoppers are never charged an unexpected amount. [#66420](https://github.com/woocommerce/woocommerce/pull/66420)
* Update - Clarify that adding a shipping method also saves the shipping zone. [#66343](https://github.com/woocommerce/woocommerce/pull/66343)
* Update - Dismiss WooCommerce admin notices asynchronously instead of reloading the page. The query-string based dismissal is kept as a no-JS fallback. [#66625](https://github.com/woocommerce/woocommerce/pull/66625)
* Update - Email editor: delete previously generated email posts that were never customized, so those emails render from the current template files and site locale. [#67025](https://github.com/woocommerce/woocommerce/pull/67025)
* Update - Email editor: re-add the listing Preview action for emails without a saved post, rendering the current file template. [#67025](https://github.com/woocommerce/woocommerce/pull/67025)
* Update - Email editor: render emails from file-based templates until they are customized and saved, so uncustomized emails always reflect the current template files and site locale. [#67025](https://github.com/woocommerce/woocommerce/pull/67025)
* Update - Introduce new upgrade warning to the Product Image Gallery block when used in the same template with the Add to Cart + Options block [#66552](https://github.com/woocommerce/woocommerce/pull/66552)
* Update - Keep Launch Your Store and coming soon behavior enabled without legacy feature flags. [#65472](https://github.com/woocommerce/woocommerce/pull/65472)
* Update - Keep product editor and pattern toolkit behavior enabled without legacy feature flags. [#65472](https://github.com/woocommerce/woocommerce/pull/65472)
* Update - Keep stable WooCommerce Admin shell features enabled without legacy feature flags. [#65472](https://github.com/woocommerce/woocommerce/pull/65472)
* Update - Keep the Mini-Cart Interactivity API behavior enabled without a legacy feature flag. [#65472](https://github.com/woocommerce/woocommerce/pull/65472)
* Update - Keep WooCommerce Admin analytics and scheduled imports enabled without legacy feature flags. [#65472](https://github.com/woocommerce/woocommerce/pull/65472)
* Update - Keep WooCommerce Admin commerce recommendations enabled without legacy feature flags. [#65472](https://github.com/woocommerce/woocommerce/pull/65472)
* Update - Keep WooCommerce Admin onboarding tasks enabled without legacy feature flags. [#65472](https://github.com/woocommerce/woocommerce/pull/65472)
* Update - Link WooPayments onboarding failures to the onboarding troubleshooting guide. [#66587](https://github.com/woocommerce/woocommerce/pull/66587)
* Update - Make images in Featured Product and Featured Category blocks responsive [#66466](https://github.com/woocommerce/woocommerce/pull/66466)
* Update - Move the order withdrawal feature out of experimental status. [#67391](https://github.com/woocommerce/woocommerce/pull/67391)
* Update - Rename the amount field to total in the wc/v4/refunds creation endpoint request and response so it matches the refund preview endpoint. The v4 REST API is behind the rest-api-v4 feature flag. [#66799](https://github.com/woocommerce/woocommerce/pull/66799)
* Update - Update product brand taxonomy labels to clarify they apply to products. [#66725](https://github.com/woocommerce/woocommerce/pull/66725)
* Update - Enable variation galleries for all stores and remove the experimental feature toggle. [#67915](https://github.com/woocommerce/woocommerce/pull/67915)
* Update - Update version requirements to WordPress 7.0. [#67866](https://github.com/woocommerce/woocommerce/pull/67866)
* Update - Update the Klarna Checkout payment recommendation to its new Kustom Checkout branding, icon, and links. [#68071](https://github.com/woocommerce/woocommerce/pull/68071)
* Dev - Add a structured outcome to the cart store addCartItem action so consumers can read add success/failure directly instead of counting cart lines. [#66687](https://github.com/woocommerce/woocommerce/pull/66687)
* Dev - Add deprecated compatibility shims for retired WooCommerce Admin feature flags. [#65472](https://github.com/woocommerce/woocommerce/pull/65472)
* Dev - Add editor asset count and network transfer size performance metrics. [#66606](https://github.com/woocommerce/woocommerce/pull/66606)
* Dev - Add regression coverage for classic checkout shipping address selection. [#66923](https://github.com/woocommerce/woocommerce/pull/66923)
* Dev - Add stricter checks for order re-use in AbandonedCartRecovery unit tests [#67045](https://github.com/woocommerce/woocommerce/pull/67045)
* Dev - Add test coverage for the existing `woocommerce_submit_order_reviews` AJAX endpoint handled by `OrderReviews\SubmissionHandler`. [#64408](https://github.com/woocommerce/woocommerce/pull/64408)
* Dev - Add test coverage for the orders REST tax line item meta schema type union. [#66807](https://github.com/woocommerce/woocommerce/pull/66807)
* Dev - Add tests covering the payments provider base class's resilience to gateways that throw from state probes or return non-scalar option values. [#67400](https://github.com/woocommerce/woocommerce/pull/67400)
* Dev - Add unit tests covering empty customer session values overriding persisted customer data. [#65703](https://github.com/woocommerce/woocommerce/pull/65703)
* Dev - Add void to intentionally-unawaited promises for the new no-floating-promises lint rule [#66795](https://github.com/woocommerce/woocommerce/pull/66795)
* Dev - Add WC_Product::is_viewable() and is_publicly_viewable() to centralize product visibility checks. [#66173](https://github.com/woocommerce/woocommerce/pull/66173)
* Dev - Balance the output-buffer level in the WC_AJAX order-add-meta nonce test so it is no longer reported as risky. [#66425](https://github.com/woocommerce/woocommerce/pull/66425)
* Dev - Build a WooCommerce plugin artifact once and share it across local browser, API, and performance test jobs. [#65555](https://github.com/woocommerce/woocommerce/pull/65555)
* Dev - Call the parent setup and teardown from unit test classes that override them, so the per-test database transaction is opened and rolled back and test data no longer leaks between tests. [#67177](https://github.com/woocommerce/woocommerce/pull/67177)
* Dev - Clarify that variation taxonomy attribute values must use term slugs. [#67441](https://github.com/woocommerce/woocommerce/pull/67441)
* Dev - Clean up shipping method title test-only exports and add end-to-end coverage. [#67006](https://github.com/woocommerce/woocommerce/pull/67006)
* Dev - Correct the Hydration::get_rest_api_response_data() $path docblock type from array to string and drop the now-resolved PHPStan baseline entries. [#67313](https://github.com/woocommerce/woocommerce/pull/67313)
* Dev - Correct the NoticeHandler::convert_notices_to_wp_errors() docblock, which claimed it discards notices when it does not. [#67307](https://github.com/woocommerce/woocommerce/pull/67307)
* Dev - Correct the woocommerce_use_legacy_get_variations_price_hash docblock: the legacy hash is JSON-encoded, so only a callback object's public properties affect it. [#66889](https://github.com/woocommerce/woocommerce/pull/66889)
* Dev - Declare the storefront, twentytwenty and twentytwentytwo E2E themes in .wp-env.e2e.json instead of installing them from wordpress.org during provisioning. [#66859](https://github.com/woocommerce/woocommerce/pull/66859)
* Dev - Document that conditional functions simply return false when used before the main query is set up. [#67143](https://github.com/woocommerce/woocommerce/pull/67143)
* Dev - E2E: de-flake analytics-data.spec by scoping analytics assertions to the spec's own products, polling for analytics-import readiness instead of a fixed wait, and matching summary tiles independently of the comparison delta text. [#66371](https://github.com/woocommerce/woocommerce/pull/66371)
* Dev - E2E: reorganize the analytics specs across the core-serial/core-parallel pools — move analytics (with the Overview manual-import-trigger tests folded in) and analytics-overview to core-parallel, keep only analytics-settings serial, and drop the redundant analytics-access smoke test. [#66388](https://github.com/woocommerce/woocommerce/pull/66388)
* Dev - E2E tests: normalize the IS_MULTISITE env var to '1'/unset so multisite skips behave consistently regardless of how the system status endpoint reports wp_multisite. [#67339](https://github.com/woocommerce/woocommerce/pull/67339)
* Dev - Exclude email-template test fixtures from PHPUnit discovery so they no longer print markup to stdout during suite construction. [#66427](https://github.com/woocommerce/woocommerce/pull/66427)
* Dev - Fix CSV importer image unit tests that referenced an importer property removed by a concurrent change. [#66595](https://github.com/woocommerce/woocommerce/pull/66595)
* Dev - Fix flaky Mini-Cart variation-attributes e2e test by waiting for the Add to cart button to be enabled. [#67165](https://github.com/woocommerce/woocommerce/pull/67165)
* Dev - Fix flaky product-delete list-table quick-delete E2E test by scrolling the product row into view before clicking the hover-revealed Trash / Delete Permanently row action. [#66360](https://github.com/woocommerce/woocommerce/pull/66360)
* Dev - Fix POS catalog AsyncGenerator integration test to actually exercise the FeedLockException path by opening the feed with open() instead of start() (which returns void). [#66249](https://github.com/woocommerce/woocommerce/pull/66249)
* Dev - Guard the fake WC Calypso Bridge functions declared in tests, collect the LegacyProxy get_global test that was never running, and reset the REST server global the Store API controller tests replace. [#67298](https://github.com/woocommerce/woocommerce/pull/67298)
* Dev - Install and activate the plugin-check plugin via the E2E wp-env config instead of the e2e test setup script, so it is provisioned before lifecycle scripts run and no longer races with the backgrounded theme install that intermittently left `wp plugin check` unregistered in the nightly CI job. [#66443](https://github.com/woocommerce/woocommerce/pull/66443)
* Dev - Keep dev-only files out of the release zip: stop copying legacy JS test directories into built assets, and exclude lint configs and other development files from the package. [#67077](https://github.com/woocommerce/woocommerce/pull/67077)
* Dev - Migrate unit tests from react-test-renderer to the @testing-library family and drop the react-test-renderer dependency. [#66436](https://github.com/woocommerce/woocommerce/pull/66436)
* Dev - Optimize shipping partner and BNPL onboarding icon SVGs to reduce their file size. [#67357](https://github.com/woocommerce/woocommerce/pull/67357)
* Dev - Point the nightly/release 'Checks from plugin-check plugin' CI job at the full E2E wp-env config, which provisions the plugin-check plugin, so `wp plugin check` no longer fails as an unregistered subcommand after the wp-env test config split. [#66423](https://github.com/woocommerce/woocommerce/pull/66423)
* Dev - Propagate REST API errors in the order emails e2e spec instead of swallowing them; test-only, no changes to shipped code. [#67338](https://github.com/woocommerce/woocommerce/pull/67338)
* Dev - Register test filters per test rather than in setUpBeforeClass, so they survive WordPress's per-test hook restore and the assertions that depend on them stop passing for the wrong reason. [#67297](https://github.com/woocommerce/woocommerce/pull/67297)
* Dev - Remove stable WooCommerce Admin flags from the legacy feature config and load their classes directly. [#65472](https://github.com/woocommerce/woocommerce/pull/65472)
* Dev - Remove unused @wordpress/scripts devDependency. [#66756](https://github.com/woocommerce/woocommerce/pull/66756)
* Dev - Replace deprecated PHPUnit at() matcher in Store API CartItems image-filtering test with an order-independent captured-arguments assertion. [#66424](https://github.com/woocommerce/woocommerce/pull/66424)
* Dev - Replace the stale WP_ENV_TESTS_PORT override with WP_ENV_PORT in the E2E, metrics and k6 test configs. [#66829](https://github.com/woocommerce/woocommerce/pull/66829)
* Dev - Run each PHP version's unit tests as a single CI job instead of fanning them across four wp-env shards, merge the two GraphQL testsuites into one wc-phpunit-graphql, and drop the duplicated wc-phpunit-default/wc-phpunit-full umbrella suites in favour of the default suite list. [#66568](https://github.com/woocommerce/woocommerce/pull/66568)
* Dev - Run the Blocks test classes that touch WordPress state on a WordPress test case, so their database writes are rolled back and their filters no longer leak into the rest of the suite. [#67302](https://github.com/woocommerce/woocommerce/pull/67302)
* Dev - Scope product data tab locators in product-create-simple.spec.ts to the product data metabox. [#67106](https://github.com/woocommerce/woocommerce/pull/67106)
* Dev - Split the shared wp-env test config into a lean PHP-unit config (.wp-env.test.json) and a full E2E config (.wp-env.e2e.json) so the PHP-unit environment no longer provisions E2E-only plugins, themes, and setup. [#66401](https://github.com/woocommerce/woocommerce/pull/66401)
* Dev - Start a single wp-env container set for tests via `--config .wp-env.test.json` (testsEnvironment: false) instead of provisioning separate dev and tests environments; test-only tooling change, no merchant-facing impact. [#66243](https://github.com/woocommerce/woocommerce/pull/66243)
* Dev - Stop Core E2E jobs from running for changes limited to Blocks-owned E2E specs. [#66626](https://github.com/woocommerce/woocommerce/pull/66626)
* Dev - Update Blocks E2E Site Editor content locators for WordPress 7.1. [#66711](https://github.com/woocommerce/woocommerce/pull/66711)
* Dev - Update bundled WordPress UI packages for theme API compatibility. [#66361](https://github.com/woocommerce/woocommerce/pull/66361)
* Dev - Update wp-coding-standards/wpcs to 3.4.1 (security release) in the phpcs lint tooling. [#67033](https://github.com/woocommerce/woocommerce/pull/67033)
* Dev - Fix the create-post e2e test against Gutenberg nightly, where the default block appender no longer exposes the button role. [#67917](https://github.com/woocommerce/woocommerce/pull/67917)
* Dev - Remove the experimental product DataViews and classic variations redesign features. [#67909](https://github.com/woocommerce/woocommerce/pull/67909)
* Tweak - Add a translators comment for the cron interval placeholder to give translators context. [#65734](https://github.com/woocommerce/woocommerce/pull/65734)
* Tweak - Add class to payment link on the customer order details and update the template title to "Customer order details email" [#66544](https://github.com/woocommerce/woocommerce/pull/66544)
* Tweak - Hide the Downloadable product permissions meta box by default on the order edit screen. Merchants can re-enable it via Screen Options. [#66119](https://github.com/woocommerce/woocommerce/pull/66119)
* Tweak - Limit the order withdrawal content width. [#67111](https://github.com/woocommerce/woocommerce/pull/67111)
* Tweak - Lower the specificity of the payment method label image styles so payment methods can override them for their own imagery (e.g. logos rendered in a popover) without needing !important. [#66158](https://github.com/woocommerce/woocommerce/pull/66158)
* Tweak - Polish Woo Home dashboard card spacing, menus, task list states, and mobile alignment. [#66198](https://github.com/woocommerce/woocommerce/pull/66198)
* Tweak - Rename the new coupon result filters to woocommerce_coupon_is_valid_for_* so their true=valid polarity is clear and no longer collides with the woocommerce_coupon_validate_* family. [#66433](https://github.com/woocommerce/woocommerce/pull/66433)
* Tweak - Tweak order withdrawal inbox notification copy. [#67432](https://github.com/woocommerce/woocommerce/pull/67432)
* Performance - Audit the variable product datastore and apply additional optimizations. [#66675](https://github.com/woocommerce/woocommerce/pull/66675)
* Performance - Audit the variable product datastore and extend transients priming within it. [#66767](https://github.com/woocommerce/woocommerce/pull/66767)
* Performance - Audit the variable product datastore and implement optimizations to improve SQL query performance. [#66084](https://github.com/woocommerce/woocommerce/pull/66084)
* Performance - Cache payment provider lists and gateway details in a shared request cache so the dashboard setup widget, onboarding task list, and Payments settings do not repeat expensive provider checks. [#66321](https://github.com/woocommerce/woocommerce/pull/66321)
* Performance - Combine the Activity Panel's orders, reviews, and low stock count requests into a single wc-analytics/activity-panel/counts endpoint. [#66276](https://github.com/woocommerce/woocommerce/pull/66276)
* Performance - Email editor: reduce typing latency in the editor canvas. [#67031](https://github.com/woocommerce/woocommerce/pull/67031)
* Performance - Memoize CallbackUtil::get_hook_callback_signatures() per request, so repeated calls skip the reflection work that closure and invokable callbacks require. [#66882](https://github.com/woocommerce/woocommerce/pull/66882)
* Performance - Performance: Prime caches for variations images. [#66498](https://github.com/woocommerce/woocommerce/pull/66498)
* Performance - Prime post caches in structured data variation counting to avoid a database query per child variation. [#66350](https://github.com/woocommerce/woocommerce/pull/66350)
* Performance - Product Filters: expand hierarchical taxonomy filters with get_term_children() instead of a child_of query per chosen term. [#66359](https://github.com/woocommerce/woocommerce/pull/66359)
* Performance - Re-enable persistent product status counters. [#67366](https://github.com/woocommerce/woocommerce/pull/67366)
* Performance - Reduce Blocks E2E per-test database restoration overhead by running reset and snapshot import in one wp-env container invocation. [#66671](https://github.com/woocommerce/woocommerce/pull/66671)
* Performance - Reduced the number of SQL queries on the cart page for multi-product carts. [#66774](https://github.com/woocommerce/woocommerce/pull/66774)
* Performance - Resize and recompress pattern placeholder images to match their largest rendered size, cutting about 2.7 MB from the plugin package. [#66569](https://github.com/woocommerce/woocommerce/pull/66569)
* Performance - Resolve the Blocks E2E CLI container once per worker so per-test database restores can bypass repeated npm and wp-env startup. [#66699](https://github.com/woocommerce/woocommerce/pull/66699)
* Performance - Skip block and pattern registration on requests that never render blocks. Add the woocommerce_should_register_blocks filter to let extensions opt out. [#65781](https://github.com/woocommerce/woocommerce/pull/65781)
* Performance - Unify Woo blocks editor scripts and editor styles into shared editor assets. [#66200](https://github.com/woocommerce/woocommerce/pull/66200)
* Enhancement - Add background, spacing, and border style controls to the Product Details block. [#67409](https://github.com/woocommerce/woocommerce/pull/67409)
* Enhancement - CSV import now creates new variations of existing variable products when "Update existing products" is selected, instead of skipping them. [#66903](https://github.com/woocommerce/woocommerce/pull/66903)
* Enhancement - Product attributes: tailor the slug field hint to the user's language, showing an approximate character limit based on the locale's script alongside the authoritative byte limit, with a leaner description for clients that have the live byte counter. [#65814](https://github.com/woocommerce/woocommerce/pull/65814)
* Enhancement - Warn merchants when a higher-priority shipping zone prevents a narrower zone from matching. [#66348](https://github.com/woocommerce/woocommerce/pull/66348)


[See changelog for all versions](https://raw.githubusercontent.com/woocommerce/woocommerce/trunk/changelog.txt).