What's Changed
- Fix: placed order keeps its old payment status after its total is edited by @mad-eel in #14754
- Fix: a refused order edit no longer saves part of the changes by @mad-eel in #14753
- Fix: store credit and gift card checkouts could not be placed by @mad-eel in #14740
- Added first-run setup end-to-end test; fixed setup screen reloading in new projects by @damianlegawiec in #14747
- Documented transactional email providers by @damianlegawiec in #14759
- Added end-to-end tests for untested admin and seller panel screens by @damianlegawiec in #14764
- Fix: free gifts counting toward other promotions' spend thresholds and percentages by @mad-eel in #14761
- Added Zod schemas to the Admin and Seller SDKs by @damianlegawiec in #14763
- Fix: spree eject preparing the database after the app server starts by @damianlegawiec in #14758
- Fix: Run installation-wide sweep jobs in the store that owns each record by @damianlegawiec in #14749
- Fix: changing the quantity of an exchanged line deletes its original fulfillment by @mad-eel in #14752
- Fix: Cart not answering legacy Order names by @damianlegawiec in #14771
- Fix: item changes dropped delivery to zero and reset the chosen rate by @mad-eel in #14751
- Fix previous period calculation for whole-month time ranges by @damianlegawiec in #14774
- Fix: a single-use batch code applied before the cart qualifies is used up by its order by @mad-eel in #14762
- Fix: returns and claims refund discounted items at what the customer paid by @mad-eel in #14776
- Fix: string subscribers crash register_subscribers! outside development/test by @MatthewKennedy in #14768
- Fix: seller SDK callers of client.me() break after 1.0.0-beta.3 by @damianlegawiec in #14780
- Fix: CDN can serve one market's cached Store API response to another by @damianlegawiec in #14781
- Fix: EasyPost quotes every package of a split order with its own contents by @damianlegawiec in #14779
- Moved transactional emails to Liquid and MJML templates (V-3720) by @damianlegawiec in #14772
- Fix: Carts preselect Store Pickup before an address is entered (V-3718) by @mad-eel in #14788
- Fix: a buyer can order products their catalogs hide (V-3722) by @mad-eel in #14787
- Added extension slots to detail pages and form-saved plugin fields by @damianlegawiec in #14784
- Removed unused image helpers by @damianlegawiec in #14790
- Removed multi_search aliases scheduled for removal in 6.0 by @damianlegawiec in #14795
- Fix: Fixed newsletter subscribers migration task for renamed customer column by @damianlegawiec in #14792
- Fix: Added checkout zones migration to the 6.0 upgrade by @damianlegawiec in #14791
- Changed internal code and specs to use the 6.0 model names by @damianlegawiec in #14797
- Fix: Registered missing email subscribers so import, company invitation, data export and download emails are sent by @damianlegawiec in #14796
- Fix: Honored dependency overrides for cart, checkout and seller onboarding services by @damianlegawiec in #14793
- Removed unused classes with no callers by @damianlegawiec in #14794
- Fix: returns, claims and exchanges refund the tax the customer paid (V-3725) by @mad-eel in #14799
- Fix setting delivery method costs in different currencies by @KacperMekarski in #14798
- Removed unreachable API routes and controller actions by @damianlegawiec in #14802
- Removed unused translation keys by @damianlegawiec in #14803
- Fix: adding a fulfillment on an exchanged line fulfils the replacement instead of the line's own goods by @mad-eel in #14800
- Removed five classes that only tests called by @damianlegawiec in #14805
- Fix: Stock location delete dialog matches behavior by @damianlegawiec in #14807
- Added a redesigned packing slip document by @Abdul-Haseeb-Kamboh in #14686
- Fix: Two Stripe payment sessions on one cart could both be charged by @mad-eel in #14777
- Simplified Ruby code with Rails 8.1 built-ins and shared modules by @damianlegawiec in #14806
- Fix: Stop re-adding product type categories when opening a product by @damianlegawiec in #14808
- Fix product tax category not applying to variants by @damianlegawiec in #14809
- Fix: Hide custom payment source from provider picker by @damianlegawiec in #14810
- Fix: Show state validation when saving a company address by @damianlegawiec in #14811
- Changed installer: optional Seller Panel, --no-dashboard, consistent app setup by @damianlegawiec in #14814
- Added integrations gallery with payment providers, instant switches and setup guides by @damianlegawiec in #14816
- Store preferences as JSON and encrypt secrets (V-3730) by @damianlegawiec in #14789
- Changed integrations gallery to list only third-party payment methods by @damianlegawiec in #14819
- Added issuing store credits from Loyalty → Store Credits by @damianlegawiec in #14818
- Added typed webhook events and a declared event catalog (V-3728) by @damianlegawiec in #14773
- Keep a catalog's quantity price ladder unless it was edited by @damianlegawiec in #14820
- Fixes on CSV export/import: return option types and values for all variants, match option value correctly, distinguish no categories defined / unassigned categories by @KacperMekarski in #14812
- Added merchant-editable customer email templates (V-3729) by @damianlegawiec in #14785
- Added edit and delete to the store credits list by @damianlegawiec in #14822
- Rename 1-purchase-order-overview.png to 1-purchase-orders-overview.png by @jaburghes in #14827
- Update/user guides settings by @jaburghes in #14826
- CLI: Merged spree update into spree upgrade by @damianlegawiec in #14828
- Fix: Re-importing an unchanged products export no longer lowers stock by @mad-eel in #14825
- Fix: create-spree-app package manager tests no longer time out on busy CI runners by @damianlegawiec in #14829
- Moved translations into Spree and deprecated Spree.t (V-3733) by @damianlegawiec in #14831
- Improve handling idempotency key by @KacperMekarski in #14824
- Changed Pagy max_limit option to client_limit by @damianlegawiec in #14832
- Removed deprecation warnings raised by Spree's own code by @damianlegawiec in #14834
- Fix: Escape in a multi-select picker removed every chosen item by @mad-eel in #14778
- Changed delivery method price labels to format percentages without view helpers by @damianlegawiec in #14835
- Added a shared concern for typed-subclass labels by @damianlegawiec in #14836
- Changed Admin and Seller API typed values to short names instead of Ruby class names by @damianlegawiec in #14837
- Changed permission subjects to short names instead of Ruby class names by @damianlegawiec in #14839
- Released Spree 6.0.0.rc1, bumped the TypeScript packages and cleared npm security alerts by @damianlegawiec in #14840
Full Changelog: v6.0.0.beta4...v6.0.0.rc1
Upgrading
npx spree upgradeInstalling
npx create-spree-app