Repository  -  API  -  Source


  • Ensure custom mustache context parent set in Template node fixes #1126
    • Display debug node name in debug panel if its known
    • Ensure auth-tokens are removed when no user is specified in settings
    • Ensure all a tags have blank target in info sidebar
    • Ensure links do not span tabs in the editor
    • Avoid creating multiple reconnect timers in websocket node
    • Fix inner reference in install fail message catalog entry Fixes #1120
    • Display buffer data properly for truncated buffers under Object property


  • Add colour swatches to debug when hex colour matched
    • Nodes with hasUsers set to false should not appear unused
    • Change hard error to verbose warning if using old node.js level
    • Don't filter debug properties starting with _ Fixes #1117
    • Node logged errors not displayed properly in debug pane Fixes #1116
    • Do not look for existing nodes when checking for wires on paste Fixes #1114
    • -v option not enabling verbose mode properly
    • Add node.js version check on startup



  • Drop support for node 0.10 and 0.12


  • Add option to colourise debug console output Closes #1103
  • Add property validation to nodes using typedInput
  • Add common validator for typedInput fields Closes #1104
  • Update debug node console logging indicator icon Closes #1094
  • Let exec node (spawn) handle commands with spaces in path
  • Add symbol to debug node to indicate debugging also to console.log
  • Change file node to use node 4 syntax (drops support for 0.8)
  • add info for httprequest responseUrl property
  • Add res.responseUrl to httprequest node response
  • Add support for flow and global context in Template node (#1048)
  • Added YAML parser node (#1034)
  • node-red-node-serialport removed as a default node


  • Add install/remove dialog to increase friction Closes #1109
  • Report node catalogue load errors Closes #1009
  • Properly report module remove errors in palette editor Fixes #1043
  • Update rather than hide install button after success install
  • Tweak search box styling
  • Display info tips slightly longer
  • Allow tips to be enabled/disabled via menu option
  • Info-tips update
  • Make typedInput keyboard navigable
  • update Font Awesome to 4.7.0
  • Add expression editor for jsonata
  • Overhaul keyboard handling and introduce editor actions
  • Add Japanese translation file(editor.json) (#1084)
  • Add quick-add node mode with cmd/ctrl-click
  • Add cmd/ctrl-click to quick add wires
  • Use json-stringify-safe to detect circular references in debug msgs
  • debug - format if time if correct length/range
  • Make Debug object explorable
  • Initial debug pop-out window
  • Add proper three-way diff view
  • Focus tray body when edit dialog opened
  • Hit enter to edit first node in selection
  • Add node delete button to edit dialog
  • Add notification when runtime stopped due to missing types Part of #832


  • Do not tie debug src loading to needsPermission Fixes #1111
  • Initialise nodeApp regardless of httpAdmin setting Closes #1096 #1095
  • Speed up reveal of search dialogs
  • Ensure flows exist before delegating status/error events Fixes #1069
  • Update package dependencies
  • Update MQTT to latest 2.2.1
  • Node status not being refreshed properly in the editor
  • Try to prevent auto-fill of password fields in node edit tray Fixes #1081
  • Fix whitespace in localfilesystem
  • fix bug where savesettings did not honor local settings variables (#1073)
  • Tidy up unused/duplicate editor messages Closes #922
  • Property expressions must not be blank
  • Tidy up merge commit of validatePropertyExpression
  • add port if wires array > number of ports declared.
  • Allow quoted property expressions Fixes #1101
  • Index all node properties for node search
  • Remove node 0.10 from travis config
  • update welcome message to use logger so it can be turned off/on if required (#1083)
  • Fix dynamically loading multiple node-sets from palette editor
  • Allow a node to reorder its outputs and maintain links Fixes #1031


  • Tcpgetfix: Another small check (#1070)
    • TCPGet: Ensure done() is called only once (#1068)
    • Allow $ and _ at start of property identifiers Fixes #1063
    • TCPGet: Separated the node.connected property for each instance (#1062)
    • Corrected 'overide' typo in XML node help (#1061)
    • TCPGet: Last property check (hopefully) (#1059)
    • Add additional safety checks to avoid acting on non-existent objects (#1057)
    • add --title for process name to command line options
    • add indicator for fire once on inject node
    • reimplement $(env var) replace to share common code.
    • Fix error message for missing node html file, and add test.
    • Let credentials also use $(...) substitutions from ENV
    • Rename insecureRedirect to requireHttps
    • Add setting to cause insecure redirect (#1054)
    • Palette editor fixes (#1033)
    • Close comms on stopServer in test helper (#1020)
    • Tcpgetfix (#1050)
    • TCPget: Store incoming messages alongside the client object to keep reference
    • Merge remote-tracking branch 'upstream/master' into tcpgetfix
    • TCPget can now handle concurrent sessions (#1042)
    • Better scope handling
    • Add security checks
    • small change to udp httpadmin
    • Fix comparison to "" in tcpin
    • Change scope of clients object
    • Works when connection is left open
    • First release of multi connection tcpget
    • Fix node.error() not printing when passed false (#1037)
    • fix test for CSV array input
    • different test for Pi (rather than use serial port name)
    • Fix missing 0 handling for css node with array input


  • Revert bidi changes to nodes and hide menu option until fixed Fixes #1024
    • Let xml node set options both ways
    • Bump serialport to use version 4
    • gpio node handle multiple bits of data returned in one go
    • HTTP In should pass application/octet-stream as buffer not string Fixes #1023
    • Handle missing httpNodeRoot setting properly
    • Config sidebar not handling node definition error properly
    • Add minimum show time to deploy spinner to avoid flicker
    • Add work-in-progress update button to palette-editor
    • Add log.removeHandler function
    • Add Crtl/Shift/p shortcut for manage palette
    • Add spinner to deploy button
    • Status messages from nodes in subflows not delegated properly Fixes #1016
    • fix spelling in join node info
    • Speed up tab scrolling
    • Update delay burst test to be more tolerant of timing Fixes #1013


  • Update default palette catalogue to use https
    • Disable palette editor if npm not found - and fix for Windows
    • Searching package catalogue should be case-insensitive Fixes #1010
    • contenteditable fields not handled in config nodes Fixes #1011
    • Change html link refs from _new to _blank to be standards compliant



  • Increase default apiMaxLength to 5mb and add to default settings Closes #1001
  • Add v2 /flows api and deploy-overwrite protection
  • Encrypt credentials by default
  • Ensure errors thrown by handlers don't percolate up


  • Mark nodes as changed when they are moved
  • Added parent containment option for draggable. (#1006)
  • Ignore bidi event handling on non-existent and non-Input elements Closes #999
  • Remove list of flows from menu
  • Allow nodes to be imported with their credentials
  • Add workspace search option
  • Add scrollOnAdd option to editableList
  • Add swift markup to editor for open whisk node
  • Scrollable tabs 👍
  • Allow linking to individual flow via url hash
  • Avoid duplicating existing subflows on import
  • Add import-to-new-tab option
  • Add new options to export-nodes dialog
  • Stop nodes being added beyond the outer bounds of the workspace
  • Default config nodes to global scope unless in a subflow Closes #972
  • Bidi support for Text Direction and Structured Text (#961)
  • Fix jQuery selector, selecting more than one help pane/popover and displaying incorrectly. (#970)
  • Fixes removeItem not passing row data to callback. (#965)
  • Move common components and add searchBox
  • Add initial palette sidebar


  • Inject node label - show topic for timestamp mode if short
  • Let change node set type if total match
  • Clean up status on close for several core nodes.
  • Change node: re-parse JSON set value each time to avoid pass-by-ref
  • Better handle HTTP Request header capitalisation
  • Enable ES6 parsing in Function editor by default Fixes #985
  • Update debug sidebar to use RED.view.reveal to show debug nodes
  • Add full path tip to file node, And tidy up Pi node tips
  • Remove WebSocket node maxlistener warning
  • Update mqtt-broker node to use fully name-space qualified status messages
  • Let UDP node better share same port instance if required
  • Add number of units to the delay node (rate) (#994)
  • Allow http middleware to skip rawBodyParser
  • Let change node move property to sub-property.
  • Add info to exec warning about buffered output if using python
  • TCP node: pass on latest input msg properties
  • Make sure MQTT broker is really set
  • Fix escape character catch in TCPGet + support 0x?? sequences
  • Fix split character in TCP Request node
  • Add CSS highlighting to the template node (#950)
  • Only update switch previous value after all rules are run


  • Add npm build/test scripts Closes #946 #660
  • Move travis to node 6 and 7 - drop 5 and 0.12



  • Tell ace about Function node globals. Closes #927
  • Tidy up mqtt nodes - linting and done handling. Closes #935
  • Fix invalid html in TCP and HTML node edit templates
  • Add proper help text to link nodes
  • Handle importing old mqtt-broker configs that lack properties
  • Update ace to 1.2.4
  • Allow config nodes to provide a sort function for their select list
  • Add log warning if node module required version cannot be satisfied
  • Handle empty credentials file. Closes #937
  • Add RPi.GPIO lib test for ArchLinux



  • Cannot clear cookies with http nodes
  • let HTML parse node allow set select
  • Validate nodes on import after any references have been remapped
  • Debug node handles objects without constructor property Fixes #933
  • Ensure 'false' property values are displayed in info panel Fixes #940
  • Fix node enable/disable over restart - load configs after settings init



  • Update trigger node ui to use typedInputs
  • Better handling of quotes in CSV node
  • Clarify the MQTT node sends msg.payload - closes #929
  • Inject node should reuse the message it is triggered with Closes #914
  • Stop trigger node re-using old message
  • Allow node.status text to be 'falsey' values


  • Handle DOMException when embedded in an iframe of different origin Fixes #932
  • Fix double firing of menu actions
  • Fix select box handling in Safari - fixes #928
  • Clear context in node test helper Fixes #858
  • Allow node properties to be same as existing object functions Fixes #880
  • Handle comms link closing whilst completing the initial connect
  • Protect against node type names that clash with Object property names Fixes #917
  • Clone default node properties to avoid reference leakage
  • Strip tab node definition when exporting
  • Check for null config properties in editor before over-writing them
  • Add hasUsers flag to config nodes


  • Add sql mode to ace editor
  • Keyboard shortcuts dialog update (#923)
  • Ensure importing link nodes to a subflow doesn't add outbound links Fixes #921
  • Add updateConfigNodeUsers function to editor
  • Scroll to bottom when item added to editableList
  • Form input widths behave more consistently when resizing Fixes #919 #920



  • Create default setting.js in user-specified directory. Fixes #908
  • MQTT In subscription qos not defaulting properly
  • Let exec node handle 0 as well as "0"



  • Cannot add new twitter credentials. Fixes #913
  • Support array references in Debug property field



  • Handle undefined property that led to missing wires in the editor
  • Remove duplicate 'Delete' entry in keyboard shortcut window. Closes #911
  • Add 'exec' to node-red-pi launch script. Closes #910



  • Replace edit dialog with edit tray
  • Enable shift-drag detach of just the selected link
  • Allow workspace tabs to be re-ordered
  • Scope keyboard shortcuts to dom elements
  • Ensure parent nodes marked as changed due to child config node changes
  • Validate all edit dialog inputs when one changes
  • Add editableList widget and update Switch/Change nodes to use it
  • Add option to filter Debug sidebar by flow and highlight subflow-emitting nodes
  • Back off comms reconnect attempts after prolonged failures
  • Prompt for login if comms reconnect fails authentication
  • Change style of nodes in subflow template view
  • Add and make it accessible from menu


  • Always log node warnings on start without requiring -v
  • Add support for loading scoped node modules. Closes #885
  • Add process.env.PORT to settings.js
  • Clear node context on deploy. Closes #870
  • Enable finer grained permissions in adminAuth


  • Enable config nodes to reference other config nodes
  • Add Split/Join nodes
  • Add Link nodes
  • Add support to HTTP In node for PATCH requests. Closes #904
  • Add cookie handling to HTTP In and HTTP Response nodes
  • Add repeat indicator to inject node label. Closes #887
  • Add javascript highlighter to template node
  • Add optional timeout to exec node
  • Add TLS node and update MQTT/HTTP nodes to use it
  • Let trigger node also send last payload to arrive
  • Add timestamp as a default typedInput and update Inject and change nodes to match,
  • Add QoS option to MQTT In node
  • Add status to exec spawn mode
  • Add Move capability to Change node
  • Update Serial node to support custom baud rates
  • Add support for array-syntax in typedInput msg properties
  • Add RED.util to Function node sandbox
  • Capture error stack on node.error. Closes #879


  • Add error handling to all node definition api calls
  • Handle null return from Function node in array of messages
  • Defer loading of token sessions until they are accessed. Fixes #895
  • set pi gpio pin status correctly if set on start
  • Prevent parent window scrolling when view is focused. Fixes #635
  • Handle missing tab nodes in a loaded flow config
  • Ensure typedInput dropdown doesn't fall off the page
  • Protect against node types with reserved names such as toString. Fixes #880
  • Do not rely on the HTML file to identify where nodes are registered from
  • Preserve node properties on import
  • Fix regression in delay node. topic based queue was emptying all the time instead of spreading out messages.
  • Throw an error if a Function node adds an input event listener
  • Fix hang on partial deploy with disconnected mqtt node
  • TypedInput: preload type icons to ensure width calc correct
  • Ensure tcp node creates a buffer of size 1 at least
  • Return editorTheme default if value is undefined
  • Fix RED.util.compareObjects for Function created objects and Buffers
  • Ensure default settings copied to command-line specified userDir


  • Add timed release mode to delay node
    • Enable link splicing for when import_dragging nodes. Closes #811
    • Fix uncaught exception on deploy whilst node sending messages
    • Deprecate old mqtt client and connection pool modules
    • Change node: add bool/num types to change mode Closes #835
    • Validate fields that are $(env-vars) Closes #825
    • Handle missing config nodes when validating node properties
    • Pi node - don't try to send data if closing
    • Load node message catalog when added dynamically
    • Split palette labels on spaces and hyphens when laying out
    • Warn if editor routes are accessed but runtime not started Closes #816
    • Better handling of zero-length flow files Closes #819
    • Allow runtime calls to RED._ to specify other namespace
    • Better right alignment of numerics in delay and trigger nodes
    • Allow node modules to include example flows
    • Create node_modules in userDir
    • Ensure errors in node def functions don't break view rendering Fixes #815
    • Updated Inject node info with instructions for flow and global options


  • Fix crash on repeated inject of invalid json payload
    • Add binary mode to tail node
    • Revert Cheerio to somewhat smaller version
    • Add os/platform info to default debug


  • Don't force reconnect mqtt client if message arrives (fixes the MQTT connect/disconnect endless cycle)
    • Add -p/--port option to override listening port
    • Invert config node filter toggle button colours so state is more obvious
    • Add timeout to httprequest node
    • Tidy up of all node info content - make style consistent
    • Make jquery spinner element css consistent with other inputs
    • tcp node add reply (to all) capability
    • Allow the template node to be treated as plain text
    • Validate MQTT In topics Fixes #792
    • httpNodeAuth should not block http options requests Fixes #793
    • Disable perMessageDeflate on WS servers - fixes 'zlib binding closed' error
    • Clear trigger status icon on re-deploy
    • Don't default inject payload to blank string
    • Trigger node, add configurable reset
    • Allow function properties in settings Fixes #790 - fixes use of httpNodeMiddleware
    • Fix order of config dialog calls to save/creds/validate
    • Add debounce to Pi GPIO node


  • Revert wrapping of http request object


  • Add 'previous value' option to Switch node
    • Allow existing nodes to splice into links on drag
    • CORS not properly configured on multiple http routes Fixes #783
    • Restore shift-drag to snap/unsnap to grid
    • Moving nodes with keyboard should flag workspace dirty
    • Notifications flagged as fixed should not be click-closable
    • Rework config sidebar and deploy warning
    • Wrap http request object to match http response object
    • Add 'view' menu and reorganise a few things
    • Allow shift-click to detach existing wires
    • Splice nodes dragged from palette into links
    • try to trim imported/dragged flows to [ ]
    • Move version number as title of NR logo
    • Moving nodes mark workspace as dirty
    • Ok/Cancel edit dialogs with Ctrl-Enter/Escape
    • Handle OSX Meta key when selecting nodes
    • Add grid-alignment options
    • Add oneditresize function definition
    • Rename propertySelect to typedInput and add boolean opt
    • Add propertySelect to switch node
    • Add propertySelect support to Change node
    • Add context/flow/global support to Function node
    • Add node context/flow/global
    • Add propertySelect jquery widget
    • Add add/update/delete flow apis
    • Allow core nodes dir to be provided to runtime via settings
    • Tidy up API passed to node modules
    • Move locale files under api/runtime components
    • Add flow reload admin api


  • Add attribute capability to HTML parser node
    • Add Pi Keyboard code node
    • Fix for MQTT client connection cycling on partial deploy
    • Fix for tcp node properly closing connections
    • Update sentiment node dependencies
    • Fix for file node handling of UTF8 extended characters


  • Add readOnly setting to prevent file writes in localfilesystem storage
    • Support bcrypt for httpNodeAuth
    • Pi no longer needs root workaround to access gpio
    • Fix: Input File node will not retain the file name


  • Fixes for TCP Get node reconnect handling
    • Clear delay node status on re-deploy
    • Update Font-Awesome to v4.5
    • Fix trigger to block properly until reset
    • Update example auth properties in settings.js
    • Ensure httpNodeAuth doesn't get applied to admin routes
    • TCP Get node not passing on existing msg properties


  • Enable touch-menu for links so they can be deleted
    • Allow nodes to be installed by path name
    • Fix basic authentication on httpNode/Admin/Static
    • Handle errors thrown in Function node setTimeout/Interval
    • Fix mqtt node lifecycle with partial deployments
    • Update tcp node status on reconnect after timeout
    • Debug node not handling null messages
    • Kill processes run with exec node when flows redeployed
    • Inject time spinner incrementing value incorrectly


  • Enable touch-menu for links so they can be deleted
    • Allow nodes to be installed by path name
    • Fix basic authentication on httpNode/Admin/Static


  • Change/Switch rules now resize with dialog width
    • Support for node 4.x
    • Move to Express 4.x
    • Copy default settings file to user dir on start up
    • Config nodes can be scoped to a particular subflow/tab
    • Comms link tolerates <5 second breaks in connection before notifying user
    • MQTT node overhaul - add will/tls/birth message support
    • Status node - to report status events from other nodes
    • Error node can be targeted to specific other nodes
    • JSON node can encode Array types
    • Switch node regular expression rule can now be set to be case-insensitive
    • HTTP In node can accept non-UTF8 payloads - will return a Buffer when appropriate
    • Exec node configuration consistent regardless of the spawn option
    • Function node can now display status icon/text
    • CSV node can now handle arrays
    • setInterval/clearInterval add to Function node
    • Function node automatically clears all timers (setInterval/setTimeout) when the node is stopped


  • Allow XML parser options be set on the message
    • Add 'mobile' category to the palette (no core nodes included)
    • Allow a message catalog provide a partial translation
    • Fix HTTP Node nls message id
    • Remove delay spinner upper limit
    • Update debug node output to include length of payload


  • Fix exclusive config node check when type not registered (prevented HTTP In node from being editable unless the swagger node was also installed)


  • Add Node 0.12 support
    • Internationalization support
    • Editor UI refresh
    • Add RBE node
    • File node optionally creates path to file
    • Function node can access clearTimeout
    • Fix: Unable to login with 'read' permission


  • Fix permissions issue with packaged nrgpio script
  • Add better help message if deprecated node missing


Fix packaging of bin scripts


  • Nodes moved out of core
    • still included as a dependency: twitter, serial, email, feedparser
    • no longer included: mongo, arduino, irc, redis
  • node icon defn can be a function
  • http_proxy support
  • httpNodeMiddleware setting
  • Trigger node ui refresh
  • editorTheme setting
  • Warn on deploy of unused config nodes
  • catch node prevents error loops



  • Performance improvements in editor
  • Palette appearance update
  • Warn on navigation with undeployed changes
  • Disable undeployed node action buttons
  • Disable subflow node action buttons
  • Add Catch node
  • Add logging functions to Function node
  • Add send function to Function node
  • Update Change node to support multiple rules



  • http request node passes on request url as msg.url
  • handle config nodes appearing out of order in flow file - don't assume they are always at the start
  • move subflow palette category to the top, to make it more obvious
  • fix labelling of Raspberry Pi pins
  • allow email node to mark mail as read
  • fix saving library content
  • add node-red and node-red-pi start scripts
  • use $HOME/.node-red for user data unless specified otherwise (or existing data is found in install dir)



  • httpAdminAuth was too aggressively deprecated (ie removed); restoring with a console warning when used
  • adds reporting of node.js version on start-up
  • mongo node skip/limit options can be strings or numbers
  • CSV parser passes through provided message object



  • subflow info sidebar more useful
  • adds missing font-awesome file
  • inject node day selection defaulted to invalid selection
  • loading a flow with no tabs failed to add nodes to default tab