Skip to content

Releases: bartbutenaers/node-red-contrib-blockly

Maintenance release v2.4.1

31 Jan 21:21
f017dbb
Compare
Choose a tag to compare
  1. Downgrade temporarily to Blockly version 10.2.2 because later versions contain a bug, which causes blocks to stick to the mouse pointer.
  2. Fix for the buffer_set_index block when numeric values are being tested (see pr 124).
  3. Theme loading fix in case a httpAdminRoot path is being set in the settings.js file.

Milestone release 2.4.0

22 Nov 21:26
2179473
Compare
Choose a tag to compare
  1. New block to convert a buffer to a list:

    image

  2. New block to convert a list to a buffer:

    image

  3. Copy-paste blocks between Blockly nodes:

    copy_paste_blocks

Milestone release v2.3.0

30 Oct 19:47
a0828cd
Compare
Choose a tag to compare
  1. New dropdown in the config node to support Blockly themes:

    image

    For example the black theme:

    image

  2. Bug fix for unresponsive flow editor for workspace with Function blocks.

  3. 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.

  4. The position of the 'expand' button is now fixed on the tabsheet for different browsers.

  5. Some other minor fixes

Thanks to @cymplecy, @ralphwetzel, @alicialics, @maribethb for their contributions!

Milestone release 2.2.0

18 Oct 20:08
fd4b0b1
Compare
Choose a tag to compare
  1. The backend code has been synced with the core function node of Node-RED version 3.1.0

  2. Similar to the core function node, the Blockly node now also has a timeout field:

    image

    This can be used to interrupt long running features.
    Note that - similar to the core function node - intervals/timers/loops are unfortunately not interrupted!

  3. Similar to the core function node, the Blockly node now also allows to get the (sub)flowId/nodeId" of this node:

    image

    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

17 Oct 18:11
e93faa7
Compare
Choose a tag to compare
  1. 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.

  2. Ability to search blocks in the toolbox, to avoid having to search manually through all the available categories:

    toolbox_search

  3. A minimap view (in fullscreen mode) that shows an overview of your entire workspace, and which part of the workspace is currently focussed on:

    image

    Note: this minimap should be activated explicit in the config node, if it needs to be shown:

    image

Maintenance release v2.0.1

25 Oct 18:59
0f9a727
Compare
Choose a tag to compare

Fix to allow this node to be used in the Node-RED backend for HomeAssistant (see issue).

Milestone release 2.0.0

24 Aug 20:21
Compare
Choose a tag to compare

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:

  1. Update of French translation and cleanup of all translations. Thanks to @echoix.

  2. Example flows now available via the "Import" menu in the Node-RED flow editor.

  3. Show red triangle on node when the generated code contains a syntax error.

Milestone 2.0.0 beta release 2

01 Aug 12:53
Compare
Choose a tag to compare
  1. Fix #89: The blocks to stop the timers contained both interval and timeout names (in their dropdown lists).

  2. Fix #90: The "Timers" category (and corresponding blocks) needed a color different from the "Node-RED category.

  3. The buffer_set_index block has been updated to handle bytes (= Buffer of length 1), strings, numbers and variables. Thanks to @cymplecy !

  4. The buffer_set_index block now generates a function, to avoid code duplication while generating Javascript code.

  5. 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

29 Jul 11:37
Compare
Choose a tag to compare

Besides a series of bugfixes, this milestone release contains a lot of new features:

  • Full screen mode, via the icon on the "Editor" tabsheet:

    Full screen

  • Extra tabsheet to show the Blockly workspace content as (readonly) XML:

    XML tabsheet

  • Search box (via ctrl-F) to search blocks in the workspace:

    Search box

  • Series of tools available via icons in the workspace editor:

    Workspace icons

    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:

    Config node

  • The config node offers a series of configurable options:

    Basic configuration

  • The config node can also be used to customize the entire toolbox, in all kind of ways:

    Customize toolbox

  • 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:

    Environment variable

  • The "Node-RED" category contains a new block to mark the input message processing as "done" (for the Complete-node):

    Message done

  • The node property "output count" is now also available:

    output count

  • The "Miscellaneous" category contains a new block for Javascript expressions:

    Javascript expression

  • The "Miscellaneous" category contains a new block for multiline Javascript coding:

    Multiline JS code

  • The "Text" category contains a new block for special characters:

    Special characters

  • The timestamp-block in the "Date/Time" category has now a dropdown with options:

    timezone

  • The "Date/Time" category contains a new block with a date picker:

    date picker

  • The new "Timers" category contains blocks for starting and stopping a timeout (to execute actions after a delay timeout):

    timeout

  • The new "Timers" category contains blocks for starting and stopping an interval (to execute actions periodically):

    image

  • 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):

    Error highlighting

  • 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

19 Jul 21:16
2d184e5
Compare
Choose a tag to compare
v1.1.0

Remove trailing blanc in full_date