September 2021 Beta Release is Available!

504 views
Skip to first unread message

Abby Schmiedt

unread,
Sep 30, 2021, 7:15:13 PM9/30/21
to Blockly

Hi Everyone, 

This quarter the team migrated most of the core library to Closure modules. This is a significant step on our way to migrating fully to TypeScript and leaving Closure behind. The migration touched every file in core, but left our external-facing APIs mostly unchanged. There are some known issues (document below). 

This quarter we are publishing a beta release of Blockly. What this means: 

  • If you specify the most recent version of Blockly as a dependency in your package.json, you’ll continue to get the June release of Blockly. If you pull from our master branch you will also get the June release, with some minor translation updates.

  • You should not update if you rely on our typings files.

  • Our next major release will be in mid December. This release will be a more stable version of this beta release and include additional bug fixes and small features.

If you want to use the beta version, you still can! If you decide to update and come across issues that are not documented please let us know by filing an issue.

  • You can update to the beta version through npm by specifying 7.20211209.0-beta.0, but it is more unstable than our normal release. Please read through all the release notes before deciding to update.

  • There is a beta release available on GitHub.

  • If you are using plugins, we would recommend that you proceed with caution. We have not been able to do our normal level of testing to make sure all plugins are compatible with the beta release.

🔨 Breaking Changes in Core 🔨

  • Overriding private properties or methods on a namespace will probably not work now. Ideally, you haven’t been doing this as we’ve announced that private properties and methods are subject to change. Overriding them will no longer work because private properties are often not exported from a module at all. Overriding an entire class (e.g. `Blockly.WorkspaceSvg = MyCustomWorkspace`) may still work, but is not officially supported and may not continue to work. If you’re doing this, please get in touch with us on the forum to help us understand your use case and figure out a workaround. Some classes can register their own replacement (e.g. rather than override the MetricsManager, you can register a class for us to use) and in other cases we may need to add or have already added public APIs to accomplish your goals.

  • All themes other than classic and zelos have been moved out of core. They can be found on npm.

  • Breaking changes related to the JSON Serializer (more on this below):

    • Removing Flyout.createBlock_ from the public API

    • Removing Flyout.clearOldBlocks_ from the public API

    • Blockly.Events.BlockChange newValue/oldValue can now be stringified JSON if the block provides JSON hooks

      • This is breaking because core blocks now provide JSON hooks

  • Node 10 is no longer supported.

  • Many functions have been moved or renamed, particularly those in blockly.js (i.e. top-level properties of the Blockly namespace such as Blockly.selected). While this is not currently a breaking change as these functions have all been aliased and deprecated, they will be removed in a future release and we encourage you to update usages. Look out for more info soon.

Known Issues

  • TypeScript typings are currently broken. This is a known issue and we are working to resolve it. The resolution involves switching tools, so the generated typings may differ from the previous ones. Do not upgrade at this time if you rely on Blockly’s .d.ts files.

  • SourceMaps may include stray warnings. Closure adds some “synthetic” modules to the sourcemaps file which don’t actually correspond to existing files. Webpack source-map-loader warns on this, which creates console spam.  If you use webpack, you can disable the warnings with ignoreWarnings. Other source map loaders may also struggle with these missing files. We believe that the actual source maps should still load correctly.

  • If you’ve forked Blockly, this quarter’s work will probably introduce a large number of changes and merge conflicts. We strongly encourage you to move away from the forking model, and consume Blockly through our supported packages (e.g. on npm or GitHub). If this is not possible due to your customizations which can’t be accomplished using public APIs, please get in touch so we can work with you to find a solution.

New Features

  • JSON Serializer (thanks to Beka, our Blockly summer intern this year!)

    • The JSON Serializer is an alternative to the XML Serializer.

    • We have official documentation coming to the Developer Site soon, but in the meantime you can learn more at:

    • Migration guide link

    • Design doc link


🎉 Kudos 🎉

Core contributions

There have been a lot of great contributions to the core repo this quarter, including:

Apoorvgarg-creator fixed a bug having to do with maxInstance.

hpnrep6 was busy fixing a bug with the zelos renderer and using cmd to zoom in on macs.

himanshujaidka did some name cleanup.

Aaimio for putting up some fixes around context menus and extensions.

Sample contributions

And there have been some wonderful contributions to the samples repo this quarter, including:

johnnyoshika cleaned up some warnings in the console.

If I missed anyone I’m really sorry, we don’t have a great method for keeping track of contributions yet. If you did contribute something and I missed you, know that your contribution was very much appreciated!

Full release notes are below.

Best Wishes,

Abby

API Changes:

 - feat: add support for defining toolboxes using pure json (#5392)

 - Migrate core/events/block_events.js to goog.module syntax (#5320)

 - Migrate core/procedures.js to goog.module syntax (#5265)

 - Migrate core/renderers/common/marker_svg.js to goog.module syntax (#5255)


Issues closed:

 - Problem loading source maps in blockly-webpack sample (#5507)

 - Simplify globalThis export (#5506)

 - how can i change the category arrow color? (#5481)

 - How to limit the workspace can only be extended to the bottom right corner? (#5477)

 - getFastTextWidthWithSizeString says canvasContext is null when called from keyboard nav tests (#5473)

 - For loop error (#5431)

 - Run Generated Code in a Server-side Docker Container (#5411)

 - Empty English strings localized into "<!-- -->" in French (#5399)

 - Blockly field_colour widget changes block color - only in Zelos renderer (#5377)

 - Blocks connected to blocks with multiple connections overlap with each other in Minimalist renderer (#5371)

 - Mocha and generator tests hang (#5345)

 - Bad link to block styles script in guide (#5341)

 - Update Tag module cleanup workflow to add instead of set labels (#5298)

 - Custom generator codelab. Expecting valid order from member and lists_create_with block. (#5291)

 - STATEMENT_PREFIX / STATEMENT_SUFFIX inconsistent (#5268)

 - iOS messages (#5260)

 - Support injecting Blockly into the shadowDom/Web Component (#5230)

 - Could not find "storage.js" (#5215)

 - Build Blockly problem (#5214)

 - Review contents of `blockly.js` (#5208)

 - Stacks with no next connection overlap statement input in Zelos (#5170)

 - Remove or deprecate exported names ending in `_` (#5135)

 - Update exports style in goog.module-migrated files (#5133)

 - Uncaught Error: Language "JavaScript" does not know how to generate code for block type "string_length". (#5113)

 - Closure base.js should not request (non-existent) closure/goog/deps.js (#5103)

 - Change python -> python3 when invoking scripts (#5080)

 - Remove rewrite_polyfills=false (#5039)

 - Mocha tests fail when loading goog.modules (#5030)

 - WARNING: definition of COLOUR_RGB_TOOLTIP in msg/json/sv.json contained a newline character. (#5017)

 - Zoom in/out with CMD on Mac (#4993)

 - Values of fields defined in the toolbox should use the message localization system (#4992)

 - Calling a.setParent(b) without connecting blocks a and b can cause major rendering issues and errors (#4989)

 - Remove themes from core (#4987)

 - Create Github Action to calculate release bundle size delta (#4977)

 - Error to generate blocks on complex input (#4964)

 - Empty comments not saved during serialization (#4960)

 - Scrolling has no effect in the workspace in Safari (#4957)

 - Add a 'Help' button to devsite (#4935)

 - Disabling only one field on a block (#4932)

 - Non autoclosing flyouts do not update zoom level correctly (#4931)

 - Buttons in horiz flyouts are missing vertical padding (#4914)

 - Getters for copy information (#4600)

 - Insertion marker throws unclear error when mutations are badly defined (#4485)

 - Enable stricterMissingRequire in build_tasks (#4457)

 - Fields don't group edits (#4189)

 - Ability to force a line break when inputs are inline (#3804)

 - Highlighted/disabled input statements look overlapped in zelos (#3802)

 - Make a single field uneditable without making the whole block uneditable (#2763)

 - Minimap demo is broken (#2729)

 - Make travis test errors easier to read (#2595)

 - I reference a function without return value (#2033)

 - Hidden statement inputs seem broken (#1967)

 - Code Demo on iOS: Double execution upon tapping run (#1949)

 - Reconsider ordinals in translation (#1657)

 - Typeahead Support for Blockly (#1583)

 - Finalize API for developer variables (#1535)

 - Decide how validators work on variable fields (#1529)

 - Icons aren't visible when the window size is less than 688px. (#1479)

 - Workspace comments (#1476)

 - Permissions framework (#1415)

 - Comment is not works in latest Chrome (#1382)

 - Make horizontal spacing between fields/inputs more consistent (#1347)

 - Allow newlines in field labels (multi-line fields) (#1159)

 - Two ways to create vars mean user can create the same var with different casing (#1115)

 - RFE: Delete variables without creating a new variable field block (#1105)

 - Consider moving all interactions with the block drag surface into the BlockDragger class (#1090)

 - Minimap demo (#924)


Pull Requests:

 - fix: JSDoc generation for modules without classes (#5519)

 - Keyboard nav names (#5517)

 - chore: update dev tools dev dependency (#5516)

 - Merge develop into goog_module (#5514)

 - Remove legacy keyboard nav (#5513)

 - chore: named exports for block* files (#5512)

 - chore: Remove declareLegacyNamespace from block-related files (#5511)

 - fix: enable missingRequire in build_tasks (#5510)

 - chore: remove deprecated functions (#5509)

 - refactor: Remove remaining references to `Blockly.*` from `goog.module`s (#5505)

 - Fix goog module jsdoc (#5504)

 - Project cereal goog 2 (#5502)

 - fix: Prevent request of (non-existent) closure/goog/deps.js (#5499)

 - chore: disables caching when running the playground (#5498)

 - chore: remove support for node 10 (#5496)

 - Migrate core/blockly.js to goog.module syntax (#5494)

 - Bump mocha from 8.4.0 to 9.1.1 (#5493)

 - Bump http-server from 0.12.3 to 13.0.2 (#5492)

 - Bump @blockly/dev-tools from 2.6.0 to 2.6.1 (#5490)

 - Migrate selected from Blockly to Blockly.common (#5489)

 - Clean up get/set accessor definitions (#5488)

 - feat: add JSON serialization - goog version (#5487)

 - refactor: Move Blockly.svgResize to Blockly.common (#5485)

 - refactor: move Blockly.deleteBlock out of blockly.js (#5483)

 - refactor: remove unused Blockly.onContextMenu_ (#5480)

 - Make several exported private fields/methods TEST_ONLY (#5479)

 - Bump @blockly/theme-modern from 2.1.22 to 2.1.24 (#5478)

 - refactor: Migrate Blockly.onKeyDown out of blockly.js (#5476)

 - Note Blockly.alert/confirm/prompt/hueToHex/hideChaff migrations in renamings.js (#5475)

 - Remove unused require of `Blockly` in `Blockly.ToolboxCategory` (#5474)

 - fix: adds a fix for npm install failing (#5471)

 - Reinstall to update package-lock.json (#5469)

 - test: Changes mocha tests to use node_modules instead of unpkg (#5467)

 - Re-export `Blockly.utils.*` submodules from `Blockly.utils` (#5465)

 - Move browser event utils from utils.js to browser_events.js (#5464)

 - Migrate Blockly.hueToHex to Blockly.utils.colour.hueToHex (#5462)

 - Don't monkey-patch `Blocky.utils.xml.document` in node module  (#5461)

 - Migrate hideChaff() from Blockly to WorkspaceSvg (#5460)

 - Migrate core/utils/xml.js to goog.module syntax (#5459)

 - feat: add JSON serialization - goog version (#5458)

 - Move alert/confirm/prompt to a new file, dialog.js (#5457)

 - Migrate core/inject.js to goog_module syntax (#5456)

 - chore: sets polyfill flag to true (#5454)

 - Move bump objects function into a separate module (#5453)

 - Revert inadvertently reverted change to `test/deps.js` (#5452)

 - Migrate `core/global.js` to named exports (#5451)

 - Migrate core/touch_gesture.js to goog.module syntax (#5449)

 - Migrate core/msg.js to goog.module syntax (#5448)

 - Bump @blockly/dev-tools from 2.5.4 to 2.6.0 (#5447)

 - Migrate core/utils.js to goog.module syntax (#5446)

 - fix: update code demo to include JSON (#5444)

 - Note behavior of centerOnBlock when block is part of a stack in the JSDoc (#5442)

 - Rename `Blockly.utils.IdGenerator` to `idGenerator` and move `Blockly.utils.genUid` to there (#5441)

 - Migrate tests goog module (#5440)

 - Migrate core/utils/useragent.js to goog.module syntax (#5435)

 - fix: dragging variables from flyout (#5434)

 - fix: loading blocks in RTL (#5433)

 - maxInstance fix (#5430)

 - fix: add missing requires for `Blockly.util.object` and `Blockly.util.Size` (#5427)

 - Create `scripts/migration/renamings.js` to collect information about renamed API entries (#5426)

 - fix: create and delete events, and the trashcan (#5425)

 - fix: serializing edited shadows (#5424)

 - fix: copy paste with json system (#5423)

 - fix: dragging blocks from the flyout that only have XML hooks (#5422)

 - fix: cereal backwards compatibility (#5421)

 - Use Blockly.utils.arrayRemove (#5420)

 - Allow command key zoom on mac devices (#5419)

 - Bump @blockly/dev-tools from 2.5.4 to 2.5.6 (#5417)

 - Bump webdriverio from 7.11.0 to 7.11.1 (#5416)

 - Bump @wdio/selenium-standalone-service from 6.12.1 to 7.10.1 (#5413)

 - Bump webdriverio from 7.6.0 to 7.11.0 (#5412)

 - fix: copy paste w/ JSO hooks (#5410)

 - fix: not being able to specifying variable names in toolbox (#5408)

 - fix: redo disconnect from shadow bug (#5405)

 - Bump webdriverio from 7.6.0 to 7.10.0 (#5403)

 - Renamed Blockly.connectionTypes to Blockly.ConnectionType for consistency (#5402)

 - Renamed Blockly.connectionTypes to Blockly.ConnectionType for consistency. (#5401)

 - fix: project cereal cleanup (#5398)

 - Migrate core/utils/useragent.js to goog.module syntax (#5396)

 - Migrate core/utils/svg.js to goog.module syntax (#5395)

 - Migrate core/utils/global.js to goog.module syntax (#5394)

 - Migrate core/touch.js to goog.module syntax (#5393)

 - feat: add support for defining toolboxes using pure json (#5392)

 - Migrate core/theme/zelos.js to goog.module syntax (#5391)

 - Migrate core/theme/classic.js to goog.module syntax (#5390)

 - Migrate core/renderers/zelos/measurables/row_elements.js to goog.module syntax (#5389)

 - Migrate core/renderers/zelos/measurables/inputs.js to goog.module syntax (#5388)

 - Migrate core/renderers/zelos/renderer.js to goog.module syntax  (#5387)

 - Migrate core/renderers/zelos/path_object.js to goog.module syntax (#5386)

 - Migrate core/metrics_manager.js to goog.module syntax (#5385)

 - Migrate core/renderers/zelos/measurables/rows.js to goog.module syntax (#5384)

 - Migrate core/renderers/measurables/rows.js to goog.module syntax (#5383)

 - Migrate core/renderers/measurables/connections.js to goog.module syntax (#5382)

 - Migrate core/renderers/measurables/row_elements.js to goog.module syntax (#5381)

 - Migrate core/events/ws_comment_events.js to goog.module syntax (#5380)

 - fix: insertion markers and change events to work with JSO hooks (#5378)

 - Bump yargs from 16.2.0 to 17.1.1 (#5373)

 - Fix blocks with no next connections overlapping statement input in Zelos (#5369)

 - Migrate core/renderers/thrasos/renderer.js to goog.module syntax (#5368)

 - Migrate core/renderers/thrasos/info.js to goog.module syntax (#5367)

 - Migrate core/renderers/zelos/marker_svg.js to goog.module syntax (#5366)

 - Migrate core/renderers/minimalist/renderer.js to goog.module syntax (#5365)

 - Migrate core/renderers/minimalist/info.js to goog.module syntax (#5364)

 - Migrate core/renderers/minimalist/constants.js to goog.module syntax (#5363)

 - Quiet the typings script unless you tell it to be verbose. (#5362)

 - Migrate core/renderes/zelos/info.js to goog.module syntax (#5361)

 - Quiet the typings script unless you tell it to be verbose. (#5359)

 - Migrate core/renderers/zelos/drawer.js to goog.module syntax (#5358)

 - Migrate core/renderers/zelos/constants.js to goog.module syntax (#5357)

 - fix: remove some attributes from the JSO system (#5356)

 - Bump @blockly/dev-tools from 2.5.3 to 2.5.4 (#5355)

 - Bump concurrently from 6.2.0 to 6.2.1 (#5354)

 - Bump google-closure-compiler from 20210601.0.0 to 20210808.0.0 (#5353)

 - Bump path-parse from 1.0.6 to 1.0.7 (#5352)

 - Bump normalize-url from 4.5.0 to 4.5.1 (#5351)

 - Add missing requireType (#5350)

 - Migrate core/renderers/minimalist/drawer.js to goog.module syntax (#5349)

 - Migrate core/renderers/measurables/inputs.js to goog.module (#5348)

 - Migrate core/renderers/geras/measurables/input.js to goog.module syntax (#5347)

 - Fix issue that prevented Mocha and generator tests from running on certain configurations (#5344)

 - Use `goog.requireType` when importing interfaces (etc.) (#5343)

 - Pull in translatewiki changes (#5342)

 - Update optional requires (#5340)

 - Add missing eslint disable line for required interface (#5339)

 - Migrate core/renderers/common/renderer.js to goog.module syntax (#5338)

 - Migrate core/renderers/common/debugger.js to goog.module syntax (#5337)

 - Migrate core/renderers/common/block_rendering.js to goog.module syntax (#5335)

 - Migrate core/workspace_svg.js to goog.module syntax (#5334)

 - Update script to use python3 command (#5333)

 - Migrate core/workspace.js to goog.module syntax (#5332)

 - Migrate core/widgetdiv.js to goog.module syntax (#5331)

 - feat: add throwing errors for bad shadows (#5330)

 - feat: upgrade block defs to have JSO serialization hooks (#5329)

 - Bump webdriverio from 7.6.0 to 7.9.1 (#5328)

 - Bump yargs from 16.2.0 to 17.1.0 (#5327)

 - Migrate core/events/variable_events.js to goog.module syntax (#5325)

 - Add labels instead of setting in github action (#5324)

 - Migrate core/block_svg.js to goog.module syntax (#5323)

 - Migrate core/block.js to goog.module syntax (#5322)

 - Migrate core/variables.js to goog.module syntax (#5321)

 - Migrate core/events/block_events.js to goog.module syntax (#5320)

 - Migrate core/xml.js to goog.module syntax (#5319)

 - Revert "fix: update tag module workflow to add labels instead of setting one label" (#5318)

 - Migrate core/toolbox/toolbox.js to goog.module syntax (#5317)

 - Add goog.module.get calls for WorkspaceComment and WorkspaceCommentSvg (#5316)

 - fix: update tag module workflow to add labels instead of setting one label (#5315)

 - Migrate core/names.js to goog.module syntax (#5314)

 - cleanup: Change type defs for state types to records (#5313)

 - Migrate core/input_types.js to goog.module syntax (#5312)

 - Migrate core/events/events_abstract.js to goog.module syntax (#5311)

 - Migrate core/renderers/measurables/types.js to goog.module syntax (#5309)

 - Migrate core/renderers/measurables/base.js to goog.module syntax (#5308)

 - Migrate core/renderers/geras/renderer.js to goog.module syntax (#5307)

 - Migrate core/renderers/geras/path_object.js to goog.module syntax (#5306)

 - Migrate core/renderers/geras/info.js to goog.module syntax (#5305)

 - Migrate core/renderers/geras/highlighter.js to goog.module syntax (#5304)

 - Migrate core/renderers/geras/highlight_constants.js to goog.module syntax (#5303)

 - Migrate core/events/events.js to goog.module syntax (#5302)

 - Bump @blockly/theme-modern from 2.1.21 to 2.1.22 (#5301)

 - Migrate core/renderers/geras/drawer.js to goog.module syntax (#5300)

 - Migrate core/events/ui_events.js to goog.module syntax (#5299)

 - Migrate core/toolbox/category.js to goog.module syntax (#5297)

 - Migrate core/contextmenu.js to goog.module syntax (#5296)

 - Remove extra output from generator and mocha tests (#5196) (#5295)

 - Remove require destructuring (#5294)

 - Migrate core/renderers/geras/constants.js to goog.module syntax (#5293)

 - Add supressPrefixSuffix to if/else block (#5290)

 - Migrate core/insertion_marker_manager.js to goog.module syntax (#5288)

 - Migrate core/options.js to goog.module syntax  (#5287)

 - Migrate core/events/events_block_drag.js to goog.module syntax (#5286)

 - Migrate core/events/events_bubble_open.js to goog.module syntax (#5285)

 - Migrate core/events/events_click.js to goog.module syntax (#5284)

 - Migrate core/shortcut_items.js to goog.module syntax (#5283)

 - Migrate core/events/events_marker_move.js to goog.module syntax (#5282)

 - Migrate core/events/events_selected.js to goog.module syntax (#5281)

 - Migrate core/events/events_toolbox_item_select.js to goog.module syntax (#5280)

 - Migrate core/events/events_theme_change.js to goog.module syntax (#5279)

 - Update build artifact sizes in check_metadata.sh (#5278)

 - Migrate core/events/events_trashcan_open.js to goog.module syntax (#5277)

 - feat: adds hooks for serializing plugins (#5276)

 - Migrate core/events/events_viewport.js to goog.module syntax (#5275)

 - Migrate core/events/workspace_events.js to goog.module syntax (#5274)

 - Bump @blockly/block-test from 1.1.2 to 1.1.3 (#5271)

 - Bump eslint from 7.31.0 to 7.32.0 (#5270)

 - Bump webdriverio from 7.6.0 to 7.9.0 (#5269)

 - Remove some deprecated functions (#5267)

 - Remove extra eslint disable from core/gesture.js (#5266)

 - Migrate core/procedures.js to goog.module syntax (#5265)

 - Add missing eslint disable to core/renderers/common/i_path_object.js (#5264)

 - Migrate core/workspace_drag_surface_svg.js to goog.module syntax (#5263)

 - More cleanup of blockly.js (#5262)

 - Migrate core/variables_dynamic.js to goog.module syntax (#5261)

 - Translation updates (specifically Ok/Cancel) (#5259)

 - Migrate core/trashcan.js to goog.module syntax (#5257)

 - Fix eslint warning in core/utils/dom.js (#5256)

 - Migrate core/renderers/common/marker_svg.js to goog.module syntax (#5255)

 - Migrate core/renderers/common/i_path_object.js to goog.module syntax (#5254)

 - Migrate core/workspace_dragger.js to goog.module syntax (#5253)

 - Migrate core/scrollbar.js to goog.module syntax (#5252)

 - Add regex lookarounds to check for require overlaps (#5251)

 - Migrate core/positionable_helpers.js to goog.module syntax (#5250)

 - Migrate core/browser_events.js to goog.module syntax (#5249)

 - Migrate core/variable_model.js to goog.module syntax (#5248)

 - Migrate core/variable_map.js to goog.module syntax (#5247)

 - Add serializing shadows as JSON for the JSON system (#5246)

 - Migrate core/toolbox/toolbox_item.js to goog.module syntax (#5245)

 - Move main workspace to a new file, common.js (#5244)

 - Move Ok/Cancel messages into Blockly. (#5243)

 - Migrate core/toolbox/separator.js to goog.module syntax (#5242)

 - Add handling for converting modules that are not leaf nodes (#5241)

 - Fix issue where the trashcan flyout would remain an active delete region even when closed with the continuous toolbox plugin (#5240)

 - Fix usage instructions for convert-file.sh (#5239)

 - Move clipboard functions to a separate namespace (#5237)

 - Migrate core/toolbox/collapsible_category.js to goog.module syntax (#5236)

 - Fix lint (#5235)

 - Migrate core/bubble.js to goog.module syntax (#5234)

 - Migrate core/workspace_comment_svg.js and core/workspace_comment_svg_render.js to goog.module syntax (#5233)

 - Migrate core/renderers/common/path_object.js to goog.module syntax (#5232)

 - Migrate core/workspace_comment.js to goog.module syntax (#5229)

 - Migrate core/workspace_audio.js to goog.module syntax (#5228)

 - Migrate core/warning.js to goog.module syntax (#5227)

 - Bump @blockly/block-test from 1.1.1 to 1.1.2 (#5226)

 - Migrate core/events/events_abstract.js to goog.module syntax (#5225)

 - Migrate core/zoom_controls.js to goog.module syntax (#5224)

 - Add comment to top of convert-file script for reference to syntax used (#5223)

 - Migrate core/tooltip.js to goog.module syntax (#5222)

 - Migrate core/theme_manager.js to goog.module syntax (#5221)

 - Migrate core/theme.js to goog.module syntax (#5220)

 - Migrate core/shortcut_registry.js to goog.module syntax (#5219)

 -  Migrate core/rendered_connection.js to goog.module syntax (#5218)

 - Migrate core/registry.js to goog.module syntax (#5217)

 - feat: add serialization and deserialization of comments (#5216)

 - Bump @blockly/dev-tools from 2.5.2 to 2.5.3 (#5213)

 - Bump @blockly/theme-modern from 2.1.20 to 2.1.21 (#5212)

 - Fix Mutator editor block positions sometimes being out of place for an instant (#5210)

 - Migrate core/gesture.js to goog.module syntax (#5209)

 - Migrate dropdown to goog.module syntax (#5207)

 - Apply fixes for convert-file script (#5206)

 - Migrate core/renderers/common/constants.js to goog.module syntax (#5204)

 - Migrate core/mutator.js to goog.module syntax (#5203)

 - Remove deconstructing properties and update logic (#5202)

 - Migrate core/marker_manager.js to goog.module syntax (#5201)

 - Add throwing exceptions during deserialization (#5200)

 - Migrate core/utils/size.js to goog.module syntax (#5197)

 - Remove extra output from generator and mocha tests (#5196)

 - Migrate core/input.js to goog.module syntax (#5195)

 - Migrate core/icon.js to goog.module syntax (#5194)

 - Migrate core/grid.js to goog.module syntax (#5193)

 - Migrate core/generator.js to goog.module syntax (#5192)

 - Migrate core/flyout_vertical.js to goog.module syntax (#5191)

 - Migrate core/flyout_horizontal.js to goog.module syntax (#5190)

 - Migrate core/interfaces/i_metrics_manager.js to goog.module syntax (#5188)

 - Bump @wdio/selenium-standalone-service from 6.12.1 to 7.8.0 (#5187)

 - Bump webdriverio from 7.6.0 to 7.8.0 (#5186)

 - Update package-lock to try to unstick dependabot (#5184)

 - Migrate core/flyout_button.js to goog.module syntax (#5182)

 - fix: touch up some deserialization behavior (#5181)

 - Migrate core/flyout_base.js to goog.module syntax (#5180)

 - Silences unused variable warnings for requires used in JSDoc. (#5179)

 - Migrate core/field_variable.js to goog.module syntax (#5178)

 - Migrate core/field_textinput.js to goog.module syntax (#5177)

 - Migrate core/menuitem.js to goog.module syntax (#5176)

 - Fix bug in convert-file script with processing arguments (#5175)

 - Migrate core/menu.js to goog.module syntax (#5174)

 - Migrate menu (#5173)

 - Migrate core/field_registry.js to goog.module syntax (#5172)

 - Migrate core/block_dragger.js to goog.module syntax (#5171)

 - Prompt before destructuring properties for a require (#5169)

 - Convert files script cleanup (#5168)

 - Migrate core/field_multilineinput.js to goog.module syntax (#5167)

 - feat: add initialization of blocks and event firing (#5166)

 - Migrate core/field_label_serializable.js to goog.module syntax (#5165)

 - Migrate core/field_label.js to goog.module syntax (#5164)

 - Migrate core/field_image.js to goog.module syntax (#5163)

 - Migrate core/field_dropdown.js to goog.module syntax (#5162)

 - Migrate core/field_colour.js to goog.module syntax (#5159)

 - Remove need for require instead of requireType for Block in ASTNode (#5157)

 - Migrate core/field.js to goog.module syntax (#5154)

 - Fix double execution in Code demo (#5152)

 - Migrate core/drag_target.js to goog.module syntax (#5151)

 - Migrate core/delete_area.js to goog.module syntax (#5150)

 - Migrate core/contextmenu_registry.js to goog.module syntax (#5149)

 - Update goog.module-migrated files to fix style issues (#5148)

 - Migrate core/field_checkbox.js to goog.module syntax (#5147)

 - Migrate core/field_number.js to goog.module syntax (#5145)

 - Migrate core/contextmenu_items.js to goog.module syntax (#5144)

 - Fix edge cases for convert-script (#5143)

 - Migrate core/keyboard_nav/tab_navigate_cursor.js to goog.module syntax (#5142)

 - Migrate core/keyboard_nav/ast_node.js to goog.module syntax (#5141)

 - Make constants.js have no side effects (#5140)

 - Add script for partially automating goog.module conversion steps (#5138)

 - feat: add deserialization of JSON block state (#5137)

 - Merge develop to goog module (#5136)

 - feat: add top level `save` and `load` functions for JSO serialization (#5132)

 - feat: add JSO serialization and deserialization of variables (#5131)

 - Only lint once in CI (#5128) (#5130)

 - Migrate core/keyboard_nav/basic_cursor.js to goog.module syntax (#5129)

 - Only lint once in CI (#5128)

 - Migrate core/keyboard_nav/cursor.js to goog.module syntax (#5127)

 - Localization for toolbox XML (#5126)

 - Migrate core/interfaces/i_registrable_field.js to goog.module syntax (#5125)

 - Migrate core/keyboard_nav/marker.js to goog.module syntax (#5123)

 - Migrate core/interfaces/i_toolbox_item.js to goog.module syntax (#5122)

 - Migrate core/connection_db.js to goog.module syntax (#5121)

 - feat: add serialization of child blocks (#5120)

 - Bump webdriverio from 7.6.0 to 7.7.8 (#5119)

 - Always have npm start serve the repository root (#5118)

 - Bump @wdio/selenium-standalone-service from 6.12.1 to 7.7.7 (#5117)

 - Bump eslint from 7.29.0 to 7.31.0 (#5116)

 - Bump @blockly/dev-tools from 2.5.1 to 2.5.2 (#5115)

 - Bump webdriverio from 7.6.0 to 7.7.7 (#5114)

 - Migrate core/interfaces/i_toolbox.js to goog.module syntax (#5111)

 - Migrate core/interfaces/i_styleable.js to goog.module (#5110)

 - Migrate core/interfaces/i_selectable.js to goog.module syntax (#5109)

 - Migrate core/interfaces/i_registrable.js to goog.module (#5108)

 - Migrate core/renderers/common/info.js to goog.module syntax (#5107)

 - Migrate core/connection_checker.js to goog.module (#5106)

 - Migrate core/interfaces/i_positionable.js to goog.module syntax (#5105)

 - Migrate core/interfaces/i_movable.js to goog.module (#5104)

 - Migrate core/connection.js to goog.module syntax (#5102)

 - Migrate core/interfaces/i_flyout.js to goog.module syntax (#5101)

 - Use pull request target trigger for tagging cleanup (#5100)

 - Revert "Auto-tag and add milestones for cleanup PRs" (#5099)

 - Migrate core/comment.js to goog.module syntax (#5098)

 - Migrate core/interfaces/i_draggable.js to goog.module syntax (#5097)

 - Migrate core/interfaces/i_drag_target.js to goog.module syntax (#5096)

 - Migrate core/interfaces/i_delete_area.js to goog.module syntax (#5095)

 - Migrate core/interfaces/i_deletable.js to goog.module (#5094)

 - Migrate core/interfaces/i_copyable.js to goog.module syntax (#5093)

 - Migrate core/interfaces/i_contextmenu.js to goog.module syntax (#5092)

 - Migrate core/interfaces/i_connection_checker.js to goog.module syntax (#5091)

 - Migrate core/interfaces/i_component.js to goog.module syntax (#5090)

 - Migrate core/interfaces/i_bubble.js to goog.module syntax (#5089)

 - Migrate core/interfaces/i_bounded_element.js to goog.module syntax (#5088)

 - Migrate core/interfaces/i_block_dragger.js to goog.module syntax (#5087)

 - Auto-tag and add milestones for cleanup PRs (#5086)

 - Migrate core/interfaces/i_accessibility.js to goog.module syntax (#5085)

 - Migrate core/interfaces/i_autohideable.js to goog.module syntax (#5084)

 - Migrate core/renderers/common/drawer.js to goog.module syntax (#5083)

 - Migrate core/component_manager.js to goog.module syntax (#5082)

 - Migrate core/bubble_dragger.js to goog.module syntax (#5081)

 - Migrate core/block_animations.js to goog.module syntax (#5079)

 - Migrate core/connection_types.js to goog.module syntax (#5078)

 - feat: upgrade fields to use new JSO hooks (#5077)

 - Migrate core/utils/toolbox.js to goog.module syntax (#5076)

 - Migrate core/utils/dom.js to goog.module syntax (#5075)

 - Update dependencies (#5074)

 - Add serialization of field values (#5072)

 - Migrate core/blocks.js to goog.module syntax (#5069)

 - Migrate core/block_drag_surface.js to goog.module syntax  (#5068)

 - Migrate core/utils/aria.js to goog.module. (#5067)

 - Migrate core/css.js to goog.module syntax (#5066)

 - Migrate core/extensions.js to goog.module syntax (#5065)

 - Migrate core/utils/metrics.js to goog.module syntax (#5064)

 - Removes eslint rules (#5063)

 - Migrate core/utils/svg_paths.js to goog.module syntax (#5062)

 - Migrate core/utils/rect.js to goog.module syntax (#5061)

 - Migrate core/utils/style.js to goog.module syntax (#5060)

 - Migrate core/utils/string.js to goog.module syntax (#5059)

 - Pull Request template for goog.module PRs (#5058)

 - Migrate object.js to goog.module syntax (#5057)

 - Migrate core/utils/idgenerator.js to goog.module syntax (#5056)

 - Migrate core/utils/math.js to goog.module syntax (#5055)

 - Add serialization of mutators (#5054)

 - Add serialization of basic block attributes to JSOs (#5053)

 - Add JSO hooks for blocks and fields. (#5052)

 - Bump eslint from 7.29.0 to 7.30.0 (#5051)

 - Bump webdriverio from 7.6.0 to 7.7.6 (#5050)

 - Migrate core/utils/keycodes.js to goog.module (#5049)

 - Migrate core/utils/deprecation.js to goog.module syntax (#5048)

 - Migrate core/utils/coordinate.js to goog.module syntax (#5047)

 - Configure eslint and Closure Compiler to accept ES6 (#5046)

 - Migrate core/utils/colour.js to goog.module syntax (#5045)

 - Bump webdriverio from 7.6.0 to 7.7.5 (#5043)

 - Bump @wdio/selenium-standalone-service from 6.12.1 to 7.7.5 (#5042)

 - Remove themes that were moved to blockly samples (#5041)

 - Update package-lock.json to lockfileVersion 2 (#5038)

 - Fix code in code demo executing twice on mobile (#5037)

 - Declare dependencies and use imports in mocha tests (#5036)

 - Add flag to webdriverio options (#5035)

 - Adds a serializer test suite - project cereal (#5034)

 - Added script and workflow to automatically update build artifact sizes in check_metadata.sh (#5033)

 - Remove unused parameters from test helpers (#5032)

 - Add missing whitespace to test files (#5031)

 - Bump @wdio/selenium-standalone-service from 6.12.1 to 7.7.4 (#5028)

 - Bump webdriverio from 7.6.0 to 7.7.4 (#5027)

 - Bump @blockly/theme-modern from 2.1.18 to 2.1.19 (#5024)

 - Bump @blockly/dev-tools from 2.4.0 to 2.5.1 (#5023)

 - Remove undesirable \n from sv.json (#5022)

 - Group field edits together for undo/redo (attempt #2) (#5021)

 - Fix vertical button padding in horizontal flyout (#5020)

 - Preparation for goog.module transition: base.js, deps.js (#5019)

 - Build system changes cleanup (#5018)

 - Move typings output into their own directory under `build` (#5016)

 - Revert "Get deploy files from the correct directory" (#5014)

 - Revert "Create Github Action to comment on PR while develop is frozen" (#5013)

 - Create develop_freeze.yml (#5012)

 - Update positionable jsdoc (#5011)

 - Get deploy files from the correct directory (#5010)

 - Adds automated release note generation (#5009)

 - Local http server for testing in uncompiled mode (#5008)

 - Create Github Action to comment on PR while develop is frozen (#5006)

 - Appengine deploy workflow on master for testing (#5005)

 - Added @google/blockly-eng as the owner of the entire repo (#5003)

 - Add a github action to generate release forum post content (#5002)

 - Enforce connection preconditions for setParent (#4999)

 - Initial commit for appengine deploy action (#4998)

 - Added script and workflow to automatically update build artifact sizes in check_metadata.sh (#4997)

 - Updates JSDoc in Block and BlockSvg (#4995)

 - Bump mocha from 8.4.0 to 9.0.2 (#4991)

 - Update metadata sizes for Q2 2021 release (#4986)

 - fix doc typo (#4985)

 - Bump typescript from 4.3.2 to 4.3.5 (#4982)

 - Merge master into develop. July 2021 Release (#4981)

 - Bump hosted-git-info from 2.8.4 to 2.8.9 (#4980)

 - Bump lodash from 4.17.19 to 4.17.21 (#4979)

 - Bump ws from 7.4.4 to 7.5.1 (#4978)

 - Rc 2021 7 (#4976)

 - Rebuild (#4975)

 - Allow inheriting of fromJson in fields (#4972)

 - Work around WebKit bug that prevents scrolling/zooming the workspace. (#4969)

 - Build in a temporary directory (#4968)

 - Enable static method inheritance. (#4967)

 - Update turtle mask placement on custom field and remove typo (#4962)

 - Add command to deploy beta version of demos (#4958)

 - Bump google-closure-compiler from 20210505.0.0 to 20210601.0.0 (#4950)

 - Bump mocha from 8.4.0 to 9.0.1 (#4948)

 - Fix serializing non-printable characters to XML (#4945)

 - Permit single field disabling (#4932) (#4941)

 - Reflow flyouts when zoom level changes to keep block zoom level in sync. (#4938)

 - Add check for removing shadow (#4929)

 - Bump postcss from 7.0.35 to 7.0.36 (#4928)

 - Add component abstract class (#4902)

 - Bump normalize-url from 4.5.0 to 4.5.1 (#4900)

 - Toolbox and Flyout as Positionables (#4899)

 - Bump trim-newlines from 3.0.0 to 3.0.1 (#4892)

 - Bump concurrently from 6.1.0 to 6.2.0 (#4867)

 - Bump jsdom from 15.2.1 to 16.6.0 (#4846)

 - Bump yargs from 16.2.0 to 17.0.1 (#4812)

 - issue_3706 (#4776)

 - Fix menu setHighlighted not scrolling to the menuItem (#4750)

 - Keep block drag surface under block (#4639)

 - Migrates the blocks directory to ES6 with goog.module (#4619)

 - Convert workspace.resizesEnabled_ into a counter (#3933)

 - Added optional data property to variable model with storing into/retrieving from XML (#3590)

 - Make XML format extensible (#3222)

 - Implement AI indented value inputs for Blockly (#3219)

 - Remove Dependency on dart:html (#2678)

 - Make XML request in test/generators async (#2451)

 - Adding support for multi-line labels in the toolbox (#1756)

 - Separates hues for variables_get and variables_set. (#688)

 - Namespaces on variables (#454)

 - Namespaces on variables (#452)

 - Shadow blocks morph to regular one on change (see #311), as an optional behavior (#319)

 - Implement typeahead search for blocks with a hotkey (#224)


Mark Friedman

unread,
Oct 5, 2021, 2:15:58 PM10/5/21
to blo...@googlegroups.com
So, I thought I might try to test my plugin against the new beta version of Blockly and ran into some difficulties.  My plugin was originally created with @blockly/create-package. I updated my Blockly dependency in package.json to "^7.20211209.0-beta.0" and ran "npm install".  That gave me some issues with peer dependencies:
...
npm ERR! code ERESOLVE
npm ERR! ERESOLVE could not resolve
npm ERR!
npm ERR! While resolving: @blockly/dev-...@2.6.1
npm ERR! Found: blo...@7.20211209.0-beta.0
npm ERR! node_modules/blockly
npm ERR!   dev blockly@"^7.20211209.0-beta.0" from the root project
npm ERR!
npm ERR! Could not resolve dependency:
npm ERR! peer blockly@"4.20201217.0 - 6" from @blockly/dev-...@2.6.1
npm ERR! node_modules/@blockly/dev-tools
npm ERR!   dev @blockly/dev-tools@"^2.5.6" from the root project
npm ERR!
npm ERR! Conflicting peer dependency: blo...@6.20210701.0
npm ERR! node_modules/blockly
npm ERR!   peer blockly@"4.20201217.0 - 6" from @blockly/dev-...@2.6.1
npm ERR!   node_modules/@blockly/dev-tools
npm ERR!     dev @blockly/dev-tools@"^2.5.6" from the root project
npm ERR!
npm ERR! Fix the upstream dependency conflict, or retry
npm ERR! this command with --force, or --legacy-peer-deps
npm ERR! to accept an incorrect (and potentially broken) dependency resolution.
npm ERR!
npm ERR! See /Users/mark/.npm/eresolve-report.txt for a full report.

So I tried again with "npm install --legacy-peer-deps" (and later with --force), which gave no npm errors.  However, when I tried to run the test webapp via "npm start", I received the following errors:

Failed to compile.

./test/index.js
Module build failed (from ./node_modules/eslint-loader/dist/cjs.js):
Error: Failed to load plugin 'jsdoc' declared in 'BaseConfig » /Users/mark/code/my-blockly-plugins/blockly-plugins/block-lexical-variables/node_modules/@blockly/eslint-config/index.js': Cannot find module 'eslint'
Require stack:
- /Users/mark/code/my-blockly-plugins/blockly-plugins/block-lexical-variables/node_modules/eslint-plugin-jsdoc/dist/rules/checkExamples.js
- /Users/mark/code/my-blockly-plugins/blockly-plugins/block-lexical-variables/node_modules/eslint-plugin-jsdoc/dist/index.js
- /Users/mark/code/my-blockly-plugins/blockly-plugins/block-lexical-variables/node_modules/@eslint/eslintrc/lib/config-array-factory.js
- /Users/mark/code/my-blockly-plugins/blockly-plugins/block-lexical-variables/node_modules/@eslint/eslintrc/lib/index.js
- /Users/mark/code/my-blockly-plugins/blockly-plugins/block-lexical-variables/node_modules/@blockly/dev-scripts/node_modules/eslint/lib/cli-engine/cli-engine.js
- /Users/mark/code/my-blockly-plugins/blockly-plugins/block-lexical-variables/node_modules/@blockly/dev-scripts/node_modules/eslint/lib/cli-engine/index.js
- /Users/mark/code/my-blockly-plugins/blockly-plugins/block-lexical-variables/node_modules/@blockly/dev-scripts/node_modules/eslint/lib/api.js
- /Users/mark/code/my-blockly-plugins/blockly-plugins/block-lexical-variables/node_modules/eslint-loader/dist/getOptions.js
- /Users/mark/code/my-blockly-plugins/blockly-plugins/block-lexical-variables/node_modules/eslint-loader/dist/index.js
- /Users/mark/code/my-blockly-plugins/blockly-plugins/block-lexical-variables/node_modules/eslint-loader/dist/cjs.js
- /Users/mark/code/my-blockly-plugins/blockly-plugins/block-lexical-variables/node_modules/loader-runner/lib/loadLoader.js
- /Users/mark/code/my-blockly-plugins/blockly-plugins/block-lexical-variables/node_modules/loader-runner/lib/LoaderRunner.js
- /Users/mark/code/my-blockly-plugins/blockly-plugins/block-lexical-variables/node_modules/webpack/lib/NormalModule.js
- /Users/mark/code/my-blockly-plugins/blockly-plugins/block-lexical-variables/node_modules/webpack/lib/NormalModuleFactory.js
- /Users/mark/code/my-blockly-plugins/blockly-plugins/block-lexical-variables/node_modules/webpack/lib/Compiler.js
- /Users/mark/code/my-blockly-plugins/blockly-plugins/block-lexical-variables/node_modules/webpack/lib/webpack.js
- /Users/mark/code/my-blockly-plugins/blockly-plugins/block-lexical-variables/node_modules/@blockly/dev-scripts/scripts/start.js
Referenced from: /Users/mark/code/my-blockly-plugins/blockly-plugins/block-lexical-variables/node_modules/@blockly/eslint-config/index.js
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:892:15)
    at Function.Module._load (internal/modules/cjs/loader.js:742:27)
    at Module.require (internal/modules/cjs/loader.js:964:19)
    at require (internal/modules/cjs/helpers.js:88:18)
    at Object.<anonymous> (/Users/mark/code/my-blockly-plugins/blockly-plugins/block-lexical-variables/node_modules/eslint-plugin-jsdoc/dist/rules/checkExamples.js:8:15)
    at Module._compile (internal/modules/cjs/loader.js:1075:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1096:10)
    at Module.load (internal/modules/cjs/loader.js:940:32)
    at Function.Module._load (internal/modules/cjs/loader.js:781:14)
    at Module.require (internal/modules/cjs/loader.js:964:19)

Any suggestions?

Thanks in advance.

-Mark


--
You received this message because you are subscribed to the Google Groups "Blockly" group.
To unsubscribe from this group and stop receiving emails from it, send an email to blockly+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/blockly/04952573-c849-40c2-b45d-00ac2ed2988en%40googlegroups.com.

Mark Friedman

unread,
Oct 11, 2021, 2:06:54 PM10/11/21
to blo...@googlegroups.com
Ping.

Has anybody had success testing their custom plugin with the 7.20211209.0-beta.0 version of Blockly?

Thanks in advance.

-Mark

Maribeth Bottorff

unread,
Oct 12, 2021, 8:32:02 PM10/12/21
to Blockly
Hey Mark,

Sorry we missed your earlier email.

I'm not sure exactly what's going on here... The error is related to eslint, but the eslint versions in blockly, blockly-beta, and dev-scripts should all be compatible so I'm not sure where this is coming from. If you look in `node_modules` is eslint installed? If so, what version? Is it possible your plugin is requiring a different version of eslint that isn't compatible and that's being masked by using --force? I would at least try deleting node_modules and running `npm install --legacy-peer-deps` again if you haven't yet.

But we could also solve your peer dependency issues to see if that's hiding a more useful error message. I think the peer dependency issues are because the version of dev-tools you're using isn't compatible with the blockly beta (well, at least it doesn't claim to be in its package.json). I believe we need to publish a beta version of dev-tools that is compatible with beta Blockly, and then you won't get the conflicting peer deps issue and won't need to use the flag. I will double check this with the team and hopefully publish the beta during our normal samples release on Thursday and get back to you.

If you want to try this out before then, you can download `dev-tools` locally, change both the `devDependencies` and `peerDependencies` in the package.json to rely on Blockly beta, then `npm run build && cd dist && npm link` to set up a symlink to the local dev-tools... then `npm link @blockly/dev-tools` in your plugin to use that symlink. Or you could wait until we publish the beta and see if it works then.

Sorry I don't have more direct ideas about the eslint error yet :/

Maribeth

Mark Friedman

unread,
Oct 12, 2021, 9:53:13 PM10/12/21
to blo...@googlegroups.com
Thanks for all the info, Maribeth!

Mark Friedman

unread,
Oct 13, 2021, 2:27:58 PM10/13/21
to blo...@googlegroups.com
With respect to your eslint questions, there is no eslint directly under node_modules, but there is one in node_modules/@blockly/dev-scripts/node_modules/eslint.  Interestingly, if I go back to the non beta-7 Blockly version and run 'npm install' (note no --legacy-peer-deps) there is a node_modules/eslint.  However, if I run 'npm install --legacy-peer-deps' in the non beta-7 Blockly version, there is no eslint directly under node_modules.  So, I think the problem is actually with --legacy-peer-deps.

Hope this helps.

-Mark

On Tue, Oct 12, 2021 at 5:32 PM 'Maribeth Bottorff' via Blockly <blo...@googlegroups.com> wrote:
Hey Mark,

Sorry we missed your earlier email.

I'm not sure exactly what's going on here... The error is related to eslint, but the eslint versions in blockly, blockly-beta, and dev-scripts should all be compatible so I'm not sure where this is coming from. If you look in `node_modules` is eslint installed? If so, what version? Is it possible your plugin is requiring a different version of eslint that isn't compatible and that's being masked by using --force? I would at least try deleting node_modules and running `npm install --legacy-peer-deps` again if you haven't yet.

...

Maribeth Bottorff

unread,
Oct 15, 2021, 6:57:30 PM10/15/21
to Blockly
Hi Mark,

I released a beta version of dev-tools that you can try: @blockly/dev-...@2.6.2-beta.0

If you specify this version as well as blockly beta version 7.20210930.0-beta.4 then I believe you should be able to install both without having to use --legacy-peer-deps or --force. Behind the scenes I also published a beta of dev-scripts, eslint-config, block-test, and all of the themes except modern.

The eslint issue was because we're using old versions of some packages that aren't compatible with eslint v7 which is what we're using. (I'm not entirely sure why this issue is only surfacing now, but I think it must have to do with the peer deps flag). I updated to the new packages in the beta versions, but I didn't go back and fix the new lint errors that they introduce. So if you use our linting script from dev-scripts then you may notice some additional warnings/errors that you can ignore for now. You will probably also notice a lot of spurious warnings about source maps which there are instructions for in the main post, but you can also ignore those. Sorry this is a bit complicated for now :/ Do let us know whether you are able to successfully use the beta please!

Maribeth

Mark Friedman

unread,
Oct 16, 2021, 7:56:54 PM10/16/21
to blo...@googlegroups.com
Thanks, Maribeth!  I'll let you know how it goes.

-Mark

--
You received this message because you are subscribed to the Google Groups "Blockly" group.
To unsubscribe from this group and stop receiving emails from it, send an email to blockly+u...@googlegroups.com.

Mark Friedman

unread,
Oct 17, 2021, 7:32:11 PM10/17/21
to blo...@googlegroups.com
The new version of @blockly/dev-tools and Blockly 7.20210930.0-beta.4 appears to install and build fine (except for those expected missing source map issues)!

Now, however, I have to deal with the fact that I can't access certain methods that I used to be able to.  Admittedly, Abby warned us in the original post about private methods and fields, so I'm not surprised.  I'll just note, though, that the issue is not limited to overriding those private fields and methods, as mentioned in the post, but accessing them at all.  At least that is the case for Blockly.FieldDropdown.validateOptions_, which is now simply an unexported constant function in field_dropdown.js.  I'm guessing that I will find a bunch more of these in my plugin.  This will be challenging! 

-Mark


--
You received this message because you are subscribed to the Google Groups "Blockly" group.
To unsubscribe from this group and stop receiving emails from it, send an email to blockly+u...@googlegroups.com.

feni...@google.com

unread,
Oct 20, 2021, 6:33:58 PM10/20/21
to Blockly
Hi Mark,

You're correct that this change made a lot of private-but-accessible stuff disappear. If you're running into things that you think should still be public, or that you can't find good workarounds for, please let us know.  (And if there are a lot, just send a list all in one go.)  

Rachel

Mark Friedman

unread,
Oct 20, 2021, 8:18:34 PM10/20/21
to blo...@googlegroups.com
Thanks. Rachel!  I'll try and do some more testing soon and get back to you all.

-Mark


Mark Friedman

unread,
Oct 22, 2021, 6:09:38 PM10/22/21
to blo...@googlegroups.com
Hey, the update of our plugin to support Blockly 7-beta went much easier than I feared.  ICYI, here's a summary of the issues I noticed in my testing and the work I did to fix them:

  • Blockly.mainWorkspace was deprecated on September 2021 and will be deleted on September 2022. Use Blockly.getMainWorkspace() instead.

    • Changed to Blockly.getMainWorkspace()

  • FieldDropdown.validateOptions_ no longer exists

    • Workaround: Copy non-exported function from Blockly source

  • Blockly.Events.Change is not a constructor

    • Changed to Blockly.Events.BlockChange

  • Blockly.hideChaff was deprecated on September 2021 and will be deleted on September 2022

    • Changed to Blockly.getMainWorkspace().hideChaff


-Mark

Abby Schmiedt

unread,
Oct 26, 2021, 12:34:16 PM10/26/21
to Blockly
Hi Mark!

Thanks for the response! I was wondering if you could expand a bit on what you are using FieldDropdown.validateOptions_ for? If possible, I think we would like to keep people from having to copy over non exported functions.

Thanks!
Abby

Mark Friedman

unread,
Oct 26, 2021, 3:07:39 PM10/26/21
to blo...@googlegroups.com
Abby,

  Our plugin does some very dynamic updates of a field which extends FieldDropdown.  Back in the day you could do a setValue() or setText() on a FieldDropdown and it would work, even if the value/text was not [yet] in the set of valid options.  It assumes (or at least hopes) that the new value will become a valid option at some point before the user interacts with the field.  For example, here is a comment from the old implementation of FieldDropdown.setValue:
// Value not found.  Add it, maybe it will become valid once set
// (like variable names).
The code upon which the plugin is based (i.e. from App Inventor) was written in those old days.  Now, however, the implementation of FieldDropdown has removed the setText() method and the setValue() method requires that the value you are trying to set be one of the valid options.  The most straightforward way that I could think of to enable something like the old behavior was to override the getOptions() method on our subclass of FieldDropdown in order to [somewhat artificially] add an extra value to the set of valid options before calling setValue().  However, I wanted the overridden version of getOptions() to do mostly the same thing as the current (i.e. pre-beta-7)  one, and since the current one uses FieldDropdown.validateOptions_() I needed to do the same. 

There's most likely a better way to do what I wanted, but I think it would require a more complex re-implementation than I felt able to do, at least for the initial version of the plugin.  I welcome any assistance in improving the plugin!

I hope this all makes some sense ;-)

-Mark


Reply all
Reply to author
Forward
0 new messages