Version 3.0.1 (June 10th 2017)
------------------------------
* First 3.x release - see 3.0.0-rc.1 release notes below
* fix issue #109 - rejection from async lifecycle method does not reject transitions promise
* fix issue #106 - async transition: forward resolved value
* fix issue #107 - lifecycle event name breaks for all uppercase
Version 3.0.0-rc.1 (January 10 2017)
------------------------------------
**IMPORTANT NOTE**: this version includes **breaking changes** that will require code updates.
Please read [UPGRADING FROM 2.x](docs/upgrading-from-v2.md) for details. Highlights include:
* Improved Construction.
* Arbitrary Data and Methods.
* Observable Transitions
* Conditional Transitions
* Promise-based Asynchronous Transitions
* Improved Transition Lifecycle Events
* State History
* Visualization
* Webpack build system
* ...
Version 2.4.0 (November 20 2016)
--------------------------------
* added npm install instructions to readme
* fix for javascript error when running in jasmine/node (issue #88)
* exclude build files from bower install (pull request #75)
* ensure WILDCARD events are included in list of available transitions() (issue #93)
* fix FSM getting stuck into "*" state when using double wildcard (issue #64)
* function (fsm.states) returning list of all available states in the machine would help automated testing (issue #54)
* state machine hides callback exceptions (issue #62)
* replaced (dev dependency) YUI compressor with uglify-js for building minified version
Version 2.3.5 (January 20 2014)
-------------------------------
* fix for broken transitions() method (issue #74)
Version 2.3.4 (January 17 2014)
-------------------------------
* helper method to list which events are allowed from the current state (issue #71 - thanks to @mgoldsborough and @chopj)
Version 2.3.3 (October 17 2014)
-------------------------------
* added web worker compatability (issue #65 - thanks to @offirmo)
Version 2.3.2 (March 16 2014)
-----------------------------
* had to bump the version number after messing up npmjs.org package registration
Version 2.3.0 (March 15 2014)
-----------------------------
* Added support for bower
* Added support for nodejs (finally)
* Added ability to run tests in console via nodejs ("npm install" to get node-qunit, then "node test/runner.js")
Version 2.2.0 (January 26th 2013)
---------------------------------
* Added optional `final` state(s) and `isFinished()` helper method (issue #23)
* extended `fsm.is()` to accept an array of states (in addition to a single state)
* Added generic event callbacks 'onbeforeevent' and 'onafterevent' (issue #28)
* Added generic state callbacks 'onleavestate' and 'onenterstate' (issue #28)
* Fixed 'undefined' event return codes (issue #34) - pull from gentooboontoo (thanks!)
* Allow async event transition to be cancelled (issue #22)
* [read more...](http://codeincomplete.com/posts/2013/1/26/javascript_state_machine_v2_2_0/)
Version 2.1.0 (January 7th 2012)
--------------------------------
* Wrapped in self executing function to be more easily used with loaders like `require.js` or `curl.js` (issue #15)
* Allow event to be cancelled by returning `false` from `onleavestate` handler (issue #13) - WARNING: this breaks backward compatibility for async transitions (you now need to return `StateMachine.ASYNC` instead of `false`)
* Added explicit return values for event methods (issue #12)
* Added support for wildcard events that can be fired 'from' any state (issue #11)
* Added support for no-op events that transition 'to' the same state (issue #5)
* extended custom error callback to handle any exceptions caused by caller provided callbacks
* added custom error callback to override exception when an illegal state transition is attempted (thanks to cboone)
* fixed typos (thanks to cboone)
* fixed issue #4 - ensure before/after event hooks are called even if the event doesn't result in a state change
Version 2.0.0 (August 19th 2011)
--------------------------------
* adding support for asynchronous state transitions (see README) - with lots of qunit tests (see test/async.js).
* consistent arguments for ALL callbacks, first 3 args are ALWAYS event name, from state and to state, followed by whatever arguments the user passed to the original event method.
* added a generic `onchangestate(event,from,to)` callback to detect all state changes with a single function.
* allow callbacks to be declared at creation time (instead of having to attach them afterwards)
* renamed 'hooks' => 'callbacks'
* [read more...](http://codeincomplete.com/posts/2011/8/19/javascript_state_machine_v2/)
Version 1.2.0 (June 21st 2011)
------------------------------
* allows the same event to transition to different states, depending on the current state (see 'Multiple...' section in README.md)
* [read more...](http://codeincomplete.com/posts/2011/6/21/javascript_state_machine_v1_2_0/)
Version 1.0.0 (June 1st 2011)
-----------------------------
* initial version
* [read more...](http://codeincomplete.com/posts/2011/6/1/javascript_state_machine/)