* Tweak API doc behavior and styling
* Instead of moving to the left during active dialogues, just move to the top
* Allow pointer events
* Adjust close button
* Re-enable pinning API docs for game-dev and web-dev levels
* Make sidebar in PlayGameDevLevelView stretch, better layout columns
* Set up content of PlayGameDevLevelView sidebar to scroll
* Add rest of PlayGameDevLevelView sidebar content, rework what loading looks like
* Finish PlayGameDevLevelView
* Add share area below
* Cover the brown background, paint it gray
* Tweak PlayGameDevLevelView
* Have progress bar show everything
* Fix Surface resize handling
* Fix PlayGameDevLevelView resizing incorrectly when playing
* Add GameDevVictoryModal to PlayGameDevLevelView
* Don't show missing-doctype annotation in Ace
* Hook up GameDevVictoryModal copy button
* Fix onChangeAnnotation runtime error
* Fix onLevelLoaded runtime error
* Have CourseVictoryModal link to /courses when course is done
* Trim, update CourseDetailsView
* Remove last vestiges of teacherMode
* Remove giant navigation buttons at top
* Quick switch to flat style
* Add analytics for game-dev
* Update Analytics events for gamedev
* Prefix event names with context
* Send to Mixpanel
* Include more properties
* Mostly set up indefinite play and autocast for game-dev levels
* Set up cast buttons and shortcut for game-dev
* Add rudimentary instructions when students play game-dev levels
* Couple tweaks
* fix a bit of code that expects frames to always stick around
* have PlayGameDevLevelView render a couple frames on load
* API Docs use 'game' instead of 'hero'
* Move tags to head without combining
* Add HTML comment-start string
Fixes missing entry point arrows
* Fix some whitespace
* Initial pass adding new game-dev level type.
* Fix a failing test with updated LevelSystem required properties
* Bring back normal Angel worker timeout times
* Fix another failing LevelSystem test since removing propertyDocumentation
* Updates spade.js vendor file, adds a sublime-project for developers to use
* Moves server logic away from handlers
* Moves session update logic to middleware, sets up server schema to autorender IDs as ObjectIDs
* Modernizes the supermodel loading scheme and switches from constructor to initalize
As JavaScript is the only language supported by the beautifier, and [CodeCombat is in the process of converting things to while (true)](https://github.com/codecombat/codecombat/issues/3510#issuecomment-201965310), I guess adding this quick hack to the view's code should suffice for now. Hopefully, the non-standard `loop` construct will be removed from other languages before they receive beautifier support.
If this doesn't seem good, I can move this hack to `aether.beautify`, where it is possible to perform this substitution in a language-aware way (i.e. inside Aether's JavaScript implementation's [`beautify` method](418ccf2414/src/languages/javascript.coffee (L137))). Seeing as the `loop` construct is specific to CodeCombat, I'm not sure if that would be a good idea. Passing an options object with a flag to support the `loop` construct seems a bit overkill.
Let me know what works best for you.