Solidus 2.8.0
Solidus Core Team
3 Feb 2019 - 11 mins read
2.8.0 on github 2.8.0 on rubygems
Announcing Solidus 2.8.0
Thanks to all contributors, testers, and users who made this release possible.
Major Changes
Added Api::CouponCodesController#destroy endpoint
A new endpoint has been added to Solidus API. It allows to remove a coupon code from an order. It has currently no backend or frontend implementation but it's common for custom stores to require it.
Moved Reports into an extension
We removed the reports section from admin to an extension. If you use it you have to add it back manually by adding
gem 'solidus_reports', github: "solidusio-contrib/solidus_reports"
Add a store credit reasons UI in Admin
The only way to manage store credit reasons was via console or using a data migration.
Skip forgery protection in api controllers
Rails is now enabling forgery protection by default so we need to explicitly disable it for api requests, as described here:
http://api.rubyonrails.org/classes/ActionController/RequestForgeryProtection.html
This PR also enables forgery protection by default in the specs dummy app so that we can really test that the api code is working in a real Rails 5.2+ environment.
Add a Gallery to handle variants and products images
All images that we send to the view layer is now using these classes that contain the logic to retrieve images and are easier to extend. If you have a lot of customization on how you display images you probably need to take a look at how this has been implemented.
Replace jquery_ujs with rails-ujs
This is the Rails standard now. There could be some action required, depending on if the manifest provided by solidus has been changed. Please read the PR description for more info.
Removed code from Spree::Promotion
Previously Solidus used code
column on spree_promotions
to add a code
to promotions that could be used as coupon code by users. This is no more a
thing since we support multiple coupon codes associated to a single promotion.
This change is important because it's quite common for old stores to have some
promotion with code
field still present in the database, even if it's not used.
When performing the migration present in this PR it will raise an exception if
there are records in the spree_promotions
table with that field present.
It's up to each store to understand how to handle this scenario before running
this migration. We also provide other two ways to handle this, and users can
just change the migration after it has been copied into their store.
It's just matter of changing the content of the
RemoveCodeFromSpreePromotions.promotions_with_code_handler
method and make it
return one of the following:
Solidus::Migrations::PromotionWithCodeHandlers::MoveToSpreePromotionCode
: it will convert Spree::Promotion#code to aSpree::PromotionCode
before removing thecode
column.Solidus::Migrations::PromotionWithCodeHandlers::DoNothing
: it will print a message to track what we are deleting.
Alternatively users can create their own class to handle data and return that
class. The new class could inherit from PromotionsWithCodeHandler
and
should respond to call
.
Core
- Fix Spree::Variant inconsistency due to lack of product association #3043 (rubenochiavone)
- Make seed file fully idempotent #3033 (jontarg)
- Implement stock location sorters #2783 (aldesantis)
- Fix multiple Money deprecation warnings. Now using html_wrap option which causes each piece of the price to be wrapped in span tags with specific classes for easier styling, but this may break existing stores' custom styles. #2912 (JDutil)
- Remove update_totals/persist_totals delegation #3012 (jarednorman)
- Fix autoload issue. Replace require/load with require_dependency. #3008 (bitberryru)
- Enable partial doubles verification for RSpec #3005 (cedum)
- [v2.7] Fix deprecations to make Solidus work with Rails 5.2.2 #2992 (kennyadsl)
- Add acts_as_list to Spree::StockLocation #2953 (rymai)
- Add missing i18n English values #2942 (jacobherrington)
- Allow to bypass SKU validation #2937 (fastjames)
- Add translation for details attribute of LogEntry model #2925 (bitberryru)
- Spree::FulfilmentChanger stock allocation fix #2908 (spaghetticode)
- DRY Spree::OrderContents #2907 (spaghetticode)
- Improve trustworthiness of a content items price. #2897 (jacquesporveau)
- Use ActiveRecord relation for Spree::Shipment#line_items #2886 (spaghetticode)
- Round calculator values based on order currency #2877 (ericsaupe)
- Add an allocator class to extend the Solidus initial allocation logic #2810 (vassalloandrea)
- Remove default address dependency part 2 #2802 (kennyadsl)
- Stock location sorters #2783 (aldesantis)
- Recalculate order after reimbursement creation #2711 (DanielePalombo)
- Finalize shipment after inventory units are added to completed order #2331 (DanielePalombo)
Backend
- Use right language_locale_key #3044 (DanielePalombo)
- Fix missing image in autocomplete variant #3032 (rubenochiavone)
- Skip populating states select on default country not included in available countries #3030 (mdesantis)
- Add favicon to the admin layout #3025 (mdesantis)
- Standardize shared resource links #2997 (brchristian)
- Use Spree::Variant#should_track_inventory? to disable 'Count on hand' input #2977 (aitbw)
- Disable 'count on hand' input when 'track inventory' option is set to false #2960 (aitbw)
- Bug/remove mini image from admin view #2976 (nvh0412)
- Prevent multiple refund creations with accidental double clicks #2970 (spaghetticode)
- Fix "Stock" admin nav double highlight #2969 (tvdeyen)
- Added a link to the frontend product from the backend product edit page #2956 (seand7565)
- Use filter over search for filter options #2940 (jacobherrington)
- Add ordering to menu items #2939 (jacobherrington)
- Change new order creation link #2936 (jacobherrington)
- remove unused routes and actions from return authorizations #2929 (ccarruitero)
- Add response with error message on failure destroy action #2920 (bitberryru)
- Fix tab selection in sidebar navigation #2918 (bitberryru)
- Improve text in "new promotions" form for better usability #2917 (michaelmichael)
- fix closing tag mismatch #2901 (bitberryru)
- Fix a N+1 query problem in the orders controller #2894 (rymai)
- Show errors on admin shipment line item destroy failure #2892 (spaghetticode)
- Revert tooltip observer change as it does not work properly. #2890 (JDutil)
- Add a Master SKU field to the products form #2875 (jacobherrington)
- Create a new promotion code inside an existing promotion #2872 (stem)
- New stock management #2862 (tvdeyen)
- Fix highlighting on tax sub menu #2854 (jacobherrington)
- Fix a bug with the settings subnav #2853 (jacobherrington)
- allow multiple taxons on product creation #2840 (jacobherrington)
- add en-US locale to select2 #2805 (afdev82)
- Use two column layout for stock location form #2727 (tvdeyen)
API
- Fix N+1 problem on Api::TaxonsController#index #3011 (stem)
- Include records on API Order / Product queries #3002 (fastjames)
Frontend
- Rescue from
Spree::Order::InsufficientStock
onfrontend
checkout flow #3023 (spaghetticode) - Fix coupon code placeholder value. #3009 (bitberryru)
- Fix closing td #2999 (lukasbischof)
- Add padding to the order summary #2903 (jacobherrington)
Deprecations
- Deprecate 'X-SPREE-TOKEN' header 2 #3029 (twist900)
- Update Jbuilder to v2.8 to fix deprecation warnings #2962 (aitbw)
- Deprecate existing coupon codes methods #2958 (aitbw)
- Fix deprecation warning for Spree::Shipment#reverse_chronological scope #2921 (aitbw)
- Add deprecation warning for Spree.t #2915 (JDutil)
- Fix money deprecation warning. #2912 (JDutil)
Misc
- Update issues/PRs templates #3026 (kennyadsl)
- Explicitly require Bundler within Rakefile #3022 (mdesantis)
- Enable partial doubles verification for RSpec (part 2) #3015 (cedum)
- SVG images #2995 (elia)
- Add margin to billing fields #2985 (jacobherrington)
- Add criteria for merging a PR #2983 (jacobherrington)
- Lint ERB files via HoundCI #2982 (kennyadsl)
- Move script files to bin + documentation #2971 (elia)
- Upgrade rack to 2.0.6 for security reasons #2964 (tvdeyen)
- Add i18n-tasks and normalize translations #2963 (afdev82)
- Add script to skip CircleCI on guides #2955 (jacobherrington)
- Dont need to lockdown autoprefixer-rails. #2916 (JDutil)
- fix translations keys #2902 (bitberryru)
- symbol can't be argument for :count in east slavic locales #2900 (bitberryru)
- Fix reference to logo on heroku template #2896 (chukitow)
- Move to sassc-rails #2883 (jacobherrington)
- Update .travis.yml example to non EOL versions #2867 (jacobherrington)
Docs & Guides
- Setup Netlify site for yard docs #3019 (tvdeyen)
- Update
add-configuration
guide page #3001 (spaghetticode) - Expand the promotion rules implementation example #2954 (jacobherrington)
- Add missing doc links #2948 (jacobherrington)
- Add a table of contents to the readme #2945 (jacobherrington)
- Standardize capitalization #2943 (jacobherrington)
- improve decorators / contributing docs #2933 (elia)
- Guides improvements #2923 (kennyadsl)
- Add API section to developer guide table of contents #2909 (benjaminwil)
- Add a Netlify configuration for deploying guides site #2893 (tvdeyen)
- Use logo.svg in the README #2887 (jacobherrington)
- Fix a security vulnerability in guides #2885 (kennyadsl)
- Add comments to the issue template #2884 (jacobherrington)
- Update promotion actions documentation #2871 (jacobherrington)
- Add a reference to the Writing Extensions doc #2851 (jacobherrington)
- Add article that documents a Spree::Order journey #2803 (benjaminwil)