Changelog
Check out the latest releases from the WooCommerce project.
Subscribe to all release posts via our RSS feed.
-
This was quite the week. A few days ago we announced the decision to reversion and release
2.7
as3.0.0
. This was due to finding a critical bug in the way the system handles timestamps, which wasn’t caught sooner, and requests from third-party extension developers for more testing time. At the same time we chose to adopt semantic versioning going forward to make releases clearer.Today, the release candidate for WooCommerce 3.0.0 “Bionic Butterfly” is available!
(more…)
-
tl;dr: We’re re-versioning WooCommerce 2.7 as WooCommerce 3.0.0, and releasing this on 4th April 2017. We found a critical bug in the way the system handles timestamps, which wasn’t caught sooner, and have had numerous requests from third-party extension developers for more testing time, due to the scale of changes in this release.
This past week we’ve been having several conversions about 2.7 both internally and with some 3rd party developers to get feedback about the new release, and to discuss the new CRUD system.
From those discussions and from feedback in our RC/beta posts it was clear developers would like a little more time to test and would appreciate longer RC periods in the future. It was also requested that versions were more descriptive of what was actually inside the release.
We also found a few issues specific to timezone handling and timestamps, which we felt would be better handled before release, simply because if we don’t do it now this could cause issues with method naming in future releases. Essentially, some developers need a way to reliable get UTC timestamps as well as dates according to the site’s timezone.
To resolve this we’re working on a solution which accepts either a UTC timestamp, or an ISO8601 datetime string, and returns a DateTime object so timezone information can be retrieved if needed. This approach is not compatible with the
get_date_x
getters found in 2.7 beta.Given that the timestamp changes would prolong the release candidate anyway, we decided it was not too late to consider semantic version numbers. With that, the idea of 3.0.0 was born.
Semantic Versioning (SemVer) going forward
WooCommerce has, up to now, numbered it’s versions incrementally (2.0, 2.1, 2.2, 2.3 and so on) with those increments containing a mix of fixes, refactors, new features, and “breaking” changes. The actual numbering has no indication to what is actually going into a release, and like WordPress, those increments are treated equally.
For example, the update from WordPress 3.9 to 4.0 was no more significant that the upgrade between 4.1 to 4.2. It’s just a number.
We’ve had concerns from some developers that our versioning could be misinterpreted and, like WordPress, lacked real meaning.
It’s a major release hiding under an inappropriate version number.
This lead to an internal discussion about why we version how we do now (just to mimic WP), and what we could do instead. We decided to adopt SemVer.
SemVer dictates that:
Given a version number MAJOR.MINOR.PATCH, increment the:
- MAJOR version when you make incompatible API changes,
- MINOR version when you add functionality in a backwards-compatible manner, and
- PATCH version when you make backwards-compatible bug fixes.
Using this we hope that are version numbers better reflect the types of changes we’re making, and that there is increased confidence over patch and minor releases where we’re introducing changes but not affecting extensions in a negative way.
3.0.0 will be a major update. Whilst we’ve taken every opportunity to make things backwards compatible (with deprecation notices), there are some known documented gotchas, and we have changed the fundamental way in which WooCommerce data should be accessed.
3.1.0 will be a minor update in which one of the things we want to introduce is a new product importer. This is roadmapped on Github if you’d like to learn more.
With Semver, if we did need to make a major change after 3.0.0, we’d put that change on hold until the next major (4.0.0) update.
What will the 3.0.0 RC1 look like?
3.0.0 RC, which should be tagged later in the week, will be very similar to 2.7 RC 1 with the addition of several fixes and these important changes;
- The versioning and
@since
properties will be relabeled to3.0.0
. If you have usedversion_compare
statements in your code, they will still work since3.0.0
is greater than2.7.0
🙂 You can change these for clarity however. - There will be a resolution to this critical timezone/timestamp issue which we want to resolve before release. This changes the return type of
get_date_x
type methods from integer to DateTime and so will need to be handled in extensions if those getters have been implemented already from the 2.7 RC. - Themes with 2.7.0 versioned template files may need to update those to 3.0.0 versions to prevent reports of outdated template files.
When will 3.0.0 launch?
We’re aiming to have the RC tagged in a few days allowing for ~3 weeks testing prior to final launch.
The final launch date, if things go as planned, will be April 4th 2017.
This should be enough notice to do a final round of testing and to account for the changes highlighted further up in this post.
-
The release candidate for WooCommerce 2.7 “Bionic Butterfly” is now available!
Shipping a release candidate (RC) means we think we’re done, but with hundreds of thousands of stores and so many plugins and themes which declare WooCommerce support, it’s possible we’ve missed something. We hope to ship WooCommerce 2.7.0 on Tuesday, March 14th but we need your help to get there!
To test WooCommerce 2.7 RC1, you can use our WooCommerce Beta Tester plugin or you can download the release candidate here (zip).
Since 2.7 is now in release candidate stage, only bug fixes will be made. No other changes should take place.
Think you’ve found a bug? Please post in detail to Github.
For more information about what’s new in 2.7, check out the Beta 1, beta 2, beta 3 blog posts. We also have some compatibility example posts and posts about our new features:
- Bookings extension compatibility example
- Deposits extension compatibility example
- More extension compatibility examples
- Improved logging system
- The new CLI
- The new gallery
- The new CRUD classes
- Adding support for WooCommerce 2.7’s new gallery feature to your theme
If you haven’t tested WooCommerce 2.7 yet, now is the time!
Developers, please test your plugins and themes against WooCommerce 2.7 as soon as possible. If you find compatibility problems, we never want to break things, so please be sure to post to Github so we can figure those out before the final release. You may also be interested in our known-issues wiki article here.
You’ll also find some new docs on things such as the CRUD in the WIKI here.
And if you’re a theme developer and want to enable the new gallery, see here.
Translators, it is important than we translate 100% of the WooCommerce 2.7 strings so translations are downloaded automatically on update. Your help is most welcome!
Store owners, read this helpful guide on preparing for the update and if you see any deprecation notices after updating don’t be alarmed; read here.
-
Today we tagged WooCommerce 2.7 “Bionic Butterfly” beta 3. If you’d like to find out whats new in 2.7, you can read more about 2.7 in our first beta post here and our second beta post here.
-
Today we tagged WooCommerce 2.7 “Bionic Butterfly” beta 2. It contains a whole host of bug fixes and is ready for testing! if you’d like to find out whats new in 2.7, you can read more about 2.7 in our first beta post here.
-
The WooCommerce 2.6.14 fix release is now available. You can download it from WordPress.org or as an automatic update in your administration panel.
~23 commits made it into this release fixing several issues and hardening the code in the API. The full changelog for 2.6.14 is below.
* Fix - Ensure product exists in wc_update_product_stock.
* Fix - Send emails using the site language.
* Fix - Remove tilde typo.
* Fix - Fixed notice in get_rating_count.
* Tweak - Define arg and return data types, added extra descriptions, and correctly cast IDs in the Rest API.
* Tweak - Handle custom error data in WC_REST_Exception.
* Tweak - Display conflicted product ID when using a duplicate SKU via the API.
* Localisation - Add Finnish defaults to the installer.If you spot any further issues, please report them to us in detail on GitHub so the development team can review – comments on this post are closed.
-
The WooCommerce 2.6.13 fix release is now available. You can download it from WordPress.org or as an automatic update in your administration panel.
~8 commits made it into this release fixing a few issues.
The full changelog for 2.6.13 is below.
* Fix - Demo store banner styling in 2017.
* Fix - Removed default instructions from COD, BACS and Cheque gateways so displayed messages can be unset.
* Fix - Made variation options update on first load.
* Localisation - Added Romanian locale to the installer.If you spot any further issues, please report them to us in detail on GitHub so the development team can review – comments on this post are closed.
-
The WooCommerce 2.6.12 fix release is now available. You can download it from WordPress.org or as an automatic update in your administration panel.
~12 commits made it into this release fixing a few issues.
The full changelog for 2.6.12 is below.
* Fix - Make images shown up on pageload when using ajax variations.
* Fix - Allow variations options to be deselected in IE11.
* Fix - Disabled-button and pagination styling in 2017.
* Fix - PHP 7.1 compatibility issues with non-numeric math operations.
* Fix - Fix notices in abstract class when price is empty.If you spot any further issues, please report them to us in detail on GitHub so the development team can review – comments on this post are closed.
-
The WooCommerce 2.6.10 fix release is now available. You can download it from WordPress.org or as an automatic update in your administration panel.
~30 commits made it into this release fixing several issues.
The main change to be aware of surrounds the variation add to cart form script. A few versions back we spotted an incompatibility with the latest version of Firefox which would deselect an attribute on click. This was “fixed” in 2.6.9, however this inadvertently prevented the ‘default selected’ attributes from working correctly in other browsers.
We narrowed this down to the way WooCommerce would filter out non-relevent attributes on select box focus. Some browsers did not like the DOM being changed during the focus event. To resolve this, the DOM needed to be kept up to date and left alone during focus.
The PR which fixed this can be found here. You’ll notice it’s a fairly substantial refactor, and one we wouldn’t usually feel comfortable including in a fix release, but it was necessary to resolve the browser compatibility issues and makes the script more easily understandable. We’ve been testing this internally since merging.
The full changelog for 2.6.10 is below.
* Fix flat rate no class costs when no shipping classes exist.
* Fix returned REST API coupon expiry date.
* Fix reviews_allowed being set to false in Rest API.
* Fix sales date series for some custom ranges.
* Fix missing attributes when an option is chosen by default on variations. This was the result of a Firefox 50 compatibility fix. In order to support both Firefox, Chrome, IE, and Edge we've done some refactoring of the variation add to cart scripts.
* Updated Geo IP API services.
* Added support for WP VIP/VIP GO GEO IP headers.
* Dev - API - Throw error messages when product image ID is not a valid WordPress attachment ID.If you spot any further issues, please report them to us in detail on GitHub so the development team can review – comments on this post are closed.
Happy holidays from the team 🙂
-
WooCommerce 2.7 codename “Bionic Butterfly” has been tagged in GitHub and is ready for testing!
This is a major release with large structural changes to help us work towards a more performant platform. There have been over 1900 commits from 16 contributors since July!
You can download WC 2.7 Beta 1 here.
( @ \v/ m ) \__+|+__/ {_/ \_}