All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog.
- Using
yargs
npm package to parse command-line options instead of homegrown functionality (no more uglyonly=
) - Extensions are now bundled / served explicilty (based on the
--include
/-i
flag) instead of all being included by default- I.e.
npm run dev
now REQUIRES the--include
/-i
flag to be provided to indicate which extension(s) to bundle & serve- e.g.
npm run dev -- --include myAwesomeExtension
ornpm run dev -- -i myAwesomeExtension
- e.g.
- I.e.
- Based on input / work from @sanjaiyan-dev, now bundle all extensions concurrently
- This was previously avoided, since it could lead to out of memory issues (since
npm run dev
was bundling all extensions by default). Now that extension bundling is more explicit, this is is less of a concern, and extensions are bundled concurrently by default - Concurrent bundling can be opted-out-of (as is the case for the github action the bundles all extensions) by setting the
--parrallel
/-p
flag tofalse
- e.g.
npm run dev -- --include all -p false
- e.g.
- This was previously avoided, since it could lead to out of memory issues (since
- Custom Argument UI now support updating the value of the argument whenever it's
setter
is called (instead of having to explicitly click "Apply")- This is a lot more intuitive and really how it should've been implemented from the beginning (it just didn't occur to me how) -- these changes also bring some serious cleanup and simplification of the custom argument code to hopefully make maintenance easier in the future
- In the process of implemeting this, we were able to remove the need for any changes to the
scratch-vm
to make custom arguments work - BREAKING CHANGE: If you're a developer who uses custom arguments in their extension, you will have to change how you specify the
component
to associate with your custom argument. Instead of specifying the name of the svelte file to load (in a string), you'll actually now import the svelte component directly:- Before:
arg: self.makeCustomArgument({ component: "MyArgUI", initial: { value: { a: 10, b: "Hello world", c: false }, text: "[10, Hello world, false]", } }),
- Now:
// At top of file import MyArgUI from "./MyArgUI.svelte" // Within block definition arg: self.makeCustomArgument({ component: MyArgUI, initial: { value: { a: 10, b: "Hello world", c: false }, text: "[10, Hello world, false]", } }),
- Support for changing the color of blocks. (docs coming soon -- ping @pmalacho-mit if you need 'em and can't find em)
- Support for inline image arguments. See docs
- Support for indicators (docs coming soon -- ping @pmalacho-mit if you need 'em and can't find em))
- Support for accessing block's ID form
BlockUtility
. See docs - Ability to tag extensions to control how they are sorted in the extensions menu: See docs
- Teachable machine extension is now a
configurable
extension (as opposed to ageneric
extension (the old way of doing things))
- Info about an extension (e.g. its
id
,name
, andblockIconURI
) are now loaded via an external.js
file instead of being 'filled in' at bundle-time (which was error prone)- Scratch VM Change: changes are implemented in bundle-loader.js to load this file in and utilize when retrieving an Extension's constructor
- Video mixin: Ability for extensions to enable video feed and set transparency
- Available as
"video"
addon
- Available as
- Drawable mixin: Ability for extensions to draw arbitrary images onto the stage
- Available as
"drawable
" addon
- Available as
- Add Costumes mixin: Ability for extensions to add and set costumes for sprites
- Available as
"addCostumes"
addon - Scratch VM Change: Added
addCostime
function ontoruntime
to allow for utilizing theloadCostume
function ofscratch-vm/src/import/load-costume.js
- Available as
- Block mixins
- Toggle video: Ability for extensions to include a toggle video block to set the state of the video feed
- Available as
"toggleVideoBlock"
addon
- Available as
- Video transparency: Ability for extensions to include a set transparency block to set how see-through the video feed is
- Available as
"setTransparencyBlock"
addon
- Available as
- Toggle video: Ability for extensions to include a toggle video block to set the state of the video feed
- Legacy Support mixin: Legacy support available as a mixin (in addition / instead of as a class decorator)
- Available as "legacySupport"
- Selfie Segmentation extension:
- Guidance on developing on windows
- Vs Code setting to use this project's typescript version instead of Vs Code's
- Limited the potential for endless bundling loops
- Now bundles are only re-generated when a file with a
.ts
,.svelte
,.png
, and/or.svg
extension is changed - NOTE: The above 'watched' file extensions can / should grow overtime
- Now bundles are only re-generated when a file with a
- Corrected Extension Probe runtime errors
- Extension's
init
function now supports be implemented asasync
- Scratch VM Change: extension-manager now
await
s thetryInitExtension
function from the bundle-loader - Tests update to support
- Scratch VM Change: extension-manager now
- The prescribed workflow for legacy support now uses the Legacy Support mixin (instead of the Legacy Extension class decorator)
- Typescript version set to the
latest
- New way to express dependencies within mixin architecture
As best as possible, we should keep track of when changes are committed that change the packages/scratch-vm
source and thus cause our repo to diverge (further) from LLK's scratch-vm
As best as possible, we should keep track of when changes are committed that change the packages/scratch-gui
source and thus cause our repo to diverge (further) from LLK's scratch-gui