github jmoenig/Snap v12.0.0

10 hours ago

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!
  • 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
  • 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

Don't miss a new Snap release

NewReleases is sending notifications on new releases.