Releases: jmoenig/Snap
4.0.3
- 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
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
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.