# Changelog

## v1.0.3

* Added extended promise and async operation support to actions via `Publisher#resolve()`, `Publisher#reject()`, `Publisher#then()`.
* Added `Publisher#listenOnce()`.

## v1.0.2

* Merged `Publisher#listenAndPromise()` with `Publisher#listen()` based on the return value of the registered callback.
* Renamed internal variables in source and tests from `Reflux` to `fluo`.
* Removed build results. Travis CI is being used from now on to automatically upload a release for every tag.

## v1.0.1

* Brought back the `sync: true` option of Actions which makes the functor call `#triggerSync()` instead of `trigger()`. The option is no longer configurable after Action instantiation.
* Merged `AsyncAction` with `Action`; there really was no advantage for having them both.

## v1.0.0

* Forked and renamed to **Fluo**.
* Core refactored to a standard prototype-based model.
  * The inheritance between fluo components is now clear.
  * It is now possible to leverage the `class` syntax provided by ES6 and CoffeeScript.
  * Actions are now `instanceof fluo.Action` while remaining callable functors.
  * The `ListenerMethods` and `PublisherMethods` objects were turned into proper prototypes (`Listener.prototype` and `Publisher.prototype` respectively).
* `Publisher#trigger()` renamed to `#triggerSync()`, `Publisher#triggerAsync()` renamed to `#trigger()`. The default functor behavior is async.
* `Publisher#eventLabel` renamed to `#eventType`; `Action#actionName` renamed to `#actionType`.
* Errors about overriding prototype methods are no longer thrown. It is discouraged though to override without sub-classing.
* Removed the possibility to simply set `#preEmit()` and any other properties on `Action` instances after creation. This is due to the action being a functor. It can sill be done via `Object.getPrototypeOf(action).preEmit = …`.
* Removed the `mixins` option of stores. If a user really wants to use this pattern, they can do it after instantiation.
* `ListenerMixin` and `PublisherMixin` were deprecated.

## Reflux

The following is the original CHANGELOG of the Reflux project.

Check for latest changes on the [milestones page](https://github.com/spoike/refluxjs/milestones).

### v0.2.5

* Added `connectFilter` [#222](https://github.com/spoike/refluxjs/pull/222)
* A lot of clarifications and typo fixes in documentation. [#147](https://github.com/spoike/refluxjs/pull/147), [#207](https://github.com/spoike/refluxjs/pull/207), [#208](https://github.com/spoike/refluxjs/pull/208), [#209](https://github.com/spoike/refluxjs/pull/209), [#211](https://github.com/spoike/refluxjs/pull/211), and [#214](https://github.com/spoike/refluxjs/pull/214)

### v0.2.4

* Promisable actions [#185](https://github.com/spoike/refluxjs/issues/185)
* Fixed IE8 bug [#202](https://github.com/spoike/refluxjs/issues/202), [#187](https://github.com/spoike/refluxjs/issues/187)
* Plus other various fixes: [#201](https://github.com/spoike/refluxjs/issues/201), [#200](https://github.com/spoike/refluxjs/issues/202), [#183](https://github.com/spoike/refluxjs/issues/183), and [#182](https://github.com/spoike/refluxjs/issues/182)

### v0.2.3

* Store mixins [#124](https://github.com/spoike/refluxjs/pull/124)

### v0.2.2

* Fixed circular dependency issue that caused browserify builds not to work as expected [#129](https://github.com/spoike/refluxjs/issues/129) [#138](https://github.com/spoike/refluxjs/issues/138)
* Bind store methods before init() method executes. [#168](https://github.com/spoike/refluxjs/issues/168)
* Clarify the meaning of "FRP". [#161](https://github.com/spoike/refluxjs/issues/161)
* Child (async) actions and promise handling [#140](https://github.com/spoike/refluxjs/issues/140)

### v0.2.1

* IE8 trailing comma bug fix [#145](https://github.com/spoike/refluxjs/pull/145)
* Multiple use of Reflux.connect bug fix [#142](https://github.com/spoike/refluxjs/issues/142), [#143](https://github.com/spoike/refluxjs/pull/143)
* Added .npmignore file, removing non-essential files from `npm install` [#125](https://github.com/spoike/refluxjs/issues/125)

### v0.2.0

* Breaking change: Set initial state before componentDidMount (in `Reflux.connect`) [#117](https://github.com/spoike/refluxjs/pull/117)
* Allow extension of actions and stores (with `Reflux.ActionMethods` and `Reflux.StoreMethods`) [#121](https://github.com/spoike/refluxjs/pull/121)
* Automatically bind store methods [#100](https://github.com/spoike/refluxjs/pull/100)
* Bugfix: Connect and listenermixin combo [#131](https://github.com/spoike/refluxjs/pull/131)

### v0.1.14, v0.1.15

* You may now stop listening to joined listenables individually [#96](https://github.com/spoike/refluxjs/pull/96).
* Reflux will now throw an error if you attempt to join less than two listenables [#97](https://github.com/spoike/refluxjs/pull/97).

### v0.1.13

* Added more join methods, i.e. `listener.joinLeading`, `listener.joinTrailing`, `listener.joinConcat` and `listener.joinStrict`
 [#92](https://github.com/spoike/refluxjs/pull/92).
* Actions can be set to sync or async trigger [#93](https://github.com/spoike/refluxjs/pull/93).
* And various bug fixes. Check the [milestone page](https://github.com/spoike/refluxjs/issues?q=milestone%3A0.1.13+is%3Aclosed).

### v0.1.12

* Bug fixes. Check the [milestone page](https://github.com/spoike/refluxjs/issues?q=milestone%3A0.1.12+is%3Aclosed).

### v0.1.9, v0.1.10, v0.1.11

* Critical bug fixes. See [#80](https://github.com/spoike/refluxjs/issues/80), [#81](https://github.com/spoike/refluxjs/issues/81), and [#82](https://github.com/spoike/refluxjs/issues/82).

### v0.1.8

* Added `Reflux.connect`, `Reflux.listenTo`, `listenToMany` conveniences. See [#63](https://github.com/spoike/refluxjs/pull/63) and [#75](https://github.com/spoike/refluxjs/pull/75)
* Stores may now use a `listenables` prop [#63](https://github.com/spoike/refluxjs/pull/63) to automatically register actions to callbacks
* `preEmit` may now map or transform the action payload by returning something. See [58](https://github.com/spoike/refluxjs/issues/58) and [#78](https://github.com/spoike/refluxjs/pull/78)
* Reflux now exposes a `keep` for easier introspection on actions and stores [#56](https://github.com/spoike/refluxjs/issues/56)
* Added mixin interfaces `ListenerMethods` and `PublisherMethods` making it possible for users to extend Reflux's actions and stores. See [#45](https://github.com/spoike/refluxjs/issues/45)

### v0.1.7

* Added support for initial data handling [#49](https://github.com/spoike/refluxjs/pull/49)
* Added CHANGELOG.md [#50](https://github.com/spoike/refluxjs/issues/50)
* Bug: Unregistered actions could not be reregistered [#47](https://github.com/spoike/refluxjs/pull/47)

### v0.1.6

* Added possibility to join actions and stores with `Reflux.all` [#27](https://github.com/spoike/refluxjs/issues/27), [#28](https://github.com/spoike/refluxjs/pull/28)
* Added circular dependency check [#26](https://github.com/spoike/refluxjs/issues/26)

### v0.1.5

* Bug fix

### v0.1.4

* Action functors are now deferred [#22](https://github.com/spoike/refluxjs/issues/22), [#23](https://github.com/spoike/refluxjs/pull/23)
* Added web tests using testling.ci [#20](https://github.com/spoike/refluxjs/pull/20)

### v0.1.3

* Added hooks `preEmit` and `shouldEmit` for actions [#16](https://github.com/spoike/refluxjs/issues/16)
* Various bug fixes and `.jshintrc` file created for grunt build

### v0.1.2

* Added `ListenerMixin` useful for React components [#7](https://github.com/spoike/refluxjs/issues/7)
* Using `eventemitter3` instead [#4](https://github.com/spoike/refluxjs/issues/4)

### v0.1.1

* Added convenience function to create multiple actions [#6](https://github.com/spoike/refluxjs/issues/6)
* Bug: createStore's unsubscribe function was broken [#5](https://github.com/spoike/refluxjs/issues/5)

### v0.1.0

* Removed lodash dependency [#1](https://github.com/spoike/refluxjs/issues/1)
