Skip to content

feat: upstream merge 2026-03 (146 commits)#238

Merged
takaokouji merged 156 commits intodevelopfrom
feat/upstream-merge-2026-03
Mar 8, 2026
Merged

feat: upstream merge 2026-03 (146 commits)#238
takaokouji merged 156 commits intodevelopfrom
feat/upstream-merge-2026-03

Conversation

@takaokouji
Copy link

@takaokouji takaokouji commented Mar 8, 2026

Summary

Merged 146 commits from upstream scratch-editor develop branch.

Upstream Commit Range: 5f063605b..42ea88275

Major Upstream Changes

  • chore(release): 13.0.0 - Major version bump
  • fix(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' dialog
  • Various dependency updates (webpack, npm, terser, etc.)

Conflicts Resolved

Known Conflicts

  • package-lock.json - Regenerated with npm install
  • */package.json (5 packages) - Kept @smalruby naming, bumped to 13.0.0

Unexpected Conflicts

  • .github/workflows/ci.yml - Kept deletion (Smalruby uses own CI)
  • eslint.config.mjs - Kept Smalruby additions, migrated import→import-x
  • blocks.jsx - Kept Smalruby Ruby tab logic, updated ScratchBlocks v2.0 API calls
  • blocks*.test.js - Imported both until and scopeForFlyoutBlock
  • localization.test.js - Kept Japanese locale test
  • ✅ Color-mode mock files - Accepted upstream (restored deleted files)

ScratchBlocks v2.0.0 API Migration

  • ScratchBlocks.promptScratchBlocks.dialog.setPrompt()
  • ScratchBlocks.statusButtonCallbackScratchBlocks.StatusIndicatorLabel.statusButtonCallback
  • ScratchBlocks.Xml.textToDomScratchBlocks.utils.xml.textToDom
  • ScratchBlocks.Xml.clearWorkspaceAndLoadFromXmlScratchBlocks.clearWorkspaceAndLoadFromXml
  • this.workspace.reportValue()this.ScratchBlocks.reportValue()

Post-Merge Fixes

  • Added react, react-dom, redux as direct dependencies (were peer deps only)
  • Added blockDisplayInitialState export alias to block-display reducer
  • Fixed colorMode destructuring in blocks.jsx
  • Updated import/core-modulesimport-x/core-modules in ESLint config
  • Fixed palette-toggle.test.js: CSS selector .blocklyToolboxDiv.blocklyToolbox (scratch-blocks v2 rename)
  • Fixed localization.test.js: clickText('調べる')clickBlocksCategory('調べる') (v2 DOM interception)
  • Fixed mesh_service_v2_integration.js: deterministic Date mocking to eliminate CI timing flakiness
  • Removed TAP_REPORTER=junit from CI (was masking test failures)

Test Results

  • ✅ Linting passed (3 pre-existing warnings)
  • ✅ Dev build succeeded
  • ✅ Unit tests passed (CI)
  • ✅ Integration tests passed (CI: gui + vm)
  • ✅ Production build & deploy succeeded (CI)

Manual Verification (Playwright MCP)

Feature Status
Page load (0 console errors)
Block categories (Japanese locale) ✅ 全9カテゴリ表示
Settings menu (言語, カラーモード, ルビー, ブロック表示)
File menu (Google Drive: 読み込む, 直ちに保存, コピーを保存)
Edit menu
Ruby tab (Monaco editor, toolbar, furigana)
Gemini modal (スモウルビー先生)
Extension library (all 11 extensions including Mesh v2)

CI Results

  • ✅ lint-and-unit-test
  • ✅ integration-test-gui
  • ✅ integration-test-vm
  • ✅ build-and-deploy
  • ⚠️ Lint commit messages (expected: upstream commits exceed 100 char header limit)

Documentation

Merge documentation: notes/upstream/merge-2026-03/

Manual Testing Checklist

Before merging this PR, verify:

  • Ruby code editor loads correctly
  • Ruby-to-blocks conversion works
  • Google Drive integration works (menu items present)
  • Custom extensions load (microbitMore, Koshien, Mesh v2)
  • Block Display modal filters correctly
  • No console errors

🤖 Generated with /upstream:merge command

gonfunko and others added 30 commits February 19, 2025 16:25
* fix: run stacks in response to stack click events

* refactor: listen for regular click events to run block stacks
* 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
The playgrounds themselves are still broken, but it's a step...
* fix: add support for Scratch-style procedures

* refactor: remove underscore procedure creation callback
cwillisf and others added 20 commits March 4, 2026 15:31
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.
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>
@github-actions
Copy link

github-actions bot commented Mar 8, 2026

takaokouji and others added 5 commits March 8, 2026 18:32
- 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>
@takaokouji takaokouji merged commit 976e4c4 into develop Mar 8, 2026
4 of 5 checks passed
@takaokouji takaokouji deleted the feat/upstream-merge-2026-03 branch March 8, 2026 10:48
github-actions bot pushed a commit that referenced this pull request Mar 8, 2026
…-merge-2026-03

feat: upstream merge 2026-03 (146 commits)
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.

9 participants