🎉 Node-RED 2.0.0-beta.1 Released

:tada: The first beta release of Node-RED 2.0.0 is now available.

The Change Log has the full list of changes in this release, but here are the highlights.

Note: if any issues are reported against the beta, we'll update this post to list them here. If you hit a problem, please do check back here before adding a comment.

Known Issues

  • HTTP Request node does not work properly with all HTTP proxies.

Major Changes

The main focus of this release is dropping support for old versions of Node.js. This in turn has allowed us to make some major dependency updates which has required time and effort to do properly. As such, there are not lots of new features in this release - but there are some.

Node.js 12 or later required

Node-RED 2.0 does not support anything earlier than Node.js 12.

Updated module dependencies

As we have finally been able to drop support for Node 8 and Node 10, we've been able to update a number of our underlying dependencies across major versions.

In the majority of cases, this will be absolutely transparent to end users. But some of the updates are closely related to the functionality some of our nodes provide.

The following nodes have been updated and should, unless stated, behave exactly the same as before. All of our unit tests pass cleanly - but there's always a chance of edge cases our tests don't cover. If you use any of these nodes in your flows, please take a moment to verify they are still working as you'd expect.

  • HTTP Request: Reimplemented with a different underlying module. We have tried to maintain 100% functional compatibility, but some edge cases remain - particularly around HTTP Proxies.
  • JSON: The schema validation option no longer supports JSON-Schema draft-04.
  • HTML: Its underlying module has had a major version update. Should be fully backward compatible.

Renamed RBE node to Filter node

The RBE (Report By Exception) node is one of the hidden gems of the palette. Given how many times its the answer to a question on the forum, its clear we needed to make it more discoverable. With this release we have done two things:

  • moved it from node-red-node-rbe into the core palette
  • rebranded it the filter node.

Under the covers it still uses the rbe node type, so existing flows will not be affected. Also that means it will still show up if you search for rbe - so users following existing guides will still find it.

Removed tail node

We have removed node-red-node-tail as a default dependency. This means you may need to manually install that module to get the node back if your flows use it.

Runtime Features

Restructured default settings file

Not a feature as such, but we've reorganised the default settings file. The settings are now in a better order, with clearer sections to help users navigate.

We also have some plans for node-red-admin to help users generate their settings file with security already enabled... coming soon!

You can see the new default settings file here.

Default flows file name

We've also updated the default settings file to hardcode the flow file name to flows.json. Previously we left it unset, so the runtime would use the hostname to generate the flow file name. That would catch people out when moving between networks. As this is a change to the default settings file, all existing installs will continue to behave as they did before.

Editor Features

Monaco Text Editor

Thanks to @Steve-Mcl we now have optional support for the Monaco text editor. This gives a much richer code editing experience in the Function node and elsewhere.

For now, Node-RED will still use the ACE editor by default. To enable Monaco you need to edit the editorTheme section of your settings file to include a codeEditor section like this:


editorTheme: {
    codeEditor: {
        lib: "monaco"
    }
},

Steve has done a great job of verifying a lot of the more commonly used nodes will work with Monaco, but it is possible there are contrib nodes out there that assume the editor uses ACE. If you hit any problems, please let us know so we can raise with the module owner.

Inject node updates

Steve has also been busy adding a new button to the Inject node's edit dialog that will trigger the Inject node with the values from the edit dialog, rather than the values currently deployed. That makes it much easier to quickly inject different values whilst testing a flow.

Note the button in the main flow view will still inject the current deployed values as it always has.

CSS Theme Variables

To make it easier for nodes/plugins to style their UI elements so they honour any custom theme applied, we've added a selected of CSS Variables they can use to pick-up theme colours.

More details

Node updates

  • A new settings is available, fileWorkingDirectory that can be used to define the working directory used by the File nodes to resolve relative paths. If the setting isn't provided, the nodes will do what they did before - use the working directory of the Node-RED process.
  • When in rate-limiting mode, the Delay node can now dynamically set its rate using msg.rate.
  • The TLS node now allows you to specify an ALPN protocol

Be sure to read through the Change Log to see what else is in there.

Installing the beta

If you want to try out the beta, you will need specify node-red@next when you use npm to update. Without the @next you'll still get 1.x

So on a Pi you'd do:

sudo npm install -g --unsafe-perm node-red@next

Reporting problems

If you hit any problems, please report them either as a reply on this topic, or in the #dev slack channel. Please do not post new topics to the forum regarding the beta as that could confuse users who are not using the beta.

Outstanding work

We aren't going to rush the final 2.0 release as we really need to make sure the beta has had some good usage in the community to flush out any problems with the underlying module updates.

There are a few items we had in the plan for 2.0 that we'd still like to get done before the final release - although none are critical and could get bumped to 2.1.

And we really need to get the HTTP Request node working properly with proxies again.

17 Likes

Tried to install beta on a pi4 and install failed. Didn't get a screen shot of the first time but retried and here is a screenshot of the second attempt.

That looks like it succeeded. 1 package updated…

2 Likes

Ok. My bad, reports ver 2 beta on the correct machine. Sorry, queried wrong pi the first time.

Just in case you didn't know... if you drop down the menu in ver 2, from the programmer it says ver1.3.5, but from a command prompt it says ver2.

No it doesn't. The version number comes straight out of the package file. Are you sure you're checking the right Pi?



Pretty sure, 192.168.1.5

Your screenshots imply that you already have a 1.3.5 instance running on 192.168.1.5 on port 1880

So your 2.0.0 failed to start

1 Like

The command line says ver2, wouldn't that mean ver2 is running?

You have Node-RED 1.3.5 running.

You have installed Node-RED 2.0.0 - when you run it says 'port in use' because your 1.3.5 instance is still running.

You need to stop Node-RED and restart it. If you used the install script originally, then run node-red-stop and then node-red-start. Or reboot.

1 Like

Thought I had rebooted a couple of times but.... after last reboot things are sorted now

Upgraded my dev instance from 1.3.5 to 2.0 beta1.

So far so good, including using Monaco editor.

1 Like

All good here, RP3B - Buster OS.
I'm liking the templates within Monaco, for example, start typing node.send - multiple
:+1:

3 Likes

They're called "Snippets" Paul :wink:

I added about 40ish snippets of the most common ones that folk get wrong for example...

  • status
  • cloneMessage
  • getObjectProperty
  • setObjectProperty
  • setinterval
  • trycatch
  • node.error

to name but a few :slight_smile:

You can recognise a snippet by the square icon with dotted underline.

kIrjIGSOZR

yioG9qrDkf


I am keen to hear of issues with Monaco (I am sure it is not perfect - the changes were quite extensive) so please feedback & tag myself @steve-mcl

The more users who enable it and take it for a spin the better.

6 Likes

Monaco editor breaks the "node-red-contrib-blockly" node. Not a big deal to me, as I was just using it as a teaching tool for my kids a while back, but I thought I would report it.

Ace editor:

Monaco editor:

Ah - one node I didnt test (didnt realise that node had an editor in it - sorry @BartButenaers).

could you look in devtools console - see if there are any errors?

It may be calling an uncommon ACE function not "proxied" by the monaco compatibility code or calling into ACE directly.

When I open the blockly node in the flow I see this in the devtools console:

image

1 Like

Spot on, thanks.

EDIT:

I have a branch which adds setReadOnly proxy/compatibility function but there is still a modification of Barts Blockly node required (I have raised an issue - sorry for the troubles @BartButenaers )

If more issues crop up I will fix them in my branch and raise a PR to node-red once they have been flushed out.

2 Likes

Can you raise a draft PR from that branch now? We won't merge it whilst draft, but I'd appreciate having something to track.

Done Nick.

Should I just keep updating branch as issues are found and fixed?