git @ Cat's Eye Technologies yoob.js / master HISTORY.markdown
master

Tree @master (Download .tar.gz)

HISTORY.markdown @masterview rendered · raw · history · blame

Changelog
=========

*   version 0.13
    
    Added `populateFromPairs` helper method to `yoob.PresetManager`.
    
    Fixed `NaN` bugs in element-factory.
    
    Fixed a bug in `yoob.Playfield.map`.
    
*   version 0.12
    
    Fixed a bug in `yoob.Cursor.clone`.
    
    Added `yoob.makeRangeControl()` in `yoob/element-factory.js`, which
    improves upon `sliderPlusTextInput` by adding optional increment and
    decrement buttons, and taking a configuration object as a parameter
    for construction.
    
    `yoob.PlayfieldCanvasView` now accepts `resizeCanvas` argument,
    which defaults to true, but can be set to false to suppress the
    default behaviour of resizing the canvas to fit the playfield
    just before each time it is drawn.
    
    In many places where the code was calling `alert()` to signify an
    error, it now throws a new `Error` object instead.

*   version 0.11
    
    `yoob.Playfield`, its Views (`yoob.PlayfieldCanvasView`,
    `yoob.PlayfieldHTMLView`), `yoob.Cursor`, and `yoob.TextTerminal`
    all take configuration dictionaries as their single argument to `init()`.
    
    `yoob.Cursor`s are now attached to `yoob.Playfield` and `yoob.Tape`
    objects, and are no longer attached to the PlatfieldViews.
    `yoob.Cursor` also no longer has a "built-in simple view"; viewing
    methods for cursors have been added to the PlayfieldViews.
    
    Added `yoob.Playfield.foreachVonNeumannNeighbour`.
    
    `yoob.Cursor` no longer supports `read()`/`write()`; instead,
    `yoob.Playfield` and `yoob.Tape` both support the "cursored read/write
    interface".
    
    `yoob.Tape` no longer contains "built in canvas view"; these methods
    have been moved to a new `yoob.TapeCanvasView` class.
    
    `yoob.Tape` has been given `push()`, `pop()`, `peek()`, and `getSize()`
    methods to allow it to be used as a first-in, first-out stack.
    `yoob.Stack` and `yoob.StackHTMLView` have been removed.
    
    `yoob.Controller` now has a `setResetState()` method, which can be
    called, typically before `clickReset()`, to set the state that resetting
    the controller will reset to.

*   version 0.10
    
    `yoob.Chargen` can be `init`ed with a `colorToAlpha` triple; if it is
    given, that color will be treated as transparent when creating the
    coloured bitmaps of the characters.
    
    New `StackHTMLView` and `TapeHTMLView` view objects.
    
    `Tape.foreach()` supports a dense traversal, which visits every cell of
    the tape between the lowest and highest written cells, even if intervening
    cells have never been written.
    
    `yoob.makeSelect()`, in `yoob/element-factory.js`, now takes optional
    arguments: `fun` (a function that will be called when the selection is
    changed) and `def` (a default value which will be initially selected.
    This will also cause the callback function to be called.)

*   version 0.9
    
    Several more objects support the standard `init` protocol: caller passes
    in a configuation object, and the method is chainable (returns the object
    that was initialized.)
    
    `yoob.Tape` now has a `clear()` method, and supports default values for
    cells that have never been written.
    
    `yoob.SpriteManager` underwent significant refactoring.  In particular,
    the x and y values are assumed to always refer to the centre of the
    sprite.  An `intersects()` method was added, to help detect collision
    between two sprites.  A `clearSprites()` method was also added.
    
    Added a new `yoob.CanvasResizer` object, which attempts to intelligently
    resize a canvas element to fit in the browser window, with options to
    preserve maximum size, aspect ratio, etc.
    
    In `yoob/element-factory.js`, a bug was fixed in `makeTextArea`, and
    functions were added for creating SVG elements.
    
    `yoob.Chargen`'s `init` method now takes a configuration object, for
    consistency, and spells the word `color`, if not correctly, then at least
    consistently.

*   version 0.8
    
    Added `yoob.SourceManager`.
    
    `yoob.Controller` is no longer responsible for showing the editor for
    the textual source of a program/configuration; that's the new
    `yoob.SourceManager`'s job.  All that code has been removed from
    `yoob.Controller`, and several backwards-incompatible changes have
    been made to its API as well.  In particular, a subclass or client
    must supply a `reset` method now rather than a `load` method.  Please
    consuly the source comments in `yoob/controller.js` for more details.
    
    Both `yoob.Controller` and `yoob.SourceManager` are capable of
    creating their control panels (full of buttons) programmatically.
    
    `yoob.PresetManager` no longer takes a `yoob.Controller` to establish
    a default callback.  Instead, a default callback can be configured
    with the `setPreset` key.
    
    Added `yoob.makePre()` to `yoob/element-factory.js`.

    Added `setPlayfield(pf)` to `yoob.PlayfieldCanvasView` and
    `yoob.PlayfieldHTMLView`.  Also added `setCellDimensions()` to
    `yoob.PlayfieldHTMLView`, mostly as compatibility with
    `yoob.PlayfieldCanvasView`; and `yoob.PlayfieldHTMLView` renders
    undefined values as ` ` (space) by default now.

*   version 0.7-2015.0108
    
    Fixed bug in `yoob.Controller` where the "Reset" button was not being
    disabled during source editing.

*   version 0.7
    
    Added `yoob.StateMachine`.
    
    Removed `yoob/animation-frame.js`.
    
    Added `.size()` method to yoob.Stack.
    
    Added `.clone()` and `.rotateDegrees()` to yoob.Cursor.
    
    Added `yoob/element-factory.js`.
    
    Fixed z-index bugs in yoob.SplashScreen.

    `yoob.Controller` now supports a 'reset' button.  In addition, the
    'speed' control defaults to reversed mode (low values = slow.)
    
    `yoob.Controller` now has rudimentary support for loading source via XHR
    (AJAX).
    
    `yoob.Animation` allows the `update()` (or `draw()`, in `proportional`
    mode) to return the exact object `false` to force the animation to stop
    immediately.
    
    Added `yoob.Varier`.

*   version 0.6
    
    Renamed `yoob.PathSet` to `yoob.PathList`.
    
    Added `yoob.SourceHTMLView`.
    
    `yoob.PlayfieldHTMLView` may now have cursors.
    The extents of both kinds of Playfield View now include cursors.
    Cursors may be drawn early or late in `yoob.PlayfieldCanvasView`.

    Added `yoob.PresetManager`.
    
    `yoob.Controller` is no longer responsible for selecting between
    provided programs/configurations.  It also keeps track of its state
    (running/paused/stopped/blocked on input) internally.
        
    animationFrame shims improved; animation functions deprecated in
    favour of the `yoob.Animation` object.
    
    `yoob.TapeHead` deprecated in favour of `yoob.Cursor`.

*   version 0.5
    
    `yoob.SpriteManager` handles both mouse and touch events.
    
    Added `yoob.Turtle`, `yoob.Path`, and `yoob.PathSet`.
    
    Added `yoob.FullScreenDetector`.

    Added `yoob.Joystick`.
    
    Added `yoob.Chargen`.
    
    Added `yoob/splash-screen.js` and `yoob/animation-frame.js`.
    
    `yoob.PlayfieldCanvasView` now sets up some reasonable default values
    for cell size and cursors, and `yoob.PlayfieldHTMLView` is less incomplete.

*   version 0.4
    
    Moved all-display related code from `yoob.Playfield` into a new class,
    `yoob.PlayfieldConsoleView`; in MVC parlance, `yoob.Playfield` is now
    a "model", and to actually display it in a browser, you will need a
    "view".
    
    `yoob.PlayfieldConsoleView` has a `drawCell` method instead of the
    old `drawElement` which will try to call `draw` on the value in the
    cell, if it has such a method, and will also takes (and will pass) the
    x and y co-ordinates of the cell in the playfield being drawn.
    
    Removed `yoob.TextConsole`; use `yoob.TextTerminal` and don't call
    `write()`, just call `writeRaw()`, if you want a console that doesn't
    understand terminal control codes.
    
    Refactored `yoob.TextTerminal` to be a facade over a `yoob.Playfield`
    and a `yoob.Cursor`.  Thus, you can now read characters from any
    position in the terminal — however it has lost the ability to overstrike
    characters.  Again, since `yoob.Playfield` is now a "model",
    `yoob.TextTerminal` itself does not concern itself with displaying the
    terminal (although there is a helper method to create a canvas view.)
    
    `yoob.LineInputBuffer` generally improved; it listens to `keydown`
    instead of `keyup` for special keys, prevents the default action for
    them, and has been tested in Firefox, Chrome, and Internet Explorer
    (recent versions.)

*   version 0.3
    
    Added `embed-sources` tool.
    
    Added `yoob.SpriteManager` and `yoob.Sprite` classes.
    
    Moved `yoob.AST` to `yoob.Tree`, and added `equals`, `setValue`,
    `setVariable`, `match`, and `subst` methods to it.
    
    Added support for `edit` and `select` controls in `yoob.Controller`.
    
    Added `get(Max|Min)(X|Y)` methods to `yoob.Playfield`, and fixed
    issue with drawing cursors at wrong offsets.

*   version 0.2
    
    Added `yoob.Controller` class.
    
    In `yoob.Playfield`:
    
    *   made attributes camelCase
    *   added support for `transformer` argument to `load`
    *   added support for default values (`setDefault`)
    *   added `dump` method
    *   added `putDirty` and `recalculateBounds` methods
    *   added `map` method

*   version 0.1
    
    Initial release.