Repository navigation
Releases: RaspberryPiFoundation/blockly
Releases Β· RaspberryPiFoundation/blockly
Release list
blockly-v13.3.0
What's Changed
New features β¨
- feat: add toolbox and flyout navigation to the optional jump shortcuts by @MannXo in #10215
- feat: Relax access restrictions on
BlockDragStrategyby @gonfunko in #10273 - feat: Add optional shortcuts for scrolling workspace by @mikeharv in #10293
- feat: Allow unsetting a custom tooltip by @gonfunko in #10385
- feat(workspace-search): Add screen reader support by @mikeharv in #10316
- feat: generate API docs with TypeDoc by @zspriggs in #10398
- feat(workspace-search): UI Improvements by @mikeharv in #10391
- feat: build reference docs from latest release by @zspriggs in #10418
Bug fixes π
- fix: Fix bug that could cause renders to clobber the undo stack by @gonfunko in #10227
- fix: Improve performance of
WorkspaceSvg.getNestedTrees()by @gonfunko in #10236 - fix: keep tall field corners inside round caps with zelos by @mikeharv in #10214
- fix: wrong css prop by @SimonShiki in #10257
- fix: restore focus on toast dismiss by @mikeharv in #10260
- fix: Clamp transforms to sensible levels of precision by @gonfunko in #10268
- fix: drop IFocusableNode from trash and zoom by @mikeharv in #10272
- fix: add comma to block labels except on Apple devices by @mikeharv in #10279
- fix: Make IDs of comment bar buttons consistent by @gonfunko in #10280
- fix: Fix bug that could cause dragged blocks to connect to and delete others by @gonfunko in #10285
- fix: Fix a bug that could cause unexpected block movement when inserting blocks from the toolbox by @gonfunko in #10289
- fix: Make reverting block drags from the flyout delete the dragged block by @gonfunko in #10290
- fix: Do not re-announce moves that stay on the same connection target by @mikeharv in #10308
- fix: Improve block placement when inserting from flyout via keyboard by @gonfunko in #10318
- fix: Fix bug that made some keyboard shortcuts non-idempotent by @gonfunko in #10286
- fix: Prevent registering a keyboard shortcut under the same key combo multiple times by @gonfunko in #10386
- fix: scroll field into view after window resize instead of bumping block by @mikeharv in #10373
- fix: Fix exception when disposing blocks with focused connections by @gonfunko in #10387
Documentation updates π
- docs: reorganize contribute to blockly docs by @zspriggs in #10188
- docs: update advanced compilation docs by @zspriggs in #10234
- docs: add and update json serialization migration by @zspriggs in #10267
- docs: update docs for monorepo by @zspriggs in #10317
- docs: fix documentation on changing max dropdown height by @zspriggs in #10319
- docs: update plugins page with dependabot info by @zspriggs in #10403
- docs: fall back to @returns label on api docs by @zspriggs in #10407
- docs: fix spelling typos in .mdx docs by @2u841r in #10412
Other changes
- chore: updated homepage/repo links for npm by @lizschwab in #10241
- test: Use local media URL for tests by @gonfunko in #10226
- docs: plugin README link corrections and maintenance by @zspriggs in #10240
- test: Avoid flakes by explicitly aligning blocks by @gonfunko in #10245
- test: Refactor mocha test infrastructure by @gonfunko in #10309
- test: Stop leaking workspaces from Mocha tests by @gonfunko in #10322
- test: Add support for Typescript tests in core by @gonfunko in #10375
- test: Reenable a variety of skipped tests by @gonfunko in #10320
- test: Fix several flaky tests by @gonfunko in #10388
- test: Reenable the drag-out-every-test-block browser tests by @gonfunko in #10396
- test: Remove logspam when running test suite by @gonfunko in #10392
New Contributors
Full Changelog: blockly-v13.2.1...blockly-v13.3.0
blockly-v13.2.2-beta.2
blockly-v13.2.2-beta.1
blockly-v13.2.2-beta.0
What's Changed
Bug fixes π
- fix: Fix bug that could cause renders to clobber the undo stack by @gonfunko in #10227
- fix: Improve performance of
WorkspaceSvg.getNestedTrees()by @gonfunko in #10236 - fix: keep tall field corners inside round caps with zelos by @mikeharv in #10214
- fix: wrong css prop by @SimonShiki in #10257
- fix: restore focus on toast dismiss by @mikeharv in #10260
Documentation updates π
- docs: reorganize contribute to blockly docs by @zspriggs in #10188
- docs: update advanced compilation docs by @zspriggs in #10234
Other changes
- chore: updated homepage/repo links for npm by @lizschwab in #10241
- test: Use local media URL for tests by @gonfunko in #10226
- docs: plugin README link corrections and maintenance by @zspriggs in #10240
- test: Avoid flakes by explicitly aligning blocks by @gonfunko in #10245
Full Changelog: blockly-v13.2.1...blockly-v13.2.2-beta.0
blockly-v13.2.1
What's Changed
Bug fixes π
- fix(field-bitmap): revert separate keys for revert and commit- #2760 by @mikeharv in #10205
- fix: Flyout toolbar changes block position by @TannerGabriel in #10206
- fix: Fix display of insertion markers and trashcan lid in RTL by @gonfunko in #10211
- fix: Fix some memory leaks by @gonfunko in #10217
Other changes
- test: Fix the browser tests by @gonfunko in #10198
- test: Fix the browser tests by @gonfunko in #10212
- test: Add support for running the Mocha test suite under Node by @gonfunko in #10208
New Contributors
- @TannerGabriel made their first contribution in #10206
Full Changelog: blockly-v13.2.0...blockly-v13.2.1
blockly-v13.2.0
What's Changed
New features β¨
- feat: Indicate the Blockly version number on the playground by @gonfunko in #10127
- feat: make cacheAllConnectionPairs public by @mikeharv in #10149
- feat: Rewrite insertion markers to improve performance and fix memory leaks by @gonfunko in #10156
- feat: add setAriaTypeName method for Fields by @mikeharv in #10154
- feat: allow translated field labels, add docs by @maribethb in #10174
Bug fixes π
- fix: Add visual invalid input handling beyond color by @lizschwab in #10101
- fix: Fix regression in trashcan lid behavior by @gonfunko in #10130
- fix: transform svgPathSelected when using RTL and Zelos by @mikeharv in #10152
- fix: exclude toolbox separators from accessibility tree by @mikeharv in #10153
- fix: Fix bug that caused
getInitialCandidate()to be called on every drag step by @gonfunko in #10157 - fix: throw on invalid XML connections by @jianchang56 in #10162
- fix: Improve performance of large connection DB updates by @gonfunko in #10163
- fix: Fix bug that caused some connections to refuse to connect when dragging from the toolbox by @gonfunko in #10171
- fix: Consolidate select events by @gonfunko in #10129
- fix: export JSON block definition type by @yuanran32 in #10102
- fix: Improve performance of variable name comparisons by @gonfunko in #10175
- fix: Improve performance of
BlockSvg.getRelativeToSurfaceXY()by @gonfunko in #10177
Documentation updates π
- docs: fix typos, broken links, and license by @zspriggs in #10111
- docs: refactor getting-started codelab to be based on sample app by @zspriggs in #10074
- docs: make generators, renderers, and getting-started consistent with other codelabs by @zspriggs in #10126
- docs: refactor css codelab to use sample app by @zspriggs in #10124
- docs: refactor validation and warnings codelab to use sample app by @zspriggs in #10122
- docs: refactor context menu codelab to use sample app by @zspriggs in #10119
- docs: refactor themes codelab to use sample app by @zspriggs in #10118
- docs: refactor toolbox codelab to use sample app by @zspriggs in #10115
New Contributors
- @jianchang56 made their first contribution in #10162
- @yuanran32 made their first contribution in #10102
- @Carlosamouco made their first contribution in #10168
Full Changelog: blockly-v13.1.1...blockly-v13.2.0
blockly-v13.1.1
blockly-v13.1.0
What's Changed
New features β¨
- feat: Add a new
FOCUSABLEcapability toIComponentby @gonfunko in #10038 - feat: Add relevant things to full-block field labels by @mikeharv in #10037
- feat: ctrl/cmd+v pastes near focused block by @mikeharv in #10061
- feat: add optional new shortcuts for block/workspace navigation by @maribethb in #10090
Bug fixes π
- fix: Coalesce adjacent field labels by @lizschwab in #9996
- fix: Bring blocks to the front when focused via keyboard by @microbit-robert in #10032
- fix: Fix Github pages publishing by @gonfunko in #10036
- fix: constrained move mode improvements by @mikeharv in #10026
- fix: nested category with blocks in parent by @zspriggs in #9995
- fix: Treat the flyout as a listbox with options by @microbit-robert in #10059
- fix: Make dialog handling of ephemeral focus more robust by @gonfunko in #10064
- fix: scope passive block focus to keyboard navigation by @microbit-matt-hillsdon in #10063
- fix: Use dominant axis for keyboard move direction by @microbit-robert in #10030
- fix: Keep workspace stack count fresh instead of hiding it on Mac/VoiceOver by @microbit-matt-hillsdon in #10033
- fix: forward shadow block context menu to parent by @mikeharv in #10070
- fix: Improve VoiceOver experience when using Safari by @microbit-robert in #10073
- fix: recompute field ARIA when editor is closed by @mikeharv in #10079
- fix: Fix count of toolbox items in Voiceover by @gonfunko in #10075
- fix: use a better shortcut for screenreader mode by @maribethb in #10089
- fix: fix disable orphans handler to account for keyboard inserts by @maribethb in #10069
- fix: detect delete areas using pointer coordinates by @mikeharv in #10078
- fix: Announce the workspace to VoiceOver via a focus target node by @microbit-matt-hillsdon in #10087
Documentation updates π
- docs: small typos/issues in codelabs by @zspriggs in #9968
- docs: Fix link to Compliance page by @gonfunko in #9994
- docs: add clarification to mutators by @zspriggs in #9984
New Contributors
Full Changelog: blockly-v13.0.0...blockly-v13.1.0
blockly-v13.0.0
Hello Block Builders! We have a very exciting release for you with v13.0.0! Highlights:
- Blockly is now both keyboard-navigable and screenreader-accessible by default! You can read more about our approach here. If you have custom blocks and/or fields, you'll want to update the aria roles and labels for those as described here. See below for more resources.
- If you were using the
@blockly/keyboard-navigationplugin, you should uninstall it at the same time that you update to v13! Keyboard navigation is enabled by default. - As usual, each of the breaking changes PRs linked below contains instructions for how to know if a change affects you and what to do if it does. Many of these breaking changes are quite niche so for many of you it should not be a huge lift to update. A big category of these is the addition of new keyboard navigation shortcuts. If these conflict with your existing shortcuts, you'll need to update one or the other. We recommend you keep our default keyboard navigation shortcuts if at all possible, to maintain parity with other block-based applications. Get in touch on the forum if you have questions!
- We updated the default renderer to
thrasos. If you explicitly specify your renderer (as you probably should) then this does not affect you, but if not you may notice your blocks look very slightly different. Thrasos is more performant than geras so we recommend you keep using it if possible. - We've added a new sound for when a block is dropped on the workspace. Our user testing validated that the new sound helped users understand when a new block is placed, in addition to the existing sound effect for when blocks are connected or disconnected. We know new sounds can be jarring but give it a chance :)
- We also updated the default location of sounds to blockly.com/media. Best practice is to host the sounds yourself, so if you're doing that be sure to also host the new sound. Or you can replace it with your own file if you prefer.
- The oldest browser we now support is Safari 15.4. This version is already no longer receiving security updates from Apple so we believe most applications should already have a minimum supported version newer than this. If this is an issue for you, you can polyfill the css
:hasselector and continue supporting older versions. - Plugins are coming soon - we'll send another email when they're released. New this cycle is that all plugins will receive the v13.0.0 version number so it will be easy to tell how to update your plugins when required.
More accessibility resources:
- Be on the lookout for our Blockly Summit 2026 talks on YouTube which had tons of relevant talks! We'll post an update on the forum when these are live.
- Best practices for creating accessible applications
- How to audit your block-based app for conformance with accessibility requirements
What's Changed
Breaking changes π
- fix!: Make
ISelectable.workspacean instance ofWorkspaceSvgby @gonfunko in #9534 - fix!: Remove event dependencies on XML by @gonfunko in #9536
- feat!: Use box-sizing: border-box by default by @gonfunko in #9556
- fix!: Use SVG icon assets by @gonfunko in #9569
- refactor!: Deprecate
Block.getVars()by @gonfunko in #9574 - fix!: Normalize Zelos connection indicators by @gonfunko in #9565
- feat!: Allow moving blocks, comments and bubbles using the keyboard by @gonfunko in #9593
- refactor!: Move responsibility for block creation out of flyouts by @gonfunko in #9610
- feat!: Allow using Blockly in web components/shadow DOM by @gonfunko in #9611
- feat!: Add support for keyboard navigation by @gonfunko in #9634
- fix!: Fix types on
BlockSvgconnections by @gonfunko in #9669 - feat!: announce toasts via shared ARIA live region by @mikeharv in #9672
- fix!: Improve keyboard navigation of icons and bubbles by @gonfunko in #9737
- feat: Add a sound effect when dropping top-level items on the workspace by @gonfunko in #9784
- feat!: Added additional keyboard shortcuts for context menu by @lizschwab in #9845
- fix!: set full block field status explicitly by @maribethb in #9840
- fix!: Flyout follows toolbox in DOM by @mikeharv in #9849
- feat!: Improve context announcement keyboard shortcuts by @gonfunko in #9863
- fix!: update default media location by @maribethb in #9870
- feat!: Add keyboard shortcut to toggle screenreader mode by @gonfunko in #9869
- feat!: add shortcuts to navigate between headings in the flyout by @maribethb in #9874
- fix!: remove deprecated APIs by @maribethb in #9938
- feat!: update the default renderer to thrasos by @maribethb in #9976
New features β¨
- feat: Add a method to play beep tones by @gonfunko in #9612
- feat: Add keyboard shortcut to focus the workspace by @gonfunko in #9615
- feat: Move mode for stacks of blocks by @mikeharv in #9630
- feat: Beep when attempting constrained move on top-level block by @gonfunko in #9635
- feat: Add keyboard shortcut for disconnecting the selected block by @gonfunko in #9650
- feat: Stop on workspace during constrained move by @mikeharv in #9649
- feat: aria live region for announcements by @mikeharv in #9653
- feat: Update CSS for keyboard navigation by @gonfunko in #9674
- feat: Add a JSON Block definition interface by @heliacer in #9613
- feat: Add keyboard shortcuts to navigate between stacks by @gonfunko in #9678
- feat: i shortcut on workspace gives overview by @mikeharv in #9677
- feat: Add aria APIs to Field base class by @mikeharv in #9683
- feat: aria utility additions / improvements by @mikeharv in #9690
- feat: Add keyboard shortcut to perform an action on the currently focused element by @gonfunko in #9673
- feat: Add keyboard shortcut to clean up the workspace by @gonfunko in #9728
- feat: Add keyboard shortcut for duplicating blocks and workspace comments by @gonfunko in #9727
- feat: Add basic support for generating ARIA labels and roles for blocks by @gonfunko in #9696
- feat: Screenreader announcements for move mode by @mikeharv in #9731
- feat: Update zelos path object to allowlist attributes by @lizschwab in #9742
- feat: add display text to shortcuts by @maribethb in #9743
- feat:
FieldInputARIA by @mikeharv in #9744 - feat: Added keyboard shortcut for displaying tooltip by @lizschwab in #9755
- feat:
FieldDropdownARIA by @mikeharv in #9766 - feat: ARIA for other field classes by @mikeharv in #9772
- feat: make flyouts and workspace labels properly accessible by @maribethb in #9774
- feat: Play delete sound when workspace comments are deleted by @gonfunko in #9776
- feat: allow setting custom role description for blocks by @maribethb in #9777
- feat: Bubble ARIA methods by @mikeharv in #9783
- feat: Added support for custom input ARIA labels by @lizschwab in #9789
- feat: ...
blockly-v13.0.0-beta.9
What's Changed
New features β¨
- feat: add docs as conventional commit option by @zspriggs in #9970
- feat: Reduce build size by enabling
assume_function_wrapperbuild flag by @gonfunko in #9921 - feat: add block role description to verbose block labels by @mikeharv in #9960
Bug fixes π
- fix: Fix loss of focus when deleting blocks via context menu by @gonfunko in #9951
- fix: use translated 'bubble' string for ARIA label fallback by @mikeharv in #9954
- fix: don't allow disconnecting shadow blocks by @microbit-matt-hillsdon in #9964
- fix: only show paste hint toast on keyboard copy/cut by @microbit-matt-hillsdon in #9962
- fix: remove redundant labels for child blocks of parent input by @mikeharv in #9967
- fix: Fix styling and focusing of connections in shadow DOM by @gonfunko in #9952
- fix: allow nav into collapsed block row via right arrow by @microbit-matt-hillsdon in #9958
- fix: all use closest candidate when moving disconnected blocks by @mikeharv in #9971
- fix: position dragging block above/below all blocks by @mikeharv in #9972
- fix: improve terminal position detection by @mikeharv in #9973
Full Changelog: blockly-v13.0.0-beta.8...blockly-v13.0.0-beta.9