Spree 6.0.2
This patch release fixes bugs found after 6.0.1 in promotions, payments and the 5.6 → 6.0 upgrade path. It also shows staff sessions in the dashboard, adds Vietnamese translations and makes dashboard installs much smaller.
npx spree upgrade✨ New features
- Staff status, activity and sessions. The staff settings page shows whether each member is active, locked or deactivated and when they were last active. A new "View details" sheet lists when they joined, who invited them and their signed-in sessions with browser, IP address and last use. #15040
- Vietnamese translations for the admin dashboard and the seller panel. #15051 by @buithehien1991
- Order pages for plugins.
@spree/dashboard/ordersexports the order page's building blocks (useOrderItemsEditor, the items table, the add-line-item dialog, totals and the order cards) so plugins can build their own order pages. #15067 - Clearer promotion item-total rules. The comparison is a translated choice instead of an operator token, and legacy values are mapped to the matching choice. #15053 by @laaichiu
🐛 Bug fixes
- Deleting a promotion that open carts had applied no longer breaks those carts. A new
spree:remove_orphan_order_promotionstask cleans up rows left by earlier deletes. #15056 - Applying a coupon to a cart no longer fails when the promotion creates item adjustments and has a usage limit. #15045 by @MatthewKennedy
- The Admin API orders list no longer returns a 500 for a non-text
q[search]value. #15065 - Void is no longer offered on captured payments the gateway cannot void, such as Stripe. Admin API payments now return
can_voidandcan_capture. #15057 - Payment webhook URLs are built with a scheme again. #15058
- Stock reservation no longer crashes when a stock level is deleted during checkout. #15054
- A buyer can save the same payment source in two stores, or after a payment method was deleted and recreated. #15020 by @KacperMekarski
- Re-importing a products CSV no longer leaves orphaned option value rows that block later imports. A migration removes existing orphans. #15035
- Claude Code can connect to the admin MCP server on a production store:
http://localhost:<port>redirect URIs are accepted and the Claude preset registers Claude Code's callback. #15043, #15052 - The admin MCP server's create, update and delete tools now work on installs from the published gems. #15038
⬆️ Upgrading from 5.6
- Delivery method zones survive the 6.0 upgrade migration, including methods without a store. #15060
spree:migrate_shipping_to_deliveryrenames legacy shipping calculators toSpree::DeliveryMethod. #15059- Stores that already upgraded to 6.0.0 or 6.0.1 should re-run
spree:migrate_shipping_to_delivery; it is idempotent and warns about delivery methods still without a zone.
🛠 Developer experience
spree_corenow requires Alba 4.spree upgradeandbundle update spreemove it along; apps with their own serializers should check the upgrade guide. #15028spree_coreno longer depends onsafely_block,benchmark,rexmlorhighline. Add any of them to your Gemfile if your app used them through Spree. #15021, #15018- Dashboard installs are smaller:
@spree/dashboard-uino longer pulls in the shadcn CLI, the command palette runs on Base UI instead ofcmdkand Radix, and release notes render GitHub's HTML instead of a markdown parser. TheCommandcomponent drops thecmdk-onlyfilter,loop,valueandonValueChangeprops. #15026, #15029, #15032, #15022 pnpm installon a fresh clone of the monorepo builds the CLI and links thespreecommand. #15063- The Rails app template is up to date for Spree 6, and test apps raise unexpected errors instead of rendering 500 pages. #15018, #15017 by @bhtabor, #15019
📦 Package versions
| Package | Version |
|---|---|
| Spree gems | 6.0.2
|
@spree/sdk, @spree/admin-sdk, @spree/seller-sdk, @spree/core
| 6.0.2
|
@spree/dashboard, @spree/dashboard-core, @spree/dashboard-ui, @spree/seller-dashboard
| 6.0.2
|
@spree/cli
| 3.6.2
|
create-spree-app
| 2.4.2 (unchanged)
|
Full Changelog: v6.0.1...v6.0.2