<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>FlowFuse - Changelog</title>
    <link href="https://flowfuse.com/changelog/index.xml" rel="self"/>
    <link href="https://flowfuse.com/changelog"/>
    <updated>2026-04-07T17:00:00Z</updated>
    <id>https://flowfuse.com/changelog</id>
    
    <entry>
        <id>https://flowfuse.com/changelog/2026/04/hosted-instance-url-env-var/</id>
        <title>Hosted Instances know their own URL</title>
        <summary></summary>
        <updated>2026-04-07T17:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2026/04/hosted-instance-url-env-var/"/>
        <author><name>Ben Hardill</name></author>
        <content type="html">&lt;p&gt;Your hosted instance now knows its own URL. The &lt;code&gt;FF_INSTANCE_URL&lt;/code&gt; &lt;a href=&quot;https://flowfuse.com/docs/user/envvar/#standard-environment-variables&quot;&gt;environment variable&lt;/a&gt; is automatically available to your flows, so you can reference the instance&#39;s address without hardcoding it.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img alt=&quot;List of Hosted Instance Environment Variables&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/ff-instance-url-env-var.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;
&lt;em&gt;FF_INSTANCE_URL in list of Instance Environment Variables&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;For Hosted Instances with a &lt;a href=&quot;https://flowfuse.com/docs/user/custom-hostnames/#custom-hostnames&quot;&gt;Custom Hostname&lt;/a&gt; that will be returned rather than the default Instance hostname.&lt;/p&gt;
&lt;p&gt;Existing instances will need to be restarted to pick up the new Environment Variable.&lt;/p&gt;
&lt;p&gt;This will be available to Self Hosted users from v2.29.0&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2026/04/snapshot-diff-viewer/</id>
        <title>Richer snapshot comparison view</title>
        <summary></summary>
        <updated>2026-04-07T12:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2026/04/snapshot-diff-viewer/"/>
        <author><name>Andrea Palmieri</name></author>
        <content type="html">&lt;p&gt;Previously, comparing snapshots only showed the two flow canvases overlaid at different opacities. You could see that something had changed, but not what or where.&lt;/p&gt;
&lt;p&gt;Now when you compare two snapshots, a sidebar lists every changed, added, and deleted node. You can step through them one at a time — the canvas highlights and scrolls to the relevant node automatically. For each change you can see:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Property diffs&lt;/strong&gt;: each changed property is shown inline with the old and new value side by side.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Code diffs&lt;/strong&gt;: for function and template nodes, code changes appear as a line-level diff with red for removed lines and green for added — the same format you&#39;d expect from a git diff.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Use the Prev / Next buttons or the ← → arrow keys to navigate through changes.&lt;/p&gt;
&lt;p&gt;&lt;lite-youtube videoid=&quot;cNdGB-gksfQ&quot; params=&quot;rel=0&quot; style=&quot;width: 704px; height: 100%;&quot; title=&quot;Snapshot Comparison — FlowFuse v2.29&quot;&gt;
&lt;/lite-youtube&gt;&lt;/p&gt;
&lt;p&gt;For the first time, teams can review a snapshot diff before deployment and actually trust what they&#39;re seeing — not just look at it.&lt;/p&gt;
&lt;p&gt;This feature is available to all FlowFuse Cloud and Self Hosted users from v2.29.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2026/03/snapshot-detail-modal-immersive-editor/</id>
        <title>View Snapshot Details in the Immersive Editor</title>
        <summary></summary>
        <updated>2026-04-07T12:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2026/03/snapshot-detail-modal-immersive-editor/"/>
        <author><name>Noley Holland</name></author>
        <content type="html">&lt;p&gt;You can now open snapshot details from inside the immersive editor. Previously, clicking a snapshot from the Version History timeline or Snapshots list had no effect in the editor — the detail view was only available from the instance page in FlowFuse.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img alt=&quot;Snapshot toggle inside the immersive editor&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/snapshot-toggle.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;
&lt;em&gt;Access snapshots from the Version History timeline or Snapshots list inside the editor.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Snapshot details now open in a modal inside the immersive editor, so you can review and manage snapshots without leaving your editing session. The modal contains the same information as the snapshot detail view on the instance page.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img alt=&quot;Snapshot detail modal open inside the immersive editor&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/snapshot-modal-view.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;
&lt;em&gt;Snapshot details open in a modal inside the immersive editor.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;This feature is available to all FlowFuse Cloud users and all Self Hosted users from v2.29.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2026/03/developer-mode-in-immersive-editor/</id>
        <title>Developer Mode Now Accessible from the Immersive Editor</title>
        <summary></summary>
        <updated>2026-04-07T00:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2026/03/developer-mode-in-immersive-editor/"/>
        <author><name>Noley Holland</name></author>
        <content type="html">&lt;p&gt;The Developer Mode tab is now available directly in the immersive editor drawer when working with remote instances. You can toggle auto snapshot and create snapshots without leaving the editor.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img alt=&quot;Developer Mode tab in the immersive editor drawer&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/developer-mode-in-editor.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;
&lt;em&gt;The Developer Mode tab now appears directly in the immersive editor drawer, with options to create a snapshot and manage device flows.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Previously, accessing Developer Mode meant opening a second browser window and navigating to the standalone device view — breaking your flow inside the editor and adding unnecessary friction, especially when working through a staged dev, test, and promote rollout.&lt;/p&gt;
&lt;p&gt;This feature is available to Enterprise tier users of FlowFuse Cloud and Enterprise Licensed Self Hosted users from v2.29.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2026/03/azure-dev-ops-gitops/</id>
        <title>Azure DevOps Pipeline support</title>
        <summary></summary>
        <updated>2026-03-24T17:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2026/03/azure-dev-ops-gitops/"/>
        <author><name>Ben Hardill</name></author>
        <content type="html">&lt;p&gt;&lt;a href=&quot;https://flowfuse.com/docs/user/devops-pipelines&quot;&gt;DevOps Pipeline&lt;/a&gt; Git Stages now support Azure DevOps repositories alongside GitHub.&lt;/p&gt;
&lt;p&gt;If your team already uses Azure DevOps for CI and code review, you can now push and pull Snapshots directly as part of that workflow — no need to manage your Node-RED flows outside your existing tooling.&lt;/p&gt;
&lt;p&gt;Add Personal Access Tokens under Team Settings → Integrations&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img alt=&quot;Dialog to create a new Azure DevOps Token&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/azure-token.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;
&lt;em&gt;The Azure DevOps token dialog under Team Settings → Integrations&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Pro and Enterprise customers on FlowFuse Cloud and Enterprise licensed Self Hosted users can use Azure DevOps repositories in their Pipelines from v2.29.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2026/03/march-scheduled-maintenance/</id>
        <title>Updated: Upcoming Scheduled Server Maintenance on March 28th, 2026</title>
        <summary></summary>
        <updated>2026-03-12T12:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2026/03/march-scheduled-maintenance/"/>
        <author><name>Nick O&#39;Leary</name></author>
        <content type="html">&lt;p&gt;As part of our ongoing efforts to maintain our infrastructure, we need to update some of our servers that host Node-RED instances.&lt;/p&gt;
&lt;p&gt;This will require restarting any hosted Node-RED instances running on those servers, leading to a short downtime whilst they restart. Remote instances on the edge are unaffected.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;We will complete this migration during a 2 hour maintenance window starting at 8am UTC on Saturday 28th March 2026.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Note: the original version of this post had the incorrect date. The mainteance is scheduled for Saturday 28th March.&lt;/p&gt;
&lt;h3 id=&quot;will-my-instances-be-affected%3F&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/changelog/2026/03/march-scheduled-maintenance/#will-my-instances-be-affected%3F&quot;&gt;Will my instances be affected?&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;If your instance was created after 11th March 2026, or has been updated to the 2.28 release, it will already be running on the new servers.&lt;/p&gt;
&lt;p&gt;Otherwise, you can take action to migrate your instance before the scheduled maintenance window at your own convenience.&lt;/p&gt;
&lt;p&gt;If you manually suspend and restart your instance, or upgrade to 2.28 at any time before the maintenance window, your instance will not need to be restarted and no further action will be needed.&lt;/p&gt;
&lt;p&gt;You can find the &amp;quot;Suspend&amp;quot; option from the &amp;quot;Actions&amp;quot; drop down menu on the Instance Overview page. Once the Instance reports being in the Suspended state, you can select &amp;quot;Start&amp;quot; from the same drop down menu.&lt;/p&gt;
&lt;p&gt;We will be emailing notifications to all team owners who have instances that require a restart.&lt;/p&gt;
&lt;h3 id=&quot;enabling-scheduled-maintenance-mode&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/changelog/2026/03/march-scheduled-maintenance/#enabling-scheduled-maintenance-mode&quot;&gt;Enabling Scheduled Maintenance Mode&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Keeping instances up to date is an important task to ensure they are running with the latest features and security fixes. FlowFuse provides the ability to select a time for updates to be automatically applied to your instances. You pick which day of the week and time the platform can schedule updates in. This removes the burden for keeping things up to date.&lt;/p&gt;
&lt;p&gt;On FlowFuse Cloud, Starter teams already have this feature enabled for their instances to apply updates at the weekend.&lt;/p&gt;
&lt;p&gt;Pro and Enterprise teams can opt-in on the Instance Settings - Maintenance page.&lt;/p&gt;
&lt;p&gt;More information is available in the &lt;a href=&quot;https://flowfuse.com/changelog/2025/12/scheduled-maintenance/&quot;&gt;scheduled maintenance changelog entry&lt;/a&gt;.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2026/02/ff-expert-debug-log-context/</id>
        <title>FlowFuse Expert: Helping you make sense of your debug log</title>
        <summary></summary>
        <updated>2026-03-05T13:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2026/02/ff-expert-debug-log-context/"/>
        <author><name>Steve McLaughlin</name></author>
        <content type="html">&lt;p&gt;As a flow developer, you know how frustrating it can be to have a bug or issue in your flows. You add a ton of debug nodes and add warning alerts to your functions to try and help you track it down. The logs can be a great source of information but you still need to figure out why it is happening! Why am I getting this error? Where did this log come from?&lt;/p&gt;
&lt;p&gt;Now, you can ask the Expert!&lt;/p&gt;
&lt;p&gt;We have added the ability to include individual log entries and a quick-add selection on the Resource Selector. Adding these logs alongside the related flows can further focus the AI on the issue and help you solve it.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Key Highlights:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Laser Focus: Select individual log entries to provide specific context.&lt;/li&gt;
&lt;li&gt;Quick Add: Use the Resource Selector button to instantly pull in logs.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;FlowFuse Expert Debug Log Context in Action&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/expert-debug-context.gif&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;
&lt;em&gt;FlowFuse Expert Debug Log Context in Action&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;FlowFuse Expert Focused Debug Log Context&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/expert-debug-log-specific.gif&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;
&lt;em&gt;FlowFuse Expert Focused Debug Log Context&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;We are sure you will love this feature - and there is more to come too!&lt;/p&gt;
&lt;p&gt;For more details, see &lt;a href=&quot;https://flowfuse.com/docs/user/expert/chat/#debug-context&quot;&gt;Debug Context&lt;/a&gt;.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2026/02/ff-expert-update-banner/</id>
        <title>FlowFuse Expert: Never Miss an Update</title>
        <summary></summary>
        <updated>2026-02-27T13:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2026/02/ff-expert-update-banner/"/>
        <author><name>Steve McLaughlin</name></author>
        <content type="html">&lt;p&gt;The Expert now shows a banner in the chat area when a newer version is available. One click and you are up to date.&lt;/p&gt;
&lt;p&gt;FlowFuse Expert is updated regularly with new capabilities. This makes sure you always know when there is something new to try, without having to check manually.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img alt=&quot;FlowFuse Expert update banner&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/ff-expert-update-banner.gif&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;
&lt;em&gt;FlowFuse Expert lets you know when an update is available&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;For more details, see &lt;a href=&quot;https://flowfuse.com/docs/user/expert/chat/#keeping-expert-up-to-date&quot;&gt;Keeping Expert up to date&lt;/a&gt;.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2026/02/device-agent-nodejs-options/</id>
        <title>Set Node.js Options for Remote Instances</title>
        <summary></summary>
        <updated>2026-02-13T12:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2026/02/device-agent-nodejs-options/"/>
        <author><name>Ben Hardill</name></author>
        <content type="html">&lt;p&gt;FlowFuse Device Agent v3.8.1 adds support for setting Node.js command line arguments for Remote Instances.&lt;/p&gt;
&lt;p&gt;This allows things like:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Setting the Node.js heap size for memory-intensive flows&lt;/li&gt;
&lt;li&gt;Enabling &lt;code&gt;--use-openssl-ca&lt;/code&gt; (Linux) or &lt;code&gt;--use-system-ca&lt;/code&gt; (Windows and macOS) to use private CA certificates&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Node.js options can be configured in two ways:&lt;/p&gt;
&lt;h3 id=&quot;1.-via-the-device-agent-command-line&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/changelog/2026/02/device-agent-nodejs-options/#1.-via-the-device-agent-command-line&quot;&gt;1. Via the device agent command line&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Use the &lt;code&gt;--node-options&lt;/code&gt; argument. This argument may be specified multiple times:&lt;/p&gt;

&lt;div style=&quot;position: relative&quot; id=&quot;code-container-27&quot;&gt;
  &lt;pre class=&quot;language-bash&quot;&gt;&lt;code id=&quot;code-27&quot; class=&quot;language-bash&quot;&gt;flowfuse-device-agent &lt;span class=&quot;token parameter variable&quot;&gt;-c&lt;/span&gt; /opt/flowfuse-device-agent/device.yml &lt;span class=&quot;token punctuation&quot;&gt;&#92;&lt;/span&gt;&lt;br /&gt;    --node-options&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;--max-old-space-size=256&#39;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;&#92;&lt;/span&gt;&lt;br /&gt;    --node-options&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;--use-openssl-ca&#39;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

  &lt;button class=&quot;code-copy mdi mdi-content-copy&quot; data-clipboard-target=&quot;#code-27&quot; style=&quot;position: absolute; top: 7.5px; right: 6px; padding-top: 3px; cursor: pointer; outline: none; opacity: 0.8;&quot; title=&quot;Copy&quot;&gt;
    &lt;span style=&quot;display:inline-block;background:url() no-repeat center center / contain;background: initial&quot; class=&quot;&quot;&gt;&lt;/span&gt;
  &lt;/button&gt;
&lt;/div&gt;
&lt;h3 id=&quot;2.-via-the-device.yml-file&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/changelog/2026/02/device-agent-nodejs-options/#2.-via-the-device.yml-file&quot;&gt;2. Via the &lt;code&gt;device.yml&lt;/code&gt; file&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Add a &lt;code&gt;nodeOptions&lt;/code&gt; section:&lt;/p&gt;

&lt;div style=&quot;position: relative&quot; id=&quot;code-container-34&quot;&gt;
  &lt;pre class=&quot;language-yaml&quot;&gt;&lt;code id=&quot;code-34&quot; class=&quot;language-yaml&quot;&gt;&lt;span class=&quot;token key atrule&quot;&gt;deviceId&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; xxxxxxx&lt;br /&gt;&lt;span class=&quot;token key atrule&quot;&gt;forgeURL&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; https&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;//app.flowfuse.com&lt;br /&gt;&lt;span class=&quot;token key atrule&quot;&gt;token&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; xxxxxxxx&lt;br /&gt;&lt;span class=&quot;token key atrule&quot;&gt;credentialSecret&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; xxxxx&lt;br /&gt;&lt;span class=&quot;token key atrule&quot;&gt;nodeOptions&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token punctuation&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#39;--max-old-space-size=256&#39;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token punctuation&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#39;--use-openssl-ca&#39;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

  &lt;button class=&quot;code-copy mdi mdi-content-copy&quot; data-clipboard-target=&quot;#code-34&quot; style=&quot;position: absolute; top: 7.5px; right: 6px; padding-top: 3px; cursor: pointer; outline: none; opacity: 0.8;&quot; title=&quot;Copy&quot;&gt;
    &lt;span style=&quot;display:inline-block;background:url() no-repeat center center / contain;background: initial&quot; class=&quot;&quot;&gt;&lt;/span&gt;
  &lt;/button&gt;
&lt;/div&gt;
&lt;p&gt;For more details, see &lt;a href=&quot;https://flowfuse.com/docs/device-agent/running/#configuring-node.js-options&quot;&gt;Configuring Node.js Options&lt;/a&gt;.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2026/02/restoring-snapshots-to-remote-instances/</id>
        <title>Restoring snapshots to developer-mode Remote Instances</title>
        <summary></summary>
        <updated>2026-02-12T12:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2026/02/restoring-snapshots-to-remote-instances/"/>
        <author><name>Nick O&#39;Leary</name></author>
        <content type="html">&lt;p&gt;Device Agent version 3.8.0 has been released which brings a significant workflow improvement when editing your flows.&lt;/p&gt;
&lt;p&gt;When the ability to remotely edit flows was introduced - known as &#39;developer mode&#39; - we blocked the ability to push snapshots to a remote instance whilst in this mode. This protection makes sense when you&#39;re working on a remote instance, but still need to push updates out to the rest of your fleet through a pipeline deployment - you don&#39;t want the deployment from overwriting the work you&#39;re in the middle of.&lt;/p&gt;
&lt;p&gt;However, there are cases where you want to rollback changes you&#39;ve been making to a remote instance. Previously that would involve taking the instance out of developer mode, restoring the snapshot, then putting it back into developer mode to continue working. This is a lot of unnecessary steps and not an obvious workflow.&lt;/p&gt;
&lt;p&gt;With the new v3.8.0 release of the Device Agent, it is now possible to manually restore snapshots without leaving developer mode:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Open the Version History tab for the Remote Instance and switch the Snapshots view&lt;/li&gt;
&lt;li&gt;Click on the snapshot you want to use&lt;/li&gt;
&lt;li&gt;Click on the restore button in the snapshot sidebar&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The existing protection that blocks pipeline-driven deploys of snapshots is still in place.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;Restoring a snapshot to a Developer-Mode Remote Instance&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/snapshot-restore.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;
&lt;em&gt;Restoring a snapshot to a Developer-Mode Remote Instance&lt;/em&gt;&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2026/02/ha-instance-rolling-restart/</id>
        <title>HA Hosted Instance Rolling Restart</title>
        <summary></summary>
        <updated>2026-02-12T12:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2026/02/ha-instance-rolling-restart/"/>
        <author><name>Ben Hardill</name></author>
        <content type="html">&lt;p&gt;As part of FlowFuse v2.27.0 release the behavior of Hosted Node-RED instances with HA enabled has been updated to reduce the down time experienced.&lt;/p&gt;
&lt;p&gt;Any action that triggers a restart of the Node-RED instance (manually triggered or as part of a Pipeline deploy) will now restart them in sequence rather than in parallel. This means that there should be no down time for this instance.&lt;/p&gt;
&lt;p&gt;This feature is available to Enterprise Licensed Self Hosted users and Enterprise tier users of FlowFuse Cloud.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2026/02/remote-instances-immersive-editor/</id>
        <title>Immersive Mode for Remote Instances</title>
        <summary></summary>
        <updated>2026-02-11T12:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2026/02/remote-instances-immersive-editor/"/>
        <author><name>Serban Costin</name></author>
        <content type="html">&lt;p&gt;You can now access &lt;strong&gt;Immersive Mode&lt;/strong&gt; when working with &lt;strong&gt;Remote Instances&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Immersive Mode gives you &lt;strong&gt;at-a-glance instance stats&lt;/strong&gt; alongside the editor, while also enabling the &lt;strong&gt;FlowFuse Expert&lt;/strong&gt; to help speed up development and debugging, especially when you’re working on the edge with remote devices.&lt;/p&gt;
&lt;p&gt;Prefer the classic experience? The existing &lt;strong&gt;plain&lt;/strong&gt; connection flow is still available: clicking the &lt;strong&gt;Open Editor&lt;/strong&gt; dropdown selector includes an alternative option to be able to open the editor in the non-immersive mode.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;Immersive Mode on a Remote Instance&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/remote-instance-immersive.gif&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;
&lt;em&gt;Immersive Mode accessed from a remote instance&lt;/em&gt;&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2026/01/ff-expert-palette-queries/</id>
        <title>FlowFuse Expert: Palette Queries</title>
        <summary></summary>
        <updated>2026-02-10T13:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2026/01/ff-expert-palette-queries/"/>
        <author><name></name></author>
        <content type="html">&lt;p&gt;We are continuing to evolve the FlowFuse Expert by giving it deeper integration into your Node-RED environment. Starting today, the Expert has &lt;strong&gt;Palette Awareness&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;You can now ask the Expert about your installed nodes, versions, and available updates without leaving the chat interface or needing to manually input said context. For example:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Do I have any nodes installed that can send Emails?&lt;/li&gt;
&lt;li&gt;Are my palette nodes up to date?&lt;/li&gt;
&lt;li&gt;Are any nodes on my palette disabled?&lt;/li&gt;
&lt;li&gt;Can you suggest a node package that would replace this complex function code?&lt;/li&gt;
&lt;li&gt;or any question related to your palette.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is one of several steps we are taking to bring additional context directly into your FlowFuse Expert to augment its capabilities and improve your workflow.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;FlowFuse Expert integration with the Palette&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/ff-expert-palette-context.gif&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;
&lt;em&gt;FlowFuse Expert integration with the Palette&lt;/em&gt;&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2026/01/ff-expert-select-flows/</id>
        <title>FlowFuse Expert: Ask about your flows</title>
        <summary></summary>
        <updated>2026-01-30T13:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2026/01/ff-expert-select-flows/"/>
        <author><name></name></author>
        <content type="html">&lt;p&gt;Need help with a specific flow?&lt;/p&gt;
&lt;p&gt;The FlowFuse Expert now has the ability to include your flow selection as context, allowing you to ask specific questions about your logic and configuration.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;FlowFuse Expert with flows in context&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/ff-expert-flows-in-context.gif&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;
&lt;em&gt;FlowFuse Expert with flows in context&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;We are continuously adding new features to improve your development workflow, with more updates for the FlowFuse Expert on the horizon. We hope this makes your building experience even smoother.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2026/01/device-agent-containers/</id>
        <title>Device Agent Docker Containers updated</title>
        <summary></summary>
        <updated>2026-01-27T12:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2026/01/device-agent-containers/"/>
        <author><name>Ben Hardill</name></author>
        <content type="html">&lt;p&gt;We have started to see some Node-RED nodes dropping support for NodeJS v18. This is causing problems for users of our Device Agent docker container as that is still based on NodeJS v18.&lt;/p&gt;
&lt;p&gt;To help move things forward, with the v3.7.2 release of the Device Agent, we are now publishing separate container images for both v18 and v20 under different tags.&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;latest&lt;/code&gt; tag will continue to point to the NodeJS v18 version for now for backwards compatibility. The next major release of the device agent will update the &lt;code&gt;latest&lt;/code&gt; tag to a newer NodeJS version - and may require a migration step if you are using the module cache feature. We&#39;ll share more details when that release arrives.&lt;/p&gt;
&lt;p&gt;With this update, the following tags are now available:&lt;/p&gt;
&lt;h2 id=&quot;nodejs-18&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/changelog/2026/01/device-agent-containers/#nodejs-18&quot;&gt;NodeJS 18&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;flowfuse/device-agent:latest&lt;/li&gt;
&lt;li&gt;flowfuse/device-agent:latest-18&lt;/li&gt;
&lt;li&gt;flowfuse/device-agent:v3.7.2&lt;/li&gt;
&lt;li&gt;flowfuse/device-agent:v3.7.2-18&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;nodejs-20&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/changelog/2026/01/device-agent-containers/#nodejs-20&quot;&gt;NodeJS 20&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;flowfuse/device-agent:latest-20&lt;/li&gt;
&lt;li&gt;flowfuse/device-agent:v3.7.2-20&lt;/li&gt;
&lt;/ul&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2026/01/ff-expert-manage-palette/</id>
        <title>FlowFuse Expert: Enhanced Palette Integration</title>
        <summary></summary>
        <updated>2026-01-26T13:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2026/01/ff-expert-manage-palette/"/>
        <author><name></name></author>
        <content type="html">&lt;p&gt;The FlowFuse Expert recently gained the ability to suggest and install &lt;strong&gt;node packages&lt;/strong&gt; directly within your workflow (see our previous post on &lt;a href=&quot;https://flowfuse.com/changelog/2026/01/ff-expert-nr-actions/&quot;&gt;FlowFuse Expert: Integration with Node-RED&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Today, we&#39;ve streamlined this experience. The Expert now detects if a suggested node is already present in your instance. Instead of a showing the &amp;quot;Install&amp;quot; button, you’ll now see a &lt;strong&gt;&amp;quot;Manage&amp;quot;&lt;/strong&gt; button that takes you directly to the Palette Manager.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;FlowFuse Expert integration with the Palette Manager&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/ff-expert-manage-palette.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;
&lt;em&gt;FlowFuse Expert integration with the Palette Manager&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;This improvement reduces friction when updating or configuring your existing nodes. These workflow integrations are just the beginning of our plans for the FlowFuse Expert. We&#39;re excited to see how much time they save you!&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2026/01/mcp-security/</id>
        <title>FlowFuse Expert: MCP-Powered Insights</title>
        <summary></summary>
        <updated>2026-01-21T13:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2026/01/mcp-security/"/>
        <author><name></name></author>
        <content type="html">&lt;p&gt;FlowFuse Expert Insights just got a little bit better.&lt;/p&gt;
&lt;h3 id=&quot;what-is-flowfuse-expert-insights%3F&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/changelog/2026/01/mcp-security/#what-is-flowfuse-expert-insights%3F&quot;&gt;What is FlowFuse Expert Insights?&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;In case you are new to this feature, checkout out some of our previous blog posts:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://flowfuse.com/changelog/2025/12/ff-expert-mcp-insights/&quot;&gt;MCP-Powered Insights&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://flowfuse.com/changelog/2026/01/mcp-rbacs/&quot;&gt;MCP-Powered Insights with RBACs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://flowfuse.com/changelog/2026/01/ff-expert-nr-actions/&quot;&gt;Integration with Node-RED&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;what&#39;s-new%3F&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/changelog/2026/01/mcp-security/#what&#39;s-new%3F&quot;&gt;What&#39;s new?&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;With this update, the MCP servers you protected behind FlowFuse User Authentication can now be accessed and queried in the FlowFuse Expert too.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Note: The FlowFuse Expert Insights feature is currently in Beta. We are actively expanding its capabilities. We would love to hear how you are using MCP to extend your systems.&lt;/em&gt;&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2026/01/mcp-rbacs/</id>
        <title>FlowFuse Expert: MCP-Powered Insights with RBACs</title>
        <summary></summary>
        <updated>2026-01-14T13:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2026/01/mcp-rbacs/"/>
        <author><name></name></author>
        <content type="html">&lt;p&gt;Following on the the introduction of &lt;a href=&quot;https://flowfuse.com/changelog/2025/12/ff-expert-mcp-insights/&quot;&gt;FlowFuse Expert MCP-Powered Insights&lt;/a&gt; we have added annotations to the FlowFuse MCP nodes and linked them up with the FlowFuse roles.
This permits a level of control over who can access what. This is just a first step, we will be working in the area over the next few iterations.&lt;/p&gt;
&lt;h3 id=&quot;mcp-tools-node&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/changelog/2026/01/mcp-rbacs/#mcp-tools-node&quot;&gt;MCP Tools Node&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;To facilitate a level of role based access control in the Expert, we have leveraged the new Granular RBACs and MCP annotations to introduce 2 means of filtering and control:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;By &lt;a href=&quot;https://flowfuse.com/docs/user/concepts/#application&quot;&gt;application&lt;/a&gt; - as introduced in FlowFuse 1.5&lt;/li&gt;
&lt;li&gt;By pre-defined role level mapping to the annotation hints. For instance, users with a &#39;Viewer&#39; role will only be exposed to tools marked with the Read Only hint, while Destructive tools are reserved for &#39;Owners&#39;. The screenshot below indicates more clearly what this mapping is.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;To facilitate this, we have the next version of our (MCP Server Nodes)[https://flowfuse.com/node-red/flowfuse/mcp/] will introduce the 4 MCP standard annotations:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Read Only Hint&lt;/strong&gt;: Lets the MCP Client know that the tool is read-only and does not modify any data or state. This hint can be used by LLMs to understand that invoking this tool will not have side effects, making it safe for exploratory queries or information retrieval.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Destructive Hint&lt;/strong&gt;: Lets the MCP Client know that the tool performs destructive actions that may modify or delete data. This hint can be used by LLMs to exercise caution when invoking this tool, as it may have irreversible effects.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Idempotent Hint&lt;/strong&gt;: Lets the MCP Client know that the tool is idempotent, meaning that multiple invocations with the same parameters will have the same effect as a single invocation. This hint can be used by LLMs to understand that it is safe to retry or repeat calls to this tool without causing unintended side effects.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Open World Hint&lt;/strong&gt;: Lets the MCP Client know that the tool operates in an open-world context, meaning it may interact with external systems or data sources beyond the immediate environment. This hint can be used by LLMs to understand that invoking this tool may involve uncertainties or dependencies on external factors.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These annotations are not exclusive to FlowFuse or FlowFuse Roles, they also are useful for your own Agents and LLMs.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Note: Hints do not enforce behavior. The actual behavior of the tool depends on how it is used in your flows&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;MCP Server Tool Node with new annotations&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/mcp-annotations.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;
&lt;em&gt;MCP Server Tool Node with new annotations&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Note: This feature is currently in Beta. We are actively expanding these capabilities and would love to hear how you are using MCP to extend your systems.&lt;/em&gt;&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2026/01/ff-expert-nr-actions/</id>
        <title>FlowFuse Expert: Integration with Node-RED</title>
        <summary></summary>
        <updated>2026-01-14T13:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2026/01/ff-expert-nr-actions/"/>
        <author><name></name></author>
        <content type="html">&lt;p&gt;The FlowFuse Expert just got a lot more hands-on with your Node-RED editor:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Streamlined Node Installation:&lt;/strong&gt; When the Expert suggests a node module, it can now automatically open the Palette Manager and filter for the correct package, leaving you just one click away from installation.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Direct Flow Imports:&lt;/strong&gt; When the Expert provides demo flows, you no longer need to copy-paste JSON. The Expert can now inject those flows directly into your editor, ready for deployment.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;FlowFuse Expert Install Node&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/ff-expert-install-node.gif&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;
&lt;em&gt;FlowFuse Expert integration with the Palette Manager&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;These workflow integrations are just the start of our plans for the FlowFuse Expert. We’re excited to see how much time these save you!&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2025/12/scheduled-maintenance/</id>
        <title>Scheduled Maintenance Mode</title>
        <summary></summary>
        <updated>2025-12-19T12:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2025/12/scheduled-maintenance/"/>
        <author><name>Ben Hardill</name></author>
        <content type="html">&lt;p&gt;Included in the FlowFuse 2.25.0 release is the ability to schedule times and days of the
week for Hosted Node-RED instances to upgrade to the latest available version.&lt;/p&gt;
&lt;p&gt;This ensures that fixes and security updates are applied promptly.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img alt=&quot;Maintenance Section of Instance Settings&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/scheduled-maintenance.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;
&lt;em&gt;Maintenance Section of Instance Settings&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;You can select multiple days of the week and an hour of the day the update will take
place. The restart will be targeted in the first 30 minutes of the selected hour.&lt;/p&gt;
&lt;p&gt;As well as scheduling upgrades, you can also enable scheduled restarts even if not update
is available which may be useful to help with ensuring things run smoothly.&lt;/p&gt;
&lt;p&gt;Self Hosted users can configure default restart/upgrade times at a TeamType level,
FlowFuse Cloud Starter Tier users will have this enabled by default and it will run,
at weekends.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img alt=&quot;TeamType Scheduled Maintenance Settings&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/scheduled-maintenance-admin.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;
&lt;em&gt;TeamType Scheduled Maintenance Settings&lt;/em&gt;&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2025/12/ff-expert-mcp-insights/</id>
        <title>FlowFuse Expert: Now with MCP-Powered Insights</title>
        <summary></summary>
        <updated>2025-11-19T13:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2025/12/ff-expert-mcp-insights/"/>
        <author><name></name></author>
        <content type="html">&lt;p&gt;Recently, we introduced &lt;a href=&quot;https://flowfuse.com/changelog/2025/10/mcp-nodes/&quot;&gt;MCP Server nodes&lt;/a&gt; which gave you the ability to infuse your Node-RED flows and data with AI. Today, we have given the FlowFuse Expert new powers by adding support for Model Context Protocol (MCP). This allows you to interact directly with your instances, tools, and data.&lt;/p&gt;
&lt;h3 id=&quot;bridging-the-gap-between-ai-and-your-data&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/changelog/2025/12/ff-expert-mcp-insights/#bridging-the-gap-between-ai-and-your-data&quot;&gt;Bridging the Gap Between AI and Your Data&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;By switching to the new Insights mode, the Expert gains the ability to use the MCP tools and resources you’ve built using FlowFuse MCP Server Nodes. This means you can now ask the Expert to analyze real-time data from your flows, query external databases, or trigger specific actions across your infrastructure.&lt;/p&gt;
&lt;h3 id=&quot;how-to-get-started%3A&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/changelog/2025/12/ff-expert-mcp-insights/#how-to-get-started%3A&quot;&gt;How to get started:&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Deploy MCP Nodes&lt;/strong&gt;: Add MCP Tools or Resources to your Node-RED flows using our MCP Server nodes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Switch to Insights&lt;/strong&gt;: Open the FlowFuse Expert interface and use the Mode Selector to switch from &amp;quot;Chat&amp;quot; to &amp;quot;Insights.&amp;quot;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Select your Server&lt;/strong&gt;: Choose the MCP Server you want to include in your session.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Gain Insights&lt;/strong&gt;: Ask questions about your live process data, system status, or connected databases.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Give it a try and see what your data has to tell you!&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;FlowFuse Expert Insights&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/ff-expert-mcp-demo.gif&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;
&lt;em&gt;Demonstrating FlowFuse Expert Insights&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Note: This feature is currently in Beta. We are actively expanding these capabilities and would love to hear how you are using MCP to extend your systems.&lt;/em&gt;&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2025/11/minimum-nodejs-version/</id>
        <title>Node.js v20 Minimum Version Requirement</title>
        <summary></summary>
        <updated>2025-11-11T12:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2025/11/minimum-nodejs-version/"/>
        <author><name>Serban Costin</name></author>
        <content type="html">&lt;p&gt;&lt;strong&gt;FlowFuse v2.24.0 requires Node.js v20 or higher.&lt;/strong&gt; If you are running an older version, you will need to upgrade Node.js before updating FlowFuse.&lt;/p&gt;
&lt;p&gt;Node.js v18 reached end of life in April 2025 and no longer receives security updates. This change ensures FlowFuse continues to run on a supported and secure runtime.&lt;/p&gt;
&lt;p&gt;To check your current version, run &lt;code&gt;node --version&lt;/code&gt;.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2025/11/ff-expert-update/</id>
        <title>FlowFuse Expert Update</title>
        <summary></summary>
        <updated>2025-11-07T14:52:00Z</updated>
        <link href="https://flowfuse.com/changelog/2025/11/ff-expert-update/"/>
        <author><name></name></author>
        <content type="html">&lt;p&gt;The FlowFuse Expert just got a major improvement: you can now start a conversation on the flowfuse.com homepage and continue it inside of FlowFuse and the Node-RED editor!&lt;/p&gt;
&lt;p&gt;Now, when you use the Expert, you can bring your application-building instructions with you as you navigate.&lt;/p&gt;
&lt;p&gt;This work involved major and important changes to the Expert UI, and brings us even closer to being able to build Node-RED flows using natural language inputs.&lt;/p&gt;
&lt;p&gt;Give it a try!&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img alt=&quot;Option to continue chat in FlowFuse&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/continue.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;
&lt;em&gt;Demo of option to continue chat in FlowFuse&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img alt=&quot;In-App Expert UI&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/in-app.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;
&lt;em&gt;Here is the in-app UI of the FlowFuse Expert&lt;/em&gt;&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2025/11/sso-session/</id>
        <title>SSO control over Session life</title>
        <summary></summary>
        <updated>2025-11-06T12:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2025/11/sso-session/"/>
        <author><name>Ben Hardill</name></author>
        <content type="html">&lt;p&gt;Customers on FlowFuse Cloud can now request custom Session Life times and Idle times. This allows the default times to be adjusted to match any in house policies that may be in place.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img alt=&quot;SSO Session Expiry and Idle settings&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/sso-expiry-idle.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;
&lt;em&gt;SSO Session Expiry and Idle settings&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;For existing FlowFuse Cloud customers please contact support if you would like to make changes to you existing configuration.&lt;/p&gt;
&lt;p&gt;This will be available to Self Hosted customers in v2.24.0&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2025/10/duplicate-instances-across-applications/</id>
        <title>Duplicate Instances Across Different Applications</title>
        <summary></summary>
        <updated>2025-10-28T12:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2025/10/duplicate-instances-across-applications/"/>
        <author><name>Serban Costin</name></author>
        <content type="html">&lt;p&gt;As of today, you can now duplicate a hosted instance into a different application within your team.&lt;/p&gt;
&lt;p&gt;It is a small (but important) improvement that just just makes things that little bit easier.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2025/10/bulk-device-group-assignment/</id>
        <title>Easier Access to Bulk Device Group Management</title>
        <summary></summary>
        <updated>2025-10-28T12:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2025/10/bulk-device-group-assignment/"/>
        <author><name>Serban Costin</name></author>
        <content type="html">&lt;p&gt;Managing device groups for multiple Remote Instances is now easier to handle. Bulk management already existed but was
difficult to use efficiently at larger scale.&lt;/p&gt;
&lt;p&gt;This update refines that process. You can select multiple Remote Instances from the team or application remote instances
pages and bulk assign them to device groups with fewer steps.&lt;/p&gt;
&lt;p&gt;The improved workflow reduces friction when organizing devices by location, environment, or function.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;Bulk Device Group Management Interface&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/bulk-assign-device-groups.gif&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;&lt;br /&gt;
&lt;em&gt;Bulk Device Group Management showing multi-select capabilities and group assignment options&lt;/em&gt;&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2025/10/settings-page-device-group-management/</id>
        <title>Device Group Management from Settings Page</title>
        <summary></summary>
        <updated>2025-10-21T12:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2025/10/settings-page-device-group-management/"/>
        <author><name>Serban Costin</name></author>
        <content type="html">&lt;p&gt;Managing which device group your Remote Instance belong to just got a easier. Previously, if you wanted to move a device to a different group, you had to identify the group the Remote Instance belongs to, remove it, then find the group to assign it to, edit that group and add it. This was not optimal.&lt;/p&gt;
&lt;p&gt;With this update, you can now see which group a Remote Instance belongs to directly from the overview page, and easily reassign it to a different group from the settings page without the hassle of searching through your entire group structure.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;Device Group Management Interface&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/settings-page-device-group-management.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;&lt;br /&gt;
&lt;em&gt;Device Group Management Interface showing current group and reassignment options&lt;/em&gt;&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2025/10/import-flows-on-instance-creation/</id>
        <title>Import flows during instance creation</title>
        <summary></summary>
        <updated>2025-10-21T12:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2025/10/import-flows-on-instance-creation/"/>
        <author><name>Serban Costin</name></author>
        <content type="html">&lt;p&gt;Getting started with FlowFuse just became easier! When creating a new Node-RED instance, you can now import your existing flows directly during the setup process.&lt;/p&gt;
&lt;p&gt;This new capability allows you to jumpstart your FlowFuse journey by bringing in flows you&#39;ve already developed, whether they&#39;re from a local Node-RED installation, exported from another system, or shared by a colleague.&lt;/p&gt;
&lt;p&gt;The import process is flexible and user-friendly:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;File upload&lt;/strong&gt;: Simply select and upload a JSON file containing your flows&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Direct paste&lt;/strong&gt;: Copy and paste flow JSON directly into a text area&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Live preview&lt;/strong&gt;: See your flows rendered in real-time as you import them&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The flows import step seamlessly integrates with the existing multi-step instance creation workflow. You can choose to start with a blueprint from our library or import your own flows - giving you multiple pathways to get productive quickly.&lt;/p&gt;
&lt;p&gt;This enhancement is particularly valuable for teams looking to migrate existing Node-RED projects to FlowFuse or developers who want to quickly prototype with flows they&#39;ve developed elsewhere.&lt;/p&gt;
&lt;h2 id=&quot;important-considerations&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/changelog/2025/10/import-flows-on-instance-creation/#important-considerations&quot;&gt;Important considerations&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;When importing flows, keep these key points in mind:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Flow validation&lt;/strong&gt;: Imported flows aren&#39;t checked for validity, so invalid nodes may prevent your instance from starting&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Third-party nodes&lt;/strong&gt;: External nodes aren&#39;t installed automatically but can be added once the instance is running&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Credentials and secrets&lt;/strong&gt;: These aren&#39;t imported with flows but can be reconfigured after deployment&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Environment variables&lt;/strong&gt;: Any required variables must be manually added to your environment after setup&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Always verify the reliability of imported flows and avoid copying flows from untrusted sources.&lt;/p&gt;
&lt;p&gt;To try it out, simply create a new instance and look for the new &amp;quot;Flows&amp;quot; step in the creation wizard!&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;Demo importing flows when creating a Hosted Instance&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/import-flows-on-instance-creation.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;&lt;br /&gt;
&lt;em&gt;Demo importing flows when creating a Hosted Instance&lt;/em&gt;&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2025/10/onnx-nodes/</id>
        <title>FlowFuse AI Nodes</title>
        <summary></summary>
        <updated>2025-10-15T12:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2025/10/onnx-nodes/"/>
        <author><name>Steve McLaughlin</name></author>
        <content type="html">&lt;p&gt;We’re excited to introduce &lt;strong&gt;FlowFuse AI Nodes&lt;/strong&gt; — a new contrib package that brings the ONNX Runtime to Node-RED.&lt;/p&gt;
&lt;h3 id=&quot;what-is-onnx%3F&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/changelog/2025/10/onnx-nodes/#what-is-onnx%3F&quot;&gt;What is ONNX?&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;ONNX (Open Neural Network Exchange) is an open format built to represent machine learning models. It provides an interoperable framework for AI developers to use models across different frameworks and tools.&lt;/p&gt;
&lt;p&gt;Sounds great, right? So what does this mean for you?&lt;/p&gt;
&lt;p&gt;You can now run pre-trained machine learning models directly within your Node-RED flows using the new FlowFuse AI Nodes.
There are hundreds of pre-trained models available in the &lt;a href=&quot;https://onnx.ai/models/&quot;&gt;ONNX Model Zoo&lt;/a&gt; or from &lt;a href=&quot;https://huggingface.co/models?library=transformers.js,onnx&amp;amp;sort=trending&quot;&gt;Hugging Face&lt;/a&gt;, covering a wide range of applications including image classification, object detection, natural language processing, Text to Speech, and more.&lt;/p&gt;
&lt;h3 id=&quot;what-can-you-do-with-flowfuse-ai-nodes%3F&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/changelog/2025/10/onnx-nodes/#what-can-you-do-with-flowfuse-ai-nodes%3F&quot;&gt;What can you do with FlowFuse AI Nodes?&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;In this first release, the FlowFuse AI Nodes package includes the following nodes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;ONNX Inference Node&lt;/strong&gt;: A bare node to run any model (including your own trained ONNX models). Just upload the model file and feed in the input data to get predictions.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Image Classification Node&lt;/strong&gt;: Classify images using pre-trained models like MobileNet, ResNet, or even use your own.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Object Detection Node&lt;/strong&gt;: Detect objects in images using models like YOLOv5, SSD, or your own.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Image Depth Estimation Node&lt;/strong&gt;: Estimate depth information from images.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;With FlowFuse AI Nodes, you can easily integrate ONNX models into your Node-RED flows, enabling powerful AI capabilities without the need for extensive coding or machine learning expertise.&lt;/p&gt;
&lt;h3 id=&quot;how-to-get-started&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/changelog/2025/10/onnx-nodes/#how-to-get-started&quot;&gt;How to Get Started&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;FlowFuse customers can install the new AI nodes today via the Node-RED Palette Manager from the FlowFuse Nodes catalog&lt;/p&gt;
&lt;p&gt;We have included example flows directly inside the package to help you get started quickly.
Just hit &lt;code&gt;CTRL-I&lt;/code&gt; in the Node-RED editor to import the example flows from the FlowFuse AI Nodes package.&lt;/p&gt;
&lt;p&gt;Additionally, we have created a blog post detailing how you can train a simple image classification model to accompany the advanced example flow included in the package. You can read all about it here: &lt;a href=&quot;https://flowfuse.com/blog/2025/10/custom-onnx-model/&quot;&gt;Deploy Custom-Trained AI Models: Using ONNX with Node-RED and FlowFuse&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&quot;screenshots&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/changelog/2025/10/onnx-nodes/#screenshots&quot;&gt;Screenshots&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Here are a selection of screenshots of the built-in demo flows in action&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;Running your own custom trained ONNX Model&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/ai-nodes-onnx-node-custom-model.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;&lt;br /&gt;
&lt;em&gt;Running your own custom trained ONNX Model&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;Using a Text-to-Speech-model&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/ai-nodes-onnx-node-tts.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;&lt;br /&gt;
&lt;em&gt;Using a Text-to-Speech-model&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;Performing Image Depth Estimation&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/ai-nodes-image-depth-node.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;&lt;br /&gt;
&lt;em&gt;Performing Image Depth Estimation&lt;/em&gt;&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2025/10/mcp-nodes/</id>
        <title>FlowFuse MCP Server Nodes</title>
        <summary></summary>
        <updated>2025-10-14T12:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2025/10/mcp-nodes/"/>
        <author><name>Steve McLaughlin</name></author>
        <content type="html">&lt;p&gt;We’re excited to introduce &lt;strong&gt;FlowFuse MCP Server Nodes&lt;/strong&gt; — a new contrib package that brings MCP Tools, Resources, and Prompts straight into Node-RED. With just a few nodes, you can design custom MCP-powered automations, connect dynamic resources, and return responses seamlessly in your flows. Whether you’re prototyping or extending integrations, these nodes make it faster than ever to put MCP to work in your applications.&lt;/p&gt;
&lt;p&gt;Over the coming weeks, we’ll share use cases and demos to inspire you, but in the meantime, we’ve included some sample flows you can access directly in Node-RED via the import menu (&lt;code&gt;CTRL&lt;/code&gt;+&lt;code&gt;I&lt;/code&gt;) and some additional links below.&lt;/p&gt;
&lt;h3 id=&quot;what-is-mcp%3F&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/changelog/2025/10/mcp-nodes/#what-is-mcp%3F&quot;&gt;What is MCP?&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;The &lt;strong&gt;Model Context Protocol (MCP)&lt;/strong&gt; is an emerging open standard for connecting AI models with tools and data sources in a structured way. It defines how prompts, resources, and responses should be exchanged, making it easier to build reliable and reusable AI-powered workflows.&lt;/p&gt;
&lt;h3 id=&quot;why-is-mcp-important%3F&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/changelog/2025/10/mcp-nodes/#why-is-mcp-important%3F&quot;&gt;Why is MCP important?&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;As AI adoption grows, developers need consistent ways to integrate models into real-world systems. MCP helps standardize this process, reducing boilerplate and ensuring interoperability across tools and platforms. With Node-RED support, FlowFuse makes it easier than ever for developers to experiment with MCP, build production-ready flows, and unlock the potential of AI-driven automation.&lt;/p&gt;
&lt;h3 id=&quot;screenshots&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/changelog/2025/10/mcp-nodes/#screenshots&quot;&gt;Screenshots&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;New MCP Nodes&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/mcp-nodes.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;&lt;br /&gt;
&lt;em&gt;New MCP Nodes&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;FlowFuse customers can install the MCP Server nodes today via the Node-RED Palette Manager from the &lt;strong&gt;FlowFuse Nodes&lt;/strong&gt; catalog&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img alt=&quot;alt text&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/mcp-nodes-in-catalog.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;&lt;/p&gt;
&lt;h3 id=&quot;additional-links&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/changelog/2025/10/mcp-nodes/#additional-links&quot;&gt;Additional links&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://flowfuse.com/blog/2025/10/building-mcp-server-using-flowfuse/&quot;&gt;Blog article&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=troUvaF8V68&quot;&gt;Youtube demonstration video&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2025/10/application-level-rbac/</id>
        <title>Application-level access control for Enterprise teams</title>
        <summary></summary>
        <updated>2025-10-08T12:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2025/10/application-level-rbac/"/>
        <author><name>Nick O&#39;Leary</name></author>
        <content type="html">&lt;p&gt;One of the super-powers FlowFuse brings is its role-based access control that gets applied across the team. This allows teams to have users with different levels of access to the Node-RED instances - from full editor access, to read-only access, to only being able to access the dashboards the instances create.&lt;/p&gt;
&lt;p&gt;We&#39;ve pushed this one step further today for Enterprise teams, allowing them to set a user&#39;s role on a per-Application basis. This finer-grained control gives teams more flexibility in how they can secure their resources.&lt;/p&gt;
&lt;p&gt;For example, a team could create an Application dedicated to their production systems, with a limited set of users able to make changes - whilst having a Development application that is accessible to a broader group of user.&lt;/p&gt;
&lt;p&gt;The roles for an application can be modified under the &#39;User Access&#39; section of its settings. It shows what roles each user has for the application and where any application-specific overrides have been set. Here you can see I&#39;ve reduced Ben to a Dashboard role for this application - sorry Ben!&lt;/p&gt;
&lt;p&gt;As with managing the top level roles in a team, only Team Owners are able to modify the roles within an application.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;Application RBAC Settings&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/application-rbac.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;&lt;br /&gt;
&lt;em&gt;Application RBAC Settings&lt;/em&gt;&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2025/09/expose-saml-groups-to-dashboard/</id>
        <title>Allow SSO groups to be shared with the Node-RED Dashboard</title>
        <summary></summary>
        <updated>2025-09-25T12:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2025/09/expose-saml-groups-to-dashboard/"/>
        <author><name>Ben Hardill</name></author>
        <content type="html">&lt;p&gt;A new flag has been added to the SAML SSO configuration to allow a user&#39;s group membership to be included in the profile information included when FlowFuse Authentication is used with the Node-RED Dashboard v2.&lt;/p&gt;
&lt;p&gt;Shown here is the content of the &lt;code&gt;_client&lt;/code&gt; object attached to messages generated by the Dashboard nodes.&lt;/p&gt;

&lt;div style=&quot;position: relative&quot; id=&quot;code-container-6&quot;&gt;
  &lt;pre class=&quot;language-json&quot;&gt;&lt;code id=&quot;code-6&quot; class=&quot;language-json&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token property&quot;&gt;&quot;user&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;        &lt;span class=&quot;token property&quot;&gt;&quot;username&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;ben-example_com&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;        &lt;span class=&quot;token property&quot;&gt;&quot;email&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;ben@example.com&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;        &lt;span class=&quot;token property&quot;&gt;&quot;image&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;https://forge.example.com/avatar/YmVu&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;        &lt;span class=&quot;token property&quot;&gt;&quot;name&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Ben&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;        &lt;span class=&quot;token property&quot;&gt;&quot;userId&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;r3VG59G85J&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;        &lt;span class=&quot;token property&quot;&gt;&quot;role&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;owner&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;        &lt;span class=&quot;token property&quot;&gt;&quot;SSOGroups&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token string&quot;&gt;&quot;FlowFuse&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token string&quot;&gt;&quot;ff-development-owner&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token string&quot;&gt;&quot;test_ff-development-owner_test&quot;&lt;/span&gt;&lt;br /&gt;        &lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token property&quot;&gt;&quot;socketId&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;NA7eDLuWbR6wmCpSAAAF&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token property&quot;&gt;&quot;socketIp&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;192.168.1.56&quot;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

  &lt;button class=&quot;code-copy mdi mdi-content-copy&quot; data-clipboard-target=&quot;#code-6&quot; style=&quot;position: absolute; top: 7.5px; right: 6px; padding-top: 3px; cursor: pointer; outline: none; opacity: 0.8;&quot; title=&quot;Copy&quot;&gt;
    &lt;span style=&quot;display:inline-block;background:url() no-repeat center center / contain;background: initial&quot; class=&quot;&quot;&gt;&lt;/span&gt;
  &lt;/button&gt;
&lt;/div&gt;
&lt;p&gt;The new key &lt;code&gt;SSOGroups&lt;/code&gt; includes the list of Groups passed to the SSO configuration by the SAML backend and can be used by the Dashboard to control what information is shown to the user.&lt;/p&gt;
&lt;p&gt;More details about how to create mutli-user Node-RED Dashboards can be found &lt;a href=&quot;https://dashboard.flowfuse.com/user/multi-tenancy&quot;&gt;here&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;SSO is available to Enterprise teams on FlowFuse Cloud. Contact support if you would like this feature to be enable for your team.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2025/09/team-broker-async-api/</id>
        <title>Capture Async API data from FlowFuse Team Broker</title>
        <summary></summary>
        <updated>2025-09-22T12:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2025/09/team-broker-async-api/"/>
        <author><name>Ben Hardill</name></author>
        <content type="html">&lt;p&gt;The FlowFuse Team Broker now includes automatically curated smart suggestions for the published payloads in each topic.&lt;/p&gt;
&lt;p&gt;You can run this by simply toggling on the toggle found in the Topic Hierarchy view. This will run for 24 hours.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data_zoomable=&quot;&quot; alt=&quot;&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/team-broker-schema.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;
&lt;em&gt;Team Broker Schema Capture&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Our agent will monitor for any payloads published on your broker in that time, and offer smart suggestions on data structure found. You can review these suggestions with the FlowFuse user interface, and confirm them where appropriate.&lt;/p&gt;
&lt;p&gt;Once confirmed, the Async API documentation can be viewed by clicking on the &amp;quot;Open Schema&amp;quot; button. This means that your whole team can be aligned when building with your UNS.&lt;/p&gt;
&lt;p&gt;This functionality was previously only available to 3rd party MQTT brokers using the MQTT Schema Agent, it is enabled on FlowFuse Cloud and will be available to Enterprise Licensed Self Hosted customers from v2.22.0.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2025/09/retiring-flowforge-device-agent/</id>
        <title>No more @flowforge/flowforge-device-agent releases</title>
        <summary></summary>
        <updated>2025-09-22T12:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2025/09/retiring-flowforge-device-agent/"/>
        <author><name>Ben Hardill</name></author>
        <content type="html">&lt;p&gt;When we changed company name from FlowForge to FlowFuse we continued to publish the Device Agent under the old package name &lt;code&gt;@flowforge/flowforge-device-agent&lt;/code&gt; as well as the new package name &lt;code&gt;@flowfuse/device-agent&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The current version 3.6.1 will be last release under the old package name.&lt;/p&gt;
&lt;p&gt;The latest version can be found on npmjs.org &lt;a href=&quot;https://www.npmjs.com/package/@flowfuse/device-agent&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;To upgrade please uninstall &lt;code&gt;@flowforge/flowforge-device-agent&lt;/code&gt; using&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;npm uninstall -g @flowforge/flowforge-device-agent
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;(You may need to prefix this command with &lt;code&gt;sudo&lt;/code&gt; on Unix platforms)&lt;/p&gt;
&lt;p&gt;and install &lt;code&gt;@flowfuse/device-agent&lt;/code&gt;.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;npm install -g @flowfuse/device-agent
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;(again you may need to prefix this with &lt;code&gt;sudo&lt;/code&gt; on Unix platforms)&lt;/p&gt;
&lt;p&gt;The replacement package includes a migration binary called &lt;code&gt;flowforge-device-agent&lt;/code&gt; which can still be used to start the new package.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2025/09/revised-instance-snapshot-ui/</id>
        <title>Streamlined Snapshot Management</title>
        <summary></summary>
        <updated>2025-09-19T12:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2025/09/revised-instance-snapshot-ui/"/>
        <author><name>Serban Costin</name></author>
        <content type="html">&lt;p&gt;We’ve redesigned how you interact with Hosted Instance &lt;strong&gt;snapshots&lt;/strong&gt; by bringing all related actions into one place.&lt;br /&gt;
Instead of jumping between different menus, you can now manage everything directly from a single consolidated view.&lt;/p&gt;
&lt;p&gt;This update keeps all existing functionality, but makes it easier and faster to find and use.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;Snapshot interaction redesign&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/revised-instance-snapshots.gif&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;&lt;br /&gt;
&lt;em&gt;Streamlined snapshot management&lt;/em&gt;&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2025/08/ai-generated-snapshot-descriptions-remote/</id>
        <title>AI Snapshot Descriptions Now Work with Remote Instances</title>
        <summary></summary>
        <updated>2025-09-11T12:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2025/08/ai-generated-snapshot-descriptions-remote/"/>
        <author><name>Serban Costin</name></author>
        <content type="html">&lt;p&gt;We&#39;ve extended &lt;strong&gt;AI-generated snapshot descriptions&lt;/strong&gt; to &lt;strong&gt;remote instances&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Whether your remote instance is linked to an application or a hosted instance, you can now generate a smart, clear description of the snapshot with a single click.&lt;/p&gt;
&lt;h3 id=&quot;two-flows%2C-same-outcome&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/changelog/2025/08/ai-generated-snapshot-descriptions-remote/#two-flows%2C-same-outcome&quot;&gt;Two Flows, Same Outcome&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Depending on how your remote instance is owned, the flow is slightly different:&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;AI for application-owned remote instances&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/device-llm-snapshot-description_application-owned.gif&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;&lt;br /&gt;
&lt;em&gt;AI for application-owned remote instances&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;AI for hosted-instance-owned remote&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/device-llm-snapshot-description_instance-owned.gif&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;&lt;br /&gt;
&lt;em&gt;AI for hosted-instance-owned remote instances&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;This rounds out our support for AI-generated snapshot descriptions.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2025/09/inline-assist/</id>
        <title>FlowFuse Expert can help you write code</title>
        <summary></summary>
        <updated>2025-09-05T12:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2025/09/inline-assist/"/>
        <author><name>Steve McLaughlin</name></author>
        <content type="html">&lt;p&gt;More goodness has been added to the FlowFuse Expert by way of inline suggestions as you type.
Initially, we have added support for the Function Node, Tables Query Node and the Dashboard Template Node.
It is contextually aware so will offer suggestions applicable to what it sees and what is already written.&lt;/p&gt;
&lt;h3 id=&quot;let&#39;s-see-it-in-action&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/changelog/2025/09/inline-assist/#let&#39;s-see-it-in-action&quot;&gt;Let&#39;s see it in action&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;Demo of function node with inline completions&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/inline-assist-function-node.gif&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;
_Demo of function node with inline completions&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;Demo of tables query node with inline completions&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/inline-assist-query-node.gif&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;
_Demo of tables query node with inline completions&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;Demo of dashboard template node with inline completions&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/inline-assist-template-node.gif&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;
_Demo of dashboard template node with inline completions&lt;/p&gt;
&lt;p&gt;This will be made availabe to our Pro and Enterprise users in remote and hosted instances in the next update however
if you want to give it a go right away, you can update the FlowFuse Expert in the Node-RED Palette Manager today.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2025/08/device-performance/</id>
        <title>FlowFuse Remote Instance Performance Data</title>
        <summary></summary>
        <updated>2025-08-28T16:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2025/08/device-performance/"/>
        <author><name>Ben Hardill</name></author>
        <content type="html">&lt;p&gt;FlowFuse Device Agent version v3.6.0 combined with FlowFuse v2.21.0 allows you to monitor the CPU and Memory usage of Remote Instances&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;Screenshot of Device Performance data&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/device-performance.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;
&lt;em&gt;Screenshot of Device Performance data&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;The view is available from the &amp;quot;Performance&amp;quot; tab on the Remote Instance page.&lt;/p&gt;
&lt;p&gt;This feature is available to Enterprise customers on FlowFuse Cloud and to Enterprise licensed self hosting customers.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2025/08/subflow-export/</id>
        <title>Export SubFlow as Node-RED module</title>
        <summary></summary>
        <updated>2025-08-28T12:00:05Z</updated>
        <link href="https://flowfuse.com/changelog/2025/08/subflow-export/"/>
        <author><name>Ben Hardill</name></author>
        <content type="html">&lt;p&gt;Instances running the latest Node-RED version on FlowFuse v2.21.0 will now be able to export Node-RED SubFlows as Node-RED nodes.&lt;/p&gt;
&lt;p&gt;This is done from the Node-RED editor using a custom sidebar.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;Screenshot of Node-RED with the SubFlow export sidebar&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/subflow-export.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;
&lt;em&gt;Screenshot of Node-RED with the SubFlow export sidebar&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;The nodes are added to the Team&#39;s Library of Custom Nodes and can be installed into any of the Team&#39;s Node-RED instances from the Catalogue generated by the Team Library.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;Screenshot of Node-RED Manage Palette showing new SubFlow modules&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/subflow-catalogue.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;
&lt;em&gt;Screenshot of Node-RED Manage Palette showing new SubFlow modules&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;This feature is available to FlowFuse Cloud Pro and Enterprise teams and to Enterprise Self hosting users.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2025/08/tables-assistant/</id>
        <title>FlowFuse Tables with a little help from the Assistant</title>
        <summary></summary>
        <updated>2025-08-28T12:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2025/08/tables-assistant/"/>
        <author><name>Steve McLaughlin</name></author>
        <content type="html">&lt;p&gt;The new &lt;a href=&quot;https://flowfuse.com/blog/2025/07/flowfuse-release-2-20/#introducing%3A-flowfuse-tables&quot;&gt;Tables&lt;/a&gt; we introduced in FlowFuse 2.20.0 feature may be still in Beta but to help you make the most of it we have added a codelens to the query editor to help you get your queries written faster.&lt;/p&gt;
&lt;p&gt;Behind the scenes, when you ask for assistance, we gather schema info and include this in the process of making a prediction as to the best tables and fields to use for in the query.&lt;/p&gt;
&lt;h3 id=&quot;let&#39;s-see-it-in-action&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/changelog/2025/08/tables-assistant/#let&#39;s-see-it-in-action&quot;&gt;Let&#39;s see it in action&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;Demo of table node with assistance&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/query-assist.gif&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;
&lt;em&gt;Demo of table node with assistance&lt;/em&gt;&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2025/08/http-cors/</id>
        <title>Configure HTTP CORS</title>
        <summary></summary>
        <updated>2025-08-28T12:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2025/08/http-cors/"/>
        <author><name>Ben Hardill</name></author>
        <content type="html">&lt;p&gt;Included in FlowFuse v2.21.0 is the ability to configure the HTTP CORS response for HTTP routes served by the Node-RED instances.&lt;/p&gt;
&lt;p&gt;This includes routes from HTTP-in/HTTP-response nodes and the Node-RED Dashboard.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;Screenshot of Hosted Instance Security Settings&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/http-cors.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;
&lt;em&gt;Screenshot of Hosted Instance Security Settings&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;This feature will require the latest Stack version and uses will be prompted to upgrade if required.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2025/08/direct-sso/</id>
        <title>Direct SSO Login</title>
        <summary></summary>
        <updated>2025-08-28T12:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2025/08/direct-sso/"/>
        <author><name>Ben Hardill</name></author>
        <content type="html">&lt;p&gt;As part of FlowFuse release v2.21.0, self hosted Enterprise users will be able to enable direct SSO login from the FlowFuse login page.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;Screenshot of FlowFuse Login Page with SSO Direct Button&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/direct-sso.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;
&lt;em&gt;Screenshot of FlowFuse Login Page with SSO Direct Button&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;This can be enabled from the Admin Settings page. When enabled it will add a button for all SAML SSO configurations to the login page. These buttons bypass the email domain matching that would normally be used to select which SSO provider to use. This can be used when users use the same email domain but need to authenticate with different SSO providers.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;Screenshot of FlowFuse Admin Settings for Direct SSO&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/direct-sso-config.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;
&lt;em&gt;Screenshot of FlowFuse Admin Settings for Direct SSO&lt;/em&gt;&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2025/08/ai-generated-snapshot-descriptions-hosted/</id>
        <title>Generate snapshot descriptions with AI</title>
        <summary></summary>
        <updated>2025-08-28T12:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2025/08/ai-generated-snapshot-descriptions-hosted/"/>
        <author><name>Serban Costin</name></author>
        <content type="html">&lt;p&gt;We’ve introduced a new feature: &lt;strong&gt;AI-generated Snapshot Descriptions&lt;/strong&gt;.&lt;br /&gt;
When creating a snapshot, you can now generate a concise description of what it contains and why it was created.&lt;/p&gt;
&lt;p&gt;This makes it easier to understand the purpose of a snapshot at a glance, especially when working in a team or looking back weeks later.&lt;/p&gt;
&lt;h3 id=&quot;how-it-works&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/changelog/2025/08/ai-generated-snapshot-descriptions-hosted/#how-it-works&quot;&gt;How it works&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;When creating a snapshot, you’ll see a new “Generate with AI” option.&lt;br /&gt;
With one click, a suggested description is created for you, which you can accept as-is or edit before saving.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;Demo of generating snapshot descriptions&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/snapshot-description-generation-hosted.gif&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;&lt;br /&gt;
&lt;em&gt;Demo of generating snapshot descriptions&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;This feature is currently available for &lt;strong&gt;hosted instances only&lt;/strong&gt;. Support for remote instances will follow shortly.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2025/08/flowfuse-mqtt/</id>
        <title>FlowFuse MQTT</title>
        <summary></summary>
        <updated>2025-08-18T12:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2025/08/flowfuse-mqtt/"/>
        <author><name>Steve McLaughlin</name></author>
        <content type="html">&lt;p&gt;FlowFuse has offered a built in MQTT &lt;a href=&quot;https://flowfuse.com/docs/user/teambroker/&quot;&gt;Team Broker&lt;/a&gt; since FlowFuse v2.10.0, but connecting to it still required manual configuration in your Node-RED instances through the core MQTT nodes.&lt;/p&gt;
&lt;p&gt;Today, we are adding dedicated MQTT nodes that require no setup to use. Just add a FlowFuse MQTT Node to your Node-RED instance, deploy it &amp;amp; go.&lt;/p&gt;
&lt;p&gt;Pretty much all of the capabilities of the Node-RED MQTT Nodes are present making it very straightforward and to get up and running in no time.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;Screenshot of Node-RED with FlowFuse MQTT nodes&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/mqtt-nodes-1.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;
&lt;em&gt;Screenshot of Node-RED with FlowFuse MQTT Nodes&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;Screenshot of Node-RED with FlowFuse MQTT-in node edit panel&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/mqtt-nodes-2.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;
&lt;em&gt;Screenshot of Node-RED with FlowFuse MQTT-in node edit panel&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;To get the new FlowFuse MQTT Nodes in your Node-RED instance, you will need to be running the latest version of the FlowFuse Device Agent (V3.6.0 or greater) or a stack running with the FlowFuse launcher (V2.20.1 or greater) which will be released in the coming days.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2025/08/flowfuse-assistant/</id>
        <title>FlowFuse Expert documents your flows</title>
        <summary></summary>
        <updated>2025-08-06T12:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2025/08/flowfuse-assistant/"/>
        <author><name>Steve McLaughlin</name></author>
        <content type="html">&lt;p&gt;Recently, we introduced &amp;quot;Flows Explainer&amp;quot; to the FlowFuse Expert. It provides a concise description of the selected flows.
This turned out so well we thought &amp;quot;wouldn&#39;t it be good if the generated explanation could be persisted as built in documentation&amp;quot; so we added a single click option to add the documentation as a comment node to your flows.
We also provided a Copy to Clipboard button so you can grab it and add it to the Documentation section of a flow tab, node group or external documentation.&lt;/p&gt;
&lt;h3 id=&quot;let&#39;s-see-it-in-action&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/changelog/2025/08/flowfuse-assistant/#let&#39;s-see-it-in-action&quot;&gt;Let&#39;s see it in action&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;Demo of documenting flows with the Flows Explainer&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/explainer-to-comment-node.gif&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;
&lt;em&gt;Demo of documenting flows with the Flows Explainer&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;While this feature is just a simple &lt;em&gt;quality of life&lt;/em&gt; addition, we are hopeful it is small touches like these that improve your daily workflow.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2025/07/team-to-pro-plan-rename/</id>
        <title>Team Plan Renamed to Pro Plan</title>
        <summary></summary>
        <updated>2025-08-04T12:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2025/07/team-to-pro-plan-rename/"/>
        <author><name></name></author>
        <content type="html">&lt;p&gt;We&#39;ve renamed our Team tier to Pro tier to better reflect what it&#39;s truly designed for: using Node-RED professionally to build applications, replace and augment software in your organization, and scale professional Node-RED deployments.&lt;/p&gt;
&lt;p&gt;The Pro plan empowers developers and engineers to move beyond collaboration and into production-ready industrial applications that optimize operations and drive real business value.&lt;/p&gt;
&lt;p&gt;All existing Team plan subscribers will automatically transition to Pro. Your applications, instances, and team configurations remain exactly the same.&lt;/p&gt;
&lt;p&gt;What&#39;s new:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A name that better represents professional Node-RED application development&lt;/li&gt;
&lt;li&gt;Clearer positioning for organizations ready to scale their Node-RED implementations&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ready to build professional Node-RED applications? &lt;a href=&quot;https://app.flowfuse.com/account/create&quot;&gt;Get started with Pro&lt;/a&gt; or &lt;a href=&quot;https://flowfuse.com/contact-us/&quot;&gt;contact us&lt;/a&gt; to learn more.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2025/07/smart-suggestions/</id>
        <title>Smart Suggestions</title>
        <summary></summary>
        <updated>2025-07-31T13:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2025/07/smart-suggestions/"/>
        <author><name>Steve McLaughlin</name></author>
        <content type="html">&lt;p&gt;In conjunction with the release of Node-RED 4.1.0 and FlowFuse 2.20.0, we have added smart suggestions to the Editor.&lt;/p&gt;
&lt;p&gt;When you drop a node onto the editor workspace, the upstream connected nodes in your flow are analysed and a next node suggestion is presented for quick insertion via the keyboard &lt;code&gt;TAB&lt;/code&gt; key or the click of your mouse.
It presents up to 5 of the most common following nodes which can be cycled through using your keyboards &lt;code&gt;UP&lt;/code&gt; and &lt;code&gt;DOWN&lt;/code&gt; arrows, so even if the first suggestion isn&#39;t correct, it&#39;s very likely that the correct choice is only a key press away.&lt;/p&gt;
&lt;p&gt;To achieve this, we processed thousands of real working flows and built a decision tree model for the greatest accuracy possible.&lt;/p&gt;
&lt;h3 id=&quot;let&#39;s-see-it-in-action&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/changelog/2025/07/smart-suggestions/#let&#39;s-see-it-in-action&quot;&gt;Let&#39;s see it in action&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;Demo of smart suggestions&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/smart-suggestion.gif&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;
&lt;em&gt;Demo of smart suggestions&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;We hope this new feature makes the process of writing flows for Node-RED flows in FlowFuse even easier.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2025/07/flowfuse-tables/</id>
        <title>FlowFuse Tables</title>
        <summary></summary>
        <updated>2025-07-31T12:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2025/07/flowfuse-tables/"/>
        <author><name>Ben Hardill</name></author>
        <content type="html">&lt;p&gt;As part of the FlowFuse v2.20.0 release we are adding an option for a Team level hosted relational database.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;Screenshot of the FlowFuse Tables onboarding wizard&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/create-database.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;
&lt;em&gt;Screenshot of the FlowFuse Tables onboarding wizard&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Tools to create tables and to show sample data are included, but we will be iterating on these moving forward.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;Screenshot of Table Explorer&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/table-data-sample.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;
&lt;em&gt;Screenshot of Table Explorer&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Paired with the Database is a new FlowFuse Tables node which will automatically pick up the credentials when deployed in FlowFuse Hosted Instance running on a v2.20.0+ Stack, or when running with the latest version of the FlowFuse Device Agent.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;Screenshot of Node-RED with FlowFuse Tables node&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/tables-node.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;
&lt;em&gt;Screenshot of Node-RED with FlowFuse Tables Node&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;The database is a Postgres instance and you will be able to connect 3rd party clients using the credentials provided.&lt;/p&gt;
&lt;p&gt;This feature will be available to FlowFuse Cloud Enterprise Tier customers and to Enterprise Licensed Self Hosted customers on Kubernetes to start with, we hope to make it available to Docker Compose users in a future release.&lt;/p&gt;
&lt;p&gt;It is currently marked as a &lt;a href=&quot;https://flowfuse.com/handbook/engineering/releases/#beta-release&quot;&gt;Beta Feature&lt;/a&gt; while we continue to iterate on adding new features and observe how it is used.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2025/07/simplified-applications-overview/</id>
        <title>Simplified Applications Page with Summary Tiles</title>
        <summary></summary>
        <updated>2025-07-29T12:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2025/07/simplified-applications-overview/"/>
        <author><name>Serban Costin</name></author>
        <content type="html">&lt;p&gt;We’ve rolled out a redesigned &lt;strong&gt;Applications Page&lt;/strong&gt; interface to give you sharper insight into instance status across hosted and remote deployments.&lt;/p&gt;
&lt;h3 id=&quot;key-updates&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/changelog/2025/07/simplified-applications-overview/#key-updates&quot;&gt;Key Updates&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Application Shortcuts Maintained&lt;/strong&gt;
The existing shortcuts to &lt;strong&gt;instances&lt;/strong&gt;, &lt;strong&gt;devices&lt;/strong&gt;, &lt;strong&gt;device groups&lt;/strong&gt;, &lt;strong&gt;snapshots&lt;/strong&gt;, and &lt;strong&gt;pipelines&lt;/strong&gt; have been retained in the new layout for easy access.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Summary Tiles for Each App&lt;/strong&gt;
Instead of listing every instance individually, you now get compact summary tiles with counts of &lt;strong&gt;Running&lt;/strong&gt;, &lt;strong&gt;Error&lt;/strong&gt;, and &lt;strong&gt;Not Running&lt;/strong&gt; instances for both hosted and remote groups. Visual layout is clean and instant to scan.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Grouped Instances by Status&lt;/strong&gt;
Each application shows two separate tiles: one for hosted instances and one for remote. That way you see app health at a glance, without needing to drill into details.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Aggregate Status Tiles&lt;/strong&gt;
Each status tile represents an aggregate count of instances in a given state (e.g. Running, Error). Clicking on a tile takes you to a filtered view of the underlying instances.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;why-this-matters&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/changelog/2025/07/simplified-applications-overview/#why-this-matters&quot;&gt;Why This Matters&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Page load times have been significantly improved by reducing the number of rendered elements and simplifying data fetching.&lt;/li&gt;
&lt;li&gt;Cuts out clutter—no more scrolling through long lists.&lt;/li&gt;
&lt;li&gt;Quick status view helps you spot issues fast.&lt;/li&gt;
&lt;li&gt;Cleaner separation between hosted vs remote gives context instantly.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;Screenshot of the Simplified Applications page&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/simplified-applications.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;
&lt;em&gt;Screenshot of the Simplified Applications page&lt;/em&gt;&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2025/07/import-blueprints/</id>
        <title>Import blueprints directly into your existing instances</title>
        <summary></summary>
        <updated>2025-07-03T12:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2025/07/import-blueprints/"/>
        <author><name>Nick O&#39;Leary</name></author>
        <content type="html">&lt;p&gt;FlowFuse provides a growing &lt;a href=&quot;https://flowfuse.com/blueprints/&quot;&gt;library of blueprints&lt;/a&gt; that provide a great way to get started quickly with a pre-built solution across a range of scenarios.&lt;/p&gt;
&lt;p&gt;With the 2.19 release of FlowFuse, instances that have been updated to the latest version can now import blueprints directly into their editor.&lt;/p&gt;
&lt;p&gt;The Node-RED import dialog (&lt;code&gt;Ctrl-i&lt;/code&gt; or the &lt;code&gt;import&lt;/code&gt; menu option) now has a blueprints section. Under that you can browse the available blueprints by category and select one to import.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;Screenshot of the Node-RED import dialog&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/import-blueprint.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;
&lt;em&gt;Screenshot of the Node-RED import dialog&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;When you import a blueprint, you may get an error about &#39;unknown&#39; nodes. This will be because the blueprint depends on Node-RED nodes you haven&#39;t currently got installed. You can check the &lt;a href=&quot;https://flowfuse.com/blueprints/&quot;&gt;blueprint library&lt;/a&gt; for details on what the blueprints require and then install them via the Palette Manager within Node-RED.&lt;/p&gt;
&lt;p&gt;We recognise that isn&#39;t as smooth an experience as we&#39;d like - but the good news is it&#39;s about to get much better. With the imminent Node-RED 4.1 release, the editor will be able to automatically install any missing modules for you. Keep an eye out for the 4.1 release announcement and update your instances to take full advantage.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2025/07/browse-node-red-flows/</id>
        <title>Browse for Node-RED Flows During Remote Instance Setup</title>
        <summary></summary>
        <updated>2025-07-03T12:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2025/07/browse-node-red-flows/"/>
        <author><name>Steve McLaughlin</name></author>
        <content type="html">&lt;p&gt;Last month we introduced a way for the FlowFuse Device Agent to import Node-RED flows during the setup process. Today, we have built on that and added some new features:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Automatically scan common file locations and offer any flows found for immediate selection&lt;/li&gt;
&lt;li&gt;Scan common directories and present any that contain multiple flows as a quick browse selection&lt;/li&gt;
&lt;li&gt;Offer a &amp;quot;Browse filesystem&amp;quot; option to let you navigate and select any flows on your device&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;lets-see-it-in-action&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/changelog/2025/07/browse-node-red-flows/#lets-see-it-in-action&quot;&gt;Lets see it in action&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Import automatically located &lt;code&gt;~/.node-red/flows.json&lt;/code&gt; flows file&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;Screenshot of the Importing an Automatically located flows file during Device Agent Setup&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/import-flows-quick-select.gif&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;
&lt;em&gt;Screenshot of the Importing an Automatically located flows file during Device Agent Setup&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Using the &amp;quot;Browse filesystem&amp;quot; option to navigate the filesystem to chose a different flows file&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;Screenshot of Browsing the filesystem for flows file during Device Agent Setup&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/import-flows-browsed.gif&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;
&lt;em&gt;Screenshot of Browsing the filesystem for flows file during Device Agent Setup&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;We hope these new enhancements make the process of migrating existing Node-RED flows to FlowFuse even easier.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2025/06/flowfuse-assistant-2/</id>
        <title>FlowFuse Expert just got smarter</title>
        <summary></summary>
        <updated>2025-06-30T12:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2025/06/flowfuse-assistant-2/"/>
        <author><name>Steve McLaughlin</name></author>
        <content type="html">&lt;p&gt;Following on from the recent improvements we made earlier this month, we have added even more goodness to the FlowFuse Expert:&lt;/p&gt;
&lt;p&gt;We have:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Added a menu for quick access to the new features&lt;/li&gt;
&lt;li&gt;Improved the look and feel of the Flow Explainer&lt;/li&gt;
&lt;li&gt;Added a codelens to assist you creating HTML, VUE, Vuetify &amp;amp; CSS in FlowFuse Node-RED Dashboard templates&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;And there more to come in the next week - stay tuned!&lt;/p&gt;
&lt;h4 id=&quot;new-menu&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/changelog/2025/06/flowfuse-assistant-2/#new-menu&quot;&gt;New Menu&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;Screenshot of the new Assistant Menu&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/assistant-new-menu.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;
&lt;em&gt;Screenshot of the new Assistant Menu&lt;/em&gt;&lt;/p&gt;
&lt;h4 id=&quot;flow-explainer-updated-look-%26-feel&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/changelog/2025/06/flowfuse-assistant-2/#flow-explainer-updated-look-%26-feel&quot;&gt;Flow Explainer updated look &amp;amp; feel&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;Animated GIF showing the Flow Explainer Updated Layout&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/assistant-0-3-0-flow-explainer.gif&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;
&lt;em&gt;Animated GIF showing the Flow Explainer Updated Layout&lt;/em&gt;&lt;/p&gt;
&lt;h4 id=&quot;new-codelens-for-building-ui-templates&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/changelog/2025/06/flowfuse-assistant-2/#new-codelens-for-building-ui-templates&quot;&gt;New Codelens for building ui-templates&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;Animated GIF showing the Assistant building HTML &amp;amp; VUE template code&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/assistant-0-3-0-ui-template-vue.gif&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;
&lt;em&gt;Animated GIF showing the Assistant building HTML &amp;amp; VUE template code&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;Animated GIF showing the Assistant building CSS styles&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/assistant-0-3-0-ui-template-css.gif&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;
&lt;em&gt;Animated GIF showing the Assistant building CSS styles&lt;/em&gt;&lt;/p&gt;
&lt;h4 id=&quot;updating-the-assistant&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/changelog/2025/06/flowfuse-assistant-2/#updating-the-assistant&quot;&gt;Updating the Assistant&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;If you are running Node-RED v4.x, head over to the Palette Manager, update the plugin and restart your instance.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;Updating assistant on Node-RED 4&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/assistant-0-3-0-update-nr4.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;
&lt;em&gt;Screenshot of Updating the Assistant for a Node-RED 4 instance&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;If you are still running Node-RED v3.x we strogly recommend you update your stack to use Node-RED v4.x but you can
still manually update the plugin by adding &lt;code&gt;@flowfuse/nr-assistant&lt;/code&gt; to the instance settings then restart it.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;Updating assistant on Node-RED 3&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/assistant-update-nr3.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;
&lt;em&gt;Screenshot of Updating Assistant for a Node-RED 3 instance&lt;/em&gt;&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2025/06/new-home-page/</id>
        <title>Introducing the New Home Page Experience</title>
        <summary></summary>
        <updated>2025-06-24T12:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2025/06/new-home-page/"/>
        <author><name>Serban Costin</name></author>
        <content type="html">&lt;p&gt;We’re excited to announce the release of the all-new &lt;strong&gt;Home Page&lt;/strong&gt;, designed to simplify navigation and provide relevant information at a glance.&lt;/p&gt;
&lt;h3 id=&quot;key-features&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/changelog/2025/06/new-home-page/#key-features&quot;&gt;Key Features&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;A more intuitive and &lt;strong&gt;dedicated landing page&lt;/strong&gt;, replacing the dual-purpose &amp;quot;Applications&amp;quot; view.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Recently Modified Instances&lt;/strong&gt;: The Home page highlights &lt;strong&gt;recently modified hosted and remote instances&lt;/strong&gt;, providing key statistics at a glance:
&lt;ul&gt;
&lt;li&gt;Number of &lt;strong&gt;running&lt;/strong&gt;, &lt;strong&gt;error&lt;/strong&gt;, and &lt;strong&gt;not running&lt;/strong&gt; instances.&lt;/li&gt;
&lt;li&gt;Each tile is &lt;strong&gt;clickable&lt;/strong&gt; for direct access.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Recent Activity Section&lt;/strong&gt;: A comprehensive view of the latest 50 changes made within the current team is now integrated, enabling better tracking of team activities and updates.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These enhancements are intended to make managing your instances and reviewing activity smoother and more effective.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;Screenshot of the New Home Page&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/new-home-page.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;
&lt;em&gt;Screenshot of the new home/landing page in FlowFuse&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;This improvement aligns with the feedback we received from the community, aimed at delivering a more user-friendly and focused experience.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2025/06/instance-performance-memory/</id>
        <title>Memory Metrics in Instance Performance View</title>
        <summary></summary>
        <updated>2025-06-20T12:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2025/06/instance-performance-memory/"/>
        <author><name>Serban Costin</name></author>
        <content type="html">&lt;p&gt;We&#39;re excited to announce an enhancement to the existing Performance view for Hosted Instances in FlowFuse. We&#39;ve expanded the view to include a new Memory Utilization chart.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;Screenshot of the expanded Performance view with Memory Utilization&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/instance-performance-memory.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;
&lt;em&gt;Screenshot of the Performance view with Memory Utilization&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;This update provides additional insight, allowing you to monitor not only CPU usage but also memory consumption over time. The inclusion of memory metrics makes it easier than ever to detect performance issues and optimize your Node-RED Flows.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2025/06/flowfuse-assistant/</id>
        <title>FlowFuse Expert just got smarter</title>
        <summary></summary>
        <updated>2025-06-12T12:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2025/06/flowfuse-assistant/"/>
        <author><name>Steve McLaughlin</name></author>
        <content type="html">&lt;p&gt;Last year, we introduced the FlowFuse Expert, a Node-RED plugin designed to assist FlowFuse users with tools for developing their Node-RED instances. Today, we are excited to announce that the Assistant has been updated with a new feature powered by AI: the Flows Explainer. This feature uses AI to analyze your Node-RED flows and provide a detailed explanation of what they do, making it easier for you to understand and manage your flows.&lt;/p&gt;
&lt;p&gt;Stay tuned; this is just a taste of what is to come.&lt;/p&gt;
&lt;h4 id=&quot;flows-explainer&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/changelog/2025/06/flowfuse-assistant/#flows-explainer&quot;&gt;Flows Explainer&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;flowfuse-assistant-flow-explainer&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/flowfuse-assistant-flow-explainer.gif&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;
&lt;em&gt;Screenshot of the FlowFuse Expert Flow Explainer&lt;/em&gt;&lt;/p&gt;
&lt;h4 id=&quot;updating-the-assistant&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/changelog/2025/06/flowfuse-assistant/#updating-the-assistant&quot;&gt;Updating the Assistant&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;If you are running Node-RED v4.x, head over to the Palette Manager, update the plugin and restart your instance.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;Updating assistant on Node-RED 4&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/assistant-update-nr4.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;
&lt;em&gt;Screenshot of Updating assistant on Node-RED 4&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;If you are still running Node-RED v3.x we strogly recommend you update your stack to use Node-RED v4.x but you can still manually update the plugin by adding &lt;code&gt;@flowfuse/nr-assistant&lt;/code&gt; to the instance settings then restart it.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;Updating assistant on Node-RED 3&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/assistant-update-nr3.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;
&lt;em&gt;Screenshot of Updating assistant on Node-RED 3&lt;/em&gt;&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2025/06/ui-refresh/</id>
        <title>Navigation UI Refresh</title>
        <summary></summary>
        <updated>2025-06-11T12:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2025/06/ui-refresh/"/>
        <author><name>Serban Costin</name></author>
        <content type="html">&lt;p&gt;We’ve given the top navigation in FlowFuse a visual refresh as part of our effort to constantly improve and modernise the user experience of FlowFuse.&lt;/p&gt;
&lt;p&gt;Menus now use a clean white background, with updated colors, spacing, and transitions across the user menu, team switcher, and notification buttons. Mobile menus have also been cleaned up for better usability.&lt;/p&gt;
&lt;p&gt;This is the first step in a broader UI modernization effort based on community feedback.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;Screenshot of the re-designed top navigation&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/ui-refresh-1.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;
&lt;em&gt;Screenshot of the re-designed top navigation&lt;/em&gt;&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2025/06/team-performance/</id>
        <title>Team Performance Feature</title>
        <summary></summary>
        <updated>2025-06-05T11:43:32Z</updated>
        <link href="https://flowfuse.com/changelog/2025/06/team-performance/"/>
        <author><name>Serban Costin</name></author>
        <content type="html">&lt;p&gt;We&#39;ve expanded the &lt;strong&gt;Performance&lt;/strong&gt; feature with an exciting new addition: Team Performance metrics.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Team-Wide CPU Monitoring&lt;/strong&gt;: Get a complete overview of CPU usage across all hosted instances in your team,
helping you track and analyze resource allocation efficiently.&lt;/p&gt;
&lt;p&gt;These enhancements are designed to improve operational visibility and resource management based on user feedback from
our community.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;Illustration of the New Feature&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/team-performance.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;
&lt;em&gt;Overview of CPU Usage in the Team Performance Feature&lt;/em&gt;&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2025/06/team-performance-view/</id>
        <title>Instance Performance View</title>
        <summary></summary>
        <updated>2025-06-02T12:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2025/06/team-performance-view/"/>
        <author><name></name></author>
        <content type="html">&lt;p&gt;We&#39;ve added a new view for every Hosted Instance in FlowFuse, Performance.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;Screenshot of the Performance view for a Hosted Instance&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/instance-performance.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;
&lt;em&gt;Screenshot of the Performance view for a Hosted Instance&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;This view provides a comprehensive insight into the performance of your hosted Node-RED instances, focussing on CPU usage over time, better enabling you to detect performance issues within your Node-RED Flows.&lt;/p&gt;
&lt;p&gt;This feature is available today for Enterprise tier teams on FlowFuse Cloud and will be available for self-hosted Enterprise customers as part of the 2.18 release later this week.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2025/06/git-integration/</id>
        <title>Pulling snapshots from Git with Pipelines</title>
        <summary></summary>
        <updated>2025-06-02T12:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2025/06/git-integration/"/>
        <author><name>Nick O&#39;Leary</name></author>
        <content type="html">&lt;p&gt;We released support for &lt;a href=&quot;https://flowfuse.com/changelog/2025/04/git-integration/&quot;&gt;pushing snapshots to a Git repository&lt;/a&gt; as part of the DevOps Pipelines feature last month. As promised, we&#39;ve now added the ability to pull snapshots back from the repository.&lt;/p&gt;
&lt;p&gt;This unlocks a number of powerful workflows with the Pipelines.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Review-based Pipelines&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The Git Pipeline stage can be configured to push and pull from different branches of the Git Repostory. By making use of a GitHub Pull Request, you can create a workflow where the snapshot is reviewed and merged before the pipeline can deploy the snapshot to the later stages.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Deploying snapshots across Teams&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;By using an external Git Repository, it is simple to create a workflow that enables moving snapshots between two different Teams on the platform whilst maintaining the security and auditability of the individual Teams.&lt;/p&gt;
&lt;p&gt;This feature is available today for Enterprise tier teams on FlowFuse Cloud and will be available for self-hosted Enterprise customers as part of the 2.18 release later this week.&lt;/p&gt;
&lt;p&gt;We still only support GitHub.com hosted repositories, but we&#39;re looking at support for Azure hosted repos in the near future.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;Screenshot of a Git Pipeline Stage&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/git-pipeline-stage.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;
&lt;em&gt;Screenshot of a Git Pipeline Stage&lt;/em&gt;&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2025/05/import-node-red-flows/</id>
        <title>Import Node-RED Flows During Remote Instance Setup</title>
        <summary></summary>
        <updated>2025-05-08T12:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2025/05/import-node-red-flows/"/>
        <author><name>Steve McLaughlin</name></author>
        <content type="html">&lt;p&gt;FlowFuse Device Agent now supports importing Node-RED flows during the setup process. This feature streamlines the configuration of your Remote Instance by allowing you to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Select an existing Node-RED flows directory from your device.&lt;/li&gt;
&lt;li&gt;Choose a specific flows file to import.&lt;/li&gt;
&lt;li&gt;Automatically import associated credentials and package files.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;how-it-works&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/changelog/2025/05/import-node-red-flows/#how-it-works&quot;&gt;How it works&lt;/a&gt;&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Setup Command&lt;/strong&gt;: Run the setup command provided in the FlowFuse interface.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Flow Selection&lt;/strong&gt;: During setup, you will be prompted to import existing Node-RED flows. Options include:
&lt;ul&gt;
&lt;li&gt;Skipping the import.&lt;/li&gt;
&lt;li&gt;Selecting a default Node-RED directory (e.g., &lt;code&gt;.node-red&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Specifying a custom path.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;File Selection&lt;/strong&gt;: If a directory is selected, you can choose a specific flows file to import.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Automatic Import&lt;/strong&gt;: The Device Agent will handle importing credentials, package files, and generate a snapshot to the FlowFuse Platform, setting it as the &amp;quot;Target Snapshot&amp;quot; for the device.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;notes&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/changelog/2025/05/import-node-red-flows/#notes&quot;&gt;Notes&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;When your Remote Instance is started, it will install all the necessary pieces and run your new Snapshot.&lt;/li&gt;
&lt;li&gt;The Remote Instance must be assigned to an application before running the &lt;strong&gt;Setup Command&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Requires Device Agent v3.3.1&lt;/li&gt;
&lt;li&gt;Available on FlowFuse Cloud today. For self-hosted customers, you&#39;ll need FlowFuse version 2.17&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;screenshots&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/changelog/2025/05/import-node-red-flows/#screenshots&quot;&gt;Screenshots&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;Screenshot of the FlowFuse interface for configuring a Remote Instance&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/device-setup-dialog.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;
&lt;em&gt;Screenshot of the FlowFuse interface for configuring a Remote Instance&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;Screenshot of the new import options in the Device Agent during setup&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/device-agent-import.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;
&lt;em&gt;Screenshot of the new import options in the Device Agent during setup&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;We hope this enhancement simplifies the process of migrating existing Node-RED flows to FlowFuse.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2025/04/instance-log-browsing/</id>
        <title>Better Node-RED log handling</title>
        <summary></summary>
        <updated>2025-04-09T12:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2025/04/instance-log-browsing/"/>
        <author><name>Nick O&#39;Leary</name></author>
        <content type="html">&lt;p&gt;We&#39;ve improved the log handling within our Hosted Node-RED instances. Previously we were using a fix sized buffer in memory; meaning the noiser your Node-RED instance was, the less history you&#39;d have. The UI for browsing the logs was also awkward when you wanted to jump back to an earlier section of the logs.&lt;/p&gt;
&lt;p&gt;With this release, once you update your instances to the latest version, we will
now store the last 7 days worth of logs for each hosted Node-RED instance.&lt;/p&gt;
&lt;p&gt;To go along side this, we&#39;ve added the ability to jump to a specific time/date in the logs without having to endlessly scroll.&lt;/p&gt;
&lt;p&gt;To start benefiting from the extended logs, make sure you update the latest version via your Instance Settings page.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;Screenshot of browsing Node-RED logs by timestamp&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/browse-logs.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;
&lt;em&gt;Screenshot of browsing Node-RED logs by timestamp&lt;/em&gt;&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2025/04/git-integration/</id>
        <title>Git Integration with Pipelines</title>
        <summary></summary>
        <updated>2025-04-09T12:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2025/04/git-integration/"/>
        <author><name>Nick O&#39;Leary</name></author>
        <content type="html">&lt;p&gt;From today, Enterprise tier teams on FlowFuse Cloud are able to add a Git Repository stage to their deployment pipelines. When the pipeline is triggered, the latest snapshot will get pushed to the configured repository.&lt;/p&gt;
&lt;p&gt;This has been one of those features that has come up a number of times with our users; we knew we wanted to have Git integration in the platform, but we also wanted it to fit in a natural way with the developer workflows we provide.&lt;/p&gt;
&lt;p&gt;This is very much a &amp;quot;first-iteration&amp;quot; of the feature that will allow us to get feedback early and continue to iterate.&lt;/p&gt;
&lt;p&gt;With this release, the following restrictions apply:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Only GitHub.com hosted repostories are supported&lt;/li&gt;
&lt;li&gt;Users must create a GitHub Personal Access Token and add to their Team Settings&lt;/li&gt;
&lt;li&gt;We currently only support pushing snapshots to a Git repository&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This last point is important; this release lets you backup your flows to git, but we haven&#39;t yet enabled the return journey of pulling a snapshot from a Git repository back to your Node-RED instance. That&#39;ll come in the near future and will unlock a full git-based review workflow within the pipelines.&lt;/p&gt;
&lt;p&gt;We&#39;ll also look at enabling other Git hosting providers - let us know which you&#39;d like to see on the list.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;Screenshot of a Git Pipeline Stage&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/git-pipeline-stage.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;
&lt;em&gt;Screenshot of a Git Pipeline Stage&lt;/em&gt;&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2025/03/container-tags/</id>
        <title>Changes to tags for flowfuse/node-red</title>
        <summary></summary>
        <updated>2025-04-09T12:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2025/03/container-tags/"/>
        <author><name>Ben Hardill</name></author>
        <content type="html">&lt;p&gt;As part of the upcoming FlowFuse 2.16.0 release we will be updating which
version the &lt;code&gt;latest&lt;/code&gt; tag points to for the &lt;code&gt;flowfuse/node-red&lt;/code&gt; containers.&lt;/p&gt;
&lt;p&gt;This change will impact self-hosted Docker and Kubernetes installs that have not changed the default stack.&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;latest&lt;/code&gt; tag currently points to the latest version of the FlowFuse Stack container but contains Node-RED version 3.0.2 and NodeJS 16. After the update it will contain Node-RED version 4.0.9 and NodeJS 20.&lt;/p&gt;
&lt;p&gt;It will then continue to track the latest stable Node-RED version as they are released.&lt;/p&gt;
&lt;p&gt;You can update the tag by creating a new version of the Stack under the Admin Settings -&amp;gt; Stacks page as a FlowFuse Admin user.&lt;/p&gt;
&lt;p&gt;We make the following tags available which track the latest version of FlowFuse:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;flowfuse/node-red:latest&lt;/code&gt; as described above&lt;/li&gt;
&lt;li&gt;&lt;code&gt;flowfuse/node-red:latest-2.2.x&lt;/code&gt; which contains Node-RED 2.2.2 NodeJS 16&lt;/li&gt;
&lt;li&gt;&lt;code&gt;flowfuse/node-red:latest-3.0.x&lt;/code&gt; which contains Node-RED 3.0.2 NodeJS 16&lt;/li&gt;
&lt;li&gt;&lt;code&gt;flowfuse/node-red:latest-3.1.x&lt;/code&gt; which contains Node-RED 3.1.15 NodeJS 18&lt;/li&gt;
&lt;li&gt;&lt;code&gt;flowfuse/node-red:latest-4.0.x&lt;/code&gt; which contains Node-RED 4.0.9 NodeJS 20 (same as &lt;code&gt;flowfuse/node-red:latest&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;We also publish tags explicitly pinned to a FlowFuse version with the following format &lt;code&gt;&amp;lt;version&amp;gt;-&amp;lt;node-red-version&amp;gt;&lt;/code&gt; e.g. &lt;code&gt;flowfuse/node-red:2.15.0-4.0.x&lt;/code&gt; which would be FlowFuse 2.15.0 and Node-RED 4.0.x.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2025/04/device-provisioning/</id>
        <title>Remote Instance Provisioning</title>
        <summary></summary>
        <updated>2025-04-04T12:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2025/04/device-provisioning/"/>
        <author><name>Steve McLaughlin</name></author>
        <content type="html">&lt;p&gt;FlowFuse has had the ability to provision remote instances at scale for some time now, but assigning remote instances to an application has, until now, been a manual process.&lt;/p&gt;
&lt;p&gt;In this update, we have added the ability to have your bulk provisioned remote instances automatically assign themselves to an application upon creation.&lt;/p&gt;
&lt;p&gt;This will save you a lot of time if you have a large number of remote instances to provision.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;Screenshot of creating a provisioning token&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/create-provisioning-token.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;
&lt;em&gt;Screenshot of creating a provisioning token&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Checkout the Bulk Registration section in the &lt;a href=&quot;https://flowfuse.com/docs/device-agent/register&quot;&gt;Device Agent Registration&lt;/a&gt; documentation for more information on how to use this feature.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2025/03/device-local-login/</id>
        <title>Local Login for Remote Instances</title>
        <summary></summary>
        <updated>2025-03-27T12:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2025/03/device-local-login/"/>
        <author><name>Steve McLaughlin</name></author>
        <content type="html">&lt;p&gt;With the new 3.2.0 release of the FlowFuse Device Agent, we have introduced a new Local Login option for Remote Instances.&lt;/p&gt;
&lt;p&gt;This feature allows you to enable a local login for your Remote Instance, which is particularly useful in air-gapped environments or times when the instance cannot reach the FlowFuse platform.&lt;/p&gt;
&lt;p&gt;When local login is enabled, users can log in to Node-RED directly using the specified credentials.&lt;/p&gt;
&lt;p&gt;For day-to-day activity, we still recommending accessing the editor through the FlowFuse Platform for the best user experience. However, for those times when that isn&#39;t possible, this option provides a fall-back to allow continued access to the device.&lt;/p&gt;
&lt;p&gt;You can configure this option in your Remote Instance Settings tab under the Security section.
&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;Screenshot of local login options&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/device-agent-local-login-settings.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;
&lt;em&gt;Screenshot of local login options&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Additionally, you can enable or disable local login for in the Device Agents YAML configuration file. For more information, refer to the &lt;a href=&quot;https://flowfuse.com/docs/device-agent/register/#node-red-settings&quot;&gt;Node-RED Settings&lt;/a&gt; in our documentation.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2025/03/resource-notifications/</id>
        <title>Resource Alerts</title>
        <summary></summary>
        <updated>2025-03-25T12:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2025/03/resource-notifications/"/>
        <author><name>Steve McLaughlin</name></author>
        <content type="html">&lt;p&gt;To help you manage resource utilization more effectively, we’ve introduced notifications to alert you when you’re nearing critical thresholds.&lt;/p&gt;
&lt;p&gt;The new CPU and Memory notifications will notify you when usage exceeds 75% of capacity. This proactive alerting gives you the opportunity to take action before experiencing downtime or performance issues.&lt;/p&gt;
&lt;p&gt;We hope this feature helps you avoid unexpected resource-related challenges with your applications.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;Screenshot of the new resource notifications&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/resource-notifications.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;
&lt;em&gt;Screenshot of the new resource notifications&lt;/em&gt;&lt;/p&gt;
&lt;h3 id=&quot;how-to-enable-or-disable-notifications&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/changelog/2025/03/resource-notifications/#how-to-enable-or-disable-notifications&quot;&gt;How to Enable or Disable Notifications&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;You can manage these notifications in your Hosted Instance &lt;strong&gt;Settings&lt;/strong&gt; tab under the &lt;strong&gt;Alerts&lt;/strong&gt; section.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;Screenshot of the new resource notifications settings&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/resource-notifications-settings.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;
&lt;em&gt;Screenshot of the new resource notifications settings&lt;/em&gt;&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2025/03/team-npm-registry/</id>
        <title>NPM Package Hosting</title>
        <summary></summary>
        <updated>2025-03-13T12:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2025/03/team-npm-registry/"/>
        <author><name>Ben Hardill</name></author>
        <content type="html">&lt;p&gt;For Team and Enterprise tier Teams on FlowFuse Cloud we are introducing a NPM package repository giving you a place to host custom Node-RED nodes.&lt;/p&gt;
&lt;p&gt;These Node-RED nodes can be used in both Hosted and Remote Instances and will show up in a custom catalogue with the name &amp;quot;FlowFuse Team [team name] Catalogue&amp;quot; in the Node-RED editor.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;Custom Catalogue&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/custom-catalogue.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;
&lt;em&gt;Custom Catalogue&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;A list of NPM Packages published to the Team&#39;s repository can be seen under the Team&#39;s Library section in the &amp;quot;Custom Nodes&amp;quot; tab&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;Custom Nodes list&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/custom-node-library.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;
&lt;em&gt;Custom Nodes list&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;This feature is also available to self hosting Enterprise customers on Kubernetes with Docker following shortly.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2025/03/topic-deletion/</id>
        <title>MQTT Topic Management</title>
        <summary></summary>
        <updated>2025-03-12T12:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2025/03/topic-deletion/"/>
        <author><name>Steve McLaughlin</name></author>
        <content type="html">&lt;p&gt;We are always looking for ways to improve FlowFuse and today, we have made a small but notable addition: the ability to delete old topics from your hierarchy.&lt;/p&gt;
&lt;p&gt;This helps you keep things tidy and not clutter your hierarchy with old topics. Note that if the topic is published to again and detected by the platform, it will get added back.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;Screenshot of the new Topic Delete feature&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/topic-deletion.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;
&lt;em&gt;Screenshot of the new Topic Delete feature&lt;/em&gt;&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2025/03/snapshot-filter/</id>
        <title>Filtering Snapshots</title>
        <summary></summary>
        <updated>2025-03-11T12:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2025/03/snapshot-filter/"/>
        <author><name>Steve McLaughlin</name></author>
        <content type="html">&lt;p&gt;To simplify management of Snapshots, they can now be filtered to &amp;quot;All Snapshots&amp;quot;, &amp;quot;User Snapshots&amp;quot; or &amp;quot;Auto Snapshots&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;Screenshot of the new Snapshot filter&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/snapshot-filter.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;
&lt;em&gt;Screenshot of the new Snapshot filter&lt;/em&gt;&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2025/03/device-groups/</id>
        <title>Multiple Device Groups in a pipeline</title>
        <summary></summary>
        <updated>2025-03-10T12:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2025/03/device-groups/"/>
        <author><name>Steve McLaughlin</name></author>
        <content type="html">&lt;p&gt;Last year, we announced the introduction of Device Groups. For those that are not familiar with Device Groups, this feature enables users to logically group their Remote Instances so that they can be targeted in a DevOps Pipeline facilitating streamlined and efficient deployments across your fleet of devices.&lt;/p&gt;
&lt;p&gt;Previously, you could only use a Group as the last stage in a pipeline. With this update, you can now have Groups at other stages in a pipeline. For example, you may have a group of test devices that you want to push updates to before pushing them out to your larger group of production devices.&lt;/p&gt;
&lt;p&gt;This improvement not only saves time but also enhances the consistency and reliability of remote instance management across your fleet.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2025/03/free-tier/</id>
        <title>Free Tier now more accessible to all</title>
        <summary></summary>
        <updated>2025-03-06T12:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2025/03/free-tier/"/>
        <author><name>Nick O&#39;Leary</name></author>
        <content type="html">&lt;p&gt;We introduced the Free tier on FlowFuse Cloud &lt;a href=&quot;https://flowfuse.com/blog/2024/12/flowfuse-release-2-12/&quot;&gt;back in December&lt;/a&gt;. This allows you to manage two remote instances using the FlowFuse Device Agent completely free of charge.&lt;/p&gt;
&lt;p&gt;Since its launch we had many users sign-up and start connecting their remote instances to the platform. We&#39;ve also had feedback on the fact it required you to enter credit card details to get fully set up.&lt;/p&gt;
&lt;p&gt;We&#39;re please to announce that, as of today, you no longer need a credit card to sign-up to our Free tier - you can jump straight into getting your remote instances connected.&lt;/p&gt;
&lt;p&gt;Check out the &lt;a href=&quot;https://flowfuse.com/blog/2024/12/flowfuse-release-2-12/&quot;&gt;original announcement blog post&lt;/a&gt; on how to get started with the Free tier.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2025/02/mqtt-schema-suggestions/</id>
        <title>MQTT Smart Schema Suggestions</title>
        <summary></summary>
        <updated>2025-03-04T13:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2025/02/mqtt-schema-suggestions/"/>
        <author><name>Serban Costin</name></author>
        <content type="html">&lt;p&gt;FlowFuse&#39;s new &amp;quot;Smart Suggestions&amp;quot; feature will help you get your full UNS and MQTT Broker documented with ease.&lt;/p&gt;
&lt;p&gt;Our agent will monitor traffic through the Broker, and make calculate the schema of any payloads passed through. This assessment is turned into a &amp;quot;Suggestion&amp;quot; within the FlowFuse Platform, and can quickly be added to the formal schema for your Broker.&lt;/p&gt;
&lt;p&gt;&lt;lite-youtube videoid=&quot;bNeTDJUZ1So&quot; params=&quot;rel=0&quot; style=&quot;width: 100%; height: 350px; overflow: hidden;&quot;&gt;&lt;/lite-youtube&gt;&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2025/02/broker-error-feedback/</id>
        <title>Improved Broker Connection Feedback</title>
        <summary></summary>
        <updated>2025-02-28T12:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2025/02/broker-error-feedback/"/>
        <author><name></name></author>
        <content type="html">&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;Improved feedback displayed to a user when a third-party broker does nto connect as expected&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/broker-error-feedback.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;
&lt;em&gt;Improved feedback displayed to a user when a third-party broker does nto connect as expected&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;We&#39;ve improved the feedback displayed to a user when a third-party broker does not connect as expected. This will help users to diagnose and resolve issues with their broker connections more easily, extending on the &amp;quot;error&amp;quot; status pill that was initially implemented alongside the broker&#39;s name.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2025/02/additional-device-version-history-events/</id>
        <title>New Remote Instances Version History Events</title>
        <summary></summary>
        <updated>2025-02-25T12:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2025/02/additional-device-version-history-events/"/>
        <author><name>Serban Costin</name></author>
        <content type="html">&lt;p&gt;Users can now get better visibility of the state of their Remote Instances with additional events in the Version History timeline. This enhancement improves traceability and provides deeper insights into remote instance state changes over time.&lt;/p&gt;
&lt;h2 id=&quot;new-trackable-events&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/changelog/2025/02/additional-device-version-history-events/#new-trackable-events&quot;&gt;New Trackable Events&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Deploying Snapshots to Remote Instance via a Pipeline&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Deploying Snapshots through a Hosted Instance&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Snapshot Rollback&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Snapshot Create&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These events will be automatically recorded in the version history, allowing users to review and audit changes more effectively.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2025/02/resend-and-extend-team-invitation-expiration/</id>
        <title>Re-send Team Invitations</title>
        <summary></summary>
        <updated>2025-02-21T12:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2025/02/resend-and-extend-team-invitation-expiration/"/>
        <author><name>Serban Costin</name></author>
        <content type="html">&lt;p&gt;We have added the ability to &lt;strong&gt;re-send team invitations&lt;/strong&gt;, which also extends the expiration date of the invitation. This improvement ensures that invitations remain valid for a longer period and allows team administrators to easily re-invite users who may have missed their initial invitation.&lt;/p&gt;
&lt;p&gt;This update enhances user management and simplifies the process of maintaining team memberships within FlowFuse.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;Screenshot of the member invitation page&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/resend-invitation.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;
&lt;em&gt;Screenshot of the member invitation page&lt;/em&gt;&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2025/02/topic-hierarchy-search/</id>
        <title>Search &amp; Filter for Topic Hierarchy List</title>
        <summary></summary>
        <updated>2025-02-18T12:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2025/02/topic-hierarchy-search/"/>
        <author><name>Serban Costin</name></author>
        <content type="html">&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;Search and filter functionality in the topic hierarchy list&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/topic-hierarchy-search.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;&lt;br /&gt;
&lt;em&gt;Search and filter functionality in the topic hierarchy list&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;We&#39;ve introduced search and filter capabilities to the topic hierarchy list. This allows users to quickly find specific topics, making navigation more efficient and improving usability when working with large topic trees.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2025/02/device-agent-updates/</id>
        <title>FlowFuse User Authentication on Remote Instances</title>
        <summary></summary>
        <updated>2025-02-13T12:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2025/02/device-agent-updates/"/>
        <author><name>Nick O&#39;Leary</name></author>
        <content type="html">&lt;p&gt;With the 3.1.1 release of the FlowFuse Device Agent, we&#39;ve added two important pieces of new functionality.&lt;/p&gt;
&lt;h3 id=&quot;flowfuse-user-authentication&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/changelog/2025/02/device-agent-updates/#flowfuse-user-authentication&quot;&gt;FlowFuse User Authentication&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;It is now possible to enable end-point security on the instance. In the same way you can for Hosted Instances,
you can now configure Basic Username/Password authentication or the more powerful FlowFuse User Authentication.&lt;/p&gt;
&lt;p&gt;This means you can serve up your dashboards on remote Instances confident that only users in your FlowFuse team can access them.&lt;/p&gt;
&lt;h3 id=&quot;modifying-settings-in-developer-mode&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/changelog/2025/02/device-agent-updates/#modifying-settings-in-developer-mode&quot;&gt;Modifying settings in Developer Mode&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Whilst a remote instance is in developer mode, you can access the Node-RED editor through the FlowFuse platform. This
is a great way to develop your flows on real hardware through the platform.&lt;/p&gt;
&lt;p&gt;A common developer task is to want to modify environment variables, or change device settings (such as enabling the new
FlowFuse User authentication option).&lt;/p&gt;
&lt;p&gt;Previously this would require taking the device out of developer mode in order to apply the changes. From a workflow, this required lots of additional steps for not a lot of benefit.&lt;/p&gt;
&lt;p&gt;With the new release of the Device Agent, the agent will pick up any settings changes when it is restarted via the action menu in the FlowFuse UI. A small change, but a big improvement to the developer workflow.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2025/02/schema-docs/</id>
        <title>Personalized Schema Documentation</title>
        <summary></summary>
        <updated>2025-02-12T13:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2025/02/schema-docs/"/>
        <author><name></name></author>
        <content type="html">&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;Screenshot of the new MQTT Broker schema documentation view available in FlowFuse&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/schema-documentation.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;
&lt;em&gt;Screenshot of the new MQTT Broker schema documentation view available in FlowFuse&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;This new view for your MQTT Broker focusses on clarity, and collaboration. It provides a single, easy to read window that provides the relevant information any member of your team or organization would need in order to understand what your MQTT broker is used for.&lt;/p&gt;
&lt;p&gt;The underlying schema is generated automatically by FlowFuse, using the industry-standard, open-sourced, &lt;a href=&quot;https://www.asyncapi.com/&quot;&gt;AsyncAPI&lt;/a&gt;, saving your months of resource in manually documenting payload and topic structures yourself.&lt;/p&gt;
&lt;p&gt;The documentation provides a comprehensive view of the topics published to on your Broker, as well as crafted descriptions to help users understand each topic&#39;s purpose. This feature is available for both the in-built FlowFuse Broker, and any third-party broker that you choose to connect to.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2025/02/device-version-history-timeline/</id>
        <title>Version History Timeline</title>
        <summary></summary>
        <updated>2025-02-12T13:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2025/02/device-version-history-timeline/"/>
        <author><name>Serban Costin</name></author>
        <content type="html">&lt;p&gt;&lt;strong&gt;Remote instances&lt;/strong&gt; can now make use of the new Timeline feature, providing a concise, chronological view of key activities within your Node-RED remote setup.&lt;/p&gt;
&lt;p&gt;The Timeline and Snapshots are now grouped together under the Version History tab, simplifying the navigation of your remote instance&#39;s history.&lt;/p&gt;
&lt;p&gt;This feature is only available to Enterprise license and Cloud Team users. Note that the Timeline can only be accessed at the remote instance level.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;Screenshot showing the version history Timeline&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/device-version-history-timeline.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;&lt;br /&gt;
&lt;em&gt;Screenshot showing the new version history timeline&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;version-history-snapshots.png&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/device-version-history-snapshots.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;&lt;br /&gt;
&lt;em&gt;Screenshot showing the relocated snapshot page under the version history tab&lt;/em&gt;&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2025/02/external-brokers/</id>
        <title>External MQTT Brokers</title>
        <summary></summary>
        <updated>2025-02-12T12:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2025/02/external-brokers/"/>
        <author><name>Ben Hardill</name></author>
        <content type="html">&lt;p&gt;In a previous release, we introduced the FlowFuse Team Broker; an MQTT broker available to all instances running in your team. Whilst the Team Broker is a great addition, we are aware that many of our customers already have their own existing MQTT brokers and infrastructure.&lt;/p&gt;
&lt;p&gt;We have now made it possible to connect the FlowFuse platform to your existing external MQTT broker. With that you&#39;ll get access to the same great features to help you gain a clear understanding of the activity on your broker, and the structure of the data and topics that are being used.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;Screenshot from creating new external broker&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/new-external-broker.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;
&lt;em&gt;Screenhot from creating new external broker&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;As well as building a topic schema, the message payloads will also be
inspected to infer their format to help you understand your data.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;Screenshot of topic and inferred payload schema&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/topic-and-payload-schema.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;
&lt;em&gt;Screenshot of topic and inferred payload schema&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Whilst connected, the FlowFuse platform will monitor the messages being published on the broker and update the information every few minutes. This means there will be a short delay between a message being published to a topic and that topic being shown in the hierarchy.&lt;/p&gt;
&lt;p&gt;This is available on FlowFuse Cloud and for Self Hosting users with an Enterprise License on Kubernetes and LocalFS. Docker support will follow shortly.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2025/01/hidden-env-vars/</id>
        <title>Hidden Environment Variables</title>
        <summary></summary>
        <updated>2025-01-21T14:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2025/01/hidden-env-vars/"/>
        <author><name>Serban Costin</name></author>
        <content type="html">&lt;p&gt;We’ve expanded the functionality of managing Node-RED environment variables by introducing the ability to hide their values in the UI.&lt;/p&gt;
&lt;h3 id=&quot;what%E2%80%99s-new%3F&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/changelog/2025/01/hidden-env-vars/#what%E2%80%99s-new%3F&quot;&gt;What’s new?&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;This feature is supported by both hosted and remote Node-RED instances.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Users can now designate values as &#39;hidden&#39; when creating or editing them.&lt;/li&gt;
&lt;li&gt;Hidden values are concealed in the UI for enhanced privacy and security.&lt;/li&gt;
&lt;li&gt;Once marked as hidden and saved:
&lt;ul&gt;
&lt;li&gt;the &lt;strong&gt;name&lt;/strong&gt; cannot be changed.&lt;/li&gt;
&lt;li&gt;the value can only be updated - its existing value cannot be seen.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;To make a value visible again, users must delete the entry and recreate it as a visible one.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This feature enhances security and allows for more control over sensitive configuration data, ensuring better management in your Node-RED workflows.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;Screenshot of the new hidden environment variables feature - Hosted Instances&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/hidden-env-var-instances.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;
&lt;em&gt;Screenshot of the new hidden environment variables feature - Hosted Instances&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;Screenshot of the new hidden environment variables feature - Remote Instances&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/hidden-env-var-devices.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;
&lt;em&gt;Screenshot of the new hidden environment variables feature - Remote Instances&lt;/em&gt;&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2025/01/team-level-groups/</id>
        <title>Team level view of Groups</title>
        <summary></summary>
        <updated>2025-01-16T14:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2025/01/team-level-groups/"/>
        <author><name>Serban Costin</name></author>
        <content type="html">&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;Screenshot from the new team level groups&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/team-level-groups.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;
&lt;em&gt;Screenshot from the new team level groups&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Managing remote instances is easier with the new Team-level view of Groups.&lt;/p&gt;
&lt;p&gt;Groups let you organize your Remote Instances by application. They can then be used as a Target in DevOps pipelines for seamless updates across
multiple instances in one operation.&lt;/p&gt;
&lt;p&gt;This simplifies deployments, enhances collaboration, and streamlines infrastructure management for faster, more
efficient workflows.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2025/01/improved-diagnostics/</id>
        <title>Improved Diagnostics</title>
        <summary></summary>
        <updated>2025-01-14T13:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2025/01/improved-diagnostics/"/>
        <author><name>Steve McLaughlin</name></author>
        <content type="html">&lt;p&gt;It happens! Sometimes things go wrong, but don&#39;t worry, we have you covered.&lt;/p&gt;
&lt;p&gt;For Team and Enterprise customers on FlowFuse Cloud, we&#39;ve improved the emails we send notifying you that something has gone wrong with one of your instances.&lt;/p&gt;
&lt;p&gt;The emails now include more information about what has happened, including the most recent logs from Node-RED. We also include some tips as to what to do next, whether it was a code bug or a memory issue that triggered the problem.&lt;/p&gt;
&lt;p&gt;We hope you never need to see these emails, but if you do, we hope they help you get back on track quickly.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2025/01/free-tier-onboarding/</id>
        <title>New Onboarding Tour for Free Tier Users</title>
        <summary></summary>
        <updated>2025-01-07T14:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2025/01/free-tier-onboarding/"/>
        <author><name></name></author>
        <content type="html">&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;Screenshot from the new onboarding tour for &amp;quot;Free&amp;quot; tier FlowFuse Cloud users&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/free-tier-onboarding.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;
&lt;em&gt;Screenshot from the new onboarding tour for &amp;quot;Free&amp;quot; tier FlowFuse Cloud users&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Following from our new &amp;quot;Free&amp;quot; tier on FlowFuse Cloud, we&#39;ve also published a new onboarding tour to help users get started with their new team.&lt;/p&gt;
&lt;p&gt;This tour will guide you through the process of setting up your first Remote Instance, and show you how to access your Node-RED instance through FlowFuse Cloud, using the remote access tools.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2024/12/device-editor-cache/</id>
        <title>Device Editor Access Speed Up</title>
        <summary></summary>
        <updated>2024-12-19T14:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2024/12/device-editor-cache/"/>
        <author><name>Ben Hardill</name></author>
        <content type="html">&lt;p&gt;With the 2.12 release we have included some improvements to the Device Editor experience.&lt;/p&gt;
&lt;p&gt;For Devices running with Node-RED 4.0.x and newer, there should be significant performance improvements when loading the editor, especially when the device is on a slow network link.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2024/12/dashboad-iframe/</id>
        <title>Allow Dashboards to be embedded in iFrames</title>
        <summary></summary>
        <updated>2024-12-19T13:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2024/12/dashboad-iframe/"/>
        <author><name>Ben Hardill</name></author>
        <content type="html">&lt;p&gt;With the 2.12.0 release the correct HTTP Headers can now be set to allow Dashboards hosted in Node-RED Instances on FlowFuse to be embedded into other pages as iFrames.&lt;/p&gt;
&lt;p&gt;This option is under the Instance Settings on the Editor section.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;Enable iFrame Support&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/enable-iframe.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;
&lt;em&gt;Enabled iFrame Support&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;This feature will require the latest Stack version, you will be prompted to upgrade if required.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;Upgrade Stack to Enable&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/upgrade-iframe-dashboard.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;
&lt;em&gt;Upgrade Stack to Enable&lt;/em&gt;&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2024/12/team-bom-timeline/</id>
        <title>Team BOM and Pipeline Views</title>
        <summary></summary>
        <updated>2024-12-16T13:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2024/12/team-bom-timeline/"/>
        <author><name>Ben Hardill</name></author>
        <content type="html">&lt;p&gt;Team-level views of all Pipelines and Bill of Materials have been added to provide a complete overview.&lt;/p&gt;
&lt;p&gt;The Bill of Materials view shows which components and their versions across all Node-RED Devices &amp;amp;  Instances in the whole Team rather than at an Application level.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;Team BOM view&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/team-bom.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;
&lt;em&gt;Team BOM view&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Similarly the Team Pipeline view shows all CI delivery pipelines in all the Applications in the Team, giving team members a quicker way to jump to a specific Pipeline.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;Team Pipelines&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/team-pipeline.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;
&lt;em&gt;Team Pipelines&lt;/em&gt;&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2024/11/team-search/</id>
        <title>Team-wide search</title>
        <summary></summary>
        <updated>2024-11-21T13:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2024/11/team-search/"/>
        <author><name>Nick O&#39;Leary</name></author>
        <content type="html">&lt;p&gt;A new search bar has been added that makes it quick and easy to find resources within your team.&lt;/p&gt;
&lt;p&gt;This expands on the search available on the Applications summary view - but by moving to the top header, it&#39;s now available on all pages.&lt;/p&gt;
&lt;p&gt;For this release, it searches your Applications, Instances and Devices. We&#39;ll be expanding its coverage in future iterations to include other resources in the team.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;Screenshot of the team-wide search&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/screenshot-search.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;
&lt;em&gt;Screenshot of the team-wide search&lt;/em&gt;&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2024/11/mqtt-topic-hierarchy/</id>
        <title>MQTT Topic Hierarchy view</title>
        <summary></summary>
        <updated>2024-11-21T10:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2024/11/mqtt-topic-hierarchy/"/>
        <author><name>Nick O&#39;Leary</name></author>
        <content type="html">&lt;p&gt;Having recently added &lt;a href=&quot;https://flowfuse.com/blog/2024/10/announcement-mqtt-broker/&quot;&gt;our very own MQTT Service&lt;/a&gt; to the platform, we&#39;re continuing to expand on the features and tools we provide to help teams build their solutions.&lt;/p&gt;
&lt;p&gt;We have added a view that shows you what MQTT topics are being used on the Team Broker. This helps give you clarity on the structure of your topic-space, whether you&#39;re using the MQTT Broker for a unified namespace (UNS) or any other use case.&lt;/p&gt;
&lt;p&gt;This is a small iteration of the feature but we&#39;ll have lots more to come.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;Screenshot of the UI to explore your MQTT topic hierarchy&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/screenshot-mqtt-hierarchy.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;
&lt;em&gt;Screenshot of the UI to explore your MQTT topic hierarchy&lt;/em&gt;&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2024/11/audit-log-hierarchy/</id>
        <title>Audit logs show hierarchical events</title>
        <summary></summary>
        <updated>2024-11-20T13:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2024/11/audit-log-hierarchy/"/>
        <author><name>Steve McLaughlin</name></author>
        <content type="html">&lt;p&gt;In FlowFuse V2.11, we have updated the Audit Log views to let you see more of the events happening within your team. Previously, the Audit Log view would only show you top-level events happening to the application or team. With this release, it now provides an aggregated view of all of your resources.
Additionally, each row contains an icon and name of the item raised the event that you can click to navigate straight to it making your workflow more streamlined.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img alt=&quot;Screenshot showing Audit Log with hierarchical events&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/audit-log-child-events.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;
&lt;em&gt;Screenshot showing Audit Log with hierarchical events&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;We hope this feature will help you better understand and navigate your FlowFuse applications.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2024/11/device-agent-release/</id>
        <title>Device Agent 3.0 released</title>
        <summary></summary>
        <updated>2024-11-08T13:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2024/11/device-agent-release/"/>
        <author><name>Nick O&#39;Leary</name></author>
        <content type="html">&lt;p&gt;The FlowFuse Device Agent is the piece of software we provide to manage Node-RED instances running anywhere outside of the FlowFuse platform.&lt;/p&gt;
&lt;p&gt;Today we have released the latest version of the agent that now requires at least Node.js 18 to run. To reflect this change, we are releasing this as a new major version - 3.0.&lt;/p&gt;
&lt;p&gt;We recognize that software update lifecycles can be a challenge in some environments. This is why we&#39;ve held off dropping support for older Node.js versions for as long as we could. However, we have to balance that against ensuring we continue to keep the Device Agent up to date with the latest security fixes.&lt;/p&gt;
&lt;p&gt;If your devices cannot be updated to the latest Node.js versions, then please ensure you stay on the 2.x release of the Device Agent until a time that you are able to update Node.js.&lt;/p&gt;
&lt;p&gt;Details for upgrading to this release are available &lt;a href=&quot;https://flowfuse.com/docs/device-agent/install/#upgrading-the-agent&quot;&gt;in the documentation&lt;/a&gt;.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2024/10/version-history-timeline/</id>
        <title>Version History Timeline</title>
        <summary></summary>
        <updated>2024-10-24T13:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2024/10/version-history-timeline/"/>
        <author><name>Serban Costin</name></author>
        <content type="html">&lt;p&gt;Instances can now make use of the new Timeline feature, providing a concise, chronological view of key activities within your Node-RED instance.&lt;/p&gt;
&lt;p&gt;The Timeline tracks important events such as pipeline stage deployments, snapshot restorations, flow deployments, snapshot creations, and updates to instance settings, offering clear insight into when and what changes have been made.&lt;/p&gt;
&lt;p&gt;The Timeline and Snapshots are now grouped together under the Version History tab, simplifying the navigation of your instance&#39;s history.&lt;/p&gt;
&lt;p&gt;This feature is only available to Enterprise license and Cloud Team users. Note that the Timeline can only be accessed at the instance level.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;Screenshot showing the version history Timeline&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/version-history-timeline.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;
&lt;em&gt;Screenshot showing the new version history timeline&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;version-history-snapshots.png&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/version-history-snapshots.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;
&lt;em&gt;Screenshot showing the relocated snapshot page under the version history tab&lt;/em&gt;&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2024/10/mqtt-service/</id>
        <title>MQTT Broker Service</title>
        <summary></summary>
        <updated>2024-10-24T13:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2024/10/mqtt-service/"/>
        <author><name>Ben Hardill</name></author>
        <content type="html">&lt;p&gt;To celebrate 25 years since the first release of the MQTT Specification we are happy announce a new MQTT Broker Service as part of FlowFuse Cloud.&lt;/p&gt;
&lt;p&gt;The initial deployment is available to Enterprise Teams and allows up to 20 clients to connect to the broker. Each team has their own independent topic space and can set their own topic ACLs to control what clients can access.&lt;/p&gt;
&lt;p&gt;From today, this feature is available to FlowFuse Cloud Enterprise Teams. We&#39;ll be bringing it to Self-Hosted customers in the near future, as well as adding the ability to purchase additional packs of clients.&lt;/p&gt;
&lt;p&gt;See the &lt;a href=&quot;https://flowfuse.com/docs/cloud/introduction/#enterprise-team-broker&quot;&gt;broker documentation&lt;/a&gt; for more details.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2024/10/device-group-env-vars/</id>
        <title>Environment Variables for your Device Groups</title>
        <summary></summary>
        <updated>2024-10-21T13:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2024/10/device-group-env-vars/"/>
        <author><name>Steve McLaughlin</name></author>
        <content type="html">&lt;p&gt;We have added the ability to set Environment Variables on a Device Group.
This allows you to set common values that all member devices can make use of.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;Screenshot showing Device Group Environment Variables&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/device-group--with-env-vars.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;
&lt;em&gt;Screenshot showing Device Group Environment Variables&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;We hope this feature will make it easier to manage your devices and keep your configuration in one place.&lt;/p&gt;
&lt;p&gt;See the &lt;a href=&quot;https://flowfuse.com/docs/user/device-groups&quot;&gt;Device Group&lt;/a&gt; documentation for more information on how to set environment variables for your device groups.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2024/10/snapshot-download-upload-options/</id>
        <title>Snapshot Upload and Download Improvements</title>
        <summary></summary>
        <updated>2024-10-14T13:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2024/10/snapshot-download-upload-options/"/>
        <author><name>Steve McLaughlin</name></author>
        <content type="html">&lt;p&gt;We have added the ability to select which components of a snapshot you want to keep when downloading or uploading a snapshot.&lt;/p&gt;
&lt;p&gt;The options available are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Flows: Include the flows of the snapshot&lt;/li&gt;
&lt;li&gt;Credentials: Include the credentials of the snapshots flows&lt;/li&gt;
&lt;li&gt;Environment Variables
&lt;ul&gt;
&lt;li&gt;Keys and Values: Include the keys and values of the environment variables&lt;/li&gt;
&lt;li&gt;Keys Only: Include only the keys of the environment variables&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;Screenshot showing snapshot download component options&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/snapshot-download--with-options.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;
&lt;em&gt;Screenshot showing snapshot download component options&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;Screenshot showing snapshot upload component options&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/snapshot-upload--with-options.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;
&lt;em&gt;Screenshot showing snapshot upload component options&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;This feature can help you be specific about what you want to include in a downloaded snapshot. This is especially useful when
you want to share a snapshot with others, but don&#39;t want to include sensitive information like credentials. Also,
when you receive a snapshot that needs importing into a different FlowFuse platform or team, you can can now be selective
about what to keep and what to exclude.&lt;/p&gt;
&lt;p&gt;See the &lt;a href=&quot;https://flowfuse.com/docs/user/snapshots&quot;&gt;Snapshots&lt;/a&gt; documentation for more information.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2024/10/notifications-bulk-actions/</id>
        <title>Managing Notifications</title>
        <summary></summary>
        <updated>2024-10-04T10:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2024/10/notifications-bulk-actions/"/>
        <author><name>Serban Costin</name></author>
        <content type="html">&lt;p&gt;We have now added the ability to manage notifications in bulk. This allows users to select more than one notification so that they can be marked as read, or marked as unread, all in one go.&lt;/p&gt;
&lt;p&gt;We hope this small improvement saves you bundle of clicks and streamlines your operations.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img alt=&quot;bulk-notifications.png&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/bulk-notifications.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2024/08/bill-of-materials/</id>
        <title>Bill of Materials</title>
        <summary></summary>
        <updated>2024-09-25T10:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2024/08/bill-of-materials/"/>
        <author><name>Serban Costin</name></author>
        <content type="html">&lt;p&gt;Starting with the v2.9.0 release FlowFuse a new Application Dependencies tab will be available for Enterprise self-hosted
and Enterprise Tier FlowFuse Cloud users where a complete list of dependencies belonging to every Instance associated to the application can be found.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img alt=&quot;bom.png&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/bom.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;&lt;/p&gt;
&lt;p&gt;The intent is to give users a birds eye view of an application&#39;s dependencies and track dependency changes.&lt;/p&gt;
&lt;p&gt;Users can search by package name, version, instance or device name.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2024/08/static-file-service-navigation-visibility/</id>
        <title>Static File Service Navigation and Visibility</title>
        <summary></summary>
        <updated>2024-09-19T13:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2024/08/static-file-service-navigation-visibility/"/>
        <author><name>Serban Costin</name></author>
        <content type="html">&lt;p&gt;Users of FlowFuse Cloud can now make use of an enhanced navigation tool and visibility selector when using the &lt;a href=&quot;https://flowfuse.com/blog/2024/08/flowfuse-2-8-release/#static-assets-service&quot;&gt;static file service feature&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;By settings the visibility of a folder to &#39;public&#39;, their Node-RED instance will automatically make any files in that folder publicly available - on a path of the user&#39;s choosing.&lt;/p&gt;
&lt;p&gt;This makes it very simple to serve up additional assets such as images or libraries that can be used in your Node-RED Dashboards.&lt;/p&gt;
&lt;p&gt;The visibility settings apply to the folder; you cannot make individual files public. Any changes to the visibility settings will require the instance to be restarted for the changes to take effect.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img alt=&quot;static-file-service-navigation-visibility&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/1-selector.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;
&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img alt=&quot;static-file-service-navigation-visibility&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/2-select-static-path.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;
&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img alt=&quot;static-file-service-navigation-visibility&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/3-public-visibility.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2024/08/ldap-sso-groups/</id>
        <title>LDAP Single Sign On Updates</title>
        <summary></summary>
        <updated>2024-08-28T13:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2024/08/ldap-sso-groups/"/>
        <author><name>Ben Hardill</name></author>
        <content type="html">&lt;p&gt;In the v2.8.0 release we have updated the LDAP SSO feature to allow group
membership to be managed by LDAP groups.&lt;/p&gt;
&lt;h2 id=&quot;configuring&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/changelog/2024/08/ldap-sso-groups/#configuring&quot;&gt;Configuring&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Building on the SAML based SSO configuration there is now a &lt;code&gt;Manage roles using group assertions&lt;/code&gt; check box on the LDAP SSO configuration page. This allows a base LDAP DN for groups to be set. This will used to look up which groups a user is a member of when they login to the platform.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img alt=&quot;screen shot showing new LDAP group management settings&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/ldap-group.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;&lt;/p&gt;
&lt;p&gt;Groups can be &lt;code&gt;groupOfNames&lt;/code&gt; or &lt;code&gt;groupOfUniqueNames&lt;/code&gt; and membership will be checked against &lt;code&gt;memberOf&lt;/code&gt; or &lt;code&gt;uniqueMemberOf&lt;/code&gt; fields respectively.&lt;/p&gt;
&lt;h3 id=&quot;group-naming&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/changelog/2024/08/ldap-sso-groups/#group-naming&quot;&gt;Group Naming&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Group names must follow the this pattern &lt;code&gt;ff-&amp;lt;team slug&amp;gt;-role&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;The valid roles for a user in a team are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;owner&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;member&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;viewer&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;dashboard&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;Note&lt;/em&gt;: this uses the team slug property to identify the team. This has been chosen to simplify managing
the groups in the LDAP Provider - rather than using the team&#39;s id. However, a team&#39;s slug can be changed
by a team owner. Doing so will break the link between the group and the team membership - so should only
be done with care.&lt;/p&gt;
&lt;p&gt;More details can be found in the &lt;a href=&quot;https://flowfuse.com/docs/admin/sso/ldap/&quot;&gt;SSO LDAP documentation&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&quot;managing-flowfuse-admins&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/changelog/2024/08/ldap-sso-groups/#managing-flowfuse-admins&quot;&gt;Managing FlowFuse Admins&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;In the previous release we added support for managing FlowFuse Admin users by group membership to SAML SSO, this is now available to LDAP as well.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Note&lt;/em&gt;: It is advised to maintain a backup admin user that does not
authenticate via SSO so ensure access can be maintained if the SSO
provider is unavailable. Also the system will not remove the admin flag
from a user if that would leave the platform with no admins even if they
removed from the group.&lt;/p&gt;
&lt;p&gt;This feature is only available to FlowFuse self-hosted customers.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2024/07/notifications-update/</id>
        <title>Notifications Inbox</title>
        <summary></summary>
        <updated>2024-08-27T13:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2024/07/notifications-update/"/>
        <author><name>Steve McLaughlin</name></author>
        <content type="html">&lt;p&gt;To keep you focused, we have added a &amp;quot;Hide Read&amp;quot; checkbox that is checked by default so that you only see active notifications.&lt;/p&gt;
&lt;p&gt;Not only that, we&#39;ve added some new notifications so that members and owners get fast feedback for important events in your system.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;Screenshot showing unread Notifications Inbox in FlowFuse&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/notifications-inbox-unread.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;
&lt;em&gt;Screenshot showing unread Notifications Inbox in FlowFuse&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;Screenshot showing read Notifications Inbox in FlowFuse&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/notifications-inbox-read.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;
&lt;em&gt;Screenshot showing read Notifications Inbox in FlowFuse&lt;/em&gt;&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2024/07/device-management-bulk-move/</id>
        <title>Managing devices</title>
        <summary></summary>
        <updated>2024-08-12T13:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2024/07/device-management-bulk-move/"/>
        <author><name>Steve McLaughlin</name></author>
        <content type="html">&lt;p&gt;Having recently added the ability to delete multiple devices at once, we have now added the ability to move multiple devices at once.&lt;/p&gt;
&lt;p&gt;To use this feature, navigate to the devices page, application devices or instance devices and place a check in the box next to the devices you wish to move.
Once you have selected the devices you wish to move, click the new menu button above the table &amp;amp; select the new location for the devices.&lt;/p&gt;
&lt;p&gt;We are are sure this will make managing your devices a good deal easier.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img alt=&quot;New menu for managing multiple devices&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/bulk-menu.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img alt=&quot;Moving multiple devices&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/bulk-move.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;&lt;/p&gt;
&lt;p&gt;You can read up on the new feature in our &lt;a href=&quot;https://flowfuse.com/docs/device-agent/register/#assign-the-device&quot;&gt;documentation&lt;/a&gt;.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2024/07/edit-snapshots/</id>
        <title>Edit Snapshots</title>
        <summary></summary>
        <updated>2024-08-01T10:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2024/07/edit-snapshots/"/>
        <author><name>Steve McLaughlin</name></author>
        <content type="html">&lt;p&gt;Snapshots can now be renamed and their descriptions updated, even after they&#39;re created.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;Screenshot showing the new Edit Snapshots feature in FlowFuse&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/edit-snapshots.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;
&lt;em&gt;Screenshot showing the new Edit Snapshots feature in FlowFuse&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;This is particularly useful for the snapshots that are automatically generated each time your deploy your flows, making it easier to track back your changes and revert to a previous state if needed.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2024/07/device-group-clear-snapshot/</id>
        <title>Device Groups Snapshots</title>
        <summary></summary>
        <updated>2024-07-30T13:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2024/07/device-group-clear-snapshot/"/>
        <author><name>Steve McLaughlin</name></author>
        <content type="html">&lt;p&gt;An update to let you know you can now clear the target snapshot of a device group. This is small but useful feature that can help you manage your device groups more effectively.&lt;/p&gt;
&lt;p&gt;For those unfamiliar with FlowFuse device groups, essentially, they permit you to deploy a snapshot to one or many devices via a pipeline in a single action. This is great for managing changes across a fleet of devices.&lt;/p&gt;
&lt;p&gt;See the &lt;a href=&quot;https://flowfuse.com/docs/user/device-groups&quot;&gt;device groups documentation&lt;/a&gt; for more information on how to make use of device groups.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2024/08/enterprise-license-update/</id>
        <title>Enforcing Enterprise Restrictions</title>
        <summary></summary>
        <updated>2024-07-24T13:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2024/08/enterprise-license-update/"/>
        <author><name>Ben Hardill</name></author>
        <content type="html">&lt;p&gt;Starting with the v2.8.0 release FlowFuse will be taking a slightly stricter
approach to License enforcement outside of FlowFuse Cloud. Previously
when a license expired the platform would continue to run with the same
capabilities as when the license was valid.&lt;/p&gt;
&lt;p&gt;If you are currently running with older version with an expired license
please &lt;a href=&quot;https://flowfuse.com/contact-us/&quot;&gt;contact the Sales team&lt;/a&gt; to discuss renewing your
license before upgrading. You can check your current license on the
Admin Settings -&amp;gt; Overview page.&lt;/p&gt;
&lt;h2 id=&quot;notifications&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/changelog/2024/08/enterprise-license-update/#notifications&quot;&gt;Notifications&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Starting 30 days before the license expires:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Admin users will see a banner showing the number of days left.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img alt=&quot;expiring banner&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/expiring-banner.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;A email will be sent to all Admin users.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The email will be sent again every Sunday evening in the 30 days.&lt;/p&gt;
&lt;h2 id=&quot;after-expiry&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/changelog/2024/08/enterprise-license-update/#after-expiry&quot;&gt;After Expiry&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;All running instances will be suspended.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Instances will not be started.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;No new Instances or Devices can be created.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;A email will be sent to all Admin users saying the license has expired.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;A banner showing the license as expired will be shown to all users.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img alt=&quot;expired banner&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/expired-banner.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;All connections to the MQTT broker will be refused (This will impact
Project Nodes and Device control).&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;applying-a-new-license&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/changelog/2024/08/enterprise-license-update/#applying-a-new-license&quot;&gt;Applying a New License&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;A new license can be applied in the Admin Settings -&amp;gt; Settings section.&lt;/p&gt;
&lt;p&gt;Once applied you will be able to restart all existing Instances and
create new Instances and Devices. The MQTT will accept new connections.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2024/07/sso/</id>
        <title>Single Sign On Updates</title>
        <summary></summary>
        <updated>2024-07-24T13:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2024/07/sso/"/>
        <author><name>Ben Hardill</name></author>
        <content type="html">&lt;p&gt;In the v2.7.0 release we have included some new SSO features&lt;/p&gt;
&lt;h2 id=&quot;user-creation-on-first-log-in&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/changelog/2024/07/sso/#user-creation-on-first-log-in&quot;&gt;User creation on first log in&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Before v2.7.0 users needed to be created before they could use SSO to
log in to FlowFuse. Now if enabled in the SSO configuration users will
be created when they first sign in. If team membership is controlled by
SSO Groups (SAML only) then they will be added to the relevant teams, otherwise if the system is configured to create a Team for a new user it will do so.&lt;/p&gt;
&lt;p&gt;FlowFuse Cloud customers should contact support to discuss enabling this
feature for their teams.&lt;/p&gt;
&lt;h2 id=&quot;managing-flowfuse-admins-with-sso-groups&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/changelog/2024/07/sso/#managing-flowfuse-admins-with-sso-groups&quot;&gt;Managing FlowFuse Admins with SSO Groups&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;It is now possible to configure a group to manage which users are granted
administration privileges. The name of the group can be added to the SSO
configuration (SAML only).&lt;/p&gt;
&lt;p&gt;NOTE: It is advised to maintain a backup admin user that does not
authenticate via SSO so ensure access can be maintained if the SSO
provider is unavailable. Also the system will not remove the admin flag
from a user if that would leave the platform with no admins even if they
removed from the group.&lt;/p&gt;
&lt;p&gt;This feature is not available to FlowFuse Cloud customers.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2024/07/notifications-inbox/</id>
        <title>Notifications Inbox</title>
        <summary></summary>
        <updated>2024-07-21T13:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2024/07/notifications-inbox/"/>
        <author><name></name></author>
        <content type="html">&lt;p&gt;We&#39;ve made some changes to the way notifications are displayed and handled in FlowFuse to make it easier to see what&#39;s going on in your system, with a new, dedicated, &amp;quot;Notifications Inbox&amp;quot;.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;Screenshot showing the new Notifications Inbox in FlowFuse&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/notifications-inbox.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;
&lt;em&gt;Screenshot showing the new Notifications Inbox in FlowFuse&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Whilst the only notifications we&#39;re supporting right now are team invites, this groundwork will allow us to expand the types of notifications we can send in the future to give better visibility of what&#39;s happening in your FlowFuse environment.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2024/07/device-management-bulk-delete/</id>
        <title>Managing devices</title>
        <summary></summary>
        <updated>2024-07-19T13:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2024/07/device-management-bulk-delete/"/>
        <author><name>Steve McLaughlin</name></author>
        <content type="html">&lt;p&gt;We have added bulk operations for managing devices.&lt;/p&gt;
&lt;p&gt;In this first iteration we have added the ability to delete multiple devices at once.&lt;/p&gt;
&lt;p&gt;To use this feature, navigate to the devices page, application devices or instance devices and place a check in the box next to the devices you wish to delete.
Once you have selected the devices you wish to delete, click the trash can button above the table &amp;amp; confirm the deletion.&lt;/p&gt;
&lt;p&gt;We will be adding more bulk operations in the future, so keep an eye out for more updates.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img alt=&quot;Deleting multiple devices&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/bulk-delete-1.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2024/07/flowfuse-assistant-json/</id>
        <title>FlowFuse Expert Writes JSON</title>
        <summary></summary>
        <updated>2024-07-16T13:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2024/07/flowfuse-assistant-json/"/>
        <author><name>Steve McLaughlin</name></author>
        <content type="html">&lt;p&gt;The FlowFuse Expert can now assist you by generating JSON.&lt;/p&gt;
&lt;p&gt;Wherever you edit JSON in the Rich Monaco Editor you will see the &amp;quot;Ask the FlowFuse Expert 🪄&amp;quot; code lens.
That includes the Inject Node, the Template Node and any contrib node that uses the built-in editor for writing JSON.&lt;/p&gt;
&lt;p&gt;We think you will find this to be a great time saver and a good helper when you are unsure of the syntax.&lt;/p&gt;
&lt;p&gt;Just ask for what you want and it does a decent job of figuring it out.&lt;/p&gt;
&lt;p&gt;Here are some examples:&lt;/p&gt;
&lt;h3 id=&quot;asking-the-assistant-to-generate-json-from-within-the-template-node&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/changelog/2024/07/flowfuse-assistant-json/#asking-the-assistant-to-generate-json-from-within-the-template-node&quot;&gt;Asking the Assistant to generate JSON from within the &lt;code&gt;template&lt;/code&gt; node&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img alt=&quot;Prompting from within the Template Node&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/ask-assistant-json-1a.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;
&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img alt=&quot;Resulting JSON&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/ask-assistant-json-1b.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;&lt;/p&gt;
&lt;h3 id=&quot;asking-the-assistant-to-generate-json-from-within-the-inject-node-for-the-payload-value&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/changelog/2024/07/flowfuse-assistant-json/#asking-the-assistant-to-generate-json-from-within-the-inject-node-for-the-payload-value&quot;&gt;Asking the Assistant to generate JSON from within the &lt;code&gt;inject&lt;/code&gt; node for the &lt;code&gt;payload&lt;/code&gt; value&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img alt=&quot;Prompting from within the Inject Nodes Typed Input&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/ask-assistant-json-2a.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;
&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img alt=&quot;Resulting JSON&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/ask-assistant-json-2b.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;&lt;/p&gt;
&lt;p&gt;This is just the beginning of the FlowFuse Expert&#39;s capabilities. Stay tuned!&lt;/p&gt;
&lt;h4 id=&quot;updating-the-assistant-to-get-these-new-features&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/changelog/2024/07/flowfuse-assistant-json/#updating-the-assistant-to-get-these-new-features&quot;&gt;Updating the Assistant to get these new features&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;If you are running Node-RED v4.x, head over to the Palette Manager, update the plugin and restart your instance.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img alt=&quot;Updating assistant on Node-RED 4&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/assistant-update-nr4.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;&lt;/p&gt;
&lt;p&gt;If you are still running Node-RED v3.x, you can update the plugin by adding &lt;code&gt;@flowfuse/nr-assistant&lt;/code&gt; to the instance settings then restart it.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img alt=&quot;Updating assistant on Node-RED 3&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/assistant-update-nr3.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2024/07/applications-search/</id>
        <title>Applications Search</title>
        <summary></summary>
        <updated>2024-07-16T13:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2024/07/applications-search/"/>
        <author><name></name></author>
        <content type="html">&lt;p&gt;With hundreds of devices and instances running in FlowFuse, it can be very difficult to find the resource you&#39;re looking for. That&#39;s why we&#39;ve introduced a new search feature that allows you to search across all of your FlowFuse instances, devices and applications from a single place.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;Screenshot showing the new Notifications Inbox in FlowFuse&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/applications-search.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;
&lt;em&gt;Screenshot showing the new Notifications Inbox in FlowFuse&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;The view will automatically filter as you type making it easy to find the resource you&#39;re looking for, it will keep reference to any applications and or child instances/devices where appropriate.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2024/07/persistent-storage/</id>
        <title>Persistent Storage on FlowFuse Cloud</title>
        <summary></summary>
        <updated>2024-07-04T13:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2024/07/persistent-storage/"/>
        <author><name>Ben Hardill</name></author>
        <content type="html">&lt;p&gt;Users of FlowFuse Cloud and self-hosted users on Kubernetes can now make use of a
new persistent storage solution.&lt;/p&gt;
&lt;p&gt;Starting with the v2.6.0 release the Pods running the Node-RED Instances will have
a Persistent Volume mounted on &lt;code&gt;/data/storage&lt;/code&gt; in which files can be written. These
files will persist for the lifetime of the Instance including across Susspend/Resume
and Stack upgrades.&lt;/p&gt;
&lt;p&gt;This update means nodes like &lt;a href=&quot;https://flows.nodered.org/node/node-red-node-sqlite&quot;&gt;node-red-node-sqlite&lt;/a&gt; can be used to store data safely.&lt;/p&gt;
&lt;p&gt;This capability replaces the current FlowFuse FileServer which made use of custom
versions of the Node-RED code File nodes to store and read files from a remote network
store. However this didn&#39;t allow 3rd party nodes to also benefit from the storage provided.&lt;/p&gt;
&lt;p&gt;New instances created will default to use the new Persistent Storage volumes. If you want to upgrade an existing instance that uses the FileServer storage, get in touch with &lt;a href=&quot;https://flowfuse.com/contact-us/&quot;&gt;Support&lt;/a&gt; and we can help migrate your data over.&lt;/p&gt;
&lt;p&gt;Similar support for Docker will be available in later releases.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2024/07/flowfuse-assistant/</id>
        <title>The FlowFuse Expert</title>
        <summary></summary>
        <updated>2024-07-04T13:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2024/07/flowfuse-assistant/"/>
        <author><name>Steve McLaughlin</name></author>
        <content type="html">&lt;p&gt;We are excited to announce the first release of The FlowFuse Expert, a new plugin for your Node-RED instances designed to enhance your development experience.&lt;/p&gt;
&lt;p&gt;In this initial release, The FlowFuse Expert can help you create function nodes for those times when a no-code solution is either not feasible or not possible.
Additionally, it works directly inside the Function Node editor right where you need it.&lt;/p&gt;
&lt;p&gt;This is just the beginning. The FlowFuse Expert will continue to evolve, with future updates bringing even more powerful features and enhancements.&lt;/p&gt;
&lt;p&gt;Starting from today, FlowFuse Expert is available on FlowFuse Cloud. Users will need to update their instances to the latest stack to enable it.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img alt=&quot;Node-RED Editor toolbar button for the assistant&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/assistant-toolbar.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img alt=&quot;FlowFuse Expert Input Dialog&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/assistant-dialog-function-node-builder.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img alt=&quot;FlowFuse Expert Code Lens&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/assistant-function-node-inline-code-lens.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2024/07/immersive-editor/</id>
        <title>Immersive Editor Experience</title>
        <summary></summary>
        <updated>2024-07-02T13:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2024/07/immersive-editor/"/>
        <author><name></name></author>
        <content type="html">&lt;p&gt;We found out that many users have to frequently switch between the Node-RED Editor and FlowFuse UI. This back-and-forth movement was often necessary to view logs, save snapshots, restart the Editor after updates, and perform other tasks.&lt;/p&gt;
&lt;p&gt;We&#39;re always seeking to reduce friction in the FlowFuse user experience, and as such, we&#39;ve introduced a large overhaul of the developer experience for Node-RED when running in FlowFuse, in what we&#39;re calling the &amp;quot;Immersive Editor&amp;quot;.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;Node-RED Editor toolbar button for the assistant&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/immersive-editor.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;&lt;/p&gt;
&lt;p&gt;Now, the instances tabs are all available in the same view as the Editor, and you can manage your instance, watch logs, capture snapshots and event restart it, all without leaving the Node-RED Editor.&lt;/p&gt;
&lt;p&gt;The new Immersive Editor is available for instances running Node-RED 4.0.2 or later - older versions of Node-RED will still use the separate views.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2024/06/multiline-env-vars/</id>
        <title>Multi-line Environment Variables</title>
        <summary></summary>
        <updated>2024-06-26T13:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2024/06/multiline-env-vars/"/>
        <author><name>Steve McLaughlin</name></author>
        <content type="html">&lt;p&gt;FlowFuse now supports the input of multi-line environment variables for your Node-RED instances running on FlowFuse.&lt;/p&gt;
&lt;p&gt;This unlocks the ability to store certs or multi-line values like JSON as environment variables.&lt;/p&gt;
&lt;p&gt;We&#39;ve also improved the &lt;code&gt;.env&lt;/code&gt; file import to support the use of multi-line values too.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img alt=&quot;multiline environment variables&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/snapshot-compare-flows.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2024/06/device-agent-proxy-support/</id>
        <title>Running the Device Agent behind an HTTP proxy</title>
        <summary></summary>
        <updated>2024-06-18T13:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2024/06/device-agent-proxy-support/"/>
        <author><name>Nick O&#39;Leary</name></author>
        <content type="html">&lt;p&gt;The FlowFuse Device Agent allows you to manage your Node-RED instances wherever you want them to run.
It connects back to the platform over a secure https connection.&lt;/p&gt;
&lt;p&gt;For some enterprise customers, that has posed a challenge as they protect their network with an HTTP proxy that all traffic
has to be directed to.&lt;/p&gt;
&lt;p&gt;With the &lt;code&gt;2.5.0&lt;/code&gt; release of the Device Agent, we now support running the Device Agent behind a proxy - letting it run in even more locations.&lt;/p&gt;
&lt;p&gt;Support comes using the industry standard set of &lt;code&gt;http_proxy&lt;/code&gt; environment variables - familiar to anyone running services behind a proxy.&lt;/p&gt;
&lt;p&gt;Full details are available in our &lt;a href=&quot;https://flowfuse.com/docs/device-agent/running/#running-behind-a-http-proxy&quot;&gt;http proxy documentation&lt;/a&gt;.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2024/06/snapshot-flow-compare/</id>
        <title>Compare Snapshots flows</title>
        <summary></summary>
        <updated>2024-06-05T13:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2024/06/snapshot-flow-compare/"/>
        <author><name>Steve McLaughlin</name></author>
        <content type="html">&lt;p&gt;We have now added the ability to select a snapshot and compare it to other snapshots making it easier to understand what is in the current snapshot and what has changed in relation to the 2nd snapshot.&lt;/p&gt;
&lt;p&gt;Both snapshots are overlayed and you can step through the differences or use the new slider to visualise the differences.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img alt=&quot;Selecting a snapshot for comparison&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/snapshot-compare-kebab-menu.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img alt=&quot;Comparing selected snapshot with another&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/snapshot-compare-flows.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2024/06/library-blueprints/</id>
        <title>Custom hostnames for your instances</title>
        <summary></summary>
        <updated>2024-06-05T13:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2024/06/library-blueprints/"/>
        <author><name>Nick O&#39;Leary</name></author>
        <content type="html">&lt;p&gt;Enterprise teams on FlowFuse Cloud can now configure their own subdomain to point
at their Node-RED application.&lt;/p&gt;
&lt;p&gt;Within FlowFuse Cloud, Node-RED instances are reached by their provided url: &lt;code&gt;&amp;lt;name&amp;gt;.flowfuse.cloud&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;With this new option, it is possible to add a custom hostname for the instance that works alongside
the provided url.&lt;/p&gt;
&lt;p&gt;For example, if you have built a &lt;a href=&quot;https://dashboard.flowfuse.com/&quot;&gt;dashboard&lt;/a&gt; you can now configure your instance to make that available via &lt;code&gt;dashboard.example.com&lt;/code&gt; or any other subdomain you own.&lt;/p&gt;
&lt;p&gt;We only support subdomains at this time, but adding support for top-level domains is &lt;a href=&quot;https://github.com/FlowFuse/flowfuse/issues/3982&quot;&gt;on the roadmap&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Read more on &lt;a href=&quot;https://flowfuse.com/docs/user/custom-hostnames&quot;&gt;how to setup custom hostnames&lt;/a&gt;.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2024/05/snapshot-improvements-pt3/</id>
        <title>Snapshot Upload</title>
        <summary></summary>
        <updated>2024-05-21T13:03:00Z</updated>
        <link href="https://flowfuse.com/changelog/2024/05/snapshot-improvements-pt3/"/>
        <author><name>Steve McLaughlin</name></author>
        <content type="html">&lt;p&gt;&lt;a href=&quot;https://flowfuse.com/docs/user/snapshots/#snapshots&quot;&gt;Snapshots&lt;/a&gt; are a point-in-time backup of Node-RED
that can be used to easily revert back to previous version, or to push out to other
instances and devices as part of our Pipelines feature.&lt;/p&gt;
&lt;p&gt;Following on from the recent work around snapshots to permit &lt;a href=&quot;https://flowfuse.com/changelog/2024/05/snapshot-improvements/&quot;&gt;Instance Snapshot Downloads&lt;/a&gt; and &lt;a href=&quot;https://flowfuse.com/changelog/2024/05/snapshot-upload/&quot;&gt;Snapshot Uploads&lt;/a&gt;,
we have now added the ability to download application device snapshots.&lt;/p&gt;
&lt;p&gt;This means you can download a snapshot from any device or instance and upload it to any
device or instance on any FlowFuse instance.&lt;/p&gt;
&lt;p&gt;Also, to improve access to these actions, we have also updated the application
and device snapshot table items menu to present all relevant snapshot actions.&lt;/p&gt;
&lt;h4 id=&quot;application-snapshots&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/changelog/2024/05/snapshot-improvements-pt3/#application-snapshots&quot;&gt;Application Snapshots&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img alt=&quot;Application Snapshots Table Menu&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/application-snapshots-menu.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;&lt;/p&gt;
&lt;h4 id=&quot;instance-snapshots&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/changelog/2024/05/snapshot-improvements-pt3/#instance-snapshots&quot;&gt;Instance Snapshots&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img alt=&quot;Instance Snapshots Table Menu&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/instance-snapshots-menu.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;&lt;/p&gt;
&lt;h4 id=&quot;device-snapshots&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/changelog/2024/05/snapshot-improvements-pt3/#device-snapshots&quot;&gt;Device Snapshots&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img alt=&quot;Device Snapshots Table Menu&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/device-snapshots-menu.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2024/05/snapshot-upload/</id>
        <title>Snapshot Upload</title>
        <summary></summary>
        <updated>2024-05-16T13:03:00Z</updated>
        <link href="https://flowfuse.com/changelog/2024/05/snapshot-upload/"/>
        <author><name>Steve McLaughlin</name></author>
        <content type="html">&lt;p&gt;&lt;a href=&quot;https://flowfuse.com/docs/user/snapshots/#snapshots&quot;&gt;Snapshots&lt;/a&gt; are a point-in-time backup of Node-RED
that can be used to easily revert back to previous version, or to push out to other
instances and devices as part of our Pipelines feature.&lt;/p&gt;
&lt;p&gt;As promised we have now provided a way for you to upload your locally downloaded snapshots.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img alt=&quot;Upload snapshot&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/snapshot-upload.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;&lt;/p&gt;
&lt;p&gt;This means you can now easily take a snapshot and move it between FlowFuse platforms or,
if you prefer, automate it via the APIs it is built on.&lt;/p&gt;
&lt;p&gt;We hope you like this nifty little feature.&lt;/p&gt;
&lt;p&gt;Stay tuned as we expect the final peices in the overall &lt;a href=&quot;https://flowfuse.com/changelog/2024/05/snapshot-improvements/&quot;&gt;Snapshot Improvements&lt;/a&gt;
to be delivered in the coming days.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2024/05/snapshot-improvements/</id>
        <title>Snapshot Improvements</title>
        <summary></summary>
        <updated>2024-05-09T13:03:00Z</updated>
        <link href="https://flowfuse.com/changelog/2024/05/snapshot-improvements/"/>
        <author><name>Nick O&#39;Leary</name></author>
        <content type="html">&lt;p&gt;&lt;a href=&quot;https://flowfuse.com/docs/user/snapshots/#snapshots&quot;&gt;Snapshots&lt;/a&gt; are a point-in-time backup of Node-RED
that can be used to easily revert back to previous version, or to push out to other
instances and devices as part of our Pipelines feature.&lt;/p&gt;
&lt;p&gt;We have lots planned to improve the overall workflow with snapshots, and have a couple
updates to share that are available today.&lt;/p&gt;
&lt;h3 id=&quot;viewing-snapshot-contents&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/changelog/2024/05/snapshot-improvements/#viewing-snapshot-contents&quot;&gt;Viewing snapshot contents&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Following the work done to &lt;a href=&quot;https://flowfuse.com/changelog/2024/05/library-flowviewer/&quot;&gt;enable viewing flows in the Team Library&lt;/a&gt;, we&#39;ve added
the same capability to snapshots.&lt;/p&gt;
&lt;p&gt;Each snapshot now has a &#39;View Snapshot&#39; option that will display the flows without having to open up
the full Node-RED editor.&lt;/p&gt;
&lt;h3 id=&quot;downloading-snapshots&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/changelog/2024/05/snapshot-improvements/#downloading-snapshots&quot;&gt;Downloading snapshots&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;We&#39;ve also added the ability to download snapshots locally - allowing you to take
your own offline backups of your flows.&lt;/p&gt;
&lt;p&gt;The &#39;Download Snapshot&#39; option is currently available on Instance Snapshots, but we&#39;ll be rolling
it out to all snapshot types in the near future. We are also working on an Import feature
that will let you upload a snapshot back into the platform.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img alt=&quot;Download snapshot&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/snapshot-download.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2024/05/managing-node-red-version-on-devices/</id>
        <title>Managing Node-RED versions on Devices</title>
        <summary></summary>
        <updated>2024-05-09T13:01:00Z</updated>
        <link href="https://flowfuse.com/changelog/2024/05/managing-node-red-version-on-devices/"/>
        <author><name>Nick O&#39;Leary</name></author>
        <content type="html">&lt;p&gt;We have added the ability to manage the Node-RED version running on application-assigned
Devices within FlowFuse.&lt;/p&gt;
&lt;p&gt;Ordinarily, a device will get its Node-RED version from the snapshot deployed to it. However,
for an Application-assigned device, you may not yet have a snapshot to deploy.&lt;/p&gt;
&lt;p&gt;The new option, available under Device/Settings/Editor lets you pick what version
of Node-RED the device should use - overriding what is in the active snapshot.&lt;/p&gt;
&lt;p&gt;For devices running v2.4.1 or later of the Device Agent, Node-RED will get updated
when the setting is saved. For older versions of the Device Agent, it will require
a new snapshot to be deployed to trigger the update.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2024/05/instance-healthcheck/</id>
        <title>Customizing instance health-check settings</title>
        <summary></summary>
        <updated>2024-05-09T13:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2024/05/instance-healthcheck/"/>
        <author><name>Nick O&#39;Leary</name></author>
        <content type="html">&lt;p&gt;When running Node-RED within FlowFuse, the platform actively monitors the instances
to make sure they are running smoothly and automatically restarts them if it detects
a problem. It does this by regularly polling Node-RED to make sure it is still responsive.&lt;/p&gt;
&lt;p&gt;This provides protection for the case where a user&#39;s flows accidentally creates a tight
loop in its code and locks up the runtime.&lt;/p&gt;
&lt;p&gt;We have to do this with care; it is entirely possible that a user&#39;s flows are intentionally
doing some hard work that causes our health check to temporarily fail. For that reason,
we only restart Node-RED if it fails a number of health-check polls in a row.&lt;/p&gt;
&lt;p&gt;But even with that in place, there are still edge cases where a user&#39;s flows need to
do some &lt;em&gt;really&lt;/em&gt; hard work that can exceed what the default health-check polling is
configured to handle.&lt;/p&gt;
&lt;p&gt;We have now added the ability to customize how often we check the instance health. By default
this is done every 7.5 seconds, but can now be extended via the instance settings.&lt;/p&gt;
&lt;p&gt;This will require the instance to be updated to the latest stack to enable the option.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img alt=&quot;Health check interval in Instance settings&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/healthcheck.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2024/05/library-flowviewer/</id>
        <title>Team Library - Flow Viewer</title>
        <summary></summary>
        <updated>2024-05-01T13:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2024/05/library-flowviewer/"/>
        <author><name></name></author>
        <content type="html">&lt;p&gt;The Library feature allows you to save and share common functionality and flows across your team on FlowFuse. We&#39;ve just added the ability to preview any flows saved here, making it easier to understand what they do and explore your collections of flows before importing them into your workspace.&lt;/p&gt;
&lt;p&gt;This new feature will better help you maintain and manage your team&#39;s shared flows, and give better visibility on flows that your fellow Team members are building.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img alt=&quot;Example entry being visualized from the Team Library&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/library-flowviewer.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2024/05/library-blueprints/</id>
        <title>Blueprints added to Library</title>
        <summary></summary>
        <updated>2024-05-01T13:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2024/05/library-blueprints/"/>
        <author><name></name></author>
        <content type="html">&lt;p&gt;Back in &lt;a href=&quot;https://flowfuse.com/changelog/2023/10/blueprints/&quot;&gt;October 2023&lt;/a&gt;, we introduced Blueprints to help you get started with your new Node-RED applications. We&#39;ve now made them accessible directly from the Library sidebar, where you can explore the available Blueprints and use them to kick-start your new flows.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/blog/2024/04/dashboard-milestones-pwa-new-components/</id>
        <title>Dashboard 2.0: Milestones, PWA and New Components</title>
        <summary>Checkout all the great content that&#39;s been added to Dashboard 2.0 in the past few weeks and the new (in-preview) Vuetify components we&#39;ve made available in UI Template nodes.</summary>
        <updated>2024-04-26T00:00:00Z</updated>
        <link href="https://flowfuse.com/blog/2024/04/dashboard-milestones-pwa-new-components/"/>
        <author><name></name></author>
        <content type="html">&lt;p&gt;With a new release of Node-RED Dashboard 2.0 we have plenty of new fixes and improvements being added to the project. In this post, we&#39;ll deep dive into community contributions, PWA support, new Vuetify components, and the rest of the great work published in this latest release.&lt;/p&gt;
&lt;h2 id=&quot;community-contributions&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/blog/2024/04/dashboard-milestones-pwa-new-components/#community-contributions&quot;&gt;Community Contributions&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;We firstly wanted to take this opportunity to point out a big milestone that we&#39;re very proud to see in Node-RED Dashboard 2.0.&lt;/p&gt;
&lt;p&gt;This release marks the first time we&#39;ve had more contributions in a single release from the community, than from FlowFuse employees. I think this is a testament to the community, and a big milestone in validating the success, and popularity, of Dashboard 2.0 in the wider Node-RED community.&lt;/p&gt;
&lt;p&gt;So thank you very much &lt;a href=&quot;https://github.com/bartbutenaers&quot;&gt;@BartButenaers&lt;/a&gt;, &lt;a href=&quot;https://github.com/Ek1nox&quot;&gt;@Ek1nox&lt;/a&gt;, &lt;a href=&quot;https://github.com/fullmetal-fred&quot;&gt;@fullmetal-fred&lt;/a&gt; and &lt;a href=&quot;https://github.com/cgjgh&quot;&gt;@cgjgh&lt;/a&gt; for for great efforts and initiative in improving Node-RED Dashboard 2.0.&lt;/p&gt;
&lt;p&gt;For anyone else that&#39;s interested in contributing to the project, please do reach out, and we&#39;ll be happy to help you get started. We also have a &lt;a href=&quot;https://dashboard.flowfuse.com/contributing/&quot;&gt;Contributing Guide&lt;/a&gt; if you want to dive straight in.&lt;/p&gt;
&lt;h2 id=&quot;progressive-web-app-(pwa)-support&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/blog/2024/04/dashboard-milestones-pwa-new-components/#progressive-web-app-(pwa)-support&quot;&gt;Progressive Web App (PWA) Support&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The biggest community contribution we saw in this release was the addition of Progressive Web App (PWA) support. This feature was added by &lt;a href=&quot;https://github.com/cgjgh&quot;&gt;@cgjgh&lt;/a&gt;, and allows you to install your Node-RED Dashboard 2.0 applications directly onto your platform, including Windows, iOS and Android.&lt;/p&gt;
&lt;p&gt;This work will give your Dashboard&#39;s a much more native/natural feel when running on your own machines, and mean you no longer need to go via your browser to access your applications.&lt;/p&gt;
&lt;h2 id=&quot;new-vuetify-(preview)-components-available&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/blog/2024/04/dashboard-milestones-pwa-new-components/#new-vuetify-(preview)-components-available&quot;&gt;New Vuetify (Preview) Components Available&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Vuetify is the component library on which most of our Dashboard 2.0 components are built. Our core widgets implement the more fundamental UI elements, but that doesn&#39;t stop you from building out fully customized interfaces yourself using our &lt;a href=&quot;https://dashboard.flowfuse.com/nodes/widgets/ui-template.html&quot;&gt;ui-template node&lt;/a&gt; with the vast collection of Vuetify components.&lt;/p&gt;
&lt;p&gt;Within the &lt;code&gt;ui-template&lt;/code&gt; node, we natively support any of the &lt;a href=&quot;https://vuetifyjs.com/en/components/all/#containment&quot;&gt;core Vuetify components&lt;/a&gt;, but Vuetify itself is always evolving and often they release components into their &lt;a href=&quot;https://vuetifyjs.com/en/labs/introduction/#what-is-labs&quot;&gt;Vuetify Labs&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In their latest releases, a few of the new components have caught our eye as we&#39;ve seen them regularly requested in Dashboard 2.0. As such, we&#39;ve now made available the following Vuetify components inside a &lt;code&gt;ui-template&lt;/code&gt; node:&lt;/p&gt;
&lt;h4 id=&quot;number-input-(docs)&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/blog/2024/04/dashboard-milestones-pwa-new-components/#number-input-(docs)&quot;&gt;Number Input (&lt;a href=&quot;https://vuetifyjs.com/en/components/number-inputs/#installation&quot;&gt;docs&lt;/a&gt;)&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img alt=&quot;Number Input&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/vuetify-numeric.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;
&lt;em&gt;An example v-number-input from Vuetify&#39;s component library&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;We do have &lt;a href=&quot;https://github.com/FlowFuse/node-red-dashboard/issues/41&quot;&gt;plans&lt;/a&gt; for this to become a core widget, and will likely introduce this sooner, rather than later, however, in the mean time, you can now use the &lt;code&gt;v-number-input&lt;/code&gt; component in a &lt;code&gt;ui-template&lt;/code&gt; node to create your own number inputs instead.&lt;/p&gt;

&lt;div style=&quot;position: relative&quot; id=&quot;code-container-48&quot;&gt;
  &lt;pre class=&quot;language-html&quot;&gt;&lt;code id=&quot;code-48&quot; class=&quot;language-html&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;template&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;v-number-input&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;v-model&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;value&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;v-number-input&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;template&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;script&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token script&quot;&gt;&lt;span class=&quot;token language-javascript&quot;&gt;&lt;br /&gt;  &lt;span class=&quot;token keyword&quot;&gt;export&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;default&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token function&quot;&gt;data&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;      &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;        &lt;span class=&quot;token literal-property property&quot;&gt;value&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;br /&gt;      &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token literal-property property&quot;&gt;watch&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;      &lt;span class=&quot;token function-variable function&quot;&gt;value&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;        &lt;span class=&quot;token keyword&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;send&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token literal-property property&quot;&gt;payload&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;value&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;br /&gt;      &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;script&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;style&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token style&quot;&gt;&lt;span class=&quot;token language-css&quot;&gt;&lt;br /&gt;    &lt;span class=&quot;token selector&quot;&gt;.v-number-input__control .v-btn&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;        &lt;span class=&quot;token property&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;var&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;--v-theme-on-surface&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;style&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

  &lt;button class=&quot;code-copy mdi mdi-content-copy&quot; data-clipboard-target=&quot;#code-48&quot; style=&quot;position: absolute; top: 7.5px; right: 6px; padding-top: 3px; cursor: pointer; outline: none; opacity: 0.8;&quot; title=&quot;Copy&quot;&gt;
    &lt;span style=&quot;display:inline-block;background:url() no-repeat center center / contain;background: initial&quot; class=&quot;&quot;&gt;&lt;/span&gt;
  &lt;/button&gt;
&lt;/div&gt;
&lt;h4 id=&quot;sparkline-(docs)&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/blog/2024/04/dashboard-milestones-pwa-new-components/#sparkline-(docs)&quot;&gt;Sparkline (&lt;a href=&quot;https://vuetifyjs.com/en/components/sparklines/#installation&quot;&gt;docs&lt;/a&gt;)&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img alt=&quot;Sparkline&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/vuetify-sparkline.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;
&lt;em&gt;An example v-sparkline rendering the output from a ui-slider&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Sparklines are a great way to visualize data trends in a small space, and we&#39;ve seen them requested a few times in the past. Now you can use the &lt;code&gt;v-sparkline&lt;/code&gt; component in a &lt;code&gt;ui-template&lt;/code&gt; node to create your own sparklines.&lt;/p&gt;
&lt;p&gt;This will also likely become a standalone node at some point too, possibly as a third-party widget, but for now implementing into a &lt;code&gt;ui-template&lt;/code&gt; is very straight forward.&lt;/p&gt;
&lt;p&gt;In the following example &lt;code&gt;ui-template&lt;/code&gt;, we append any incoming &lt;code&gt;msg.payload&lt;/code&gt; to a &lt;code&gt;value&lt;/code&gt; array and render the sparkline accordingly.&lt;/p&gt;

&lt;div style=&quot;position: relative&quot; id=&quot;code-container-64&quot;&gt;
  &lt;pre class=&quot;language-html&quot;&gt;&lt;code id=&quot;code-64&quot; class=&quot;language-html&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;template&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;v-sparkline&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;nrdb-ui-sparkline&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;:auto-line-width&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;false&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;:fill&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;false&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;:gradient&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;gradient&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token attr-name&quot;&gt;:gradient-direction&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;top&#39;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;:line-width&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;2&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;:model-value&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;value&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;:padding&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;8&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token attr-name&quot;&gt;:smooth&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;10&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;:stroke-linecap&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;round&#39;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;:type&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;trend&#39;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;auto-draw&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;v-sparkline&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;template&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;script&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token script&quot;&gt;&lt;span class=&quot;token language-javascript&quot;&gt;&lt;br /&gt;  &lt;span class=&quot;token keyword&quot;&gt;export&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;default&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token function-variable function&quot;&gt;data&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;      &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;        &lt;span class=&quot;token literal-property property&quot;&gt;gradient&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;#f72047&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#39;#ffd200&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#39;#1feaea&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;        &lt;span class=&quot;token literal-property property&quot;&gt;value&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;br /&gt;      &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token literal-property property&quot;&gt;watch&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;      &lt;span class=&quot;token function-variable function&quot;&gt;msg&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;        &lt;span class=&quot;token keyword&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;value&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;push&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;msg&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;payload&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;br /&gt;      &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;script&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;style&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token style&quot;&gt;&lt;span class=&quot;token language-css&quot;&gt;&lt;br /&gt;&lt;span class=&quot;token selector&quot;&gt;.nrdb-ui-sparkline path&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token property&quot;&gt;stroke-dasharray&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 0 &lt;span class=&quot;token important&quot;&gt;!important&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;style&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

  &lt;button class=&quot;code-copy mdi mdi-content-copy&quot; data-clipboard-target=&quot;#code-64&quot; style=&quot;position: absolute; top: 7.5px; right: 6px; padding-top: 3px; cursor: pointer; outline: none; opacity: 0.8;&quot; title=&quot;Copy&quot;&gt;
    &lt;span style=&quot;display:inline-block;background:url() no-repeat center center / contain;background: initial&quot; class=&quot;&quot;&gt;&lt;/span&gt;
  &lt;/button&gt;
&lt;/div&gt;
&lt;p&gt;There is no limitation on &lt;em&gt;where&lt;/em&gt; you can use the sparkline either, we could, for example, add it to a &lt;code&gt;v-data-table&lt;/code&gt; to show a sparkline of a particular feature for each row in the table:&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img alt=&quot;Data Table with Sparkline&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/vuetify-data-table-sparkline.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;
&lt;em&gt;An example v-data-table that renders a v-sparkline on each row&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Here we see the corresponding template for the above &lt;code&gt;v-data-table&lt;/code&gt; example:&lt;/p&gt;

&lt;div style=&quot;position: relative&quot; id=&quot;code-container-74&quot;&gt;
  &lt;pre class=&quot;language-html&quot;&gt;&lt;code id=&quot;code-74&quot; class=&quot;language-html&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;template&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token comment&quot;&gt;&amp;lt;!-- Provide an input text box to search the content --&gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;v-text-field&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;v-model&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;search&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;label&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;Search&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;prepend-inner-icon&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;mdi-magnify&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;single-line&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;variant&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;outlined&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class=&quot;token attr-name&quot;&gt;hide-details&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;v-text-field&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;v-data-table&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;&lt;span class=&quot;token namespace&quot;&gt;v-model:&lt;/span&gt;search&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;search&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;:items&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;msg?.payload&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;:headers&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;headers&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;template&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;&lt;span class=&quot;token namespace&quot;&gt;v-slot:&lt;/span&gt;header.pingvalues&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;{ item }&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;            Ping History&lt;br /&gt;        &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;template&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;template&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;&lt;span class=&quot;token namespace&quot;&gt;v-slot:&lt;/span&gt;item.ping&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;{ item }&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;            ms&lt;br /&gt;        &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;template&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;template&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;&lt;span class=&quot;token namespace&quot;&gt;v-slot:&lt;/span&gt;item.pingvalues&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;{ item }&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;v-sparkline&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;v-model&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;item.pingValues&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;:gradient&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;[&#39;#42b3f4&#39;, &#39;#42b3f400&#39;]&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;                &lt;span class=&quot;token attr-name&quot;&gt;:line-width&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;2&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;gradientDirection&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;top&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;:smooth&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;true&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;:fill&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;true&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;template&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;v-data-table&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;template&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;script&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token script&quot;&gt;&lt;span class=&quot;token language-javascript&quot;&gt;&lt;br /&gt;&lt;span class=&quot;token keyword&quot;&gt;export&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;default&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token function&quot;&gt;data&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;      &lt;span class=&quot;token literal-property property&quot;&gt;search&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#39;&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;      &lt;span class=&quot;token literal-property property&quot;&gt;headers&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;br /&gt;        &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;token literal-property property&quot;&gt;key&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#39;id&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token literal-property property&quot;&gt;title&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#39;ID&#39;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;        &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;token literal-property property&quot;&gt;key&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#39;ping&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token literal-property property&quot;&gt;title&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#39;Ping&#39;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;        &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;token literal-property property&quot;&gt;key&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#39;pingvalues&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token literal-property property&quot;&gt;title&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#39;Ping History&#39;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;br /&gt;      &lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;script&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

  &lt;button class=&quot;code-copy mdi mdi-content-copy&quot; data-clipboard-target=&quot;#code-74&quot; style=&quot;position: absolute; top: 7.5px; right: 6px; padding-top: 3px; cursor: pointer; outline: none; opacity: 0.8;&quot; title=&quot;Copy&quot;&gt;
    &lt;span style=&quot;display:inline-block;background:url() no-repeat center center / contain;background: initial&quot; class=&quot;&quot;&gt;&lt;/span&gt;
  &lt;/button&gt;
&lt;/div&gt;
&lt;h4 id=&quot;treeview-(docs)&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/blog/2024/04/dashboard-milestones-pwa-new-components/#treeview-(docs)&quot;&gt;Treeview (&lt;a href=&quot;https://vuetifyjs.com/en/components/treeview/#installation&quot;&gt;docs&lt;/a&gt;)&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img alt=&quot;Treeview&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/vuetify-treeview.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;
&lt;em&gt;An example v-treeview from Vuetify Lab&#39;s component library&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;v-treeview&lt;/code&gt; component is a great way to visualize hierarchical data in a tree-like structure. We&#39;ve seen this requested a few times in the past, and now you can use the &lt;code&gt;v-treeview&lt;/code&gt; component in a &lt;code&gt;ui-template&lt;/code&gt; node to create your own treeviews.&lt;/p&gt;
&lt;p&gt;There is still scope for this to, one day, become a core or third party widget, but in the mean time, it&#39;s very easy to get this up and running in a &lt;code&gt;ui-template&lt;/code&gt; node.&lt;/p&gt;
&lt;p&gt;The Treeview example, and other examples above are available in this sample flow:&lt;/p&gt;
&lt;iframe width=&quot;100%&quot; height=&quot;340px&quot; src=&quot;https://flows.nodered.org/flow/0ac4d82aaf97409cb0dce9812cfa214c/share?height=300&quot; allow=&quot;clipboard-read; clipboard-write&quot; style=&quot;border: none;&quot;&gt;&lt;/iframe&gt;
&lt;h2 id=&quot;other-highlights&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/blog/2024/04/dashboard-milestones-pwa-new-components/#other-highlights&quot;&gt;Other Highlights&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Whilst the above are the main highlights of this release, we&#39;ve also had a number of other smaller improvements and fixes that have been added to the project. These include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;UI Radio Group - Dynamic radio options in &lt;a href=&quot;https://github.com/FlowFuse/node-red-dashboard/pull/765&quot;&gt;#765&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;UI Notification - Notification output &amp;amp; output msg when button clicked in &lt;a href=&quot;https://github.com/FlowFuse/node-red-dashboard/pull/766&quot;&gt;#766&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;UI Dropdown - Clear dropdown selection in &lt;a href=&quot;https://github.com/FlowFuse/node-red-dashboard/pull/775&quot;&gt;#775&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;UI Button - Add &amp;quot;Emulate Click&amp;quot; option in &lt;a href=&quot;https://github.com/FlowFuse/node-red-dashboard/pull/783&quot;&gt;#783&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You can see the full list of changes in the &lt;a href=&quot;https://github.com/FlowFuse/node-red-dashboard/releases/tag/v1.8.0&quot;&gt;1.8.0 Release Notes&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&quot;follow-our-progress&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/blog/2024/04/dashboard-milestones-pwa-new-components/#follow-our-progress&quot;&gt;Follow our Progress&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;New features and improvements are coming to Node-RED Dashboard 2.0 every week, if you&#39;re interested in what we have lined up, or want to contribute yourself, then you can track the work we have lined up on our GitHub Projects:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/orgs/FlowFuse/projects/15/views/1&quot;&gt;Dashboard 2.0 Activity Tracker&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/orgs/FlowFuse/projects/15/views/4&quot;&gt;Dashboard 2.0 Planning Board&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/orgs/FlowFuse/projects/15/views/5&quot;&gt;Dashboard 1.0 Feature Parity Tracker&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you have any feature requests, bugs/complaints or general feedback, please do reach out, and raise issues on our relevant &lt;a href=&quot;https://github.com/FlowFuse/node-red-dashboard&quot;&gt;GitHub repository&lt;/a&gt;.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2024/04/tougher-rate-limiting/</id>
        <title>Tougher Rate Limiting on Public Routes</title>
        <summary></summary>
        <updated>2024-04-11T12:01:01Z</updated>
        <link href="https://flowfuse.com/changelog/2024/04/tougher-rate-limiting/"/>
        <author><name>Nick O&#39;Leary</name></author>
        <content type="html">&lt;p&gt;Running any service on the internet requires constant vigilence on security issues. One feature
we&#39;ve had in place for some time on FlowFuse Cloud is rate-limiting on our API. This limits how
often someone can repeatedly call the API within a certain time frame.&lt;/p&gt;
&lt;p&gt;We want to make sure we deter any misbehaviour, without getting in the way of genuine access.&lt;/p&gt;
&lt;p&gt;For example, it would be entirely legitimate for a customer to use our &lt;a href=&quot;https://flowfuse.com/&quot;&gt;API&lt;/a&gt; and automate some tasks via script. These API calls would arrive faster than if they were manually clicking around the FlowFuse UI, but that doesn&#39;t mean they should be restricted.&lt;/p&gt;
&lt;p&gt;We also look to areas of the API that could be misused - for example, anything that can trigger an email to be sent, such as the &amp;quot;I forgot my password&amp;quot; API.&lt;/p&gt;
&lt;p&gt;Tuning the rate-limiting is a continual process, and in that spirit we&#39;ve recently made the rate limiting on certain routes to be much tougher and improved the feedback in the UI just in case a legitimate user accidentally hits it.&lt;/p&gt;
&lt;p&gt;The tougher limits act as a better deterent, which in turn makes the platform more secure.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2024/04/improving-device-groups/</id>
        <title>Improving Device Groups</title>
        <summary></summary>
        <updated>2024-04-11T12:01:01Z</updated>
        <link href="https://flowfuse.com/changelog/2024/04/improving-device-groups/"/>
        <author><name>Nick O&#39;Leary</name></author>
        <content type="html">&lt;p&gt;Device Groups make it really simple to deploy a snapshot across multiple devices using our Pipelines feature.
When the pipeline stage is triggered, you can watch as the snapshot is rolled out across all of target devices.&lt;/p&gt;
&lt;p&gt;We&#39;ve updated the Device Group view to include more information about what snapshot is currently deployed to the group, and the deployment status of individual devices in the group.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img alt=&quot;Summary details of all Device Groups in an application&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/device-group-summary.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;&lt;/p&gt;
&lt;figcaption&gt;Summary details of all Device Groups in an application&lt;/figcaption&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img alt=&quot;Details of all devices within a Device Group&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/device-group-details.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;&lt;/p&gt;
&lt;figcaption&gt;Details of all devices within a Device Group&lt;/figcaption&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2024/04/custom-nodes-on-devices/</id>
        <title>Custom Nodes Support on Devices</title>
        <summary></summary>
        <updated>2024-04-11T12:01:01Z</updated>
        <link href="https://flowfuse.com/changelog/2024/04/custom-nodes-on-devices/"/>
        <author><name>Nick O&#39;Leary</name></author>
        <content type="html">&lt;p&gt;We have supported the ability to configure your Node-RED instances with &lt;a href=&quot;https://flowfuse.com/changelog/2023/09/custom-node-support/&quot;&gt;custom node catalogues&lt;/a&gt; for some time now. This feature allows you to access alternative NPM registries to use nodes that have not been made publicly available.&lt;/p&gt;
&lt;p&gt;We have now extended this to work with your Node-RED devices, giving them the same ability to access private node catalogues, and deploy them across your fleet of devices.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img alt=&quot;Custom Node Catalog Support for Devices&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/device-npmrc-config.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;&lt;/p&gt;
&lt;figcaption&gt;Custom Node Catalog Support for Devices&lt;/figcaption&gt;</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2024/04/pricing-change/</id>
        <title>Pricing change Enterprise &amp; Teams Tier</title>
        <summary></summary>
        <updated>2024-04-03T13:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2024/04/pricing-change/"/>
        <author><name></name></author>
        <content type="html">&lt;p&gt;We&#39;re updating our pricing model for the Enterprise and Teams tiers on FlowFuse Cloud, with changes taking effect immediately. All information is available on our &lt;a href=&quot;https://flowfuse.com/pricing/&quot;&gt;pricing page&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The new pricing scheme is as follows:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Starter Tier: Remains unchanged&lt;/li&gt;
&lt;li&gt;Teams Tier: Availability limited to Small $25 and Medium $50 Instances&lt;/li&gt;
&lt;li&gt;Enterprise Tier: Availability limited to Medium $50 and Large $250 Instances&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;We are also pleased to offer volume discounts. For more details, please &lt;a href=&quot;https://flowfuse.com/contact-us/&quot;&gt;contact us&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&quot;important-note-for-existing-teams&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/changelog/2024/04/pricing-change/#important-note-for-existing-teams&quot;&gt;Important Note for Existing Teams&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Teams that are currently subscribed to any tier and are using Instances will continue to be billed according to the previous pricing structure. Customers who have separate contracts with us will not be affected by these changes.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/blog/2024/03/dashboard-getting-started/</id>
        <title>Getting Started with Node-RED Dashboard 2.0</title>
        <summary>New to Node-RED? New to Dashboard 2.0? This guide will help you get started.</summary>
        <updated>2024-03-27T00:00:00Z</updated>
        <link href="https://flowfuse.com/blog/2024/03/dashboard-getting-started/"/>
        <author><name></name></author>
        <content type="html">&lt;p&gt;With our latest release of Node-RED Dashboard 2.0, we&#39;ve made some big improvements to the onboarding experience.&lt;/p&gt;
&lt;p&gt;We&#39;re seeing over 2,000 people download Dashboard 2.0 per week, and are seeing a great buzz in the community of brand new Node-RED users, experienced Node-RED users that haven&#39;t explored a UI solution previously and existing users migrating from Dashboard 1.0.&lt;/p&gt;
&lt;p&gt;So, with that in mind, we wanted to offer a new &amp;quot;Getting Started&amp;quot; guide that will help you get up and running with building custom user interfaces and data visualizations in Node-RED.&lt;/p&gt;
&lt;h2 id=&quot;how-to-install-node-red-dashboard-2.0&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/blog/2024/03/dashboard-getting-started/#how-to-install-node-red-dashboard-2.0&quot;&gt;How to Install Node-RED Dashboard 2.0&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id=&quot;step-1%3A-%22manage-palette%22&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/blog/2024/03/dashboard-getting-started/#step-1%3A-%22manage-palette%22&quot;&gt;Step 1: &amp;quot;Manage Palette&amp;quot;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;Screenshot to show where to find the &amp;quot;Manage Palette&amp;quot; option in Node-RED&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/dashboard-getting-started-manage-palette.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;&lt;/p&gt;
&lt;figcaption&gt;Screenshot to show where to find the &quot;Manage Palette&quot; option in Node-RED&lt;/figcaption&gt;
&lt;ol&gt;
&lt;li&gt;Click the Node-RED Settings (top-right)&lt;/li&gt;
&lt;li&gt;Click &amp;quot;Manage Palette&amp;quot;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;step-2%3A-search-%26-%22install%22&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/blog/2024/03/dashboard-getting-started/#step-2%3A-search-%26-%22install%22&quot;&gt;Step 2: Search &amp;amp; &amp;quot;Install&amp;quot;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;Screenshot to show where to find the &amp;quot;Install&amp;quot; tab, and how to find @flowfuse/node-red-dashboard&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/dashboard-getting-started-search-install.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;&lt;/p&gt;
&lt;figcaption&gt;Screenshot to show where to find the &quot;Install&quot; tab, and how to find @flowfuse/node-red-dashboard&lt;/figcaption&gt;
&lt;ol&gt;
&lt;li&gt;Switch to the &amp;quot;Install&amp;quot; tab&lt;/li&gt;
&lt;li&gt;Search for &lt;em&gt;&amp;quot;@flowfuse/node-red-dashboard&amp;quot;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;Click &amp;quot;Install&amp;quot;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;adding-your-first-widgets&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/blog/2024/03/dashboard-getting-started/#adding-your-first-widgets&quot;&gt;Adding your first widgets&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;With the nodes installed, getting started is as easy as choosing a node from the Palette (the left-hand side list of nodes) in Node-RED, and dropping it onto your canvas.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;Screen recording to show how easy it is to deploy your first Dashboard 2.0 application.&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/dashboard-getting-started-add-widget.gif&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;&lt;/p&gt;
&lt;figcaption&gt;Screen recording to show how easy it is to deploy your first Dashboard 2.0 application.&lt;/figcaption&gt;
&lt;p&gt;In this case, we drop in a &lt;code&gt;ui-button&lt;/code&gt;, click &amp;quot;Deploy&amp;quot; and then can see the button running live in our user interface.&lt;/p&gt;
&lt;p&gt;Notice too that Dashboard will automatically setup some underlying configurations for you (visible in the right-side menu):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;ui-base&lt;/code&gt;: Each instance of Node-RED that uses Dashboard 2.0 must have a single &lt;code&gt;ui-base&lt;/code&gt; element (we&#39;re hoping to add support for multiple in the future). This element contains all of the global settings for your Dashboard instance.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ui-page&lt;/code&gt;: A single Dashboard (&lt;code&gt;ui-base&lt;/code&gt;) can consist of multiple pages, and can be navigated to using the left-side sidebar. Each page is then responsible for displaying a collection of &lt;code&gt;ui-group&lt;/code&gt; elements.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ui-group&lt;/code&gt;: Each group contains a collection of widgets, and can be used to organize your Dashboard into logical sections.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ui-theme&lt;/code&gt;: Each &lt;code&gt;ui-page&lt;/code&gt; can be assigned a given theme. Your &amp;quot;Themes&amp;quot; provide control over the aesthetic of your Dashboard like color, padding and margins.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;configuring-your-layout&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/blog/2024/03/dashboard-getting-started/#configuring-your-layout&quot;&gt;Configuring your layout&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Dashboard 2.0 adds a dedicated sidebar to Node-RED to provide a centralized view of your pages, groups and widgets. From here you can add new pages and groups, modify existing settings, and re-order content to your liking.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;Screenshot showing the Dashboard 2.0 sidebar in the Node-RED Editor.&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/dashboard-getting-started-sidebar.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;&lt;/p&gt;
&lt;figcaption&gt;Screenshot showing the Dashboard 2.0 sidebar in the Node-RED Editor.&lt;/figcaption&gt;
&lt;p&gt;When defining your layout options, we break the choice into two sections:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Page Layout:&lt;/strong&gt; Controls how the &lt;code&gt;ui-groups&lt;/code&gt;&#39;s are presented on a given page in your application.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Navigation Sidebar:&lt;/strong&gt; Defines the left-side navigation style, defined at the &lt;code&gt;ui-base&lt;/code&gt; level.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;Example of a &amp;quot;Grid&amp;quot; page layout, with &amp;quot;Collapsing&amp;quot; sidebar navigation.&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/dashboard-getting-started-layout.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;&lt;/p&gt;
&lt;figcaption&gt;Example of the &quot;Grid&quot; page layout, with &quot;Collapsing&quot; sidebar navigation.&lt;/figcaption&gt;
&lt;h3 id=&quot;page-layout&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/blog/2024/03/dashboard-getting-started/#page-layout&quot;&gt;Page Layout&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Currently, we have three different options for page layout:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Grid:&lt;/strong&gt; (&lt;a href=&quot;https://dashboard.flowfuse.com/layouts/types/grid.html&quot;&gt;docs&lt;/a&gt;) This is the default layout for a page, and uses a 12-column grid system to layout your &lt;code&gt;ui-groups&lt;/code&gt;. Widths of groups and widgets define the number of columns they will render in. So, a &amp;quot;width&amp;quot; of 6&amp;quot; would render to 50% of the screen. Grid layouts are entirely responsive, and will adjust to the size of the screen.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Fixed:&lt;/strong&gt; (&lt;a href=&quot;https://dashboard.flowfuse.com/layouts/types/fixed.html&quot;&gt;docs&lt;/a&gt;) Each component will render at a &lt;em&gt;fixed&lt;/em&gt; width, no matter what the screen size is. The &amp;quot;width&amp;quot; property is converted a fixed pixel value (multiples of 48px by default).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Notebook:&lt;/strong&gt; (&lt;a href=&quot;https://dashboard.flowfuse.com/layouts/types/notebook.html&quot;&gt;docs&lt;/a&gt;) This layout will stretch to 100% width, up to a maximum width of 1024px, and will centrally align. It&#39;s particularly useful for storytelling (e.g. articles/blogs) or analysis type user interfaces (e.g. Jupyter Notebooks), where you want the user to digest content in a particular order through scrolling.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;navigation-sidebar&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/blog/2024/03/dashboard-getting-started/#navigation-sidebar&quot;&gt;Navigation Sidebar&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Dashboard 2.0 offers various options on the appearance of the navigation sidebar:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Collapsing:&lt;/strong&gt; When the sidebar is opened the page content will adjust with the width of the sidebar.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Fixed:&lt;/strong&gt; The full sidebar will always be visible, and the page content will adjust to the width of the sidebar.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Collapse to Icons:&lt;/strong&gt; When minimized, users can still navigate between pages by clicking on the icons representing each page in the sidebar.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Appear over Content:&lt;/strong&gt; When the sidebar is opened, the page is given an overlay, and the sidebar sits on top.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Always Hide:&lt;/strong&gt; The sidebar will never show, and navigation between pages can instead be driven by &lt;a href=&quot;https://dashboard.flowfuse.com/nodes/widgets/ui-control.html&quot;&gt;&lt;code&gt;ui-control&lt;/code&gt;&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;define-your-layout&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/blog/2024/03/dashboard-getting-started/#define-your-layout&quot;&gt;Define Your Layout&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;In our example, we&#39;re going to switch to a &amp;quot;Notebook&amp;quot; layout, with a &amp;quot;Collapse to Icons&amp;quot; sidebar:&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;Example of the &amp;quot;Notebook&amp;quot; layout and &amp;quot;Collapse to icons&amp;quot; sidebar&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/dashboard-getting-started-example.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;&lt;/p&gt;
&lt;figcaption&gt;Example of the &quot;Notebook&quot; layout, with &quot;Collapse to Icons&quot; sidebar navigation.&lt;/figcaption&gt;
&lt;h2 id=&quot;adding-more-widgets&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/blog/2024/03/dashboard-getting-started/#adding-more-widgets&quot;&gt;Adding More Widgets&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Now, we&#39;re going to build a quick example to demonstrate how we can wire nodes together, and visualize the output from a &lt;code&gt;ui-slider&lt;/code&gt; onto a &lt;code&gt;ui-chart&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&quot;adding-a-group&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/blog/2024/03/dashboard-getting-started/#adding-a-group&quot;&gt;Adding a Group&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;In the Node-RED Editor&#39;s Dashboard 2.0 sidebar, we&#39;re going to then do the following things:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Edit &amp;quot;My Group&amp;quot; and rename it to &amp;quot;Controls&amp;quot;&lt;/li&gt;
&lt;li&gt;Create a new &amp;quot;Group&amp;quot; in your existing page called &amp;quot;Data Visualization&amp;quot;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;You&#39;ll now see the two groups listed under &amp;quot;Page 1&amp;quot;. &amp;quot;Controls&amp;quot; with a single &lt;code&gt;ui-button&lt;/code&gt; and &amp;quot;Data Visualization&amp;quot; with no widgets.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;Screenshot of the modified and newly added groups&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/dashboard-getting-started-new-group.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;&lt;/p&gt;
&lt;figcaption&gt;Screenshot of the modified and newly added groups&lt;/figcaption&gt;
&lt;h3 id=&quot;connecting-new-nodes&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/blog/2024/03/dashboard-getting-started/#connecting-new-nodes&quot;&gt;Connecting New Nodes&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Then, we&#39;re going to add two new widgets:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;UI Chart&lt;/li&gt;
&lt;li&gt;UI Slider&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Which we can do by dropping them from the left-side Palette and onto our canvas.&lt;/p&gt;
&lt;p&gt;We&#39;ll need to double-click each new node and confirm which &amp;quot;Group&amp;quot; we want to add this node to. In this case, we&#39;ll add the &lt;code&gt;ui-slider&lt;/code&gt; to the &amp;quot;Controls&amp;quot; group, and the &lt;code&gt;ui-chart&lt;/code&gt; to the &amp;quot;Data Visualization&amp;quot; group.&lt;/p&gt;
&lt;p&gt;We&#39;re also going to connect the output from both the &lt;code&gt;ui-slider&lt;/code&gt; and &lt;code&gt;ui-button&lt;/code&gt; to the input of the &lt;code&gt;ui-chart&lt;/code&gt;:&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;Screenshot of the Node-RED Editor, showing the ui-slider and ui-button connected to our ui-chart&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/dashboard-getting-started-flow.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;&lt;/p&gt;
&lt;figcaption&gt;Screenshot of the Node-RED Editor, showing the ui-slider and ui-button connected to our ui-chart&lt;/figcaption&gt;
&lt;p&gt;Now, when we view our Dashboard, we can see the &lt;code&gt;ui-slider&lt;/code&gt; output is def straight into our &lt;code&gt;ui-chart&lt;/code&gt;:&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;Screenshot of the Dashboard with all three widgets rendered&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/dashboard-getting-started-final.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;&lt;/p&gt;
&lt;figcaption&gt;Screenshot of the Dashboard with all three widgets rendered&lt;/figcaption&gt;
&lt;p&gt;The final step we&#39;re going to make is to modify our &lt;code&gt;ui-button&lt;/code&gt;. We&#39;re going to rename it to &amp;quot;Clear&amp;quot;, and configure it&#39;s &amp;quot;Payload&amp;quot; option to send a JSON payload of &lt;code&gt;[]&lt;/code&gt;, which, when sent to the &lt;code&gt;ui-chart&lt;/code&gt; will clear the chart of all data.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;The ui-button configuration after setting it&#39;s payload and label&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/dashboard-getting-started-btn-config.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;&lt;/p&gt;
&lt;figcaption&gt;The ui-button configuration after setting it&#39;s payload and label&lt;/figcaption&gt;
&lt;p&gt;With all of this together, we have the following functional Dashboard:&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; alt=&quot;Short animation showing the final functional dashboard&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/dashboard-getting-started-final.gif&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;&lt;/p&gt;
&lt;figcaption&gt;Short animation showing the final functional dashboard.&lt;/figcaption&gt;
&lt;h2 id=&quot;next-steps&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/blog/2024/03/dashboard-getting-started/#next-steps&quot;&gt;Next Steps&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Whilst this is just a simple introduction of Node-RED Dashboard 2.0, we do have many other articles and documentation that can help you get started with more advanced features.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://flowfuse.com/blog/dashboard/&quot;&gt;FlowFuse Dashboard Articles&lt;/a&gt; - Collection of examples and guides written by FlowFuse.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://dashboard.flowfuse.com/&quot;&gt;Node-RED Dashboard 2.0 Documentation&lt;/a&gt; - Detailed information for each of the nodes available in Dashboard 2.0, as well as useful guides on building custom nodes and widgets of your own.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://discourse.nodered.org/tag/dashboard-2&quot;&gt;Node-RED Forums - Dashboard 2.0&lt;/a&gt; -  The Node-RED forums is a great place to ask questions, share your projects and get help from the community.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://flowfuse.com/ebooks/beginner-guide-to-a-professional-nodered/&quot;&gt;Beginner Guide to a Professional Node-RED&lt;/a&gt; - A free guide to an enterprise-ready Node-RED. Learn all about Node-RED history, securing your flows and dashboard data visualization.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://flowfuse.com/contact-us/&quot;&gt;FlowFuse - Book a Demo&lt;/a&gt; - FlowFuse provides a complete platform to scale your production Node-RED applications, increase developer velocity, and enhance security in order to accelerate innovation.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;follow-our-progress&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/blog/2024/03/dashboard-getting-started/#follow-our-progress&quot;&gt;Follow our Progress&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;New features and improvements are coming to Node-RED Dashboard 2.0 every week, if you&#39;re interested in what we have lined up, or want to contribute yourself, then you can track the work we have lined up on our GitHub Projects:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/orgs/FlowFuse/projects/15/views/1&quot;&gt;Dashboard 2.0 Activity Tracker&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/orgs/FlowFuse/projects/15/views/4&quot;&gt;Dashboard 2.0 Planning Board&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/orgs/FlowFuse/projects/15/views/5&quot;&gt;Dashboard 1.0 Feature Parity Tracker&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you have any feature requests, bugs/complaints or general feedback, please do reach out, and raise issues on our relevant &lt;a href=&quot;https://github.com/FlowFuse/node-red-dashboard&quot;&gt;GitHub repository&lt;/a&gt;.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2024/03/limits-debug-payload/</id>
        <title>Configure HTTP Payload and Debug Message size</title>
        <summary></summary>
        <updated>2024-03-22T09:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2024/03/limits-debug-payload/"/>
        <author><name></name></author>
        <content type="html">&lt;p&gt;We&#39;ve introduced new configuration options to enhance the control of your HTTP requests and debugging process. These updates allow you to configure limits on the sizes of incoming HTTP messages and how many characters of a message are included in debug messages in the editor sidebar.&lt;/p&gt;
&lt;p&gt;This feature is available to all our Teams and Enterprise Tier customers. You can access these new configuration options in the Instance Settings under the &amp;quot;Editor&amp;quot; menu.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img alt=&quot;Screenshot Settings&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/limits-payload-debug.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2024/03/instance-protection-mode/</id>
        <title>Instance Protection Mode</title>
        <summary></summary>
        <updated>2024-03-14T13:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2024/03/instance-protection-mode/"/>
        <author><name></name></author>
        <content type="html">&lt;p&gt;We&#39;re excited to announce the introduction of the Instance Protection Mode, an enhancement in our efforts to provide a secure and controlled environment for managing production instances on FlowFuse. This feature empowers Team Owners with the exclusive ability to restrict modifications to production instances, ensuring that any changes are made with careful oversight and authorization.&lt;/p&gt;
&lt;p&gt;A key aspect of Instance Protection Mode is the exclusive control it grants Owners over the execution of DevOps pipelines targeting protected instances. This means: Only Owners can initiate and execute pipelines.&lt;/p&gt;
&lt;p&gt;The Instance Protection option can be found under the Instance settings view for all our Teams and Enterprise Tier customers.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2024/03/bearer-token-authentication/</id>
        <title>Bearer Token Authentication for Node-RED Instances</title>
        <summary></summary>
        <updated>2024-03-14T10:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2024/03/bearer-token-authentication/"/>
        <author><name></name></author>
        <author><name>Ben Hardill</name></author>
        <content type="html">&lt;p&gt;Bearer Token Authentication for Node-RED Instances, allows FlowFuse users to securely access their Node-RED HTTP endpoints, ensuring enhanced security and ease of implementation. Now, you can confidently manage your HTTP endpoints with the assurance that your connections are protected using FlowFuse&#39;s robust authentication mechanism.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img alt=&quot;Screenshot Instance Setting Bearer Token&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/bearer-token-authentication.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img alt=&quot;Screenshot of New Bearer Token&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/bearer-token-exampe.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;&lt;/p&gt;

&lt;div style=&quot;position: relative&quot; id=&quot;code-container-9&quot;&gt;
  &lt;pre class=&quot;language-bash&quot;&gt;&lt;code id=&quot;code-9&quot; class=&quot;language-bash&quot;&gt;$ &lt;span class=&quot;token function&quot;&gt;curl&lt;/span&gt; &lt;span class=&quot;token parameter variable&quot;&gt;-H&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Authorization: Bearer ffhttp_FKc_S4qlTBV1H411hmhneHcSJ6F_FGNQLPYbnoD3-B0&quot;&lt;/span&gt; https://healthy-rook-4329.flowforge.cloud/test&lt;br /&gt;HelloWorld&lt;br /&gt;$&lt;/code&gt;&lt;/pre&gt;

  &lt;button class=&quot;code-copy mdi mdi-content-copy&quot; data-clipboard-target=&quot;#code-9&quot; style=&quot;position: absolute; top: 7.5px; right: 6px; padding-top: 3px; cursor: pointer; outline: none; opacity: 0.8;&quot; title=&quot;Copy&quot;&gt;
    &lt;span style=&quot;display:inline-block;background:url() no-repeat center center / contain;background: initial&quot; class=&quot;&quot;&gt;&lt;/span&gt;
  &lt;/button&gt;
&lt;/div&gt;
&lt;p&gt;This feature is available for our Teams and Enterprise Tier customers. You can find the configuration under the Security tab in your instance settings.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2024/03/restart-devices-remotly/</id>
        <title>Remote Device Restart</title>
        <summary></summary>
        <updated>2024-03-14T09:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2024/03/restart-devices-remotly/"/>
        <author><name></name></author>
        <content type="html">&lt;p&gt;The latest version of the FlowFuse device agent now supports remotely restarting your Node-RED flows from the FlowFuse platform. This brings it more inline with what the platform lets you do with your hosted Node-RED instances.&lt;/p&gt;
&lt;p&gt;This removes the need to manually connect to your device to restart Node-RED, streamlining your workflow and offering a more seamless and efficient user experience.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img alt=&quot;Remote Device Restart&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/restart-devices-remotly.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2024/04/device-auto-snapshot/</id>
        <title>Direct Dashboard Access</title>
        <summary></summary>
        <updated>2024-03-06T13:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2024/04/device-auto-snapshot/"/>
        <author><name>Steve McLaughlin</name></author>
        <content type="html">&lt;p&gt;We have added quick access buttons to help you navigate to your Dashboard 2.0 UI in a single click.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img alt=&quot;&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/Dashboard-Link.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;
&lt;em&gt;Dashboard button is displayed alongside the Open Editor button when an instance has &lt;code&gt;@flowfuse/node-red-dashboard&lt;/code&gt; installed.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Click the link to learn more about &lt;a href=&quot;https://dashboard.flowfuse.com/&quot;&gt;Flowfuse Dashboard 2.0&lt;/a&gt;&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2024/02/instance-auto-snapshots/</id>
        <title>Instance Auto Snapshots</title>
        <summary></summary>
        <updated>2024-02-28T13:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2024/02/instance-auto-snapshots/"/>
        <author><name></name></author>
        <content type="html">&lt;p&gt;Two weeks ago, we introduced &lt;a href=&quot;https://flowfuse.com/changelog/2024/02/device-auto-snapshot/&quot;&gt;auto snapshots for devices&lt;/a&gt; to help ensure you can always rollback to a previous version of your Node-RED flows. We&#39;re extended that ability to the hosted Node-RED instances as well.&lt;/p&gt;
&lt;p&gt;Whenever you deploy a change to the flows, a snapshot will be taken automatically. We&#39;ll keep the last 10 auto-generated snapshots on a first-in, first-out basis. Older auto-generated snapshots will be automatically cleaned up for you - unless
they are marked as a target snapshot for your devices.&lt;/p&gt;
&lt;p&gt;Click the following links to learn more about &lt;a href=&quot;https://flowfuse.com/docs/user/concepts/#instance&quot;&gt;instances&lt;/a&gt; and &lt;a href=&quot;https://flowfuse.com/docs/user/snapshots/#snapshots&quot;&gt;snapshots&lt;/a&gt;.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2024/02/postgresql-upgrade/</id>
        <title>PostgreSQL Version update</title>
        <summary></summary>
        <updated>2024-02-15T13:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2024/02/postgresql-upgrade/"/>
        <author><name>Ben Hardill</name></author>
        <content type="html">&lt;p&gt;Included in the v2.1.0 release the Helm Chart now uses &lt;code&gt;14.10.0-debian-11-r30&lt;/code&gt; tag of the Bitnami PostgreSQL container.&lt;/p&gt;
&lt;p&gt;This container tag includes images for both AMD64 and ARM64 allowing FlowFuse to be deployed to now fully ARM64 based Kubernetes clusters when using local PostgreSQL database.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2024/02/device-auto-snapshot/</id>
        <title>Device Auto Snapshots</title>
        <summary></summary>
        <updated>2024-02-15T13:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2024/02/device-auto-snapshot/"/>
        <author><name>Steve McLaughlin</name></author>
        <content type="html">&lt;p&gt;FlowFuse V2.1 introduces Auto Snapshots for your Application Assigned Devices.&lt;/p&gt;
&lt;p&gt;When you deploy a change to the device flows, a snapshot will be taken automatically.&lt;/p&gt;
&lt;p&gt;The last 10 Auto Snapshots will be kept on a first in first out basis. Older Auto Snapshots will be automatically cleaned up for you.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img alt=&quot;&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/Device-auto-snapshot1.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img alt=&quot;&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/Device-auto-snapshot2.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;&lt;/p&gt;
&lt;p&gt;Click the following links to learn more about &lt;a href=&quot;https://flowfuse.com/docs/device-agent/&quot;&gt;devices&lt;/a&gt; and &lt;a href=&quot;https://flowfuse.com/docs/user/snapshots/#snapshots&quot;&gt;snapshots&lt;/a&gt;.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2024/02/device-pricing-change/</id>
        <title>Pricing change for Devices</title>
        <summary></summary>
        <updated>2024-02-09T13:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2024/02/device-pricing-change/"/>
        <author><name></name></author>
        <content type="html">&lt;p&gt;Starting today, we have introduced a simplification of the pricing structure for devices on FlowFuse Cloud, effective immediately. All information is available on our &lt;a href=&quot;https://flowfuse.com/pricing/&quot;&gt;pricing page&lt;/a&gt;.
The new pricing scheme is as follows:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Starter Tier: No change&lt;/li&gt;
&lt;li&gt;Teams Tier: Devices are now priced at $25 each.&lt;/li&gt;
&lt;li&gt;Enterprise Tier: Devices are priced at $50 each.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;We are also pleased to offer volume discounts. For more details, please &lt;a href=&quot;https://flowfuse.com/contact-us/&quot;&gt;contact us&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&quot;important-note-for-existing-teams&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/changelog/2024/02/device-pricing-change/#important-note-for-existing-teams&quot;&gt;Important Note for Existing Teams&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;If a team currently in either tier already has devices (or has had devices in the past), any additions or removals of devices will be billed according to the previous pricing structure.
For teams without any prior device history, the addition of devices will be billed at the new rates.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2024/02/device-instance-audit-logs/</id>
        <title>Device Instance Audit Logging</title>
        <summary></summary>
        <updated>2024-02-08T13:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2024/02/device-instance-audit-logs/"/>
        <author><name>Steve McLaughlin</name></author>
        <content type="html">&lt;p&gt;With the recent introduction of the Device audit log, we&#39;ve now updated the Device Agent to start logging events from the Node-RED instance running on your device.&lt;/p&gt;
&lt;p&gt;This brings closer parity with the logging you get from a hosted instance.&lt;/p&gt;
&lt;p&gt;The audit log events include details of the flows being updated, nodes being added or removed from the palette and other changes to the configuration.&lt;/p&gt;
&lt;p&gt;Update to Device Agent v2.2 to start receiving the events.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img alt=&quot;Device Audit log&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/device-auditlog.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2024/02/device-onboarding-improvements/</id>
        <title>Device Onboarding Improvements</title>
        <summary></summary>
        <updated>2024-02-05T13:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2024/02/device-onboarding-improvements/"/>
        <author><name>Steve McLaughlin</name></author>
        <content type="html">&lt;p&gt;Hot on the heals of our recent onboarding improvements and streamlining, we
have now introduced a new, simpler and faster way of getting your devices
configured and connected to the FlowFuse platform.&lt;/p&gt;
&lt;p&gt;Now, when you create a device on the platform, you will be offered a simple
&amp;quot;Setup command&amp;quot;. Run this command in a terminal and the let the Device
Agent do all the hard work for you.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img alt=&quot;&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/device-onboarding-improvements-1.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img alt=&quot;&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/device-onboarding-improvements-2.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;&lt;/p&gt;
&lt;p&gt;To learn more about this, head to the &lt;a href=&quot;https://flowfuse.com/docs/device-agent/&quot;&gt;FlowFuse Device Agent&lt;/a&gt; documentation.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/blog/2024/01/dashboard-2-multi-user/</id>
        <title>Personalised Multi-user Dashboards with Node-RED Dashboard 2.0!</title>
        <summary>Explore how to build multi-user Dashboards, secured with FlowFuse Cloud!</summary>
        <updated>2024-01-24T00:00:00Z</updated>
        <link href="https://flowfuse.com/blog/2024/01/dashboard-2-multi-user/"/>
        <author><name></name></author>
        <content type="html">&lt;p&gt;This week has seen the release of the &lt;a href=&quot;https://flowfuse.com/blog/2024/01/dashboard-2-ga/&quot;&gt;first major version of Node-RED Dashboard 2.0&lt;/a&gt;, with it, we&#39;ve made available a new FlowFuse-exclusive feature, personalised multi-user dashboards.&lt;/p&gt;
&lt;p&gt;This new feature will allow you to build applications that provide unique data to each user, build admin-only views, and track user activity, to name but a few. We&#39;re really excited to see what the Node-RED Community and our FlowFuse customers can do with such a powerful and flexible framework.&lt;/p&gt;
&lt;h2 id=&quot;personalised-multi-user-dashboards&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/blog/2024/01/dashboard-2-multi-user/#personalised-multi-user-dashboards&quot;&gt;Personalised Multi User Dashboards&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The original Node-RED Dashboard was built with a &amp;quot;single source of truth&amp;quot;, no matter how many users interacted with the dashboard, each user would always see the same data. This is great for prototyping, or hobby projects, but as you scale up your Node-RED usage, you&#39;ll want to be able to have unique dashboard experiences for each user.&lt;/p&gt;
&lt;h3 id=&quot;getting-started&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/blog/2024/01/dashboard-2-multi-user/#getting-started&quot;&gt;Getting Started&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;To enable personalised multi-user dashboards, you&#39;ll need to be using FlowFuse, and complete two steps:&lt;/p&gt;
&lt;h4 id=&quot;step-1%3A-enable-%22flowfuse-user-authentication%22&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/blog/2024/01/dashboard-2-multi-user/#step-1%3A-enable-%22flowfuse-user-authentication%22&quot;&gt;Step 1: Enable &amp;quot;FlowFuse User Authentication&amp;quot;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;All instances on FlowFuse can be configured with &lt;em&gt;&amp;quot;FlowFuse User Authentication&amp;quot;&lt;/em&gt; in the &amp;quot;Security&amp;quot; Settings. This option requires any user that wants access to your Editor or dashboard to be authorized by FlowFuse first.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; title=&quot;Screenshot of the &#39;Security&#39; settings available for any Instances running in FlowFuse&quot; alt=&quot;&amp;quot;Screenshot of the &#39;Security&#39; settings available for any Instances running in FlowFuse&amp;quot;&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/multi-user-dashboard-ffauth.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;&lt;/p&gt;
&lt;figcaption class=&quot;-mt-6 mb-4 text-center&quot;&gt;&lt;b&gt;&quot;Screenshot of the &#39;Security&#39; settings available for any Instances running in FlowFuse&quot;&lt;/b&gt;&lt;/figcaption&gt;
&lt;h4 id=&quot;step-2%3A-install-flowfuse&#39;s-user-addon&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/blog/2024/01/dashboard-2-multi-user/#step-2%3A-install-flowfuse&#39;s-user-addon&quot;&gt;Step 2: Install FlowFuse&#39;s User Addon&lt;/a&gt;&lt;/h4&gt;
&lt;h5 id=&quot;flowfuse-cloud&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/blog/2024/01/dashboard-2-multi-user/#flowfuse-cloud&quot;&gt;FlowFuse Cloud&lt;/a&gt;&lt;/h5&gt;
&lt;p&gt;&lt;em&gt;Note: Every instance created from today onwards automatically comes with the necessary configuration. Already created instances need to be manually restarted.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;The Personalised Multi-User Dashboard plugin, &lt;code&gt;@flowfuse/node-red-dashboard-2-user-addon&lt;/code&gt;, is available in our &lt;a href=&quot;https://flowfuse.com/certified-nodes/&quot;&gt;Certified Nodes&lt;/a&gt; catalogue, accessible to our Teams and Enterprise customers.&lt;/p&gt;
&lt;p&gt;Once the &amp;quot;FlowFuse User Authentication&amp;quot; option has been enabled on your instance, you can then install our plugin, &lt;code&gt;@flowfuse/node-red-dashboard-2-user-addon&lt;/code&gt;, through the &amp;quot;Manage Palette&amp;quot; option in the Node-RED Editor.&lt;/p&gt;
&lt;p&gt;For your devices, we provide the necessary configuration and access token upon request, so that your Node-RED devices can also benefit from a Personalised Multi-user Dashboard.&lt;/p&gt;
&lt;h5 id=&quot;flowfuse-self-hosted&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/blog/2024/01/dashboard-2-multi-user/#flowfuse-self-hosted&quot;&gt;FlowFuse Self-Hosted&lt;/a&gt;&lt;/h5&gt;
&lt;p&gt;For all our Teams and Enterprise Self-Hosted customers who also want to use the Certified Nodes and the Multi-User Dashboard, we provide all necessary configurations upon request to get started.&lt;/p&gt;
&lt;p&gt;Alternatively, if you&#39;re looking to elevate your Node-RED infrastructure, &lt;a href=&quot;https://flowfuse.com/contact-us/&quot;&gt;book in a chat with us&lt;/a&gt; to talk about how FlowFuse can help.&lt;/p&gt;
&lt;h3 id=&quot;using-the-plugin&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/blog/2024/01/dashboard-2-multi-user/#using-the-plugin&quot;&gt;Using the Plugin&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Once enabled, any messages emitted by a Dashboard 2.0 node will contain a new &lt;code&gt;msg._client.user&lt;/code&gt; object, e.g:&lt;/p&gt;

&lt;div style=&quot;position: relative&quot; id=&quot;code-container-61&quot;&gt;
  &lt;pre class=&quot;language-js&quot;&gt;&lt;code id=&quot;code-61&quot; class=&quot;language-js&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token string-property property&quot;&gt;&quot;userId&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;   &lt;span class=&quot;token comment&quot;&gt;// unique identifier for the user&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token string-property property&quot;&gt;&quot;username&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// FlowFuse Username&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token string-property property&quot;&gt;&quot;email&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;    &lt;span class=&quot;token comment&quot;&gt;// E-Mail Address connected to their FlowFuse account&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token string-property property&quot;&gt;&quot;name&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;     &lt;span class=&quot;token comment&quot;&gt;// Full Name&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token string-property property&quot;&gt;&quot;image&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;&quot;&lt;/span&gt;     &lt;span class=&quot;token comment&quot;&gt;// User Avatar from FlowFuse&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

  &lt;button class=&quot;code-copy mdi mdi-content-copy&quot; data-clipboard-target=&quot;#code-61&quot; style=&quot;position: absolute; top: 7.5px; right: 6px; padding-top: 3px; cursor: pointer; outline: none; opacity: 0.8;&quot; title=&quot;Copy&quot;&gt;
    &lt;span style=&quot;display:inline-block;background:url() no-repeat center center / contain;background: initial&quot; class=&quot;&quot;&gt;&lt;/span&gt;
  &lt;/button&gt;
&lt;/div&gt;
&lt;p&gt;Then, when running Node-RED Dashboard 2.0 on FlowFuse, you&#39;ll have a new sidebar option in the Node-RED Editor, which allows you to control which node types allow for &amp;quot;client constraints&amp;quot;.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; title=&quot;The new &#39;FF Auth&#39; options available in Node-RED to allow for client constraints&quot; alt=&quot;The new &#39;FF Auth&#39; options available in Node-RED to allow for client constraints&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/multi-user-dashboard-ff-settings.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;&lt;/p&gt;
&lt;figcaption class=&quot;-mt-6 mb-4 text-center&quot;&gt;&lt;b&gt;A screenshot of the new &#39;FF Auth&#39; options available in Node-RED to allow for client constraints on different node types.&lt;/b&gt;&lt;/figcaption&gt;
&lt;p&gt;In the original Node-RED Dashboard, this was &lt;em&gt;always&lt;/em&gt; enabled for the &lt;code&gt;ui-notification&lt;/code&gt; and &lt;code&gt;ui-control&lt;/code&gt; nodes, whereby you could include &lt;code&gt;msg.socket&lt;/code&gt; data and it would only then send that message to the specified client. For Dashboard 2.0 we&#39;ve extended this concept so that as a Node-RED Developer, you can now include &lt;code&gt;msg._client.user&lt;/code&gt; data in any message sent to a Dashboard 2.0 node. Under the covers, our FlowFuse-exclusive plugin will then automatically filter messages to only send to the relevant user&#39;s connection.&lt;/p&gt;
&lt;p&gt;Utilising this feature, below you can see an example where we send data to a &lt;code&gt;ui-template&lt;/code&gt; to render a custom table for each user. Under the covers this is a &lt;code&gt;ui-event&lt;/code&gt; node (triggered on a page view), which then uses the &lt;code&gt;msg._client.user&lt;/code&gt; object to make a REST API call to retrieve a list of todo items for that specific user. We then wire the response into the &lt;code&gt;ui-template&lt;/code&gt;, which has been configured to &amp;quot;Accept Client Constraints&amp;quot;, and so only sends this data to User 2&#39;s dashboard.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; title=&quot;Showing Admin Task View&quot; alt=&quot;Showing Admin Task View&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/multi-user-dashboard-admin-tasks.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;&lt;/p&gt;
&lt;figcaption class=&quot;-mt-6 mb-4 text-center&quot;&gt;&lt;b&gt;Example of a dashboard that displays user-specific content.&lt;/b&gt;&lt;/figcaption&gt;
&lt;p&gt;Note too that we&#39;re also utilising the new &lt;a href=&quot;https://dashboard.flowfuse.com/nodes/widgets/ui-template.html#teleports&quot;&gt;Teleport&lt;/a&gt; option available in a &lt;code&gt;ui-template&lt;/code&gt; which allows us to define content to show in the top-right of the dashboard, in this case, a little &lt;em&gt;&amp;quot;Hi {username}&amp;quot;&lt;/em&gt; message.&lt;/p&gt;
&lt;h3 id=&quot;examples&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/blog/2024/01/dashboard-2-multi-user/#examples&quot;&gt;Examples&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id=&quot;rendering-logged-in-user-data&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/blog/2024/01/dashboard-2-multi-user/#rendering-logged-in-user-data&quot;&gt;Rendering Logged In User Data&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;In the previous example, you may have noticed that we&#39;re also displaying a welcome to the authenticated user on our dashboard, this means that we have access to the full User object within any &lt;code&gt;ui-template&lt;/code&gt; that we render too.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; title=&quot;Showing User Unique Data&quot; alt=&quot;Showing User Unique Data&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/multi-user-dashboard-user2.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;&lt;/p&gt;
&lt;figcaption class=&quot;-mt-6 mb-4 text-center&quot;&gt;&lt;b&gt;The &quot;Admin&quot; view that is only made available to users registered as an &quot;admin&quot;.&lt;/b&gt;&lt;/figcaption&gt;
&lt;p&gt;Under the covers, we&#39;re appending our &lt;code&gt;user&lt;/code&gt; object to the &lt;code&gt;msg&lt;/code&gt; object, via the SocketIO &lt;code&gt;auth&lt;/code&gt; option. We make the &lt;code&gt;socketio&lt;/code&gt; object available via a computed &lt;code&gt;setup&lt;/code&gt; variable, this means that we can access this data in any &lt;code&gt;ui-template&lt;/code&gt; node, and render like so:&lt;/p&gt;

&lt;div style=&quot;position: relative&quot; id=&quot;code-container-98&quot;&gt;
  &lt;pre class=&quot;language-html&quot;&gt;&lt;code id=&quot;code-98&quot; class=&quot;language-html&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;template&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;div&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;h1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;Hi, {{ setup?.socketio?.auth?.user?.name }}!&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;h1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;div&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;template&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

  &lt;button class=&quot;code-copy mdi mdi-content-copy&quot; data-clipboard-target=&quot;#code-98&quot; style=&quot;position: absolute; top: 7.5px; right: 6px; padding-top: 3px; cursor: pointer; outline: none; opacity: 0.8;&quot; title=&quot;Copy&quot;&gt;
    &lt;span style=&quot;display:inline-block;background:url() no-repeat center center / contain;background: initial&quot; class=&quot;&quot;&gt;&lt;/span&gt;
  &lt;/button&gt;
&lt;/div&gt;
&lt;p&gt;To enable custom user-by-user content in a &lt;code&gt;ui-template&lt;/code&gt; though, we must allow it to &amp;quot;Accept Client Constraints&amp;quot;. This means that if a &lt;code&gt;.msg._client.user&lt;/code&gt; value is included in any messages sent to a &lt;code&gt;ui-template&lt;/code&gt; node, then the underlying SocketIO message will be filtered to only send to the relevant user&#39;s connection, and no others.&lt;/p&gt;
&lt;h4 id=&quot;admin-only-views&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/blog/2024/01/dashboard-2-multi-user/#admin-only-views&quot;&gt;Admin Only Views&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;With this new functionality we can also now show/hide content based on the authenticated user.&lt;/p&gt;
&lt;p&gt;We recently introduced the option to &lt;a href=&quot;https://github.com/FlowFuse/node-red-dashboard/pull/484&quot;&gt;set default visiblity &amp;amp; interaction states&lt;/a&gt;. This was partly introduced because it&#39;s a good practice to set the default &amp;quot;Visibility&amp;quot; option for any admin-only pages to &amp;quot;Hidden&amp;quot;, and then use a &lt;code&gt;ui-control&lt;/code&gt; node to show the content only to the relevant admins.&lt;/p&gt;
&lt;iframe width=&quot;100%&quot; height=&quot;100%&quot; src=&quot;https://flows.nodered.org/flow/2fe8e6f1e7002f1ff6a9195ad1a153b6/share&quot; allow=&quot;clipboard-read; clipboard-write&quot; style=&quot;border: none; margin-bottom: 12px;&quot;&gt;&lt;/iframe&gt;
&lt;p&gt;Let&#39;s breakdown the above flow:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;We wire a &lt;code&gt;ui-event&lt;/code&gt; node (which emits each time a user views a page) into a switch node&lt;/li&gt;
&lt;li&gt;Our switch node checks the &lt;code&gt;user.username&lt;/code&gt; against a known list of admin users and branches &amp;quot;admin:&amp;quot; and &amp;quot;non-admin&amp;quot; users&lt;/li&gt;
&lt;li&gt;For admin users, the &lt;code&gt;change&lt;/code&gt; node defines a message for our &lt;code&gt;ui-control&lt;/code&gt; node to dynamically show content, in this case an &amp;quot;Admin&amp;quot; page, when appropriate.&lt;/li&gt;
&lt;/ol&gt;

&lt;div style=&quot;position: relative&quot; id=&quot;code-container-132&quot;&gt;
  &lt;pre class=&quot;language-json&quot;&gt;&lt;code id=&quot;code-132&quot; class=&quot;language-json&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token property&quot;&gt;&quot;pages&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;        &lt;span class=&quot;token property&quot;&gt;&quot;show&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Admin View&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

  &lt;button class=&quot;code-copy mdi mdi-content-copy&quot; data-clipboard-target=&quot;#code-132&quot; style=&quot;position: absolute; top: 7.5px; right: 6px; padding-top: 3px; cursor: pointer; outline: none; opacity: 0.8;&quot; title=&quot;Copy&quot;&gt;
    &lt;span style=&quot;display:inline-block;background:url() no-repeat center center / contain;background: initial&quot; class=&quot;&quot;&gt;&lt;/span&gt;
  &lt;/button&gt;
&lt;/div&gt;
&lt;p&gt;All events going into &lt;code&gt;ui-control&lt;/code&gt; are automatically filtered based on the &lt;code&gt;msg._client.user&lt;/code&gt; object, so only the Admin users will receive the message to show the &amp;quot;Admin View&amp;quot; page, resulting in:&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img data-zoomable=&quot;&quot; title=&quot;Showing Admin Only View&quot; alt=&quot;Showing Admin Only View&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/multi-user-dashboard-admin.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;&lt;/p&gt;
&lt;figcaption class=&quot;-mt-6 mb-4 text-center&quot;&gt;&lt;b&gt;The &quot;Admin&quot; view that is only made available to users registered as an &quot;admin&quot;.&lt;/b&gt;&lt;/figcaption&gt;
&lt;p&gt;Further extensions of this could also check &lt;code&gt;ui-event&lt;/code&gt; in case a non-admin user tries to access the &lt;code&gt;/admin&lt;/code&gt; page directly, in which case we can utilise &lt;code&gt;ui-control&lt;/code&gt; to navigate the user away from the page immediately. See the &lt;a href=&quot;https://dashboard.flowfuse.com/nodes/widgets/ui-control.html#navigation&quot;&gt;ui-control documentation&lt;/a&gt; for more details on this.&lt;/p&gt;
&lt;h2 id=&quot;upcoming-webinar&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/blog/2024/01/dashboard-2-multi-user/#upcoming-webinar&quot;&gt;Upcoming Webinar&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;If you&#39;re interested in learning more about Dashboard 2.0 and in particular multi-user Dashboards, we&#39;re hosting a webinar on Thursday, 29th February. You can find out more information &lt;a href=&quot;https://flowfuse.com/webinars/2024/node-red-dashboard-multi-user/&quot;&gt;here&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&quot;follow-our-progress&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/blog/2024/01/dashboard-2-multi-user/#follow-our-progress&quot;&gt;Follow our Progress&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;We aren&#39;t stopping here, we&#39;ll continue to push Dashboard 2.0 forward with future development, and you can track that progress on our GitHub Projects:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/orgs/FlowFuse/projects/15/views/1&quot;&gt;Dashboard 2.0 Activity Tracker&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/orgs/FlowFuse/projects/15/views/4&quot;&gt;Dashboard 2.0 Planning Board&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/orgs/FlowFuse/projects/15/views/5&quot;&gt;Dashboard 1.0 Feature Parity Tracker&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you have any feature requests, bugs/complaints or general feedback, please do reach out, and raise issues on our relevant &lt;a href=&quot;https://github.com/FlowFuse/node-red-dashboard&quot;&gt;GitHub repository&lt;/a&gt;.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/blog/2024/01/dashboard-2-ga/</id>
        <title>Node-RED Dashboard 2.0 is Generally Available!</title>
        <summary>This week sees our first major version release of Node-RED Dashboard 2.0!</summary>
        <updated>2024-01-24T00:00:00Z</updated>
        <link href="https://flowfuse.com/blog/2024/01/dashboard-2-ga/"/>
        <author><name></name></author>
        <content type="html">&lt;p&gt;Back in &lt;a href=&quot;https://flowfuse.com/blog/2023/06/dashboard-announcement/&quot;&gt;June 2023&lt;/a&gt; we announced that FlowFuse would be investing into building out the next generation of Node-RED Dashboard, the most popular UI framework for Node-RED.
We followed this up with the &lt;a href=&quot;https://flowfuse.com/blog/2023/07/dashboard-0-1-release/&quot;&gt;first release&lt;/a&gt; (&lt;code&gt;0.0.1&lt;/code&gt;) in July, just one month later, and today, we are pleased to announce that we have reached a major milestone in this journey, with the release of our first major version (&lt;code&gt;1.0.0&lt;/code&gt;) of Node-RED Dashboard 2.0.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img alt=&quot;Dashboard 2.0 Example showing weather data&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/dashboard-ga-example.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;&lt;/p&gt;
&lt;p&gt;With our &lt;code&gt;1.0.0&lt;/code&gt; release, you can now build your dashboards on a reliable and stable package, and we invite you to to start contributing your own third-party &lt;a href=&quot;https://dashboard.flowfuse.com/contributing/widgets/third-party.html&quot;&gt;widgets&lt;/a&gt; and &lt;a href=&quot;https://dashboard.flowfuse.com/contributing/plugins/&quot;&gt;plugins&lt;/a&gt;. We&#39;re excited to see what the community can contribute and build on top of this new Dashboard 2.0 framework, and we&#39;ll be continuing development to the core collection of widgets too.&lt;/p&gt;
&lt;p&gt;With Node-RED Dashboard 2.0, we have re-built the original Node-RED Dashboard from the ground up. It is now extensible due to it being VueJS-based, completely responsive down to mobile, and we&#39;ve made many quality of life improvements across the board to the existing widget collection, as well as adding a few new ones too.&lt;/p&gt;
&lt;h2 id=&quot;what&#39;s-new-in-dashboard-2.0%3F&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/blog/2024/01/dashboard-2-ga/#what&#39;s-new-in-dashboard-2.0%3F&quot;&gt;What&#39;s new in Dashboard 2.0?&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;We&#39;ve shared plenty of updates since we started, detailing the feature parity with the original Node-RED Dashboard, as well as some of the new widgets and features we&#39;ve added to the new Dashboard, such as Markdown, Mermaid Charts and new Layout Options, you can read more about those here:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://flowfuse.com/blog/2023/09/dashboard-notebook-layout/&quot;&gt;Dynamic Markdown, Tables &amp;amp; Notebooks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://flowfuse.com/blog/2023/11/dashboard-0-7/&quot;&gt;UI Chart Improvements&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://flowfuse.com/blog/2023/12/dashboard-0-10-0/&quot;&gt;Building a Custom Video Player&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Furthermore, the most requested feature for the legacy dashboard has been implemented in Dashboard 2.0, the ability to hide charts and forms based on the user that&#39;s viewing the dashboard.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img alt=&quot;Dashboard 2.0 Example showing personalised dashboard&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/multi-user-dashboard-user2.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;&lt;/p&gt;
&lt;p&gt;Read more about it here:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://flowfuse.com/blog/2024/01/dashboard-2-multi-user/&quot;&gt;Personalised Multi User Dashboards&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If that wasn&#39;t enough, we also have &lt;a href=&quot;https://dashboard.flowfuse.com/&quot;&gt;rich documentation&lt;/a&gt; for Dashboard 2.0 too, detailing all of the available nodes, details on how Dashboard 2.0 is built and how to contribute to the project too if you&#39;re that way inclined.&lt;/p&gt;
&lt;h2 id=&quot;upcoming-webinar&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/blog/2024/01/dashboard-2-ga/#upcoming-webinar&quot;&gt;Upcoming Webinar&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;If you&#39;re interested in learning more about Dashboard 2.0 and in particular, personalised multi-user dashboards, we&#39;re hosting a webinar on Thursday, 29th February. You can find out more information &lt;a href=&quot;https://flowfuse.com/webinars/2024/node-red-dashboard-multi-user/&quot;&gt;here&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&quot;follow-our-progress&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/blog/2024/01/dashboard-2-ga/#follow-our-progress&quot;&gt;Follow our Progress&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;We aren&#39;t stopping here, we&#39;ll continnue to push Dashboard 2.0 forward with future development, with a &lt;a href=&quot;https://github.com/FlowFuse/node-red-dashboard/issues/12&quot;&gt;new UI Gauge&lt;/a&gt; next on the list. You can track that progress of that particular issue, and the rest of the work we have lined up on our GitHub Projects:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/orgs/FlowFuse/projects/15/views/1&quot;&gt;Dashboard 2.0 Activity Tracker&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/orgs/FlowFuse/projects/15/views/4&quot;&gt;Dashboard 2.0 Planning Board&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/orgs/FlowFuse/projects/15/views/5&quot;&gt;Dashboard 1.0 Feature Parity Tracker&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you have any feature requests, bugs/complaints or general feedback, please do reach out, and raise issues on our relevant &lt;a href=&quot;https://github.com/FlowFuse/node-red-dashboard&quot;&gt;GitHub repository&lt;/a&gt;.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2024/01/streamlined-device-assignment/</id>
        <title>Streamlined Device assignment</title>
        <summary></summary>
        <updated>2024-01-23T13:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2024/01/streamlined-device-assignment/"/>
        <author><name>Nick O&#39;Leary</name></author>
        <content type="html">&lt;p&gt;To start editing flows on a device, it needs to be assigned to an application
in your team. Up until now this has been a two step process; creating the device
and then assigning it. This wasn&#39;t as intuitive as it needed to be.&lt;/p&gt;
&lt;p&gt;To help streamline the user experience, you can now assign a device to an application
when you create it. It&#39;s a small update, but it helps users get to where they want
to be much quicker.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img alt=&quot;&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/device-assignment.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2024/01/new-blueprints/</id>
        <title>New Blueprints added</title>
        <summary></summary>
        <updated>2024-01-22T13:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2024/01/new-blueprints/"/>
        <author><name></name></author>
        <content type="html">&lt;p&gt;We have added some new blueprints to FlowFuse Cloud to help users get started with a range of common manufacturing scenarios.&lt;/p&gt;
&lt;p&gt;They are available to all users on FlowFuse Cloud. Additionally, upon request, all our Teams and Enterprise Self-Hosted customers gain access to this collection.&lt;/p&gt;
&lt;p&gt;List of new Blueprints:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://flowfuse.com/blueprints/manufacturing/andon-live/&quot;&gt;Andon Live&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://flowfuse.com/blueprints/getting-started/crud/&quot;&gt;CRUD for Mongo DB&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://flowfuse.com/blueprints/manufacturing/5s-checklist/&quot;&gt;5S Manufacturing checklist&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://flowfuse.com/blueprints/manufacturing/performance-overview/&quot;&gt;Performance Operator Terminal&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Curious about what Blueprints are? Read our recent blog post that &lt;a href=&quot;https://flowfuse.com/blog/2023/10/blueprints/&quot;&gt;introduced Blueprints to FlowFuse&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;For an overview of all available Blueprints check out our &lt;a href=&quot;https://flowfuse.com/blueprints/&quot;&gt;Blueprint Library&lt;/a&gt;.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2024/01/helm-v2/</id>
        <title>Helm Chart v2.0</title>
        <summary></summary>
        <updated>2024-01-18T13:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2024/01/helm-v2/"/>
        <author><name>Ben Hardill</name></author>
        <content type="html">&lt;p&gt;The v2.0 release of the FlowFuse Helm Chart includes a breaking change for deployments making use of the &lt;code&gt;forge.localPostgresql&lt;/code&gt; setting when upgrading. This is where the helm chart installs a dedicated PostgreSQL database instance.&lt;/p&gt;
&lt;p&gt;With v2.0 we have updated the version of the Bitnami PostgreSQL Helm sub-chart we bundle and the upgrade process will require some manual intervention to ensure things work correctly. A fresh install should not require any extra steps.&lt;/p&gt;
&lt;p&gt;The steps are documented on the &lt;a href=&quot;https://flowfuse.com/docs/install/kubernetes/#upgrade&quot;&gt;Upgrade instructions&lt;/a&gt; page, please read them carefully before upgrading&lt;/p&gt;
&lt;p&gt;Also included in this release is the ability to set resource constraints and Pod Security Context on the FlowFuse application, File-Server Application and MQTT broker containers if required. Details of how to set those can be found in the Helm Chart &lt;a href=&quot;https://github.com/FlowFuse/helm/tree/main/helm/flowforge#readme&quot;&gt;README.md&lt;/a&gt;&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2024/01/device-groups-snapshot/</id>
        <title>Device Groups - Automatic snapshot assignment</title>
        <summary></summary>
        <updated>2024-01-18T13:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2024/01/device-groups-snapshot/"/>
        <author><name></name></author>
        <content type="html">&lt;p&gt;Four weeks ago, we launched the &lt;a href=&quot;https://flowfuse.com/changelog/2023/12/device-groups/&quot;&gt;Device Groups&lt;/a&gt; feature, for our Enterprise customers. This innovation marked a significant step in simplifying device management within DevOps Pipelines. Now we enhacent the Device Groups functionality.&lt;/p&gt;
&lt;p&gt;With this update, the behavior of Device Groups has been refined to further streamline your workflow. Now, whenever a Snapshot is assigned to a Device Group, any newly added devices to that group will automatically receive the update. This ensures that all devices within the group are consistently synchronized with the latest changes, eliminating the need for manual updates. This improvement not only saves time but also enhances the consistency and reliability of device management across your fleet.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2024/01/device-audit-log/</id>
        <title>Introducing the Device Auditlog Feature</title>
        <summary></summary>
        <updated>2024-01-18T12:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2024/01/device-audit-log/"/>
        <author><name></name></author>
        <content type="html">&lt;p&gt;The introduction of the Device Auditlog brings an enhanced level of monitoring and tracking for device-related activities, available to all FlowFuse users.&lt;/p&gt;
&lt;p&gt;Events Recorded in the Device Auditlog:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Fleet mode / Developer mode enabled/disabled&lt;/li&gt;
&lt;li&gt;Remote access enabled/disabled&lt;/li&gt;
&lt;li&gt;Credentials re-generated&lt;/li&gt;
&lt;li&gt;Device assigned&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img alt=&quot;Device Audit log&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/Device-Auditlog.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2024/01/sso-team-membership/</id>
        <title>Managing Team Membership via SSO</title>
        <summary></summary>
        <updated>2024-01-17T13:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2024/01/sso-team-membership/"/>
        <author><name>Nick O&#39;Leary</name></author>
        <content type="html">&lt;p&gt;For organizations using Single Sign-On with FlowFuse, we have now added the ability
to manage their user&#39;s team memberships and roles via their Identity Provider.&lt;/p&gt;
&lt;p&gt;This makes it easier to control access to the FlowFuse Platform from providers such
as Okta and Microsoft Entra. For example, you can create a group of Team Owners
and a separate group of Team Viewers.&lt;/p&gt;
&lt;p&gt;Whenever a user logs in via SSO, the platform will update their roles to match
the groups they are in.&lt;/p&gt;
&lt;p&gt;More information on configuring groups can be found in &lt;a href=&quot;https://flowfuse.com/docs/admin/sso/&quot;&gt;our Single Sign-on&lt;/a&gt;
documentation.&lt;/p&gt;
&lt;p&gt;This feature is available to Enterprise Tier teams on FlowFuse Cloud, as well as
self-hosted Enterprise instances.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2024/01/security-updates/</id>
        <title>Security Updates</title>
        <summary></summary>
        <updated>2024-01-17T13:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2024/01/security-updates/"/>
        <author><name>Nick O&#39;Leary</name></author>
        <content type="html">&lt;p&gt;As part of our dedication to providing a secure platform for our customers, we
operate a &lt;a href=&quot;https://flowfuse.com/handbook/engineering/security/&quot;&gt;Bug Bounty programme&lt;/a&gt;
to encourage responsible disclosure of potential issues.&lt;/p&gt;
&lt;p&gt;With all disclosures we evaluate their severity in terms of their direct impact,
the nature of the issue and overall risk.&lt;/p&gt;
&lt;p&gt;We have received a number of reports recently that we have been evaluating. Whilst
none of the recent disclosures has been deemed high severity, we have applied a number
of updates to the platform.&lt;/p&gt;
&lt;p&gt;These include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Tougher rate limiting on routes that manage user information including email addresses&lt;/li&gt;
&lt;li&gt;Better handling of the password-reset flow to prevent stale links being reused&lt;/li&gt;
&lt;li&gt;Avoiding disclosure of a user&#39;s email address to other members of a team&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This last item is one I wanted to say a bit more about. As you would expect, a
user&#39;s email address is sensitive information that we do not disclose to unauthorised
users. However, we also consider a Team as having a higher level of trust between its
members. On review, we have decided there is not a technical reason for this higher
level of trust to include a member&#39;s email address, so we have removed it from
the relevant API responses.&lt;/p&gt;
&lt;p&gt;We value the effort people put into making responsible disclosures to us and look
to reward the work where it meets our criteria.&lt;/p&gt;
&lt;p&gt;Find out more about our &lt;a href=&quot;https://flowfuse.com/handbook/engineering/security/&quot;&gt;Bug Bounty programme&lt;/a&gt;.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2024/01/fleet-mode/</id>
        <title>Renaming &quot;Default Device Mode&quot; to &quot;Fleet Mode&quot;</title>
        <summary></summary>
        <updated>2024-01-11T13:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2024/01/fleet-mode/"/>
        <author><name></name></author>
        <content type="html">&lt;p&gt;In our continuous effort to enhance user experience and clarity, we are pleased to announce an update to our device mode terminology. Previously known as &amp;quot;Default Device&amp;quot; mode, we have now rebranded it as &amp;quot;Fleet Mode.&amp;quot; This change aims to establish a clearer distinction from &amp;quot;Developer Mode,&amp;quot; thereby streamlining the understanding of operational modes for our devices.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Fleet Mode&lt;/strong&gt;: Runs any target Snapshots defined. Blocks remote editing of device.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Developer Mode&lt;/strong&gt;: Blocks any new Target Snapshots running, but allows for remote editing on the Device.&lt;/li&gt;
&lt;/ul&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2023/12/device-groups/</id>
        <title>Device Groups</title>
        <summary></summary>
        <updated>2023-12-21T13:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2023/12/device-groups/"/>
        <author><name></name></author>
        <content type="html">&lt;p&gt;We are pleased to announce the introduction of Device Groups for Enterprise Tier customers. This new feature enables users to logically group their devices assigned to an application. Additionally, Device Groups can be integrated into the DevOps Pipeline. This integration facilitates more streamlined and efficient deployments across your fleet of devices.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img alt=&quot;&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/device-groups.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;
&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img alt=&quot;&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/device-group-pipeline.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2023/12/email-alerting-node-red-crash/</id>
        <title>Email Alerts for Audit Log Events</title>
        <summary></summary>
        <updated>2023-12-21T12:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2023/12/email-alerting-node-red-crash/"/>
        <author><name></name></author>
        <content type="html">&lt;p&gt;The newly introduced feature offers email notifications tied to particular Audit log events, available to all users with Pro Tier access or higher. This feature is designed to facilitate immediate notification and action in response to  Node-RED Instance crashes. For detailed information and guidance on this functionality, please refer to our &lt;a href=&quot;https://flowfuse.com/docs/user/instance-settings/#alerts&quot;&gt;documentation&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img alt=&quot;&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/alerts.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2023/12/blueprint-selection/</id>
        <title>Blueprint Selection Update</title>
        <summary></summary>
        <updated>2023-12-21T10:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2023/12/blueprint-selection/"/>
        <author><name></name></author>
        <content type="html">&lt;p&gt;We have updated the blueprint selection interface to enhance the user experience by offering a clearer and more comprehensive overview. This improvement aims to facilitate easier navigation and selection of blueprints. Additionally, we are excited to announce that our blueprint library will be expanding in the coming days, with the addition of new blueprints to FlowFuse.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img title=&quot;FlowFuse Blueprint Selection&quot; alt=&quot;&amp;quot;FlowFuse Blueprint Selection&amp;quot;&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/blueprints-selection.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;&lt;/p&gt;
&lt;p&gt;For more detailed information about our blueprints and how to utilize them effectively, please refer to our dedicated &lt;a href=&quot;https://flowfuse.com/blog/2023/10/blueprints/&quot;&gt;article&lt;/a&gt;.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2023/12/node-red-updated/</id>
        <title>Node-RED 3.1.3 now available</title>
        <summary></summary>
        <updated>2023-12-07T13:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2023/12/node-red-updated/"/>
        <author><name>Nick O&#39;Leary</name></author>
        <content type="html">&lt;p&gt;With Node-RED 3.1.3 being released this week, we&#39;ve updated our stacks to ensure it&#39;s available to everyone in FlowFuse Cloud. We have also made it the default version you&#39;ll get when creating new instances.&lt;/p&gt;
&lt;p&gt;If you want to update your existing instances to this new stack you can follow the &lt;a href=&quot;https://flowfuse.com/docs/user/changestack/&quot;&gt;guide here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;For more information about the changes in Node-RED 3.1.3, check the &lt;a href=&quot;https://github.com/node-red/node-red/blob/7fd0ecf721fc78e8415dca3106bc71b461e6554d/CHANGELOG.md&quot;&gt;release&#39;s changelog&lt;/a&gt;.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/blog/2023/12/dashboard-0-10-0/</id>
        <title>Building a Custom Video Player in Dashboard 2.0</title>
        <summary>We&#39;ve just released the latest version of Dashboard 2.0, with a fully featured UI Templates node which now allows for full definition of a Vue component, external JS dependencies and CSS.</summary>
        <updated>2023-12-07T00:00:00Z</updated>
        <link href="https://flowfuse.com/blog/2023/12/dashboard-0-10-0/"/>
        <author><name></name></author>
        <content type="html">&lt;p&gt;Dashboard 2.0 just got &lt;em&gt;a lot&lt;/em&gt; more powerful with our new updates to the &lt;code&gt;ui-template&lt;/code&gt; node. New features added to the node include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Support for a full Vue component  to be defined using the VueJS Options API.&lt;/li&gt;
&lt;li&gt;Running of raw JavaScript within &lt;code&gt;&amp;lt;script /&amp;gt;&lt;/code&gt; tags&lt;/li&gt;
&lt;li&gt;Loading of external dependencies through &lt;code&gt;&amp;lt;script /&amp;gt;&lt;/code&gt; tags&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In this article we&#39;re going to deepdive into an example of how you can use this new functionality to build a custom video player.&lt;/p&gt;
&lt;p&gt;We&#39;re going to aim for 3 key features:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Emit events into Node-RED when a user plays/pauses the video&lt;/li&gt;
&lt;li&gt;Allow for the video to be played/paused from within Node-RED&lt;/li&gt;
&lt;li&gt;Allow the user to seek to a specific point in the video from within Node-RED&lt;/li&gt;
&lt;/ol&gt;
&lt;div style=&quot;background-color: #fff4b9; border:1px solid #ffc400; color: #a27110; padding: 12px; border-radius: 6px; font-style: italic;&quot;&gt;Reminder: all new releases of Dashboard are now under the &lt;code style=&quot;background-color: transparent;&quot;&gt;@flowfuse&lt;/code&gt; namespace, so you&#39;ll need to update to use &lt;code style=&quot;background-color: transparent;&quot;&gt;@flowfuse/node-red-dashboard&lt;/code&gt;, and not &lt;code style=&quot;background-color: transparent;&quot;&gt;@flowforge&lt;/code&gt;.&lt;/div&gt;
&lt;h2 id=&quot;building-a-vue-component&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/blog/2023/12/dashboard-0-10-0/#building-a-vue-component&quot;&gt;Building a Vue Component&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;With Dashboard 2.0, we switched over our underlying front-end framework to VueJS. We&#39;re aware that not everyone coming into Dashboard 2.0 will be familiar with VueJS.&lt;/p&gt;
&lt;p&gt;We have a more detailed guide &lt;a href=&quot;https://dashboard.flowfuse.com/nodes/widgets/ui-template.html#building-full-vue-components&quot;&gt;here&lt;/a&gt;, but we&#39;ll also give a quick overview of the elements from Vue &amp;quot;component&amp;quot; that we&#39;ll use here:&lt;/p&gt;

&lt;div style=&quot;position: relative&quot; id=&quot;code-container-53&quot;&gt;
  &lt;pre class=&quot;language-html&quot;&gt;&lt;code id=&quot;code-53&quot; class=&quot;language-html&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;template&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token comment&quot;&gt;&amp;lt;!-- Our HTML content will go here --&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;template&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;script&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token script&quot;&gt;&lt;span class=&quot;token language-javascript&quot;&gt;&lt;br /&gt;&lt;span class=&quot;token keyword&quot;&gt;export&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;default&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token literal-property property&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#39;MyComponent&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token literal-property property&quot;&gt;methods&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token comment&quot;&gt;// JS methods we want to use across our component will go here&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token function&quot;&gt;mounted&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token comment&quot;&gt;// Code we want to run when our component is loaded will go here&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token function&quot;&gt;unmounted&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token comment&quot;&gt;// Code we want to run when our component is unloaded will go here&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;script&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;style&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token style&quot;&gt;&lt;span class=&quot;token language-css&quot;&gt;&lt;br /&gt;    &lt;span class=&quot;token comment&quot;&gt;/* We can define custom CSS here too */&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;style&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

  &lt;button class=&quot;code-copy mdi mdi-content-copy&quot; data-clipboard-target=&quot;#code-53&quot; style=&quot;position: absolute; top: 7.5px; right: 6px; padding-top: 3px; cursor: pointer; outline: none; opacity: 0.8;&quot; title=&quot;Copy&quot;&gt;
    &lt;span style=&quot;display:inline-block;background:url() no-repeat center center / contain;background: initial&quot; class=&quot;&quot;&gt;&lt;/span&gt;
  &lt;/button&gt;
&lt;/div&gt;
&lt;p&gt;Some quick gotchas to note:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;&amp;lt;div&amp;gt;{{ msg }}&amp;lt;/div&amp;gt;&lt;/code&gt; - is an example of how you render variables into the HTML.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;lt;div v-if=&amp;quot;myVar&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;/code&gt; - lets you conditionally show/hide content based on a variable.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;lt;div v-for=&amp;quot;item in items&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;/code&gt; - lets you loop over an array of items and render them into the HTML.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;lt;div @click=&amp;quot;myMethod&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;/code&gt; - lets you bind a method to an event, in this case, when the user clicks on the div.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;lt;div :class=&amp;quot;{ &#39;my-class&#39;: isActive }&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;/code&gt; - &lt;code&gt;:&lt;/code&gt; is a way to define a &amp;quot;bound&amp;quot; property. In this case, the class &lt;code&gt;my-class&lt;/code&gt; will be applied when &lt;code&gt;isActive&lt;/code&gt; is true.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;console.log(this.myVar)&lt;/code&gt; - when you&#39;re writing code inside the &lt;code&gt;&amp;lt;script /&amp;gt;&lt;/code&gt; tags, you can access Component variables and methods using &lt;code&gt;this&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;built-in-extras&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/blog/2023/12/dashboard-0-10-0/#built-in-extras&quot;&gt;Built-in Extras&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;In addition to building a component from scratch, we&#39;ll also utilize some built-in features of &lt;code&gt;ui-template&lt;/code&gt; too. These will be:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Variables:&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;id&lt;/code&gt; - The unique ID for this node in Node-RED&lt;/li&gt;
&lt;li&gt;&lt;code&gt;msg&lt;/code&gt; - The message that was most recently received into the node&lt;/li&gt;
&lt;li&gt;&lt;code&gt;$socket&lt;/code&gt; - The underlying SocketIO connection to Node-RED. Use this to listen to any incoming events, and send new ones back.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Functions:&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;send(payload)&lt;/code&gt; - Send a message back to Node-RED&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;As above, we have more detailed documentation on these features &lt;a href=&quot;https://dashboard.flowfuse.com/nodes/widgets/ui-template.html#built-in-functionality&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&quot;building-the-video-player&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/blog/2023/12/dashboard-0-10-0/#building-the-video-player&quot;&gt;Building the Video Player&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id=&quot;defining-the-content-(html)&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/blog/2023/12/dashboard-0-10-0/#defining-the-content-(html)&quot;&gt;Defining the Content (HTML)&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;We&#39;re going to start by adding a basic HTML video player:&lt;/p&gt;

&lt;div style=&quot;position: relative&quot; id=&quot;code-container-143&quot;&gt;
  &lt;pre class=&quot;language-html&quot;&gt;&lt;code id=&quot;code-143&quot; class=&quot;language-html&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;template&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;video&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;ref&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;my-video&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token special-attr&quot;&gt;&lt;span class=&quot;token attr-name&quot;&gt;style&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;token value css language-css&quot;&gt;&lt;span class=&quot;token property&quot;&gt;width&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 100%&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;controls&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;@play&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;onPlay&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;@pause&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;onPause&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;source&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;src&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;type&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;video/mp4&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;        Your browser does not support the video tag.&lt;br /&gt;    &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;video&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;template&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

  &lt;button class=&quot;code-copy mdi mdi-content-copy&quot; data-clipboard-target=&quot;#code-143&quot; style=&quot;position: absolute; top: 7.5px; right: 6px; padding-top: 3px; cursor: pointer; outline: none; opacity: 0.8;&quot; title=&quot;Copy&quot;&gt;
    &lt;span style=&quot;display:inline-block;background:url() no-repeat center center / contain;background: initial&quot; class=&quot;&quot;&gt;&lt;/span&gt;
  &lt;/button&gt;
&lt;/div&gt;
&lt;p&gt;A few things of importance to note here:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;ref&lt;/code&gt; is Vue&#39;s replacement for &lt;code&gt;document.getElementById()&lt;/code&gt;. This is copied to each instance of the component, meaning we can call &lt;code&gt;this.$refs[&#39;my-video&#39;]&lt;/code&gt; to access the video element, and this doesn&#39;t break when duplicating the widget multiple times in Dashboard.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;style=&amp;quot;&amp;quot;&lt;/code&gt; is required here to ensure the video fills the group/wrapper that it is contained within.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;@play=&lt;/code&gt; is Vue&#39;s way of binding onto the standard &lt;code&gt;onplay&lt;/code&gt; event listener available on HTML video players. We&#39;ll define the &lt;code&gt;onPlay&lt;/code&gt; method in the next section.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;@pause=&lt;/code&gt; is our event listener for when the video is paused by the user. As with &lt;code&gt;onPlay&lt;/code&gt;, we&#39;ll define this shortly.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;With &lt;em&gt;just&lt;/em&gt; the above defined, we end up with a standard video player rendered:&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img alt=&quot;HTML5 Video Player rendered in Dashboard&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/dashboard-video-1.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;&lt;/p&gt;
&lt;h3 id=&quot;defining-the-behaviors-(vuejs)&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/blog/2023/12/dashboard-0-10-0/#defining-the-behaviors-(vuejs)&quot;&gt;Defining the Behaviors (VueJS)&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Now we begin to build our Vue component. Referring back to our earlier set of features, we&#39;ll tackle these one at a time.&lt;/p&gt;
&lt;h4 id=&quot;1.-emitting-events-to-node-red-on-play%2Fpause&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/blog/2023/12/dashboard-0-10-0/#1.-emitting-events-to-node-red-on-play%2Fpause&quot;&gt;1. Emitting Events to Node-RED on Play/Pause&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;We can use &lt;code&gt;methods&lt;/code&gt; to define our &lt;code&gt;onPlay&lt;/code&gt; and &lt;code&gt;onPause&lt;/code&gt; functions that are called &lt;code&gt;@play&lt;/code&gt;/&lt;code&gt;@pause&lt;/code&gt; respectively.&lt;/p&gt;

&lt;div style=&quot;position: relative&quot; id=&quot;code-container-187&quot;&gt;
  &lt;pre class=&quot;language-html&quot;&gt;&lt;code id=&quot;code-187&quot; class=&quot;language-html&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;script&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token script&quot;&gt;&lt;span class=&quot;token language-javascript&quot;&gt;&lt;br /&gt;&lt;span class=&quot;token keyword&quot;&gt;export&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;default&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token literal-property property&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#39;MyVideoPlayer&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token literal-property property&quot;&gt;methods&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token function&quot;&gt;capture&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token parameter&quot;&gt;eventType&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;        &lt;span class=&quot;token comment&quot;&gt;// let&#39;s define our own function that can be called onPlay/onPause&lt;/span&gt;&lt;br /&gt;        &lt;span class=&quot;token comment&quot;&gt;// this prevents duplicated code across the two methods&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;        &lt;span class=&quot;token comment&quot;&gt;// get the Video&#39;s DOM element&lt;/span&gt;&lt;br /&gt;        &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; video &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;$refs&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;my-video&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;        &lt;span class=&quot;token comment&quot;&gt;// send a msg to Node-RED using built-in &quot;send&quot; fcn&lt;/span&gt;&lt;br /&gt;        &lt;span class=&quot;token keyword&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;send&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token comment&quot;&gt;// specify which action is taking place&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token literal-property property&quot;&gt;event&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; eventType&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token comment&quot;&gt;// use Vue&#39;s $refs to get the video&#39;s currentTime&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token literal-property property&quot;&gt;time&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; video&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;currentTime&lt;br /&gt;        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token function&quot;&gt;onPlay&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;        &lt;span class=&quot;token keyword&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;capture&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;play&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token function&quot;&gt;onPause&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;        &lt;span class=&quot;token keyword&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;capture&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;pause&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;script&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

  &lt;button class=&quot;code-copy mdi mdi-content-copy&quot; data-clipboard-target=&quot;#code-187&quot; style=&quot;position: absolute; top: 7.5px; right: 6px; padding-top: 3px; cursor: pointer; outline: none; opacity: 0.8;&quot; title=&quot;Copy&quot;&gt;
    &lt;span style=&quot;display:inline-block;background:url() no-repeat center center / contain;background: initial&quot; class=&quot;&quot;&gt;&lt;/span&gt;
  &lt;/button&gt;
&lt;/div&gt;
&lt;p&gt;With this functionality in place, we can wire the &lt;code&gt;ui-template&lt;/code&gt; node to a &lt;code&gt;debug&lt;/code&gt; node, and see the following when we play/pause the video:&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img alt=&quot;Example debug output when our custom build video player is played/paused&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/dashboard-video-2.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;&lt;/p&gt;
&lt;h4 id=&quot;2.-remote-control-of-play%2Fpause-from-node-red&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/blog/2023/12/dashboard-0-10-0/#2.-remote-control-of-play%2Fpause-from-node-red&quot;&gt;2. Remote control of play/pause from Node-RED&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;We can use the built-in &lt;code&gt;$socket&lt;/code&gt; variable to listen for incoming events from Node-RED. When Dashboard 2.0&#39;s nodes receive a &lt;code&gt;msg&lt;/code&gt; inside Node-RED, they send a &lt;code&gt;msg-input:&amp;lt;node-id&amp;gt;&lt;/code&gt; event to the Dashboard client. We can listen for this event and then call the &lt;code&gt;play()&lt;/code&gt; and &lt;code&gt;pause()&lt;/code&gt; methods on the video element, depending on any properties of that message, in this case, the &lt;code&gt;msg.payload.event&lt;/code&gt; value.&lt;/p&gt;

&lt;div style=&quot;position: relative&quot; id=&quot;code-container-200&quot;&gt;
  &lt;pre class=&quot;language-html&quot;&gt;&lt;code id=&quot;code-200&quot; class=&quot;language-html&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;script&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token script&quot;&gt;&lt;span class=&quot;token language-javascript&quot;&gt;&lt;br /&gt;&lt;span class=&quot;token keyword&quot;&gt;export&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;default&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token literal-property property&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#39;MyVideoPlayer&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token literal-property property&quot;&gt;methods&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token comment&quot;&gt;// ...&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token function&quot;&gt;mounted&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token comment&quot;&gt;// listen for incoming msg&#39;s from Node-RED&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token comment&quot;&gt;// note our topic is &quot;msg-input&quot; + the node&#39;s unique ID&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token keyword&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;$socket&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;on&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;msg-input:&#39;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;id&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token parameter&quot;&gt;msg&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;        &lt;span class=&quot;token comment&quot;&gt;// get the Video&#39;s DOM element&lt;/span&gt;&lt;br /&gt;        &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; video &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;$refs&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;my-video&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;        &lt;span class=&quot;token comment&quot;&gt;// if the event is &quot;play&quot;, call the video&#39;s play() method&lt;/span&gt;&lt;br /&gt;        &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;msg&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;payload&lt;span class=&quot;token operator&quot;&gt;?.&lt;/span&gt;event &lt;span class=&quot;token operator&quot;&gt;===&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#39;play&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;            video&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;play&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;br /&gt;        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;        &lt;span class=&quot;token comment&quot;&gt;// if the event is &quot;pause&quot;, call the video&#39;s pause() method&lt;/span&gt;&lt;br /&gt;        &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;msg&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;payload&lt;span class=&quot;token operator&quot;&gt;?.&lt;/span&gt;event &lt;span class=&quot;token operator&quot;&gt;===&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#39;pause&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;            video&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;pause&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;br /&gt;        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token function&quot;&gt;unmounted&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token comment&quot;&gt;// make sure we remove our listeners when the widget is destroyed&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token keyword&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;$socket&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;off&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token template-string&quot;&gt;&lt;span class=&quot;token template-punctuation string&quot;&gt;`&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;msg-input:&lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token interpolation-punctuation punctuation&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;id&lt;span class=&quot;token interpolation-punctuation punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token template-punctuation string&quot;&gt;`&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;script&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

  &lt;button class=&quot;code-copy mdi mdi-content-copy&quot; data-clipboard-target=&quot;#code-200&quot; style=&quot;position: absolute; top: 7.5px; right: 6px; padding-top: 3px; cursor: pointer; outline: none; opacity: 0.8;&quot; title=&quot;Copy&quot;&gt;
    &lt;span style=&quot;display:inline-block;background:url() no-repeat center center / contain;background: initial&quot; class=&quot;&quot;&gt;&lt;/span&gt;
  &lt;/button&gt;
&lt;/div&gt;
&lt;h4 id=&quot;3.-seeking-to-a-specific-point-in-the-video-from-within-node-red&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/blog/2023/12/dashboard-0-10-0/#3.-seeking-to-a-specific-point-in-the-video-from-within-node-red&quot;&gt;3. Seeking to a specific point in the video from within Node-RED&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;With the &lt;code&gt;on(&#39;msg-input&#39;)&lt;/code&gt; listener in place, we can now extend our handler to handle seeking to a specific point in the video.&lt;/p&gt;

&lt;div style=&quot;position: relative&quot; id=&quot;code-container-207&quot;&gt;
  &lt;pre class=&quot;language-html&quot;&gt;&lt;code id=&quot;code-207&quot; class=&quot;language-html&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;script&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token script&quot;&gt;&lt;span class=&quot;token language-javascript&quot;&gt;&lt;br /&gt;&lt;span class=&quot;token keyword&quot;&gt;export&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;default&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token literal-property property&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#39;MyVideoPlayer&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token literal-property property&quot;&gt;methods&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token comment&quot;&gt;// ...&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token function&quot;&gt;mounted&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token comment&quot;&gt;// ...&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token keyword&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;$socket&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;on&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;msg-input:&#39;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;id&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token parameter&quot;&gt;msg&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;        &lt;span class=&quot;token comment&quot;&gt;// ... other handlers&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;        &lt;span class=&quot;token comment&quot;&gt;// if the event is &quot;seek&quot;, call the video&#39;s currentTime() method&lt;/span&gt;&lt;br /&gt;        &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;msg&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;payload&lt;span class=&quot;token operator&quot;&gt;?.&lt;/span&gt;event &lt;span class=&quot;token operator&quot;&gt;===&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#39;seek&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;            video&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;currentTime &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; msg&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;payload&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;currentTime&lt;br /&gt;        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token function&quot;&gt;unmounted&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token comment&quot;&gt;// ...&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;script&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

  &lt;button class=&quot;code-copy mdi mdi-content-copy&quot; data-clipboard-target=&quot;#code-207&quot; style=&quot;position: absolute; top: 7.5px; right: 6px; padding-top: 3px; cursor: pointer; outline: none; opacity: 0.8;&quot; title=&quot;Copy&quot;&gt;
    &lt;span style=&quot;display:inline-block;background:url() no-repeat center center / contain;background: initial&quot; class=&quot;&quot;&gt;&lt;/span&gt;
  &lt;/button&gt;
&lt;/div&gt;
&lt;p&gt;and with that, we now have a Dashboard 2.0 widget to display a video, that can be controlled from Node-RED, and logs details of user activity back into Node-RED.&lt;/p&gt;
&lt;p&gt;Other features available with the UI Template are detailed in the online documentation, and include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://dashboard.flowfuse.com/nodes/widgets/ui-template.html#loading-external-dependencies&quot;&gt;Loading External Dependencies&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://dashboard.flowfuse.com/nodes/widgets/ui-template.html#writing-raw-javascript&quot;&gt;Running raw JavaScript&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;follow-our-progress&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/blog/2023/12/dashboard-0-10-0/#follow-our-progress&quot;&gt;Follow our Progress&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;You can also read the more comprehensive release notes for &lt;code&gt;v0.10.0&lt;/code&gt; release here:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/FlowFuse/node-red-dashboard/releases/tag/v0.10.0&quot;&gt;0.10.0 Release Notes&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;As always, thanks for reading and your interest in Dashboard 2.0. If you have any feature requests, bugs/complaints or general feedback, please do reach out, and raise issues on our relevant &lt;a href=&quot;https://github.com/FlowFuse/node-red-dashboard&quot;&gt;GitHub repository&lt;/a&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/orgs/FlowFuse/projects/15/views/1&quot;&gt;Dashboard 2.0 Activity Tracker&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/orgs/FlowFuse/projects/15/views/4&quot;&gt;Dashboard 2.0 Planning Board&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2023/12/billing/</id>
        <title>No Credit Card required for billing</title>
        <summary></summary>
        <updated>2023-12-06T13:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2023/12/billing/"/>
        <author><name></name></author>
        <content type="html">&lt;p&gt;We now have more flexible billing options in FlowFuse Cloud for customers that wish to purchase an annual subscription or where entering credit card details is not appropriate. We&#39;re committed to accommodating your specific billing preferences and can set up a process that aligns with your organizational needs.&lt;/p&gt;
&lt;p&gt;If you are interested in this new option or have any questions, please don&#39;t hesitate to &lt;a href=&quot;https://flowfuse.com/contact-us/&quot;&gt;contact us&lt;/a&gt;. We&#39;re here to help you with your billing and subscription needs.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2023/11/2fa/</id>
        <title>Two-Factor Authentication</title>
        <summary></summary>
        <updated>2023-11-23T13:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2023/11/2fa/"/>
        <author><name></name></author>
        <content type="html">&lt;p&gt;In our ongoing commitment to strengthen security, we&#39;re excited to announce the addition of two-factor authentication (2FA) for FlowFuse. This enhancement ensures an extra layer of security for your account. Setting up 2FA is straightforward, and the system supports all commonly used TOTP (Time-Based One-Time Password) tools, such as Google Authenticator. To enable 2FA, simply navigate to your User Settings and follow the easy setup process.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img alt=&quot;Config 2FA&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/2fa.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;&lt;/p&gt;
&lt;p&gt;For more Details see our &lt;a href=&quot;https://flowfuse.com/docs/user/user-settings/&quot;&gt;Documentation&lt;/a&gt;
2FA is available for all FlowFuse Cloud users and for Enterprise Self-Hosted customers.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2023/11/devices-in-pipelines/</id>
        <title>Devices in DevOps Pipelines</title>
        <summary></summary>
        <updated>2023-11-23T12:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2023/11/devices-in-pipelines/"/>
        <author><name></name></author>
        <content type="html">&lt;p&gt;Building on our &lt;a href=&quot;https://flowfuse.com/blog/2023/08/flowfuse-1-11-release/#usability-improvements-to-device-management-%232294&quot;&gt;previous release&lt;/a&gt; that enabled the management of devices independently of instances. Now, the integration of individual devices into DevOps Pipelines is possible. This update marks a significant step towards more flexible and efficient device management within FlowFuse. In our ongoing efforts, we are also developing features to group devices, aiming to streamline and improve the overall device management experience.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img alt=&quot;Devices in DevOps Pipelines&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/devices-in-pipelines.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;&lt;/p&gt;
&lt;p&gt;Devices in DevOps Pipelines are available for every customer who has access to DevOps Pipelines. This includes all Cloud customers and those from the Pro Tier onwards for our self-hosted version.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2023/11/project-nodes-devices/</id>
        <title>Project Nodes for Devices</title>
        <summary></summary>
        <updated>2023-11-23T11:02:00Z</updated>
        <link href="https://flowfuse.com/changelog/2023/11/project-nodes-devices/"/>
        <author><name></name></author>
        <content type="html">&lt;p&gt;From today onwards, Project Nodes will now be available for devices assigned to an application. Previously, it was necessary for devices to be bound to an instance to utilize this functionality.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://flowfuse.com/docs/user/projectnodes/#flowfuse-project-nodes&quot;&gt;Learn more about the Project nodes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://flowfuse.com/docs/user/concepts/#application&quot;&gt;learn more about the difference between Instances, Devices, and Applications.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2023/11/default-editor/</id>
        <title>Device Editor enabled by default</title>
        <summary></summary>
        <updated>2023-11-23T11:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2023/11/default-editor/"/>
        <author><name></name></author>
        <content type="html">&lt;p&gt;With the latest update, devices operating in &lt;code&gt;Developer Mode&lt;/code&gt; will now have the &lt;code&gt;Open Editor&lt;/code&gt; feature enabled by default. This enhancement is designed to improve the User Experience.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/blog/2023/11/dashboard-0-8-0/</id>
        <title>Overhauling the Dashboard 2.0 Build Pipeline</title>
        <summary>A month or so ago, we released the Third-Party widget support for Dashboard 2.0, but having seen the feedback, we missed the beat, so we&#39;ve built it again!</summary>
        <updated>2023-11-23T00:00:00Z</updated>
        <link href="https://flowfuse.com/blog/2023/11/dashboard-0-8-0/"/>
        <author><name></name></author>
        <author><name></name></author>
        <content type="html">&lt;p&gt;As a developer, sometimes you have to hold up your hands and realise something you&#39;ve spent two weeks building needs to be thrown away and restarted.&lt;/p&gt;
&lt;p&gt;Having shipped the &lt;a href=&quot;https://flowfuse.com/blog/2023/10/dashboard-integrations/&quot;&gt;third-party widget support for Dashboard 2.0&lt;/a&gt; in line with Dashboard 1.0&#39;s approach, we then had the &lt;a href=&quot;https://github.com/FlowFuse/node-red-dashboard/issues/307&quot;&gt;feedback&lt;/a&gt; that the way Dashboard 1.0 did things really wasn&#39;t good, and asking us to consider re-building the process to make the developer experience of working with Dashboard 2.0 far more seamless.&lt;/p&gt;
&lt;p&gt;So, that&#39;s exactly what we&#39;ve done with the &lt;code&gt;0.8.0&lt;/code&gt; release, amongst a few other things.&lt;/p&gt;
&lt;div style=&quot;background-color: #fff4b9; border:1px solid #ffc400; color: #a27110; padding: 12px; border-radius: 6px; font-style: italic;&quot;&gt;Reminder: all new releases of Dashboard are now under the &lt;code style=&quot;background-color: transparent;&quot;&gt;@flowfuse&lt;/code&gt; namespace, so you&#39;ll need to update to use &lt;code style=&quot;background-color: transparent;&quot;&gt;@flowfuse/node-red-dashboard&lt;/code&gt;, and not &lt;code style=&quot;background-color: transparent;&quot;&gt;@flowforge&lt;/code&gt;.&lt;/div&gt;
&lt;h2 id=&quot;migrating-our-build-pipeline&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/blog/2023/11/dashboard-0-8-0/#migrating-our-build-pipeline&quot;&gt;Migrating our Build Pipeline&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Without getting &lt;em&gt;too&lt;/em&gt; technical, as part of this work in supporting third-party widgets, we overhauled our build pipeline for Dashboard 2.0. This pipeline is responsible for taking our source code, and compiling it into a format that then gets deployed by Node-RED when running Dashboard.&lt;/p&gt;
&lt;p&gt;Previously, we used &lt;em&gt;&lt;strong&gt;Webpack&lt;/strong&gt;&lt;/em&gt;, but now, we&#39;ve switched over to &lt;em&gt;&lt;strong&gt;Vite&lt;/strong&gt;&lt;/em&gt;. This is a newer build tool, and is much faster than Webpack. It&#39;s also what we&#39;ve now updated out &lt;a href=&quot;https://github.com/FlowFuse/node-red-dashboard-2-ui-example&quot;&gt;Example Node&lt;/a&gt; to use too.&lt;/p&gt;
&lt;p&gt;So now, when working with a third-party widget, Vite builds up all of your code, wraps it into a single &lt;code&gt;umd.js&lt;/code&gt; file, and Node-RED then serves that file up for Dashboard 2.0 to load in.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img alt=&quot;Vite Build Process&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/dashboard-build.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;&lt;/p&gt;
&lt;p&gt;We&#39;ve also re-written our &lt;a href=&quot;https://dashboard.flowfuse.com/contributing/widgets/third-party.html&quot;&gt;&amp;quot;Building Third Party Widgets&amp;quot;&lt;/a&gt; guide to reflect this change.&lt;/p&gt;
&lt;h2 id=&quot;debugging-dashboard&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/blog/2023/11/dashboard-0-8-0/#debugging-dashboard&quot;&gt;Debugging Dashboard&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;A new feature we&#39;ve added in &lt;code&gt;0.8.0&lt;/code&gt; is also for those developing Dashboard&#39;s core and third-party widgets. You can now navigate to &lt;code&gt;/dashboard/_debug&lt;/code&gt; to explore the full configuration that Dashboard receives from Node-RED.&lt;/p&gt;
&lt;p&gt;This is particularly useful when you&#39;re trying to debug why a widget isn&#39;t loading, showing the correct data, or generally isn&#39;t behaving as you expect.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img alt=&quot;Dashboard&#39;s Debug View&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/debug-view.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;&lt;/p&gt;
&lt;p&gt;Note in the above example, where we can see that the &lt;code&gt;ui-dropdown&lt;/code&gt; has had it&#39;s options overriden by &lt;code&gt;msg.options&lt;/code&gt; on injection.&lt;/p&gt;
&lt;p&gt;You can read more about the debugging view &lt;a href=&quot;https://dashboard.flowfuse.com/contributing/widgets/debugging.html&quot;&gt;here&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&quot;what-else-is-new-in-0.8.0%3F&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/blog/2023/11/dashboard-0-8-0/#what-else-is-new-in-0.8.0%3F&quot;&gt;What else is new in 0.8.0?&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Whilst we focussed this article on the build pipeline overhaul, changes to third-party wdgets and debugging Dashboard, we did also squeeze quite a lot more into the 0.8.0 releases too with plenty other fixes and improvements:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/FlowFuse/node-red-dashboard/pull/345&quot;&gt;Dynamic setting of msg.options for UI Dropdown&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/FlowFuse/node-red-dashboard/pull/346&quot;&gt;&amp;quot;Date&amp;quot; type for UI Text Input&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/FlowFuse/node-red-dashboard/pull/365&quot;&gt;Finer grain controls of Text Input event emissions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/FlowFuse/node-red-dashboard/pull/367&quot;&gt;Control over when UI Slider emits events&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/FlowFuse/node-red-dashboard/pull/364&quot;&gt;Improved documentation for Bar Charts&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You can also read the more comprehensive release notes for the release here:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/FlowFuse/node-red-dashboard/releases/tag/v0.8.0&quot;&gt;0.8.0 Release Notes&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;follow-our-progress&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/blog/2023/11/dashboard-0-8-0/#follow-our-progress&quot;&gt;Follow our Progress&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;As always, thanks for reading and your interested in Dashboard 2.0. If you have any feature requests, bugs/complaints or general feedback, please do reach out, and raise issues on our relevant &lt;a href=&quot;https://github.com/FlowFuse/node-red-dashboard&quot;&gt;GitHub repository&lt;/a&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/orgs/FlowFuse/projects/15/views/1&quot;&gt;Dashboard 2.0 Activity Tracker&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/orgs/FlowFuse/projects/15/views/4&quot;&gt;Dashboard 2.0 Planning Board&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/blog/2023/11/dashboard-0-7/</id>
        <title>Chart Improvements &amp; Migrating to Dashboard 2.0</title>
        <summary>With the 0.7.x Releases of Dashboard 2.0, we&#39;ve made big improvements to Charts, generated a migration guide, and much more...</summary>
        <updated>2023-11-09T00:00:00Z</updated>
        <link href="https://flowfuse.com/blog/2023/11/dashboard-0-7/"/>
        <author><name></name></author>
        <content type="html">&lt;p&gt;It&#39;s been a little while since we&#39;ve done an update, since we last posted we&#39;ve moved into the 0.7.x releases for Dashboard 2.0. With these we&#39;re making big strides in improving the UX for charting your data, as well as starting to focus on migration paths from Dashboard 1.0 to 2.0.&lt;/p&gt;
&lt;h2 id=&quot;package-name-changes&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/blog/2023/11/dashboard-0-7/#package-name-changes&quot;&gt;Package Name Changes&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Firstly a bit of news regarding the &lt;code&gt;npm&lt;/code&gt; package we publish. Inline with our own &lt;a href=&quot;https://flowfuse.com/blog/2023/08/flowforge-is-now-flowfuse/&quot;&gt;company name change&lt;/a&gt;, we&#39;ve had to update Dashboard 2.0&#39;s npm package, and so, we&#39;ve changed from &lt;code&gt;@flowforge/node-red-dashboard&lt;/code&gt; to &lt;code&gt;@flowfuse/node-red-dashboard&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;In the short term, we&#39;ll be keeping @flowforge available on the Node-RED Palette Manager, but it will be removed soon, and the associated NPM Package will be put into a &amp;quot;deprecated&amp;quot; mode.&lt;/p&gt;
&lt;h3 id=&quot;npm-package-migration&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/blog/2023/11/dashboard-0-7/#npm-package-migration&quot;&gt;NPM Package Migration&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Unfortunately, this migration from &lt;code&gt;@flowforge/&lt;/code&gt; to &lt;code&gt;@flowfuse/&lt;/code&gt; requires a little bit of manual work, and isn&#39;t as easy as just clicking &amp;quot;update&amp;quot; in the Node-RED Editor.&lt;/p&gt;
&lt;p&gt;In any case, there is no need to update your flow in this migration, you&#39;ll just need to uninstall &lt;code&gt;@flowforge/node-red-dashboard&lt;/code&gt; and install &lt;code&gt;@flowfuse/node-red-dashboard&lt;/code&gt; instead.&lt;/p&gt;
&lt;h4 id=&quot;running-locally&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/blog/2023/11/dashboard-0-7/#running-locally&quot;&gt;Running Locally&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;If you&#39;re running Node-RED locally, or in your own infrastructure, you&#39;ll need to manually uninstall the old package:&lt;/p&gt;

&lt;div style=&quot;position: relative&quot; id=&quot;code-container-27&quot;&gt;
  &lt;pre class=&quot;language-bash&quot;&gt;&lt;code id=&quot;code-27&quot; class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token function&quot;&gt;npm&lt;/span&gt; uninstall @flowforge/node-red-dashboard&lt;/code&gt;&lt;/pre&gt;

  &lt;button class=&quot;code-copy mdi mdi-content-copy&quot; data-clipboard-target=&quot;#code-27&quot; style=&quot;position: absolute; top: 7.5px; right: 6px; padding-top: 3px; cursor: pointer; outline: none; opacity: 0.8;&quot; title=&quot;Copy&quot;&gt;
    &lt;span style=&quot;display:inline-block;background:url() no-repeat center center / contain;background: initial&quot; class=&quot;&quot;&gt;&lt;/span&gt;
  &lt;/button&gt;
&lt;/div&gt;
&lt;p&gt;and re-install the new one:&lt;/p&gt;

&lt;div style=&quot;position: relative&quot; id=&quot;code-container-31&quot;&gt;
  &lt;pre class=&quot;language-bash&quot;&gt;&lt;code id=&quot;code-31&quot; class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token function&quot;&gt;npm&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;install&lt;/span&gt; @flowfuse/node-red-dashboard&lt;/code&gt;&lt;/pre&gt;

  &lt;button class=&quot;code-copy mdi mdi-content-copy&quot; data-clipboard-target=&quot;#code-31&quot; style=&quot;position: absolute; top: 7.5px; right: 6px; padding-top: 3px; cursor: pointer; outline: none; opacity: 0.8;&quot; title=&quot;Copy&quot;&gt;
    &lt;span style=&quot;display:inline-block;background:url() no-repeat center center / contain;background: initial&quot; class=&quot;&quot;&gt;&lt;/span&gt;
  &lt;/button&gt;
&lt;/div&gt;
&lt;h4 id=&quot;running-in-flowfuse&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/blog/2023/11/dashboard-0-7/#running-in-flowfuse&quot;&gt;Running in FlowFuse&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Navigate to your Instance &amp;gt; Settings &amp;gt; Palette, and then change the &lt;code&gt;@flowforge/node-red-dashboard&lt;/code&gt; entry to &lt;code&gt;@flowfuse/node-red-dashboard&lt;/code&gt; (the latest version as of this post is &lt;code&gt;0.7.2&lt;/code&gt;).&lt;/p&gt;
&lt;p&gt;Restart your instance, and the new package will automatically install.&lt;/p&gt;
&lt;h2 id=&quot;dashboard-1.0-to-2.0-migration-guide&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/blog/2023/11/dashboard-0-7/#dashboard-1.0-to-2.0-migration-guide&quot;&gt;Dashboard 1.0 to 2.0 Migration Guide&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;As part of our mission to ensure a smooth transition from Dashboard 1.0 to Dashboard 2.0, we have published a first draft of a &lt;a href=&quot;https://dashboard.flowfuse.com/user/migration.html&quot;&gt;Migration Guide&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;As a starting point, we have comprehesively covered the Dashboard 1.0 widgets and their associated properties. We&#39;ve then detailed which properties are already supported, which have partial support, and where appropriate, we do not support and &lt;em&gt;why&lt;/em&gt; (most of the time, it&#39;s just because we haven&#39;t got round to it yet!)&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img alt=&quot;Migration Guide Snippet&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/migration-guide-snippet.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;&lt;/p&gt;
&lt;p&gt;We fully appreciate that the migration path is not yet complete, and we that we are missing some features and properties, but please know that we are working hard to ensure that as many of the features from Dashboard 1.0 are available in Dashboard 2.0. We will be updating this guide as we progress.&lt;/p&gt;
&lt;p&gt;We will also be adding &amp;quot;event&amp;quot; and &amp;quot;dynamic properties&amp;quot; sections to the guide, to detail how you can update and control elements via runtime messages (e.g. dynamically change the label of a button), and how this differs (if at all) from Dashboard 1.0.&lt;/p&gt;
&lt;p&gt;Whilst we aren&#39;t quite there yet, this guide offers a comprehensive breakdown on our progress in backporting all of the properties from Dashboard 1.0&lt;/p&gt;
&lt;h3 id=&quot;automated-script&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/blog/2023/11/dashboard-0-7/#automated-script&quot;&gt;Automated Script&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;An ambitious plan that we have is to also provide a &lt;a href=&quot;https://github.com/FlowFuse/node-red-dashboard/issues/261&quot;&gt;Migration Script&lt;/a&gt;. Any feedback, ideas or concerns are most welcome as comments on the issue.&lt;/p&gt;
&lt;p&gt;Whilst this will never provide 100% perfect migration, we hope to be able to provide a script that can be run against your flows to automatically convert as much as possible from Dashboard 1.0 to 2.0. In most cases, as you can see in the Migration guide, we match most properties 1:1, so this should do a lot of the heavy lifting for you.&lt;/p&gt;
&lt;h2 id=&quot;updates-to-ui-chart&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/blog/2023/11/dashboard-0-7/#updates-to-ui-chart&quot;&gt;Updates to UI Chart&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id=&quot;key-mapping&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/blog/2023/11/dashboard-0-7/#key-mapping&quot;&gt;Key Mapping&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;One of the core purposes of Node-RED Dashboard has always been to provide low-code access to charting your data. With the 0.7.x releases we&#39;ve made some big improvements to the UI Chart node to make it easier to use and more powerful.&lt;/p&gt;
&lt;p&gt;In Dashboard 1.0, it was common place to have to regularly re-format your own data into &lt;code&gt;{x, y}&lt;/code&gt; structure to be chart-friendly. In &lt;code&gt;0.7.0&lt;/code&gt; we&#39;ve introduced the concept of &lt;strong&gt;key mapping&lt;/strong&gt;, where you can specify which keys in your data object should be used for the x and y axes. This means you can now pass in data in the format you want to use, and the chart will do the rest.&lt;/p&gt;
&lt;p&gt;For example, when rendering a chart of our weekly npm downloads, we have a data structure:&lt;/p&gt;

&lt;div style=&quot;position: relative&quot; id=&quot;code-container-86&quot;&gt;
  &lt;pre class=&quot;language-json&quot;&gt;&lt;code id=&quot;code-86&quot; class=&quot;language-json&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token property&quot;&gt;&quot;day&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;YYYY-MM-DD&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token property&quot;&gt;&quot;downloads&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;128&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token property&quot;&gt;&quot;day&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;YYYY-MM-DD&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token property&quot;&gt;&quot;downloads&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;256&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token property&quot;&gt;&quot;day&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;YYYY-MM-DD&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token property&quot;&gt;&quot;downloads&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;512&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

  &lt;button class=&quot;code-copy mdi mdi-content-copy&quot; data-clipboard-target=&quot;#code-86&quot; style=&quot;position: absolute; top: 7.5px; right: 6px; padding-top: 3px; cursor: pointer; outline: none; opacity: 0.8;&quot; title=&quot;Copy&quot;&gt;
    &lt;span style=&quot;display:inline-block;background:url() no-repeat center center / contain;background: initial&quot; class=&quot;&quot;&gt;&lt;/span&gt;
  &lt;/button&gt;
&lt;/div&gt;
&lt;p&gt;Rather than having to pipe this into a &lt;code&gt;function&lt;/code&gt; node and re-map the properties to &lt;code&gt;{ x, y }&lt;/code&gt;, we can now use the &lt;code&gt;ui-chart&lt;/code&gt;&#39;s key mapping properties:&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img alt=&quot;ui-chart-key-mapping&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/ui-chart-keymap-properties.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;&lt;/p&gt;
&lt;p&gt;Resulting in the following chart:&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img alt=&quot;ui-chart-key-mapping&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/ui-chart-mapping.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;&lt;/p&gt;
&lt;h3 id=&quot;multiple-lines&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/blog/2023/11/dashboard-0-7/#multiple-lines&quot;&gt;Multiple Lines&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Note above, another new option has been added to define &lt;em&gt;&amp;quot;Series&amp;quot;&lt;/em&gt;. In Dashboard 1.0 this was fixed as &lt;code&gt;msg.topic&lt;/code&gt; at all times, and defined which line/series data points rendered too. Now, this is configurable, and can even be set as a &lt;code&gt;key:&lt;/code&gt; type too, whereby each data point being treated individually, and grouped based on a given key/property.&lt;/p&gt;
&lt;p&gt;Another great new feature here is the type &lt;code&gt;JSON&lt;/code&gt; for this property. We can provide a &lt;em&gt;list&lt;/em&gt; of series labels, and the chart will render each value from a single data point as separate lines.&lt;/p&gt;
&lt;p&gt;For example, if we consider the data:&lt;/p&gt;

&lt;div style=&quot;position: relative&quot; id=&quot;code-container-111&quot;&gt;
  &lt;pre class=&quot;language-json&quot;&gt;&lt;code id=&quot;code-111&quot; class=&quot;language-json&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token property&quot;&gt;&quot;day&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;2023-10-23&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token property&quot;&gt;&quot;temperature&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;28&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token property&quot;&gt;&quot;humidity&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;16&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token property&quot;&gt;&quot;day&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;2023-10-24&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token property&quot;&gt;&quot;temperature&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;26&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token property&quot;&gt;&quot;humidity&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;19&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token property&quot;&gt;&quot;day&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;2023-10-25&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token property&quot;&gt;&quot;temperature&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;27&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token property&quot;&gt;&quot;humidity&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;24&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

  &lt;button class=&quot;code-copy mdi mdi-content-copy&quot; data-clipboard-target=&quot;#code-111&quot; style=&quot;position: absolute; top: 7.5px; right: 6px; padding-top: 3px; cursor: pointer; outline: none; opacity: 0.8;&quot; title=&quot;Copy&quot;&gt;
    &lt;span style=&quot;display:inline-block;background:url() no-repeat center center / contain;background: initial&quot; class=&quot;&quot;&gt;&lt;/span&gt;
  &lt;/button&gt;
&lt;/div&gt;
&lt;p&gt;We can provide a series: &lt;code&gt;[&amp;quot;temperature&amp;quot;, &amp;quot;humidity&amp;quot;]&lt;/code&gt; like so:&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img alt=&quot;ui-chart-key-mapping&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/ui-chart-series-property.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;&lt;/p&gt;
&lt;p&gt;Which would result in the following plot:&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img alt=&quot;ui-chart-key-mapping&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/ui-chart-multipoint.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;&lt;/p&gt;
&lt;p&gt;We appreciate this offers a new way of working with data in Dashboard, but hopefully, once you&#39;ve tried it, you&#39;ll find it much easier to work with, and see the value it brings when working with your own data sets.&lt;/p&gt;
&lt;h2 id=&quot;what-else-is-new-in-0.7.x%3F&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/blog/2023/11/dashboard-0-7/#what-else-is-new-in-0.7.x%3F&quot;&gt;What else is new in 0.7.x?&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Whilst we focussed this article on the migration paths and new UI Chart features, we did also squeeze quite a lot more into the 0.7.x releases too with plenty other fixes and improvements:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/FlowFuse/node-red-dashboard/pull/279&quot;&gt;Re-architecture of Server-side State Management&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/FlowFuse/node-red-dashboard/pull/327&quot;&gt;Y Axis Min/Max Options&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/FlowFuse/node-red-dashboard/pull/320&quot;&gt;&amp;quot;Focus&amp;quot; button for widgets added to Sidebar&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/FlowFuse/node-red-dashboard/pull/310&quot;&gt;No more &amp;quot;blue screen&amp;quot; and improved error reporting&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/FlowFuse/node-red-dashboard/pull/301&quot;&gt;Better route handling&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You can also read the more comprehensive release notes for each release here:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/FlowFuse/node-red-dashboard/releases/tag/v0.7.0&quot;&gt;0.7.0 Release Notes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/FlowFuse/node-red-dashboard/releases/tag/v0.7.1&quot;&gt;0.7.1 Release Notes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/FlowFuse/node-red-dashboard/releases/tag/v0.7.2&quot;&gt;0.7.2 Release Notes&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;follow-our-progress&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/blog/2023/11/dashboard-0-7/#follow-our-progress&quot;&gt;Follow our Progress&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;As always, thanks for reading and your interested in Dashboard 2.0. If you have any feature requests, bugs/complaints or general feedback, please do reach out, and raise issues on our relevant &lt;a href=&quot;https://github.com/FlowFuse/node-red-dashboard&quot;&gt;GitHub repository&lt;/a&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/orgs/FlowFuse/projects/15/views/1&quot;&gt;Dashboard 2.0 Activity Tracker&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/orgs/FlowFuse/projects/15/views/4&quot;&gt;Dashboard 2.0 Planning Board&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2023/10/certified-nodes/</id>
        <title>Certified Nodes</title>
        <summary></summary>
        <updated>2023-10-26T12:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2023/10/certified-nodes/"/>
        <author><name></name></author>
        <content type="html">&lt;p&gt;Teams Tier customers can now leverage a curated selection of certfied Node-RED nodes, enhancing workflow efficiency and security.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Quality Assurance: Each certified node undergoes testing, ensuring it&#39;s free from harmful components, aligning with our commitment to reliability.&lt;/li&gt;
&lt;li&gt;Proactive Security Measures: While prioritizing immediate resolutions for detected vulnerabilities, we maintain the discretion to revoke a node&#39;s certified status, ensuring system integrity. Affected customers will receive prompt notifications.&lt;/li&gt;
&lt;li&gt;Support: Assistance for certified nodes is provided, aiming for, but not promising, issue resolution.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;How? You can find all certified nodes in your Node-RED palette manager or on the
&lt;a href=&quot;https://flowfuse.com/certified-nodes/&quot;&gt;dedicated page&lt;/a&gt; on our website.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img alt=&quot;Certified Nodes Screenshot&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/certified-nodes.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2023/10/resource-alerts/</id>
        <title>Resource Monitoring in Audit Log</title>
        <summary></summary>
        <updated>2023-10-26T10:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2023/10/resource-alerts/"/>
        <author><name></name></author>
        <content type="html">&lt;p&gt;In the FlowFuse Audit Log (see &lt;a href=&quot;https://flowfuse.com/docs/user/logs/#audit-log&quot;&gt;Documentation&lt;/a&gt;)of an instance, it will now display when the resource utilization of CPU or memory exceeds 75% over a period of five minutes. This should provide transparency regarding resource utilization and serve as an indicator for choosing the appropriate instance size.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img alt=&quot;Audit Log Screenshot&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/Screenshot-alert.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2023/10/path-bug-fix/</id>
        <title>Device Agent path bug fix</title>
        <summary></summary>
        <updated>2023-10-26T00:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2023/10/path-bug-fix/"/>
        <author><name></name></author>
        <content type="html">&lt;p&gt;The Device Agent now passes the PATH environment variable to the Node-RED instances. Erroneously, the agent didn&#39;t capture it to expose to Node-RED again for usage. This prevented some nodes from being installed, like &lt;code&gt;node-red-serial-port&lt;/code&gt; when assigned to an application.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2023/10/device-snapshot-selection/</id>
        <title>Enhanced Snapshot Selection</title>
        <summary></summary>
        <updated>2023-10-16T11:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2023/10/device-snapshot-selection/"/>
        <author><name></name></author>
        <content type="html">&lt;p&gt;Users can now effortlessly deploy snapshots for devices assigned to an application through a new &amp;quot;Deploy Snapshot&amp;quot; button, available in the device&#39;s &amp;quot;snapshots&amp;quot; tab, thereby enhancing the workflow with the option to set either instance-owned or device-owned snapshots as the target.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img alt=&quot;Snapshot selection&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/Snapshot-Selection.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2023/10/blueprints/</id>
        <title>Blueprints</title>
        <summary></summary>
        <updated>2023-10-16T10:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2023/10/blueprints/"/>
        <author><name></name></author>
        <content type="html">&lt;p&gt;FlowFuse Blueprints are now available on FlowFuse Cloud and, upon request, for Teams and Enterprise Self-Hosted customers. Blueprints simplify Node-RED deployments by offering pre-built, customizable flows for specific use cases, thereby accelerating both new user onboarding and solution development for our seasoned users.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://flowfuse.com/blog/2023/10/blueprints/&quot;&gt;Click here&lt;/a&gt; to learn more about Blueprints.&lt;/p&gt;
&lt;p&gt;When creating a new instance, you can now also select a Blueprint.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img alt=&quot;Blueprint Screenshot&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/Screenshot-Blueprints.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/blog/2023/10/dashboard-integrations/</id>
        <title>Integrate your own widgets with Dashboard 2.0</title>
        <summary>With the 0.6.0 Release of Dashboard 2.0, we now support third-party widget integration. Read more in this deep dive.</summary>
        <updated>2023-10-06T00:00:00Z</updated>
        <link href="https://flowfuse.com/blog/2023/10/dashboard-integrations/"/>
        <author><name></name></author>
        <content type="html">&lt;p&gt;With a new release, comes new features for Dashboard 2.0, and the focus of this release has been on improving the developer experience for those building third-party widgets for Dashboard 2.0.&lt;/p&gt;
&lt;p&gt;Dashboard 1.0 had a hugely popular ecosystem of third party widgets (e.g. &lt;code&gt;ui-worldmap&lt;/code&gt;, &lt;code&gt;ui-svg&lt;/code&gt;) and something we&#39;ve been keen to support is a platform where these widgets (and more) can be built and used within Dashboard 2.0 too.&lt;/p&gt;
&lt;p&gt;Whilst we can&#39;t support the existing Dashboard 1.0 extensions directly (given that we&#39;re now VueJS-based, rather than AngularJS), we hope that the framework, documentation and this article, will help springboard the community to build new (and transfer over old) widgets for Dashboard 2.0.&lt;/p&gt;
&lt;h2 id=&quot;building-from-ui-template&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/blog/2023/10/dashboard-integrations/#building-from-ui-template&quot;&gt;Building from &lt;code&gt;ui-template&lt;/code&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;As with Dashboard 1.0, we&#39;ve utilised the flexibility of our &lt;code&gt;ui-template&lt;/code&gt; node here to enable third-party integrations.&lt;/p&gt;
&lt;p&gt;If you&#39;re used the new &lt;code&gt;ui-template&lt;/code&gt; in Dashboard 2.0 already, you&#39;ll know that you can provide raw Vue (HTML) content and it&#39;ll render that into your Dashboard. In 0.6.0, we&#39;ve added &lt;em&gt;a lot&lt;/em&gt; of new functionality to the guts of &lt;code&gt;ui-template&lt;/code&gt;, which we can then extend with our third-party widgets.&lt;/p&gt;
&lt;p&gt;This new functionality includes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Custom Dependencies&lt;/strong&gt; - Injection of external widget dependencies (e.g. other JavaScript libraries) via &lt;code&gt;&amp;lt;head&amp;gt;&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;On Input&lt;/strong&gt; - &lt;code&gt;onInput&lt;/code&gt; defines behaviour of the widget in Dashboard when it receives a message in Node-RED.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;On Load&lt;/strong&gt; - &lt;code&gt;onMounted&lt;/code&gt; defines functionality when a widget first loads in Dashboard.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Custom Functions&lt;/strong&gt; - Define general functions that can be called from within your widget at any point of your choosing&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Extend Built-In Events&lt;/strong&gt; - Our built in &lt;code&gt;send&lt;/code&gt; function can be called within your widget&#39;s template, and will send a message back to Node-RED, with any content of your choosing.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Custom SocketIO Event Handlers&lt;/strong&gt; - If you want to extend the communication between Dashboard and Node-RED, you can emit your own SocketIO events from Dashboard, and have respective handlers for those events in Node-RED.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;We also have plans to expose more of this new functionality to the &lt;code&gt;ui-template&lt;/code&gt; interface itself within Node-RED, but for now it&#39;s mostly available when developing third-party widgets.&lt;/p&gt;
&lt;h2 id=&quot;useful-resources&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/blog/2023/10/dashboard-integrations/#useful-resources&quot;&gt;Useful Resources&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;If you&#39;re interested in building integrations, then we&#39;ve also built a couple of resources to help you get started:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://dashboard.flowfuse.com/contributing/widgets/third-party.html&quot;&gt;Widget Development Guide&lt;/a&gt; - A guide for how to structure your own widgets, and&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/FlowFuse/node-red-dashboard-example-node&quot;&gt;Example Integration (Repo)&lt;/a&gt; - We&#39;ve open sourced a very simple &lt;code&gt;ui-example&lt;/code&gt; node that demonstrates how you can build your own widget for Dashboard 2.0, that utilises all of the features highlighted above.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;what-else-is-new-in-0.6.0%3F&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/blog/2023/10/dashboard-integrations/#what-else-is-new-in-0.6.0%3F&quot;&gt;What else is new in 0.6.0?&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Whilst we focussed this article on the third-party integrations, we did also squeeze quite a lot more into the 0.6.0 release too with plenty &lt;a href=&quot;https://github.com/FlowFuse/node-red-dashboard/releases/tag/v0.6.0&quot;&gt;other fixes and improvements&lt;/a&gt;, including the separation of the Dash oard 2.0 nodes into a new &amp;quot;Dashboard 2&amp;quot; category in the Node-RED palette.&lt;/p&gt;
&lt;p&gt;As always, thanks for reading and your interested in Dashboard 2.0. If you have any feature requests, bugs/complaints or general feedback, please do reach out, and raise issues on our relevant &lt;a href=&quot;https://github.com/FlowFuse/node-red-dashboard&quot;&gt;GitHub repository&lt;/a&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/orgs/FlowFuse/projects/15/views/1&quot;&gt;Dashboard 2.0 Activity Tracker&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/orgs/FlowFuse/projects/15/views/4&quot;&gt;Dashboard 2.0 Planning Board&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2023/09/custom-node-support/</id>
        <title>Custom Node Support</title>
        <summary></summary>
        <updated>2023-09-28T12:01:01Z</updated>
        <link href="https://flowfuse.com/changelog/2023/09/custom-node-support/"/>
        <author><name></name></author>
        <content type="html">&lt;p&gt;An often requested feature is support for custom nodes. Although Node-RED instances today connect automatically to the official Node-RED catalogue, which boasts over 4,400 custom nodes, we understand that specific use cases may require access to additional or different NPM registries and catalogues.&lt;/p&gt;
&lt;p&gt;Starting today, you can extend your Node-RED environment by adding custom Node Catalogues. We have introduced the capability to modify the .npmrc file, allowing you to install modules that are not hosted in the official registry.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img alt=&quot;Settings Custom Node Support&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/custom-node-support.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2023/09/devops-actions/</id>
        <title>DevOps Pipeline with action selection</title>
        <summary></summary>
        <updated>2023-09-28T12:00:03Z</updated>
        <link href="https://flowfuse.com/changelog/2023/09/devops-actions/"/>
        <author><name></name></author>
        <content type="html">&lt;p&gt;Starting today, you can configure a deployment stage to create a new snapshot, always copy the latest snapshot, or prompt you for an action. This provides a more flexible approach to managing snapshots, enabling you to directly push created snapshots through the pipeline rather than being limited to the current image on Node-RED instances.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img alt=&quot;Action selection DevOps pipelines&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/select-action.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2023/09/snapshots-devices/</id>
        <title>Usability improvements to Device Management</title>
        <summary></summary>
        <updated>2023-09-28T12:00:02Z</updated>
        <link href="https://flowfuse.com/changelog/2023/09/snapshots-devices/"/>
        <author><name></name></author>
        <content type="html">&lt;p&gt;Four weeks ago, we began working on several &lt;a href=&quot;https://flowfuse.com/blog/2023/08/flowfuse-1-11-release/#usability-improvements-to-device-management-%232294&quot;&gt;usability improvements to our Device Management&lt;/a&gt;. This included the ability to associate devices at the application level, allowing for easier editing of Node-RED instances on edge devices.&lt;/p&gt;
&lt;p&gt;Starting today, it will also be possible to create and manage snapshots for those standalone devices.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img alt=&quot;Menu Snapshots for Devices&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/snapshots-devices.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2023/09/introduction-enterprise-tier/</id>
        <title>Introducing the Enterprise Tier</title>
        <summary></summary>
        <updated>2023-09-28T12:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2023/09/introduction-enterprise-tier/"/>
        <author><name></name></author>
        <content type="html">&lt;p&gt;We are excited to officially announce the implementation and introduction of our new Enterprise Tier. Starting today, all FlowFuse Cloud customers have the option to upgrade their tier directly through &lt;strong&gt;Team Settings&lt;/strong&gt; -&amp;gt; &lt;strong&gt;Danger&lt;/strong&gt; -&amp;gt; &lt;strong&gt;Change Team Type&lt;/strong&gt;. For those who self-host FlowFuse, the differentiation between the Enterprise and Teams Tiers is now available as well, via license type.&lt;/p&gt;
&lt;p&gt;Comprehensive details about the features included in each tier can be found on our &lt;a href=&quot;https://flowfuse.com/pricing/&quot;&gt;pricing page&lt;/a&gt;.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/changelog/2023/09/pipeline-api/</id>
        <title>API Endpoint for DevOps Pipeline</title>
        <summary></summary>
        <updated>2023-09-28T12:00:00Z</updated>
        <link href="https://flowfuse.com/changelog/2023/09/pipeline-api/"/>
        <author><name></name></author>
        <content type="html">&lt;p&gt;The execution of DevOps Pipelines is now an official API endpoint. Therefore, automation and integration, for example via Node-RED, are now possible. For more details, see our &lt;a href=&quot;https://flowfuse.com/docs/api/&quot;&gt;API Documentation&lt;/a&gt;.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>https://flowfuse.com/blog/2023/09/dashboard-notebook-layout/</id>
        <title>Dynamic Markdown, Tables &amp; Notebooks with Dashboard 2.0</title>
        <summary>A dive into the new features available in 0.4.0 - The &quot;Notebook&quot; Layout and new dynamic Markdown &amp; Table widgets.</summary>
        <updated>2023-09-06T00:00:00Z</updated>
        <link href="https://flowfuse.com/blog/2023/09/dashboard-notebook-layout/"/>
        <author><name></name></author>
        <content type="html">&lt;p&gt;Whilst we&#39;re still busy backporting through the existing Dashboard 1.0 features, we did want to highlight some new features we&#39;ve built in Dashboard 2.0 released this week.&lt;/p&gt;
&lt;p&gt;In our v0.4.0 release, we&#39;ve introduced a new &amp;quot;Notebook&amp;quot; layout, alongside a new Table widget.&lt;/p&gt;
&lt;p&gt;The Notebook layout is designed to allow users to create Dashboards structured like a Notebook (most often seen with the likes of &lt;a href=&quot;https://jupyter.org/&quot;&gt;Jupyter Notebooks&lt;/a&gt; or &lt;a href=&quot;https://observablehq.com/&quot;&gt;ObservableHQ&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Here we will deepdive into the Notebook layout, and show how, alongside our new &lt;strong&gt;Markdown Node&lt;/strong&gt; (&lt;a href=&quot;https://dashboard.flowfuse.com/nodes/widgets/ui-markdown.html&quot;&gt;docs&lt;/a&gt;), &lt;strong&gt;Table Node&lt;/strong&gt; (&lt;a href=&quot;https://dashboard.flowfuse.com/nodes/widgets/ui-table.html&quot;&gt;docs&lt;/a&gt;) and others, it&#39;s becoming easier to create dynamic and interactive Dashboards.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Note: If you&#39;re not familiar with Markdown, it&#39;s a simple markup language that allows you to format text. You can learn more about it &lt;a href=&quot;https://www.markdownguide.org/cheat-sheet/&quot;&gt;here&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&quot;dashboard-hierarchy&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/blog/2023/09/dashboard-notebook-layout/#dashboard-hierarchy&quot;&gt;Dashboard Hierarchy&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;As a quick introductory note ahead of our below guide, each Dashboard is structured accordingly:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Widget&lt;/strong&gt;: An individual functional block, e.g. button, chart, slider&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Group&lt;/strong&gt;: A collection of widgets that render together&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Page&lt;/strong&gt;: A single page/tab in your Dashboard. Each page can have it&#39;s own Layout, in this case we&#39;ll use &amp;quot;Notebook&amp;quot;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;UI&lt;/strong&gt;: Contains a collection of pages, deployed from Node-RED, provides the basic side navigation to switch between Pages.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;building-a-notebook&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/blog/2023/09/dashboard-notebook-layout/#building-a-notebook&quot;&gt;Building a Notebook&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img alt=&quot;Example Notebook created in Dashboard&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/db-notebook-example.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;&lt;/p&gt;
&lt;p&gt;To get started, drop your first widget (in this case, we&#39;ll add a &lt;code&gt;ui-markdown&lt;/code&gt;) onto the Node-RED canvas. This in turn will prompt us to create our first Group/Page/Dashboard which we can name and configure accordingly.&lt;/p&gt;
&lt;p&gt;Let&#39;s add the following Markdown to our first widget:&lt;/p&gt;

&lt;div style=&quot;position: relative&quot; id=&quot;code-container-55&quot;&gt;
  &lt;pre class=&quot;language-md&quot;&gt;&lt;code id=&quot;code-55&quot; class=&quot;language-md&quot;&gt;&lt;span class=&quot;token title important&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;#&lt;/span&gt; Markdown Content&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Here we can render dynamic Markdown content that is&lt;br /&gt;easily &lt;span class=&quot;token italic&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;_&lt;/span&gt;&lt;span class=&quot;token content&quot;&gt;styled&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;_&lt;/span&gt;&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;We can inject &lt;span class=&quot;token code-snippet code keyword&quot;&gt;`msg.payload`&lt;/span&gt;. For example, here is a&lt;br /&gt;timestamp updating every second: {{ msg.payload }}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;

  &lt;button class=&quot;code-copy mdi mdi-content-copy&quot; data-clipboard-target=&quot;#code-55&quot; style=&quot;position: absolute; top: 7.5px; right: 6px; padding-top: 3px; cursor: pointer; outline: none; opacity: 0.8;&quot; title=&quot;Copy&quot;&gt;
    &lt;span style=&quot;display:inline-block;background:url() no-repeat center center / contain;background: initial&quot; class=&quot;&quot;&gt;&lt;/span&gt;
  &lt;/button&gt;
&lt;/div&gt;
&lt;p&gt;The joy of &lt;code&gt;ui-markdown&lt;/code&gt; in Dashboard 2.0 is &lt;em&gt;dynamic&lt;/em&gt; content, i.e. content that can be updated by passing messages to the &lt;code&gt;ui-markdown&lt;/code&gt; node. We can wire an &lt;code&gt;inject&lt;/code&gt; node, set it up to repeat every second, and connect it to &lt;code&gt;ui-markdown&lt;/code&gt;. Now, our Markdown content will automatically update show this value.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img alt=&quot;Screenshot to show how an inject node can drive content of a ui-markdown node&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/db-notebook-inject.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;&lt;/p&gt;
&lt;p&gt;Resulting in:&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img alt=&quot;Dynamic markdown with an updating timestamp every 1 second&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/md-timestamp.gif&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;&lt;/p&gt;
&lt;h2 id=&quot;adding-more-widgets&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/blog/2023/09/dashboard-notebook-layout/#adding-more-widgets&quot;&gt;Adding More Widgets&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Because the Notebook is &lt;em&gt;just&lt;/em&gt; a layout, we can still wire together any of the available widgets and existing nodes and display them accordingly.&lt;/p&gt;
&lt;p&gt;Let&#39;s wire a &lt;code&gt;ui-button&lt;/code&gt;, HTTP Request, and &lt;code&gt;ui-table&lt;/code&gt; node. When we click the button, it will perform the HTTP request, and then render the response in the table.&lt;/p&gt;
&lt;p&gt;For this, we&#39;re going to use the Random Jokes API, and in particular, a call to &lt;code&gt;https://official-joke-api.appspot.com/jokes/ten&lt;/code&gt; which will return 10 random jokes.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img alt=&quot;Screenshot showing a simple Button &gt; HTTP Request &gt; Table flow&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/generate-jokes-flow.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;&lt;/p&gt;
&lt;p&gt;We can also re-order the widgets on the page using the Dashboard 2.0 sidebar (as you could in Dashboard 1.0).&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img alt=&quot;Screenshot to show how an inject node can drive content of a ui-markdown node&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/db-notebook-order.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;&lt;/p&gt;
&lt;p&gt;The above effort results in the following output in our Notebook:&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;source type=&quot;image/jpeg&quot; srcset=&quot;&quot; sizes=&quot;100vw, 100vw&quot; /&gt;&lt;img alt=&quot;Screenshot to show how an inject node can drive content of a ui-markdown node&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://flowfuse.com/img/db-notebook-jokes-table.png&quot; width=&quot;undefined&quot; height=&quot;undefined&quot; /&gt;&lt;/picture&gt;&lt;/p&gt;
&lt;h2 id=&quot;what-else-is-new-in-0.4.0%3F&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;https://flowfuse.com/blog/2023/09/dashboard-notebook-layout/#what-else-is-new-in-0.4.0%3F&quot;&gt;What else is new in 0.4.0?&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The above demonstrates just a few of the new features in the 0.4.0 Release, but we&#39;ve also added &lt;a href=&quot;https://github.com/FlowFuse/node-red-dashboard/releases/tag/v0.4.0&quot;&gt;other fixes and improvements&lt;/a&gt;. In particular, I want to call out Steve&#39;s great work on implementing custom class injection, the first of our new &lt;a href=&quot;https://dashboard.flowfuse.com/user/dynamic-properties.html&quot;&gt;&amp;quot;Dynamic Properties&amp;quot;&lt;/a&gt;, of which there will be more (e.g. visibility, disabled, etc.) to come.&lt;/p&gt;
&lt;p&gt;As always, thanks for reading and your interested in Dashboard 2.0. If you have any feature requests, bugs/complaints or general feedback, please do reach out, and raise issues on our relevant &lt;a href=&quot;https://github.com/FlowFuse/node-red-dashboard&quot;&gt;GitHub repository&lt;/a&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/orgs/FlowFuse/projects/15/views/1&quot;&gt;Dashboard 2.0 Activity Tracker&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/orgs/FlowFuse/projects/15/views/4&quot;&gt;Dashboard 2.0 Planning Board&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content>
    </entry>
</feed>