Releases: google/blockly
blockly-v11.1.1
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
What's Changed
New features ✨
- feat: Add a getTargetWorkspace method to flyout_base.ts by @ivalkshfoeif in #7519
- feat: made the method isDragTowardWorkspace non private by @ramyaram2092 in #7529
- feat: Paste block in viewport / near cursor by @bsampada7 in #7521
- feat: Added an API to programmatically scroll the workspace by @SophieNguyen113 in #7532
- feat(tests): Browser test helper to get workspace svg root by @bsampada7 in #8166
Bug fixes 🐛
- fix: update types in 'field_input.ts' file by @aku1310 in #7514
- fix: move delete keyboard shortcut in-progress gesture check to precondition #6274 by @humera811 in #7528
- fix: removed underscore from isLabel_ in flyout_button.ts by @sayalikandarkar in #7533
- fix: Addition of the .gitattributes file to standardize line endings by @sam301100 in #7517
- fix: non-nullable check for block variable and removed ! in layout_ #7522 by @priya-rjb in #7537
- fix: non-nullable check for block variable and removed ! in layout_ by @rashmi29 in #7536
- fix: pasting with nothing selected by @BeksOmega in #7561
- fix: Only hide WidgetDiv if it is associated with the affected workspace. by @johnnesky in #8150
- fix: lang file imports by @BeksOmega in #8179
- fix: dragging and disposing of shadows by @BeksOmega in #8172
- fix: comment body height too short by @BeksOmega in #8182
Reverted changes ⎌
- revert: "chore(deps): update webdriverio to 8.16 and stop using seleni… by @maribethb in #7520
Other changes
- release: v11.1.0 by @BeksOmega in #8185
New Contributors
- @ivalkshfoeif made their first contribution in #7519
- @aku1310 made their first contribution in #7514
- @humera811 made their first contribution in #7528
- @ramyaram2092 made their first contribution in #7529
- @sayalikandarkar made their first contribution in #7533
- @sam301100 made their first contribution in #7517
- @SophieNguyen113 made their first contribution in #7532
- @priya-rjb made their first contribution in #7537
- @rashmi29 made their first contribution in #7536
Full Changelog: blockly-v11.0.0...blockly-v11.1.0
blockly-v11.0.0
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.
- Your build tooling may now throw an error if you deep import from our package such as
- 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
orvalueToCode
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:
- Custom workspace comment behavior and appearance
- Custom draggable behavior
- More consistent undo/redo behavior for disabled blocks
- Keyboard navigation of flyout buttons
- More accurate Generator type definitions
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 inpackage.json
by @cpcallen in #7822 - fix!: remove couldConnect parameter from wouldDelete by @BeksOmega in #7968
- feat!: Throw errors on missing inputs by @NeilFraser in #7969
- feat!: migrate bubble dragging to use new dragging API by @BeksOmega in #7974
- fix!: various drag-adjacent interfaces by @BeksOmega in #7975
- feat!: change gestures to look at selected when dragging by @BeksOmega in #7991
- feat!: Add context menu options for workspace comments by @BeksOmega in #8035
- feat!: Invalid Blocks by @johnnesky in #7958
- fix!: Only fire intermediate events when editing input with invalid text. by @johnnesky in #8054
- fix!: add getContents to IFlyout by @maribethb in #8064
- feat(build)!: Introduce ESM entrypoints by @cpcallen in #8091
- chore!: delete deprecations for v11 by @BeksOmega in #7732
New features ✨
- feat: add comment view (for workspace comments, and block comments for partners) by @BeksOmega in #7914
- feat: allow overriding comment icons by @BeksOmega in #7937
- feat: add headless workspace comment class by @BeksOmega in #7916
- 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
- feat(dragging): Create (new)
IDragger
andIDraggable
interfaces by @cpcallen in #7953 - feat(dragging): Introduce
Dragger
, implementingIDragger
by @cpcallen in #7956 - feat: add block drag strategy by @BeksOmega in #7970
- feat: have blocks use drag strategy by @BeksOmega in #7971
- feat: have the gesture use a dragger for blocks by @BeksOmega in #7972
- feat: make comment a draggable by @BeksOmega in #7976
- feat: allow duplicate registry values by @maribethb in #7988
- feat: support dragging comments in the gesture by @BeksOmega in #7977
- feat: support keyboard navigation of flyout buttons by @mikeharv in #7852
- feat: comment collapse event by @BeksOmega in #7949
- feat: add toFlyoutData method for compatibility with backpack by @BeksOmega in #8002
- feat: visual comment selection by @BeksOmega in #7996
- feat: add ability to delete workspace comments by @BeksOmega in #8023
- feat: add ability to copy and paste workspace comments by @BeksOmega in #8024
- feat: add block factory export in json by @maribethb in #8051
- feat: Add snapping to workspace comments. by @NeilFraser in #8070
Bug fixes 🐛
- fix!(generators): Fix generator typings by @cpcallen in #7727
- fix(generators): Fix generator type declarations by @cpcallen in #7750
- fix: export save and load procedure by @BeksOmega in #7806
- fix: connection previewer disposing too early by @BeksOmega in #7859
- fix: typo in Click event class docs by @elvisvoer in #7854
- fix: insertion marker drag scaling by @BeksOmega in #7874
- fix: restore respecting snap radius by @BeksOmega in #7873
- fix: libraryBlocks exports by @devilhyt in #7886
- fix: shouldPreventMove not being respected by @BeksOmega in #7894
- fix: connection dancing by @BeksOmega in #7899
- fix: comment min size by @BeksOmega in #7915
- fix: updated field_dropdown to properly infer its Field type with TS 5.3.3 by @btw17 in #7939
- fix(generators): Make
scrub_
public
by @cpcallen in #7940 - fix: Fix block disposal animations by @gonfunko in #7948
- 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 - fix: comment position in RTL by @BeksOmega in #7934
- fix: comment view styling by @BeksOmega in #7965
- fix: draggable interface and concrete dragger by @BeksOmega in #7967
- fix: comment create and delete events by @BeksOmega in #7945
- fix: comment icon interface re serialization by @BeksOmega in #7964
- fix: Assign to containerDiv blockyWidgetDiv if it already exists by @lotusotho in #7980
- fix: prevent default undo by @BeksOmega in #7946
- fix: comment colours when dragging by @BeksOmega in #7978
- fix: comment move and change events by @BeksOmega in #7947
- fix: dragging shadow blocks by @BeksOmega in #7992
- fix: bubbles not being returned to the correct layer after drag by @BeksOmega in #7997
- fix: insertion marker firing move event by @BeksOmega in #8000
- fix: drag cursor by @BeksOmega in #7999
- fix: blocks not being returned to the correct layer if their drag is reverted with no parent by @BeksOmega in #7998
- fix: compatibility with scroll plugin by @BeksOmega in https://github.com/google/blockly/pull...
blockly-v11.0.0-beta.6
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
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
); withoutexports
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:
- node.js's package entry points and CJS and ESM module resolution algorithms.
- webpack's
package.json
exports
support and module resolution and loaders. - Closure Compiler's support for modules.
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 import
ed or require
d:
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.gblockly/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 inpackage.json
by @cpcallen in #7822
New features ✨
- feat: add muted option by @truongductri01 in #7714
- feat: add connection previewers by @BeksOmega in #7825
- feat: make grid options togglable by @BeksOmega in #7828
- feat: add comment view (for workspace comments, and block comments for partners) by @BeksOmega in #7914
- feat: allow overriding comment icons by @BeksOmega in #7937
- feat: add headless workspace comment class by @BeksOmega in #7916
Bug fixes 🐛
- fix: prevent console logging duplicate deprecation warnings by @ebrahim95 in https://github.com/goog...
blockly-v10.4.3
What's Changed
Other changes
- fix: connection dancing for zelos rendered by @BeksOmega in #7899
Full Changelog: blockly-v10.4.2...blockly-v10.4.3
blockly-v10.2.0
[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
- feat: make ICopyable generic and update clipboard APIs by @BeksOmega in #7348
- deprecate: workspace paste by @BeksOmega in #7356
New features ✨
- feat: add basic pasters by @BeksOmega in #7331
- feat: Export shape interfaces from ConstantProvider by @varshneydevansh in #7373
- feat: merge copy paste work into develop by @BeksOmega in #7379
- feat: Parse newlines in JSON message as row separators. by @johnnesky in #6944
- feat: add doFullSerialization support to blocks by @BeksOmega in #7363
- feat: add accessor for the workspace svg group by @BeksOmega in #7394
- feat: add custom context menu rendering by @BeksOmega in #7409
- feat: make generator quoting methods public by @BeksOmega in #7392
- feat: make ordered argument optional for workspace functions by @randrei12 in #7424
- feat: add getVariableName and getProcedureName to CodeGenerator by @maribethb in #7445
Bug fixes 🐛
- fix: refactor CopyData interface to have the correct structure by @BeksOmega in #7344
- fix: bumping copied objects by @BeksOmega in #7349
- fix: remove specific warning text by @maribethb in #7376
- fix: insertion marker's next blocks are real blocks by @HollowMan6 in #7384
- fix(build): Fix import of parent chunk's shim by @cpcallen in #7398
- fix(tests): wait for the workspace to render before starting test actions by @rachel-fenichel in #7399
- fix: block change serialization by @BeksOmega in #7400
- fix: saveConnections listener not being disposed by @BeksOmega in #7407
- fix: Always draw dragged blocks atop others in the workspace. by @gonfunko in #6874
- fix: do not create extra shadow blocks when mirroring events by @maribethb in #7427
- fix: dragging blocks within a zoomed mutator by @BeksOmega in #7423
- fix: Prevent raw content being served from storage. by @NeilFraser in #7443
- fix: connection highlight not disposed when block deleted by @BeksOmega in #7454
- fix: doFullSerialization for insertion markers by @BeksOmega in #7467
- fix: insertion marker position when connection is resized (#7426) by @clementcontet in #7482
- fix(tests): contextMenuSelect sometimes clicks the wrong block by @rachel-fenichel in #7485
- fix: zelos full block fields rendering badly by @BeksOmega in #7490
- fix: minor issues in browser tests by @rachel-fenichel in #7493
- fix: immediately render for JavaFX by @BeksOmega in #7502
- fix: bad JSON state leaving events disabled by @BeksOmega in #7501
- fix: Call onFinishEditing_ for fields on mobile. by @laurensvalk in #7483
- fix: loading tooltips before messages by @BeksOmega in #7504
- fix: incorrect blockchange firing by @devbysn in #7492
Cleanup ♻️
- refactor(tests): Introduce loading shims, use in playgrounds by @cpcallen in #7380
- refactor(tests): Use
import
instead ofgoog.bootstrap
to load Blockly in mocha tests by @cpcallen in #7406 - refactor(tests): Migrate generator tests to
import
shims; deletebootstrap.js
by @cpcallen in #7414 - refactor(build): Delete Closure Library by @cpcallen in #7415
- refactor(build): Remove
closure-make-deps
andclosure-calculate-chunks
by @cpcallen in #7473
Other changes
- Revert "fix: removed X & Y from toolbox.ts and replaced movBy to moveTo" by @BeksOmega in #7375
- Revert "fix: insertion marker's next blocks are real blocks" by @rachel-fenichel in #7429
- Revert "feat: Insertion marker json deserialization 7316" by @rachel-fenichel in #7430
- release: v10.2.0 by @rachel-fenichel in #7542
New Contributors
- @HollowMan6 made their first contribution in #7384
- @randrei12 made their first contribution in #7424
- @clementcontet made their first contribution in #7482
- @laurensvalk made their first contribution in #7483
- @devbysn made their first contribution in #7492
Full Changelog: blockly-v10.1.3...blockly-v10.2.0
blockly-v10.4.2
This is a patch release that addresses minor issues with dragging that were introduced in v10.4.0.
What's Changed
Bug fixes 🐛
- fix: insertion marker drag scaling by @BeksOmega in #7874
- fix: restore respecting snap radius by @BeksOmega in #7873
Full Changelog: blockly-v10.4.1...blockly-v10.4.2
blockly-v10.4.1
What's Changed
Bug Fixes
- fix: connection previewer disposing too early by @BeksOmega in #7859
Other changes
- release: v10.4.1 by @maribethb in #7860
Full Changelog: blockly-v10.4.0...blockly-v10.4.1
blockly-v10.4.0
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 asany
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 ✨
- feat: add muted option by @truongductri01 in #7714
- feat: add connection previewers by @BeksOmega in #7825
- feat: make grid options togglable by @BeksOmega in #7828
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
- @neerajkumarc made their first contribution in #7720
- @ebrahim95 made their first contribution in #7733
Full Changelog: blockly-v10.3.1...blockly-v10.4.0