Releases: spree/spree
v4.10.0
This minor release brings 2 exciting features:
🛤️ Rails 7.2 support
📦 automatic shipment tracking URL generation for UPS, FedEx, DHL, USPS, OnTrac, Amazon Logistics, and 160+ countries national postal services (S10 standard), thanks to amazing tracking_number library
More importantly
-
we've changed the Spree Open Source License to standard AGPL-3.0 , which is fully described on our blog - https://spreecommerce.org/why-spree-is-changing-its-open-source-license-to-agpl-3-0-and-introducing-a-commercial-license/
-
We're also introducing Spree Enterprise Edition with new enterprise-grade features and integrations available out of the box
Full Changelog
- Ability to save Variant's
dimensions_unit
andweight_unit
by @damianlegawiec in #12122 - Stop overwriting `Rails.application.config.active_record.yaml_column_… by @damianlegawiec in #12124
- Disallow creation of
Spree::Price
records with empty values by @damianlegawiec in #12126 - Added
TrackingNumber::BaseService
for automatic tracking URL genera… by @damianlegawiec in #12127 - Make
Taxon#pretty_name
persistent in the database by @damianlegawiec in #12129 - Fixes for
Taxon#pretty_name
in more scenarios by @damianlegawiec in #12130 - Fixed API
collection_cache_key
by @damianlegawiec in #12131 - Make sure that after shipment is split, the new shipment has updated cost by @Vegann in #12134
- Minimize N+1s for fetching Cart/Orders in Storefront API by @damianlegawiec in #12137
- Remove caching from
supported_locales_list
by @damianlegawiec in #12138 - Added
Taxon#store
method by @damianlegawiec in #12139 - Add
gateway_payment_profile_id
toSpree::V2::Storefront::CreditCardSerializer
by @mad-eel in #12141 - Always initialize
LineItem#quantity
with value1
if not specified… by @damianlegawiec in #12142 - Rails 7.2 support by @damianlegawiec in #12136
- Fixed possible (weak) SQL injection reported by brakeman by @damianlegawiec in #12143
Full Changelog: v4.9.0...v4.10.0
v4.9.0
This release improves the overall performance of Spree applications and brings many bug fixes we backported from Vendo. Major highlights are:
💻 new API endpoints for handling Wishlists and Variants in Storefront API
👨💻 improved Webhooks
💸 improved Store Credits
🐛 Sentry error reporting integration for API
Alongside this release, we've also launched a completely new Spree website and highlighted massive new features coming in Spree 5 🚀
How to upgrade
Please follow Spree 4.9 upgrade guide
Spree Core
- Fix destroying carts with addresses assigned to other complete orders by @mad-eel in #12055
- Nicer name for default stock location by @damianlegawiec in #12056
- Added handy methods to the Wishlist model by @damianlegawiec in #12057
- Added a bunch of handy methods by @damianlegawiec in #12058
- Shipping Rate fixes by @damianlegawiec in #12059
- Improve
TaxRate#label
to display it right by @damianlegawiec in #12060 - Added
StockLocation#address
method and ability to add encryption by @damianlegawiec in #12061 - added soft delete to
StockLocation
by @damianlegawiec in #12062 - Added a bunch of helper utility methods by @damianlegawiec in #12063
- Extended Shipment model with helper methods by @damianlegawiec in #12064
- Add
apply_only_on_full_priced_items
preference toFlatRate
, `Flex… by @damianlegawiec in #12068 - Replace decorator usage in
spree_emails
with plain ruby modules by @damianlegawiec in #12069 - Added universal webhook interfaces to avoid using decorators by @damianlegawiec in #12070
- added missing ShippingMethod and ShippingCategory serializers for Sto… by @damianlegawiec in #12072
- Fixed: do not allow to create line items when there's no price in the… by @damianlegawiec in #12073
- Make Store Credits more flexible by @damianlegawiec in #12074
- Ability to configure/override
Spree::Address
validation to make it … by @damianlegawiec in #12076 - Add some scopes to payments and store credits by @mad-eel in #12077
- Fix coupon codes with some chars can't be removed from cart by @zavan in #12075
- Fixed:
LineItem#product
to also return soft-deleted products by @damianlegawiec in #12078 - Fixed:
Store#current
- removed deprecation, use dependencies by @damianlegawiec in #12080 - Set doorkeeper tokens expiration date to 1 month by @damianlegawiec in #12081
- Update
Spree::OrderMerger
and addSpree::Seeds::PaymentMethods
by @mad-eel in #12082 - Use
RequestStore
to store whether webhooks are disabled by @Vegann in #12083 - Allow Spree classes to specify which relationships should be included in webhook by @Vegann in #12084
- Fixed:
Spree::Money
correctly parses and displays Danish Krone by @damianlegawiec in #12085 - Use
Spree::Taxon.for_store
scope when resolving taxons in Products finder by @mbajur in #12087 - Fix Store Credit and Refund serializers by @mad-eel in #12088
- Performance: use loaded associations in
Quantifier
to speeds things up by @damianlegawiec in #12092 - Added
ShippingMethod
display_on
based scopes by @damianlegawiec in #12093 - Improve performance of Zone/Countries seeds by @damianlegawiec in #12094
- Use
admin_user_class
forRoleUser
association by @damianlegawiec in #12095 - Expire variants cache when changing position of master variant images by @damianlegawiec in #12096
- fix free shipping promotion by @damianlegawiec in #12097
- Ability to pass
email
toFirstOrder
promotion rule by @damianlegawiec in #12098 - Add weight and item total preferences to the
Spree::Calculator::Shipping::FlatRate
calculator by @mad-eel in #12099 - Added
order_includes
toControllerHelpers::Order
by @damianlegawiec in #12100 - Improve performance of
LineItems::FindByVariant
finder by @damianlegawiec in #12101 - Fixed: raise an error when trying to add a variant without price in s… by @damianlegawiec in #12103
- Fix
Spree::ShippingMethod.available
scope by @mad-eel in #12102 - Auto-Remove items from cart when not available in new currency by @damianlegawiec in #12104
- Improve & simpluft collection caching in API by @damianlegawiec in #12106
- Improve error rendering in
OrderConcern#render_order
when request f… by @damianlegawiec in #12107 - Move ActiveStorage code into
Spree::Asset
by @damianlegawiec in #12115 - Use
admin_user_class
inAuthorizationHelpers
by @damianlegawiec in #12116 - Improve flexibility and extensibility of webhooks matchers by @damianlegawiec in #12118
Spree API
- Added 2 new Wishlists API endpoints:
add_items
andremove_items
f… by @damianlegawiec in #12105 - Added Storefront Variants API endpoint by @damianlegawiec in #12065
- Fixed API error reporting to actually use the Error reporter for all … by @damianlegawiec in #12067
- Fixed: Storefront Products API now works with old slugs as well by @damianlegawiec in #12066
- Use Runtime configuration for API config by @damianlegawiec in #12071
- Fixed: Webhooks: don't log as error messages a success by @damianlegawiec in #12091
- Added
WebhookSubscriber#latest_event_at
by @damianlegawiec in #12090 - Fixed setting SSL for webhooks based on the URL and not the environment by @damianlegawiec in #12089
- Fixed
rake test_app
for API gem by @damianlegawiec in #12117 - Automatically detect Sentry and report API errors by @damianlegawiec in #12108
Full Changelog: v4.8.3...v4.9.0
v4.8.3
What's Changed
- Update documentaion for spree_cli command in creating an extension by @mausamp in #12051
- Set default locale in the ControllerHelpers::Locale when using column_fallback for translations by @mad-eel in #12054
New Contributors
Full Changelog: v4.8.2...v4.8.3
v4.8.2
What's Changed
Full Changelog: v4.8.1...v4.8.2
v4.8.1
What's Changed
- Fixed unintialized constant
Spree::Prefence
when setting config via… by @damianlegawiec in #12045
Full Changelog: v4.8.0...v4.8.1
v4.8.0
Spree v4.8 🔥 🔥 🔥 🔥
🌎 This release includes some big changes in how we handle translations
previously even if you had only one language you still had to use the translations database tables - now we fall back to the original values, eg. for Products to spree_products.name
, which makes upgrading from older versions much easier (especially if you have a big product catalog)
📖 New Documentation website
completely rewritten, updated, patched, integrated with API docs, and much easier to navigate - we're still working on adding missing sections/pages - stay tooned!
✨ both Admin Panel and Storefront now use Importmap, so you don't need node or any other build tool at all
🎨 both Admin Panel and Storefront received a new updated look and feel
🏎️ Storefront now uses Hotwire/Turbo
💻 easier to develop, easier to contribute - dev sandbox now runs on SQLite and doesn't require to install any additional tools
How to upgrade
Please follow Spree 4.8 upgrade guide
Spree Core
- Move Spree Backend and Spree Frontend configurations out of Spree Core. by @MatthewKennedy in #11805
- Remove
default_country_id
fromSpree::Config
by @rafalcymerys in #11964 - Pin factorybot version by @mateus-po in #11970
- Add runtime configuration class by @rafalcymerys in #11965
- Bump active_storate_validations version by @mateus-po in #11982
- Sp-115/Unified CircleCI test pipeline template by @mateus-po in #11966
- Run tests with Ruby 3.3 by @rafalcymerys in #11984
- Fix translation_table_alias to be valid for locales with a dash (e.g.… by @mrbrdo in #11989
- Directly use Mobility's locale normalization method by @mrbrdo in #11990
- Fix creating a new extention by @mateus-po in #11992
- Bulk Promo Codes by @tomdonarski in #11959
- Bulk promo codes improvements by @rafalcymerys in #11999
- Update copyright year to 2024 by @devcamke in #11981
- Always preserve User ID when creating a copy of non-editable address … by @damianlegawiec in #11768
- Remove unused alias_attribute raising deprecation message by @fdocr in #11976
- Change license header to match OSI format by @elliotwutingfeng in #11868
- Do not use redis for tests by @damianlegawiec in #12000
- Loosen up the dev dependencies by @damianlegawiec in #12001
- Fixed sandbox generation script by @damianlegawiec in #12002
- Use sqlite for local development to easen the setup of the project by @damianlegawiec in #12004
- Move away from Node to Importmap by @damianlegawiec in #12006
- Fixed Spree CDN on localhost by @damianlegawiec in #12007
- Bump version to 4.8.0.beta by @damianlegawiec in #12011
- Fixed Spree Stock Items unique index by @damianlegawiec in #12012
- Simplify Circle CI config and use .ruby-version by @damianlegawiec in #12013
- Use port 3000 by default, set only by @damianlegawiec in #12016
- Fix Spree CDN when no host is set at all by @damianlegawiec in #12017
- Disable webhooks during seed / sample load to speed up the process by @damianlegawiec in #12018
- New Spree Documentation website by @damianlegawiec in #12021
- Documentation - new Upgrade Guides pt1 by @damianlegawiec in #12023
- Feature/docs upgrade guides 2 by @damianlegawiec in #12025
- Add git submodules of all Spree gems to make it easier to develop it … by @damianlegawiec in #12027
- Update stores.mdx by @rahul2103 in #12028
- Update 4.5-to-4.6.mdx doc with additional fixes and hints by @mad-eel in #12029
- Update architecture.mdx by @rahul2103 in #12031
- Making sure we're always including Spree concerns with Spree namespac… by @damianlegawiec in #12032
- Improve AuthorizationHelpers for admin panel by @damianlegawiec in #12033
- Update highline requirement from ~> 2.0 to >= 2, < 4 in /sample by @dependabot in #11988
- relax mobility dependencies by @damianlegawiec in #12034
- Relax active_storage_validations dependency by @damianlegawiec in #12035
- Added weight/dimensions unit to Variants by @damianlegawiec in #12036
- Added
Comparable
mixin toSpree::Money
by @damianlegawiec in #12037 - Allow Rails 7.2 by @damianlegawiec in #12038
- fixed rails 7.2 deprecations by @damianlegawiec in #12039
- Use column_fallback plugin for storing default locale's translations in original columns by @mad-eel in #12040
- Add more model and API specs for translations by @mad-eel in #12043
- Fix custom authentication generators and update docs by @damianlegawiec in #12044
Spree Backend (Admin Panel)
- Add generic tabs partial by @rafalcymerys in spree/spree_backend#286
- Add generic tabs partial - Spree 4.7 by @rafalcymerys in spree/spree_backend#287
- Remove Spree::Config[:default_country_id] usages by @rafalcymerys in spree/spree_backend#288
- Remove setting Spree::Config.default_country_id in a spec by @rafalcymerys in spree/spree_backend#289
- Use runtime configuration for admin_path by @rafalcymerys in spree/spree_backend#290
- Hide preferences side panel when creating a new payment method by @mateus-po in spree/spree_backend#292
- Display webhook secret key in admin panel by @mateus-po in spree/spree_backend#293
- Fix an issue with missing variants when adding a new product with a prototype by @mateus-po in spree/spree_backend#295
- Add lists plugin for TinyMCE by @rafalcymerys in spree/spree_backend#299
- Sp 145/unified circleci test pipeline by @mateus-po in spree/spree_backend#291
- Allow PaymentMethod to register a custom partial view to display above "Payment Provider Settings" by @mateus-po in spree/spree_backend#294
- Fix Promotions#index view when a promotion has expires_at set by @tomdonarski in spree/spree_backend#302
- Corrected typo in translation key by @mateus-po in spree/spree_backend#304
- Replace Node with Importmap by @damianlegawiec in spree/spree_backend#308
- Fixed request utility import by @damianlegawiec in spree/spree_backend#309
- Improve the importmap setup, inspired by the excellent mission contro… by @damianlegawiec in spree/spree_backend#310
- Update jquery-ui-rails requirement from ~> 6.0 to >= 6, < 8 by @dependabot in spree/spree_backend#311
- [skip ci] Update license.md by @damianlegawiec in spree/spree_backend#314
- added new admin branding by @damianlegawiec in spree/spree_backend#315
- Update sqlite3 requirement from ~> 1.4 to ~> 2.0 by @dependabot in spree/spree_backend#316
- Don't call spreecloud in test env in admin by @damianlegawiec in spree/spree_backend#317
Spree Frontend (Storefront)
- Remove default_country_id from Spree::Config by @rafalcymerys in spree/spree_rails_frontend#58
- SP-176 Run specs with ruby 3.3 by @tomdonarski in spree/spree_rails_frontend#60
- Trigger change event for cart form variant_id by @mbajur in spree/spree_rails_frontend#51
- Remove jsbundling-rails dependency by @damianlegawiec in spree/spree_rails_frontend#62
- fixed: don't overwrite the manifest.js file during installation by @damianlegawiec in spree/spree_rails_frontend#63
- fixed turbo integration with importmap by @damianlegawiec in spree/spree_rails_frontend#64
- Disable HTTP caching by default by @damianlegawiec in spree/spree_rails_frontend#65
- Setup importmap by @damianlegawiec in spree/spree_rails_frontend#66
- general gem cleanup to prepare for v4.8 by @damianlegawiec in spree/spree_rails_frontend#70
- Feature/new design by @damianlegawiec in spree/spree_rails_frontend#74
New Contributors
- @mateus-po made their first contribution in http...
v4.7.3
Fixed: Making sure we're always including Spree concerns with Spree namespace to avoid name clashing, eg. Spree::Metadata
Full Changelog: v4.7.2...v4.7.3
v4.6.6
Fixed: Making sure we're always including Spree concerns with Spree namespace to avoid name clashing, eg. Spree::Metadata
Full Changelog: v4.6.5...v4.6.6
v4.5.5
Fixed: Making sure we're always including Spree concerns with Spree namespace to avoid name clashing, eg. Spree::Metadata
Full Changelog: v4.5.4...v4.5.5
v4.7.2
What's Changed
- bring back OrderContents and store credit methods to ease upgrading to Spree 4 eb0fcf5
Full Changelog: v4.7.1...v4.7.2