Version 1.1.0
John Hawthorn
25 Nov 2015 - 4 mins read

Just before Black Friday, a new minor release of Solidus. As this is a minor release, we've done our best to keep compatibility and have added deprecation notices wherever possible.
With this version we've pulled in a few migrations and schema changes from spree 3.0, which should make it possible to migrate a spree 3.0 store directly to solidus.
There have been schema changes as well as some changes to indexes and foreign keys. You may want to perform a PostgreSQL vacuumdb --analyze or a MySQL ANALYZE after migrations for best performance.
User Address Books
- 
Address is now immutable (
Address#readonly?is always true). This allows us to minimize cloning addresses, while still ensuring historical data is preserved. - 
UserAddressBook module added to manage a user's multiple addresses
 - 
GET /admin/search/users searches all of a user's addresses, not just current bill and ship addresss
 
Schema changes
- 
Adjustment state column has been replaced with a
finalizedboolean column. This includes a migration replacing the column, which may cause some downtime for large stores. - 
Some HABTM associations have been converted to HMT associations. Referential integrity has also been added as well. Specifically:
- Prototype <=> Taxon
 - ShippingMethod <=> Zone
 - Product <=> PromotionRule
 
 - 
An
apply_automaticallyfield was added to promotions to distinguish coupons needing a code or path to be applied from those which were applied automatically to any cart matching the ruleset. This significantly improves performance on stores with a large number of promotions. - 
The schema and migrations have been updated to allow a clean data migration from spree 3.0
 
Permissions
- 
Support read-only access to promotions
 - 
Hide api keys from non-superuser admins
 - 
Disable modification of roles from non-superuser admins
 
Misc
- 
Handlebars templates in the admin are now stored in assets and precompiled with the rest of the admin js.
 - 
Change all mails deliveries to
#deliver_later. Emails will now be sent in the background if you configure active_job to do so. See the rails guides for more information. - 
Cartons deliveries now send one email per-order, instead of one per-carton. This allows setting
@orderand@storecorrectly for the template. For most stores, which don't combine multiple orders into a carton, this will behave the same. - 
Improvements and fixes to the granular permission system introduced in solidus 1.0
 - 
Added
inventory_cache_thresholdconfiguration option, which causes cache to be invalidated when stock levels rise or fall below a specified level. - 
Added
OrderUpdateAttributesclass to replace theSpree::Order#update_from_paramsmethod - 
Added
PaymentCreateclass for creating payments. This allowed removingafter_initializefilters previously responsible for creating or associating a payment source. - 
Fixed :image factory
 - 
Order#outstanding_balancenow considers refunds in its calculation. - 
Fix select2 product selector ajax pagination in admin.
 
Removals
- 
Removed
map_nested_attributes_keysfrom the Api::BaseController. This method was only used in one place and was oblivious of strong_params. - 
Deprecate
delegate_belongs_toin favour of rails' standardbelongs_to