Skip to content

Releases: jmoenig/Snap

4.0.3

15 Dec 08:35

Choose a tag to compare

  • fixed occasional horizontal rendering artifacts in block “holes”
    (C-shaped slots and Ring holes)
  • improved user editing of input slots and fixed cursor behavior (note:
    the text cursor inside input slots also blinks again, as it should have)
  • always export comments attached to prototype hat blocks in the block
    editor along with script pic
  • when first opening a block editor on a custom block definition make
    it big enough to show everything (as much as fits on the screen)
  • remember block editor position and dimensions for each edited custom
    block definition when acknowledging (pressing OK or APPLY) for the
    session
  • speed up stacking of commands and loading of projects by suppressing
    redundant block redraws
  • introducing a “grab threshold” preference to suppress accidental
    grabbing through micro-movements of the hand. This addresses the
    “cannot-click-on-drop-downs-in-Chrome-under-Windows” set of bug
    reports, and also the issues that arise out of accidentally dragging
    off a copy of a parameter blob when trying to just click on it to
    rename it
  • new hidden (shift-click) option to adjust the grab threshold in the
    settings menu for the current session
  • expand list watchers inside result bubbles and speech/thought
    balloons to show everything (as much of the list’s first level as fist
    into either the scripting area for result bubbles or the stage for
    speech balloons - note resizing the stage affects the size of the list
    watchers inside speech balloons, i.e. making the stage bigger increases
    the number of visible elements even while the balloon is showing)
  • fixed a bug that make an occasional gray rectangle appear at the
    mouse pointer
  • added a way to invoke blocks synchronously in JavaScript - under
    construction (possibly to be used for generic “When” hat blocks and
    user-customizable drop-downs)
  • added methods to cache morphs’ fullImage and fullBounds while dragging
  • Reporters (also nested reporters) and sprite icons (in the corral)
    are now semi-transparent when being dragged, so you can see possible
    drop target halos /through/ them
  • in “prefer empty slot drops” mode (default) it is now much harder to
    drop reporters onto non-static C-slots inside custom blocks (e.g. in
    FOR loops) and onto variadic input arrowheads (to replace the whole
    input with an input list)
  • ScriptsMorphs are now noticing transparent clicks (addresses #997)
  • %interaction slots are now static, fixed #982 (it is no longer
    possible to drop reporters into the input slot of a “When I am…” hat
    block (never was intended that it should be possible)
  • fixed ctrl-f for the block editor in all situations (thanks, Brian,
    for the bug report)
  • new Bulgarian and Romanian translations contributed!
  • fix for IE backspace and tab errors contributed!
  • better resource loading mechanism contributed!

Amsterdam

06 Aug 15:26

Choose a tag to compare

v4.0.2

  • optimizes performance of the Morphic framework, thanks to @nathan's brilliant engineering

  • introduces prototypal inheritance at the level of sprite-local variables

  • supports editing block scripts using only the keyboard:

    enable "Keyboard Editing" in the settings menu, then
    activate:

    • shift + click on a scripting pane's background
    • shift + click on any block
    • shift + enter in the IDE's edit mode

    stop editing:

    • left-click on scripting pane's background
    • esc

    navigate among scripts:

    • tab: next script
    • backtab (shift + tab): last script

    start editing a new script:

    • shift + enter

    navigate among commands within a script:

    • down arrow: next command
    • up arrow: last command

    navigate among all elements within a script:

    • right arrow: next element (block or input)
    • left arrow: last element

    move the currently edited script (stack of blocks):

    • shift + arrow keys (left, right, up, down)

    editing scripts:

    • backspace:
      • delete currently focused reporter
      • delete command above current insertion mark (blinking)
      • collapse currently focused variadic input by one element
    • enter:
      • edit currently focused input slot
      • expand currently focused variadic input by one element
    • space:
      • activate currently focused input slot's pull-down menu, if any
      • show a menu of reachable variables for the focused input or reporter
    • any other key:
      start searching for insertable matching blocks
    • in menus triggered by this feature:
      • navigate with up / down arrow keys
      • trigger selection with enter
      • cancel menu with esc
    • in the search bar triggered b this feature:
      • keep typing / deleting to narrow and update matches
      • navigate among shown matches with up / down arrow keys
      • insert selected match at the focus' position with enter
      • cancel searching and inserting with esc

    running the currently edited script:
    * shift+ctrl+enter simulates clicking the edited script with the mouse

Waltham

01 May 18:09

Choose a tag to compare

Snap is Scheme disguised as Scratch, a web browser based visual programming language aiming to support a technically rigorous introductory CS curriculum at the college and high school level.

v4.0 completes Snap's core language features supporting, among others

  • user-defined procedures ("Build Your Own Blocks")
  • lambda, incl. full closures ("Rings")
  • first-class continuations (call/cc)
  • tail-call optimization

Snap borrows from Scratch its graphical LEGO blocks grammar and its 2D cartoon themed microworld around a stage with sprite actors, costumes, events, and parallelism, combining it with Scheme’s dynamically typed and lexically scoped variables, first-class lists, lambda (closures), first-class continuations and proper tail recursion, encouraging programmers to create their own control structures (loops, catch/throw, higher-order functions such as map/filter/reduce) tail recursively without having to worry about stack overflows. Snap supports nested sprites and lets programmers turn arbitrary JavaScript code into graphical blocks. Its “codification” mechanism can transcompile graphical scripts into arbitrary textual code, offering a two-way transition between blocks and text.