Mini Micro Release Notes ======================== Version 1.2.4 (2025-03-08) -------------------------- • Added new bounce-related math functions in /sys/lib/mathUtil. • Added a new /sys/demo/breakout demo game. • Added a letterboxColor option in bootOpts.grfon (controls the color of the extra space surrounding the Mini Micro screen when the host window is not a 4:3 aspect ratio). • Fixed a memory leak when repeatedly loading images and sounds. • Fixed an unpleasant side-effect of calling print directly on the TextDisplay class itself, rather than on some actual display (it removed color from the TextDisplay class). Note that there is no point in actually calling TextDisplay.print this way; don't do it. • In the code editor, when a code line is continued onto the next line number, it is now indented a couple extra spaces. • Fixed bug allowing the frame rate to exceed 60Hz in web builds. • Improved the scaling algorithm used by PixelDisplay.drawImage; now produces nice even sampling even when scaling by odd factors like 3 or 5. • In the web build, added "matchWebGLToCanvasSize: false" to the index.html file, which makes the viewport behave better in some contexts (e.g. itch.io). • You can now mount a PNG with an embedded Minidisk file, as a read-only disk. (For more details see: https://miniscript.org/wiki/Image_Disks) • You can now mount a folder or disk file (including an image disk) by dragging and dropping it onto the MiniScript window (Mac and Windows only). • Disk slots now make sounds when unmounting and mounting disks • A new `wtf` command checks global variables for potential problems (like overriding text or input), and offers to correct them. Type wtf when the console itself seems broken, and basic commands are no longer working. Version 1.2.3 (2025-02-02) -------------------------- • Fixed bug in dir command that showed an error when in an empty directory. • Fixed issue with disk slot light bezels showing (over the screen!) when bezel is removed. • Fixed premature optimization in Image.getImage. • Console history now longer adds a new input that's identical to the last one. • Added some additional fonts to /sys/lib/fonts, including Galactic-16. • Fixed a bug in bmfFonts lib that could cause when load to fail on a font with no kerning or no non-ASCII characters. • The demo in /sys/lib/bmfFonts now lists fonts alphabetically. • GRFON lib now properly escapes curly braces. • The text delimiter is now reset at appropriate times. Version 1.2.2 (2024-11-27) -------------------------- • Added new methods to TileDisplay: cellTransform(col, row) and setCellTransform(col, row, transform), which allow you to rotate/flip a tile. • Minidisk files with missing directories now have those filled in when mounted. (A common issue for disks created with Windows File Explorer archive utility.) • Disk slots and indicator light moulding is now tintable via bootOpts.grfon. • Added some protection against changing .mode or .index on a display (which never had any effect, but might have been confusing). • Added new dice and neko (cat) images under /sys/pics. • `findFile` now deals more gracefully with an empty or unmounted disk slot. • Added mouse support to textUtil.FileDialog (including findFile). • The `clear` and `dir` commands now also reset `text.delimiter`. • The `dir` command can now take a path to a file, allowing you to view info for just that file. • Added new /sys/demo/neko demo. • Added new /sys/demo/soundLab demo. • Replaced tiles 290 and 294 in 1bitTiles.png. • In /sys/lib/events: `invoke` methods now return their results, and added `cancelDoAfter` for canceling a `doAfter` call. • Updated /sys/lib/grfon.ms with some minor bug fixes. • /sys/demo/spriteControllers: no longer moves the text cursor. • /sys/demo/maze: fixed out-of-bounds error; added [R]egenerate feature. • /sys/demo/fateBits: now uses findFile to select files. 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.