You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
all blocks in the palette are now custom blocks, except hat blocks and rings
bootstrap global custom blocks as primitives
new "primitive" (pragma) block for custom block definitions
support for associating custom block definitions with primitives
support for overloading primitives with custom block definitions and organizing them in libraries
new experimental (hidden) option to bulk-toggle the use-primitive switch in all customized primitives
export and include customized primitives in libraries
New blocks and new block features
new "skew" primitive block for costumes
new "a new clone of 'Turtle sprite'" feature - makes a new temporary Turtle sprite that does not inherit anything
lazy translation support for data
Customizing Blocks
color type input slots for custom blocks
variadic variables type input slots for custom blocks
destinations, locations, keys, data types, objects + self, sprites + self, collidables, object attributes, microphone, scenes, primitives, properties and extensions dropdown menus for custom blocks
upvars in custom blocks can now have different default names than their formal parameter names
"collapse" label support for variadic inputs in custom blocks
variadic "collapse" (prefix label) support for custom blocks
default values for variadic slots inside custom blocks
initial subslot number support for variadic inputs
special "receivers" type input slots for custom blocks (as in the "broadcast" primitive)
special "send data" type input slots for custom blocks (as in the "switch to scene" primitive)
max/min subslot number support for variadic inputs in custom blocks
new "input names" selector in the (attribute OF target) primitive reporter
prefixing a default text value in the slot-type dialog with dollar-underscore tags it as translatable selector
support translating custom drop-downs by prefixing items with $_
Customizing the palette
custom blocks can be rearranged in the palette via their context menu, thanks, Simon Mong for pioneering this!
custom blocks can be grouped in the palette by adding vertical spaces in between them
Customizing the IDE
new API configuration option to hide the project name, thanks, Bernat!
new API configuration option to hide project specific entries in the file/project menu
Metaprogramming
new Metaprogramming library
allow (nested) lists of block label parts in the DEFINE command to express multi-line block labels
metaprogramming support for color type input slots (number: 13, spec: "clr", mnemonic: "color")
metaprogramming support for color type variadic variables slots (number: 14, spec: "scriptVars", mnemonic: "vars")
metaprogramming support for "collapse" labels in variadic inputs
metaprogramming support for c-slots with loop arrows (number: 15, spec: "ca", mnemonic: "loop")
metaprogramming support for "expand" (slot prefix) labels in variadic inputs
metaprogramming support for default values of variadic inputs
metaprogramming support for initial variadic subslots
metaprogramming support for message-receiver type multi-slots (number: 16, spec: "receive", mnemonic: "receivers")
metaprogramming support for send-data type multi-slots (number: 17, spec: "send")
metaprogramming support for max/min subslot number in variadic inputs in custom blocks
metaprogramming support for newlines in custom block labels ("$nl")
Extensions
new "Code to Blocks to Code" library, translates text code to blocks and vice-versa
new 3D Beetle Geometry extension, thank you, Bernat!
new experimental "Embroidery" library
new EDC Early Maths Microworlds, thanks, Zak Kolar and Bernat!
new "writing and formatting" library, thanks, Tethrarxitet!
new "Outlines and Halos" library
new "snap" category with new "snap_block_selectors" extension primitive
new "bootstrap" and "un-bootstrap" extension primitives
new "bootstrapped(block)?" extension primitive
new "snap_yield" extension primitive
new extension primitives for encoding / decoding blocks to and from xml
new 'xhr_binary(url, webIDL_type)' extension primitive
new "binary data from (url) type (webIDL)" reporter in the web-services library
pixels library: new "grayscales of (costume)" reporter
pixels library: new "rectangle costume" reporter
new "sigmoid" easing function in the animations library (for neural networks)
Hypermutation
new "changeBy(data, delta)" extension primitive
Live Coding
new live coding "performer mode" setting, thank you, Bernat!
Matrix-kernel convolutions
Lisp code / codification
new LISP-like text syntax for blocks and scripts
new "Lisp code..." entry in blocks context menu
new "code..." entry to blocks context menu if "Codification support" setting is enabled
User interface
copy text from variable watchers, block result bubbles and sprite speech/thought balloons to the clipboard
new Search feature for the library browser, thanks, Michael!
new "svg poly" export format for vector pen trails, optimized for speed and laser-cutting
export vector pen trails as embroidery files (DST, EXP)
added pen trails export options to the project ("file") menu
added ability to switch octaves in the piano keyboard menu, thanks, ego-lay-atman-bay!
Notable Changes:
Blocks all the way
renamed "primitive" blocks into "extension"
Blocks behavior
drawing a dot when moving zero steps now observes the flat-line-ends settings and draws a centered square or rhombus the size of current pen and in its direction
optimized FOR-loop and FOR-EACH-loop for speed
Custom Blocks
keep the order & position of existing custom blocks in the project palette when overloading them with imported blocks
support for multiple separator lines in input slot dropdown menus
Libraries (and Costumes, etc) media files are now in a JSON format, which supports translation and additional search metadata.
arcs library: changed label wording to TurtleStitch convention, added "arc left" version
Metaprogramming
automatically add generic inputs in DEFINE matching the number of placeholders in the label
when querying the defintion of a block via metaprogramming the number of inputs of the resulting ring now matches that of the header expression
block label symbols are now shown with their name prefixed by "$" instead of an underscore to avoid confusing them with inputs when metaprogramming
the metaprogramming getter for "translations" block attribute selector now always returns a list
custom block definition comments can now be deleted by setting them to nothing (empty string, zero or false)
the "define" block now always creates a new custom block definition instead of sometimes modifying the definition body of an existing one with a matching label
support for smooth animations in recursive control structures defined using metaprogramming
When programmatically setting the "slots", "defaults", "menus", "editables" or "replaceables" of a custom block to a non-list type, apply the type to all slots instead of just the first one.
Hypermutation
the "change by" command for variables is now hyperized and even recursively mutates (!) data
User interface
scroll long text inside result balloons instead of shortening it
Confirmation pop-ups when closing the browser tab only appears in the event of unsaved changes, thanks, 2-www
more help screens, thanks, Brian and the forum gang!
Lisp code
splitting a LISP-formatted text by "blocks" returns a block-syntax tree
converting a block-syntax tree to "text" using the list-selectors reporters reeturns LISP code
Notable Fixes:
fixed a type error when using metaprogramming to copy default inputs from a primitive over to a custom block definition
fixed referencing system drop-down menus in metaprogramming