Skip to content

Commit 2159d1c

Browse files
committed
Initial 3.0 release post
1 parent 44d0568 commit 2159d1c

File tree

1 file changed

+271
-0
lines changed

1 file changed

+271
-0
lines changed
Lines changed: 271 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,271 @@
1+
---
2+
layout: blog
3+
title: Version 3.0 released
4+
author: nick
5+
---
6+
7+
Node-RED 3.0 is now available to [install](https://npmjs.org/package/node-red). If upgrading, please read the [upgrade instructions](http://nodered.org/docs/getting-started/upgrading.html).
8+
9+
The [Change Log]() has the full list of changes in this release, but here are the highlights.
10+
11+
---
12+
13+
<iframe width="560" height="315" src="https://www.youtube.com/embed/eTEbqZcumz4" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
14+
15+
---
16+
- [Migrating from Node-RED 2.x](#migrating-from-node-red-2x)
17+
- [Editor Features](#editor-features)
18+
- [Context Menu](#context-menu)
19+
- [Junctions](#junctions)
20+
- [Debug Path Tooltip](#debug-path-tooltip)
21+
- [Continuous Search](#continuous-search)
22+
- [Default node names](#default-node-names)
23+
- [Monaco Text Editor](#monaco-text-editor)
24+
- [Remembering cursor position](#remembering-cursor-position)
25+
- [Accessing previous welcome tours](#accessing-previous-welcome-tours)
26+
- [Runtime Features](#runtime-features)
27+
- [Editing stopped flows](#editing-stopped-flows)
28+
- [Diagnostic Report](#diagnostic-report)
29+
- [Multiple static folders](#multiple-static-folders)
30+
- [Node updates](#node-updates)
31+
- [Dynamic Link Call node](#dynamic-link-call-node)
32+
- [Environment Variables in the Template node](#environment-variables-in-the-template-node)
33+
- [Debug node message count](#debug-node-message-count)
34+
- [Predefined HTTP Request headers](#predefined-http-request-headers)
35+
- [What's next?](#whats-next)
36+
37+
38+
## Migrating from Node-RED 2.x
39+
40+
Here are the key points you need to know when migrating to Node-RED 3.x.
41+
42+
- Node.js 14.x or later required
43+
- Internet Explorer no longer supported
44+
- Choose if you want to enable the [Stopping Flows](#) feature
45+
- Choose if you want to *disable* the [Runtime Diagnostics](#) feature
46+
47+
## Editor Features
48+
49+
### Context Menu
50+
51+
We have (finally) added a right-click context menu in the workspace. This gives
52+
you quick access to a lot of built-in actions in the editor and should help users
53+
discover more of the features available.
54+
55+
![context-menu|607x500, 50%](upload://ahr3u6whLJuID0ss5KwePrLuwcr.png)
56+
57+
Picking what options should be in the menu hasn't been a simple task. There are
58+
a lot of things that could have been included - so we had to get the right balance
59+
between having the right options there and making it too long and hard to find.
60+
61+
### Junctions
62+
63+
We have introduced a new special node type called `junction` that can make it
64+
easier to route the wires in a flow.
65+
66+
Unlike the various 'no-op' nodes that have been published to the community to help
67+
achieve similar results, the Junctions are far more compact and less obtrusive
68+
in the flow.
69+
70+
When you hover over a Junction, it expands to show input and output ports. You can
71+
move the junction by dragging its body, or add a wire by click/dragging on one of
72+
its ports - just as you do with nodes.
73+
74+
Junctions do not appear as regular nodes in the palette or flow outline, but can be
75+
added through the quick-add dialog (Ctrl-click in the workspace) or the new Context Menu.
76+
77+
You can also insert a Junction into an existing wire by slicing through it with the
78+
mouse by holding `Alt-Shift` when dragging across the wire. Note that some OS might
79+
use that same combination to move the active window, so this won't work there. We
80+
don't yet have a way to allow the mouse actions to be customised, so users affected
81+
by that would have to use the other methods to add Junctions.
82+
83+
84+
### Debug Path Tooltip
85+
86+
When hovering over a node name in the Debug sidebar, a new tooltip shows the full
87+
location of the node. This is useful when working with subflows, making it much
88+
easier to identify exactly which node generated the message.
89+
90+
Clicking on any item in the list will reveal it in the workspace.
91+
92+
![debug-path-tooltip|598x274, 50%](upload://1IJSO7heZ9hnNqjD3Fcd6546NF8.png)
93+
94+
### Continuous Search
95+
96+
When searching for things in the editor, a new toolbar in the workspace provides
97+
options to quickly jump between the search results.
98+
99+
![continuous-search|416x176, 50%](upload://7vvruWEZmJWtfnDgAhn5DtikKHf.png)
100+
101+
We've added a pair of new actions to help navigate the results:
102+
103+
- `core:search-previous` - shortcut: `shift-f`
104+
- `core:search-next` - shortcut: `f`
105+
106+
We've also added some more predefined searches, including the ability to restrict
107+
the search to the current flow.
108+
109+
![search-options]()
110+
111+
### Default node names
112+
113+
The `Debug`, `Function` and `Link` nodes are now given unique default names when
114+
they are added to the workspace.
115+
116+
![jkLU8QXabF|254x147](upload://8PawhSXjITrBs1SQwQWO8NZ8G96.gif)
117+
118+
This capability could be added to any node, including contrib nodes, via their
119+
`onadd` function. We chose just this initial set as they were the ones that would
120+
most benefit from having a name applied.
121+
122+
A new action has also been added that will apply an appropriate default name to
123+
any selected nodes that don't currently have a name:
124+
125+
- `core:generate-node-names`
126+
127+
### Monaco Text Editor
128+
129+
We added the `monaco` editor component as an alternative to the default `ace`
130+
editor a year ago in the 2.x release. It has proven to be very stable and provides
131+
a much richer user experience.
132+
133+
With 3.0, we have switched over to monaco as the default editor. New installs of
134+
Node-RED will pickup the change - existing installs will need to update (or remove) the
135+
`codeEditor` entry in their settings file.
136+
137+
The ultimate goal will be to remove `ace` entirely in the 4.0 release next year.
138+
139+
### Remembering cursor position
140+
141+
The editor now tries to restore your cursor position when you reopen a node's
142+
edit dialog. This is super handy with the Function node, amongst others, where
143+
you don't want to have to scroll back to where you were working each time you
144+
open the edit dialog.
145+
146+
147+
### Accessing previous welcome tours
148+
149+
We introduced the Welcome Tour back in 2.1.0 and it has been updated for each
150+
release. With this release, we've added a way to access the tours of the previous
151+
releases in the Help sidebar:
152+
153+
![image|641x500, 50%](upload://6GMUsps3wKbIrTu7dtYwADoTV61.png)
154+
155+
## Runtime Features
156+
157+
### Editing stopped flows
158+
159+
We've introduced the **optional** ability to run Node-RED without the flows
160+
themselves running. We already had Safe Mode that achieved a similar result, but
161+
with this new feature, you can stop and start the flows directly from the editor.
162+
The runtime will remember the state of the flows so when Node-RED starts up, the
163+
flows will stay in the same started/stopped state.
164+
165+
This feature is **not enabled by default**. To enable it, you need to add the
166+
following to your `settings.js` file:
167+
168+
```
169+
runtimeState: {
170+
enabled: true,
171+
ui: true
172+
}
173+
```
174+
175+
With that set, you get a new option in the Deploy menu:
176+
177+
![image|423x500, 50%](upload://oBjmzIfhHHT9Sb3BcK85dowefgv.png)
178+
179+
Clicking that option will stop the flows running, but you can continue editing
180+
them and deploy changes. Whilst stopped, the Inject/Debug node buttons will be
181+
disabled.
182+
183+
When the flows are stopped, the menu shows a start option instead:
184+
185+
![image|690x239, 50%](upload://glg1LTUOjHllLR4EOOfXPmRJojX.png)
186+
187+
### Diagnostic Report
188+
189+
We've added a new admin endpoint that returns information about the runtime and
190+
the system its running on. This can be used to quickly gather information when
191+
reporting an issue.
192+
193+
Within the editor you can see the information it returns by running the 'Show System Info'
194+
action.
195+
196+
We have taken care to ensure this does not return anything sensitive. In some cases
197+
it will indicate if a particular setting is set, but not what value it has been
198+
set to.
199+
200+
We realise that not everyone will want to have this exposed depending on how
201+
they use Node-RED. For that reason, the endpoint can be disabled by adding the
202+
following to `settings.js`:
203+
204+
```
205+
diagnostics: {
206+
enabled: false
207+
}
208+
```
209+
210+
211+
### Multiple static folders
212+
213+
The runtime has long-supported the ability to serve a folder of static content
214+
as part of its HTTP handling. Useful for providing static resources to webpages
215+
and the like.
216+
217+
With this release you can now specify multiple folders to serve from and, more
218+
importantly, to specify the http path each folder should be served from.
219+
220+
See [#3542](https://github.com/node-red/node-red/pull/3542) for details on how it
221+
can be used.
222+
223+
## Node updates
224+
225+
### Dynamic Link Call node
226+
227+
We added the Link Call node in Node-RED 2.1. It lets you create a flow that calls
228+
out to a Link In node and get a response back. The main limitation was you had
229+
to hardcode what Link In node you wanted it to call.
230+
231+
With this release you can now use `msg.target` to set the name of the Link In node
232+
it should call.
233+
234+
### Environment Variables in the Template node
235+
236+
The Template node can now access environment variables using the syntax:
237+
238+
```
239+
My favourite colour is {{env.COLOUR}}.
240+
```
241+
242+
### Debug node message count
243+
244+
The Debug node has a new option to report how many messages it has received in its
245+
status output.
246+
247+
### Predefined HTTP Request headers
248+
249+
The HTTP Request node now allows you to set request headers in the node's edit
250+
dialog - rather than having to always pass them in as message properties.
251+
252+
253+
## What's next?
254+
255+
As happened with 2.0, we've overrun our plan for getting 3.0 released in April. But
256+
the series of beta releases we have been doing have really helped improve the overall
257+
quality of this release.
258+
259+
The main challenge has always been getting enough time and attention dedicated
260+
to keep the release cadence going.
261+
262+
Our next scheduled main release will be 3.1 in late October/November. As ever,
263+
we have a healthy backlog of items to keep us busy - but ultimately it depends
264+
very much on the feedback from the community.
265+
266+
If you're interested in contributing to Node-RED, now is a good time to come over
267+
and chat with us in either the [forum](https://discourse.nodered.org) or [slack](https://nodered.org/slack).
268+
269+
Node-Red 2.x is now in maintenance mode - we won't be added any new features to it,
270+
but we will do maintenance releases with fixes as needed. In fact, we'll have a
271+
long overdue 2.2.3 release in the next couple of weeks.

0 commit comments

Comments
 (0)