Skip to content

Releases: TotallyInformation/node-red-contrib-uibuilder

Major template updates, new documentation.

27 May 19:19
37c6dc0
Compare
Choose a tag to compare

📌 Highlights

  • A new documentation section called "Creating Web UI's" has been added. The idea is to provide quick-reference guides on how to create common page elements and layouts using UIBUILDER. Some of the articles that were pare of the "Using UIBUILDER" section have been moved to this new section for clarity. What else needs to go here? Please let me know in the Node-RED Forum.

  • UIBUILDER standard templates can now be external repositories, loaded via Degit. You could already load an arbitrary template this way but now some of the standard templates have been moved so that they can be more easily maintained. The selected template now also shows a description.

    • Several templates have now been removed from core. They are now relegated to a separate repository and will no longer be updated. Of course, you can still copy the code yourself should you need a head-start and want to use them.
    • Most of the remaining templates are now external. They will reside in their own repositories on GitHub and can be maintained separately to UIBUILDER.
    • Templates now include a tsconfig.json file and a /types folder that describes the uibuilder client library. When writing front-end code, you should now get better code completion, descriptions and type checking.
  • The templates now all have an updated <div id="more" uib-topic="more"></div> element. While this has been a staple of the templates and examples for a while, the addition of the uib-topic="more" attribute means that you can now show the content of a msg.payload without having to write any JavaScript code. Don't forget to set msg.topic to "more" so that the uibuilder client library knows where to send the message.

Don't forget to try loading the updated templates to see the improvements.

Documentation

  • NEW Section: "Creating Web UI's"
    • NEW (Draft) Creating a web app - How to create a web app using UIBUILDER
    • NEW Grid layouts - Creating a content-heavy grid layout using CSS Grid
    • NEW Dashboard layouts - Creating a dashboard-style layout using CSS Grid
    • NEW Forms: User input handling - Handling input using forms and other input elements
    • SOON Tables
    • SOON Charts
    • SOON Maps
    • SOON Articles
    • SOON Lists
    • SOON Cards

Please let me know if you want to see other content in this section.

uib-brand.css styles & variables

uibuilder client library

  • TypeScript definition files now included. This gives a much better experience when using the client library. It works for JavaScript not just TypeScript. All of the templates now also contain copies.

Runtime Plugin

  • FIX Error in RED.util.uib.dp that always returned a single decimal place if zero dp's were requested.
  • NEW RED.util.uib.truthy(val) - Returns true if the value is truthy. This is useful for checking if a value is set or not. See the details in the documentation.

Node: uibuilder

  • Updated template processing to allow standard templates to be external.
  • Templates now show a description in the Editor config.
  • Removed templates: esm-blank-client, esm-vue3-nobuild, iife-blank-client, iife-vue3-nobuild, svelte-basic, vue2-bootstrap,vue2-simple. Reference copies placed in the deprecated templates repository.
  • External templates added: "Extended IIFE example", "Simple external ES module", "External Svelte", "Vie3 no build step, IIFE client". Each with a link to the corresponding GitHub repository.
  • FIXED The uibuilder node's "Node details" button now correctly opens the instance settings page in the Node-RED Editor. It was previously trying to open a non-existent page.
  • FIXED The uibuilder node's "Node details" button now correctly opens the instance details page.

Background code improvements

  • Moved the uibuilder node's uib var to nodes/libs/uibGlobalConfig.cjs as a module. Enables being able to require it rather than pass it in libs and other nodes. Another step towards a more modular codebase.
  • Started renaming js files to better indicate whether they use script/CommonJS (*.cjs), or ESM (*.mjs). Mostly to help with ESLINT.
  • Lots of code cleanup and linting to make the code more readable and maintainable.

New feature and bug fixes

30 Mar 14:51
f2cbfde
Compare
Choose a tag to compare

📌 Highlights

  • NEW NODE uib-sidebar - Creates a simple sidebar in the Node-RED Editor page. HTML for the sidebar is edited in the node. Messages sent to the node are passed to the sidebar letting you change any attributes and inner HTML or text dynamically. Any input elements in the HTML automatically send changes back to the output of the node. A new example flow is available that demonstrates useage.

  • Updated applyTemplate function in the ui/uibuilder client libraries, gives a lot more flexibility.

  • Input form improvements.

    • uib-element's form type now adds an HTML ID to the form itself in the format form-<element-id>. This means that using a button inside a form, the resulting message will identify the form that the button belongs to. This is particularly useful if you have multiple forms on a page.
    • When using the eventSend function (which is also used by uib-element), file input types now add more meta-data to the returned file-upload message. See the details below. Making it easier to process the file upload and combine with other data from a form.
  • Bug fixes

    • uibuilder no longer overrides Node-RED's built-in ExpressJS server settings in regards to JSON upload sizing.

NEW Node: uib-sidebar

Creates a simple sidebar in the Node-RED Editor page. HTML for the sidebar is edited in the node.

Messages sent to the node are passed to the sidebar allowing you to change any attributes and inner HTML or text dynamically.

Any input HTML elements automatically send changes back to the output of the node (in the future, wrapping inputs in a form element will allow sending only on button press but this isn't yet implemented).

This is the first release of this node and further improvements will be added in the future. Check the "next" and "roadmap" documents for future plans.

A new example flow has been added to demonstrate the sidebar node.

Node: uib-element

  • The form element type:

    • Now adds an HTML ID to the form itself in the format form-<element-id>. This means that using a button inside a form, the resulting message will identify the form that the button belongs to. This is particularly useful if you have multiple forms on a page.
    • Adds the onclick event handler to the button onclick attribute rather than it being hidden away in separate event handler code. This means that it will be retained if saving the resulting HTML. Similarly, the reset button is now type="reset" for the same reason.

NEW/UPDATED BUILT-IN WEB COMPONENTS (AKA "Widgets")

These are pre-built into the uibuilder client library and can be used in your HTML without the need for writing JavaScript.

  • All of the components built into the uibuilder client library have been updated to match the latest standards used in my independent web components as these represent the latest HTML standards and best practices.

  • <apply-template> - Takes the content of a <template> HTML tag and appends that content as children of itself. Allowing you to re-use standard, repeatable HTML without the need for JavaScript coding and without the need of sending potentially lengthy HTML from Node-RED every time it is needed. Any existing content between the <apply-template> tags is replaced. However, if the template has a slot, the existing content is placed back into the slot. This allows you to wrap existing content with a template.

  • <uib-meta> - Display's facts about the current page such as its file size, when it was created and when it was last updated. Obtains the data from Node-RED. The type attribute updated for ease of use.

  • <uib-var> - A web component that can be used to display dynamic content. It can be used to display simple text, HTML, lists, tables, and more. It can also be used to send data back to Node-RED.

NEW Front-end library: tinyDom.js

When used with UIBUILDER, exposes a new global object dom. Enables easy changes to your uibuilder-enhanced web pages by providing easy functions to add to, remove or update the existing page.

Also includes a new message schema that allows you to send messages from Node-RED to the client to update the DOM. This is a much simplified low-code feature.

See the documentation for more information.

Front-end library: uibuilder.js

  • Form handling: File input types now add more meta-data to the returned file-upload message.

    • A seq number and a seqCount for multi-file submissions.
    • id is the HTML id of the source input element.
    • formId is the HTML id of the form that the input element belongs to. The formId won't exist if the input was submitted without a form.
    • tempUrl. This is probably the easiest property to use if you need to merge data with the main message since it will always be unique.
    • clientId, pageName and tabId. This is duplicate data if you've turned on the _uib property in your uibuilder node but it should make it easier to filter/switch messages in your flows.
    • data object. This contains any data-* attributes from the input element. Making it easier to attach additional information when uploading the file. You could use an onchange event on another input that updates a data-* attribute on the file input element.
  • Updated functions

    • eventSend - Improved handling of file uploads including additional meta-data as shown above.
    • uploadFile - Improved handling of file uploads. Now takes an optional 2nd object parameter of meta-data that will be added to the file-upload message.
    • applyTemplate, $, $$ - See ui.js section below.

Front-end library: ui.js

NB: Updates to this, also update the main uibuilder client library.

  • UPDATED FUNCTIONS

    • applyTemplate - Now has 3 modes of operation. insert appends the template as the 1ST CHILD of the target. replace replaces all of the child content of the target. wrap puts the targets previous content into the 1ST SLOT of the template (if present), this allows you to wrap existing content with a template. Also improved error handling and did some code cleanup.
    • $ - Now has an optional 3rd parameter to allow specifying the search root context. Defaults to document which was previously the only option. If used, must be a valid HTML element. Brings it further into line with similar functions in other libraries.
    • $$ - Now has an optional 2nd parameter to allow specifying the search root context. Defaults to document which was previously the only option. If used, must be a valid HTML element. Brings it further into line with similar functions in other libraries.

Server library: web.js

  • Bug fix Moved JSON and URL Encoded data upload middleware from being loaded for both custom and Node-RED ExpressJS servers to only being loaded for the custom server. Ref. This was blocking people from uploading large JSON payloads when using Node-RED's built-in ExpressJS server.

Documentation

  • NEW HOW-TO - Form handling - How to handle user input in forms. This includes a full example of how to use the new uib-element node to create a form and send the data back to Node-RED as well as using individual input elements.
  • NEW HOW-TO - Send file to server - How to send a file to the Node-RED server using an HTML input element. This is useful for uploading files from a client to the server.
  • Updated the documentation of the eventSend FE function.
  • Updated the documentation for the $ FE function.
  • Updated the documentation for the $$ FE function.
  • Updated the documentation of the uploadFile FE function.
  • Updated the documentation of the applyTemplate FE function.
  • Updated the documentation for the new uib-sidebar node.
  • Docsify configuration updated so that the description for the currently shown page is reflected in the browser's meta description tag. This should help with search engine optimisation and when pasting a link from the GitHub version of the documentation into social media.

Other changes

  • Runtime log messages now all start with 🌐 to help them stand out from other log entries. All log output should then have [....] after the icon but before the information and data. The content of the braces being uibuilder: followed by additional information of what code module/function generated the log entry.
  • Runtime warning log messages now all start with 🌐⚠️ to help them stand out from other log entries.
  • Runtime error log messages now all start with 🌐🛑 to help them stand out from other log entries.
  • Much previously deprecated code has been removed.
  • Code linting has move from ESLINT v6 to v9. This was horrid work! And resulted in me raising 2 bugs with the ESLINT team. The new version of ESLINT is much more strict and has found a number of issues that were previously missed. This should result in better code quality.

Experimental

These are future features being worked on but not yet ready for use.

  • dom/tinyDom - This is both a client-side new feature and a new message schema that facilitates data-driven DOM updates (e.g. web page updates) from both Node-RED and client code. It is a much simplified low-code feature. With it, you can easily create new content and update existing content on your web pages. It does, however, require some familiarity with HTML.

  • logger - A next-gen client-side logging library.

Minor feature release

03 Jan 18:17
Compare
Choose a tag to compare

📌 Highlights

  • Any Node-RED custom node can now send a message to a uibuilder client! In your runtime code, add RED.events.emit('UIBUILDER/send/<url-name>', {payload: 'Hi from my custom node!'}) where <url-name> is the URL set in a deployed uibuilder node. The data will be sent to all browser tabs connected to that uibuilder endpoint. Note though that this bypasses any uib-cache node.

  • You can now send a message from Node-RED to a connected client from a Function Node! Simply add RED.util.uib.send('uibname', {....}) to your function code. This will send a message to all connected clients for that uibuilder instance.

  • For front-end coders, you now have access to a number of table manipulation functions. Making it very easy to create and manipulate tables in your web pages from simple input data. You can add and remove tables, table rows and add event handlers (e.g. click) to rows or cells.

General changes

  • Added ability to send messages from Node-RED to a connected client from a Function Node. Simply add RED.util.uib.send('uibname', {....}) to your function code. This will send a message to all connected clients for that uibuilder instance.

  • References to fs-extra 3rd-party library removed from all nodes & libraries except libs/fs.js.

  • Socket security check tool added to all TotallyInformation GitHub repositories including UIBUILDER. Provides significant supply-chain security and privacy checks.

  • All references to node.js's fs library now restricted to libs/fs.js.

  • To help further improve the development of the brand css, LightningCSS is now used to compile the source CSS. This ensures that the CSS is not using too new CSS options and improves the performance of the CSS. Additionally, stylelint is now used to check the CSS for errors and warnings.

  • Now using LightningCSS to compile source CSS and ensure not using too new CSS options.

  • Some unused NodeJS files have been removed.

  • @totallyinformation/ti-common-event-handler dependency package now removed completely. RED.events is used throughout, all uibuilder events start with UIBUILDER/.

  • To make it easier to create new elements in the future. Moved no-code element runtime processing to a common folder, nodes/elements. Added Editor API's and moved processing out of the uib-element runtime to separate module. Also moved element description and advanced options HTML to nodes/elements/en-US.

  • The common code and css files in the resources folder (ti-common.js and ti-common.css) have been renamed to editor-common.js and editor-common.css respectively. This is to make it clearer that these are used in the Node-RED editor only.

  • The uib-plugin library now renamed to uib-editor-plugin for clarity.

  • New uib-runtime-plugin library added. Now manages most of the additions to RED.util.uib which contains functions made available to Node-RED function nodes.

uib-brand.css styles & variables

  • NEW Utility classes

    • square - Make something square or rectangular.

    • round - Make something circular, oval or pill-shaped

      Each of these are controlled by simple CSS variable overrides. See the live file for details on use.

  • Core font now changed to match the uib-brand.css. No more Google fonts! This should make the UI more consistent and faster to load.

  • Now using LightningCSS to compile source CSS and ensure not using too new CSS options.

  • Added text-wrap: balance to h1, h2, h3, h4, h5, h6, heading and added text-wrap: pretty to p, li, figcaption - these make the elements look a little nicer when text is wrapping.

  • Added container-type: inline-size to header, footer, main, section, article. This is in preparation for the future use of Container Queries which are a much more flexible alternative to Media Queries for controlling responsive layout breakpoints. Container Queries are still very new and not yet supported widely enough to use.

  • Added some additional "reset" tweaks for improved visual style.

Node: uibuilder

  • Node-RED Editor:
    • FIXED When a URL is changed, the IDE editor url is now updated automatically. This is particularly important when copying/pasting a uibuilder node.

Front-end code templates

  • Removed optional link to legacy CSS style library.

Front-end library: uibuilder.js

  • NEW FUNCTIONS

    • buildHtmlTable - Returns HTML of a table created from the input data.
    • createTable - Uses buildTable to create a new table and attaches to a parent element in the DOM.
    • tblAddRow - adds a new row to an existing table.
    • tblRemoveRow - removes a row from an existing table.
    • tblAddListener - adds row/cell listeners to the 1st tbody of a table. Will send a msg back to Node-RED when used with uibuilder.
  • Updated the front-end index.html templates to highlight that the uibuilder client library MUST be included. After seeing several people take it out.

  • Added uibuilder:propertyChanged:${prop} custom event when a managed variable changed. Has the same event.details as the 'uibuilder:propertyChanged' event. This event can be used instead of the uibuilder.onChange('prop', ....) function if preferred.

  • Updated uibuilder:propertyChanged and uibuilder:propertyChanged:${prop} custom events to include oldValue as one of the event details. Will be undefined if the property is new.

  • Updated uibuilder.eventSend function to include msg._ui.dataset which contains any data-* attributes from the element that triggered the event.

Front-end library: ui.js

  • NEW METHODS
    • buildHtmlTable - Returns HTML of a table created from the input data.
    • createTable - Uses buildTable to create a new table and attaches to a parent element in the DOM.
    • tblAddDataRow - adds a new row to an existing table.
    • tblAddListener - adds row/cell listeners to the 1st tbody of a table. Will send a msg back to Node-RED when used with uibuilder. Defaults to adding a click listener.
    • tblGetCellName - Returns a standardised table cell name. Either from a data-col-name attribute or a numeric reference like C003.
  • Added data-col-reference attribute to created tables - on the thead row that actually defines the columns. Making it easier to get a reliable column reference later.

Front-end components: uib-var

  • Re-engineered to match the latest standards in the TotallyInformation web-components library.
  • Added ready event
  • Removed shadow dom
  • Error messages improved
  • Add source prop when reporting change back to Node-RED

Documentation changes

  • Improved documentation for uibuilder's event handling and better linked that to how to create custom nodes that work with uibuilder.
  • Improved documentation of the uibuilder extensions for the RED.util.uib object for use in Function nodes.
  • Documentation for the new table handing functions in the client library.

Example flow updates

  • All examples showing the use of the old uibuilderfe client library have been removed.
  • Several of the example flows have been updated to show the latest features.

Runtime library changes

web.js

  • Improved error checking and reporting in serveVendorPackages when mounting installed libraries. Issue #428.

Bug fix

06 Sep 13:02
Compare
Choose a tag to compare

Bug fix only. Missing originator on messages from clients.

Bug fix

02 Sep 16:06
Compare
Choose a tag to compare

Bug fix only. Issue for new UIBUILDER installations that would get the error [node-red-contrib-uibuilder/uibuilder] TypeError [ERR_INVALID_ARG_TYPE]: The "path" argument must be of type string. Received an instance of Array (line:393).

Bug Fix: nanoId

01 Sep 17:02
Compare
Choose a tag to compare
v7.0.2

Fix bug in uiblib nanoId. Bump to v7.0.2

Bug fix

01 Sep 15:54
Compare
Choose a tag to compare

New hooks feature was failing if not present in settings.js.

MAJOR RELEASE - now node.js 18+

01 Sep 15:31
657390b
Compare
Choose a tag to compare

This major upgrade of UIBUILDER has been some 9 months in preparation. 325 commits, 244 files changed. UIBUILDER is now some 12,598 total lines of code (22,400 including comments).

You should read through the potentially breaking changes. They are very unlikely to really impact anyone but it is hard to know for sure. As always, it is best to test before going into production.

The last major release, v6, really felt like a big maturity step for UIBUILDER (which is now around 10 years old) and this v7 release really builds on that. Focus has very much been on UIBUILDER as a mature tool for anyone using Node-RED to build data-driven web apps. It retains all of its flexibility but continues to make working with HTML/CSS and occasional JavaScript a breeze.

I really hope you find some amazing things in this release. If you do, please let me know in the Node-RED forum. And if you don't, let me know as well!

There is much more to come from UIBUILDER. Check out the roadmap in the docs, this shows you the vast number of ideas and improvements that I have in mind for the future. But, as always, I'm open to suggestions so please do reach out.

Regards, Julian.


⚠️ Potentially Breaking Changes

Note that potentially breaking changes are only introduced in major version releases such as this one. It has been a couple of years now since the last, v6, major version.

Most of these changes will not impact most people but you should check through them just in case.

  • If using UIBUILDER's custom ExpressJS server feature (instead of the Node-RED built-in one), URL's are now case sensitive

    This brings them into line not only with W3C guidance but also with the Socket.IO library. It can be turned off in settings.js using property uibuilder.serverOptions['case sensitive routing'] set to false.

    Note that when using Node-RED's internal ExpressJS web engine (the default), URLs are still case-insensitive because that's how core Node-RED has been configured.

  • Minimum node.js now v18 - in line with the release of Node-RED v4, the minimum node.js version has moved from v14 to v18.

    If you need to update your own servers, please remember to do an npm rebuild of all node.js packages afterwards.

  • Rewrite of the uibuilder.eventSend(event) function in the client library.

    This might have an impact only if you were relying on some of the auto-naming features of form elements since the formula for that has been significantly improved.

    That function has been extensively re-written and should provide significantly better results now.

  • Removal of the uibuilderfe library

    If you are still using this old library in your HTML code, please move to the module based library as it is far more feature rich and has many bugs removed.

  • Removal of the uib-list node

    The uib-element node does everything that it did and more.

  • Moved socket.io-client from dependencies to dev-dependencies

    If using the module based client library, you should not be loading the Socket.IO client yourself since it is already built into the client library. If you are still using the old uibuilderfe client, you should replace that and remove the socket.io client library from your html files.

  • Removed the css auto-load from the client library

    This automatically loads the uib-brand.css if no css is provided at all. Since all of the standard templates include some CSS and have for a long time, this should not impact anyone.

    At least 1 person hit a race condition. ref. So this is best removed.

  • jsdom (using in the uib-html node) now tracks the latest releases again

    Shouldn't be breaking at all but you might still want to review things since the new versions of jsdom are likely to have better available features. We were restricted to jsdom v21 previously as newer versions required node.js v18+.

  • ejs package removed

    This should not impact anyone. ejs is an ExpressJS server-side templating library and what instructions exist (minimal) say that you need to install it manually. A new How-to: Server-side Rendered Views has been created to help understand how to use server-side templating. It is far from complete however.

  • Removed Pollyfills from uibuilder editor code - shouldn't impact anyone using a browser from the last 5 years or so.

  • A uibuilder node cannot be given a URL name of common as this would clash with the built-in folder of the same name that holds resources that can be shared with all instances. This was an oversight in previous releases I'm afraid, now fixed.

  • The uibuilder node, no longer has the "Show web view of source files (deploy before you can use it)" option. The supporting external library was also removed. It never looked that good anyway. Please use the new uib-file-list node to produce a custom folder/file list and send to your own custom page.

  • Not really a breaking change but worth noting - if you use the Svelte template, that has been updated to use the latest versions of Svelte and Rollup. Those are both at least 2 major versions newer. In doing so, I had to replace a dev dependency and make changes to the config and npm scripts.

📌 Highlights

  • Some tweaks to the documentation should make it a little easier to get started with. The menu and UX has also been tweeked. There are new pages covering easy UI updates, common design patterns, creating well-structured HTML pages, and troubleshooting.

  • The new node uib-file-list will produce a list of files from a uibuilder instance. It automatically adjusts to the currently served sub-folder and allows filtering. Use this for producing indexes and menus.

  • Markdown improvements.

    Both the main uibuilder node (via the ui.js library) and the uibrouter library both accept markdown content (via the external Markdown-IT library) and now they both support Markdown-IT plugins so that you can add features such as checkbox lists, GitHub style callouts, Mermaid diagrams and much more.

    There is also a new documentation page dedicated to using Markdown.

    And, the no-code example flow has been extended to demonstrate how to dynamically load all of the libraries, plugins and even how to set up responses back to Node-RED - for example when a checkbox is clicked.

  • Wherever you can use no-/low-code features that accept HTML, you can now include <script> tags that will be executed on load.

  • Handling of forms and inputs continue to improve.

    • Programmatic changes to input values or checked properties now trigger both the input and changed events - something that HTML normally doesn't do but can be important for data-driven web apps. For example, if using an <output> tag to show a combined or calculated input, changes via Node-RED will still update the values.
    • When using the eventSend(event) function on inputs whether inside or outside of a form, the returned values have been improved, especially for checkboxes and radio buttons.
  • File uploads from client browser to Node-RED are now enabled.

    When using a form on a page and using <input type="file">, if a file is selected by the client and the file is less than the size of the maximum message size, the file will be automatically uploaded to Node-RED when the form is submitted (assuming you use uibuilder.eventSend(event) to submit the form). The upload is a message with file details and the file itself as a buffer in msg.payload.

  • Security of the UIBUILDER repository on GitHub has been improved.

  • On the uibuilder node's "Core" tab, the info buttons bar has changed slightly.

    The "Docs" button has gone (it is still on the top of panel bar anyway) and been replaced by a new "Apps" button which shows a page listing ALL uibuilder node instances along with their descriptions where provided.

    Most of the UIBUILDER nodes have be given a bit of a refresh of their Editor configuration panels. This work is ongoing but should give a more consistent look and feel and make the panels rather more responsive. The layouts are starting to use more modern CSS features. The work isn't complete yet so there are still a few inconsistencies - for example, when you make the panel wider - but we are getting there.

  • UIBUILDER now has its own "hooks" feature. For now, these can be used for allowing/blocking or debugging messages. More hooks may be added.

    By adding uibuilder.hooks(...) to Node-RED's settings.js and adding either of the functions msgReceived or msgSending, those functions will run when msgs are received from the client or about to be sent to the client respectively. Both functions need a return value of either true or false. true allows the msg through, false blocks the msg. You can also use the functions to alter the msg and, of course, to report on it to the Node-RED log. The functions receive msg and node as the arguments. So you can filter on the node's URL, socket id, client id, page name, etc.

    As well as debugging or msg altering, you can use these to help with message filtering, especially useful as part of authentication and authorisation processes. And somewhat simpler to use than Socket.IO middleware (which is still available).

  • Connection headers have been added to the client details that are shown on control messages and on standard messages if the uibuilder "Include msg._uib in standard msg output." advanced flag is turned on. These may be particularly useful if using 3rd-party identity (authentication and authorisation) tooling which may put validated data into custom headings. Note however that these are "connection" headers, ongoing communications between the clients and the server do not update the headers (not possibl...

Read more

Important Bug Fix Release

04 Jan 11:13
Compare
Choose a tag to compare

Please update to this release as soon as possible, especially if using the new uibrouter or the uib-save node.

uibrouter library

  • FIXED Default route was always being set on load. Now correctly takes the current URL hash into account first.
  • FIXED Routes loaded via script, if pre-selected on page load (e.g. in URL hash), were crashing. Now will automatically revert to the default route and just print an error to the console.
  • FIXED On start, hash change event could be fired twice. Now does the initial route before setting up the hash change listener.

uib-save node

  • FIXED After import/paste, impossible to set a selected uibuilder node reference. Due to a timing issue in how Node-RED reports on nodes added to the flows on Editor page load. Now pre-populate the list of in-editor uibuilder nodes with deployed uibuilder nodes.
  • FIXED Correctly change saved URL if a uibuilder node changes it. In this case, the save node knows the id of its linked uibuilder node but not the name so we change the name and mark the save node as needing re-deployment.
  • FIXED In the Editor, the list of available uibuilder nodes to choose from was not sorted. Now sorted for ease of access.
  • FIXED After a paste/import, when the url changes, reset the addType flag to stop chkUrl re-blanking it by adding if (node.addType === 'paste/import') node.addType = 'load' (in oneditchange)

ti-common.js Editor support library

  • IMPROVED Due to a timing issue in how Node-RED reports on nodes added to the flows on Editor page load, the in-editor list of uibuilder node was not built soon enough for use. Now pre-populates the list of in-editor uibuilder nodes with deployed uibuilder nodes. (Only if the in-editor list has zero entries).

v6.8.1 Bug Fixes Only

02 Jan 12:35
Compare
Choose a tag to compare
  • FIXED Regression caused by "fix" for users deploying with an invalid URL. uibuilder node's editor and runtime code updated.
  • FIXED Regression caused by over-optimising references to the TI event library which stopped msgs with an originator from getting back to the relavent uib-sender node. libs/socket.js updated.
  • Version numbers bumped to match release.