Skip to content

fix(scratch-vm): 拡張機能の HAT/EVENT ブロックを modern Blockly で帽子型に描画#748

Open
takaokouji wants to merge 1 commit into
developfrom
fix/extension-hat-shape-modern-blockly
Open

fix(scratch-vm): 拡張機能の HAT/EVENT ブロックを modern Blockly で帽子型に描画#748
takaokouji wants to merge 1 commit into
developfrom
fix/extension-hat-shape-modern-blockly

Conversation

@takaokouji

Copy link
Copy Markdown

Summary

拡張機能の HAT / EVENT ブロックが modern Blockly (scratch-blocks v2) で帽子型に描画されない不具合の修正。スモウルビー甲子園の「プレイヤー名を () にして、ゲームサーバーへ接続する」(koshien_connectGame) が平らな上端で表示されていた。micro:bit / 顔認識 / boost / ev3 などの when ... 拡張 HAT ブロックも同様に影響する一般的な不具合。

原因

modern Blockly はキャップ帽子型を block.hat === 'cap'(= shape_hat extension) のときだけ描画する。previousConnection が無いだけでは不十分(ADD_START_HATS は既定 false)。標準のイベントブロックは extensions: ['colours_event', 'shape_hat'] を宣言して帽子型になっているが、scratch-vm の拡張ブロック変換 (_convertBlockForScratchBlocks) は HAT/EVENT に shape_hat を付与していなかった。

Changes Made

  • src/engine/runtime.js: HAT/EVENT ブロックの blockJSON に shape_hat extension を付与(Smalruby マーカー付き)。アイコン付きブロックは scratch_extension と併存
  • マーカー一覧 (.claude/rules/scratch-vm/development.md) を更新

Test Coverage

  • test/unit/runtime_extension_hat_shape.js を追加:HAT/EVENT は shape_hat を持ち、COMMAND は持たない(= 帽子化しない)こと、アイコン付き HAT は両 extension を持つことを検証

Notes

upstream の modern-Blockly 移行に伴う一般的な不具合の修正のため、甲子園の各 PR とは独立。

…Blockly

Extension hat blocks (koshien connect_game, micro:bit / face-sensing / boost /
ev3 "when ..." blocks, etc.) rendered with a flat top instead of the cap-hat
shape. In modern Blockly (scratch-blocks v2) the cap hat is only drawn when a
block carries the `shape_hat` extension (which sets block.hat = 'cap'); a
missing previousConnection alone is no longer enough because ADD_START_HATS
defaults to false. The built-in event blocks declare
extensions: ['colours_event', 'shape_hat'], so _convertBlockForScratchBlocks
now adds 'shape_hat' to extension HAT/EVENT blocks the same way.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown

@takaokouji

Copy link
Copy Markdown
Author

upstream の https://scratch.mit.edu/projects/editor/ で確認。
以下のスクリーンショットのように Hat 型になっていた。
SS 2026-06-28 10 24 53

あらためて、 upstream との違いを確認して、修正方針が正しいかどうかを検証してください。
smalruby 独自の修正ではなく、今後の upstream とのマージを想定して、 upstream の修正と同じように smalruby を修正することを期待します。

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.

1 participant