Skip to content

Make scratch-blocks depend on Blockly rather than forking it#3338

Draft
cwillisf wants to merge 177 commits intodevelopfrom
spork
Draft

Make scratch-blocks depend on Blockly rather than forking it#3338
cwillisf wants to merge 177 commits intodevelopfrom
spork

Conversation

@cwillisf
Copy link
Contributor

Proposed Changes

Before: scratch-blocks is a heavily modified fork of a very old version of Blockly

After: scratch-blocks lists a very recent official, unmodified version of Blockly (v12 beta) as one of its dependencies

Reason for Changes

We can use new Blockly features!
We can more easily maintain scratch-blocks!
We can keep up to date with new Blockly releases!
We can hang with the cool kids at Blockly-related parties!

Test Coverage

We should really add tests to this repo, but tests in scratch-vm and scratch-gui cover this functionality somewhat.

Thank you!

Big thanks to @BeksOmega, @gonfunko, @mmathrani, @rachel-fenichel, and everyone else who helped make this happen!

gonfunko and others added 30 commits April 12, 2024 09:36
refactor: Bootstrap scratch-blocks based on Blockly 10.
* fix: readd the operator blocks and dependencies

* fix: only import core Blockly blocks_common/math.js

Co-authored-by: Beka Westberg <[email protected]>

* fix: only import core Blockly in vertical_extensions.js

---------

Co-authored-by: Beka Westberg <[email protected]>
* fix: readd the motion blocks

* fix: use the colours_motion extension instead of hardcoding colors
* fix: readd the event blocks

* fix: only import core Blockly
* fix: readd the sound blocks

* chore: remove vestigial sound_sounds_menu implementation
* fix: readd the data blocks

* fix: import constants correctly
* fix: load CSS and fix up UI appearance

* fix: fix size of flyout section header labels
* refactor: move procedures.js into src

* fix: add support for Scratch-style procedures

* chore: remove errant logging

* refactor: remove underscore from exported callback attribute
* fix: modernize and reenable the colour slider field

* refactor: clean up FieldColourSlider

* refactor: extend the FieldColour Blockly plugin

* refactor: remove redundant setting of colour on source block
* fix: reenable support for checkboxes in the flyout

* refactor: use a map instead of an object for storing checkboxes

* chore: remove debugging code

* refactor: improve variable names for checkbox position

* chore: fix line wrapping indentation

* refactor: don't store checkbox wrapper objects on blocks
* fix: reenable the vertical separator field

* refactor: clean up field_vertical_separator.js
cwillisf and others added 3 commits August 26, 2025 14:27
# [2.0.0-spork.5](v2.0.0-spork.4...v2.0.0-spork.5) (2025-08-26)

### Bug Fixes

* **deps:** use blockly 12.3 beta ([76981e1](76981e1))
* fix bug that could cause the wrong toolbox category to appear selected ([#232](#232)) ([ec918e2](ec918e2))
* fix bug that could clear the values of procedure block caller arguments ([#247](#247)) ([611e440](611e440))
* fix bug that prevented moving block comments ([#248](#248)) ([dc17159](dc17159))
* fix deserialization of local/cloud variables ([#245](#245)) ([09bb237](09bb237))
* fix ephemeral focus handling for `FieldAngle` and `FieldNote` ([#244](#244)) ([8b758db](8b758db))
* fix positioning of block comments in RTL mode ([#249](#249)) ([9f1da96](9f1da96))
* improve styling, especially in high contrast mode ([#246](#246)) ([abd9a40](abd9a40))
* make Duplicate context menu item duplicate subsequent blocks ([#250](#250)) ([3a43e6b](3a43e6b))
* make insertion markers reflect the actual size of the block ([#251](#251)) ([c824cc1](c824cc1))
* prevent toolbox categories from becoming unselected ([#233](#233)) ([af66069](af66069))
renovate bot and others added 26 commits December 10, 2025 10:04
…p-node-6.x

chore(deps): update actions/setup-node action to v6
…kout-6.x

chore(deps): update actions/checkout action to v6
Part 1 of a multi-part "merge from develop"
Part 2 of a multi-part "merge from develop"
# [2.0.0-spork.6](v2.0.0-spork.5...v2.0.0-spork.6) (2025-12-23)

### Bug Fixes

* "is online?" -> "online?" ([3f224b3](3f224b3))
* **deps:** lock file maintenance ([ed86aac](ed86aac))
* **deps:** lock file maintenance ([885fcbc](885fcbc))
* **deps:** lock file maintenance ([6145375](6145375))
* **deps:** lock file maintenance ([809da8d](809da8d))
* **deps:** lock file maintenance ([d5d5674](d5d5674))
* **deps:** lock file maintenance ([018ecfd](018ecfd))
* **deps:** lock file maintenance ([d4630fa](d4630fa))
* **deps:** lock file maintenance ([0572819](0572819))
* **deps:** lock file maintenance ([25c0284](25c0284))
* **deps:** lock file maintenance ([f0ea94c](f0ea94c))
* **deps:** lock file maintenance ([9a36ff2](9a36ff2))
* **deps:** lock file maintenance ([3da1368](3da1368))
* **deps:** lock file maintenance ([1a47501](1a47501))
* **deps:** lock file maintenance ([21825fc](21825fc))
* **deps:** lock file maintenance ([e9e6319](e9e6319))
* **deps:** lock file maintenance ([bad7b59](bad7b59))
* **deps:** lock file maintenance ([5b6ca5b](5b6ca5b))
* **deps:** lock file maintenance ([4d60857](4d60857))
* **deps:** lock file maintenance ([22a03ed](22a03ed))
* **deps:** lock file maintenance ([98e313b](98e313b))
* **deps:** lock file maintenance ([326fcbe](326fcbe))
* **deps:** lock file maintenance ([7fdd948](7fdd948))
* **deps:** lock file maintenance ([3a65ff1](3a65ff1))
* **deps:** lock file maintenance ([926ed34](926ed34))
* **deps:** lock file maintenance ([a367a58](a367a58))
* **deps:** lock file maintenance ([2e3a31e](2e3a31e))
* **deps:** lock file maintenance ([f03ec32](f03ec32))
* **deps:** lock file maintenance ([ce2d072](ce2d072))
* **deps:** lock file maintenance ([634c1f9](634c1f9))
* **deps:** lock file maintenance ([24e1180](24e1180))
* **deps:** lock file maintenance ([91b2386](91b2386))
* **deps:** lock file maintenance ([9a13c39](9a13c39))
* **deps:** lock file maintenance ([69ed11b](69ed11b))
* **deps:** lock file maintenance ([d12aa91](d12aa91))
* **deps:** lock file maintenance ([c6abb84](c6abb84))
* **deps:** lock file maintenance ([69e6333](69e6333))
* **deps:** lock file maintenance ([996605a](996605a))
* **deps:** lock file maintenance ([1d9beda](1d9beda))
* **deps:** lock file maintenance ([bb064ef](bb064ef))
* **deps:** lock file maintenance ([986bc7c](986bc7c))
* **deps:** lock file maintenance ([fa93b04](fa93b04))
* **deps:** lock file maintenance ([7a655b9](7a655b9))
* **deps:** lock file maintenance ([cddf23d](cddf23d))
* **deps:** lock file maintenance ([180a044](180a044))
* **deps:** lock file maintenance ([375b029](375b029))
* **deps:** lock file maintenance ([ce43bcc](ce43bcc))
* **deps:** lock file maintenance ([6129e79](6129e79))
* **deps:** lock file maintenance ([fb9bcd3](fb9bcd3))
* **deps:** lock file maintenance ([5b3a8a0](5b3a8a0))
* **deps:** lock file maintenance ([ce83755](ce83755))
* **deps:** lock file maintenance ([be830ee](be830ee))
* **deps:** lock file maintenance ([a8f28ce](a8f28ce))
* **deps:** lock file maintenance ([e6c655f](e6c655f))
* **deps:** lock file maintenance ([e30b2ef](e30b2ef))
* **deps:** lock file maintenance ([f3a29bc](f3a29bc))
* **deps:** lock file maintenance ([38143d4](38143d4))
* **deps:** lock file maintenance ([631abb4](631abb4))
* **deps:** lock file maintenance ([ce36722](ce36722))
* **deps:** lock file maintenance ([0cbcafe](0cbcafe))
* **deps:** lock file maintenance ([0df4a92](0df4a92))
* **deps:** lock file maintenance ([9ac5f7e](9ac5f7e))
* **deps:** lock file maintenance ([5edd55a](5edd55a))
* **deps:** lock file maintenance ([23a43ad](23a43ad))
* **deps:** lock file maintenance ([3db2383](3db2383))
* **deps:** lock file maintenance ([2815ed3](2815ed3))
* **deps:** lock file maintenance ([aaf644e](aaf644e))
* **deps:** lock file maintenance ([565090d](565090d))
* **deps:** lock file maintenance ([bf1fa9e](bf1fa9e))
* **deps:** lock file maintenance ([8cd9f3a](8cd9f3a))
* **deps:** lock file maintenance ([be9ae67](be9ae67))
* **deps:** lock file maintenance ([985a48b](985a48b))
* **deps:** lock file maintenance ([ef90c4e](ef90c4e))
* **deps:** lock file maintenance ([47e0476](47e0476))
* **deps:** lock file maintenance ([3cf914e](3cf914e))
* **deps:** lock file maintenance ([ca1a438](ca1a438))
* **deps:** lock file maintenance ([5d0b1a5](5d0b1a5))
* **deps:** lock file maintenance ([c930edc](c930edc))
* **deps:** lock file maintenance ([abb2527](abb2527))
* **deps:** lock file maintenance ([f625559](f625559))
* **deps:** lock file maintenance ([f1d96ea](f1d96ea))
* **deps:** lock file maintenance ([2753283](2753283))
* **deps:** lock file maintenance ([fe3699a](fe3699a))
* **deps:** lock file maintenance ([9be316e](9be316e))
* **deps:** lock file maintenance ([bd6c9df](bd6c9df))
* **deps:** lock file maintenance ([e17d972](e17d972))
* **deps:** lock file maintenance ([52db517](52db517))
* **deps:** lock file maintenance ([f030d5b](f030d5b))
* **deps:** lock file maintenance ([54c4908](54c4908))
* **deps:** lock file maintenance ([bdd5b4b](bdd5b4b))
* **deps:** lock file maintenance ([cd618ca](cd618ca))
* **deps:** lock file maintenance ([f1fb6fe](f1fb6fe))
* **deps:** lock file maintenance ([bc49026](bc49026))
* **deps:** lock file maintenance ([4525909](4525909))
* **deps:** lock file maintenance ([e27ae83](e27ae83))
* **deps:** lock file maintenance ([91a713d](91a713d))
* **deps:** lock file maintenance ([727018c](727018c))
* **deps:** lock file maintenance ([f9ac21f](f9ac21f))
* **deps:** lock file maintenance ([c714bb7](c714bb7))
* **deps:** lock file maintenance ([b194ad6](b194ad6))
* **deps:** lock file maintenance ([cce9512](cce9512))
* **deps:** lock file maintenance ([770836c](770836c))
* **deps:** lock file maintenance ([dae0421](dae0421))
* **deps:** lock file maintenance ([48c13fb](48c13fb))
* **deps:** lock file maintenance ([8ef6fe7](8ef6fe7))
* **deps:** lock file maintenance ([3f80f13](3f80f13))
* **deps:** lock file maintenance ([5b5e9f9](5b5e9f9))
* **deps:** lock file maintenance ([2ea5191](2ea5191))
* **deps:** lock file maintenance ([7fab9d8](7fab9d8))
* **deps:** lock file maintenance ([0eda647](0eda647))
* **deps:** lock file maintenance ([80396c8](80396c8))
* **deps:** lock file maintenance ([4918868](4918868))
* **deps:** lock file maintenance ([4c1855a](4c1855a))
* **deps:** lock file maintenance ([4723caf](4723caf))
* **deps:** lock file maintenance ([8302b44](8302b44))
* **deps:** lock file maintenance ([d071017](d071017))
* **deps:** lock file maintenance ([ef80dd2](ef80dd2))
* **deps:** lock file maintenance ([9e03aaf](9e03aaf))
* **deps:** lock file maintenance ([f5b691b](f5b691b))
* **deps:** lock file maintenance ([6411381](6411381))
* **deps:** lock file maintenance ([0f2cd62](0f2cd62))
* **deps:** lock file maintenance ([adbebde](adbebde))
* **deps:** lock file maintenance ([d475996](d475996))
* **deps:** lock file maintenance ([3fd3eac](3fd3eac))
* **deps:** lock file maintenance ([b281476](b281476))
* **deps:** lock file maintenance ([d2c940b](d2c940b))
* **deps:** lock file maintenance ([794875e](794875e))
* **deps:** lock file maintenance ([c1fa17e](c1fa17e))
* **deps:** lock file maintenance ([dc610ea](dc610ea))
* **deps:** lock file maintenance ([d3c7783](d3c7783))
* **deps:** lock file maintenance ([44bf8ca](44bf8ca))
* **deps:** lock file maintenance ([a00fa5c](a00fa5c))
* **deps:** lock file maintenance ([8969200](8969200))
* **deps:** lock file maintenance ([fc6e93a](fc6e93a))
* **deps:** lock file maintenance ([3991624](3991624))
* **deps:** lock file maintenance ([5e1bad7](5e1bad7))
* **deps:** lock file maintenance ([c9f8fef](c9f8fef))
* **deps:** lock file maintenance ([070162c](070162c))
* **deps:** lock file maintenance ([575802a](575802a))
* **deps:** lock file maintenance ([94ddb2e](94ddb2e))
* **deps:** lock file maintenance ([92de01a](92de01a))
* **deps:** lock file maintenance ([c7f13ab](c7f13ab))
* **deps:** lock file maintenance ([4572779](4572779))
* **deps:** lock file maintenance ([2424cf2](2424cf2))
* **deps:** lock file maintenance ([ccb2eda](ccb2eda))
* **deps:** lock file maintenance ([09e252f](09e252f))
* **deps:** lock file maintenance ([4f41a8a](4f41a8a))
* **deps:** update dependency scratch-semantic-release-config to v1.0.16 ([170f890](170f890))
* seed sensing_online translations ([00da004](00da004))
* update translations ([678fdca](678fdca))

### Features

* sensing_online ([6a39b7b](6a39b7b))
…evelop

Re-implement cat block rendering in Blockly v12 terms
# [2.0.0-spork.7](v2.0.0-spork.6...v2.0.0-spork.7) (2026-02-02)

### Bug Fixes

* address minor feedback from automated review ([9971b64](9971b64))
* some silly issues and a rename ([acfb3e6](acfb3e6))
* use browserEvents.bind instead of direct binding ([b2a5d2c](b2a5d2c))
* use getters to dynamically update svg block constants ([4bd9618](4bd9618))

### Features

* abstract away some of the cat-blocks implementation logic ([c44cb57](c44cb57))
* add comment ([c88ca72](c88ca72))
* make cat-blocks code configurable behind a flag ([45a93bb](45a93bb))
fix: allow Scratch-style zoom controls as separate SVGs
# [2.0.0-spork.8](v2.0.0-spork.7...v2.0.0-spork.8) (2026-02-27)

### Bug Fixes

* allow Scratch-style zoom controls as separate SVGs ([99a40ab](99a40ab))
* **deps:** update Blockly to 12.4.1 and update its plugins ([f2e698a](f2e698a))
* make input connection highlight larger to ensure it's distinct from the input itself ([0a946b9](0a946b9))
* prefer input shape for connection hints ([e161897](e161897))
* show non-Boolean connection hints ([d4a9ff5](d4a9ff5))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants