feat: upstream merge 2026-03 (146 commits)#238
Merged
takaokouji merged 156 commits intodevelopfrom Mar 8, 2026
Merged
Conversation
* fix: run stacks in response to stack click events * refactor: listen for regular click events to run block stacks
…extensions toolbox categories (#2)
* fix: handle modern workspace comment events * fix: correctly access coordinates on events
* chore: format runtime.js * fix: add the hat extension to extension hat blocks
… occupied by a shadow block (#8) * chore: format engine/blocks.js * fix: restore shadow blocks when removing a block from an input
…locks getting into a bad state (#9)
The playgrounds themselves are still broken, but it's a step...
…ty with patched scratch-blocks (#1)
* fix: add support for Scratch-style procedures * refactor: remove underscore procedure creation callback
…toolbox categories (#9)
BREAKING CHANGE: Updating to `scratch-blocks@^2` and Blockly v12 brings significant changes to the document structure and build system. Most applications depending on `scratch-gui` will likely still work, but it's possible that some of these changes will be disruptive to more sensitive applications. It's also possible, maybe likely, to affect any tests that interact with the blocks workspace or wrappers around it.
Spork: unfork Blockly
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…ion#459) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…y-pages-with-retry Retry GH Pages action in case of commit race
…ate/eslint-config-scratch-13.x style(deps): update dependency eslint-config-scratch to v13.0.2
…oundation#460) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Merged 146 commits from upstream develop branch. Notable changes: scratch-blocks v2.0.0 (spork), release 13.0.0, eslint-config-scratch 13.x with import-x migration. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Fix colorMode destructuring in blocks.jsx (used by CustomProcedures) - Add redux to import-x/no-unresolved ignore (peer dependency) - Export blockDisplayInitialState alias from block-display reducer - Update import/core-modules to import-x/core-modules Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
These were peer dependencies that are now needed as direct deps after the upstream migration to scratch-blocks v2.0.0. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
🚀 Preview deployed: https://smalruby.jp/smalruby3-editor/feat/upstream-merge-2026-03/ |
- Change `import Blockly from` to `import * as Blockly from` for scratch-blocks (v2 has no default export) - Update `Blockly.utils.genUid()` to `Blockly.utils.idGenerator.genUid()` - Update `Blockly.NAME_TYPE` to `Blockly.Names.NameType` - Add scratch-blocks to Jest transformIgnorePatterns and transform rules for .mjs file support Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Update color-modes test to use __mocks__ files instead of inline mocks (aligns with upstream's approach using colourPrimary naming) - Update empty-block-selection test to check toolboxitemid attributes - Update monitor test snapshots for new color mode mock data - Fix NAME_TYPE → Names.NameType in generator.js Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- palette-toggle: Use ".blocklyToolbox" selector (was ".blocklyToolboxDiv" in v1) - localization: Use clickBlocksCategory for category clicks (v2 changed click targets) - block-display-modal: Use clickBlocksCategory for Looks category clicks Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The junit reporter was causing tap to exit with code 1 despite all tests passing. This also masked real failures by hiding coverage threshold errors. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The test used setTimeout for timing intervals between fireEvent calls, which was unreliable in CI. Now mocks both Date.now() and new Date() to control timestamps deterministically. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
github-actions bot
pushed a commit
that referenced
this pull request
Mar 8, 2026
…-merge-2026-03 feat: upstream merge 2026-03 (146 commits)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Merged 146 commits from upstream scratch-editor
developbranch.Upstream Commit Range:
5f063605b..42ea88275Major Upstream Changes
chore(release): 13.0.0- Major version bumpfix(deps)!: update scratch-blocks to v2.0.0(via "spork" branch)style(deps): update eslint-config-scratch to v13.0.5(eslint-plugin-import → import-x)fix(deps): update dependency immutable to v3.8.3[security]fix: don't try to load sounds in 'Make a Block' dialogConflicts Resolved
Known Conflicts
package-lock.json- Regenerated with npm install*/package.json(5 packages) - Kept @smalruby naming, bumped to 13.0.0Unexpected Conflicts
.github/workflows/ci.yml- Kept deletion (Smalruby uses own CI)eslint.config.mjs- Kept Smalruby additions, migrated import→import-xblocks.jsx- Kept Smalruby Ruby tab logic, updated ScratchBlocks v2.0 API callsblocks*.test.js- Imported bothuntilandscopeForFlyoutBlocklocalization.test.js- Kept Japanese locale testScratchBlocks v2.0.0 API Migration
ScratchBlocks.prompt→ScratchBlocks.dialog.setPrompt()ScratchBlocks.statusButtonCallback→ScratchBlocks.StatusIndicatorLabel.statusButtonCallbackScratchBlocks.Xml.textToDom→ScratchBlocks.utils.xml.textToDomScratchBlocks.Xml.clearWorkspaceAndLoadFromXml→ScratchBlocks.clearWorkspaceAndLoadFromXmlthis.workspace.reportValue()→this.ScratchBlocks.reportValue()Post-Merge Fixes
react,react-dom,reduxas direct dependencies (were peer deps only)blockDisplayInitialStateexport alias to block-display reducercolorModedestructuring in blocks.jsximport/core-modules→import-x/core-modulesin ESLint configpalette-toggle.test.js: CSS selector.blocklyToolboxDiv→.blocklyToolbox(scratch-blocks v2 rename)localization.test.js:clickText('調べる')→clickBlocksCategory('調べる')(v2 DOM interception)mesh_service_v2_integration.js: deterministic Date mocking to eliminate CI timing flakinessTAP_REPORTER=junitfrom CI (was masking test failures)Test Results
Manual Verification (Playwright MCP)
CI Results
Documentation
Merge documentation:
notes/upstream/merge-2026-03/Manual Testing Checklist
Before merging this PR, verify:
🤖 Generated with
/upstream:mergecommand