Skip to content

Commit

Permalink
Add 2.2.0 release notes
Browse files Browse the repository at this point in the history
  • Loading branch information
radar committed Jul 1, 2014
1 parent 8db549b commit 5a49201
Showing 1 changed file with 222 additions and 0 deletions.
222 changes: 222 additions & 0 deletions guides/content/release_notes/2_2_0.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,222 @@
---
title: Spree 2.2.0
section: version
---

## Major/new features

### Adjustments Refactoring

The adjustments system in Spree has undergone a large portion of work. Adjustments (typically originating from promotions and taxes) can now be applied at a line item, shipment or order level.

**This system has been designed to be backwards-compatible with older versions of Spree, so that an upgrade path is relatively easy. If you encounter any issues during an upgrade, please [file an issue](https://github.com/spree/spree/issues/new).**

Along with this, taxes are now split into two groupings: "additional" and "included". Additional taxes are those which increase the price of the item they're attached to. Included taxes are those which are already included in the cost of the item. It is still necessary to track these included taxes due to tax reporting requirements in many countries.

Shipments no longer have a linked adjustment. Instead, the shipment itself has a "cost" attribute which is used in the calculation of shipping costs for an order.

Also worth noting is that the number of callbacks triggered when any aspect of an order is updated has been greatly reduced, which should lead up to speed-ups in stores. An example of this would be in prior versions of Spree, an order would trigger an update on all its adjustments when it updated. With the new system, only line items or shipments that change will have their adjustments updated.

For more information about this, [Ryan Bigg wrote up a long explanation about it](https://ryanbigg.com/2013/09/order-adjustments/), and there is further discussion on #3567.

### Fragment caching

In certain places in the frontend, the following changes have been applied:

* Fragment caching for each product.
* Fragment caching for the lists of products in home/index and products/index.
* Fragment caching for a taxon's children.

This can lead to significant speedups in the frontend of a Spree store.

See more about this in [this comment on spree/spree#2913](https://github.com/spree/spree/issues/2913#issuecomment-34946007).


### Asset renaming

An issue was brought up in #4050 where a user showed us that a `require_tree` use inside `app/assets` would also require the Spree assets that were placed in `app/assets/store` and app/assets/admin` respectively. This would happen in areas of the application where Spree wasn't even used.

To fix this bug, we have moved the location of the assets to `vendor/assets`. Frontend's assets are now placed in `vendor/assets/spree/frontend` and Backend's are in `vendor/assets/spree/backend`.

Similar changes to this have also been made to extensions, where their assets are now placed in `app/assets/spree/[extension_name]`. Ultimately, these changes fix the bug and now we're using the same names to refer to the same components (store -> frontend, admin -> backend) on assets as we do internally to Spree.

You will need to manually rename asset requires within your application:

* `admin/spree_backend` => `spree/backend`
* `store/spree_frontend` => `spree/frontend`

### Risk analysis

The AVS and CVV response codes for payments are now checked to determine the possibility that an order is considered risky. If the order is considered risky, then it will transition to a 'considered risky' state upon finalize rather than 'complete'. The order must be approved in the admin backend in order for it to proceed to the 'complete' state.

Stores may choose to override `Order#is_risky` to implement their own risk analysis for orders.

See issues #4021 and #4298 for further information.


### Paperclip settings have been removed

The ability to configure Paperclip settings for `Spree::Image` has been removed from Spree. The alternative to this is to configure the Paperclip settings for `Spree::Image` in an initializer:


Paperclip::Attachment.default_options[:s3_protocol] = "https"
Spree::Image.attachment_definitions[:attachment][:styles] = "<styles go here>"
Spree::Image.attachment_definitions[:attachment][:path] = "<path goes here>"

These settings are for the Paperclip gem, and hence more information about them can be found in [Paperclip's documentation](https://rubydoc.info/gems/paperclip/Paperclip/ClassMethods).

You may wish to use S3, in which case you can configure it using code [like this Gist](https://gist.github.com/radar/e414c49579b393e4aafe).

## Minor changes

### Core


* Switched to using friendly_id for permalink generation. This meant that we needed to rename `Spree::Product`'s `permalink` field to `slug`.

Ryan Bigg

* Add a `name` column to spree_payments. That should hold the *Name on card*
option in payment checkout step.

Washington Luiz

* Associate line item and inventory units for better extensibility with
product assemblies. Migration was added to set line_item_id for existing
inventory units.

* A *channel* column was added to the spree_orders table. Users can set
it when importing orders from other stores. e.g. amazon

Washington Luiz

* Introduce `Core::UserAddress` module. Once included on the store user class
the user address can be rememembered on checkout

Washington Luiz

* Added tax_category to variants, to allow for different variants of a product to have different tax categories. #3946

Peter Rhoades

* Removed `Spree::Activator`. Promotions are now activated using the `Spree::PromotionHandler` classes.

Ryan Bigg

* Promotion#event_name attribute has been removed. A promotion's event now depends on the fields that are filled out during its creation.

Ryan Bigg

* Simplified OrderPopulator to take only a variant_id and a quantity, rather than a confusing hash of product/variant ids.

Ryan Bigg

* lib/ is no longer in autoload paths. You'll have to manually require what
you need in that dir. See https://github.com/spree/spree/commit/b3834a1542e350034c1e9c5a8b13c00b2415e63b

* Introduce Spree::Core::MailMethod to manage mail settings at each delivery.
This allows changes to mail settings to be applied without a server restart.
See https://github.com/spree/spree/commit/95df1aa7832912f73e34302d31b0abbbea3af709

John Hawthorn

* Create Spree::Migrations to warn about missing migrations. See #4080

Washington Luiz

* Variant#in_stock? now no longer takes a quantity. Call can_supply? instead.
see #4279

Ryan Bigg / Peter Berkenbosch

* PromotionRule#activator_id column has been renamed to promotion_id.

Ryan Bigg

### API

* Api requires authentication by default now

Peter Berkenbosch

* Improve products_controller #create and #update for better support to create
and update variants, option types and option values.
See #4172 and #4240

Bruno Buccolo / Washington Luiz / John Dyer

* ApiHelpers attributes can now be extended without overriding instance
methods. By using the same approach in PermittedAttributes. e.g.

Spree::Api::ApiHelpers.order_attributes.push :locked_at

Washington Luiz

* Admin users can set the order channel when importing orders. By sing the
channel attribute on Order model

Washington Luiz

* Cached products/show template, which can lead to drastically (65x) faster loading times on product requests. 806319709c4ce9a3d0026e00ec2d07372f51cdb8

Ryan Bigg

* The parts that make up an order's response from /api/orders/:num are cached, which can lead to a 5x improvement of speed for this API endpoint. 80ffb1e739606ac02ac86336ac13a51583bcc225

Ryan Bigg

* Cached variant objects which can lead to slightly faster loading times (4x) for each variant.

Ryan Bigg

* Added a route to allow for /api/variants/:id requests

Ryan Bigg

* Products response now contains a master variant separately from all the other variants. Previously all variants were grouped together.

Ryan Bigg

* Added API endpoint to retrieve a user's orders: /api/orders/mine. #4022

Richard Nuno

* Order token can now be passed as a header: `X-Spree-Order-Token`. #4148

Lucjan Suski

### Frontend

* Payment step displays a name input so that users can enter *Name on card*
Previously we had a first_name and last_name hidden input instead.

Washington Luiz

* Checkout now may remember user address

Washington Luiz

### Backend

* Don't serve JS to non XHR requests. Prevents sentive data leaking. Thanks to
Egor Homakov for pointing that out in Spree codebase.
See https://homakov.blogspot.com.br/2013/05/do-not-use-rjs-like-techniques.html
for details.

* 'Only show completed orders' checkbox status will now persist when paging through orders.

* darbs + Ryan Bigg

* Implemented a basic Risk Assessment feature in Spree Backend. Viewing any Order's edit page now shows the following, with a status indicator:

Payments; link_to new log feature (ie. Number of multiple failed authorization requests)
AVS response (ie. Billing address not matching credit card)
CVV response (ie. code not matching)

* Ben Radler (aka lordnibbler)

* Moved 'Taxonomies' out from under 'Configuration' menu. It now is a sub-menu item on the products.

* Ryan Bigg


0 comments on commit 5a49201

Please sign in to comment.