Changelog

1.47 - 2026-07-29

  • **โœจ New**
  • - [add] Product badges - assign New Arrival, Best Seller, Featured, or Sale badges to any product; they render on every shop template and on the single product page, Sale is detected automatically from the sale price, and New Arrival expires on its own after 30 days
  • - [add] Five new translations - Italian, Dutch, Russian, Japanese, and Simplified Chinese - bringing the bundled languages to ten, covering both the admin and the storefront
  • - [add] Reset Logs button on the AI Usage settings page to clear stored AI usage history
  • **๐Ÿ’ณ Payments & Checkout**
  • - [fix] Stripe now offers only the payment methods your account can actually charge in the checkout currency - Klarna and other local methods no longer appear where Stripe would reject them
  • - [fix] Stripe webhooks are now handled exactly once, so a replayed or retried notification can no longer complete or charge the same order twice
  • **๐Ÿ› Fixes**
  • - [fix] A blank Stock Count now correctly means "stock not managed" - untracked products no longer show as Out of Stock, clearing the field no longer fails to save, and digital variable products can be added to the cart again
  • - [fix] Digital products no longer display an Out of Stock badge
  • - [fix] Order Notes on the customer dashboard no longer fail with a permission error; add-to-cart is no longer logged twice, and notes from deleted orders no longer appear on new ones
  • - [fix] Admin notices no longer appear on the storefront, and only one notice is shown at a time
  • - [fix] Variations without a sale price are now priced at their regular price instead of 0.00
  • - [fix] Customer billing and shipping addresses are returned correctly by the API instead of as an empty value
  • - [fix] Your usage-data sharing choice is now saved reliably and no longer resets when other settings are saved
  • - [imp] A failed addon installation now links directly to the manual installation page
  • - [imp] Business Type is now required in the setup wizard, with clearer validation
  • **๐Ÿงน Internal**
  • - [refactor] Feedback, integration requests, the setup wizard, and the deactivation survey now report through a single telemetry endpoint
  • - [test] Fixed 35 failing tests by root-causing each one, which also uncovered several of the pricing and API bugs fixed above
  • - [docs] Added a CHANGELOG.md kept in sync with this file

1.46 - 2026-07-22

  • **๐Ÿ”’ Security**
  • - [security] Option REST endpoints are now restricted to EasyCommerce settings keys, so arbitrary WordPress options can no longer be read or changed through the API
  • - [security] Hardened the CSV importer's remote image download against server-side request forgery
  • **โœจ New**
  • - [add] Setup wizard now creates the Shop, Checkout, and Customer Dashboard pages automatically - the page-selection step is gone
  • - [add] Starter store designs: ready-made page sections and full-page layouts to launch a store faster
  • - [add] WooCommerce migration can now be started from the setup wizard and a new "Migrate" admin-bar button, with automatic detection of installed platforms
  • - [ui] Redesigned media uploader with an inline upload area and improved gallery resizing
  • **๐Ÿ’ณ Payments & Checkout**
  • - [fix] Stripe now reuses a single customer record across all payment flows instead of creating duplicates
  • - [fix] Mollie refunds can now be issued from the order screen
  • - [fix] Restored double-payment protection - the cart is locked while a payment is in progress
  • - [fix] Geo lookup failures at checkout now show a clear error instead of failing silently
  • - [fix] Improved name validation on the checkout form
  • **๐Ÿ› Fixes**
  • - [fix] Installer no longer edits wp-config.php; a notice now warns when PHP memory is below the recommended 256M
  • - [fix] Locations database download now retries with a cap and exponential backoff, and validates the downloaded file before saving
  • - [fix] Removed a broken dashboard API route that returned a server error when called
  • - [fix] Corrected transaction ID and payment URL labels in order details
  • - [fix] Repositioned the Store Mode indicator in the admin bar with a clearer message
  • - [fix] Clearer empty-state message for attributes on the add product page
  • - [imp] More consistent error handling across admin pages
  • - [perf] Added missing database indexes for faster queries on large stores
  • - [perf] Block editor assets now load only on pages that actually use EasyCommerce blocks
  • **๐Ÿงน Internal**
  • - [refactor] Unified report cache invalidation behind a single easycommerce_clear_cache action
  • - [refactor] Removed dead code and resolved codebase audit inconsistencies
  • - [test] Test bootstrap now resets the correct database tables

1.45 - 2026-07-14

  • - [security] Digital download links are now only available once an order is paid - unpaid or cancelled orders can no longer access files
  • - [add] Addons screen now has category filter tabs for quicker browsing, and the payment settings link straight to the Payments category
  • - [fix] Removing a download file from a product variation now actually deletes it - removed files no longer reappear after saving
  • - [ui] Redesigned the customer account dashboard with a modern look and a cleaner order details layout

1.44 - 2026-07-11

  • **๐Ÿ”’ Security**
  • - [security] Square and Mollie payment amounts are now derived entirely from the server-side cart, preventing tampered checkout requests from altering the charged or recorded totals
  • - [security] Braintree and Square now charge the order's locked total instead of a live-recomputed cart total at payment time
  • - [security] AI Shopping Agent endpoint now requires a valid nonce or logged-in user, so unauthenticated requests can no longer consume AI credits
  • **๐Ÿ’ณ Payments**
  • - [fix] Added deterministic idempotency keys to Mollie and Square payments, preventing duplicate charges on webhook retries and double-submits
  • - [fix] Payment no longer processes twice per checkout when a legacy standalone gateway addon (Stripe, PayPal, Square, Cash on Delivery) is active alongside the core gateway
  • - [fix] Fixed a fatal error on the payment page when the Subscriptions addon is active
  • **๐Ÿ›’ Checkout & Shipping**
  • - [add] Shipping methods now show a loading overlay while rates are being fetched, and rates refresh only after all required address fields are filled
  • - [fix] Simplified and fixed the billing-to-shipping address copying at checkout
  • **๐ŸŽจ Storefront & Admin**
  • - [fix] Restored shop block styling and Tailwind classes in the block editor preview
  • - [ui] Shop page filter bar now scrolls horizontally on narrow screens, with corrected filter dropdown positioning
  • - [add] AI settings now show connection-aware Connectivity and Usage tabs, plus a "Connect AI" admin-bar shortcut when the store is disconnected
  • - [fix] Success toaster now appears after connecting AI from the Settings page popup

1.43 - 2026-07-06

  • - [add] Orders now store the selected shipping method and display its name in the order details
  • - [add] Order API responses now include coupon, shipping method, and shipping method label data
  • - [add] Extensibility slot on the order details page for addons to inject custom content
  • - [ui] Responsive layout improvements across all admin pages - dashboard, products, orders, customers, reports, coupons, attributes, brands, categories, tags, shipping, tax, and help

1.42.2 - 2026-07-04

  • - [add] Select settings fields can now allow free-text input - pick from the list or type your own value
  • - [add] Store address State and City fields now let you type a custom value when it isn't in the list
  • - [fix] Reordered the store address fields to the standard country-first order
  • - [ui] Added help descriptions to the remaining settings fields

1.42.1 - 2026-07-03

  • - [add] Test-mode banner on the storefront for logged-in admins, with a "Go Live" shortcut - so admins can tell that customers are blocked at checkout while the store is in Test mode
  • - [fix] Test mode now also hides single product pages and the product archive, which were still reachable by direct URL
  • - [fix] "Store Launching Soon" page no longer renders a duplicate, misplaced header/footer and now shows the theme footer correctly

1.42 - 2026-07-03

  • **๐Ÿ”’ Security**
  • - [security] Prevented SQL injection through ORDER BY identifier validation in database queries
  • - [security] Replaced raw unserialize() with maybe_unserialize() in abandoned cart retrieval to harden against object injection
  • - [security] Stripe payment intent creation now enforces order ownership
  • **โœจ New**
  • - [add] Generate and share a payment link for unpaid orders directly from the order screen
  • - [add] Editable abandoned-cart reminder email popup with an automatic daily reminder cron
  • - [add] Failed payments now show a proper "Failed" order status instead of "N/A"
  • **๐Ÿ’ณ Payments**
  • - [fix] Cash on Delivery no longer creates a false transaction entry on order placement
  • - [fix] Stripe Buy Now, Pay Later methods are hidden when the order exceeds their maximum amount
  • - [fix] Rate-limited Stripe payment error logging to prevent log flooding
  • **๐Ÿ›’ Cart, Checkout & Shipping**
  • - [fix] Unified backend payment lock stops the cart from changing during payment
  • - [fix] Checkout now auto-selects the cheapest available shipping method
  • - [fix] A shipping maximum of 0 now correctly means "unlimited" instead of disabling the method
  • - [fix] Draft and other non-published products can no longer be added to the cart
  • **๐Ÿ“ฆ Orders & Reports**
  • - [fix] Clearer feedback and error handling for invalid or missing order IDs
  • - [fix] Order amount getters now return floats for PHP 8.x strict-type safety
  • - [fix] Revenue report validates its date range against the supported ranges
  • **๐ŸŽจ Storefront & Email**
  • - [ui] Fixed the shop page on mobile and tablet: responsive product grid and full-height filter drawer
  • - [content] Rewrote all default transactional email templates (order, refund, account) for clearer copy
  • **๐Ÿ“ WordPress.org & Developer**
  • - [i18n] Resolved WordPress.org guideline issues: text domain/i18n, CDN asset offloading, and composer.json
  • - [docs] Disclosed all external services in the readme
  • - [docs] Shortened the plugin display name and cleaned up readme metadata
  • - [test] Fixed OrderFactory test failures from non-scalar defaults and documented the related test bugs

1.41 - 2026-06-23

  • - [add] Added a Partially Refunded order email for customers and admins
  • - [security] Order details and payment endpoints are now restricted to the order owner, preventing unauthorized access to other customers' orders
  • - [fix] Per-item tax is now rounded before summing to fix a tax rounding discrepancy
  • - [add] Added input validation on checkout form fields
  • - [add] Unified Pro license and API key into a single connectivity authentication method
  • - [fix] Fixed editor modal flicker when the store is already connected
  • - [fix] Fixed the dashboard stats card not showing its loading state
  • - [fix] Single product report page no longer fires its data requests twice on load
  • - [fix] Fixed transaction ID handling on the customer details page
  • - [ui] Renamed "Dimension" to "Package Dimension" in the add product page pricing section

1.40.2 - 2026-06-16

  • - [add] Added a Subscriptions Overview card to the dashboard reports
  • - [fix] Fixed an order amount mismatch when the cart changes during checkout
  • - [fix] Shipping method ID is now validated before being stored in the cart
Scroll to Top