Conversation
* refactor!: Deprecate `Block.getVars()` * fix: Fix import path * fix: Simplify test assertions
chore: Merge `main` into `v13` post-monorepo
* fix: Normalize Zelos connection indicators * feat: Add `IPathObject.updateReplacing()`
chore: Merge `main` into `v13`
* chore!: Update supported Node versions * fix: Remove references to not-yet-available Node 26 * chore: Revert formatting change
chore: Merge `main` into `v13`
…9593) * refactor!: Update dragging APIs. * fix: Fix bug that caused drags to always result in deletion * refactor: Clean up block drag handling with new API * chore: Format files * feat: Add an `isBoundedElement` type predicate * feat: Make `Bubble` implement `IBoundedElement` * fix: Fix jumping/scrolling when moving blocks * feat: Add a `KeyboardMover` * feat: Update the `BlockDragStrategy` to support constrained movement * feat: Register keyboard shortcuts to drive movement * feat: Display a move indicator on items that are being moved * fix: Reenable move hints * fix: Fix bugs that caused elements to be mispositioned by keyboard moves at non-default zoom levels * fix: Fix a bug that caused certain connections to be visited out of order * fix: Fix a bug that caused blocks to become disconnected during constrained moves * test: Add tests for keyboard-driven movement * chore: Add exports * chore: Run formatter * chore: Make the linter happy * chore: Update closure compiler * fix: Fix test suite on non-macOS * fix: Don't scroll in response to arrow keys while moving items * fix: Fix positioning of move indicator in RTL * refactor: Clarify return types of drag-start related methods * refactor: Make the `KeyboardMover` a singleton * fix: Fix import path * refactor: Remove `WorkspaceSvg.keyboardMoveInProgress` * fix: Fix tests * chore: Remove unused import * chore: Clean up comments and names * refactor: Make `IDraggable` extend `IBoundedElement` and `ISelectable` * chore: Rename test blocks file for move mode * refactor: Make block connection offset a constant * refactor: Export `KeyboardMover` class with a static instance * fix: Use Command and Control as modifiers for unconstrained move mode * fix: Fix test failures in CI * feat: Support allowlisting keyboard shortcuts for mid-move use
* refactor!: Move responsibility for block creation out of flyouts * chore: Clarify naming and documentation * fix: Make test less convoluted * refactor: Use serialization instead of zero-length drag to handle block clicks * fix: Fix undoing when dragging a block from the flyout * refactor: Make `getTargetBlock()` always return a value
* feat!: Allow using Blockly in web components/shadow DOM * test: Fix tests * chore: Add a playground to exercise web component support * fix: Remove JSDoc argument * chore: Format playground * fix: Hopefully fix tests in CI * fix: Improve test performance * fix: Fix test failure * fix: Allow changing the theme
* feat: Add keyboard shortcut to focus the workspace * test: Added tests for keyboard shortcut to focus workspace * fix: Disable the focus workspace shortcut while dragging
* feat: Move mode for stacks of blocks * lint; add tests * push to remote in order to switch devices (tests still failing) * fix tests * code review test updates
* chore: Make JSDom a peer/dev dependency on NodeJS only * chore: Bump closure compiler version
* feat: Beep when attempting constrained move on top-level block * chore: Remove errant `only` * refactor: Add and use `playErrorBeep()`
* fix: visit all connection candidates in move mode * fix: remove unused parameters from doc * fix: correct findTraversalCandidate doc * chore: simplify instance variables * fix: remove unreachable return
* feat: aria live region for announcements * fix: code review and add tests * fix: better suite name * chore: remove unused function * fix: code review changes * chore: add back ability to remove role
* refactor!: Merge `Marker`, `LineCursor` and `Navigator` * refactor!: Use the Navigator to traverse the toolbox and flyout. * feat: Register keyboard shortcuts for navigation * test: Fix and add tests * chore: Export `ToolboxNavigator` * chore: Make the linter happy * chore: Reorganize files * chore: Fix docstrings * chore: Fix variable names * fix: Focus the flyout on T for simple toolboxes * test: Add tests for focus toolbox shortcut * refactor: Remove `WorkspaceSvg.keyboardAccessibilityMode` * refactor: Simplify navigation logic * fix: Fix tests * chore: Normalize imports * fix: Fix bad merge resolution * fix: Fix docstrings * fix: Fix navigation down on blocks with a statement input and no next connection * fix: Be more defensive about navigating to connections * fix: Use FlyoutButton IDs as row IDs
This differs from the keyboard nav plugin but I think it's correct for an on-by-default world as it's very weird to encounter this toast on a touch device with and not helpful for mouse usage (e.g. in MakeCode's context menu).
* fix: remove redundant labels for child blocks of parent input * chore: make new argument optional
…lag (#9921) * chore: Format build_tasks.mjs * feat: Enable `assume_function_wrapper` build flag * refactor(build): Separate chunk exporter creation from compilation Since the chunk export files are source files to Closure Compiler, separate the creation of the former from the invocation of the latter. Specifically: - Rename writeChunkExportFiles to buildChunkExporters. - Invoked as a separate task in the minify series, instead of calling it directly from buildCompiled. - Revert the changes to buildCompiled that made it an async function just so it could call writeChunkExportFiles. * refactor(build): Use a separate property for each chunk's exports The existing code results in each chunk overwriting the same well-known property ($.__chunkExports__). Since these properties are only expected to be read once, in the same chunk's wrapper's factory function, this isn't strictly wrong - but it made understanding the minified bundles produced by PR #9912 a bit confusing. * cleanup(build): Minor naming improvements * docs(build): Improve JSDocs + inline comments Note that some comments have been deleted without replacement; these made statements which are no longer true. * cleanup(build): Reorder new chunk-exporters-related code Reorder the new code that generates the chunk exporters, to put it together with (but before) the code that generates the chunk wrappers, since the two are closely coupled. * fix(build): Rename chunk exporter's dir + filenames to "exporters" For consistency with code and docs, call the files that contain code which retrieves the chunks' export objects "chunk exporters", since "chunk exports" better describes the objects being exported. --------- Co-authored-by: Christopher Allen <cpcallen+git@google.com>
This supports e.g. expand/collapse icons added outside core Blockly.
MakeCode has an expand FieldImageNoText on collapsed blocks that wasn't
otherwise navigable (inserted into COLLAPSED_INPUT_NAME):
input.appendField(new FieldImageNoText(image, 24, 24, "Expand", () => {
this.setCollapsed(false)
}, false));
To support this:
1. the input that shares the block row id takes into account visibility
2. we drop the short circuit for collapsed blocks and rely on the filtering
already in place to filter out the collapsed content
Also filter icons whose updateCollapsed() hides them via display:none;
without this they remain in the candidate list and the navigator can
focus e.g. an invisible cog for a mutator workspace.
Add tests for icon visibility.
* fix: all use closest candidate when moving disconnected blocks * fix: update move commands in test
* fix: position dragging block above/below all blocks * fix: linting * chore: remove unnecessary argument
* fix: focus the workspace not the first block * fix: focus the workspace itself on first main workspace focus
chore: merge main into v13
* chore(docs): add ACR links to compliance page * chore(docs): use published versions of ACRs
mikeharv
approved these changes
Jun 11, 2026
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.
This PR merges the
v13branch intomainin preparation for release of v13 of blockly.It must be merged not squashed.