Releases: bartbutenaers/node-red-contrib-blockly
Maintenance release v2.4.1
- Downgrade temporarily to Blockly version 10.2.2 because later versions contain a bug, which causes blocks to stick to the mouse pointer.
- Fix for the buffer_set_index block when numeric values are being tested (see pr 124).
- Theme loading fix in case a httpAdminRoot path is being set in the settings.js file.
Milestone release 2.4.0
Milestone release v2.3.0
-
New dropdown in the config node to support Blockly themes:
For example the black theme:
-
Bug fix for unresponsive flow editor for workspace with Function blocks.
-
A new node should have no generated javascript (instead of
return msg
) to make sure that the Blockly workspace is in sync with the generated javascript. -
The position of the 'expand' button is now fixed on the tabsheet for different browsers.
-
Some other minor fixes
Thanks to @cymplecy, @ralphwetzel, @alicialics, @maribethb for their contributions!
Milestone release 2.2.0
-
The backend code has been synced with the core function node of Node-RED version 3.1.0
-
Similar to the core function node, the Blockly node now also has a timeout field:
This can be used to interrupt long running features.
Note that - similar to the core function node - intervals/timers/loops are unfortunately not interrupted! -
Similar to the core function node, the Blockly node now also allows to get the (sub)flowId/nodeId" of this node:
Example flow:
[{"id":"69ee3af8e4d3d034","type":"inject","z":"c53e793dd2f3be09","name":"Start","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payloadType":"date","x":370,"y":420,"wires":[["93eed59ecd84aac8"]]},{"id":"93eed59ecd84aac8","type":"Blockly","z":"c53e793dd2f3be09","func":"msg['payload'] = node.path;\nnode.send([msg]);\n\nnode.path;\n","workspaceXml":"<xml xmlns=\"https://developers.google.com/blockly/xml\">\n <block type=\"node_object_set\" id=\"{HhMU.r!93@,X*U]cnOO\" x=\"-737\" y=\"-687\">\n <value name=\"object_field\">\n <shadow type=\"node_msg\" id=\"DSrocV,iepv#xI5CNnR*\"></shadow>\n </value>\n <value name=\"field_name\">\n <shadow type=\"text\" id=\"QY[2X`uT|j(|9hEjRP@i\">\n <field name=\"TEXT\">payload</field>\n </shadow>\n </value>\n <value name=\"value_field\">\n <shadow type=\"text\" id=\"#!`_0-/,RL$v7g2V3k5[\">\n <field name=\"TEXT\">Hello world</field>\n </shadow>\n <block type=\"node_properties\" id=\"BcIBs?%=ypB?Ritg]UX7\">\n <field name=\"PROPERTY_NAME\">PATH</field>\n </block>\n </value>\n <next>\n <block type=\"node_send\" id=\"FUZ=O)cx}X$rVR|}@noO\">\n <field name=\"OUTPUT_NR\">1</field>\n <value name=\"MESSAGE_INPUT\">\n <shadow type=\"node_msg\" id=\"X,6T+0~8X!$Xd?G}Q-Ot\"></shadow>\n </value>\n </block>\n </next>\n </block>\n <block type=\"node_properties\" id=\"iaKLve.kPk`8Zi+Vo=En\" x=\"-662\" y=\"-487\">\n <field name=\"PROPERTY_NAME\">PATH</field>\n </block>\n</xml>","outputs":1,"timeout":"0","blocklyConfig":"46e073e1.66e10c","backpackContents":[],"noerr":0,"name":"","x":540,"y":420,"wires":[["489476d9e944bd5c"]]},{"id":"489476d9e944bd5c","type":"debug","z":"c53e793dd2f3be09","name":"Blockly output","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":730,"y":420,"wires":[]},{"id":"46e073e1.66e10c","type":"blockly-config","language":"en","showTrashcan":true,"allowComments":true,"showZoomControl":true,"showMiniMap":true,"enableBackPack":true,"backpackContents":["{\"type\":\"object_create\",\"inline\":true,\"extraState\":\"<mutation xmlns=\\\"http://www.w3.org/1999/xhtml\\\" num_fields=\\\"1\\\"><field name=\\\"property name\\\"></field></mutation>\",\"fields\":{\"field1\":\"payload\"},\"kind\":\"BLOCK\"}","{\"type\":\"node_return_message\",\"fields\":{\"OUTPUT_NR\":\"1\"},\"inputs\":{\"MESSAGE_INPUT\":{\"shadow\":{\"type\":\"node_msg\"}}},\"kind\":\"BLOCK\"}","{\"type\":\"node_object_set\",\"inline\":true,\"inputs\":{\"object_field\":{\"shadow\":{\"type\":\"node_msg\"}},\"field_name\":{\"shadow\":{\"type\":\"text\",\"fields\":{\"TEXT\":\"payload\"}}},\"value_field\":{\"shadow\":{\"type\":\"text\",\"fields\":{\"TEXT\":\"\"}}}},\"kind\":\"BLOCK\"}","{\"type\":\"node_object_get\",\"extraState\":\"<mutation xmlns=\\\"http://www.w3.org/1999/xhtml\\\" action=\\\"GET\\\"></mutation>\",\"fields\":{\"action\":\"GET\"},\"inputs\":{\"object\":{\"shadow\":{\"type\":\"node_msg\"}},\"field_name\":{\"shadow\":{\"type\":\"text\",\"fields\":{\"TEXT\":\"payload\"}}}},\"kind\":\"BLOCK\"}"],"toolboxPosition":"left","renderer":"geras","theme":"dark","categories":[{"name":"Node-RED","files":["blockly-contrib/npm/node-red-contrib-blockly/lib/nodered/nodeRedBlocksCodeGen.js","blockly-contrib/npm/node-red-contrib-blockly/lib/nodered/nodeRedBlocksDefs.js","blockly-contrib/npm/node-red-contrib-blockly/lib/nodered/toolbox.xml","blockly-contrib/npm/node-red-contrib-blockly/messages/en.js"]},{"name":"Objects","files":["blockly-contrib/npm/node-red-contrib-blockly/lib/json/objectBlocksCodeGen.js","blockly-contrib/npm/node-red-contrib-blockly/lib/json/objectBlocksDefs.js","blockly-contrib/npm/node-red-contrib-blockly/lib/json/toolbox.xml","blockly-contrib/npm/node-red-contrib-blockly/messages/en.js"]},{"name":"Buffer","files":["blockly-contrib/npm/node-red-contrib-blockly/lib/buffer/bufferBlocksCodeGen.js","blockly-contrib/npm/node-red-contrib-blockly/lib/buffer/bufferBlocksDefs.js","blockly-contrib/npm/node-red-contrib-blockly/lib/buffer/toolbox.xml","blockly-contrib/npm/node-red-contrib-blockly/messages/en.js"]},{"name":"Date/time","files":["blockly-contrib/npm/@blockly%2Ffield-date/dist/date_compressed.js","blockly-contrib/npm/node-red-contrib-blockly/lib/datetime/dateTimeBlocksCodeGen.js","blockly-contrib/npm/node-red-contrib-blockly/lib/datetime/dateTimeBlocksDefs.js","blockly-contrib/npm/node-red-contrib-blockly/lib/datetime/toolbox.xml","blockly-contrib/npm/node-red-contrib-blockly/messages/en.js"]},{"name":"Timer","files":["blockly-contrib/npm/node-red-contrib-blockly/lib/timer/timerBlocksCodeGen.js","blockly-contrib/npm/node-red-contrib-blockly/lib/timer/timerBlocksDefs.js","blockly-contrib/npm/node-red-contrib-blockly/lib/timer/toolbox.xml","blockly-contrib/npm/node-red-contrib-blockly/messages/en.js"]},{"name":"Blockly extension","files":["blockly-contrib/npm/node-red-contrib-blockly/lib/extra/extraBlocksCodeGen.js","blockly-contrib/npm/node-red-contrib-blockly/lib/extra/extraBlocksDefs.js","blockly-contrib/npm/node-red-contrib-blockly/lib/extra/toolbox.xml","blockly-contrib/npm/node-red-contrib-blockly/messages/en.js"]},{"name":"Blockly standard","files":["blockly-contrib/npm/node-red-contrib-blockly/lib/basic/toolbox.xml"]}],"customizeToolbox":false,"name":""}]
Maintenance release v2.1.0
-
Upgrade from Blockly 6.x to 10.x
Note: the intermediate Blockly versions were not relevant for us, since it were technical migrations from javascript to typescript.
-
Ability to search blocks in the toolbox, to avoid having to search manually through all the available categories:
-
A minimap view (in fullscreen mode) that shows an overview of your entire workspace, and which part of the workspace is currently focussed on:
Note: this minimap should be activated explicit in the config node, if it needs to be shown:
Maintenance release v2.0.1
Fix to allow this node to be used in the Node-RED backend for HomeAssistant (see issue).
Milestone release 2.0.0
See the beta releases of 2.0.0 for a complete list of all new features. After the last beta, the following changes have been added:
-
Update of French translation and cleanup of all translations. Thanks to @echoix.
-
Example flows now available via the "Import" menu in the Node-RED flow editor.
-
Show red triangle on node when the generated code contains a syntax error.
Milestone 2.0.0 beta release 2
-
Fix #89: The blocks to stop the timers contained both interval and timeout names (in their dropdown lists).
-
Fix #90: The "Timers" category (and corresponding blocks) needed a color different from the "Node-RED category.
-
The buffer_set_index block has been updated to handle bytes (= Buffer of length 1), strings, numbers and variables. Thanks to @cymplecy !
-
The buffer_set_index block now generates a function, to avoid code duplication while generating Javascript code.
-
The stop-interval block now automatically stops the previous interval time, before a new interval timer is being started. As discussed on Discourse...
Milestone 2.0.0 beta release 1
Besides a series of bugfixes, this milestone release contains a lot of new features:
-
Full screen mode, via the icon on the "Editor" tabsheet:
-
Extra tabsheet to show the Blockly workspace content as (readonly) XML:
-
Search box (via ctrl-F) to search blocks in the workspace:
-
Series of tools available via icons in the workspace editor:
Remark: a backpack (per config node) can be used to create a list of your favorite blocks.
-
Config nodes have been introduced to setup configuration, which can be shared between multiple Blockly nodes:
-
The config node offers a series of configurable options:
-
The config node can also be used to customize the entire toolbox, in all kind of ways:
-
Blockly (and the Blockly plugins) are now loaded as NPM dependencies, instead of static library imports. Which allows us to upgrade to new Blockly versions very easy in the future.
-
Russian is now available as a new language. Although it is not up-to-date with the latest changes...
-
The backend part of the Blockly node is now up-to-date with the latest function node version, which means we can now a.o. offer the entire current function node API. See next points ...
-
The "Node-RED" category contains a new block to get the value of an environment variable:
-
The "Node-RED" category contains a new block to mark the input message processing as "done" (for the Complete-node):
-
The node property "output count" is now also available:
-
The "Miscellaneous" category contains a new block for Javascript expressions:
-
The "Miscellaneous" category contains a new block for multiline Javascript coding:
-
The "Text" category contains a new block for special characters:
-
The timestamp-block in the "Date/Time" category has now a dropdown with options:
-
The "Date/Time" category contains a new block with a date picker:
-
The new "Timers" category contains blocks for starting and stopping a timeout (to execute actions after a delay timeout):
-
The new "Timers" category contains blocks for starting and stopping an interval (to execute actions periodically):
-
Changes have been implemented to make sure the Blockly-node works well with the Monaco editor in Node-RED version 2.x.x. Thanks to @Steve-Mcl!
-
Normally the generated code should not contain syntax errors, but if that should happen those errors are now highlighted in the Monaco Javascript editor (to simplify troubleshooting):
-
BREAKING CHANGE: The "byte" block doesn't return a number anymore, but a buffer of length 1 (containing a number between 0 and 255).
-
Our readme page is updated and new tutorials have been added to the wiki.
Special thanks to @cymplecy, @jsccjj, the Blockly community and all translator folks!
Version 1.1.0
v1.1.0 Remove trailing blanc in full_date