Decker 1.43


Decker 1.43 is a maintenance release with a variety of improvements for contraption authoring and some minor breaking changes to Lil.

Fixes (Web and Native):

  • The "array.slice[]" and "array.copy[]" functions were not correctly respecting the cast of the source array when computing offset addresses.
  • Empty canvases (containing only pattern 0 pixels) no longer serialize their image content, reducing file size and spurious diffs.
  • X-Ray Specs were incorrectly prioritizing selection of widgets back-to-front, instead of front-to-back.

New Features:

  • Any widget may now be set as ".volatile". A volatile widget's state-values (the "value" field, canvas image content, scrolling, etc) are not preserved when the deck is saved and may be "purged" manually or via "deck.purge[]". Using volatile widgets where appropriate can reduce deck file sizes and spurious diffs, as well as providing a convenient way to "reset" games and similar applications.
  • Modules and Contraption Prototypes now offer a ".version" attribute, making it easier to keep track of improved releases of these resources. The Font/DA Mover displays version information and changes button titles from "Copy" to "Upgrade" or "Downgrade" as appropriate. Being able to upgrade Prototypes is particularly helpful, as doing so previously required external tooling or discarding existing contraption instances. Pasting contraptions can now automatically upgrade the prototype definitions, and "deck.add[]" exposes upgrade/downgrade functionality to scripts.


  •  When editing Prototypes using anything other than the "interact" tool, their name will now be shown in the top right corner of the menu, like card names, making it easier to disambiguate and navigate between similar-looking prototypes.
  • The Prototypes modal now offers "Clone" and "Delete" buttons, as a more convenient way to duplicate or remove prototypes, respectively.


  • Fields now delay only 1/4 of a second instead of 1 second when "debouncing" input, allowing for more responsive feedback in applications like search boxes. The original delay proved to be unnecessarily conservative and produced the impression that search and filtering are much slower operations than they are in practice.

Breaking Changes:

  • When given a function as its left argument, the "@" operator previously applied the function as a triad, with the value, key, and index of each element on the right, respectively. In practice, this approach proved to be a frequent source of confusion and prevented some quite reasonable idioms like using "random @ canvas.size" to pick an (x,y) point within the dimensions of a canvas. The "@" operator will now exclusively apply the function in this situation as a monad, feeding it only values. I suspect this change will negatively impact very few, if any, existing scripts.


  • Previously, if the "extract" query form specified no column expressions, it would extract a dictionary of each column in the result table, for symmetry with "select". In practice, this was of extremely dubious usefulness. I have modified this query form to instead extract the first column of the result table in this situation, which shortens many common uses of "extract", such as "extract value ..." of a list. The old behavior wasn't even explicitly documented, so again I doubt this will be a high-impact change. If the old behavior is desired, use "cols select ..." instead of "extract ...".

Files

Decker-1.43-mac.zip 2.3 MB
May 24, 2024
Decker-1.43-win.zip 2 MB
May 24, 2024
lilt-1.43.zip 439 kB
May 24, 2024

Get Decker

Download NowName your own price

Leave a comment

Log in with itch.io to leave a comment.