diff --git a/DEVLOG.md b/DEVLOG.md index 6ed1fc625..66d7ae27c 100755 --- a/DEVLOG.md +++ b/DEVLOG.md @@ -1,164 +1,3 @@ # Snap! (BYOB) Dev History ## in development: -* **New Features:** - 1. OOP 2.0 - * new list-dictionary based object system with data scope and Lieberman style prototypical inheritance - * new "parent" selector for accessing list items, points to entry at ellipsis "..." - * new "object" item in the THIS (runtime environment) primitive reporter's dropdown menu - * new OOP library - 2. support for input-groups in custom blocks - * new "group" option in custom block slot type editor's special settings menu for multiple inputs - * metaprogramming support for input groups (represented by a list of slot types) - * new "Declare & Initialize Script Variables" library - 3. UI Looks - * flat / default (skeuomorphic) design - * bright / dark (color) theme - * new "theme" configuration key in the API - * new "cube" and "cubeSolid" symbols - 4. Other - * new Continuations library for run/cc and call/cc -* **Notable Changes:** - * preserve the order of items when using lists as dictionaries or data objects - * variadic slots in custom blocks now support '%nl' as separators and expansion labels - * Boolean input slot default values can be specified through metaprogramming - * variadic Boolean input slot defaults can be specified both in the UI and through metaprogramming - * added an official "Restore primitives" item to the project menu, if a project / scene has customized prims - * default values and expansion labels of variadic input slots in custom blocks are now translatable by prefixing them with $-underscore -* **Notable Fixes:** - * exclude variables declared inside input rings from the dropdown menu of reachable variables - * automatically declare variadic upvars inside custom blocks when evaluating them - * fixed a LISP-encoding conflict between a variadic expression and formal ring parameters - * fixed naming a block to a JS property such as "constructor" -* **Documentation Updates:** - * updated API.md with new "theme" configuration key for "bright" or "dark" UI modes - * updated LISP syntax documentation for script parameters -* **Translation Updates:** - * German - -### 2024-09-11 -* blocks: fixed #3401 - naming a block "constructor" fails -* threads: removed explicit macros for data objects - -### 2024-09-10 -* threads: changed evaluation of input groups to return a 2D (or empty) list -* objects: adjusted LISP formulation of primitive IF block to the new input group evaluation -* byob: for input groups set "initial slots" to the length of the group -* libraries: adjusted variable declaration module to the new input group evaluation -* libraries: adjusted OOP module to the new input group evaluation -* html: adjusted obsolete "apple" meta tags for mobile sites -* reduced and re-activated pwa service worker -* reduced number of pwa-cached files -* added everything except libraries to pwa cache -* added everything except some libraries to pwa cache -* added Beetle and MQTT libraries to pwa cache -* added Tunescope library to pwa cache -* added SciSnap library to pwa cache -* removed SciSnap library from pwa cache (again) -* added SciSnap library to pwa cache (again), except for the costume js file -* new "Continuations" library -* updated "iteration / composition" library with new continuation blocks -* updated dev version -* v10.1-rc1 -* added skipWaiting() to service worker -* v10.1-rc2 - -### 2024-09-09 -* updated from master branch - -### 2024-09-18 -* blocks: fixed unevaluated slots for input groups -* updated OOP library -* updated dev version -* threads: added read-only access to global variables to unbound data objects - -### 2024-09-17 -* blocks, threads: new "object" item in the THIS (runtime environment) primitive reporter's dropdown menu -* updated German translation for "object" string -* updated dev version -* updated from master branch - fixed canvasBoundingBox() bug -* updated dev version - -### 2024-09-16 -* lists: preserve the order of items when using lists as dictionaries or data objects -* updated from master branch -* updated dev version - -### 2024-09-14 -* blocks, byob: made default values and expansion labels of variadic input slots in custom blocks translatable -* German translation update for "field" (in the OOP library) -* updated OOP library with German translation -* updated variable declaration library with German translation -* updated dev version - -### 2024-09-13 -* updated from master branch -* updated dev version -* updated OOP library: added "FIELD OF" reporter -* symbols: new "cube" and "cubeSolid" symbols - -### 2024-09-12 -* threads: fixed #3394 - LISP-encoding conflict between a variadic expression and formal ring parameters -* updated LISP syntax documentation for script parameters -* changed dev version to 10.1 -* updated dev version -* gui: added an official "Restore primitives" item to the project menu, if a project / scene has customized prims - -### 2024-09-11 -* threads: bind looked up variables inside objects to their receiver ("self") - -### 2024-09-10 -* threads: bind rings to object scope when INSERT / REPLACE -ing them into an object-list -* updated OOP library: added "ADD field" command -* updated dev version - -### 2024-09-09 -* blocks: disabled experimental change allowing dropping reporters into variable accessor input slots and auto-ringification -* blocks, morphic: exclude variables declared inside input rings from the dropdown menu of reachable variables -* threads: automatically declare variadic upvars inside custom blocks when evaluating them -* threads: automatically declare upvars inside custom block input groups -* updated OOP library -* new "Declare & Initialize Script Variables" library -* updated dev version - -### 2024-09-06 -* API: new "theme" configuration key for "bright" or "dark" GUI theme -* updated pyret transpilation study with new "bright" theme configuration -* updated dev from master (pulled Polish translation update v10.0.7) -* updated dev version - -### 2024-09-05 -* blocks: auto-ringify variable getter reporters when they are dropped into the variable (name) slot of variable accessor commands -* blocks: support for setting (variadic) Boolean input slot defaults - -### 2024-09-03 -* gui, objects, blocks, byob: decoupled skeuomorphic/flat UI design from dark/bright UI theme -* German translation update for UI Looks -* updated dev version -* threads: reverted to ringified variable blobs as valid inputs for variable setters - -### 2024-09-02 -* lists: let list-based objects inherit variables from both other lists and also sprites and the stage, including from global variable scope - -### 2024-08-29 -* blocks: avoid errors when specifying default values for non-editable slots -* updated dev from master (pulled Catalan translation update v10.0.6) -* store: updated file version to 11-dev -* updated dev version - -### 2024-08-28 -* threads: added metaprogramming support for input groups -* updated dev version - -### 2024-08-27 -* blocks, threads: new localized "parent" selector for accessing list items, points to entry at ellipsis "..." -* byob: use slot numbers and support mnemonics for input groups -* updated dev version - -### 2024-08-26 -* new list-dictionary based object system with data scope and prototypical inheritance -* new OOP library -* updated dev version - -### 2024-08-20 -* new dev version diff --git a/HISTORY.md b/HISTORY.md index a58da392f..cf070cb9a 100755 --- a/HISTORY.md +++ b/HISTORY.md @@ -2,6 +2,172 @@ ## in development: +## 10.1.0: +* **New Features:** + 1. OOP 2.0 + * new list-dictionary based object system with data scope and Lieberman style prototypical inheritance + * new "parent" selector for accessing list items, points to entry at ellipsis "..." + * new "object" item in the THIS (runtime environment) primitive reporter's dropdown menu + * new OOP library + 2. support for input-groups in custom blocks + * new "group" option in custom block slot type editor's special settings menu for multiple inputs + * metaprogramming support for input groups (represented by a list of slot types) + * new "Declare & Initialize Script Variables" library + 3. UI Looks + * flat / default (skeuomorphic) design + * bright / dark (color) theme + * new "theme" configuration key in the API + * new "cube" and "cubeSolid" symbols + 4. Other + * new Continuations library for run/cc and call/cc +* **Notable Changes:** + * preserve the order of items when using lists as dictionaries or data objects + * variadic slots in custom blocks now support '%nl' as separators and expansion labels + * Boolean input slot default values can be specified through metaprogramming + * variadic Boolean input slot defaults can be specified both in the UI and through metaprogramming + * added an official "Restore primitives" item to the project menu, if a project / scene has customized prims + * default values and expansion labels of variadic input slots in custom blocks are now translatable by prefixing them with $-underscore +* **Notable Fixes:** + * exclude variables declared inside input rings from the dropdown menu of reachable variables + * automatically declare variadic upvars inside custom blocks when evaluating them + * fixed a LISP-encoding conflict between a variadic expression and formal ring parameters + * fixed naming a block to a JS property such as "constructor" + * fixed a variable refactoring (renaming) bug in custom block definitions +* **Documentation Updates:** + * updated API.md with new "theme" configuration key for "bright" or "dark" UI modes + * updated LISP syntax documentation for script parameters +* **Translation Updates:** + * German + +### 2024-09-11 +* blocks: fixed #3401 - naming a block "constructor" fails +* threads: removed explicit macros for data objects +* objects: fixed a variable refactoring (renaming) bug in custom block definitions +* prepared v10.1 release + +### 2024-09-10 +* threads: changed evaluation of input groups to return a 2D (or empty) list +* objects: adjusted LISP formulation of primitive IF block to the new input group evaluation +* byob: for input groups set "initial slots" to the length of the group +* libraries: adjusted variable declaration module to the new input group evaluation +* libraries: adjusted OOP module to the new input group evaluation +* html: adjusted obsolete "apple" meta tags for mobile sites +* reduced and re-activated pwa service worker +* reduced number of pwa-cached files +* added everything except libraries to pwa cache +* added everything except some libraries to pwa cache +* added Beetle and MQTT libraries to pwa cache +* added Tunescope library to pwa cache +* added SciSnap library to pwa cache +* removed SciSnap library from pwa cache (again) +* added SciSnap library to pwa cache (again), except for the costume js file +* new "Continuations" library +* updated "iteration / composition" library with new continuation blocks +* updated dev version +* v10.1-rc1 +* added skipWaiting() to service worker +* v10.1-rc2 + +### 2024-09-09 +* updated from master branch + +### 2024-09-18 +* blocks: fixed unevaluated slots for input groups +* updated OOP library +* updated dev version +* threads: added read-only access to global variables to unbound data objects + +### 2024-09-17 +* blocks, threads: new "object" item in the THIS (runtime environment) primitive reporter's dropdown menu +* updated German translation for "object" string +* updated dev version +* updated from master branch - fixed canvasBoundingBox() bug +* updated dev version + +### 2024-09-16 +* lists: preserve the order of items when using lists as dictionaries or data objects +* updated from master branch +* updated dev version + +### 2024-09-14 +* blocks, byob: made default values and expansion labels of variadic input slots in custom blocks translatable +* German translation update for "field" (in the OOP library) +* updated OOP library with German translation +* updated variable declaration library with German translation +* updated dev version + +### 2024-09-13 +* updated from master branch +* updated dev version +* updated OOP library: added "FIELD OF" reporter +* symbols: new "cube" and "cubeSolid" symbols + +### 2024-09-12 +* threads: fixed #3394 - LISP-encoding conflict between a variadic expression and formal ring parameters +* updated LISP syntax documentation for script parameters +* changed dev version to 10.1 +* updated dev version +* gui: added an official "Restore primitives" item to the project menu, if a project / scene has customized prims + +### 2024-09-11 +* threads: bind looked up variables inside objects to their receiver ("self") + +### 2024-09-10 +* threads: bind rings to object scope when INSERT / REPLACE -ing them into an object-list +* updated OOP library: added "ADD field" command +* updated dev version + +### 2024-09-09 +* blocks: disabled experimental change allowing dropping reporters into variable accessor input slots and auto-ringification +* blocks, morphic: exclude variables declared inside input rings from the dropdown menu of reachable variables +* threads: automatically declare variadic upvars inside custom blocks when evaluating them +* threads: automatically declare upvars inside custom block input groups +* updated OOP library +* new "Declare & Initialize Script Variables" library +* updated dev version + +### 2024-09-06 +* API: new "theme" configuration key for "bright" or "dark" GUI theme +* updated pyret transpilation study with new "bright" theme configuration +* updated dev from master (pulled Polish translation update v10.0.7) +* updated dev version + +### 2024-09-05 +* blocks: auto-ringify variable getter reporters when they are dropped into the variable (name) slot of variable accessor commands +* blocks: support for setting (variadic) Boolean input slot defaults + +### 2024-09-03 +* gui, objects, blocks, byob: decoupled skeuomorphic/flat UI design from dark/bright UI theme +* German translation update for UI Looks +* updated dev version +* threads: reverted to ringified variable blobs as valid inputs for variable setters + +### 2024-09-02 +* lists: let list-based objects inherit variables from both other lists and also sprites and the stage, including from global variable scope + +### 2024-08-29 +* blocks: avoid errors when specifying default values for non-editable slots +* updated dev from master (pulled Catalan translation update v10.0.6) +* store: updated file version to 11-dev +* updated dev version + +### 2024-08-28 +* threads: added metaprogramming support for input groups +* updated dev version + +### 2024-08-27 +* blocks, threads: new localized "parent" selector for accessing list items, points to entry at ellipsis "..." +* byob: use slot numbers and support mnemonics for input groups +* updated dev version + +### 2024-08-26 +* new list-dictionary based object system with data scope and prototypical inheritance +* new OOP library +* updated dev version + +### 2024-08-20 +* new dev version + ## 10.0.13: * **Notable Changes:** * disabled pwa service worker in yet an attempt to address reporterd Chrome v129 memory issue diff --git a/snap.html b/snap.html index e4c54523f..fcb84a267 100755 --- a/snap.html +++ b/snap.html @@ -18,9 +18,9 @@ - + - + diff --git a/src/gui.js b/src/gui.js index 377a1f495..aee164708 100644 --- a/src/gui.js +++ b/src/gui.js @@ -87,11 +87,11 @@ BlockVisibilityDialogMorph, ThreadManager, isString, SnapExtensions, snapEquals // Global stuff //////////////////////////////////////////////////////// -modules.gui = '2024-October-10'; +modules.gui = '2024-October-11'; // Declarations -var SnapVersion = '10.1-rc2'; +var SnapVersion = '10.1.0'; var IDE_Morph; var ProjectDialogMorph; diff --git a/src/objects.js b/src/objects.js index 33a874cae..131535040 100644 --- a/src/objects.js +++ b/src/objects.js @@ -96,7 +96,7 @@ CustomBlockDefinition, exportEmbroidery*/ /*jshint esversion: 11*/ -modules.objects = '2024-October-10'; +modules.objects = '2024-October-11'; var SpriteMorph; var StageMorph; @@ -4999,9 +4999,11 @@ SpriteMorph.prototype.renameVariable = function ( container, newWatcher, targets; function renameVariableInCustomBlock(definition) { - definition.scripts.forEach(eachScript => - eachScript.refactorVariable(oldName, newName) - ); + definition.scripts.forEach(eachScript => { + if (eachScript instanceof BlockMorph) { // skip comments + eachScript.refactorVariable(oldName, newName); + } + }); if (definition.body) { definition.body.expression.refactorVariable( oldName, diff --git a/sw.js b/sw.js index c4ed9c416..b68016207 100644 --- a/sw.js +++ b/sw.js @@ -1,6 +1,6 @@ /*global self, caches*/ /*jshint esversion: 6*/ -var snapVersion = '10.1-rc2', +var snapVersion = '10.1.0', cacheName = `snap-pwa-${snapVersion}`, filesToCache = [ 'snap.html',