Mini Micro Release Notes ======================== Version 1.2.1 (2024-03-20) -------------------------- • Updated the MiniScript core language to from 1.6.1 to 1.6.2, adding new `intrinsics` map and a variety of minor improvements; see language release notes at: https://miniscript.org/files/MiniScript-Release-Notes.txt • Various updates to the standard library modules in /sys/lib, including: • new stringUtil methods: compress, lastIndexOf, and isNumeric • mathUtil.numToStr now handles extended precision • mouse and scroll wheel support in textUtil.FileDialog • bug fix in styledText and grfon modules • qa and startup now better report map names • new methods in matrixUtil • listUtil now has apply1, applied1, filter1, and filtered1 methods (which act like the previous methods but take an additional parameter) • tc.check function helps you check whether your program counts as a "tweetcode" • various bugfixes around use of functions as keys or values • Updates to demo programs in /sys/demos: • fatBits now uses FileDialog for loading an image • new TD (tower defense) demo • New images and sounds, including: • a tank (both as a unified image, and as separate turret/base) • Minnie.png (our beloved mascot) • new varmints in /sys/pics/animals: mouse, chinchilla • new Marble textures • a "pew" sound • The `view` command (defined in /sys/lib/startup) now supports zooming in/out with the +/- keys. • Reworked how keyboard input is handled, so that Mini Micro can again properly handle multi-keystroke character inputs (like accented characters on most keyboard layouts). • At the prompt, Control+K and Control+U can now be used to clear your input to the end or beginning, respectively. • Fixed copy/paste in the console on Windows/Linux. • Reduced bounciness of the scroll limits in the code editor. • Fixed auto-repeat behavior of control+backspace (delete word) in the code editor. • Fixed an issue where a `run` loop could be unstoppable. • Fixed issue with a line break character going into your code when closing a code editor dialog. • Converted most intrinsic math functions to use doubles under the hood rather than floats, fixing some precision problems (e.g. in polygon functions). • Fixed frame rate (used by `yield`) to 60 fps, regardless of monitor vsync. Version 1.2 (2023-07-02) ------------------------ • Updated the MiniScript core language to from 1.5.1 to 1.6.1, bringing many enhancements including new +=, -= (etc.) operators — see the language release notes at: https://miniscript.org/files/MiniScript-Release-Notes.txt • New demos in /sys/demo, including: • demos: presents menu of select demos, with auto-run ("attract mode") feature • asteroids: homage to the classic Atari game • desktop: a GUI shell • lcars: a different GUI shell with a sci-fi theme • quadris: homage to the classic falling-blocks game • New libraries in /sys/lib: • bmfFonts: bitmap font rendering • styledText: parsing and printing of styled text, with word wrap • gui: support for GUI windows, scrollbars, buttons, and menus • New /sys/fonts folder includes several handy BMF fonts, including proportional versions of the standard Mini Micro text fonts • New `findFile` command lets you browse for a file right on the command line. •︎ `view` command now shows tiles and tile numbers if viewing the image assigned as the tileset of a current tile display. • `qa` module: now correctly returns "map" for `qa.typeOf {}`. • `textAdventure` demo: fixed some bugs related to countable coins. • `grfon.Parse` now returns an empty map for `{}`, rather than returning null. • `key.axis` now supports "Tilt X", "Tilt Y", and "Tilt Z" for reading the accelerometer on devices that have one (probably nonfunctional on desktop platforms) • `key.axis`: added a `smoothed` parameter (default true), enabling raw (unsmoothed) inputs. • `file.loadImage` and `www.get` now store the image name and path on the Image instance • New `Image.fromScreen` method takes a screen shot, including all display layers. • Added new `Image.flip` and `Image.rotate` (in 90° increments) methods. • Fixed several issues with TileDisplay: • no longer shows LOL emojis if you don't assign a tileSet • you can now both get and set `tileSet` • now works fine when set up detached and then installed • `env.prompt` can now be a function. If it is, we now invoke it, give it a limited time to run, and then print the implicit result (if any). This allows you to make a custom prompt that shows the current working directory, time, etc. • Added new "medium" font for PixelDisplay.print, in between "small" and "normal". • Revised how `PixelDisplay.drawImage` does alpha blending to match industry standards. • `cd` now validates the given path, and refuses to change to an invalid path. • `"/"` is now a valid path (in cd, dir, etc.) • The `edit` and `run` commands now take an optional filename to `load`. If you have unsaved changes, the user is advised to `save` or `reset` and the operation is aborted. • Fixed: Esc key did not enter the keyboard buffer (as seen by `key.available` and `key.get`) on Windows and Linux. • Fixed: Tab key did not accept autocomplete on the command line in Linux. • New `key.put` method allows you to enqueue a string, or single character by code point, into the keyboard buffer. • Fixed: assigning to the `freq`, `duration`, etc. of a synthesized sound while it is playing now stops it, rather than leaving it orphaned and uncontrollable. • Fixed the default value of `mode` for `file.open` (now "r+"). • Fixed: installing a PixelDisplay no longer resets its .color to white. • Fixed: f.readLine now returns `null` (instead of "") at end of file. • Added `mouse.locked` to lock the mouse cursor, e.g. for FPS games. • Added `env.shell`, which is the path to a "shell" app that should be automatically (re)launched after the current program exits. This should be cleared by Control-C or any error break, and will be used by `demo` and `desktop` to return to these after running a program. On the command line, `exit` will relaunch the current shell (if any). • Added `sound.amp` to get the current amplitude of a playing sound (in the range 0-1, but typically closer to 0), enabling you to make a sort of graphic equalizer display, or do lip-syncing to speech, etc. • Removed test characters previously at char(29) and char(30) in the text fonts. • Fixed: Display.install now works with a display of type 0 (off). • Fixed a crash that occured when setting gfx.scrollX to NaN. • Code editor improvements: • Fixed: shift-return no longer gets confused and inserts the wrong closer on certain code • Code editor uses a new custom font, including all special characters available in the text display. • Added customizable editor colors, via the `env.editorColors` map. • Increased scroll wheel speed in code editor -- should be ~1 line/click • Ensured the editor shows the unknown-character glyph for unknown chars, rather than just blank, on all platforms. • Correctly colors parens after a line continued by `and`. • Home keypress or cmd-left: now scrolls all the way to the left (showing line numbers). • When opening a different file, editor resets to top left most position (including line-numbers) rather than its previous position. Version 1.1.1 (2022-03-01) -------------------------- • Fixed a problem typing in "Jump to Line" and similar dialogs in the code editor. • Fixed inability to read files with file.open mode "r". • Added an optional `codePointsToRead` parameter to `FileHandle.read`. • `file.writeLines` now returns an error message when given an invalid path. • Improved error handling & recovery (bails out immediately on runtime error, even if inside a function). • Fixed a bug which would cause a display to fail (become invisible) if uninstalled and re-installed hundreds of times. • Added -usr and -usr2 command-line options to set what is mounted as /usr and /usr2, respectively. • Added support for Home/End keys to jump to start/end of line on the command line or for `input` (same function as Control-A/Control-E). • Made minor tweaks to several demos, include modules, and built-in help. Version 1.1 (2022-01-23) ------------------------ • Added Sprite.corners and Sprite.setCorners, which allow you to directly get/set the four corners of a sprite. This allows for stretching, perspective projection, etc. • Fixed bug in which a directory on a minidisk could not be deleted unless you appended "/" to the file name. • Added code to ensure the code editor keeps the keyboard focus even after using the scrollbar, etc. • Added sorting of Find results in the code editor (just click any column header). • Added "Auto-Save" checkbox to code editor. • Added Sound.adjust. • Fixed bug causing the screen to be offset (cut off on the left) when bezel:false is used in bootOpts.grfon. • Changed how intrinsic functions look up their parameter values to a method both faster and more null-safe. • Updated code editor to properly color closing parens/brackets on continued lines. • Control-C break may now be enabled/disabled at runtime, by simply changing env.bootOpts.controlC. • key.get now returns all control characters (1-26), not just ^A and ^E. • New "ignorePrefs" option in bootOpts allows you to bypass prefs and always mount user.minidisk next to the executable. • Sprite.worldBounds now updates immediately when you change the sprite position, rotation, or scale. • Fixed handling of the U.S. International - PC keyboard layout under Windows. • Uses MiniScript language version 1.5.1, which brings several improvements. These include better error reporting, use of `null` as a map key, and more consistent logical comparisons and operators. In addition, empty parentheses are no longer required on a function declaration -- eliminating the only place where such empty parentheses were ever required. • The "small" font (available with PixelDisplay.print) was missing the vertical bar character, "|" or code(124). This has been corrected. • The character spacing in the "small" font has been changed from 9 to 8 pixels. • The /sys/demo/fatbits.ms program now sports a background color and outline that make it easier to tell the drawable area of a small image. (Thanks to @sebnozzi for this enhancement.) • New demos: cardFlip, road, and spriteStretch (all in /sys/demo). • /sys/lib/stringUtil now adds string.fill and string.match methods, for doing template-based string substitution and pattern matching. • /sys/lib/mathUtil offers new methods for finding line-line intersections. • Bounds class has a new `overlapsLineSegment` method for testing whether the bounds intersects a given line segment. Version 1.0 (2021-08-28) ------------------------ Initial (1.0) release.