Skip to content

Releases: google/blockly

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 blockly@11.0.0-beta.5 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

blockly-v10.2.0

19 Mar 00:11
0e22a79
Compare
Choose a tag to compare

[These notes were drafted on 23 September 2023 and v10.2.0 was published on 28 September 2023, but due to an oversight these release notes were not published at that time.]

What's Changed

This was a minor release!

Deprecations 🧹 - APIs that may be removed in future releases

New features ✨

Bug fixes 🐛

Cleanup ♻️

  • refactor(tests): Introduce loading shims, use in playgrounds by @cpcallen in #7380
  • refactor(tests): Use import instead of goog.bootstrap to load Blockly in mocha tests by @cpcallen in #7406
  • refactor(tests): Migrate generator tests to import shims; delete bootstrap.js by @cpcallen in #7414
  • refactor(build): Delete Closure Library by @cpcallen in #7415
  • refactor(build): Remove closure-make-deps and closure-calculate-chunks by @cpcallen in #7473

Other changes

New Contributors

Full Changelog: blockly-v10.1.3...blockly-v10.2.0

blockly-v10.4.2

21 Feb 19:53
bdc416f
Compare
Choose a tag to compare

This is a patch release that addresses minor issues with dragging that were introduced in v10.4.0.

What's Changed

Bug fixes 🐛

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

blockly-v10.4.1

16 Feb 00:16
d782d7d
Compare
Choose a tag to compare

What's Changed

Bug Fixes

Other changes

Full Changelog: blockly-v10.4.0...blockly-v10.4.1

blockly-v10.4.0

15 Feb 22:11
592c541
Compare
Choose a tag to compare

Blockly v10.4.0

  • This release contains mostly bug fixes and improvements!
  • New feature: custom connection previewers allow you to change how pending connections are visualized to users. Check out the documentation to learn more.
  • Note if you use TypeScript: we now export the JavascriptGenerator (and similiar for other languages) class in TypeScript, complete with its accurate typings. We were not previously exporting this class in our TS definition files, so it wasn't accessible from TS code at all. Do note that we are still exporting the instance of those classes (javascriptGenerator and friends) typed as any so as not to introduce breaking type changes. You'll get accurate typings for the instances as well coming in v11!

What's Changed

New features ✨

Bug fixes 🐛

  • fix: Remove double spaces in translation instructions. by @NeilFraser in #7704
  • fix: updated mocha tests to display error messages by @btw17 in #7706
  • fix: prevent flyout block highlighting during workspace drag by @neerajkumarc in #7720
  • fix: prevent console logging duplicate deprecation warnings by @ebrahim95 in #7733
  • fix: triggering flyout show from field render causing infinite loop by @BeksOmega in #7784
  • fix: cancelling all renders on triggering queued renders by @BeksOmega in #7787
  • fix: first block dragged from flyout will have same id by @maribethb in #7788
  • fix: prevent block change event firing if editing is cancelled by using keypress by @ebrahim95 in #7794
  • fix: shadow blocks with variable fields are allowed to be deserialized from XML by @ebrahim95 in #7802
  • fix: manually add typings for generator classes by @maribethb in #7824
  • fix: destroy connection highlight when the connection is disposed by @BeksOmega in #7830
  • fix: fix reference docs toc generation by @maribethb in #7832
  • fix: insertion marker previewer finding wrong connection for different conn counts by @BeksOmega in #7833
  • fix: disposing of connection previewer by @BeksOmega in #7834

New Contributors

Full Changelog: blockly-v10.3.1...blockly-v10.4.0

blockly-v10.3.1

17 Jan 21:22
1ba0e55
Compare
Choose a tag to compare

What's Changed

Bug fixes 🐛

  • fix: triggering flyout show from field render causing infinite loop by @BeksOmega in #7784
  • fix: cancelling all renders on triggering queued renders by @BeksOmega in #7787
  • fix: first block dragged from flyout will have same id by @maribethb in #7788

Full Changelog: blockly-v10.3.0...blockly-v10.3.1

blockly-v11.0.0-beta.1

08 Jan 18:49
Compare
Choose a tag to compare
Pre-release

This is the second in what we expect will be a series of beta releases for the future v11 of Blockly. See information about the Blockly v11 Beta Program.

Highlights in v11.0.0-beta.1

The only new change in -beta.1 is a fix for an issue reported about the new generator type declarations in -beta.0. Thanks to @clementcontet for spotting and reporting this error!

What's Changed

Bug fixes 🐛

  • fix(generators): Fix generator type declarations by @cpcallen in #7750

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

blockly-v11.0.0-beta.0

23 Dec 23:40
Compare
Choose a tag to compare
Pre-release

This is the first in what we expect will be a series of beta releases for the future v11 of Blockly.

Blockly v11 Beta Program

We have a fairly large backlog of breaking changes that we've been holding on to, and we are planning to publish a series of betas ad hoc as those changes are finished and ready for you to test. We want to get these out to you as soon as possible, for two reasons:

  • So that you can prepare modifications to your projects as required in response to the breaking changes we're planning to include in v11.
  • So that you can give us early feedback about issues you encounter. We're interested in reports of any kind of bug, of course, but we're especially interested in hearing if a breaking change we're planning for v11 turns out to create intractable difficulties in upgrading your project(s).

It is quite likely that work on Blockly v10, including backwards-compatible bug fixes and/or new features, will continue in parallel with work on the less backwards-compatible changes we're planning for v11. We expect that in most cases each v11 beta will be up-to-date with all the latest v10 updates, but we can't make any such guarantees. As such, you should continue using v10 in production, since bugs will get fixed in v10 first, and v11 will probably introduce exciting new bugs—though with your help we hope to fix most of them before v11.0.0 is officially released.

Highlights in v11.0.0-beta.0

The only breaking change in this release is that we're finally publishing accurate TypeScript typings for the generators! 🎉

The generators were migrated to TypeScript in v10.3.0, concluding our work to migrate the core Blockly codebase from JavaScript to TypeScript. The new TypeScript implementation is (intended to be) functionally the same but a change in published typings is likely to break existing projects; to avoid this we opted to continued to publish the same hand-written .d.ts files for the generator entrypoints (e.g. blockly/javascript) that we have been using until now.

Previously the dartGenerator, luaGenerator, javascriptGenerator, phpGenerator, and pythonGenerator exports (from the blockly/dart, blockly/lua, blockly/javascript, blockly/php and blockly/python entrypoints respectively) were being typed any.
(In hindsight we should probably have declared them as unknown, obliging TS developers to use explicit casts.) Now their types are correct. There is no change to their runtime behaviour, but developers who have written code in TypeScript that manipulates generators (adding custom block generator functions, for example) may find they need to correct type errors in their code in order for it to compile correctly with Blockly v11.

Notably, block generator functions to be installed in the javascriptGenerator.forBlock dictionary should be typed

(block: Blockly.Block, generator: javascript.JavascriptGenerator) => [string, javascript.Order] | string | null

—and similarly for each of the other four languages we support.

Note that in most cases the return type for any particular generator function can be either [string, javascriptOrder] (for expression blocks), string (for statement blocks), or null (for blocks that do not directly emit code).

What's Changed

Breaking changes 🛠

Bug fixes 🐛

  • fix: Remove double spaces in translation instructions. by @NeilFraser in #7704
  • fix: updated mocha tests to display error messages by @btw17 in #7706
  • fix: prevent flyout block highlighting during workspace drag by @neerajkumarc in #7720

New Contributors

Full Changelog: blockly-v10.3.0...blockly-v11.0.0-beta.0