Big Things
~~~~~~~~~~~~~~~~~~~~~~~~~
[ ] compare settings for a level!!! integrated into builder...
[ ] casperjs for visuals regression testing? it works with canvas so
    it could be a nice way to move super fast with visuals refactoring

Medium things:
~~~~~~~~~~~~~~~~~~~~~~~~~~~
[ ] figure out what to do with instant commands (and parse waterfall and the like)
[ ] disable git commands on hg levels (and vice versa)
[ ] capture unexpected exceptions and print

Small things to implement:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Minor Bugs to fix:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Big Bugs to fix:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Ideas for cleaning
~~~~~~~~~~~~~

Done things:
(I only started this on Dec 17th 2012 to get a better sense of what was done)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[x] flip trees upside down from command (look at refresh tree as a way to do this)
[x] make show solution easier
[x] make helper bar clickable with goal vis floating
[x] huge update to level you wrote. that you said is true for
    git fetch and git push (basically) but pull is not the same. basically
    its going to ignore where you are during the fetch
[x] IDEA!!! just talk about arguments for each command one at a time. build
    concept of place first and then expand on it!
[x] FIX the level you came up with
[x] aka fetch + merge,
    just like expected. ill probably still update o/master just for sanity
    master is the source on the remote and HEAD is the source on local
    (place to merge). o/master gets updated regardless
[x] ok say I have branch banana and its one commit ahead of master. if I git
    pull origin master while checked out on banana, it fetches those commits
    (doesnt update origin/master) and then merges them into banana.
[x] and then "git pull origin banana:origin/banana"  works because it goes into
    the remote branch and then merges the fetch HEAD with current location
[x] oh boy heres anothere data point. git fetch banana:banana will actually
    fast-forward banana to what remote has, but not update o/banana. weirdly it
    doesnt let you do this if you are checked out on banana
[x] furthermore, if banana has commits and its not a FF, it will reject the command. wth??
[x] test is failing because we create banana when we should only really be creating o/banana
[x] work on TABBED levels layout
[x] EASY -- make colors the same between remote branches and their remote counterparts
[x] fix undo not syncing the remote tracking
[x] get clone as a before command working in demonstration views (related to test infra as well)
[x] importTreeNow fails if origin isnt updated
[x] set checkout -b branch __remoteBranch to track the remote branch
[x] test coverage for hg!!! (in progress)
[x] tree pruning
[x] TONS of hg stuff
[x] finally work on an upload / download animation
[x] factor out golf thing too
[x] factor regexes and instant commands into one module
[x] big command refactor to get everything in one place
[x] get demonstration view to show origin / remote -- z index ugliness
[x] get goal visualization to show origin / remote.... hrm :O
[x] MASSIVE EFFIN REFACTOR of all command options outside of git engine and into separate module
[x] facebook page link :D
[x] tree comparison with origin.... done! not too bad
[x] green refactor tree compare to have map
[x] increase test coverage over everything
    - unit and integration, but mostly for git operations
[x] figure out gh-pages force
[x] add visuals and text to show compare method
[x] green refactor tree compare to have map
[x] fix tests by stubbing out animation factory to resolve promises
[x] better git clone and fake teamwork anywhere
[x] git pull animation
[x] use the graph difference algorithm to then implement git push
[x] work on git pull --rebase animation, send down the deferred and it should work?
[x] why is rebase -i broken? dont emulate touch events
[x] tree compare test coverage
[x] remote branch it is tracking (points to a remote branch model)
[x] fix branch -a and branch -r to: show remote branches or all branches
[x] fix branch -f to not allow moving remote branches?
[x] fix checkout to: if you go to __remoteBranch, it just goes to the commit since its read-only.
[x] is remote (custom getter)
[x] hash agnotisc comparison with asserts for amends
[x] level builder intl aware
[x] rest of views/index translation
[x] git/index.js translation -- rest of the strings
[x] next level confirm translation
[x] fix clickthrough when goal is shown
[x] hash agnostic comparison
[x] get automated SHA hash appending in the html source :OOOOO... template? or what?t
[x] import random level JSON
[x] export / import tree from JSON
[x] rebase bug... ugh
[x] bug with weird tree string:
[x] optimistic parsing of level and level builder commands, man that was toughwith circular imports
[x] edit dialog
[x] level builder dialog builder
[x] level builder dialog tester
[x] turn off button clicking for demonstration view :O
[x] text grabber for commands
[x] way to close testing view
[x] allow demonstration view to have git commands beforehand
[x] demonstration builder progress
[x] markdowngrabber
[x] sandbox and level command refresh
[x] level builder finish
[x] level builder? :OOO
    * basically just an extension of level (or sandbox), that has commands like
      ```save tree beginning``` or ```save tree goal``` and then a final
      dialog typing area thingy
[x] vis branch z index reflow bug
[x] fix terminal input field in general
[x] warning for window size
[x] esc on multiview quits absolutely
[x] cross browser support... firefox only LULZ. should be just css right? WRONG
[x] keyboard navigation for level selector
[x] optional multiview on start
[x] local storage for solved map
[x] what if they just type "levels" ?
[x] hookup for when solving happens
[x] levels dropdown selection?
[x] git demonstration view -- shouldnt be too bad. LOL WHAT A FUCKING JOKE like 4 hours
[x] gotoSandbox command
[x] "next level?" dialog after beating level
[x] keyboard input for confirm / cancel
[x] level arbiter (has everything by ID)
[x] flip branches on the sides!! i wonder how to determine...
[x] click handlers on goal visualization for the actual canvas elements
[x] sandbox can launch and takedown levels
[x] TWO epic bugs squashed:
    * Raphael process.nextTick needed
    * _.debounce on prototype
[x] window zoom alert thing -- this just needs to be timeouted one more time
[x] level teardown
[x] great die for levels
[x] show which level you are in! with a little thing on the top
[x] allow command history to clear finished ones
[x] put in some > into the rules for CSS
[x] fix bug for multiview, i think its from the die() on everyone
[x] fixed bug in command queue
[x] better compare in levels
[x] show solution
[x] show goal
[x] reset for sandbox command
[x] do an after-paper-initialize type thing so we can insert git shim once
    git engine is done.
[x] promise-based levels
[x] fixed that to-do entry with the toggle Z thing. now its much more consistent
[x] sandbox a real view now
[x] awesome before and after shims with event baton stealing and passing back
[x] sip from buffer with post-command hooks. ideally the git engine
    knows nothing about the level being played
[x] fix tests
[x] transition to deferreds / promises for command callbacks
[x] awesome ability to have dialogs and such handle command processing and block
[x] figure out why multiview baton passing doesn't work...
[x] multiple things can process!!!
[x] move command creation outside of the command view so multiple things
    can be responsible for specifying the waterfall associated with a command!
[x] awesome zoom level polling and sweet event baton stealing :DDDDDDDDDDDDDD
[x] then refactor keyboard input and UI.listen() to that event system
[x] make some kind of "single listener" event system... will make keyboard stuff easy
    because then you just steal and release for modals and such
[x] text input from the commandPromptView must flow down into
    filters. no hacky stuff anymore where it's part of the option parser,
    wtf
[x] ok fuckit here is the deal. Command model has minimal logic -- it calls
    to a parse waterfall that expands any shortcuts needed, handles any instant
    commands, and then finally will handle the dispatching. I think this will be
    really nice :D
[x] disabled map for levels
[x] better click events on branches and commits
[x] change to returning a promise for multiview
[x] multiViews with multiple terminals...
[x] debounce the forward and back methods
[x] multiview makes all these arrow views which fire events
[x] markdown parsing yay!!
[x] check animation for command entry fading nicely wtf
[x] no more CSS ids in views
[x] promise-based confirm cnacel
[x] rebase buttons view & styling
[x] rebase entries styling
[x] view for anything above the fold (modal view)
[x] rebase styling (get it better. even cuter -- make it like a command window)
[x] fix multiple rebases
[x] z index reflow update
[x] level finish animation
[x] refactor visualization
[x] aliases replace when put into commands
[x] headless Git for testing (send it commands and expected trees)
[x] few tests
[x] Great git test coverage
[x] gitEngine loads from tree immediately, not the weird thing we have now!
[x] nice opacity fade in
[x] clean up require
[x] promise based callback for interactive rebase WITH FAIL awesome

