Skip to content

Releases: google/blockly

blockly-v12.0.0-beta.0

04 Dec 21:11
Compare
Choose a tag to compare
Pre-release

What's Changed

Breaking changes 🛠

New features ✨

Bug fixes 🐛

  • fix: Remove references to getFastTextWidth (#8277) by @ga-fleury in #8307
  • fix: improve prompting when deleting variables by @gonfunko in #8529
  • fix: display the correct variable reference count when deleting a variable. by @gonfunko in #8549
  • fix: improve flyout performance by @gonfunko in #8571
  • fix: size text with computed styles even when hidden by @gonfunko in #8572
  • fix: include potential variables in variable dropdowns in the flyout by @gonfunko in #8574
  • fix: Fix bug that prevented dismissing the widgetdiv in a mutator workspace. by @gonfunko in #8600
  • fix: Fix bug that caused fields in the flyout to use the main workspace's scale. by @gonfunko in #8607
  • fix: Correctly calculate the bounds of hat blocks. by @gonfunko in #8616
  • fix: Take the flyout into account when positioning the workspace after a toolbox change. by @gonfunko in #8617
  • fix: Fix exception when disposing of a workspace with a variable block obscuring a shadow block. by @gonfunko in #8619
  • fix: improve typings and export additional types by @gonfunko in #8631
  • fix: Create CSS vars for SVG patterns. by @johnnesky in #8671

Cleanup ♻️

  • refactor: field_checkbox dom.addClass params by @ishon19 in #8309
  • refactor: Add addClass and removeClass methods to blockSvg by @ishon19 in #8337
  • refactor: make VariableModel implement IVariableModel. by @gonfunko in #8381
  • refactor: update the variable interfaces. by @gonfunko in #8388
  • refactor: make VariableMap implement IVariableMap. by @gonfunko in #8395
  • refactor: Use IVariableModel instead of VariableModel. by @gonfunko in #8400
  • refactor: clean up VariableModel. by @gonfunko in #8416
  • refactor: deprecate and clean up variable-related methods. by @gonfunko in #8415
  • refactor: use getters for flyout width and height. by @gonfunko in #8564
  • refactor: remove redundant flyout positioning. by @gonfunko in #8573

Other changes

  • Added blocklyImageField CSS class to image fields by @vexora-0 in #8439

New Contributors

Read more

blockly-v11.2.0-beta.2

04 Dec 21:08
Compare
Choose a tag to compare
Pre-release

What's Changed

Bug fixes 🐛

  • fix: Fix bug that caused comments to be incorrectly positioned. by @gonfunko in #8668
  • fix: Disable newly created function call blocks when the corresponding definition is disabled. by @gonfunko in #8665
  • fix: Fix bug that caused text to be selected when long-pressing in the workspace on a touch device. by @gonfunko in #8670
  • fix: typo in comment by @winnchen in #8685
  • fix: workspace shifts when deleting a block by @mateusslezinsky in #8666

New Contributors

Full Changelog: blockly-v11.2.0-beta.1...blockly-v11.2.0-beta.2

blockly-v11.2.0-beta.1

11 Nov 19:02
Compare
Choose a tag to compare
Pre-release

What's Changed

Bug fixes 🐛

  • fix: Ensure immovable blocks are considered during workspace tidying by @BenHenning in #8550
  • fix: Factor out workspace drag methods into utils. by @johnnesky in #8566
  • fix: Simplify list and text WHERE validation by @johnnesky in #8575
  • fix: Group field validator changes with field value changes. by @johnnesky in #8589
  • fix: Let old block factory overwrite user defined blocks. by @johnnesky in #8605
  • fix: bump initiator group in an orthogonal direction from neighboring group by @johnnesky in #8613
  • fix: clear touch identifier on comment icon down by @riknoll in #8627
  • fix: Use a readonly textarea for non-editable comments. by @gonfunko in #8632
  • fix: Fix crash when resizing page while editing a field. by @gonfunko in #8646

Cleanup ♻️

  • refactor(shortcuts): Improve shortcut registry documentation & style by @cpcallen in #8598
  • refactor: Move functions into FieldDropdown. by @gonfunko in #8634

New Contributors

Full Changelog: blockly-v11.2.0-beta.0...blockly-v11.2.0-beta.1

blockly-v11.2.0-beta.0

11 Nov 18:44
Compare
Choose a tag to compare
Pre-release

What's Changed

New features ✨

Bug fixes 🐛

  • fix: change which element keydown is bound to from document to injection div by @mark-friedman in #8188
  • fix: statement input blocks disappearing by @BeksOmega in #8203
  • fix(dev-tools): only initSvg on rendered blocks by @maribethb in #8215
  • fix: Drag and Resize events for workspace comments by @johnnesky in #8217
  • fix: correctly report the pre-resize-drag size to workspace comment size change listeners by @gonfunko in #8240
  • fix: export the layer constants. by @gonfunko in #8256
  • fix: use the correct with in getBoundingRectangleWithoutChildren(). by @gonfunko in #8298
  • fix: added id to rendered ws comments; made getCommentById public; ad… by @changminbark in #8358
  • fix: Enable blocks if user can't manually enable them. by @johnnesky in #8354
  • fix: drag strategy only clear group id set by us by @HollowMan6 in #8355
  • fix: Codify component weights with toolbox in front of flyouts. by @johnnesky in #8432
  • fix: comments and bubbles on click by @UCYT5040 in #8451
  • fix: Update dev-tools, remove toolbox category tests Colour and Angles by @johnnesky in #8457
  • fix(touch): prevent infinite loop on multi-touch drag by @AbhinavKRN in #8470
  • fix: Let workspace comment have delete cursor over trash. by @johnnesky in #8477
  • fix: Detect if deleting shadow block affects selection highlight by @johnnesky in #8533
  • fix(events): Simplify filter function, add new enqueueEvent function by @cpcallen in #8539
  • fix(comments): added workspace comments and comment drag strategy isDeadOrDying() checks (for multiselect plugin) by @changminbark in #8532

Cleanup ♻️

  • docs(blocks): block.ts and blocks/* JSDoc / formatting / etc. cleanup by @cpcallen in #8431
  • refactor(events): introduce EventType enum in separate module by @cpcallen in #8530
  • refactor(events): Don't filter events before undo by @cpcallen in #8537
  • refactor(events): Introduce and use event type predicates by @cpcallen in #8538
  • refactor: Use arrow functions when calling Array.prototype.filter by @cpcallen in #8557
  • refactor: Omit unused exception arguments from catch blocks by @cpcallen in #8559

Other changes

New Contributors

Full Changelog: blockly-v11.1.1...blockly-v11.2.0-beta.0

blockly-v11.1.1

12 Jun 17:43
7a154ea
Compare
Choose a tag to compare

What's Changed

Bug Fixes

  • fix: statement input blocks disappearing #8203

Full Changelog: blockly-v11.1.0...blockly-v11.1.1

blockly-v11.1.0

30 May 19:01
e03d526
Compare
Choose a tag to compare

What's Changed

New features ✨

Bug fixes 🐛

Reverted changes ⎌

  • revert: "chore(deps): update webdriverio to 8.16 and stop using seleni… by @maribethb in #7520

Other changes

New Contributors

Full Changelog: blockly-v11.0.0...blockly-v11.1.0

blockly-v11.0.0

20 May 20:37
9519333
Compare
Choose a tag to compare

Blockly v11 is here and it includes many new features and bug fixes!

For the full list of breaking changes, see the release notes below. You can click on each PR to learn why it's a breaking change, how to tell if you will be affected by it, and what to do if you are. There are a few major changes to be aware of:

  • The colour, multiline input, and angle fields and their associated blocks have been removed from core. They are now available as plugins. If you use these blocks or fields, follow the instructions in the plugin READMEs to install them.
  • If you install Blockly through npm, we now provide an exports clause to explicitly declare what you can import from our package.
    • Your build tooling may now throw an error if you deep import from our package such as import 'blockly/core/some/file/name.js', which has never been supported by Blockly but may have been made possible by your build tools.
  • We now provide Blockly as an esmodule if you use Blockly through import statements in JS.
    • import Blockly from 'blockly/core' has never been supported by Blockly, but your build tool may have "helpfully" made this work previously. Due to this change, your build tooling may no longer behave that way.
    • You should import * as Blockly from 'blockly/core' instead, as described in our documentation.
    • Note that <script type="module"> in HTML files is not yet a supported method to load Blockly.
  • Calling statementToCode or valueToCode on inputs that don't exist will now throw an error instead of returning an empty string.
    • This will make it easier to spot errors due to incorrect input names in block-code generator functions, but may expose previously silent issues with existing code.

This release also comes with many new features and bug fixes! A few notable ones include:

What's Changed

Breaking changes 🛠

New features ✨

Bug fixes 🐛

Read more

blockly-v11.0.0-beta.6

21 Mar 17:38
Compare
Choose a tag to compare
Pre-release

This is the fourth fifth in an ongoing series of beta releases for the future v11 of Blockly. See information about the Blockly v11 Beta Program.

Due to errors in the publication process, the contents of the [email protected] package were not as intended (and did not correspond with the release notes), and that version has been withdrawn. This version, -beta.6, supersedes it.

Highlights in v11.0.0-beta.6 (was beta.5)

This release was created to publish the fix in PR #7955 for issue #7952, which caused errors when importing langfiles (e.g. blockly/msg/en) in TypeScript modules. Thanks to @clementcontet for reporting this issue in -beta.4 so promptly—and sorry that we didn't catch it despite the extensive testing carried out on the offending PR, #7822!

It also contains unrelated ongoing work on refactoring workspace comments.

What's Changed

New features ✨

  • feat: rendered workspace comment by @BeksOmega in #7918
  • feat: have RenderedWorkspaceComment implement IBoundedElement and IRenderedElement by @BeksOmega in #7919
  • feat: add JSON serialization for workspace comments by @BeksOmega in #7927

Bug fixes 🐛

  • fix: comment have XML save and load new workspace comments classes by @BeksOmega in #7931
  • fix(typings): Restore inadvertently-deleted typings/msg/msg.d.ts; add TS import test by @cpcallen in #7955

Full Changelog: blockly-v11.0.0-beta.4...blockly-v11.0.0.-beta.6

blockly-v11.0.0-beta.4

19 Mar 00:15
Compare
Choose a tag to compare
Pre-release

This is the third in an ongoing series of beta releases for the future v11 of Blockly. See information about the Blockly v11 Beta Program.

Wait, -beta.4? What happened to .2 and .3?

The keen npmjs.com watches amongst you (hi, @dependabot!) will have noted that, since the last publicly-announce beta, v11.0.0-beta.1, there have been two additional betas published to npmjs.com. These were created to facilitate development and testing of work in the blockly-samples repository, and all the changes from those two unpublicised releases are rolled into the changelist below.

Highlights in v11.0.0-beta.4

Valid entrypoints specified by exports directive in package.json

The most important change in v11.0.0-beta.4 is actually a change to the packaging, rather than the contents of the package.

Specifically, we have added an exports directive, to the package.json file, which definitively enumerates the valid entrypoints for the package. The purpose of this change is to prepare for the publication of ES module entrypoints, that will supplement (and ultimately supplant) the existing CommonJS module entrypoints, in future versions of Blockly.

Adding an exports section:

  • Allows us to definitively enumerate the permitted entrypoints for the package, disallowing direct importation of any other files.
  • Allows us to change which file each individual entrypoint actually loads without it necessarily being a breaking change.
  • Allows us to specify separate ESM entrypoints for subpaths (like blockly/javascript); without exports all subpath entrypoints must be either ESM or CJS and it is not possible to provide both.

Aside: module resolution

Module resolution is ultimately at the discretion of each JS runtime or build tool. Browsers, node.js, Webpack, Closure Compiler, etc. each have their own module resolution and loading implementations. The package.json file was originally for the benefit of npm in its role of installing packages and their dependencies, but now contains additional information (like the browser, exports, main, umd, and unpkg directives) that are honoured to varying degrees by different tools. It is therefore hard to say categorically what file(s) will be loaded by which tools without consulting each tool's documentation (and/or implementation), but amongst tools that have some kind of support for NPM packages, the exports directive appears to be widely and consistently supported.

Here is some of the relevant documentation for tools we expect Blockly developers are likely to use:

Valid entrypoints and what they provide

BREAKING CHANGE: The introduction of an exports directive means that correctly-behaved tools (node.js, bundlers like webpack, etc.) will only allow importing of the specified entrypoints. Here is the full list of permitted entrypoints that can be imported or required:

  • blockly
  • blockly/core
  • blockly/blocks
  • blockly/dart
  • blockly/lua
  • blockly/javascript
  • blockly/php
  • blockly/python
  • blockly/msg/<lang>, for all supported language codes <lang> (e.g blockly/msg/en, blockly/msg/fr, blockly/msg/de, etc.)

If you previously imported any other paths from the blockly package you will need to update your imports. Here are the most common paths that may have been used, and their correct replacements:

If you previously imported: Import instead:
blockly/index.js blockly
blockly/node.js blockly
blockly/browser.js blockly
blockly/blockly.min This file should only be loaded as a <script>.
blockly/core.js blockly/core
blockly/core-browser.js blockly/core
blockly/blockly_compressed.js blockly/core
blockly/blocks.js blockly/blocks
blockly/blocks_compressed.js blockly/blocks
blockly/dart.js blockly/dart
blockly/dart_compressed.js blockly/dart
blockly/lua.js blockly/lua
blockly/lua_compressed.js blockly/lua
blockly/javascript.js blockly/javascript
blockly/javascript_compressed.js blockly/javascript
blockly/php.js blockly/php
blockly/php_compressed.js blockly/php
blockly/python.js blockly/python
blockly/python_compressed.js blockly/python
blockly/msg/en.js blockly/msg/en

If you are loading Blockly as a script you should continue to load the compiled chunks (blockly_compressed.js, blocks_compressed.js, javascript_compressed.js, etc.) directly, or load blockly.min.js which is just a concatenation of blockly_compressed.js, msg/en.js, blocks_compressed.js, and javascript_generator.js.

(Prior to v11 there were various entrypoint wrappers provided in the form of UMD modules (e.g. blockly.js, javascript.js, etc.) but loading these as as scripts never did anything useful and, as they are no longer needed, they have been deleted.)

BREAKING CHANGE: Prior to v11, importing the main blockly package would import blockly/core, blockly/blocks, blockly/msg/en and blockly/javascript—and additionally, in node.js, also blockly/dart, blockly/lua, blockly/php and blockly/python.

Now the main blockly package entrypoint never loads any of the generators.

This change has been made because of changes to generator exports made in blockly v9.0.0 that make necessary to always separately import generator modules in order to use them.

Note that this change does not affect loading the blockly package via <script src="https://unpkg.com/blockly">; that continues to load to blockly.min.js, which continues to include javascript_compressed.js which (when loaded as a script) makes itself available via Blockly.JavaScript for backwards compatibility.

Field, block and generator changes

BREAKING CHANGE: The angle, colour and multiline input fields (FieldAngle, FieldColour and FieldMultilineInput respectively) have been deleted from Blockly. All three are now provided as plugins. The blocks associated with the colour field and multiline text field have been moved to the field plugins, which now provide documentation on how to install the blocks.

BREAKING CHANGE: Code emitted by the LuaGenerator now uses nil instead of None. This may break some user's downstream block programs if they are assigning to a variable called None and then initializing lists with empty inputs expecting them to contain the value assigned to None.

Other changes

There were also breaking changes to block disposal and to certain CSS classes, as well as other changes made for v11 and/or rolled up from v10; see below for the complete list.

What's Changed

Breaking changes 🛠

  • fix!: have Lua generators use 'nil' instead of 'None' by @BeksOmega in #7837
  • fix!: have disposing be true from start of dispose by @BeksOmega in #7891
  • feat!: delete angle, colour, and multiline input fields and blocks by @rachel-fenichel in #7932
  • fix!: classes on text input bubble to match comment view by @BeksOmega in #7935
  • feat(build)!: Introduce exports section in package.json by @cpcallen in #7822

New features ✨

Bug fixes 🐛

Read more

blockly-v10.4.3

11 Mar 16:51
0e22a79
Compare
Choose a tag to compare

What's Changed

Other changes

Full Changelog: blockly-v10.4.2...blockly-v10.4.3