Stable
New: Woo Redesign module. Restyles the WooCommerce admin in the look of the Stackless screens: a soft page canvas, card-style tables with quiet uppercase headings, soft order and stock status badges, 2px corners (4px on cards), one 40px height for fields and buttons, tinted notices, one primary action per screen, settings and status pages as cards, and Tabler icons on the product data tabs (including the Stackless tabs). Choose which areas change (orders and coupons, products and catalog, settings and status, Home and Analytics), follow your WordPress admin color scheme, use Stackless Blue or pick a color, and choose comfortable or compact tables. Admin only: nothing loads on the storefront, and other admin pages keep their look.
Read full notes
33 changes
- New Woo Redesign module. Restyles the WooCommerce admin in the look of the Stackless screens: a soft page canvas, card-style tables with quiet uppercase headings, soft order and stock status badges, 2px corners (4px on cards), one 40px height for fields and buttons, tinted notices, one primary action per screen, settings and status pages as cards, and Tabler icons on the product data tabs (including the Stackless tabs). Choose which areas change (orders and coupons, products and catalog, settings and status, Home and Analytics), follow your WordPress admin color scheme, use Stackless Blue or pick a color, and choose comfortable or compact tables. Admin only: nothing loads on the storefront, and other admin pages keep their look.
- New Woo Redesign shows the store at a glance above the orders list (to fulfil, awaiting payment, on hold, sales today) and the products list (live, drafts, out of stock, low stock), each linking to the matching list.
- New Woo Redesign makes the product editor easier to follow: a "Ready to sell?" checklist for name, price, image, category and short description, a one-line intro on every product data tab, a plain-language line for the product type and the Virtual and Downloadable boxes, and field help shown as text instead of behind "?" icons. Product and coupon fields line up in one column with their descriptions under them, and dimensions sit in one row.
- New Software Licensing products get a WordPress updater listing: a plugin icon (PNG, JPG or SVG) shown beside the update in Dashboard → Updates and on the Plugins screen, a banner for "View details", a theme screenshot, an upgrade notice, author and homepage links, Description, Installation and FAQ tabs, and required plugins. Each falls back to the product image, description and store details. The Licensing tab is split into titled sections.
- Improved Stackless screens use 2px corners (4px on cards), black module links with separators between groups, 40px fields and tinted notices instead of a colored stripe.
- Fixed the Outbound clicks column on the products list collapsed to zero width, so its heading broke into one letter per line.
- Fixed a new release of a licensed product now reaches customers who already bought it. WooCommerce only grants the files a product has when the order is paid, so a version uploaded later (in the editor, through the REST API or a deploy script) never appeared in earlier buyers' My Account → Downloads. New files are now granted in the background to every order whose license may download them, and a customer's own orders are topped up again when they open Downloads, Licenses or an order, which also catches licenses renewed after a lapse. Expired and revoked licenses get nothing new. Turn this off under Software Licensing → Downloads → New releases.
- Fixed switching a subscription to another licensed product no longer creates a second license key that never expires. The switch moves the existing key to the new plan, as intended, and the switch order holds no keys of its own.
- Fixed a plan switch that moves one item of a multi-item subscription to a new billing schedule now moves that item's license keys to the new subscription, so they renew, pause and end with it.
- Fixed in "one key, limit multiplied by quantity" mode, a plan switch keeps the quantity: three seats of a 1-site plan switched to a 5-site plan give 15 sites, not 5.
- Fixed switching to a plan without licensing ends the old plan's keys instead of leaving them active and renewing; switching from such a plan to a licensed one creates the key.
- Fixed an order cancelled or refunded by status and then set back to processing or completed gets its license keys back. Keys revoked by a partial refund or by hand stay revoked.
- Fixed removing a variation no longer breaks the keys sold for it. They keep validating, updating and renewing under the product's own settings instead of answering "invalid license".
- Fixed keys for two variations of one product bought on different schedules each follow their own subscription.
- Fixed the license API's version check only includes the download package for a site activated on the key. A request without a site address (or with one that can't be read) still learns the new version, but can't download updates without using an activation.
- Fixed with no file picked as the update package, Software Licensing serves the file tagged or named with the current version ("my-plugin 1.5.0") instead of the first file, so adding a release after the old ones updates sites to the right version.
- Fixed the drop-in license client fetches a fresh download link when WordPress installs an update from a check made hours earlier, instead of failing with "Download failed. Forbidden". Copy the updated client (1.3.0) into your plugins and themes.
- Fixed the license client works with stores that don't use pretty permalinks. There, /wp-json/ returns a web page, so every call failed with "unexpected response"; the client now falls back to ?rest_route= and remembers it.
- Fixed when the store can't be reached, "View details" in the plugin list shows an error instead of falling through to wordpress.org, which may list a different plugin under the same slug. An invalid or expired key no longer hides the details either.
- Fixed the license API's anonymous "View details" lookup by slug picks the first product with licensing turned on, so a newer product sharing the slug without licensing (a copy, a bundle) no longer hides the real one.
- Fixed sites on international domain names (bücher.de) can activate keys; they match their punycode form.
- Fixed a client configured with a product id keeps validating after a plan switch moves the key to another product of the same software.
- Fixed when a stackless_software_licensing_allow_activation filter refuses a site, the customer sees the filter's own message and status instead of "The license request failed."
- Fixed "Last updated" in the update details modal no longer shifts by the store's time zone offset.
- Fixed sites on two-part country domains such as test-prep.co.uk or dev-shop.com.au no longer count as free development sites.
- Fixed keys from a guest order move to the customer's account when WooCommerce links past orders to it, or when an admin changes the order's customer, so they appear under My Account → Licenses.
- Fixed license expiry dates no longer show a day late for stores whose daylight saving offset differs between today and the expiry date.
- Fixed ticking "Never expires" on an expired license makes it active again, as setting a future date already did.
- Fixed Software Licensing no longer serves an update package that WooCommerce has disabled, for example because its folder was removed from the approved download directories. WooCommerce already refused that file's own download links; the license API and My Account → Licenses now refuse it too.
- Improved files named like "my-plugin 1.4.2" or "my-plugin-1.4.2.zip" count as previous versions without tagging each one. A version is only read when the name matches the software slug or the update package's name, and a tag or release history line still wins.
- Improved My Account → Downloads shows one row per file for licensed products, however many orders granted it, newest version first, with a Version column and the update package marked Latest.
- Improved My Account → Licenses shows the latest version, a count of previous versions with their release dates, and explains why an expired, revoked or inactive license has no download button.
- Improved setting the current version through the WooCommerce REST API dates it in the release history, as saving the product in the editor does. The product's Licensing tab shows the version read from each file name and marks the update package.