- Use a frame rate to control how often refresh() is called. Set
UI.framesPerSecond
to control the rate. It defaults to 60, instead of running as fast as possible as it did before.
- Migrate to Dart 3.0.
- Make
Screen.ui
non-nullable and throw if the screen is not bound to a UI.
- Migrate to null safety.
- Translate key codes for numpad keys.
- Fix concurrent modification error when screens are pushed or popped from
within
update()
.
- Add
Screen.resize()
and call it when theUserInterface
gets bound to a terminal with a different size.
- Add more key codes to
KeyCode
.
-
Don't resize the canvas given to
RetroTerminal
. -
Allow controlling the scaling for
RetroTerminal
. -
Don't require double-sized source images for
RetroTerminal
. Instead, it usesimageSmoothingEnabled
to ensure pixels don't get fuzzy when drawing from the font canvas.This is a breaking change because it means custom font images, which used to have to be double-sized, should no longer be.
- Update to Dart 2. Remove
new
andconst
keywords.
keyUp()
events.
- Change
Color.blend()
to take a value from (0, 1.0) instead of a percent. - Add
Color.add()
.
- Fill in the rest of the character codes to
CharCode
. - Add
Color.blend()
and store colors as RGB. - Add
foreColor
,backColor
, andfill()
to Terminal.
- Split into two libraries. The core malison library does not import "dart:html" and can be used in command-line applications. It's not useful outside of the web, but it lets you test code in a "headless" fashion that uses malison on the standalone VM.
- Get rid of implicit casts and dynamic.
- Add type parameters to
UserInterface
,KeyBindings
, andScreen
so that the bound objects can be precisely typed.
- Make strong mode clean.
- Widen constraint on piecemeal.
- Fix semicolon handling on Firefox.
- Add constants to
CharCode
for every character in code page 437. - Make constants
lowerCamelCase
.
- Automatically create a canvas if not given one.
- Allow creating a
UserInterface
without an initial terminal. - Add an example app.
- Fix bad assert in
Screen._bind()
.
-
Redo key input handling. Instead of a (mostly broken)
Keyboard
class, it exposes raw key down events as they happen and also allows user-defined key bindings. -
Refactor
UserInterface
and clean up how opaque/transparent screens are handled. -
Remove (useless)
write()
method. -
Handle semicolon keyCode difference between Firefox (59) and Chrome (186).