== Changelog == = 10.4.2 2025-12-12 = **WooCommerce** * Fix - Product Editor: Remove editor mode and unused rich text components [#62428](https://github.com/woocommerce/woocommerce/pull/62428) = 10.4.1 2025-12-12 = **WooCommerce** * Fix - Fix cached API request in iAPI cart store [#62416](https://github.com/woocommerce/woocommerce/pull/62416) * Fix - Prevent excessive debug logging from the Payments Settings page. [#62404](https://github.com/woocommerce/woocommerce/pull/62404) * Fix - Prevent notice as_unschedule_all_actions() was called before the Action Scheduler data store was initialized [#62419](https://github.com/woocommerce/woocommerce/pull/62419) * Fix - Revert to previous sync-on-read logic to prevent unnecessary writes when HPOS and compat mode are enabled. [#62408](https://github.com/woocommerce/woocommerce/pull/62408) = 10.4.0 2025-12-10 = **WooCommerce** * Fix - Adds validation for currency support on PayPal Standard based on the official PayPal currency table for the Orders V2 API. [#62032](https://github.com/woocommerce/woocommerce/pull/62032) * Fix - Add to Cart + Options: add up quantities when the same product is in the cart multiple times as different cart items [#61445](https://github.com/woocommerce/woocommerce/pull/61445) * Fix - Add to Cart + Options: hide Product Quantity block if its inner input is hidden [#61796](https://github.com/woocommerce/woocommerce/pull/61796) * Fix - Add to Cart + Options: hide the Product Quantity and Add to Cart Button blocks in out of stock variations [#61520](https://github.com/woocommerce/woocommerce/pull/61520) * Fix - Add to Cart + Options: improve editor display for users without permissions to edit the template parts [#61663](https://github.com/woocommerce/woocommerce/pull/61663) * Fix - Add to Cart + Options: make grouped product inner blocks show sample data when the store has no products [#61349](https://github.com/woocommerce/woocommerce/pull/61349) * Fix - Add to Cart + Options: support the Product block when a variation is selected [#61639](https://github.com/woocommerce/woocommerce/pull/61639) * Fix - Align Payment Settings header size with other tabs under WC Settings [#61671](https://github.com/woocommerce/woocommerce/pull/61671) * Fix - All Products: Prevent image interaction in the editor [#61951](https://github.com/woocommerce/woocommerce/pull/61951) * Fix - Coerce order total into float when empty string is provided in setter [#61257](https://github.com/woocommerce/woocommerce/pull/61257) * Fix - Consistently format empty strings in decimal format utils [#59368](https://github.com/woocommerce/woocommerce/pull/59368) * Fix - Correctly handle deleted meta in legacy > HPOS sync. [#61193](https://github.com/woocommerce/woocommerce/pull/61193) * Fix - Ensure checkout/place order logger respects log level threshold [#61842](https://github.com/woocommerce/woocommerce/pull/61842) * Fix - Ensure legacy > HPOS sync correctly handles deleted orders deleted while sync was off. [#61290](https://github.com/woocommerce/woocommerce/pull/61290) * Fix - Featured Product block: Fixed default color of title inner block to have better contrast. [#61554](https://github.com/woocommerce/woocommerce/pull/61554) * Fix - Fix: block notice template version. [#61421](https://github.com/woocommerce/woocommerce/pull/61421) * Fix - Fix: order metadata being deleted when order logs were deleted [#61635](https://github.com/woocommerce/woocommerce/pull/61635) * Fix - Fix Abilities API integration tests for WordPress 6.9+ compatibility with backward compatibility for earlier versions. [#61560](https://github.com/woocommerce/woocommerce/pull/61560) * Fix - Fix a bug preventing UAE and Singapore merchants from onboarding in WooPayments. [#61448](https://github.com/woocommerce/woocommerce/pull/61448) * Fix - Fix CES edit survey not displaying [#61660](https://github.com/woocommerce/woocommerce/pull/61660) * Fix - Fix COGS calculation for product order items [#61694](https://github.com/woocommerce/woocommerce/pull/61694) * Fix - Fixes a notice with agentic commerce webhooks due to checking whether the feature was enabled before init. [#61424](https://github.com/woocommerce/woocommerce/pull/61424) * Fix - Fixes flat rate shipping cost input locale formatting issue where comma decimal separator is replaced with a dot resulting in incorrect display and saving at later times. [#61382](https://github.com/woocommerce/woocommerce/pull/61382) * Fix - Fix floating-point precision bug in price conversion where prices like 10.04 would display as 10.03. [#61377](https://github.com/woocommerce/woocommerce/pull/61377) * Fix - Fix isDiscount check for order summary to fix display issues when product is discounted to 0 [#61256](https://github.com/woocommerce/woocommerce/pull/61256) * Fix - Fix issue in where pagination with the modified orderby was causing duplicates in Variation and Product endpoints. [#61410](https://github.com/woocommerce/woocommerce/pull/61410) * Fix - Fix issue where tax reports where showing duplicate rows for orders with multiple tax rates. [#61400](https://github.com/woocommerce/woocommerce/pull/61400) * Fix - Fix issue where updating the woocommerce_default_date_range option was saving stringified undefined values. [#61971](https://github.com/woocommerce/woocommerce/pull/61971) * Fix - Fix keyboard navigation in iAPI minicart [#61716](https://github.com/woocommerce/woocommerce/pull/61716) * Fix - Fix Mini-Cart footer to show only enabled calculation types (shipping, taxes, discounts) instead of always showing all three. [#61861](https://github.com/woocommerce/woocommerce/pull/61861) * Fix - Fix missing data in certain WooCommerce blocks inside the Product block when editing as an author [#61718](https://github.com/woocommerce/woocommerce/pull/61718) * Fix - Fix order summary description text overflow in checkout [#61207](https://github.com/woocommerce/woocommerce/pull/61207) * Fix - Fix PHP notice for indirect modification of overloaded property in WC_Tracks [#61362](https://github.com/woocommerce/woocommerce/pull/61362) * Fix - Fix undefined array key warning when firing woocommerce_variation_prices [#61472](https://github.com/woocommerce/woocommerce/pull/61472) * Fix - Flush subscription usage cache when WooCommerce.com license is activated [#61606](https://github.com/woocommerce/woocommerce/pull/61606) * Fix - For HPOS sync-on-read, ensure metadata is fully read from the CPT datastore. [#61293](https://github.com/woocommerce/woocommerce/pull/61293) * Fix - Hide PayPal Standard for orders v2 from the checkout page when the email is empty in the settings. [#62083](https://github.com/woocommerce/woocommerce/pull/62083) * Fix - iAPI Mini Cart - Fix a bug where attributes were not rendered correctly due to incorrect key. [#61764](https://github.com/woocommerce/woocommerce/pull/61764) * Fix - Improve accessibility of emails by setting the aria-role of layout tables to presentation. [#60447](https://github.com/woocommerce/woocommerce/pull/60447) * Fix - Normalize the URLs in PayPal Standard request data to prevent errors due to unsupported URL format in PayPal. [#62082](https://github.com/woocommerce/woocommerce/pull/62082) * Fix - Patterns: fix duplicated product image in Product Gallery pattern [#61953](https://github.com/woocommerce/woocommerce/pull/61953) * Fix - Prevent accidental syncing of order with placeholder post when HPOS compat mode is enabled. [#61381](https://github.com/woocommerce/woocommerce/pull/61381) * Fix - Prevent core-provided payment gateways from showing deactivation actions on the Payments settings page. [#61700](https://github.com/woocommerce/woocommerce/pull/61700) * Fix - Prevent rendering Mini Cart Footer block when it's hidden [#61828](https://github.com/woocommerce/woocommerce/pull/61828) * Fix - Prevent saving the dummy products in email preview [#61810](https://github.com/woocommerce/woocommerce/pull/61810) * Fix - Prevent unnecessary querying of non-existent options on the admin. [#61818](https://github.com/woocommerce/woocommerce/pull/61818) * Fix - Product Collection: improve accessibility of carousel layout [#61780](https://github.com/woocommerce/woocommerce/pull/61780) * Fix - Product Collection: show 'Preview' label when editing the Products by Brand template [#61401](https://github.com/woocommerce/woocommerce/pull/61401) * Fix - Product Filter: Fix Canonical URL encoding issue [#61766](https://github.com/woocommerce/woocommerce/pull/61766) * Fix - Product Filter: support unicode value [#61769](https://github.com/woocommerce/woocommerce/pull/61769) * Fix - Product Filters: add support for databases using ANSI_QUOTES [#61630](https://github.com/woocommerce/woocommerce/pull/61630) * Fix - Product Gallery: fix mobile layout issue in editor [#61531](https://github.com/woocommerce/woocommerce/pull/61531) * Fix - Redirect payments-related tasks to the Payments Settings page. [#62012](https://github.com/woocommerce/woocommerce/pull/62012) * Fix - Remove glboal event handler for a['role=button'] and assign specific ones to elements that needs it [#61506](https://github.com/woocommerce/woocommerce/pull/61506) * Fix - Remove link to product page when already viewing the product in missing variation ID error message [#61532](https://github.com/woocommerce/woocommerce/pull/61532) * Fix - Remove unnecessary animation from Add to Cart + Options block skeleton [#61597](https://github.com/woocommerce/woocommerce/pull/61597) * Fix - Remove `Dinero` dependency and use always `raw_prices` [#61233](https://github.com/woocommerce/woocommerce/pull/61233) * Fix - Replace foreign since variable. [#61419](https://github.com/woocommerce/woocommerce/pull/61419) * Fix - Return correct singular version for "Adresses" in My Account Menu Item [#61667](https://github.com/woocommerce/woocommerce/pull/61667) * Fix - Show Cart and Checkout blocks when minicart footer is empty [#61954](https://github.com/woocommerce/woocommerce/pull/61954) * Fix - Support both WordPress 6.9+ and pre-6.9 action hook names for Abilities API registration to ensure compatibility across WordPress versions. [#61562](https://github.com/woocommerce/woocommerce/pull/61562) * Fix - Support same item with different props in the iAPI minicart. [#61542](https://github.com/woocommerce/woocommerce/pull/61542) * Fix - This PR fixes the bug where Customer Analytics are not getting populated for DBs with ANSI_QUOTES enabled [#61212](https://github.com/woocommerce/woocommerce/pull/61212) * Fix - Trigger order status transition hooks regardless of dirty state. (Reverts #46887) [#61459](https://github.com/woocommerce/woocommerce/pull/61459) * Fix - Trigger term recounts for products after visibility terms change instead of after product saving. [#61457](https://github.com/woocommerce/woocommerce/pull/61457) * Fix - Use email $template_base when generating initial templates [#61305](https://github.com/woocommerce/woocommerce/pull/61305) * Fix - Use event handler to reload page, eliminates deprecated warning in checkout block. [#61498](https://github.com/woocommerce/woocommerce/pull/61498) * Fix - Fix fatal error in needs_shipping() when order contains permanently deleted product [#62103](https://github.com/woocommerce/woocommerce/pull/62103) * Fix - Fix PHP 8.4 fatal error in WooCommerce Helper updater when transient contains malformed data [#62094](https://github.com/woocommerce/woocommerce/pull/62094) * Fix - Restore original HPOS status filtering behavior to exclude internal order statuses when status='any', matching post-based storage behavior. [#62106](https://github.com/woocommerce/woocommerce/pull/62106) * Fix - Fix issue in which regular Checkout requests were getting counted toward rate limit if rate limiting is enabled. [#62318](https://github.com/woocommerce/woocommerce/pull/62318) * Fix - Fix Mini Cart showing undefined product title on slow network connections. [#62275](https://github.com/woocommerce/woocommerce/pull/62275) * Fix - Fix PayPal webhook endpoint URL to use home URL instead of site URL. [#62199](https://github.com/woocommerce/woocommerce/pull/62199) * Fix - Fix text visibility in select inputs [#62292](https://github.com/woocommerce/woocommerce/pull/62292) * Fix - Revert payment options icon selector change [#62291](https://github.com/woocommerce/woocommerce/pull/62291) * Add - Add Agentic Commerce checkout `complete` endpoint and `agentic_commerce` payment gateway feature support. [#61271](https://github.com/woocommerce/woocommerce/pull/61271) * Add - Add an entity versions cache [#61600](https://github.com/woocommerce/woocommerce/pull/61600) * Add - Add a new line when concatenating translations in a script for the Mini-Cart block [#61923](https://github.com/woocommerce/woocommerce/pull/61923) * Add - Add BlockEmailRenderer with email context support and Cart Contents product collection [#61546](https://github.com/woocommerce/woocommerce/pull/61546) * Add - Add debug tool to backfill order fulfillment status in Analytics data. [#61721](https://github.com/woocommerce/woocommerce/pull/61721) * Add - Add fulfillment_status column to wc_order_stats table for new installations to enable order fulfillment tracking in analytics. [#61487](https://github.com/woocommerce/woocommerce/pull/61487) * Add - Add GET endpoint for retrieving individual shipping zone methods in REST API v4, allowing direct access to shipping method data by instance ID. [#61957](https://github.com/woocommerce/woocommerce/pull/61957) * Add - Add hook 'woocommerce_update_order_refund' for refund updates. [#61225](https://github.com/woocommerce/woocommerce/pull/61225) * Add - Add offline payments V4 API endpoint. [#61123](https://github.com/woocommerce/woocommerce/pull/61123) * Add - Adds an agentic commerce integration page when the agentic commerce feature is enabled. [#61427](https://github.com/woocommerce/woocommerce/pull/61427) * Add - Adds the checkout_sessions route for the agentic commerce protocol as an experimental feature [#61216](https://github.com/woocommerce/woocommerce/pull/61216) * Add - Add v4 API routes for fetching and updating payment gateways. [#61278](https://github.com/woocommerce/woocommerce/pull/61278) * Add - Add webhook functionality for agentic commerce protocol. [#61325](https://github.com/woocommerce/woocommerce/pull/61325) * Add - Add `/products/catalog` endpoints to v3 API with mock response behind a local feature flag. [#61332](https://github.com/woocommerce/woocommerce/pull/61332) * Add - Allow HTML tags in the cart product item data fields [#61437](https://github.com/woocommerce/woocommerce/pull/61437) * Add - Auto fill tracking url with the tracking number and the selected shipping provider. [#61368](https://github.com/woocommerce/woocommerce/pull/61368) * Add - Customers V4 endpoint [#61336](https://github.com/woocommerce/woocommerce/pull/61336) * Add - Refactor WooCommerce block entity registration and settings [#61131](https://github.com/woocommerce/woocommerce/pull/61131) * Add - Support for reply-to address in transactional emails [#61355](https://github.com/woocommerce/woocommerce/pull/61355) * Add - V4 sorting options in rest api for customers [#61507](https://github.com/woocommerce/woocommerce/pull/61507) * Add - Display an admin notice when the store's currency is not supported by PayPal Standard. [#62285](https://github.com/woocommerce/woocommerce/pull/62285) * Add - Display a notice when merchant's PayPal Standard account is locked or restricted by PayPal. [#62252](https://github.com/woocommerce/woocommerce/pull/62252) * Update - Add back the : symbol to the cart item data name element [#61839](https://github.com/woocommerce/woocommerce/pull/61839) * Update - Added display support for "Unique product id" in wp-admin products table. [#60049](https://github.com/woocommerce/woocommerce/pull/60049) * Update - Add notice to Add to Cart + Options block encouraging users to upgrade from Product Image Gallery block to Product Gallery [#61201](https://github.com/woocommerce/woocommerce/pull/61201) * Update - Add provider onboarding unsupported handling for the Payments settings page. [#61574](https://github.com/woocommerce/woocommerce/pull/61574) * Update - Adds authorization for agentic checkout [#61592](https://github.com/woocommerce/woocommerce/pull/61592) * Update - Add support for conditional "Finish checkout" button text in cart collections for email rendering [#61822](https://github.com/woocommerce/woocommerce/pull/61822) * Update - Add support for storing COGS values for orders when HPOS is disabled [#61307](https://github.com/woocommerce/woocommerce/pull/61307) * Update - Add to Cart + Options: show spinner when grouped product inners blocks are loading in the editor [#61242](https://github.com/woocommerce/woocommerce/pull/61242) * Update - Add to Cart + Options: stretch Product Quantity to the same height as the Add to Cart Button [#61713](https://github.com/woocommerce/woocommerce/pull/61713) * Update - Apply tighter font sizes and spacing in cart and checkout blocks [#59787](https://github.com/woocommerce/woocommerce/pull/59787) * Update - Check user capability before saving any settings. [#61218](https://github.com/woocommerce/woocommerce/pull/61218) * Update - Deprecate wc_enqueue_js in favor of wp_add_inline_script(). [#61474](https://github.com/woocommerce/woocommerce/pull/61474) * Update - Do not preload leaderboards and performance indicators data outside of Analytics screens. [#61190](https://github.com/woocommerce/woocommerce/pull/61190) * Update - E2E tests: adjust the E2E tests to WP 6.9 [#61648](https://github.com/woocommerce/woocommerce/pull/61648) * Update - Enable the Interactivity API-powered Mini Cart by default. [#60823](https://github.com/woocommerce/woocommerce/pull/60823) * Update - Group agentic commerce settings for better comprehension. [#61477](https://github.com/woocommerce/woocommerce/pull/61477) * Update - Implement approved download dirs cache to prevent duplicate queries. [#61159](https://github.com/woocommerce/woocommerce/pull/61159) * Update - Move HPOS Datastore Caching out of experimental phase. [#61521](https://github.com/woocommerce/woocommerce/pull/61521) * Update - Move order logs deletion to a scheduled action [#61121](https://github.com/woocommerce/woocommerce/pull/61121) * Update - Optimize caching of price data for variations [#61286](https://github.com/woocommerce/woocommerce/pull/61286) * Update - Payment gateways can now implement get_provider_links() to provide contextual provider links for the Payments settings page. [#61681](https://github.com/woocommerce/woocommerce/pull/61681) * Update - Prevent unnecessary queries in admin notices. [#61462](https://github.com/woocommerce/woocommerce/pull/61462) * Update - Product Gallery: remove temporary backwards compatible code for beta block [#61934](https://github.com/woocommerce/woocommerce/pull/61934) * Update - Remove CedCommerce from onboarding marketing task [#61758](https://github.com/woocommerce/woocommerce/pull/61758) * Update - Updated all PHP dependencies. [#61753](https://github.com/woocommerce/woocommerce/pull/61753) * Update - Updated MCP adapter to v0.3.0 and refactored initialization process. [#61974](https://github.com/woocommerce/woocommerce/pull/61974) * Update - Update offline methods REST API v4 route to settings/payments/offline-methods. [#61250](https://github.com/woocommerce/woocommerce/pull/61250) * Update - Update payments recommendations in South Africa. [#61922](https://github.com/woocommerce/woocommerce/pull/61922) * Update - Update WooCommerce email titles and descriptions when the block email editor is enabled. [#61883](https://github.com/woocommerce/woocommerce/pull/61883) * Update - Use 'publish' as the default post status for new email editor posts. [#61814](https://github.com/woocommerce/woocommerce/pull/61814) * Update - Add order meta to prevent duplicate PayPal Standard API calls when we have already received a 404 response for a capture request on an authorised payment. [#62314](https://github.com/woocommerce/woocommerce/pull/62314) * Update - Ensure PayPal Standard capture later flow uses the correct authorization ID. [#62212](https://github.com/woocommerce/woocommerce/pull/62212) * Update - Include WooCommerce version in PayPal Standard gateway requests. [#62203](https://github.com/woocommerce/woocommerce/pull/62203) * Update - Include WooCommerce version in the PayPal Standard request header. [#62286](https://github.com/woocommerce/woocommerce/pull/62286) * Update - Update version requirements to WordPress 6.8 and PHP 7.4 in readme.txt and woocommerce.php. [#62341](https://github.com/woocommerce/woocommerce/pull/62341) * Dev - Add wc/v4/shipping-zone-method endpoint for creating a shipping zone with Core Data compatibility and modern v4 architecture patterns. [#61275](https://github.com/woocommerce/woocommerce/pull/61275) * Dev - Add wc/v4/shipping-zone-method endpoint for updating a shipping zone with Core Data compatibility and modern v4 architecture patterns. [#61337](https://github.com/woocommerce/woocommerce/pull/61337) * Dev - Add wc/v4/shipping-zone-method endpoints (POST/PUT) for creating and updating shipping methods with Core Data compatibility and modern v4 architecture patterns. [#61124](https://github.com/woocommerce/woocommerce/pull/61124) * Dev - dev: add ctrf reporter for e2e tests [#61915](https://github.com/woocommerce/woocommerce/pull/61915) * Dev - dev: update CI config for Blocks e2e tests - WP pre-release job [#61537](https://github.com/woocommerce/woocommerce/pull/61537) * Dev - dev: Update sharding arguments for e2e tests to improve distribution [#61280](https://github.com/woocommerce/woocommerce/pull/61280) * Dev - Don't pass attributes: undefined while registering some blocks [#61945](https://github.com/woocommerce/woocommerce/pull/61945) * Dev - E2E tests: add JUnit report configuration [#61450](https://github.com/woocommerce/woocommerce/pull/61450) * Dev - Efficiency improvements to linter config [#61411](https://github.com/woocommerce/woocommerce/pull/61411) * Dev - Fix: [Flaky Test] can upload the CSV file and import products [#61273](https://github.com/woocommerce/woocommerce/pull/61273) * Dev - Implement skills for Claude [#61811](https://github.com/woocommerce/woocommerce/pull/61811) * Dev - Improve instructions for Claude Code [#61489](https://github.com/woocommerce/woocommerce/pull/61489) * Dev - Migrate usage of wc_enqueue_js() to wp_add_inline_script(). [#61494](https://github.com/woocommerce/woocommerce/pull/61494) * Dev - Move the business logic for v4 endpoints for shipping zones and methods from the global model to a dedicated service. [#61714](https://github.com/woocommerce/woocommerce/pull/61714) * Dev - prevent block settings warnings for checkout areas [#61830](https://github.com/woocommerce/woocommerce/pull/61830) * Dev - Remove notice to downgrade from Product Collection to Products (Beta) block [#61203](https://github.com/woocommerce/woocommerce/pull/61203) * Dev - skip iapi blocks E2E tests with WP 6.7 [#61850](https://github.com/woocommerce/woocommerce/pull/61850) * Dev - Update @automattic/webpack-rtl-plugin version [#59425](https://github.com/woocommerce/woocommerce/pull/59425) * Dev - Update email-editor dependency in WooCommerce composer.json to load the mirrored version [#61181](https://github.com/woocommerce/woocommerce/pull/61181) * Tweak - Angle brackets are now encoded in hex when rendered in a `