All Versions
Latest Version
Avg Release Cycle
84 days
Latest Release
1339 days ago

Changelog History
Page 1

  • v2.11.2 Changes

    November 12, 2020

    ๐Ÿ›  Fix ability to perform refunds after a first failed attempt #3831

  • v2.11.0 Changes

    October 23, 2020

    Major Changes

    โœ‚ Removed support for Rails 5.1

    ๐Ÿ—„ Rails 5.1 is not maintained anymore, we deprecated it in 2.10 so it's time to
    โœ‚ remove it entirely.

    โž• Add billing_address_required preference

    The new preference controls whether validations will require the presence of
    the billing address.

    • ๐Ÿ‘ Allow to specify if billing address is required for orders #3658 (softr8)

    โž• Add BCC email to order confirmation emails

    Spree::Store model now accepts a BCC email field that, when present, will be
    ๐Ÿ‘‰ used in order confirmation emails.

    โšก๏ธ Order merger and order updater now require valid order

    โšก๏ธ The order merger and order updater will complete successfully only on valid
    ๐Ÿš€ orders. This new behavior is opt-in with this release, but will become the
    0๏ธโƒฃ default from Solidus 3.0.

    You can enable this feature right now by setting the preference with
    Spree::Config.run_order_validations_on_order_updater = true

    • โž• Add ability to run validations in order updater #3645 (kennyadsl)

    Stop calling Spree::Refund#perform! after creating a refund

    From Solidus v3.0 onwards, #perform! will need to be explicitly called when
    creating new refunds. Please, change your code from:

    Spree::Refund.create(your: attributes)


    Spree::Refund.create(your: attributes, perform_after_creation: false).perform!

    The perform_after_creation attribute will be deprecated in Solidus 3.x.

    • Stop calling perform! as Spree::Refund after_create callback #3641 (kennyadsl)

    ๐Ÿ‘ Allow to configure guest_token cookie options

    The guest_token cookie is currently always only allowed for the current domain,
    including subdomain. If you want to use the cookie on a different subdomain you
    can use the preference guest_token_cookie_options.

    • ๐Ÿ‘ Allow to configure guest_token cookie options #3621 (tvdeyen)

    โž• Add event subscribers automatically

    Event subscribers are now loaded automatically when their source file
    is placed under the directory app/subscribers and filename ends with
    _subscriber.rb. This works both for Solidus core, Solidus extensions
    and the store app.

    ๐Ÿšš If you have any custom subscribers with an explicit subscription (i.e. MyCustomSubscriber.subscribe!) ensure they're under app/subscribers path and remove the explicit subscriptions from your app initializer (i.e MyCustomSubscriber.subscribe!).

    โž• Add address default for billing as well

    0๏ธโƒฃ It's now possible to mark an address as default for billing with the
    0๏ธโƒฃ column default_billing.

    • โž• Uniform bill_address and ship_address behaviour in Spree::UserAddressBook module #3563 (oldjackson)

    Getting closer to completely replace Paranoia with Discard

    We're getting closer to fully replace Paranoia with Discard. Paranoia
    ๐Ÿ—„ methods have been fully deprecated, so you're encouraged to switch to
    Discard also in your store codebase.

    • DRY paranoia and discard inclusion into models #3555 (cedum)
    • Replace Paranoia methods with Discard equivalents #3554 (cedum)

    โž• Add ActiveStorage adapter

    ๐Ÿš… From Rails 6.1 ActiveStorage will support public blob URLs and Solidus
    should be ready to offer an ActiveStorage adapter to new stores.

    Introduce Address#name

    We're going to introduce the new column name for addresses that will
    replace the existing first_name and last_name. In preparation of
    this, we're now introducing a virtual attribute name that works like
    and replaces #full_name.

    Replace Spree.routes with Spree.pathFor
    ๐Ÿ—„ The use of Spree.routes is now deprecated. You can check in your
    ๐Ÿ—„ browser developer tools console for deprecation messages.

    ๐Ÿ”ง Configurable order state machine with new default
    ๐Ÿ”ง The order state machine class is now configurable, just like other models state machines. Also, a simplified version of the current state machine will
    0๏ธโƒฃ be the new default in Solidus 3.x.

    • ๐Ÿ”ง Configurable order state machine and reduce the number of possible transitions #3542 (mamhoff)

    Include payment methods in installer
    Solidus installer has now a section for installing payment method gems out of the box.
    Currently, the only available gem is solidus_paypal_commerce_platform.

    • โž• Add payment method selection to the install generator #3731 (elia)

    โœ‚ Remove CanCanCan custom actions aliases
    โฌ†๏ธ CanCanCan custom action aliases have been deprecated and replaced with default ones to make it easier upgrading to newer versions of CanCanCan.
    A new application preference has been introduced: use_custom_cancancan_actions which when set to:

    • 0๏ธโƒฃ true will still accept using custom aliases (default for existing applications);
    • false any custom aliases defined previously won't be handled anymore by Solidus.

    Ensure double-checking all the custom defined permissions in your application before switching to use_custom_cancancan_actions preference to false.

    Introduce encrypted preference type
    A new preference type encrypted_string has been introduced allowing to encrypt the value assigned to the preference to avoid exposing it in case a malicious user gets access to the DB or a dump.
    Check the related guide for more details .

    โž• Add "discontinue on" attribute to products
    Adds a discontinue_on attribute to products. This accompanies the available_on attribute to complete the "Time Based Availability" feature. The Product.available scope and Product#avaliable? method take this new date field into account to calculate the availability of products.

    ๐Ÿ›  Fixed how the default reimbursement store-credit category is fetched
    Before this change the store-credit category for reimbursement was fetched by name using a missing translation (i.e. en.spree.store_credit_category.default) that resulted in the name "Default". If no category was found the code fell back on the first category from the database, which wasn't guaranteed to be the right one. Trying to update the translation to the desired category name was also useless due to how code was loaded.
    ๐Ÿ›  Now it's possible to disable this legacy behavior and switch to a simpler one, in which the code will look for a CreditCategory named "Reimbursement". Here's a list of checks and fixes you can perform to ensure you can enable the correct implementation:

    • If you don't use reimbursements you're good to go, skip below to Disabling the legacy behavior
    • Ensure you didn't decorate or patched any of the involved code, especially:
      • Spree::StoreCreditCategory.reimbursement_category
      • Spree::StoreCreditCategory.reimbursement_category_name
    • Ensure your "production" environment is already returning the correct category, you can assess that by running this in your "production" console: Spree::StoreCreditCategory.reimbursement_category(nil).name == "Reimbursement"

    Disabling the legacy behavior
    ๐Ÿ”ง If everything is sound, or you are ok with a different category name for newly created reimbursement store credits you can switch to the new behavior by configuring this Solidus preference in your spree.rb initializer:

    Spree.config do |config| config.use\_legacy\_store\_credit\_reimbursement\_category\_name = falseend

    If you had modifications in your codebase consider disabling the legacy behavior and porting them to a simple overwrite of Spree::Reimbursement#store_credit_category.
    ๐Ÿšš The legacy behavior will be removed in the next major version of Solidus.

    • Fix reimbursement_category_name ending up in a translation missing error #3507 (elia)

    Do not consider promotions without actions as active

    When considering to apply a promotion to an order we use the active scope.
    This scope was including promotions without actions and we no longer are taking them into account.

    To switch to the new behaviour which will be the only one accepted in Solidus 3.0 change the following preference Spree::Config.consider_actionless_promotion_active to false.

    If you need to consider actionless promotions as active for any reason please implement your own scope for that.



    • ๐Ÿ›  Fix Ruby 2.7 warnings on backend #3746 (stefano-sarioli)
    • Respect current ability in users controllers #3732 (igorbp)
    • [Admin] Disallow promotions with empty action type and discount rule #3724 (cnorm35)
    • Replace duplicate data-hook name #3705 (seand7565)
    • ๐Ÿ”„ Change to true/false to yes/no in Auto Capture Select Text #3703 (michaelmichael)
    • [Admin] Fix Square Logos appearance #3702 (michaelmichael)
    • ๐Ÿšš [Admin] Add filter feature for stock movements #3680 (jacquesporveau)
    • ๐Ÿšš Display originator email in stock movement admin #3673 (jacquesporveau)
    • [Backend] More precise cancan validations for some resource links #3654 (spaghetticode)
    • Variant property rules to optionally match all conditions (cont.) #3653 (filippoliverani)
    • Eager loading countries when creating a new zone #3649 (softr8)
    • โœ‚ Remove unused XHR code #3642 (halilim)
    • ๐Ÿ’ป Admin UI for shipping methods - stock locations association #3624 (cedum)
    • ๐Ÿ”จ Refactoring Admin::ProductsController to use ResourcesController#update #3603 (softr8)
    • Rescuing from ActiveRecord::RecordInvalid in ResourcesController #3602 (softr8)
    • โž• Adding missing paginator when listing all stock locations #3600 (softr8)
    • ๐Ÿ‘‰ Show only active promotions filter #3595 (wildbillcat)
    • Unified Handling of Option Values and Product Properties List #3592 (hefan)
    • Do not pass non persistent new records when sorting tables by removing non numeric ids #3591 (hefan)
    • Check if promotions exist without extra db query #3586 (katafrakt)
    • Do not display non-eligible adjustments in the admin cart overview #3585 (coorasse)
    • โšก๏ธ Backend: more robust update_positions for resource controller #3581 (hefan)
    • [Backend] Handle errors and flash messages editing a taxon #3574 (softr8)
    • โœ‚ Remove non-existing middleware #3570 (coorasse)
    • โž• Add ability to select multiple rows on Admin Tables #3565 (DanielePalombo)
    • โž• Add support for prefill user address in new order #3558 (jaimelr)
    • replace link_to_add_fields usage and deprecate helper function #3547 (hefan)
    • Convert ES6 arrow syntax to ES5 for compatibility #3511 (pelargir)
    • Ensure payment methods are ordered correctly #3506 (AlistairNorman)
    • [Admin] Change shipment email checkbox label #3490 (kennyadsl)
    • ๐Ÿ‘‰ Use RESTful routing for users' API key management #3442 (kennyadsl)
    • ๐Ÿ›  Fix issue 3164 - generate shipments for backend-added products when necessary #3197 (spaghetticode)
    • ๐Ÿ›  Fixes for consistent handling of resource errors on admin #3728 (ikraamg)
    • ๐Ÿ”ฆ Expose js function: Spree.SortableTable.refresh #3754 (brunoao86)
    • ๐Ÿ›  Fix TaxCategory default not showing up in admin #3759 (vl3)
    • ๐Ÿ‘‰ Make order customer email links consistent #3767 (brchristian)
    • ๐Ÿ›  Fix typo in comment in navigation_helper.rb #3770 (brchristian)
    • ๐Ÿ‘‰ Make admin order event_links translatable #3772 (tvdeyen)
    • Display billing address to left of shipping address #3773 (brchristian)
    • โž• Add hint to tax category default checkbox #3778 (pelargir)
    • โž• Add link to stock movements page from variant stock display #3779 (seand7565)
    • โšก๏ธ Update backend New Image link for consistency #3786 (brchristian)
    • ๐Ÿ‘‰ Show the admin/settings menu for any of its elements #3783 (elia)
    • ๐Ÿ‘Œ Improve the developer experience with the new Ability deprecations #3801 (elia)
    • Ensure #resource_not_found mentions the right model #3798 (elia)
    • โž• Add CSS selector for datetime-local #3792 (jacobherrington)
    • โœ‚ Remove CSS resizing logo when menu collapses #3791 (jacobherrington)


    • ๐Ÿ‘ Allow for HTML options on image partial #3741 (markmead)
    • Use a better name for CheckoutController#set_state_if_present #3496 (elia)
    • Replace with :all_adjustments.nonzero.any? #3787 (duartemvix)


    ๐Ÿ—„ Deprecations & Removals


    ๐Ÿ“„ Docs & Guides

  • v2.10.3 Changes

    November 06, 2020

    ๐Ÿ”’ Lock Rails to 6.0.x.

  • v2.10.2

    July 16, 2020
  • v2.10.1

    May 14, 2020
  • v2.10.0 Changes

    January 15, 2020

    Solidus 2.10.0

    Major Changes

    โž• Added support for Rails 6

    โฌ†๏ธ Solidus core now fully supports Rails 6! After upgrading to the 2.10 you can
    โฌ†๏ธ follow the official Rails Upgrading Guide here:
    ๐Ÿ’Ž Please note that Rails 6 requires Ruby 2.5.0 or newer.

    • โž• Add support for Rails 6 #3236 (aldesantis)
    • ๐Ÿ›  Fix dummy app generator to skip Bootsnap and Webpack in Rails 6 #3327 (aldesantis)
    • ๐Ÿ—„ Handle deprecation for Rails 6 in DummyApp #3352 (cedum)

    ๐Ÿ—„ Deprecated support for Rails 5.1

    ๐Ÿšš Rails 5.1 is deprecated and we'll remove support to 5.1 on the next version.
    ๐Ÿ”Š If you are still using it, a deprecation warning will be printed in your logs
    when the application boots.

    ๐Ÿ”„ Changed default images sizes

    โšก๏ธ We update the images used by Solidus demo in the sample gem. To update
    0๏ธโƒฃ those images we needed to change the default sizes of Spree::Image. They
    ๐Ÿ”„ changed from:

    mini: '48x48>', small: '100x100>', product: '240x240>', large: '600x600>'


    mini: '48x48>', small: '400x400>', product: '680x680>', large: '1200x1200>'

    If your store relies on these sizes, you should change them back following
    the guide here:

    State machines extracted into their own replaceable modules

    This allows stores to replace the state machine completely with their own
    implementation, even with different gems or using custom code without any
    state machine gem. All the customizations previously made to the state machine
    should work smoothly, but it could be a good idea to check twice. You can read
    more about the suggested way to customize the state machine here:

    • Extract the state machines into replaceable modules #3356 (cedum)

    Display error if editing non-current order

    In Solidus frontend users were able to input any order_id in the
    ๐Ÿ‘€ /orders/:order_id/edit route and they were simply seeing the cart
    (showing the current order and not the requested one) without any notice.
    ๐Ÿ–จ With this Solidus version, we print a flash message and redirect users to
    their cart.

    • Display error if editing non-current order #3391 (JDutil)

    ๐Ÿ’Ž Solidus now requires Ruby 2.4 or newer

    ๐Ÿ’Ž Ruby 2.2 and 2.3 support has ended, Rubocop support for 2.2 ended and
    they are also about to drop 2.3. Also, we already introduced code that
    is not compliant with 2.2 anymore.

    • โฌ†๏ธ Bump required ruby version to 2.4 #3337 (kennyadsl)


    • ๐Ÿ›  Fix product discard and classifications issue #3439 (softr8)
    • ๐Ÿ— Let Address#build_default accept args and block #3429 (elia)
    • ๐Ÿ”จ Several small refactors to promotions code #3416 (kennyadsl)
    • Document the real meaning of checkout#set_state_if_present #3406 (elia)
    • Pass stock location to inventory unit factory #3375 (pelargir)
    • ๐Ÿ‘ Allow to easily extend Auth#store_location behavior #3369 (spaghetticode)
    • โšก๏ธ Replace update_attributes with update #3334 (aldesantis)
    • Added location_filter_class as a writable attribute #3330 (ericsaupe)
    • ๐Ÿ‘‰ Make all belongs_to associations optional #3309 (tvdeyen)
    • ๐Ÿ‘ป Raise exception if dividing by 0 #3305 (ericsaupe)
    • โœ‚ Remove a duplicate method call #3295 (jacobherrington)
    • ๐Ÿ”„ Change nil check to use safe navigation operator #3293 (jacobherrington)
    • Ensure cartons find soft deleted shipping methods #3165 (pelargir)
    • ๐Ÿ‘ Allow orders with different shipping categories #3130 (aitbw)
    • ๐Ÿ‘ Allow configuring VAT Price Generator class #3451 (kennyadsl)
    • ๐Ÿ”จ Refactor Spree::Address value_attributes #3465 (filippoliverani)
    • โช Revert method removal and replace it with a deprecation #3477 (elia)


    • ๐Ÿ›  Fix bug for billing address state value not changing with customer #3435 (spaghetticode)
    • Set error flash when unsuccesful destroy using HTML format #3428 (mamhoff)
    • ๐Ÿ‘‰ Use proper fixture path for Backend file fixtures #3424 (JuanCrg90)
    • ๐Ÿ›  Fixing admin store credit reasons tab not expanded #3401 (softr8)
    • โž• Add permission check for admins updating user passwords #3394 (JDutil)
    • โž• Add tooltips to admin calculators #3382 (codykaup)
    • โž• Add initial value to reduce function for tab widths #3377 (fastjames)
    • Paginate master prices #3353 (mamhoff)
    • Disable submit buttons after first click #3342 (spaghetticode)
    • โž• Add information about the variable_override file #3341 (mfrecchiami)
    • ๐Ÿ‘‰ Use relative path to specify layouts path #3335 (kennyadsl)
    • 0๏ธโƒฃ Use default sass function to lighten colors #3331 (mfrecchiami)
    • ๐Ÿ’… Style collapsing sidebar #3322 (mfrecchiami)
    • ๐Ÿ›  Fix tab background color, too dark #3311 #3320 (Ajmal)
    • โž• Added empty cart button in admin cart #3316 (ericsaupe)
    • Making taxon form to render attachment definitions dynamically #3308 (softr8)
    • ๐Ÿ›  Fix hook attr name for settings tab item in admin #3301 (cedum)
    • โšก๏ธ Update usage count in Promotion eligibility check #3297 (filippoliverani)
    • โšก๏ธ Update cancel inventory tab for consistency #3289 (ericsaupe)
    • ๐Ÿ“‡ Rename _mixins.css file to .scss #3286 (mamhoff)
    • ๐Ÿ‘‰ Use pluck(:value).first to avoid loading entire row and using try! #3282 (JDutil)
    • Only display Store Credit links with permission #3276 (JDutil)
    • โšก๏ธ Update Tab colors with its own variables #3274 (mfrecchiami)
    • โœ‚ Remove "Add product" in admin order shipments page #3214 (spaghetticode)
    • โž• Add explicit closing div to admin order edit #3473 (peterberkenbosch)
    • ๐Ÿ›  Fix issue with user breadcrumbs #3152 (jtapia)


    • ๐Ÿ›  Fix Coupon Code Field's Length in Firefox #3387 (amree)


    ๐Ÿ—„ Deprecations & Removals


    ๐Ÿ“„ Docs & Guides

  • v2.10.0.beta1 Changes

    September 19, 2019

    ๐Ÿš€ This is a beta release of Solidus 2.10. There could be major changes before it becomes v2.10.0. This is the first Solidus version that supports Rails 6.

  • v2.9.6

    July 16, 2020