Skip to content

release: merge v13 into main#9979

Merged
maribethb merged 214 commits into
mainfrom
v13
Jun 11, 2026
Merged

release: merge v13 into main#9979
maribethb merged 214 commits into
mainfrom
v13

Conversation

@maribethb

Copy link
Copy Markdown
Contributor

This PR merges the v13 branch into main in preparation for release of v13 of blockly.

It must be merged not squashed.

gonfunko and others added 30 commits December 22, 2025 13:11
* 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!: Update supported Node versions

* fix: Remove references to not-yet-available Node 26

* chore: Revert formatting change
…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
rachel-fenichel and others added 21 commits May 29, 2026 16:21
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
@maribethb maribethb requested a review from a team as a code owner June 11, 2026 19:48
@maribethb maribethb requested a review from gonfunko June 11, 2026 19:48
@maribethb maribethb requested a review from mikeharv June 11, 2026 19:48
@maribethb maribethb enabled auto-merge June 11, 2026 19:49
@maribethb maribethb disabled auto-merge June 11, 2026 19:49
@maribethb maribethb merged commit 44cc057 into main Jun 11, 2026
10 checks passed
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