I think it is too. Its simplicity is what allowed me to create `redux-undo` as it is - it's basically a function that returns a new reducer function which is enhanced with undo-functionality.
So much more can be done with this concept - and it's nothing special - sometimes making things simpler is the best way to solve a problem. Redux is a great example for that.
I've configured it so that it uses hot reloading (only refresh the parts of the web app that changed) plugins that also show the error in the browser while you're developing.
Electron really should be treated like `node` and be a dependency. Of course you could still package your apps with Electron, and you can do that with node too (if you wanted to), still nobody distributes node applications like that.
Very nice. How well does this work with the `fish` shell? Also, have you thought about setting an envvar that stores the current project name so you can do things like display it in your shell prompt?
Is there a utility that automatically creates the test files in a specific directory? Would be nice to add speckjs to `package.json` so it builds and runs the tests before, for example, publishing. Is something like this possible? Or what would be the best way to automate the generation - is this even what you intended?
EDIT: I just tried it out and it doesn't seem to work for me (I'm probably doing something wrong :D) - would be great if you could help me out: https://github.com/speckjs/speckjs/issues/150
> The GitHub API is rate-limited, and this makes a lot of API calls. Don't be surprised if things start to fall apart under load.
Under normal usage (read: not running scripts on GHFS, etc), does GHFS get to the GitHub API limits? Do you use caching? Do you regularly use it to check out projects on GitHub instead of cloning them manually? Did you ever get blocked by the API?
I haven't tested it yet, but it should. The magic behind redux-undo is a reducer enhancer (higher order reducer) - it returns a function that processes undo/redo and then (if appropriate) calls your reducer. If your reducer uses immutable data-structures, redux-undo will simply store your data (immutable or not) in the history.
redux-undo itself doesn't use immutable data structures, though (for dependency reasons). However, I do make sure not to change any data directly. (you know, the usual redux reducer guidelines)
That's an interesting question. The simplest way would be listening to state changes in the store and then syncing the state with the server. Since undos/redos are normal redux actions, you can just handle them like any other action in redux.
For example, in an application I wrote, I do `store.subscribe(autoSaveFunction)` which will automatically save all changes to the state. Of course, you can also only store parts of the state, etc, but this is more redux related than redux-undo related.