- New Features:
- lists as dictionaries: alphanumeric indices for lists, access fields (JSON) and columns (CSV) by name
- include custom block data dependencies in libraries, eliminates the need for initialization routines creating and populating variables required by custom block definitions
- visually highlight variable scope when mouse-hovering over a variable declaration in visible stepping mode
- visually highlight the variable declaration of variable accessor blocks when mouse-hovering over them in visible stepping mode
- visually highlight senders / receivers when mouse-hovering over messaging blocks in visible stepping mode
- show intermediate results when debugging a script, i.e. when clicking on a script in visible stepping mode. Thanks, Vic!
- new "When (sprite) is edited" event hat block, supports light user interaction logging
- new PIPE primitive in the control category
- "touching" predicate now also accepts a 2-item list representing x/y-coordinates to check for collision with an arbitrary point
- hyper-rays: support lists of relative angles in the left "ray length TO sprite" input slot for instant fields of vision
- added "delete" option to context menu of global and sprite-local variable declarations in the blocks palette
- added "translations" selector to metaprogramming blocks
- new "disable dragging data" preference setting for (kids') MicroWorld creators
- pixels library: Added command blocks to rename and export costumes
- new "ide_blocks" extension primitive
- new extension primitives: "txt_to_utf8(txt)" and "txt_from_utf8(utf8List)", thanks, John!
- new extension primitive "txt_transform(name, txt)" for encoding, decoding, escaping, unescaping and hashing text
- new extension primitive "cst_export(cst, name)" for exporting/downloading a costume
- new extension primitive: "syn_scripts([xml])" for getting & setting (and deleting!) the scripts of a sprite
- codification: calling "code of" on a sprite returns a text version of its scripting area (concatenated codified scripts delimited by empty lines)
- extensions can auto-load and auto-exec allowed or allow-listed external JS scripts that modify the IDE, e.g. to add buttons by storing the external url in global (optionally hidden) variables whose name starts with "module"
- extensions can add custom buttons to the palette, thanks, Bernat!
- added retina support for inlined morphic worlds, enabling high-res embedding of Snap! components into other websites
- added configuration options for embedding Snap! into other websites
- new API methods for synchronizing scripts across sprites and Snap! instances
- new API methods for signalling scripts through highlighting blocks that correspond to marked portions of mapped text code
- Notable Changes:
- enabled same-named global and sprite-local variables
- no more error messages when the number of actual arguments doesn't match the number of implicit parameters
- removed empty parens from extension prims "ide_all_blocks", "ide_language" and "ide_translations"
- hyperized bitwise operators, and gave them more mnemonic block names, thanks, Bernat and Brian!
- optional inputs "broadcast" and "switch to scene" blocks don't auto-fill when called with an input list
- made formal parameters available in variable-menu dropdowns of all blocks inside of block editors
- hyperized "code of" reporter (codification primitive)
- round watcher readouts to 6 decimal digits (like Scratch), instead of 9
- updated "for each" help screen, thanks, Brian!
- TuneScope extension update, thanks, Harsh, Jo and Glen!
- SciSnap2 extension update, thanks, Eckart!
- MQTT library update, thanks, Simon!
- removed PIPE from all libraries (b/c it is now a built-in primitive in the control blocks palette)
- updated "Codification" example project
- hide "stage selected - no motion primitives" text when hiding the category names in single palette mode
- order "my scripts" list by their top-down position in the scripting area (not by the time of their placement)
- don't show "result pic" option in block context menu with "click-to-run" disabled
- enable JavaScript extensions when running Snap! locally without a webserver (location.protocoll "file:")
- enable "JavaScript function" primitive to be hidden / shown independently from enabling JavaScript extensions
- shrunk some new built-in costumes, to make them load faster
- Notable Fixes:
- fixed refactoring (renaming) variables (I hope, haha!)
- fixed retaining transience when renaming a global or sprite-local variable
- fixed displaying message senders
- improved text wrapping - wrap words that are too wide for a line by letters
- improved touch-hold gesture on mobile Android devices, thanks, @ego-lay-atman-bay!
- don't show block relabel options that are marked as hidden
- fixed aggressive cache issue, thanks, Michael!
- fixed exporting pics of morphs in dev mode, thanks, @xBZZZZ!
- fixed API->broadcast() to also accept a data payload, thanks, Zak!
- SciScnap2 library: fixed SQL queries containing the percent characters
- fixed exporting information about blocks in custom categories when creating a summary document (#3097)
- fixed occasional "reporter did not report" error when changing a custom command block to become a reporter
- fixed a naming issue when importing duplicate data files
- fixed occasional errors when using "broadcast" and "this script" in the same script
- fixed deselecting / selecting blocks in the "Unused Blocks" dialog
- fixed "obj_name" extension prim to also accept numbers as names
- fixed "Make Variables" extension for numerical names
- fixed palette category ghosting update when hiding / unhiding blocks using extension primitives
- fixed accidentally drawing unwanted dots when changing a pen color dimension thanks, Joan!
- fixed zebra coloring for polyadic read-only input slots
- fixed a label rendering glitch when flashing blocks
- prevented variables from being renamed to blanks
- caught an occasional maximimum call-stack size range error when embedding blocks into a scripts pic
- improved frame scheduling, prevent excessive frame drops, thanks, SArpnt!
- hiding the keyboard handler text area better by reducing its visible dimensions to zero
- fixed a codification glitch for empty list slots
- fixed deleting embedded reporters in keyboard-entry mode
- fixed zebra coloring when importing a script from file or smart PNG
- fixed accidentally triggering "When I receive green flag" events for any broadcast message
- COMBINing an empty list with JOIN results in an empty text rather than in the number zero
- hide new primitives in old microworlds
- explicitly garbage collect (i.e. remove) terminated audio elements
- don't crash the "play frequency" block when passing a non-numerical input
- Documentation Updates:
- new "docs" folder for documentation files, thanks, Michael!
- new doc for extensions, thanks, Michael!
- extended API documentation
- Translation Updates:
- German
- Catalan, thanks, Joan!
- Dutch, thanks, Hans!
- Brazilian Portuguese, thanks, Artur!