The commerce release. WooCommerce day-to-day work lands in Minn: Products, Coupons, Customers, order create and deep order management (notes, refunds, resend and compose email, pay URL), plus an Orders Analytics view with long-range revenue and top products. Diagnostics collapse four tools into one family (Scrutoscope, WP Crontrol, Transients Manager, Rewrite Rules Inspector). The editor grows shareable draft links through Public Post Preview, a full revisions browser, paste-a-URL-to-link and Select All that finally includes island block text. FluentSMTP catches up with search and log delete.
Added
- Products surface: WooCommerce catalog work lives at
/minn-admin/products(Workspace nav + ⌘K), not in the Content writing editor. List with status tabs (Published / Draft / Private / Pending), stock filters (In stock / Out / On backorder / Low stock via WooCommerce Analytics), search by name, SKU or exact ID, bulk status and stock updates, and a wide detail modal for the daily fields: name, SKU, status, catalog visibility, regular/sale price, stock tracking and status, and short description. Variable and grouped products show price/stock as read-only with an honest note; full gallery, variations and long description stay one click away via Edit in WooCommerce / View product. TheproductCPT is fenced out of Content type tabs so opening a product never drops into the Minn post editor by mistake. - Coupons surface: promo codes at
/minn-admin/coupons(Workspace + ⌘K). List with status tabs, search by code or ID, create and edit daily fields (code, discount type, amount, usage limits, per-user limit, minimum spend, expiry, individual use, free shipping), delete, and Edit in WooCommerce. Theshop_couponCPT is fenced out of Content. - Customers surface: registered WooCommerce customers at
/minn-admin/customers(Workspace + ⌘K). Search by name, email or ID; detail modal shows profile, billing and recent orders (click through to the order modal). - Create product / create order: Add product on Products creates a simple product (name, price, SKU, status) then opens the edit modal. New order on Orders builds a processing (or pending/on-hold) order with billing details and one line item via product search.
- Orders Analytics view: pill switcher on Orders (Orders | Analytics). Revenue chart, gross sales / net revenue / orders / items cards, and top products from WooCommerce Analytics (
wc-analyticsreports). Ranges: 7d / 30d / 90d / 1y / All, with monthly bars on long windows. - Orders management depth: the order modal loads the full WooCommerce order and covers the day-to-day fixes people still bounced to wp-admin for. Edit billing (name, email, phone, address), shipping address, customer note and status in one save; issue a partial or full refund with optional payment-gateway refund; copy the customer payment URL; resend any order-scoped WooCommerce email (invoice, processing, completed, and the rest) through WC's own mailer; and Send email… opens a Users-style compose form to the billing address with a prefilled subject/body and an order pay-or-view button in the HTML email. Notes are recorded on the order. Deep link targets the single order edit screen. The list gains a search box (order ID, number, customer name, email and the rest of WooCommerce's order search).
- Order notes: the order modal loads the WooCommerce notes timeline (private and customer-visible), and staff can add a new note with a "visible to customer" toggle without leaving Minn.
- Diagnostics family (Scrutoscope, WP Crontrol, Transients Manager, Rewrite Rules Inspector): Dev tools share one Tools nav item with a provider switcher instead of a top-level entry per plugin. Scrutoscope lists performance profiles (Pinned / Session / Background), detail sections from its own
/profile/{id}(sources, queries, HTTP, milestones), a status card, an attribution Cron view, and delete through its Storage. WP Crontrol is the actionable cron manager (overdue / paused / recurring / one-off, run-now, pause/resume, delete viaCrontrol\Event\*). Transients Manager lists options-table transients with search and Expired / Persistent / Site-wide filters, delete and bulk delete through coredelete_transient, and a Delete expired status action through their own purge; serialized values stay opaque (type + size only). Rewrite Rules Inspector lists registered rules with source attribution (Missing / Core / Posts / Pages / Other tabs, search by text or path), flushes soft rewrite rules the same way their tool does, and tests a path against the rule set with a first-match toast. Capture settings, PHP/URL cron authoring, full transient edit, and the full RRI screen stay deep-linked. Complements the Query Monitor chip and System's cron / expired-transients health rows. - Public Post Preview adapter: when Public Post Preview is active, the editor Publish card gains a Public preview link toggle (enable copies the share URL; disable revokes it), and the content row menu offers Copy public preview link (enables if needed). Links and expiry stay the plugin's own nonces and Reading setting; Minn only reads/writes their post-id list and calls
get_preview_link. - FluentSMTP search and delete: the Email surface for FluentSMTP gains subject/from/to search (the same columns their Logger searches) plus permanent single and bulk delete through
Logger::delete, with a prefix-scoped SQL fallback when the class is unavailable. - View all revisions: the editor History card still shows the latest few versions, and when more exist (the live total from
wp/v2/…/revisions) a View all revisions (N) control opens a dialog of every revision with absolute timestamps. Pick a row to open the existing side-by-side diff; ←/→ then walks the full list.
Improved
- Copy includes island blocks: Select All (or any selection that spans a dynamic/custom block island) now puts the island's visible content on the clipboard with the surrounding prose. Browsers skip
contenteditable=falseislands by default, so the card text used to vanish from ⌘C; copy and cut rebuildtext/plainandtext/htmlfrom the selected top-level blocks (preview HTML for islands, plus their Gutenberg raw undertext/x-minn-blocks). - Paste a URL over selected text to hyperlink it: in the editor, selecting words and pasting a URL (or a browser-copied link) wraps the selection in a link and keeps the original words, instead of replacing them with the URL string. Code blocks and islands still paste as plain text.
- Orders Analytics chrome stays put while ranges load: changing the range keeps the Orders|Analytics switcher, range tabs and stat card headers on screen (values show … until the new data lands) instead of blanking to a lone "Loading…" line. Top products request
extended_infoso names show instead of bare IDs.
Fixed
- Orders status tabs missed pending / cancelled / failed: the list tabs cover the full WooCommerce set (All, Processing, Completed, On hold, Pending, Cancelled, Refunded, Failed) so older failed or pending orders are not hidden behind an incomplete filter strip.
- Coupons nav when WooCommerce coupons are disabled: if Enable coupons is off,
shop_couponis not registered andwc/v3/couponsalways returns "Sorry, you cannot list resources." Minn now only offers Coupons when WC has coupons enabled and the post type exists (and shows a clear settings link if the route is hit anyway).