12.0.0:
- New Features:
- global zoom setting ("magnification"), scales everything seamlessly
- new interactive "Magnification" dialog in the settings menu
- magnification gestures: shift-scroll on Logo zooms, shift-double-click resets zoom to 1
- new "zoom" api configuration key
- templates
- marking a starter project / puzzle as "template" removes its name when loading it (and lets users create their own projects based on the template)
- projects based on a template let the user restore the visibility of global blocks in the template palette
- template-projects can store their magnification level, block fade level, blocks zoom, language, design and theme and propagate them into the projects that are created from them
- template-projects always open in edit mode (but still auto-run unless supressed)
- "generate puzzle" automatically turns the project into a template
- tutorials
- open and run a scene inside a separate modeless window
- new "Tutorials" library for positioning and scaling the tutorial window and interacting with the editor
- "scn" extension category for cloned scenes and tutorials
- new "scn_scale(num)" extension, scales and animates a launched tutorial, reports the scale if given no number or zero
- new "scn_exit" extension, closes the tutorial dialog and redisplays the scenes in the corral
- new "scn_position(pane, x, y)" extension, positions the tutorial dialog into the specified pane
- new "scn_dimensions(pane)" extension for observing whether ide or tutorial panes have been resized
- new "'meta_current(asset)'" extension for tutorial needing to access the IDE for the current sprite, stage, scripts, category or tab
- unringed blocks as data
- new "expression" selector in block-attribute (metaprogramming) reporter
- enables expressions (unringed blocks) to be CALLed and RUN
- enabled unringed blocks to be shown in and dragged out of speech and result balloons
- graphics & visualization
- drawing and writing on sprites: new "(paint) on (surface)" command primitive in the pen category
- new "pen_path(points, [fill, close]" extension for drawing precise, filled shapes
- new "Draw Paths" library for directly drawing filled or stroked polylines and polygons without moving the pen sprite
- new "Shapes" extension for working with geometrical figures, modeled after Pyret's images. Under construction
- OOP 2.0 (data objects)
- "super" calls: using a ring as index inside the "ITEM ... OF ..." reporter answers a copy of the function (ring) that is bound to the list object in the second slot, enabling polymorphic methods, i.e. message dispatches to a "super class"
- custom data types
- include a ring entry named underscore + morph in data to specify a dynamic view
- new "cst_morph(cst)" extension for specifying custom data type visualizations
- include an entry named underscore + field in the data to specify a custom data type
- integrated type-inferral for user defined data types
- new "custom type" input slot for blocks
- enforcing data types in input slots
- new optional "reports" type declaration entry for custom reporters
- new "enforce types" option for all custom blocks: only lets users drop reporters into input slots whose return type matches that of the slot
- new general "enforce input types" preference setting for scenes / puzzles / microworlds
- domain-specific languages (DSL) support
- support for dynamic dropdown menus and read-only settings in variadic input slots
- support for variadic upvars in custom blocks
- new 'parameter' custom block input type, same as 'upvar', but doesn't add a script variable when evaluated, supports variadicity
- support for dynamically setting the contents of expanded variadic upvars and input slots by a user script in the block definition
- support for user-scriptable rename-menus in upvars, including variadic ones (a single menu is repeated in each non-unevaluated slot, a list of menu-lists whose first item is an empty list gets repeated across all subslots)
- new "360° angles" dial widget for mathematical bearings (zero is East, counterclockwise) instead of compass bearings
- new "number unevaluated" special input slot for custom blocks
- files
- new general "dta_export(data, name, type)" extension (for csv, json, etc.)
- new general "dta_import(raw?)" extension (for text files, csv, json etc.)
- ui
- change name and color of custom categories
- new "blocks" and "speaker" symbols, icons for the sprite-editor tabs
- new "hide empty categories" setting
- "generate puzzle" automatically hides empty categories
- added a black-gray-white palette to the bottom of the color picker for color input slots
- new "blocks only" setting for costomized "functions-first" microworlds
- more extensions
- Edge AI Computer Vision extension - thank you, Bernat!
- new "Tables" extension for working with tabular data sets, modeled after Pyret's tables. Thanks, Shriram Krishnamurthi for your inspiration, feedback and advice!
- new reporter version of "let" in the variables declaration extension
- new "... times ..." reporter in the neural networks library for quantifying results
- new blocks to load costumes and sounds from a url in the web-services library, thanks, @ego-lay-atman-bay!
- new "cst_shrink-wrap(cst)" extension
- new "ide_switch_to_palette(category)" extension
- new help screens
- new help screens for "combinations" and
- "pipe" reporters, thanks, Brian and gang!
- new set of costumes and backgrounds by Ketrina!
- global zoom setting ("magnification"), scales everything seamlessly
- Notable Changes:
- data types
- enhanced "is ... a ...?" predicate to support dependent data types and user defined structs (ADTs)
- ui
- the green-flag button changes its color to red while any script has an error
- keep result balloons "attached" to their originating block / script when scrolling
- added icons to the IDE tabs (scripts, costumes, sounds)
- added "plus" signs to the buttons in the corral bar to emphasize that a new sprite is created by clicking them
- flat design mode now (again) supports rounded corners (sigh...)
- dialog boxes are more bright and their buttons more discernible in bright mode
- rearranged IDE settings menu items into submenus, thank you, Joan!
- sprite icons no longer blur when the sprite size is reduced or the zoom level increases
- sprite icons no longer display graphics effects, but the original costume
- resizing the browser / window in presentation ("app") mode scales the stage smoothly
- removed "stage selected, no motion primitives" text from the palette to support sprite-less microworlds
- turned "language", "looks" and "microphone resolution" menus into settings-submenus
- rearranged some slot types in the long form input dialog so default "Any type" is the first one top left
- removed old photo costumes of people
- blocks
- removed landscape orientation of text-input slots
- meta-programming
- silently handle missing variable references in user-scripted dropdowns and expansion subslots by returning an empty list instead
- removed "static" tag from the block-attribute getter
- (EDC) Fancy Text
- added automatic vertical scrolling to "fancy say / think" balloons
- added optional "max height" input to "fancy say / think" library commands
- speech recognition
- new "tts_started" extension, reports (in a separate process) whether the user has started speaking in response to a "tts_recognize" query
- TTS library: new "started speech response?" predicate
- neural networks extension
- added a custom visualization for the neural network data type to the neural networks extensions
- refined normalization to handle redundant features (columns with all the same value)
- in other extensions
- took out rate limit in the Microblocks library, thanks, Bernat!
- changed the evaluation semantics of the "let" block in the variables declaration extension to enable reuse of previously declared variables inside the same block
- data types
- Notable Fixes:
- always "normalize" SVGs on import, avoids "cut-off" costume parts
- frequency distribution analysis library: fixed "plot bars" block to handle zero values gracefully
- fixed occasional rendering artifacts on screens with a fractional devicePixelRatio
- fixed some special cases for using "combine" on an empty list, thanks, @rmunn!
- neural networks extension: fixed normalization to disregard redundant features and no longer throw a divide-by-zero induced error
- fixed a variable declaration error in the S4A-Connector extension, thank you, Joan!
- Documentation Updates:
- updated API.md with new "zoom" configuration key for global magnification
- Translation Updates:
- new Vietnamese translation, thank you, Serge Faure @seeeerge !!
- new Western Armenian translation, yay! Thanks to Avag Sayan and the Antrohoos Education Foundation !!
- new British-English translation, thank you, Mark de Boer !!
- Polish, thank you, @P1neF0rest935 !
- Chinese, thank you, @Ayist14 !
- Catalan, thanks, Joan!
- German