0.11.0 (Oct 11, 2015) * Add UndefinedTransition to mark self transition(e.i. no transition found) * Add StateDefinition for state query methods * Add #trigger and #trigger! to StateMachine to allow manual firing of events and split between dangerous and non-dangerous versions of api. * Change ThreadContext to require per thread setup * Change Transition to stop relying on global transitions * Change EventChain to manage all internal transitions * Change Subscribers to remove unnecessary parameter dependency * Change StateMachine public interface to clarify available methods * Change HookEvent to accept event name and from state * Remove Event class as duplicate of Transition * Remove unnecessary checks for StateMachine#can? * Fix bug in Transition with current transition matching * Fix bug in Observer with cancelling inside event callback 0.10.2 (July 5, 2015) * Fix to run 'on_after' callbacks even when event cancalled by @craiglittle * Fix to cancel transition when no matching choice is found by @craiglittle * Change StateParser #parse method * Change EventBuilder to EventDefinition and invert dependencies * Change Event#call to #trigger * Change Transition#call to #execute 0.10.1 (May 24, 2015) * Add ability to inherit state machine definitions * Add Env class for holiding machine envionment references * Change DSL to delegate calls to machine instance * Change ChoiceMerger to use machine directly 0.10.0 (November 16, 2014) * Add #alias_target to allow renaming of target object by @reggieb * Fix issue with async calls passing wrong arguments to conditionals * Change TransitionEvent, AsyncCall to be immutable * Add :log_transitions option for easy transition debugging * Increase test coverage to 99% 0.9.2 (September 27, 2014) * Removes use of class variable to share Sync by @reggieb * Fix observer to differentiate between any state and any event * [#23] Fix transition to correctly set :from and :to parameters for :any state * [#25] Fix passing parameters to choice events with same named events * Fix choice pseudostate to work with :any state 0.9.1 (August 10, 2014) * Add TransitionBuilder to internally build transitions from states * Fix #choice to allow for multiple from states * Add #current? to Transition to determine if matches from state * Add #select_choice_transition to EventsChain to determine matching choice transition * Fix #choice to work with same named events 0.9.0 (August 3, 2014) * Add Definition class to allow to define standalone state machine * Upgrade RSpec dependency and refactor specs * Change initial helper to simply state name with options * Change HookEvent to be immutable and extend comparison * Change Event to be immutable and extend comparison * Add #build method to HookEvent * Change finished? to terminated? and allow for multiple terminal states * Change to require explicit context to call target methods 0.8.1 (July 5, 2014) * Add EventsChain to handle internal events logic * Add EventBuilder to handle events construction 0.8.0 (June 22, 2014) * Add silent option for state machine events to allow turning on/off selectively callbacks * Ensure that can? & cannot? take into account conditionl logic applied to transitions * Add restore! method to allow to set the state directly without callbacks * Add ability to do dynamic conditional branching using the choice DSL or grouped events with different outgoing transitions [solves #13 and #6 issue] 0.7.1 (June 8, 2014) * Change to relax callback name checks to allow for duplicate state and event names * Change so that transition to initial state triggers callbacks 0.7.0 (May 26, 2014) * Change Event to EventHook for callback events * Add Event to hold the logic for event specification * Fix issue #8 to preserve conditionals between event specifications * Change to allow for self-transition - fixes issue #9 * Change to detect attempt to overwrite already defined method - fixes issue #10 * Fix #respond_to on state machine to include observer * Add string inspection to hooks * Fix observer missing methods resolution * Change to separate state and event callbacks. Introduced on_enter, on_before, once_on_enter, once_on_before new event callbacks. * Change generic callbacks to default to any state for on_enter, on_transition, on_exit and any event for on_before and on_after * Add check for callback name conflicts * Ensure proper callback lifecycle 0.6.1 (May 10, 2014) * Fix stdlib requirement 0.6.0 (May 10, 2014) * Add StateParser to allow for grouping transition under same event name * Change Transition to store a map of transition for a given event * Add abilility to correctly extract :to state for Transition instance * Fix bug #6 with incorrect TransitionEvent payload information 0.5.0 (April 28, 2014) * Change to allow for machine to be constructed as plain object * Allow for :initial, :terminal and :target to be machine parameters * Add generic Listener interface * Change EventQueue to allow for subscription * Increase test coverage to 98% * Change to allow access to target inside machine dsl * Add ability to fire callbacks asynchronously * Add initial state storage 0.4.0 (April 13, 2014) * Change initial state to stop firing event notification * Fix initial to accept any state object * Add logger * Add ability to cancel transitions inside callbacks * Fix proc conditions to accept aditional arguments * Increase test coverage to 97% * Add ability to force transitions 0.3.0 (March 30, 2014) * Move development dependencies to Gemfile * Increase test coverage to 95% * Fix bug with event methods dynamic redefinition * Change attr_threadsafe to accept default values * Fix observer respond_to * Add ability to specify callbacks on machine instance * Add once_on type of callback * Add off method for removing callbacks * Add async method to state_machine for asynchronous events firing * Fix Callable to correctly forward arguments * Add state helpers fsm.green? to allow easily check current state 0.2.0 (March 01, 2014) * Ensure correct transition object state * Add methods synchronization for thread safety * Fix bug - callback event object returns correct from state * Add ability to define custom initial event * Add hooks class for callbacks registration * Extend threadable accessors * Add generic state and event listeners * Add target to allow integration with external objects, and allow easy method lookup through callback context * Add ability to specify custom handlers for error conditions