[{"data":1,"prerenderedAt":18257},["ShallowReactive",2],{"blog-\u002Fblog\u002Freleases":3,"blog-all-for-related":4,"blog-all-releases":5},null,[],[6,276,471,715,998,1250,1468,1608,1771,1942,2137,2392,2626,2838,3069,3248,3412,3629,3872,4110,4361,4685,4888,5066,5233,5416,5595,5904,6101,6311,7936,8467,8645,9282,9438,10942,11172,11867,12043,12137,12321,12641,12846,13065,13285,13452,13602,13876,14135,14443,14638,14890,15136,15369,15453,15707,15843,16065,16354,16608,16854,17132,17350,17488,17651,17840,17994,18064,18165],{"id":7,"title":8,"authors":9,"body":11,"cta":250,"date":254,"description":255,"extension":256,"image":257,"lastUpdated":3,"meta":258,"navigation":263,"path":264,"seo":265,"sitemap":266,"stem":267,"subtitle":268,"tags":269,"tldr":273,"video":274,"__hash__":275},"blog\u002Fblog\u002F2026\u002F07\u002Fflowfuse-release-2-32.md","FlowFuse 2.32: Certified Redis, Git Pipelines for Any Server, Insights on Remote Instances, and Dark Mode",[10],"jamie-strusz",{"type":12,"value":13,"toc":226},"minimark",[14,18,23,26,31,39,50,54,57,60,64,68,71,80,84,87,91,94,100,104,107,111,119,125,131,135,138,142,145,149,177,191,199,203,207,210,214],[15,16,17],"p",{},"This release meets your stack where it already lives. Redis becomes a certified node. DevOps pipelines connect to any HTTPS Git server, not just GitHub. And the FlowFuse Expert can now read the live data on your remote instances and answer questions about it in plain language. Dark mode lands too, so the platform stops glaring at you through long sessions.",[19,20,22],"h2",{"id":21},"certified-redis-integration","Certified Redis Integration",[15,24,25],{},"Community nodes are code you have to vet, secure, and maintain yourself. Certified Nodes take that on with a defined quality, security, and support process.",[27,28,30],"h3",{"id":29},"redis-joins-the-catalog","Redis Joins the Catalog",[15,32,33,34,38],{},"2.32 adds ",[35,36,37],"strong",{},"Redis"," as a certified node, so you can integrate with Redis using a node FlowFuse tests, secures, and supports, backed by the same trust contract as every certified node: vetted quality, a CVE response commitment, and a real path to support.",[15,40,41,42,49],{},"Certified Nodes belong to specific FlowFuse packages. Browse the full catalog on the ",[43,44,48],"a",{"href":45,"rel":46},"https:\u002F\u002Fflowfuse.com\u002Fintegrations\u002F?certified=1",[47],"nofollow","integrations page",", and contact us to get them enabled for your team or instance.",[19,51,53],{"id":52},"pipelines-connect-to-any-git-server","Pipelines Connect to Any Git Server",[15,55,56],{},"DevOps Pipeline Git stages only worked with GitHub or Azure DevOps, leaving self-hosted GitLab or on-prem Bitbucket out.",[15,58,59],{},"Git Repository stages now connect to any HTTPS Git server: GitLab, Bitbucket, Gitea, or a self-hosted instance. Point a pipeline at the repository and it pushes and pulls snapshots as before. For a server behind a private CA, paste in its certificate, no infrastructure changes needed. This means your team can integrate seamlessly with your existing Git workflow and its compliance setup.",[19,61,63],{"id":62},"do-more-with-the-flowfuse-expert","Do More With the FlowFuse Expert",[27,65,67],{"id":66},"ask-about-your-machine-or-operational-data-in-plain-language","Ask about your machine or operational data in Plain Language",[15,69,70],{},"Your live machine data sits on your remote instances at the edge. Insights mode now reaches it directly. Point the FlowFuse Expert in \"insights\" mode, or any AI agent, at a remote instance and ask in plain language: \"What was the average cycle time on line 3 today?\" You get the answer from live data, with no dashboard to build and no query to write. The Expert can even help you build the MCP servers that feed it, right in Node-RED.",[15,72,73],{},[74,75],"img",{"alt":76,"dataZoomable":77,"src":78,"style":79},"The FlowFuse Expert answering a plain-language question about live machine data","","\u002Fblog\u002F2026\u002F07\u002Fimages\u002Finsights-mode.png","border: 2px solid #E5E7EB;",[27,81,83],{"id":82},"from-advice-to-action","From Advice to Action",[15,85,86],{},"We are enabling the FlowFuse Expert to do things inside the platform, starting with setting up an instance and getting information about your fleet of instances for you. It is the first step toward building any application from beginning to end: you start with the Expert in the platform, it understands the context, provisions the instance, and leads you straight into the Node-RED editor to build it for you. Groundwork, with more to follow.",[27,88,90],{"id":89},"loose-for-prototypes-strict-in-production","Loose for Prototypes, Strict in Production",[15,92,93],{},"In support mode, you decide how freely the Expert acts, and you can fine-tune its permissions separately for building flows in Node-RED and for taking actions in the FlowFuse platform. Let it run without interruption while you stand up a first proof of concept, so it builds quickly. Then tighten those same tools for production flows, where you want to see and approve each change before it lands. When a tool is set to ask, an approval card shows exactly what the Expert intends to do and waits for your call.",[15,95,96],{},[74,97],{"alt":98,"dataZoomable":77,"src":99,"style":79},"The FlowFuse Expert asking to run a tool, with Allow and Deny controls in the chat","\u002Fblog\u002F2026\u002F07\u002Fimages\u002Fhitl-approvals.png",[27,101,103],{"id":102},"plan-together-build-what-you-expect","Plan Together, Build What You Expect",[15,105,106],{},"The Expert now understands your intent and plans with you. It asks clarifying questions before it starts implementing, so you get what you need built faster and closer to what you pictured. This is a solid step, and we'll keep improving the Expert from here.",[19,108,110],{"id":109},"dark-mode","Dark Mode",[15,112,113,114,118],{},"FlowFuse has only ever had a light interface, and long sessions in a bright UI are tiring on the eyes. FlowFuse now has a dark mode. Turn it on and the platform switches to a dark theme, easier on the eyes and a better match for a dark desktop. Node-RED auto-switches along with you, which works especially well in combination with the new ",[43,115,117],{"href":116},"\u002Fblog\u002F2026\u002F06\u002Fnode-red-5-on-flowfuse\u002F","Node-RED 5.0","!",[15,120,121],{},[74,122],{"alt":123,"dataZoomable":77,"src":124,"style":79},"FlowFuse in dark mode","\u002Fblog\u002F2026\u002F07\u002Fimages\u002Fdark-mode.png",[15,126,127],{},[128,129,130],"em",{},"Note: the Node-RED editor only auto-switches with your FlowFuse theme on the latest Node-RED, 5.0.1 and newer, so you set it once.",[19,132,134],{"id":133},"better-security-with-device-agent-4","Better Security with Device Agent 4",[15,136,137],{},"The Device Agent reaches a new major version. Its container now runs as an unprivileged user instead of root and on Node.js 22, a more secure, modern base that unlocks Insights, token auth, and Node-RED 5 on your devices.",[27,139,141],{"id":140},"what-this-means-for-you","What This Means for You",[15,143,144],{},"Device Agent 4 is a breaking upgrade. When you move to it, make your bind-mounted state directories owned by the agent's user, then upgrade. The platform flags any device that needs v4 to use this release's features. Check the upgrade notes before upgrading.",[19,146,148],{"id":147},"what-else-is-new","What else is new?",[150,151,152,159,165,171],"ul",{},[153,154,155,158],"li",{},[35,156,157],{},"Real-time status over MQTT",": instance, device, and team status now stream over MQTT instead of HTTP polling, so changes show faster",[153,160,161,164],{},[35,162,163],{},"Faster instance lists",": pagination and an N+1 fix on the Hosted and Remote Instances pages, plus sorting by status",[153,166,167,170],{},[35,168,169],{},"Namespace-scoped RBAC",": role-based access scoped to a namespace for shared-cluster self-hosted deployments",[153,172,173,176],{},[35,174,175],{},"Platform polish",": descriptive page titles, a login-page cookie-consent notice, and a fix for instances reporting suspended while still running",[15,178,179,180,184,185,190],{},"For detailed breakdowns of each feature with additional visuals, visit our ",[43,181,183],{"href":182},"\u002Fchangelog\u002F","changelog",". For the complete list of everything included in FlowFuse 2.32, check out the ",[43,186,189],{"href":187,"rel":188},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Freleases",[47],"release notes",".",[15,192,193,194,198],{},"If something in this release improves your workflow, or if there is still friction we can remove, please ",[43,195,197],{"href":196},"mailto:contact@flowfuse.com?subject=Feedback%20on%202.32","share feedback or report issues regarding this release"," to us.",[19,200,202],{"id":201},"try-flowfuse","Try FlowFuse",[27,204,206],{"id":205},"flowfuse-cloud","FlowFuse Cloud",[15,208,209],{},"The fastest way to get started is with FlowFuse Cloud.\n[Get started for free]({% include \"sign-up-url.njk\" %}) and have your Node-RED instances running in minutes.",[27,211,213],{"id":212},"self-hosted","Self-Hosted",[15,215,216,217,221,222,190],{},"Run FlowFuse locally using ",[43,218,220],{"href":219},"\u002Fdocs\u002Finstall\u002Fdocker\u002F","Docker"," or ",[43,223,225],{"href":224},"\u002Fdocs\u002Finstall\u002Fkubernetes\u002F","Kubernetes",{"title":77,"searchDepth":227,"depth":227,"links":228},4,[229,234,235,241,242,245,246],{"id":21,"depth":230,"text":22,"children":231},2,[232],{"id":29,"depth":233,"text":30},3,{"id":52,"depth":230,"text":53},{"id":62,"depth":230,"text":63,"children":236},[237,238,239,240],{"id":66,"depth":233,"text":67},{"id":82,"depth":233,"text":83},{"id":89,"depth":233,"text":90},{"id":102,"depth":233,"text":103},{"id":109,"depth":230,"text":110},{"id":133,"depth":230,"text":134,"children":243},[244],{"id":140,"depth":233,"text":141},{"id":147,"depth":230,"text":148},{"id":201,"depth":230,"text":202,"children":247},[248,249],{"id":205,"depth":233,"text":206},{"id":212,"depth":233,"text":213},{"type":251,"title":252,"description":253},"contact","Review FlowFuse for your setup","Get in touch and we'll walk through how FlowFuse empowers your production environment, including the Certified Nodes packages that cover the systems you connect to.","2026-07-02","FlowFuse 2.32 certifies the Redis node, extends DevOps Git pipelines to any HTTPS server, and adds Insights mode on remote instances, plus dark mode, Device Agent 4, and a Plan Mode for the Expert.","md","\u002Fblog\u002F2026\u002F07\u002Fimages\u002Fflowfuse-release-2-32.jpg",{"excerpt":259},{"type":12,"value":260},[261],[15,262,17],{},true,"\u002Fblog\u002F2026\u002F07\u002Fflowfuse-release-2-32",{"title":8,"description":255},{"loc":264},"blog\u002F2026\u002F07\u002Fflowfuse-release-2-32","Connect DevOps pipelines to any Git server, ask your live edge data questions in plain language, and give your eyes a break on long sessions.",[270,271,272],"flowfuse","news","releases","2.32 certifies the Redis node and extends DevOps Git pipelines to any HTTPS server: GitLab, Bitbucket, Gitea, or self-hosted. Insights mode now reaches your remote instances, so the FlowFuse Expert answers plain-language questions about live edge data. Plus dark mode, Device Agent 4, and a Plan Mode for the Expert.","_OmKB4eeeUY","bfb8xIpeLfI3MO3tbiZxb_1TT_zYtWXRXd6pO7OGSSk",{"id":277,"title":278,"authors":279,"body":281,"cta":440,"date":443,"description":444,"extension":256,"image":445,"lastUpdated":3,"meta":446,"navigation":263,"path":462,"seo":463,"sitemap":464,"stem":465,"subtitle":466,"tags":467,"tldr":468,"video":469,"__hash__":470},"blog\u002Fblog\u002F2026\u002F06\u002Fflowfuse-release-2-31.md","FlowFuse 2.31: Agentic Development Now in Open Beta, FlowFuse Expert Builds Your Industrial App on Edge Devices",[280],"dimitrie-hoekstra",{"type":12,"value":282,"toc":434},[283,286,290,295,303,306,310,313,361,369,371,400,404,407,413,416,420,428],[15,284,285],{},"FlowFuse 2.31 lets FlowFuse Expert build your industrial application for you, now in open beta. Describe what you need, and Expert assembles it on your workspace.",[19,287,289],{"id":288},"let-flowfuse-expert-build-your-industrial-application-expert-agentic-ga","Let FlowFuse Expert build your industrial application {#expert-agentic-ga}",[15,291,292],{},[128,293,294],{},"FlowFuse Expert is our integrated AI assistant, in the website, the platform, and the immersive Node-RED editor.",[15,296,297,298,302],{},"Describe what you want to build, an OEE dashboard, an MES handover screen, a UNS topic mapping, and FlowFuse Expert assembles the flow on your workspace for you. With 2.31 this moves out of soft launch into an open beta: switched on for your team on FlowFuse Cloud, no request needed. On Self-Hosted Enterprise, ",[43,299,301],{"href":300},"\u002Fcontact-us\u002F","contact us"," to get it set up; self-hosted setup is not automatic, it requires a provisioning token and configuring the bridge.",[15,304,305],{},"It now works on Remote Instances as well as Hosted Instances, so you get the same build-it-for-me experience across both. Agentic flow building requires the nr-assistant plugin at v0.16.0 or newer, and FlowFuse Expert will let you know when an update is available in your instance's immersive editor.",[19,307,309],{"id":308},"certified-nodes-for-industrial-connectivity-and-ai-certified-nodes","Certified Nodes for industrial connectivity and AI {#certified-nodes}",[15,311,312],{},"FlowFuse now offers certified nodes: vetted, FlowFuse-supported nodes you can add to your instances. At launch you can get:",[150,314,315,321,327],{},[153,316,317,320],{},[35,318,319],{},"RTSP",": bring live video streams into your flows, like camera feeds for monitoring, inspection, or feeding frames into a vision or AI pipeline.",[153,322,323,326],{},[35,324,325],{},"OPC UA",": connect to your industrial equipment, the standard for talking to PLCs, SCADA systems, and machines on the plant floor.",[153,328,329,332,333,347,350,351,355,356,360],{},[35,330,331],{},"AI nodes",": call leading AI models straight from your flows, with more providers following soon:",[150,334,335,338,341,344],{},[153,336,337],{},"Anthropic",[153,339,340],{},"OpenAI",[153,342,343],{},"Gemini",[153,345,346],{},"Ollama, for models you run yourself",[348,349],"br",{},"These first LLM nodes handle single-shot, text-in\u002Ftext-out calls; see the ",[43,352,354],{"href":353},"\u002Fnode-red\u002Fflowfuse\u002Fai\u002Fllm-nodes\u002F","LLM nodes documentation"," for details. Multimodal input, conversation history, and tool calling are planned for follow-up iterations. They join the FlowFuse AI Nodes package we ",[43,357,359],{"href":358},"\u002Fchangelog\u002F2025\u002F10\u002Fonnx-nodes\u002F","shipped in 2.23",", which already includes the ONNX Inference, Image Classification, Object Detection, and Image Depth Estimation nodes for running vision and custom models on-device, with no external API calls.",[15,362,363,364,368],{},"Certified Nodes are available to FlowFuse Cloud customers as of this release, with Self-Hosted Enterprise support arriving in the next release (2.32). ",[43,365,367],{"href":366},"\u002Fcontact-us\u002F?subject=Certified%20Nodes","Get in touch with sales"," or your customer success manager, and we'll enable the ones your team needs.",[19,370,148],{"id":147},[150,372,373,384,390],{},[153,374,375,378,379,383],{},[35,376,377],{},"Control over where AI runs:"," FlowFuse Cloud enables AI by default and you can toggle it per team. For Self-Hosted Enterprise, it is opt-in configurable for the platform via the ",[380,381,382],"code",{},"ai.enabled"," configuration option. Once enabled, the same per team control is possible.",[153,385,386,389],{},[35,387,388],{},"Custom CA certificates"," are now documented for environments that need them.",[153,391,392,395,396,399],{},[35,393,394],{},"Smaller fixes",": secure (",[380,397,398],{},"wss:\u002F\u002F",") connections to your MQTT broker now work from the editor, and custom packages with uppercase names no longer break pipeline deploys.",[19,401,403],{"id":402},"a-quick-note-from-our-team-off-site-in-greece","A quick note from our team off-site in Greece",[15,405,406],{},"We spent part of this cycle together in Greece for a full-company off-site, and it shaped what you see (and do not yet see) in 2.31.",[15,408,409],{},[74,410],{"alt":411,"src":412},"The FlowFuse team in Greece","\u002Fblog\u002F2026\u002F06\u002Fimages\u002Foffsite-team.jpg",[15,414,415],{},"Getting everyone in one place let us reset our roadmaps and how we work, the kind of introspection that is hard to do day-to-day and fully remote. It is also why 2.31 is lighter on big features: a lot of this month went into foundational groundwork for what is coming next. We will share more soon.",[417,418],"hr",{"style":419},"margin: 3rem 0; border: 0; border-top: 1px solid #D1D5DB;",[15,421,179,422,424,425,190],{},[43,423,183],{"href":182},". For the complete list of everything included in FlowFuse 2.31, check out the ",[43,426,189],{"href":187,"rel":427},[47],[15,429,193,430,433],{},[43,431,197],{"href":432},"mailto:contact@flowfuse.com?subject=Feedback%20on%202.31"," with us.",{"title":77,"searchDepth":227,"depth":227,"links":435},[436,437,438,439],{"id":288,"depth":230,"text":289},{"id":308,"depth":230,"text":309},{"id":147,"depth":230,"text":148},{"id":402,"depth":230,"text":403},{"type":251,"title":441,"description":442},"Get FlowFuse Expert and Certified Nodes enabled for your team","Agentic development is in open beta and Certified Nodes are available on request. Get in touch and we'll set your team up.","2026-06-04","In FlowFuse 2.31, FlowFuse Expert builds your industrial application for you, now an open beta on FlowFuse Cloud and Self-Hosted Enterprise, and working on Remote Instances as well as Hosted ones. Plus per-team and platform-level AI controls and real-time platform updates.","\u002Fblog\u002F2026\u002F06\u002Fimages\u002Fflowfuse-release-2-31.jpg",{"release":447,"features":448,"excerpt":458},"2.31",[449,452,455],{"id":450,"heading":451},"ff-expert-application-building","Let FlowFuse Expert build your industrial application",{"id":453,"heading":454},"certified-nodes","Certified Nodes for industrial connectivity and AI",{"heading":148,"tiers":456},{"cloud":457,"selfHosted":457},"all",{"type":12,"value":459},[460],[15,461,285],{},"\u002Fblog\u002F2026\u002F06\u002Fflowfuse-release-2-31",{"title":278,"description":444},{"loc":462},"blog\u002F2026\u002F06\u002Fflowfuse-release-2-31","FlowFuse Expert can now build your industrial application on both Hosted and Remote Instances, on FlowFuse Cloud and now Self-Hosted Enterprise. Plus per-team and platform-level AI controls and real-time platform updates.",[270,271,272],"FlowFuse 2.31 brings agentic application building to open beta: describe what you want and FlowFuse Expert builds it on your Node-RED workspace. Plus new Certified Nodes (RTSP, OPC UA, AI) and per-team and platform-level control over AI.","r6f3w6KKI-E","L0YlMTQqPkMs8NPk2BRr1zHNW6-4355t9OOtvYOUDFQ",{"id":472,"title":473,"authors":474,"body":475,"cta":690,"date":693,"description":694,"extension":256,"image":695,"lastUpdated":443,"meta":696,"navigation":263,"path":706,"seo":707,"sitemap":708,"stem":709,"subtitle":710,"tags":711,"tldr":712,"video":713,"__hash__":714},"blog\u002Fblog\u002F2026\u002F05\u002Fflowfuse-release-2-30.md","FlowFuse 2.30: Expert Builds Your Industrial Application",[280],{"type":12,"value":476,"toc":679},[477,480,484,489,492,495,498,512,518,522,526,533,540,546,559,563,574,576,580,583,587,590,594,658,664,666,674],[15,478,479],{},"FlowFuse 2.30 lets FlowFuse Expert build industrial applications for you from a description. Tell Expert what you need, and it assembles it on your workspace.",[19,481,483],{"id":482},"flowfuse-expert-builds-your-industrial-application-expert-application-building","FlowFuse Expert Builds Your Industrial Application {#expert-application-building}",[15,485,486],{},[128,487,488],{},"FlowFuse Expert is our integrated AI assistant across FlowFuse's website, platform, and in the immersive Node-RED editor.",[15,490,491],{},"Until now, Expert could surface information, suggest changes, and act on links you clicked. Translating those suggestions into a working OEE dashboard, MES handover screen, or Modbus-to-UNS bridge still meant placing every node and wire by hand.",[15,493,494],{},"Now you can describe what you want to build and the FlowFuse Expert builds it for you directly on the Node-RED workspace saving you time. Real-time tool-call status keeps you in the loop while it works, and you keep iterating in chat to refine what it produced so it maps correctly to your real life scenario.",[15,496,497],{},"Start your agentic development with for example:",[150,499,500,503,506,509],{},[153,501,502],{},"\"An OEE dashboard for line 3 with downtime reasons and a daily target\"",[153,504,505],{},"\"Get temperature from Modbus address 1001 and publish that to my UNS broker on factory\u002Fline3\u002Ftemperature\"",[153,507,508],{},"\"A shift handover screen showing outstanding alarms and recent operator notes\"",[153,510,511],{},"\"An asset utilization dashboard for the packaging cell, refreshed every minute\"",[15,513,514],{},[74,515],{"alt":516,"dataZoomable":77,"src":517,"style":79},"FlowFuse Expert assembling an application on the Node-RED workspace from a chat prompt","\u002Fblog\u002F2026\u002F05\u002Fsrc\u002Fblog\u002F2026\u002F05\u002Fimages\u002Fexpert-application-building.gif",[519,520,521],"figcaption",{},"FlowFuse Expert assembling an application on the Node-RED workspace from a chat prompt.",[27,523,525],{"id":524},"availability","Availability",[15,527,528,529,532],{},"Agentic Node-RED development is being soft launched to create a window of opportunity to fine tune the experience in order to scale right after. Right now it is available on ",[35,530,531],{},"FlowFuse Cloud Team and Enterprise on request",". Self-hosted enablement follows shortly.",[15,534,535,539],{},[43,536,538],{"href":537},"\u002Fcontact-us\u002F?subject=FlowFuse%20Expert%20Application%20Building","Contact us"," to let us enable Agentic Node-RED development for your FlowFuse Cloud team. Please make sure to provide the email address associated with your FlowFuse Cloud team.",[15,541,542,545],{},[35,543,544],{},"Coming next:"," self-hosted enablement, plus we are exploring \"bring your own key\" so teams can point Expert at their own AI provider.",[547,548,549],"blockquote",{},[15,550,551,554,555,190],{},[35,552,553],{},"Update (FlowFuse 2.31):"," FlowFuse Expert is now in open beta, available on FlowFuse Cloud with no request needed, and on Self-Hosted Enterprise. It, now, works on both Hosted and Remote Instances. ",[43,556,558],{"href":557},"\u002Fblog\u002F2026\u002F06\u002Fflowfuse-release-2-31\u002F","Read the 2.31 release post",[27,560,562],{"id":561},"in-practice","In practice",[150,564,565,568,571],{},[153,566,567],{},"You go from a description to a working OEE dashboard, Modbus integration, or handover screen without needing to place each node by hand",[153,569,570],{},"You see Expert's progress in real time as it builds, rather than waiting on a wall of suggestions to apply manually",[153,572,573],{},"You iterate by talking, in addition to being able to control everything by hand through the workspace",[19,575,148],{"id":147},[27,577,579],{"id":578},"a-smoother-iteration-experience-with-expert","A smoother iteration experience with Expert",[15,581,582],{},"We refined the immersive editor experience so working with FlowFuse Expert feels more natural and with less context switching. Platform controls like snapshots, environment variables, and instance settings now stay accessible alongside the workspace instead of covering your workspace.",[27,584,586],{"id":585},"more-usable-snapshot-comparisons","More usable snapshot comparisons",[15,588,589],{},"We continued refining the snapshot comparison experience introduced in 2.29 to make reviewing changes faster and less noisy. Position-only changes can be hidden, computed values no longer appear as modified, and the diff viewer now makes it easier to identify the type of node affected at a glance.",[27,591,593],{"id":592},"smaller-updates-and-fixes","Smaller updates and fixes",[150,595,596,602,608,614,624,630,636,646,652],{},[153,597,598,601],{},[35,599,600],{},"Markdown code blocks in Expert preserve line breaks again",": a regression from the 2.29 highlighting work is fixed.",[153,603,604,607],{},[35,605,606],{},"Device editor auto-recovery",": when opening the editor on a remote instance fails on first load, the page now refreshes after three seconds rather than leaving you on a 502.",[153,609,610,613],{},[35,611,612],{},"Force all users to use SSO",": admins can now redirect every login to a single configured SSO provider, removing the email and password fallback for organisations that need to enforce SSO across the org (Enterprise self-hosted).",[153,615,616,619,620,623],{},[35,617,618],{},"Tooltip cleanup",": native ",[380,621,622],{},"title"," replaces the buggy custom directive. Less flicker, fewer stuck tooltips.",[153,625,626,629],{},[35,627,628],{},"Suspended team logging",": when a billing failure or trial expiry leaves an instance running, we now log why so support can act faster.",[153,631,632,635],{},[35,633,634],{},"Device palette settings",": saving palette changes on a device no longer accidentally sends sanitised security flags upstream.",[153,637,638,641,642,645],{},[35,639,640],{},"Git integration feature flag",": ",[380,643,644],{},"gitIntegration"," respects the all-feature override (Azure DevOps users on edge configurations).",[153,647,648,651],{},[35,649,650],{},"Expert chat request timeout",": front-end chat requests time out cleanly rather than hanging.",[153,653,654,657],{},[35,655,656],{},"Audit log stop reasons",": stop events show the underlying reason in the audit log detail rather than a generic message.",[15,659,660,663],{},[35,661,662],{},"Looking ahead:"," we're actively preparing support for Node-RED 5.0 in FlowFuse and currently expect it to become available as a stack option by the end of May. Until then, Node-RED 4.1 remains the default.",[417,665],{"style":419},[15,667,179,668,670,671,190],{},[43,669,183],{"href":182},". For the complete list of everything included in FlowFuse 2.30, check out the ",[43,672,189],{"href":187,"rel":673},[47],[15,675,193,676,198],{},[43,677,197],{"href":678},"mailto:contact@flowfuse.com?subject=Feedback%20on%202.30",{"title":77,"searchDepth":227,"depth":227,"links":680},[681,685],{"id":482,"depth":230,"text":483,"children":682},[683,684],{"id":524,"depth":233,"text":525},{"id":561,"depth":233,"text":562},{"id":147,"depth":230,"text":148,"children":686},[687,688,689],{"id":578,"depth":233,"text":579},{"id":585,"depth":233,"text":586},{"id":592,"depth":233,"text":593},{"type":251,"title":691,"description":692},"Get FlowFuse Expert Application Building enabled for your team","Application Building is in soft launch on FlowFuse Cloud Team and Enterprise. Request access to enable it for your team.","2026-05-07","FlowFuse 2.30 lets FlowFuse Expert build industrial applications from a description: OEE dashboards, MES handover screens, UNS topic mappings, and more.","\u002Fblog\u002F2026\u002F05\u002Fimages\u002Fflowfuse-release-2-30.png",{"release":697,"features":698},"2.30",[699,701,702,704],{"id":450,"heading":700},"FlowFuse Expert Builds Your Industrial Application",{"heading":148},{"id":703,"heading":579},"immersive-editor-drawer",{"id":705,"heading":586},"snapshot-compare","\u002Fblog\u002F2026\u002F05\u002Fflowfuse-release-2-30",{"title":473,"description":694},{"loc":706},"blog\u002F2026\u002F05\u002Fflowfuse-release-2-30","Describe the OEE dashboard, MES handover screen, or UNS topic mapping you need, and FlowFuse Expert builds it on your workspace. Plus a more immersive editor optimized for iterating with Expert.",[270,271,272],"FlowFuse 2.30 introduces agentic application building: describe the industrial flow you need and FlowFuse Expert assembles it on your Node-RED workspace. The release also delivers a more immersive editor layout, more usable snapshot comparisons, SSO enforcement for enterprises, and device editor auto-recovery.","DR9OTIVtBLU","aZCjVz8db8xnfoS8IqsbCNPqAxniKpVbZJKC3gVOEtc",{"id":716,"title":717,"authors":718,"body":719,"cta":965,"date":969,"description":970,"extension":256,"image":971,"lastUpdated":3,"meta":972,"navigation":263,"path":988,"seo":989,"sitemap":990,"stem":991,"subtitle":992,"tags":993,"tldr":995,"video":996,"__hash__":997},"blog\u002Fblog\u002F2026\u002F04\u002Fflowfuse-release-2-29.md","FlowFuse 2.29: FlowFuse Expert Comes to Self-Hosted Enterprise",[280],{"type":12,"value":720,"toc":948},[721,724,728,733,737,740,743,749,753,756,759,765,768,773,783,785,793,797,800,804,807,810,813,824,828,831,837,840,843,846,857,859,889,893,913,917,925,933,935,943],[15,722,723],{},"FlowFuse 2.29 gives teams more control over how flows move through their stack, makes it easier to understand what changed between versions, and brings FlowFuse Expert to self-hosted enterprise customers.",[19,725,727],{"id":726},"flowfuse-expert-available-to-more-teams-and-more-capable-expert","FlowFuse Expert, Available to More Teams and More Capable {#expert}",[15,729,730],{},[128,731,732],{},"FlowFuse Expert is our integrated AI assistant, one consistent surface across the FlowFuse website, platform, and immersive Node-RED editor for troubleshooting, building, and getting targeted help.",[27,734,736],{"id":735},"self-hosted-enterprise-expert-self-hosted","Self-Hosted Enterprise {#expert-self-hosted}",[15,738,739],{},"FlowFuse Expert was previously only available to cloud customers. Self-hosted enterprise teams had no equivalent surface for in-context troubleshooting and guidance.",[15,741,742],{},"Expert is now available for self-hosted enterprise FlowFuse instances. Your team gets the same contextual guidance and targeted help as cloud customers, with your operational data staying on your own infrastructure.",[15,744,745,748],{},[43,746,538],{"href":747},"\u002Fcontact-us\u002F?subject=FlowFuse%20Expert%20for%20Self-Hosted"," to enable Expert on your self-hosted environment.",[27,750,752],{"id":751},"take-action-directly-from-expert-responses-expert-actions","Take Action Directly from Expert Responses {#expert-actions}",[15,754,755],{},"Expert responses previously surfaced information and suggestions. Acting on them, importing a flow, selecting relevant nodes, opening a new tab, required switching out of the conversation and doing it manually.",[15,757,758],{},"Expert responses can now include clickable action links. Click one and Expert performs the action directly in your editor: opening a new flow tab, selecting the nodes it just mentioned, or importing a flow from the conversation.",[15,760,761],{},[74,762],{"alt":763,"dataZoomable":77,"src":764,"style":79},"Expert action links demo","\u002Fblog\u002F2026\u002F04\u002Fsrc\u002Fblog\u002F2026\u002F04\u002Fimages\u002Fexpert-action-links.gif",[519,766,767],{},"Expert responses can now act on your behalf, click a link and Expert opens a tab, selects nodes, or imports a flow directly in your editor.",[15,769,770,772],{},[35,771,544],{}," spinning up Node-RED instances directly from Expert, letting you go from idea to running flow without leaving the chat.",[774,775,778,779],"div",{"className":776},[777],"ff-related-changelogs","Changelog: ",[43,780,782],{"href":781},"https:\u002F\u002Fflowfuse.com\u002Fchangelog\u002F2026\u002F04\u002Fexpert-action-links\u002F","FlowFuse expert action links",[27,784,562],{"id":561},[150,786,787,790],{},[153,788,789],{},"You act on Expert suggestions in one click instead of manually applying them",[153,791,792],{},"You stay in the conversation while Expert works in your editor",[19,794,796],{"id":795},"more-visibility-and-control-across-your-deployment-workflow-deployment-workflow","More Visibility and Control Across Your Deployment Workflow {#deployment-workflow}",[15,798,799],{},"Managing flows across environments means tracking what changed, when, and by whom. When tooling gaps introduce friction here, or leave your version control workflow fragmented, they slow teams down at exactly the wrong moment.",[27,801,803],{"id":802},"azure-devops-git-integration-azure-devops","Azure DevOps Git Integration {#azure-devops}",[15,805,806],{},"FlowFuse's GitOps support previously required GitHub. Teams standardised on Azure DevOps had no native way to include Node-RED flows in their existing version control workflow.",[15,808,809],{},"FlowFuse 2.29 adds Azure DevOps as a supported Git provider. You can now push and pull snapshots directly from Azure DevOps repositories using Personal Access Tokens, configured under Team Settings → Integrations.",[27,811,562],{"id":812},"in-practice-1",[150,814,815,818,821],{},[153,816,817],{},"You connect Azure DevOps repos alongside or instead of GitHub",[153,819,820],{},"Your Node-RED flows participate in the same version control workflow as the rest of your stack",[153,822,823],{},"You authenticate with Azure Personal Access Tokens, with no secondary tooling required",[27,825,827],{"id":826},"see-exactly-what-changed-in-a-snapshot-snapshot-diff","See Exactly What Changed in a Snapshot {#snapshot-diff}",[15,829,830],{},"FlowFuse's snapshot comparison view showed flows side by side, but the visual alone doesn't always tell the whole story. You could see that a node was different, but not which specific property changed. When a function node's code changed, you couldn't identify which lines were different without manually diffing two code blocks outside of FlowFuse.",[15,832,833],{},[74,834],{"alt":835,"dataZoomable":77,"src":836,"style":79},"Snapshot diff demo","\u002Fblog\u002F2026\u002F04\u002Fsrc\u002Fblog\u002F2026\u002F04\u002Fimages\u002Fsnapshot-comparision-view-2.29.png",[519,838,839],{},"The compare dialog now shows exactly which properties changed and highlights line-level differences in function code, templates, and JSON, no manual diffing required.",[15,841,842],{},"The compare dialog now includes a property-level diff sidebar: structural property changes old to new at a glance, and git-style line diffs for function code, template HTML, and JSON. A navigation bar steps through every changed, added, or deleted node with arrow key shortcuts. The canvas highlights and scrolls to the current node as you navigate.",[27,844,562],{"id":845},"in-practice-2",[150,847,848,851,854],{},[153,849,850],{},"You review what changed between dev and production without leaving FlowFuse",[153,852,853],{},"You validate a teammate's update at the property level, not just the node level",[153,855,856],{},"You debug why a flow changed after a deploy with the same tooling you use to promote it",[19,858,148],{"id":147},[150,860,861,867,873,883],{},[153,862,863,866],{},[35,864,865],{},"Expert opens by default",": FlowFuse Expert now opens automatically when you visit the editor for the first time. If you close it, that preference is remembered across browser sessions.",[153,868,869,872],{},[35,870,871],{},"Embedded editor tab titles",": Hosted and Remote Instance editor tabs now show the actual Node-RED flow name rather than a generic title.",[153,874,875,878,879,882],{},[35,876,877],{},"Instance URL env var",": Hosted Node-RED instances now expose an ",[380,880,881],{},"FF_INSTANCE_URL"," environment variable containing the instance's URL (default or custom hostname). Useful for flows that need to know their own address, like webhook callbacks or OAuth redirects.",[153,884,885,888],{},[35,886,887],{},"Blueprint markdown rendering",": Blueprint descriptions now support markdown rendering, so formatting like headers and lists display as intended.",[27,890,892],{"id":891},"fixes","Fixes",[150,894,895,901,907],{},[153,896,897,900],{},[35,898,899],{},"MCP server discoverability",": Older MCP servers that were registered on your instances were not showing up in Expert Insights mode. All registered MCP servers are now discoverable again.",[153,902,903,906],{},[35,904,905],{},"Snapshot detail in the immersive editor",": Reviewing a snapshot from inside the immersive editor now opens it in a modal, so you can inspect snapshots without leaving the editor.",[153,908,909,912],{},[35,910,911],{},"Developer Mode tab restored in the immersive editor",": The Developer Mode tab is back in the immersive editor drawer, letting you toggle Auto Snapshots and create snapshots without opening a second window.",[27,914,916],{"id":915},"node-red","Node-RED",[15,918,919,924],{},[43,920,923],{"href":921,"rel":922},"https:\u002F\u002Fgithub.com\u002Fnode-red\u002Fnode-red\u002Freleases\u002Ftag\u002F4.1.8",[47],"Node-RED 4.1.8"," is now available as a stack option in FlowFuse. Highlights include function node tab badges (see at a glance which tabs contain code), theme plugin overrides for settings and menu options, configurable palette categories via theme plugins, and show-first\u002Flast-tab keyboard actions.",[15,926,927,928,932],{},"Looking ahead, ",[43,929,117],{"href":930,"rel":931},"https:\u002F\u002Fnodered.org\u002Fblog\u002F2025\u002F12\u002F03\u002Fnode-red-roadmap-to-5",[47]," is in beta. It's a modernization and UI re-architecture that readies Node-RED for better AI-guided development and brings more clarity to manual editing. FlowFuse will ship 5.0 once it reaches stable release.",[417,934],{"style":419},[15,936,179,937,939,940,190],{},[43,938,183],{"href":182},". For the complete list of everything included in FlowFuse 2.29, check out the ",[43,941,189],{"href":187,"rel":942},[47],[15,944,193,945,198],{},[43,946,197],{"href":947},"mailto:contact@flowfuse.com?subject=Feedback%20on%202.29",{"title":77,"searchDepth":227,"depth":227,"links":949},[950,955,961],{"id":726,"depth":230,"text":727,"children":951},[952,953,954],{"id":735,"depth":233,"text":736},{"id":751,"depth":233,"text":752},{"id":561,"depth":233,"text":562},{"id":795,"depth":230,"text":796,"children":956},[957,958,959,960],{"id":802,"depth":233,"text":803},{"id":812,"depth":233,"text":562},{"id":826,"depth":233,"text":827},{"id":845,"depth":233,"text":562},{"id":147,"depth":230,"text":148,"children":962},[963,964],{"id":891,"depth":233,"text":892},{"id":915,"depth":233,"text":916},{"type":966,"title":967,"description":968},"sign-up","Try the latest FlowFuse improvements in your own environment","Use Expert to take action in your editor, connect Azure DevOps to your workflow, and see exactly what changed between snapshots.","2026-04-09","FlowFuse 2.29 brings FlowFuse Expert to self-hosted enterprise customers, adds Azure DevOps as a supported Git provider, and makes snapshot comparisons clearer with property-level diffs.","\u002Fblog\u002F2026\u002F04\u002Fimages\u002Fflowfuse-release-2-29.png",{"release":973,"features":974,"excerpt":984},"2.29",[975,978,980,983],{"id":976,"heading":977},"git-integration-azure","Azure DevOps Git Integration",{"id":705,"heading":979},"See Exactly What Changed in a Snapshot",{"id":981,"heading":982},"ff-expert","FlowFuse Expert, Available to More Teams and More Capable",{"heading":148},{"type":12,"value":985},[986],[15,987,723],{},"\u002Fblog\u002F2026\u002F04\u002Fflowfuse-release-2-29",{"title":717,"description":970},{"loc":988},"blog\u002F2026\u002F04\u002Fflowfuse-release-2-29","Self-Hosted Enterprise customers can now enable FlowFuse Expert. Plus Azure DevOps Git support and clearer snapshot comparisons.",[270,271,272,994],"ai","FlowFuse 2.29 brings three main updates: FlowFuse Expert is now available for self-hosted enterprise customers and can execute actions directly in the Node-RED editor; Azure DevOps is now a supported Git provider for GitOps workflows; and snapshot comparisons now include a property-level diff sidebar with git-style line diffs. The release also ships Node-RED 4.1.8 as a stack option.","lz4bu7d1AH0","DvME8aavEEWOVR2YrT37sxmL-UjsPXnveEQjEDih1GQ",{"id":999,"title":1000,"authors":1001,"body":1002,"cta":3,"date":1224,"description":1225,"extension":256,"image":1226,"lastUpdated":3,"meta":1227,"navigation":263,"path":1243,"seo":1244,"sitemap":1245,"stem":1246,"subtitle":1247,"tags":1248,"tldr":3,"video":3,"__hash__":1249},"blog\u002Fblog\u002F2026\u002F03\u002Fflowfuse-release-2-28.md","FlowFuse 2.28: Troubleshoot Faster, Manage Edge Devices Centrally, and More Self-Hosted Flexibility",[280],{"type":12,"value":1003,"toc":1205},[1004,1007,1011,1014,1018,1021,1028,1031,1051,1055,1058,1064,1067,1071,1074,1078,1093,1105,1109,1115,1119,1123,1137,1144,1148,1168,1170,1178,1186,1191,1193,1195,1197,1199],[15,1005,1006],{},"FlowFuse 2.28 focuses on making your day-to-day work faster and giving you more control, whether you are debugging a flow, managing edge devices, or running FlowFuse on your own infrastructure.",[19,1008,1010],{"id":1009},"troubleshoot-flows-faster-with-flowfuse-expert","Troubleshoot Flows Faster with FlowFuse Expert",[15,1012,1013],{},"Tracking down issues in your flows usually means adding debug nodes, reading through log output, and then trying to describe the problem to get help. That back-and-forth slows you down.",[27,1015,1017],{"id":1016},"point-expert-at-your-debug-logs","Point Expert at Your Debug Logs",[15,1019,1020],{},"You can now select individual debug log entries and include them as context when asking FlowFuse Expert for help. Combined with your selected flows, Expert sees exactly what you see, the error, the flow that produced it, and the surrounding context.",[1022,1023],"lite-youtube",{"videoid":1024,"params":1025,"style":1026,"title":1027},"e0XV6lMKazo","rel=0","width: 704; height: 100%; background-image: url('https:\u002F\u002Fimg.youtube.com\u002Fvi\u002Fe0XV6lMKazo\u002Fmaxresdefault.jpg');","YouTube video player",[519,1029,1030],{},"Select specific log entries to give FlowFuse Expert focused troubleshooting context",[150,1032,1033,1039,1045],{},[153,1034,1035,1038],{},[35,1036,1037],{},"Select individual log entries"," to focus Expert on the specific issue rather than everything in your log",[153,1040,1041,1044],{},[35,1042,1043],{},"Quick-add from the Resource Selector"," to pull in logs alongside your flows in one step",[153,1046,1047,1050],{},[35,1048,1049],{},"Get targeted answers"," because Expert reasons about your actual errors, not a description of them",[27,1052,1054],{"id":1053},"always-have-the-latest-expert-capabilities","Always Have the Latest Expert Capabilities",[15,1056,1057],{},"FlowFuse Expert is getting new capabilities regularly, like the debug log context above. But when you are deep in your flows, it is easy to miss that an update is available. Expert now shows a banner when a newer version is ready. One click and you are up to date, so you always have access to the latest troubleshooting and development features.",[15,1059,1060],{},[74,1061],{"alt":1062,"dataZoomable":77,"src":1063,"style":79},"FlowFuse Expert update banner","\u002Fblog\u002F2026\u002F03\u002Fimages\u002Fexpert-update-banner.png",[519,1065,1066],{},"Expert lets you know when an update is available",[19,1068,1070],{"id":1069},"new-device-agent-configuration-options","New Device Agent Configuration Options",[15,1072,1073],{},"FlowFuse 2.28 combined with Device Agent v3.8.1 expands what you can configure on your edge devices, giving you more control over how Node-RED runs on Remote Instances.",[27,1075,1077],{"id":1076},"configure-nodejs-runtime-options","Configure Node.js Runtime Options",[15,1079,1080,1081,1084,1085,1092],{},"The latest Device Agent lets you set Node.js command line arguments for Remote Instances, via your ",[380,1082,1083],{},"device.yml"," or the agent command line. Previously these options were not configurable at all. The full set of NodeJS (command line arguments)",[1086,1087,1088],"span",{},[43,1089,1090],{"href":1090,"rel":1091},"https:\u002F\u002Fnodejs.org\u002Fdocs\u002Flatest-v22.x\u002Fapi\u002Fcli.html",[47]," can be set. For example",[150,1094,1095],{},[153,1096,1097,1100,1101,1104],{},[35,1098,1099],{},"Increase memory"," for flows that process large datasets (",[380,1102,1103],{},"--max-old-space-size",")",[27,1106,1108],{"id":1107},"set-api-payload-limits-from-the-ui","Set API Payload Limits from the UI",[15,1110,1111,1112,190],{},"If your Remote Instances handle large file uploads, you may have hit the default API payload size limit. You can now configure the maximum API payload length directly in FlowFuse under ",[35,1113,1114],{},"Remote Instance → Settings → Editor",[19,1116,1118],{"id":1117},"more-flexibility-for-self-hosted-deployments","More Flexibility for Self-Hosted Deployments",[27,1120,1122],{"id":1121},"migrate-from-ingress-nginx-to-traefik","Migrate from Ingress Nginx to Traefik",[15,1124,1125,1126,1131,1132,1136],{},"With the ",[43,1127,1130],{"href":1128,"rel":1129},"https:\u002F\u002Fkubernetes.io\u002Fblog\u002F2025\u002F06\u002F30\u002Fingress-nginx-retirement\u002F",[47],"retirement of Ingress Nginx",", many self-hosted Kubernetes users need to move to a supported ingress controller. To help with this transition, we have prepared a blueprint for migrating from Ingress Nginx to Traefik. The Helm chart now includes the required job resources and RBAC for the migration tool, and we have published a step-by-step ",[43,1133,1135],{"href":1134},"\u002Fdocs\u002Finstall\u002Fkubernetes\u002Fingress-controller-migration\u002F","ingress controller migration guide"," to walk you through the process.",[15,1138,1139,1140,1143],{},"As part of this work, you can now also set a separate ingress class name for Hosted Instances using ",[380,1141,1142],{},"forge.projectIngressClassName",", allowing you to run project traffic through a different ingress controller than the platform itself.",[27,1145,1147],{"id":1146},"additional-self-hosted-improvements","Additional self-hosted improvements",[150,1149,1150,1156,1162],{},[153,1151,1152,1155],{},[35,1153,1154],{},"Team NPM Registry",", Docker Compose deployments can now have all the Team Library, Custom Nodes pre-requisits configured.",[153,1157,1158,1161],{},[35,1159,1160],{},"File-server PVC configuration",": Set the size, access modes, and storage class for file-server persistent volumes",[153,1163,1164,1167],{},[35,1165,1166],{},"Private CA certificate mounting",", Docker Compose deployments can now mount a private CA certificate file into the forge service",[19,1169,148],{"id":147},[150,1171,1172,1175],{},[153,1173,1174],{},"Instances can now automatically receive scheduled maintenance, so they stay up to date without manual configuration.",[153,1176,1177],{},"Updated FlowFuse Expert documentation with dedicated guides for the Chat Interface and AI-assisted features in Node-RED",[15,1179,179,1180,1182,1183,190],{},[43,1181,183],{"href":182},". For the complete list of everything included in FlowFuse 2.28, check out the ",[43,1184,189],{"href":187,"rel":1185},[47],[15,1187,193,1188,198],{},[43,1189,197],{"href":1190},"mailto:contact@flowfuse.com?subject=Feedback%20on%202.28",[19,1192,202],{"id":201},[27,1194,206],{"id":205},[15,1196,209],{},[27,1198,213],{"id":212},[15,1200,216,1201,221,1203,190],{},[43,1202,220],{"href":219},[43,1204,225],{"href":224},{"title":77,"searchDepth":227,"depth":227,"links":1206},[1207,1211,1215,1219,1220],{"id":1009,"depth":230,"text":1010,"children":1208},[1209,1210],{"id":1016,"depth":233,"text":1017},{"id":1053,"depth":233,"text":1054},{"id":1069,"depth":230,"text":1070,"children":1212},[1213,1214],{"id":1076,"depth":233,"text":1077},{"id":1107,"depth":233,"text":1108},{"id":1117,"depth":230,"text":1118,"children":1216},[1217,1218],{"id":1121,"depth":233,"text":1122},{"id":1146,"depth":233,"text":1147},{"id":147,"depth":230,"text":148},{"id":201,"depth":230,"text":202,"children":1221},[1222,1223],{"id":205,"depth":233,"text":206},{"id":212,"depth":233,"text":213},"2026-03-12","FlowFuse 2.28 lets you troubleshoot flows faster with debug log context in FlowFuse Expert, manage Remote Instances centrally with Node.js options and payload configuration, and gives self-hosted users more deployment flexibility.","\u002Fblog\u002F2026\u002F03\u002Fimages\u002Fflowfuse-release-2-28.png",{"release":1228,"features":1229,"excerpt":1239},"2.28",[1230,1232,1233,1235,1237],{"id":1231,"heading":1017},"ff-expert-support",{"id":981,"heading":1054},{"id":1234,"heading":1070},"edge-devices",{"heading":1118,"tiers":1236},{"selfHosted":457},{"heading":148,"tiers":1238},{"cloud":457,"selfHosted":457},{"type":12,"value":1240},[1241],[15,1242,1006],{},"\u002Fblog\u002F2026\u002F03\u002Fflowfuse-release-2-28",{"title":1000,"description":1225},{"loc":1243},"blog\u002F2026\u002F03\u002Fflowfuse-release-2-28","Point FlowFuse Expert at your debug logs, configure Node.js runtime options for edge devices, and gain more control over self-hosted deployments.",[270,271,272],"7e0jOkiln-XvKWAXhuX24jTbjaVt05aSd2CHlqQregc",{"id":1251,"title":1252,"authors":1253,"body":1254,"cta":3,"date":1452,"description":1453,"extension":256,"image":1454,"lastUpdated":3,"meta":1455,"navigation":263,"path":1460,"seo":1461,"sitemap":1462,"stem":1463,"subtitle":1464,"tags":1465,"tldr":1466,"video":3,"__hash__":1467},"blog\u002Fblog\u002F2026\u002F02\u002Fflowfuse-release-2-27.md","FlowFuse 2.27: Integrated Editor in Remote Instances & Context-Aware FlowFuse Expert",[10],{"type":12,"value":1255,"toc":1433},[1256,1259,1263,1266,1270,1277,1286,1289,1298,1300,1311,1315,1318,1322,1325,1342,1345,1354,1356,1370,1374,1377,1381,1384,1387,1389,1400,1402,1410,1415,1417,1419,1425,1427],[15,1257,1258],{},"FlowFuse 2.27 tightens the development loop for Remote instances and makes FlowFuse Expert more aware of what is actually running in your Node-RED environment. It also improves availability for High Availability hosted deployments.",[19,1260,1262],{"id":1261},"a-more-integrated-remote-development-workflow","A More Integrated Remote Development Workflow",[15,1264,1265],{},"Teams run production and edge workloads in Remote instances. When tooling behaves differently across environments, it slows debugging and increases risk during active changes.",[27,1267,1269],{"id":1268},"immersive-editor-snapshot-restore","Immersive Editor & Snapshot Restore",[15,1271,1272,1273,1276],{},"FlowFuse now brings the integrated editor experience to Remote instances. Clicking ",[35,1274,1275],{},"Open Editor"," provides the same FlowFuse capabilities regardless of where your instance runs.",[15,1278,1279,1283],{},[74,1280],{"alt":1281,"dataZoomable":77,"src":1282},"Immersive Mode on a Remote Instance","\u002Fblog\u002F2026\u002F02\u002Fimages\u002Fremote-instance-immersive.gif",[128,1284,1285],{},"Immersive Mode accessed from a remote instance",[15,1287,1288],{},"Device Agent v3.8.0 also allows you to restore snapshots while remaining in developer mode. You no longer need to exit developer mode to roll back changes. Pipeline protections remain in place, but manual recovery is faster.",[15,1290,1291,1295],{},[74,1292],{"alt":1293,"dataZoomable":77,"src":1294},"Restoring a snapshot while in Developer Mode","\u002Fblog\u002F2026\u002F02\u002Fimages\u002Fsnapshot-restore.png",[128,1296,1297],{},"Restoring a snapshot without leaving developer mode",[27,1299,562],{"id":561},[150,1301,1302,1305,1308],{},[153,1303,1304],{},"You move between hosted and remote environments without changing your workflow",[153,1306,1307],{},"You restore snapshots without interrupting active debugging",[153,1309,1310],{},"You reduce friction while iterating on live systems",[19,1312,1314],{"id":1313},"flowfuse-expert-uses-live-flow-and-palette-context","FlowFuse Expert Uses Live Flow and Palette Context",[15,1316,1317],{},"AI guidance is only useful when it reflects what is actually running in your environment. Manually describing flows or installed nodes slows troubleshooting and introduces gaps in context.",[27,1319,1321],{"id":1320},"palette-awareness-flow-context","Palette Awareness & Flow Context",[15,1323,1324],{},"FlowFuse Expert now:",[150,1326,1327,1330,1333,1336,1339],{},[153,1328,1329],{},"Understands your selected flows as troubleshooting context",[153,1331,1332],{},"Detects installed custom nodes automatically",[153,1334,1335],{},"Answers questions about your Node-RED palette, including versions, updates, and disabled nodes",[153,1337,1338],{},"Suggests node packages and links directly to manage them",[153,1340,1341],{},"Installs suggested nodes and imports flows with a single click",[15,1343,1344],{},"FlowFuse Expert surfaces context and performs actions only when initiated by the user.",[15,1346,1347,1351],{},[74,1348],{"alt":1349,"dataZoomable":77,"src":1350},"FlowFuse Expert using live palette context","\u002Fblog\u002F2026\u002F02\u002Fimages\u002Fff-expert-palette-context.gif",[128,1352,1353],{},"FlowFuse Expert answering palette queries with live context",[27,1355,562],{"id":812},[150,1357,1358,1361,1364,1367],{},[153,1359,1360],{},"You do not manually describe your setup",[153,1362,1363],{},"You identify missing or outdated nodes faster",[153,1365,1366],{},"You troubleshoot flows based on real context",[153,1368,1369],{},"You move between chat, palette manager, and editor without unnecessary clicks or context switching",[19,1371,1373],{"id":1372},"high-availability-improvements-for-hosted-instances","High Availability Improvements for Hosted Instances",[15,1375,1376],{},"Parallel restarts in HA environments can introduce avoidable service interruption during deploys or manual restarts.",[27,1378,1380],{"id":1379},"rolling-restarts","Rolling Restarts",[15,1382,1383],{},"Hosted Node-RED instances with HA enabled now restart sequentially rather than in parallel. Any manual or pipeline-triggered restart follows this behavior.",[15,1385,1386],{},"This feature is available to Enterprise licensed self-hosted users and Enterprise tier users of FlowFuse Cloud.",[27,1388,562],{"id":845},[150,1390,1391,1394,1397],{},[153,1392,1393],{},"You reduce service interruption during restarts",[153,1395,1396],{},"You improve availability during deploys",[153,1398,1399],{},"You maintain stronger continuity in HA environments",[19,1401,148],{"id":147},[15,1403,179,1404,1406,1407,190],{},[43,1405,183],{"href":182},". For the complete list of everything included in FlowFuse 2.27, check out the ",[43,1408,189],{"href":187,"rel":1409},[47],[15,1411,193,1412,198],{},[43,1413,197],{"href":1414},"mailto:contact@flowfuse.com?subject=Feedback%20on%202.27",[19,1416,202],{"id":201},[27,1418,206],{"id":205},[15,1420,1421,1422,1424],{},"The fastest way to get started is with FlowFuse Cloud.",[348,1423],{},"\n[Get started for free]({% include \"sign-up-url.njk\" %}) and have your Node-RED instances running in minutes.",[27,1426,213],{"id":212},[15,1428,216,1429,221,1431,190],{},[43,1430,220],{"href":219},[43,1432,225],{"href":224},{"title":77,"searchDepth":227,"depth":227,"links":1434},[1435,1439,1443,1447,1448],{"id":1261,"depth":230,"text":1262,"children":1436},[1437,1438],{"id":1268,"depth":233,"text":1269},{"id":561,"depth":233,"text":562},{"id":1313,"depth":230,"text":1314,"children":1440},[1441,1442],{"id":1320,"depth":233,"text":1321},{"id":812,"depth":233,"text":562},{"id":1372,"depth":230,"text":1373,"children":1444},[1445,1446],{"id":1379,"depth":233,"text":1380},{"id":845,"depth":233,"text":562},{"id":147,"depth":230,"text":148},{"id":201,"depth":230,"text":202,"children":1449},[1450,1451],{"id":205,"depth":233,"text":206},{"id":212,"depth":233,"text":213},"2026-02-12","FlowFuse 2.27 improves Remote workflows, simplifies rollback in developer mode, enhances FlowFuse Expert with live context, and introduces rolling restarts for HA Hosted instances.","\u002Fblog\u002F2026\u002F02\u002Fimages\u002Fflowfuse-release-2-27.png",{"excerpt":1456},{"type":12,"value":1457},[1458],[15,1459,1258],{},"\u002Fblog\u002F2026\u002F02\u002Fflowfuse-release-2-27",{"title":1252,"description":1453},{"loc":1460},"blog\u002F2026\u002F02\u002Fflowfuse-release-2-27","A more consistent Node-RED experience across environments and deeper live context for FlowFuse Expert.",[270,271,272],"FlowFuse 2.27 brings the integrated editor experience to Remote instances and allows snapshot restores without leaving developer mode. FlowFuse Expert gains live palette and flow context awareness, and High Availability hosted instances now support rolling restarts to reduce service interruption during deployments.","H6742F3hk8Wa1CLWm-XtMTNcNa4DIutPUoBYyOJQZwM",{"id":1469,"title":1470,"authors":1471,"body":1473,"cta":3,"date":1595,"description":1470,"extension":256,"image":1596,"lastUpdated":3,"meta":1597,"navigation":263,"path":1602,"seo":1603,"sitemap":1604,"stem":1605,"subtitle":1470,"tags":1606,"tldr":3,"video":3,"__hash__":1607},"blog\u002Fblog\u002F2026\u002F01\u002Fflowfuse-release-2-26.md","FlowFuse 2.26: Bringing access-controls to your MCP nodes",[1472],"nick-oleary",{"type":12,"value":1474,"toc":1586},[1475,1478,1482,1490,1493,1496,1499,1502,1510,1514,1517,1531,1538,1547,1549,1556,1564,1567,1569,1571,1574,1577,1579],[15,1476,1477],{},"With the holiday break sitting in the middle of this release cycle, it's a smaller release than usual this month. But that hasn't stopped us continuing to make the FlowFuse Expert even more useful.",[19,1479,1481],{"id":1480},"role-based-access-control-for-your-mcp-tools","Role-based access control for your MCP tools",[15,1483,1484,1485,1489],{},"Following on the the introduction of ",[43,1486,1488],{"href":1487},"\u002Fchangelog\u002F2025\u002F12\u002Fff-expert-mcp-insights\u002F","FlowFuse Expert MCP-Powered Insights"," we have added annotations to the FlowFuse MCP nodes and linked them up with the FlowFuse roles.\nThis 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.",[15,1491,1492],{},"The MCP nodes now allow you to set some standard annotations to give the platform a hint as to what type of action the node performs. This lets you separate tools that provide read-only information from those that make potentially-destructive changes.",[15,1494,1495],{},"Within the FlowFuse team, you can then use the granular RBAC feature to configure what users have access to the different types of node.",[15,1497,1498],{},"For example, Viewer role users can have access to read-only nodes, whilst Owners get to access the full range of tools. These roles can be customised for each Application within the team.",[15,1500,1501],{},"The annotations we apply are part of the MCP standard, so will be recognised by your own Agents and LLMs.",[15,1503,1504,1508],{},[74,1505],{"alt":1506,"dataZoomable":77,"src":1507},"MCP Server Tool Node with new annotations","\u002Fblog\u002F2026\u002F01\u002Fimages\u002Fmcp-annotations.png",[128,1509,1506],{},[19,1511,1513],{"id":1512},"integrating-flowfuse-expert-with-node-red","Integrating FlowFuse Expert with Node-RED",[15,1515,1516],{},"This release also brings some new abilities for the FlowFuse Expert to help you do things inside Node-RED itself.",[150,1518,1519,1525],{},[153,1520,1521,1524],{},[35,1522,1523],{},"Streamlined Node Installation:"," 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.",[153,1526,1527,1530],{},[35,1528,1529],{},"Direct Flow Imports:"," 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.",[15,1532,1533,1534,1537],{},"Make sure you've updated the ",[380,1535,1536],{},"@flowfuse\u002Fnr-assistant"," module inside your instance to unlock these new capabilities.",[15,1539,1540,1544],{},[74,1541],{"alt":1542,"dataZoomable":77,"src":1543},"FlowFuse Expert Install Node","\u002Fblog\u002F2026\u002F01\u002Fimages\u002Fff-expert-install-node.gif",[128,1545,1546],{},"FlowFuse Expert integration with the Palette Manager",[19,1548,148],{"id":147},[15,1550,1551,1552,190],{},"For a complete list of everything included in our 2.26 release, check out the ",[43,1553,189],{"href":1554,"rel":1555},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Freleases\u002Ftag\u002Fv2.26.0",[47],[15,1557,1558,1559,190],{},"Your feedback continues to be invaluable in shaping FlowFuse's development. We'd love to hear your thoughts on these new features and any suggestions for future improvements. Please share your experiences or report any ",[43,1560,1563],{"href":1561,"rel":1562},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002Fnew\u002Fchoose",[47],"issues on GitHub",[15,1565,1566],{},"Which of these new features are you most excited to try? Reach out on GitHub or social media!",[19,1568,202],{"id":201},[27,1570,206],{"id":205},[15,1572,1573],{},"The quickest way to get started is with FlowFuse Cloud.",[15,1575,1576],{},"[Get started for free]({% include \"sign-up-url.njk\" %}) and have your Node-RED instances running in the cloud within minutes.",[27,1578,213],{"id":212},[15,1580,1581,1582,221,1584,190],{},"Get FlowFuse running locally in under 30 minutes using ",[43,1583,220],{"href":219},[43,1585,225],{"href":224},{"title":77,"searchDepth":227,"depth":227,"links":1587},[1588,1589,1590,1591],{"id":1480,"depth":230,"text":1481},{"id":1512,"depth":230,"text":1513},{"id":147,"depth":230,"text":148},{"id":201,"depth":230,"text":202,"children":1592},[1593,1594],{"id":205,"depth":233,"text":206},{"id":212,"depth":233,"text":213},"2026-01-15","\u002Fblog\u002F2026\u002F01\u002Fimages\u002Frelease-2-26.png",{"excerpt":1598},{"type":12,"value":1599},[1600],[15,1601,1477],{},"\u002Fblog\u002F2026\u002F01\u002Fflowfuse-release-2-26",{"title":1470,"description":1470},{"loc":1602},"blog\u002F2026\u002F01\u002Fflowfuse-release-2-26",[270,271,272,994],"zrtE599ZcoDilcp6taK6keb6r7CGKPIP3kHkUNDyhPE",{"id":1609,"title":1610,"authors":1611,"body":1613,"cta":3,"date":1757,"description":1610,"extension":256,"image":1758,"lastUpdated":3,"meta":1759,"navigation":263,"path":1764,"seo":1765,"sitemap":1766,"stem":1767,"subtitle":1610,"tags":1768,"tldr":3,"video":1769,"__hash__":1770},"blog\u002Fblog\u002F2025\u002F12\u002Fflowfuse-release-2-25.md","FlowFuse 2.25: Interacting with MCP Resources in FlowFuse Expert, Improved Update Scheduling, and lots of UI improvements!",[1612],"greg-stoutenburg",{"type":12,"value":1614,"toc":1746},[1615,1618,1622,1633,1642,1645,1648,1651,1655,1665,1668,1671,1678,1686,1690,1701,1704,1708,1711,1714,1716,1723,1728,1730,1732,1734,1736,1738,1740],[15,1616,1617],{},"This release comes with some big updates for the FlowFuse Expert.",[19,1619,1621],{"id":1620},"interact-with-mcp-resources-in-flowfuse-expert","Interact with MCP Resources in FlowFuse Expert",[15,1623,1624,1628],{},[74,1625],{"alt":1626,"src":1627},"Image of MCP in FlowFuse","\u002Fblog\u002F2025\u002F12\u002Fimages\u002Fmcp-in-flowfuse.png",[128,1629,1630],{},[1086,1631,1632],{},"FlowFuse Expert Interface",[15,1634,1635,1636,1641],{},"Our ",[43,1637,1640],{"href":1638,"rel":1639},"https:\u002F\u002Fflowfuse.com\u002Fnode-red\u002Fflowfuse\u002Fmcp\u002F",[47],"MCP nodes"," make is super easy to extend AI Agents with tools and resources in your environment. With this release, we're introducing the ability to interact your MCP servers directly within the FlowFuse Expert.",[15,1643,1644],{},"Previously, when setting up an MCP server in FlowFuse, you would first designate your tools, resources, and servers in side of Node-RED using the MCP nodes. Then, to interact with them, you needed a separate tool like VSCode to query and perform operations.",[15,1646,1647],{},"We want you to be able to access your resources as quickly and easily as possible, and reduce the manual overhead involved in managing and querying your MCP resources.",[15,1649,1650],{},"We've greatly simplified this process. You can now set everything up in Node-RED and then use the FlowFuse expert to designate your tools and interact with them, without ever leaving FlowFuse. This will speed you up and simplify your operations.",[19,1652,1654],{"id":1653},"flowfuse-expert-assistant-in-node-red","FlowFuse Expert Assistant in Node-RED",[15,1656,1657,1660],{},[74,1658],{"alt":1654,"src":1659},"\u002Fblog\u002F2025\u002F12\u002Fimages\u002Fff-assistant-nr.png",[128,1661,1662],{},[1086,1663,1664],{},"FlowFuse Expert UI",[15,1666,1667],{},"We're very excited to announce that all Node-RED users can now use our FlowFuse Expert Assistant. The ASsistant will help you create Function nodes, Template nodes, and explain highlighted flows using the Flow Explainer.",[15,1669,1670],{},"Previously, this was only available in Node-RED managed directly by the FlowFuse platform. Now everyone using Node-RED, whether they are a FlowFuse user or not, can make use of this technology and speed the development of their Node-RED workflows.",[15,1672,1673,1674,1677],{},"You will need an account on FlowFuse Cloud to connect it to, but for this release, it does ",[128,1675,1676],{},"not"," require a paid subscription to use.",[15,1679,1680,1681,190],{},"Check the FlowFuse Expert Assistant docs for ",[43,1682,1685],{"href":1683,"rel":1684},"https:\u002F\u002Fflowfuse.com\u002Fdocs\u002Fuser\u002Fexpert\u002F#flowfuse-assistant-plugin",[47],"how to get started",[19,1687,1689],{"id":1688},"improved-update-scheduling","Improved Update Scheduling",[15,1691,1692,1696],{},[74,1693],{"alt":1694,"src":1695},"Image of Scheduled Updates UI","\u002Fblog\u002F2025\u002F12\u002Fimages\u002Fupdates.png",[128,1697,1698],{},[1086,1699,1700],{},"Scheduled Updates Interface",[15,1702,1703],{},"We added the ability to schedule updates for your instances in the last release. Based on user feedback, we've now also added the ability to schedule restarting of your instance regardless of whether an update is available.",[19,1705,1707],{"id":1706},"lots-of-small-updates-for-a-better-user-experience","Lots of small updates for a better user experience",[15,1709,1710],{},"When we plan our releases, we look for what will make good headlines in our release annoucements - the big, shiny features that can get lots of attention. Sometimes we also take an opportunity to clear lots of little issues that ultimately are less headline-worthy, but all make for a better user experience.",[15,1712,1713],{},"For example, this release sees lots of small improvements to the FlowFuse Tables user experience; adding the ability to refresh the displayed data, more accessible column table names, an improved layout. Nothing to set the socials buzzing, but genuine quality of life improvements to our users.",[19,1715,148],{"id":147},[15,1717,1718,1719,190],{},"For a complete list of everything included in our 2.25 release, check out the ",[43,1720,189],{"href":1721,"rel":1722},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Freleases\u002Ftag\u002Fv2.25.0",[47],[15,1724,1558,1725,190],{},[43,1726,1563],{"href":1561,"rel":1727},[47],[15,1729,1566],{},[19,1731,202],{"id":201},[27,1733,206],{"id":205},[15,1735,1573],{},[15,1737,1576],{},[27,1739,213],{"id":212},[15,1741,1581,1742,221,1744,190],{},[43,1743,220],{"href":219},[43,1745,225],{"href":224},{"title":77,"searchDepth":227,"depth":227,"links":1747},[1748,1749,1750,1751,1752,1753],{"id":1620,"depth":230,"text":1621},{"id":1653,"depth":230,"text":1654},{"id":1688,"depth":230,"text":1689},{"id":1706,"depth":230,"text":1707},{"id":147,"depth":230,"text":148},{"id":201,"depth":230,"text":202,"children":1754},[1755,1756],{"id":205,"depth":233,"text":206},{"id":212,"depth":233,"text":213},"2025-12-18","\u002Fblog\u002F2025\u002F12\u002Fimages\u002FRelease-2-25.png",{"excerpt":1760},{"type":12,"value":1761},[1762],[15,1763,1617],{},"\u002Fblog\u002F2025\u002F12\u002Fflowfuse-release-2-25",{"title":1610,"description":1610},{"loc":1764},"blog\u002F2025\u002F12\u002Fflowfuse-release-2-25",[270,271,272],"2Q_77dmEuyU","3GkEyRgT13cJoVA5gbrxRgzAcOzzjIc2k9ZExW3nfjI",{"id":1772,"title":1773,"authors":1774,"body":1775,"cta":3,"date":1928,"description":1773,"extension":256,"image":1929,"lastUpdated":3,"meta":1930,"navigation":263,"path":1935,"seo":1936,"sitemap":1937,"stem":1938,"subtitle":1773,"tags":1939,"tldr":3,"video":1940,"__hash__":1941},"blog\u002Fblog\u002F2025\u002F11\u002Fflowfuse-release-2-24.md","FlowFuse 2.24: FlowFuse Expert in the Node-RED Editor, Scheduled Updates, Simpler Edge Device Addition, Store and Forward Blueprint, and what's next!",[1612],{"type":12,"value":1776,"toc":1916},[1777,1780,1784,1794,1797,1800,1803,1807,1816,1819,1822,1825,1828,1832,1843,1846,1850,1853,1860,1865,1868,1872,1875,1878,1880,1887,1892,1900,1902,1904,1906,1908,1910],[15,1778,1779],{},"This release unlocks several new abilities for our users, speeding your development time, easing management of Node-RED instances, providing a smoother path to adding large numbers of devices, and more. Let's dig in.",[19,1781,1783],{"id":1782},"flowfuse-expert","FlowFuse Expert",[15,1785,1786,1790],{},[74,1787],{"alt":1788,"src":1789},"Image of FlowFuse Expert UI","\u002Fblog\u002F2025\u002F11\u002Fimages\u002Fff-expert-ui.png",[128,1791,1792],{},[1086,1793,1664],{},[15,1795,1796],{},"The FlowFuse Expert used to live only on flowfuse.com, where you could use an LLM trained on FlowFuse and Node-RED documentation, and trained by the Node-RED experts at FlowFuse. Now, we've taken it a step further. The FlowFuse Expert is now available inside of the FlowFuse UI, and even in the Immersive Editor in Node-RED!",[15,1798,1799],{},"You are no longer limited in your interactions with the FlowFuse Expert by the location where you started your conversation. Keep the conversation going and rely on the Expert's advice right where you're building in Node-RED.",[15,1801,1802],{},"Even better, when you're working in the Immersive Editor, the Expert will recommend flows based on your inputs, and you can copy and paste them directly into the Node-RED Editor, once again saving you time and reducing the effort needed to develop in Node-RED.",[19,1804,1806],{"id":1805},"automatic-updates-of-instances","Automatic Updates of Instances",[15,1808,1809,1812],{},[74,1810],{"alt":1694,"src":1811},"\u002Fblog\u002F2025\u002F11\u002Fimages\u002Fscheduler.png",[128,1813,1814],{},[1086,1815,1700],{},[15,1817,1818],{},"When there are new updates to Node-RED, or the FlowFuse components, it has been a manual task for users to spot the update and trigger the upgrade to get the latest fixes and features applied to their instances.",[15,1820,1821],{},"We're here to make your tasks easier, not to give you more maintenance burdens. So with this release, we've introduced the ability to automatically apply any updates that are available to Node-RED or the FlowFuse stack around it. You get to pick a maintenance window during the week for when the updates should get applied.",[15,1823,1824],{},"For Starter tier teams, we will apply a default schedule for overnight at the weekend to minimise disruption. For Pro and Enterprise tiers, users can configure their own schedule via the Instance's Maintenance settings tab.",[15,1826,1827],{},"Keeping your software up to date is important, and this features gives you one less thing to worry about.",[19,1829,1831],{"id":1830},"simpler-edge-device-addition","Simpler Edge Device Addition",[15,1833,1834,1838],{},[74,1835],{"alt":1836,"src":1837},"Image of UI for provisioning token","\u002Fblog\u002F2025\u002F11\u002Fimages\u002Ftoken.png",[128,1839,1840],{},[1086,1841,1842],{},"Provisioning Token Interface",[15,1844,1845],{},"Many of our customers make use of large fleets of edge devices. Through the use of provisioning tokens it's easy to get lots of devices setup quickly - but there were still some additional steps needed to get the devices properly named and organised. Now, when setting up a new device with a provisioning token, it is possible to name it at the same time, reducing the complexity of the workflow. We want you to be able to scale up your edge device count quickly and easily, and this represents a significant step in that direction.",[19,1847,1849],{"id":1848},"blueprint-store-and-forward","Blueprint: Store and Forward",[15,1851,1852],{},"When data acquisition and processing at the edge is mission critical, it is vital that data received at the edge can be stored and protected until it can be forwarded to its destination. Having heard from customers that an easy way to execute a store and forward structure is needed, we have created this Blueprint to speed your development of this data-preserving flow.",[15,1854,1855,1856,190],{},"Find out more on the ",[43,1857,1859],{"href":1858},"\u002Fblueprints\u002Fgetting-started\u002Fstore-and-forward\u002F","blueprint page",[1861,1862,1864],"h1",{"id":1863},"sneak-peek","Sneak Peek",[15,1866,1867],{},"FlowFuse MCP nodes allow you to surface information to an LLM to create custom AI agents. We're working on enabling FlowFuse to identify anything you have surfaced to an MCP, paving the way for creating massively powerful agents, enabled by everything you've connected to FlowFuse.",[19,1869,1871],{"id":1870},"flowfuse-expert-for-open-source-node-red","FlowFuse Expert for Open-Source Node-RED",[15,1873,1874],{},"FlowFuse Expert is our collection of AI-enhancements within the Node-RED editor - assisted creation of Function nodes, autocompleting flows and documentation generation amongst other features. Currently it's an exclusive feature of the FlowFuse platform, but we're hard at work to bring it to standalone Node-RED instances.",[15,1876,1877],{},"Coming soon you'll be able to experience the power of AI-enhanced development within Node-RED wherever it's running.",[19,1879,148],{"id":147},[15,1881,1882,1883,190],{},"For a complete list of everything included in our 2.24 release, check out the ",[43,1884,189],{"href":1885,"rel":1886},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Freleases\u002Ftag\u002Fv2.24.0",[47],[15,1888,1558,1889,190],{},[43,1890,1563],{"href":1561,"rel":1891},[47],[15,1893,1894,1895,1899],{},"Which of these new features are you most excited to try? Email me directly at ",[43,1896,1898],{"href":1897},"mailto:greg@flowfuse.com","greg@flowfuse.com"," - I'd love to hear from you!",[19,1901,202],{"id":201},[27,1903,206],{"id":205},[15,1905,1573],{},[15,1907,1576],{},[27,1909,213],{"id":212},[15,1911,1581,1912,221,1914,190],{},[43,1913,220],{"href":219},[43,1915,225],{"href":224},{"title":77,"searchDepth":227,"depth":227,"links":1917},[1918,1919,1920,1921,1922,1923,1924],{"id":1782,"depth":230,"text":1783},{"id":1805,"depth":230,"text":1806},{"id":1830,"depth":230,"text":1831},{"id":1848,"depth":230,"text":1849},{"id":1870,"depth":230,"text":1871},{"id":147,"depth":230,"text":148},{"id":201,"depth":230,"text":202,"children":1925},[1926,1927],{"id":205,"depth":233,"text":206},{"id":212,"depth":233,"text":213},"2025-11-20","\u002Fblog\u002F2025\u002F11\u002Fimages\u002F2.24-release.png",{"excerpt":1931},{"type":12,"value":1932},[1933],[15,1934,1779],{},"\u002Fblog\u002F2025\u002F11\u002Fflowfuse-release-2-24",{"title":1773,"description":1773},{"loc":1935},"blog\u002F2025\u002F11\u002Fflowfuse-release-2-24",[270,271,272,994],"cYwa08W-2eI","YddyBwLVT6ybKb3SR4smjIY73mtdwJfjZnbA2tmBb4o",{"id":1943,"title":1944,"authors":1945,"body":1946,"cta":3,"date":2123,"description":2124,"extension":256,"image":2125,"lastUpdated":3,"meta":2126,"navigation":263,"path":2131,"seo":2132,"sitemap":2133,"stem":2134,"subtitle":2124,"tags":2135,"tldr":3,"video":3,"__hash__":2136},"blog\u002Fblog\u002F2025\u002F10\u002Fflowfuse-release-2-23.md","FlowFuse 2.23: MCP and ONNX nodes, FlowFuse AI Expert on the homepage, Application-level Permission Control, FlowFuse Expert for Self-Hosted, and more!",[1612],{"type":12,"value":1947,"toc":2109},[1948,1951,1955,1966,1975,1979,1982,1991,1995,2006,2009,2012,2014,2025,2034,2041,2045,2052,2056,2059,2061,2064,2068,2075,2077,2084,2089,2093,2095,2097,2099,2101,2103],[15,1949,1950],{},"In this exciting release, we've shipped several features that accelerate development in Node-RED using AI, enable creation of AI agents using new Model Context Protocol nodes, provide application-level access controls for much more sophisticated user permissions management, and put an expert flow creator right on our homepage. It's a big one! Let's have a look.",[19,1952,1954],{"id":1953},"mcp-nodes","MCP Nodes",[15,1956,1957,1961],{},[74,1958],{"alt":1959,"src":1960},"Image of MCP nodes","\u002Fblog\u002F2025\u002F10\u002Fimages\u002Fmcp-nodes.png",[128,1962,1963],{},[1086,1964,1965],{},"MCP nodes in the Node-RED palette, ready for use",[15,1967,1968,1969,1974],{},"With this release, you can now create a Model Context Protocol server using Node-RED. The new MCP nodes enable the creation of a MCP server so that you can create AI agents that will rely on the exact data that you want to surface to an LLM. As AI services rely upon data presented to them, whether it's anything available on the world wide web (as with LLMs generically) or more focused information, our MCP nodes provide the ability to expose specific resources so that an AI service will rely upon the right data without making all of your information public. It's a really exciting development. Check out ",[43,1970,1973],{"href":1971,"rel":1972},"https:\u002F\u002Fflowfuse.com\u002Fchangelog\u002F2025\u002F10\u002Fmcp-nodes\u002F",[47],"the Changelog entry"," for more.",[19,1976,1978],{"id":1977},"flowfuse-ai-nodes","FlowFuse AI Nodes",[15,1980,1981],{},"While MCP makes it possible to create AI agents to rely on the data you have chosen, the new FlowFuse AI nodes allow you to connect AI models of your choosing--including ones that you have trained yourself--to Node-RED to create any workflow you like. The ONNX (Open Neural Network Exchange) format lets you connect a model for whatever purpose you have in mind. This package ships with nodes for running your own custom-trained model, for classifying images, for object detection, and for image depth estimation. This is a huge step in the direction of fully-controlled AI automation inside of Node-RED on FlowFuse.",[15,1983,1984,1985,1990],{},"For self-hosted customers, once you've upgraded, contact ",[43,1986,1989],{"href":1987,"rel":1988},"https:\u002F\u002Fflowfuse.com\u002Fsupport",[47],"FlowFuse Support"," to get access to these exciting new nodes.",[19,1992,1994],{"id":1993},"application-level-role-based-access-control","Application-Level Role-Based Access Control",[15,1996,1997,2001],{},[74,1998],{"alt":1999,"src":2000},"Image of application-level permissions","\u002Fblog\u002F2025\u002F10\u002Fimages\u002Frbac2.png",[128,2002,2003],{},[1086,2004,2005],{},"Control permissions at the application level",[15,2007,2008],{},"One of the key features of FlowFuse is the ability to manage Node-RED applications by choosing who gets access to what. Up to now, team owners had to configure permissions at the team level. But what if there are members of your team that should have write permissions to one Node-RED instance, but only viewer access to another? You would have to put those instances on different teams and configure permissions there. With many instances and applications, this could be a headache.",[15,2010,2011],{},"We've solved it. You can now manage permissions at the Application level. Now one and the same team can have users who can access some applications with one level of permissions, and and another application with a different level. We've heard your feedback on this need and are happy for you to give it a try!",[19,2013,1783],{"id":1782},[15,2015,2016,2020],{},[74,2017],{"alt":2018,"src":2019},"Image of FlowFuse Expert","\u002Fblog\u002F2025\u002F10\u002Fimages\u002Fexpert.png",[128,2021,2022],{},[1086,2023,2024],{},"The FlowFuse Expert gives step-by-step instructions for building flows",[15,2026,2027,2028,2033],{},"You can now get complete instructions for building a Node-RED flow on ",[43,2029,2032],{"href":2030,"rel":2031},"https:\u002F\u002Fflowfuse.com",[47],"flowfuse.com"," using the FlowFuse Expert! This newest feature in the FlowFuse AI toolkit provides detailed guidance on creating Node-RED flows for any purpose you have in mind.",[15,2035,2036,2037,2040],{},"Head over to ",[43,2038,2032],{"href":2030,"rel":2039},[47]," to check it out! We have big plans in mind for this feature, but can't say much yet. For now, it's enough to say that low code development is headed toward a whole new level with FlowFuse.",[19,2042,2044],{"id":2043},"flowfuse-expert-for-self-hosted-deployments","FlowFuse Expert for Self Hosted Deployments",[15,2046,2047,2048,2051],{},"Speaking of AI assistance, self-hosted FlowFuse deployments have until now not had access to the FlowFuse Expert inside of Node-RED, helping to complete flows using natural language for explanation of flows, creation of Dashboard, Function, and Tables nodes, and Snapshot descriptions. These had been available only to FlowFuse Cloud customers. I'm happy to say that our many self-hosted customers now (finally) can get access to this tool, which helps speed flow creation exponentially. Contact ",[43,2049,1989],{"href":1987,"rel":2050},[47]," to help get you setup.",[19,2053,2055],{"id":2054},"import-json-at-instance-creation","Import JSON at Instance Creation",[15,2057,2058],{},"Developers want the fastest way to spin up a functional Node-RED instance, and we've taken another step in that direction by offering the option of uploading a JSON file during the instance creation workflow.",[1861,2060,1864],{"id":1863},[15,2062,2063],{},"What if you could surface your FlowFuse Tables data outside of the FlowFuse environment, for broader consumption as you see fit? Or use data coming into Node-RED to predict maintainance needs? We have exciting things on the way for you!",[19,2065,2067],{"id":2066},"dont-miss-node-red-con-2025","Don't Miss Node-RED Con 2025!",[15,2069,2070,2071],{},"While not exactly a release item, I'd be remiss if I failed to mention Node-RED Conference 2025! We've got a great lineup of speakers who will cover a broad and deep variety of topics on the use of Node-RED. Check out the website and register here: ",[43,2072,2073],{"href":2073,"rel":2074},"https:\u002F\u002Fnrcon.nodered.org\u002F.",[47],[19,2076,148],{"id":147},[15,2078,2079,2080,190],{},"For a complete list of everything included in our 2.23 release, check out the ",[43,2081,189],{"href":2082,"rel":2083},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Freleases\u002Ftag\u002Fv2.23.0",[47],[15,2085,1558,2086,190],{},[43,2087,1563],{"href":1561,"rel":2088},[47],[15,2090,1894,2091,1899],{},[43,2092,1898],{"href":1897},[19,2094,202],{"id":201},[27,2096,206],{"id":205},[15,2098,1573],{},[15,2100,1576],{},[27,2102,213],{"id":212},[15,2104,1581,2105,221,2107,190],{},[43,2106,220],{"href":219},[43,2108,225],{"href":224},{"title":77,"searchDepth":227,"depth":227,"links":2110},[2111,2112,2113,2114,2115,2116,2117,2118,2119],{"id":1953,"depth":230,"text":1954},{"id":1977,"depth":230,"text":1978},{"id":1993,"depth":230,"text":1994},{"id":1782,"depth":230,"text":1783},{"id":2043,"depth":230,"text":2044},{"id":2054,"depth":230,"text":2055},{"id":2066,"depth":230,"text":2067},{"id":147,"depth":230,"text":148},{"id":201,"depth":230,"text":202,"children":2120},[2121,2122],{"id":205,"depth":233,"text":206},{"id":212,"depth":233,"text":213},"2025-10-23","MCP and ONNX nodes, FlowFuse AI Expert on the homepage, Application-level Permission Control, FlowFuse Expert for Self-Hosted, and more!","\u002Fblog\u002F2025\u002F10\u002Fimages\u002Fflowfuse-release-2-23.png",{"excerpt":2127},{"type":12,"value":2128},[2129],[15,2130,1950],{},"\u002Fblog\u002F2025\u002F10\u002Fflowfuse-release-2-23",{"title":1944,"description":2124},{"loc":2131},"blog\u002F2025\u002F10\u002Fflowfuse-release-2-23",[270,271,272,994],"f9vf2PTx0DLYtfxgXSj7erwPgnjWvzLxBdylRFG0LE8",{"id":2138,"title":2139,"authors":2140,"body":2141,"cta":3,"date":2378,"description":2379,"extension":256,"image":2380,"lastUpdated":3,"meta":2381,"navigation":263,"path":2386,"seo":2387,"sitemap":2388,"stem":2389,"subtitle":2379,"tags":2390,"tldr":3,"video":3,"__hash__":2391},"blog\u002Fblog\u002F2025\u002F09\u002Fflowfuse-release-2-22.md","FlowFuse 2.22: FlowFuse Expert for node editing, FlowFuse Broker schema autodetection, Improved Snapshots Interface, eCharts enablement, and FlowFuse Dashboard Updates",[1612],{"type":12,"value":2142,"toc":2360},[2143,2146,2150,2159,2162,2165,2169,2178,2181,2184,2188,2191,2194,2197,2211,2215,2224,2227,2230,2233,2237,2240,2243,2247,2250,2257,2261,2264,2268,2271,2288,2290,2293,2297,2300,2303,2312,2316,2319,2323,2326,2328,2335,2340,2344,2346,2348,2350,2352,2354],[15,2144,2145],{},"FlowFuse 2.22 provides more powerful development by bringing the FlowFuse Assistant to more nodes, supports operational maturity with automatic FlowFuse Broker schema detection, and enhances the developer experience with an improved Snapshots interface, support for more powerful visualizations, a better Device Agent Installer experience, Dashboard updates, and more! Take a look:",[19,2147,2149],{"id":2148},"ai-expert-for-node-editing","AI Expert for Node Editing",[15,2151,2152,2156],{},[74,2153],{"alt":2154,"src":2155},"Gif showing FlowFuse Expert in Function node","\u002Fblog\u002F2025\u002F09\u002Fimages\u002Finline-assist-function.gif",[128,2157,2158],{},"FlowFuse Expert at work",[15,2160,2161],{},"We've enhanced the capabilities of the FlowFuse Expert, which now provides automatic suggestions to draft and edit your code that extends to Tables nodes, Dashboard Template nodes (ui-template), and Function nodes. You can now simply start typing, and the FlowFuse Assistant will provide code for you based on your context, making the FlowFuse Assistant your AI copilot in Node-RED.",[15,2163,2164],{},"With this change, the FlowFuse assistant can now write HTML, CSS, SQL, Javascript, and JSON, all based on your words, and with awareness of your FlowFuse environment (like your Tables structure), cursor position, and where in your code you are editing.",[19,2166,2168],{"id":2167},"flowfuse-team-broker-automatic-schema-detection","FlowFuse Team Broker Automatic Schema Detection",[15,2170,2171,2175],{},[74,2172],{"alt":2173,"src":2174},"Image showing schema detection","\u002Fblog\u002F2025\u002F09\u002Fimages\u002Fschema-autodetect.png",[128,2176,2177],{},"Enable schema autodetection for FlowFuse Broker",[15,2179,2180],{},"Documenting a broker schema can be a challenging and time-consuming task, which is why we've provided schema autodetection for the FlowFuse Broker. With the click of a button, our broker will now listen for topics and provide suggestions for the topic schema that you can accept or revise, and these will be added to documentation for your broker.",[15,2182,2183],{},"This will keep your team aligned on message format and serve as a single source of truth for maintaining your Unified Namespace.",[19,2185,2187],{"id":2186},"enablement-for-apache-echarts","Enablement for Apache eCharts",[15,2189,2190],{},"With this release, we are now positioned to enable much more powerful and visually-compelling charts to FlowFuse Dashboard, and have significantly increased chart performance.",[15,2192,2193],{},"We've enabled the use of Apache eCharts. It used to take 8.3 seconds to render 1,000 data points, and now it takes 75 milliseconds -- that is about 111 times faster performance!",[15,2195,2196],{},"While the primary work for Apache eCharts has been to enable the addition of new chart types, we did add one new type of chart: categorical line charts.",[15,2198,2199,2200,2205,2206,118],{},"Which charts would you like to see added first? ",[43,2201,2204],{"href":2202,"rel":2203},"https:\u002F\u002Fecharts.apache.org\u002Fexamples\u002Fen\u002Findex.html",[47],"Check out these examples of what is now possible",", and reach out on ",[43,2207,2210],{"href":2208,"rel":2209},"https:\u002F\u002Fgithub.com\u002Fflowfuse\u002Fnode-red-dashboard",[47],"GitHub",[19,2212,2214],{"id":2213},"updated-snapshots-ui","Updated Snapshots UI",[15,2216,2217,2221],{},[74,2218],{"alt":2219,"src":2220},"Image of updated Snapshots user interface","\u002Fblog\u002F2025\u002F09\u002Fimages\u002Fsnapshots-ui.png",[128,2222,2223],{},"Manage Snapshots in the new panel",[15,2225,2226],{},"Snapshots are now much easier to manage and interact with.",[15,2228,2229],{},"The Snapshots user interface now provides a centralized place to manage your snapshots, providing a preview of the snapshot, download options, restore, edit name and description, and compare to other snapshots, all in one easy-to-manage location in the right side of the interface.",[15,2231,2232],{},"While the features available for managing Snapshots remain, this update brings those features to the surface in a much cleaner and more intuitive way.",[19,2234,2236],{"id":2235},"remote-instance-snapshot-summaries","Remote Instance Snapshot Summaries",[15,2238,2239],{},"Speaking of Snapshots: until this release, our automatic snapshot summary feature only worked with hosted instances. As of today, you can now get AI-generated summaries of snapshots of your remote instances as well.",[15,2241,2242],{},"This is especially important for users with large remote instance deployments, and provides an important step forward in enabling FlowFuse users to manage and scale their deployments.",[19,2244,2246],{"id":2245},"saml-group-assertions-for-dashboard-development","SAML Group Assertions for Dashboard Development",[15,2248,2249],{},"Managing Dashboard permissions when building flows just got easier for Enterprise teams using SSO.",[15,2251,2252,2253,2256],{},"We've added an new option so that a users SSO Group memberships can be included in the ",[380,2254,2255],{},"user"," object Dashboard flows receive when a user is logged in. This makes it much easier to build custom permissions into your FlowFuse Dashboard applications, giving you far more flexibility.",[19,2258,2260],{"id":2259},"device-agent-installer-handles-multiple-remote-instances","Device Agent Installer handles Multiple Remote Instances",[15,2262,2263],{},"We're continuing to work on making the process for installing the Device Agent as simple, easy, fast, and reliable as possible. With this release, the Device Agent Installer can install multiple Device Agents on a single remote device, by allowing you to install the Device Agent in a non-default directory and specify a non-default port. In addition, clearer installation summaries, documentation links, and improved installer output have improved the overall usability of the installer.",[19,2265,2267],{"id":2266},"dashboard-fixes","Dashboard Fixes",[15,2269,2270],{},"Finally, we've made a number of small fixes that overall improve the Dashboard experience. These include:",[150,2272,2273,2276,2279,2282,2285],{},[153,2274,2275],{},"Changeable colors on the X-axis",[153,2277,2278],{},"Significantly decreased loading time for ui-chart",[153,2280,2281],{},"Categorical line chart option",[153,2283,2284],{},"Number inputs can be set to decimals",[153,2286,2287],{},"Fixed some display bugs with the display when the sidebar is collapsed or uncollapsed",[1861,2289,1864],{"id":1863},[15,2291,2292],{},"We're excited about a few more features that are just on the verge of being ready to ship! Here's a preview:",[19,2294,2296],{"id":2295},"detailed-access-control","Detailed Access Control",[15,2298,2299],{},"Until now, all user permissions in FlowFuse are set at the team level, where each user is either an Owner, Admin, Viewer, or Dashboard-only user, for everything in the team. If you wanted to set different permissions for different applications, you needed to put your application under a team where you had set the permissions you wanted: this made visibility difficult and increased the hassle of managing permissions.",[15,2301,2302],{},"Now, permissions can be set at the application level. If you're a team running many different applications and need to organize who can access what, you are able to do that for each individual appication, significantly increasing the security and management abilities of FlowFuse.",[15,2304,2305,2306,2311],{},"This feature will be available in the next few days - keep an eye on our ",[43,2307,2310],{"href":2308,"rel":2309},"https:\u002F\u002Fflowfuse.com\u002Fchangelog\u002F",[47],"ChangeLog"," for updates on when its available.",[19,2313,2315],{"id":2314},"ai-and-machine-vision","AI and Machine Vision",[15,2317,2318],{},"Be on the lookout for some very cool applications of AI to machine vision!",[19,2320,2322],{"id":2321},"whats-next","What's Next?",[15,2324,2325],{},"In the next release, we'll provide support for building AI agents, real-time streaming protocol, a far more flexible Dashboard, bringing the FlowFuse Assistant to all self-hosted customers, and more! Stay tuned!",[19,2327,148],{"id":147},[15,2329,2330,2331,190],{},"For a complete list of everything included in our 2.22 release, check out the ",[43,2332,189],{"href":2333,"rel":2334},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Freleases\u002Ftag\u002Fv2.22.0",[47],[15,2336,1558,2337,190],{},[43,2338,1563],{"href":1561,"rel":2339},[47],[15,2341,1894,2342,1899],{},[43,2343,1898],{"href":1897},[19,2345,202],{"id":201},[27,2347,206],{"id":205},[15,2349,1573],{},[15,2351,1576],{},[27,2353,213],{"id":212},[15,2355,1581,2356,221,2358,190],{},[43,2357,220],{"href":219},[43,2359,225],{"href":224},{"title":77,"searchDepth":227,"depth":227,"links":2361},[2362,2363,2364,2365,2366,2367,2368,2369,2370,2371,2372,2373,2374],{"id":2148,"depth":230,"text":2149},{"id":2167,"depth":230,"text":2168},{"id":2186,"depth":230,"text":2187},{"id":2213,"depth":230,"text":2214},{"id":2235,"depth":230,"text":2236},{"id":2245,"depth":230,"text":2246},{"id":2259,"depth":230,"text":2260},{"id":2266,"depth":230,"text":2267},{"id":2295,"depth":230,"text":2296},{"id":2314,"depth":230,"text":2315},{"id":2321,"depth":230,"text":2322},{"id":147,"depth":230,"text":148},{"id":201,"depth":230,"text":202,"children":2375},[2376,2377],{"id":205,"depth":233,"text":206},{"id":212,"depth":233,"text":213},"2025-09-25","FlowFuse Expert for node editing, FlowFuse Broker schema autodetection, Improved Snapshots Interface, eCharts enablement, and FlowFuse Dashboard Updates","blog\u002F2025\u002F09\u002Fimages\u002F2.22-release.png",{"excerpt":2382},{"type":12,"value":2383},[2384],[15,2385,2145],{},"\u002Fblog\u002F2025\u002F09\u002Fflowfuse-release-2-22",{"title":2139,"description":2379},{"loc":2386},"blog\u002F2025\u002F09\u002Fflowfuse-release-2-22",[270,271,272],"BqaWZXBOeLPc-nSzHC00Cepow_QIRmmPbdMSuE_ndB8",{"id":2393,"title":2394,"authors":2395,"body":2396,"cta":3,"date":2611,"description":2612,"extension":256,"image":2613,"lastUpdated":3,"meta":2614,"navigation":263,"path":2619,"seo":2620,"sitemap":2621,"stem":2622,"subtitle":2623,"tags":2624,"tldr":3,"video":3,"__hash__":2625},"blog\u002Fblog\u002F2025\u002F08\u002Fflowfuse-release-2-21.md","FlowFuse 2.21: AI-Assisted SQL, Low-Code Custom Nodes, and Remote Instance Performance Insights",[1612],{"type":12,"value":2397,"toc":2596},[2398,2401,2405,2414,2422,2425,2429,2438,2441,2444,2448,2451,2477,2480,2484,2492,2495,2498,2501,2505,2514,2522,2525,2529,2538,2541,2545,2554,2557,2559,2562,2564,2571,2576,2580,2582,2584,2586,2588,2590],[15,2399,2400],{},"It's been a very busy release and we have many great new features available on FlowFuse that will provide a better Node-RED development experience, makes it easier to develop and interface with your Unified Namespace, provide more insight into Remote Instance performance and new low-code tooling for building your own custom Node-RED nodes.",[19,2402,2404],{"id":2403},"assistant-functionality-in-tables-nodes","Assistant Functionality in Tables Nodes",[15,2406,2407,2411],{},[74,2408],{"alt":2409,"src":2410},"Gif showing FlowFuse Expert in Tables","\u002Fblog\u002F2025\u002F08\u002Fimages\u002Ftables.gif",[128,2412,2413],{},"FlowFuse Expert in Tables recognizes table schema and turns natural language prompts into SQL queries",[15,2415,2416,2417,2421],{},"Building on our successful ",[43,2418,2420],{"href":2419},"\u002Fblog\u002F2025\u002F07\u002Fflowfuse-release-2-20\u002F","Tables launch in 2.20",", we've now integrated AI assistance directly into our Tables nodes. This lowers the barrier for working with databases, reducing the dependency on SQL knowledge. With this, you can type a natural language prompt that will be interpreted in light of the structure of tables in your FlowFuse Tables, which enables an AI-supported autocomplete and assists with writing SQL specifically for connected FlowFuse tables.",[15,2423,2424],{},"This integration makes working with FlowFuse Tables even more accessible, allowing developers to leverage AI guidance for database operations without requiring deep SQL expertise.",[19,2426,2428],{"id":2427},"summarize-snapshots","Summarize Snapshots",[15,2430,2431,2435],{},[74,2432],{"alt":2433,"src":2434,"dataZoomable":77},"Screenshot showing snapshot summarization feature","\u002Fblog\u002F2025\u002F08\u002Fimages\u002Fsnapshot.png",[128,2436,2437],{},"New snapshot summarization provides clear, AI-generated descriptions of changes between versions",[15,2439,2440],{},"Managing instance versions becomes more intuitive with our new Snapshot Summary feature. When creating snapshots, FlowFuse can now automatically generate intelligent summaries that describes the changes introduced. This saves you time, and makes it much easier for teams to understand project evolution and quickly identify the right version for deployment or rollback scenarios.",[15,2442,2443],{},"Available for Pro and Enterprise.",[19,2445,2447],{"id":2446},"team-broker-nodes","Team Broker Nodes",[15,2449,2450],{},"Easily publish and subscribe to topics in the FlowFuse Broker using new Team Broker nodes. Send a message from a Node-RED flow directly into the FlowFuse Broker. These new nodes extend the Unified Namespace capabilities of FlowFuse and provide:",[150,2452,2453,2459,2465,2471],{},[153,2454,2455,2458],{},[35,2456,2457],{},"Publish Node",": Send messages to any topic on your team broker with configurable retention settings",[153,2460,2461,2464],{},[35,2462,2463],{},"Subscribe Node",": Receive messages from specified topics with flexible output formatting",[153,2466,2467,2470],{},[35,2468,2469],{},"Auto-Configuration",": Nodes automatically use your team's broker settings",[153,2472,2473,2476],{},[35,2474,2475],{},"TypedInput Support",": Dynamic topic configuration using message properties or static values",[15,2478,2479],{},"These nodes make working between Node-RED and the FlowFuse Broker much simpler and easier.",[19,2481,2483],{"id":2482},"low-code-custom-node-development","Low-Code Custom Node Development",[15,2485,2486,2491],{},[43,2487,2490],{"href":2488,"rel":2489},"https:\u002F\u002Fnodered.org\u002Fdocs\u002Fuser-guide\u002Feditor\u002Fworkspace\u002Fsubflows",[47],"Subflows"," are a great way in Node-RED to build custom nodes, all within the Node-RED Editor, and without having to write any code. The limitation of Subflows though is that they're constrained to just one Instance of Node-RED, they cannot be shared across your whole team. That is no longer the case.",[15,2493,2494],{},"We've now introduced the Subflow exporter which provides a low-code and intuitive way to create and manage custom nodes.",[15,2496,2497],{},"From the sidebar in your Node-RED Editor, you can now very easily create and manage custom nodes, without writing code or having to create and manage your own version control infrastructure. Simply create a flow in Node-RED, convert it to a subflow, fill out the package details for your new custom node and hit \"Publish\". Now your new node is available for all to install across your FlowFuse team.",[15,2499,2500],{},"Available for Enterprise customers only.",[19,2502,2504],{"id":2503},"remote-instance-observability","Remote Instance Observability",[15,2506,2507,2511],{},[74,2508],{"alt":2509,"src":2510},"Screenshot of remote instance monitoring interface","\u002Fblog\u002F2025\u002F08\u002Fimages\u002Fremote.png",[128,2512,2513],{},"Remote Instance monitoring in the Performance view provides usage insights",[15,2515,2516,2517,2521],{},"Following the success of our ",[43,2518,2520],{"href":2519},"\u002Fblog\u002F2025\u002F06\u002Fflowfuse-release-2-18\u002F#enhanced-observability-for-better-performance-management","Hosted Instance performance monitoring",", we've extended observability capabilities to include Remote Instances too. This extension gives insight into CPU usage and memory usage for your remote instances.",[15,2523,2524],{},"This enhancement is particularly valuable for industrial deployments where remote instances run critical processes across multiple locations.",[19,2526,2528],{"id":2527},"blueprint-energy-monitoring-dashboard","Blueprint: Energy Monitoring Dashboard",[15,2530,2531,2535],{},[74,2532],{"alt":2533,"src":2534},"Screenshot of energy monitoring dashboard","\u002Fblog\u002F2025\u002F08\u002Fimages\u002Fenergy-monitoring.png",[128,2536,2537],{},"Energy Monitoring Dashboard provides realtime usage and cost insights",[15,2539,2540],{},"This Blueprint provides a real-time energy monitoring dashboard template for industrial facilities. It features live consumption tracking, cost analytics, spike detection, and historical trending with an integrated energy rate display. Perfect for demonstrating IoT energy management capabilities, and with Node-RED, it is fully customizable.",[19,2542,2544],{"id":2543},"annual-billing-option","Annual Billing Option",[15,2546,2547,2551],{},[74,2548],{"alt":2549,"src":2550,"dataZoomable":77},"Screenshot of annual billing selection interface","\u002Fblog\u002F2025\u002F08\u002Fimages\u002Fannual-billing.png",[128,2552,2553],{},"New annual billing options provide cost savings and simplified budget planning",[15,2555,2556],{},"FlowFuse Cloud customers on Starter and Pro plans can now choose to subscribe on a yearly basis and receive a free month for doing so. This allows teams to save money compared to a monthly subscription and lock in current pricing.",[19,2558,2322],{"id":2321},[15,2560,2561],{},"For the next release, we're working on features that will enable you to connect your own AI models with Node-RED and FlowFuse, paving the way to create AI-supported automations in your applications.  We're also planning on pushing a lot of performance updates to Dashboard, and to make it even easier to build your own applications on FlowFuse. We're excited about it -- stay tuned!",[19,2563,148],{"id":147},[15,2565,2566,2567,190],{},"For a complete list of everything included in our 2.21 release, check out the ",[43,2568,189],{"href":2569,"rel":2570},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Freleases\u002Ftag\u002Fv2.21.0",[47],[15,2572,1558,2573,190],{},[43,2574,1563],{"href":1561,"rel":2575},[47],[15,2577,1894,2578,1899],{},[43,2579,1898],{"href":1897},[19,2581,202],{"id":201},[27,2583,206],{"id":205},[15,2585,1573],{},[15,2587,1576],{},[27,2589,213],{"id":212},[15,2591,1581,2592,221,2594,190],{},[43,2593,220],{"href":219},[43,2595,225],{"href":224},{"title":77,"searchDepth":227,"depth":227,"links":2597},[2598,2599,2600,2601,2602,2603,2604,2605,2606,2607],{"id":2403,"depth":230,"text":2404},{"id":2427,"depth":230,"text":2428},{"id":2446,"depth":230,"text":2447},{"id":2482,"depth":230,"text":2483},{"id":2503,"depth":230,"text":2504},{"id":2527,"depth":230,"text":2528},{"id":2543,"depth":230,"text":2544},{"id":2321,"depth":230,"text":2322},{"id":147,"depth":230,"text":148},{"id":201,"depth":230,"text":202,"children":2608},[2609,2610],{"id":205,"depth":233,"text":206},{"id":212,"depth":233,"text":213},"2025-08-28","Introducing FlowFuse Expert functionality in Tables to do natural language queries of your databases, Remote Instance observability to improve performance monitoring, Team Broker nodes to make MQTT even easier to work with, a new Energy Monitoring Blueprint, Annual Billing for Self-Service, AI-Generated Snapshot Summaries, and new subflow version control to provide low-code development of custom nodes","\u002Fblog\u002F2025\u002F08\u002Fimages\u002Frelease-2.21.png",{"excerpt":2615},{"type":12,"value":2616},[2617],[15,2618,2400],{},"\u002Fblog\u002F2025\u002F08\u002Fflowfuse-release-2-21",{"title":2394,"description":2612},{"loc":2619},"blog\u002F2025\u002F08\u002Fflowfuse-release-2-21","Introducing FlowFuse Expert functionality in Tables to do natural language queries of your databases, Remote Instance observability to improve performance monitoring, Team Broker nodes to make MQTT even easier to work with, a new Energy Monitoring Blueprint, Annual Billing for Self-Service, AI-Generated Snapshot Summaries, and new subflow version control to provide low-code development of custom nodes.",[270,271,272,994],"8UWySwr0H96hTqmMpomaTPTw1lKXOno5dUUK15wKxzk",{"id":2627,"title":2628,"authors":2629,"body":2630,"cta":3,"date":2823,"description":2824,"extension":256,"image":2825,"lastUpdated":3,"meta":2826,"navigation":263,"path":2831,"seo":2832,"sitemap":2833,"stem":2834,"subtitle":2835,"tags":2836,"tldr":3,"video":3,"__hash__":2837},"blog\u002Fblog\u002F2025\u002F07\u002Fflowfuse-release-2-20.md","FlowFuse 2.20: AI-Assisted Node-RED & New Database Service",[1612],{"type":12,"value":2631,"toc":2808},[2632,2635,2639,2647,2650,2653,2656,2660,2668,2671,2675,2684,2687,2690,2694,2700,2703,2706,2714,2718,2727,2730,2756,2759,2763,2766,2768,2771,2774,2776,2783,2788,2792,2794,2796,2798,2800,2802],[15,2633,2634],{},"This release represents a major leap forward in FlowFuse's data management and AI capabilities, introducing our new FlowFuse Tables database feature, along with enhanced AI assistance features and a streamlined user interface. These improvements make FlowFuse a complete solution for building industrial applications, even while reducing development time.",[19,2636,2638],{"id":2637},"introducing-flowfuse-tables","Introducing: FlowFuse Tables",[15,2640,2641,2645],{},[74,2642],{"alt":2643,"dataZoomable":77,"src":2644},"A screenshot of the new \"Tables\" view, now available in FlowFuse","\u002Fblog\u002F2025\u002F07\u002Fimages\u002Ftables-ui-screenshot.png",[128,2646,2643],{},[15,2648,2649],{},"FlowFuse Tables is our brand new database offering that provides a simple way to store your data, all within the FlowFuse ecosystem. This comprehensive database offering comes with FlowFuse's enterprise-grade security and unlocks the ability to seamlessly build critical systems like MES and ERP.",[15,2651,2652],{},"FlowFuse Tables eliminates the complexity of setting up and managing separate database infrastructure, allowing you to focus on building applications that drive operational efficiency.",[15,2654,2655],{},"FlowFuse Tables is available now for all Enterprise users running on FlowFuse Cloud.",[27,2657,2659],{"id":2658},"new-node-query","New Node: Query",[15,2661,2662,2666],{},[74,2663],{"alt":2664,"dataZoomable":77,"src":2665},"A flow in Node-RED that uses the new FlowFuse \"Query\" node","\u002Fblog\u002F2025\u002F07\u002Fimages\u002Ftables-query-node.png",[128,2667,2664],{},[15,2669,2670],{},"Alongside the new Tables offering, we have shipped a new node that you can find in your Node-RED Editor - \"Query\". This will automatically connect to any associated database you have with your team, saving you time in manually configuring nodes and credentials, giving you more time to just focus on the fun of building your flows, and making it really easy to start storing and querying your data.",[19,2672,2674],{"id":2673},"ai-assisted-node-red-with-smart-suggestions","AI-Assisted Node-RED with Smart Suggestions",[15,2676,2677,2681],{},[74,2678],{"alt":2679,"dataZoomable":77,"src":2680},"GIF of Smart Suggestions","\u002Fblog\u002F2025\u002F07\u002Fimages\u002Fsmart-suggestion.gif",[128,2682,2683],{},"GIF of Smart Suggestions in Action",[15,2685,2686],{},"Development in Node-RED is now even faster with Smart Suggestions, an agent that runs in-browser and offers intelligent flow completion for next-node recommendations. With Smart Suggestions, as you place a node, the agent will automatically calculate the most likely next node to place, and will offer suggestions for the node's configuration. It present up to 5 options, so even if the first suggestion isn't correct, it's very likely that the correct choice is only a quick keyboard shortcut away.",[15,2688,2689],{},"This work extends the functionality of the in-built FlowFuse Expert and it's MCP server that runs behind the Node-RED Editor to provide power additional development enhancements.",[19,2691,2693],{"id":2692},"new-blueprint-agentic-ai-with-retrieval-augmented-generation","New Blueprint: Agentic AI with Retrieval Augmented Generation",[15,2695,2696],{},[2697,2698],"video",{"src":2699,"controls":263},"https:\u002F\u002Fwebsite-data.s3.eu-west-1.amazonaws.com\u002FBlueprint+-+Open+AI+RAG.mp4",[15,2701,2702],{},"The new RAG (Retrieval Augmented Generation) Blueprint enables you to train your own LLM agents, combining your own data with natural language capabilities.",[15,2704,2705],{},"This Blueprint provides two flows: one that adds text into Node-RED's flow context store and uses it to train an OpenAI agent, so you can query the content of the flow directly; and one flow that scrapes websites to train an OpenAI agent so that content can be queried and used as well.",[15,2707,2708,2709],{},"The RAG Blueprint makes it easy to create intelligent agents that leverage your organizational knowledge without requiring deep AI expertise. ",[43,2710,2713],{"href":2711,"rel":2712},"https:\u002F\u002Fflowfuse.com\u002Fblueprints\u002Fai\u002Frag-chat-agent\u002F",[47],"Try it out for yourself here.",[19,2715,2717],{"id":2716},"refined-applications-page","Refined Applications Page",[15,2719,2720,2724],{},[74,2721],{"alt":2722,"dataZoomable":77,"src":2723},"Screenshot of New Applications Page","\u002Fblog\u002F2025\u002F07\u002Fimages\u002Fapplications-redesign.png",[128,2725,2726],{},"Screenshot of Redesigned Applications Page",[15,2728,2729],{},"With the new FlowFuse Home page in place, we have greatly streamlined the Applications page. The new structure includes:",[150,2731,2732,2738,2744,2750],{},[153,2733,2734,2737],{},[35,2735,2736],{},"Streamlined Navigation",": Applications now appear under Instances in the navigation hierarchy",[153,2739,2740,2743],{},[35,2741,2742],{},"Reduced Cognitive Load",": Eliminated the overwhelming number of buttons and links in the previous design",[153,2745,2746,2749],{},[35,2747,2748],{},"Focus on Important Information",": The newly refined design focusses on giving you a clear overview of the status of your Hosted and Remote Instances, split by Application.",[153,2751,2752,2755],{},[35,2753,2754],{},"Performance Optimizations",": The above has also lead to faster page loading and improved responsiveness",[15,2757,2758],{},"This redesign creates a more intuitive workflow that aligns with how teams actually use FlowFuse, reducing clicks and improving productivity.",[19,2760,2762],{"id":2761},"more-powerful-small-instances","More Powerful \"Small\" Instances",[15,2764,2765],{},"Based on user feedback and our own review of instance performance, we have increased the CPU and memory of all \"small\" Node-RED instances running on FlowFuse. This will have the immediate benefit of preventing slowdowns and loading issues for all Starter and Team customers.",[19,2767,2322],{"id":2321},[15,2769,2770],{},"Our development roadmap continues to focus on AI integration and enterprise data management. Upcoming releases will expand FlowFuse Tables with additional database types and analytics capabilities, while our FlowFuse Expert will gain more sophisticated workflow automation features.",[15,2772,2773],{},"We're also working on enhanced Blueprint offerings and deeper integration between our AI capabilities and industrial data sources, with several exciting announcements planned for the coming months!",[19,2775,148],{"id":147},[15,2777,2778,2779,190],{},"For a complete list of everything included in our 2.20 release, check out the ",[43,2780,189],{"href":2781,"rel":2782},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Freleases\u002Ftag\u002Fv2.20.0",[47],[15,2784,1558,2785,190],{},[43,2786,1563],{"href":1561,"rel":2787},[47],[15,2789,1894,2790,1899],{},[43,2791,1898],{"href":1897},[19,2793,202],{"id":201},[27,2795,206],{"id":205},[15,2797,1573],{},[15,2799,1576],{},[27,2801,213],{"id":212},[15,2803,1581,2804,221,2806,190],{},[43,2805,220],{"href":219},[43,2807,225],{"href":224},{"title":77,"searchDepth":227,"depth":227,"links":2809},[2810,2813,2814,2815,2816,2817,2818,2819],{"id":2637,"depth":230,"text":2638,"children":2811},[2812],{"id":2658,"depth":233,"text":2659},{"id":2673,"depth":230,"text":2674},{"id":2692,"depth":230,"text":2693},{"id":2716,"depth":230,"text":2717},{"id":2761,"depth":230,"text":2762},{"id":2321,"depth":230,"text":2322},{"id":147,"depth":230,"text":148},{"id":201,"depth":230,"text":202,"children":2820},[2821,2822],{"id":205,"depth":233,"text":206},{"id":212,"depth":233,"text":213},"2025-07-31","Introducing FlowFuse Tables for data storage, Tables nodes for dashboard visualization, Smart Suggestions in the Node-RED editor, More Powerful Starter tier, Retrieval Augmented Generation Blueprint for intelligent applications, and a redesigned Applications page for better workspace management.","\u002Fblog\u002F2025\u002F07\u002Fimages\u002Frelease-2-20.png",{"excerpt":2827},{"type":12,"value":2828},[2829],[15,2830,2634],{},"\u002Fblog\u002F2025\u002F07\u002Fflowfuse-release-2-20",{"title":2628,"description":2824},{"loc":2831},"blog\u002F2025\u002F07\u002Fflowfuse-release-2-20","Introducing FlowFuse Tables for data storage, Tables nodes for database querying, Smart Suggestions in the Node-RED editor, More Powerful Instances, Retrieval Augmented Generation Blueprint for building intelligent applications, and a redesigned Applications page for better workspace management.",[270,271,272,994],"AjKsBszu8JqUGjOuhbK86IhS5POL3x2NetmI6fVIano",{"id":2839,"title":2840,"authors":2841,"body":2842,"cta":3,"date":3054,"description":3055,"extension":256,"image":3056,"lastUpdated":3,"meta":3057,"navigation":263,"path":3062,"seo":3063,"sitemap":3064,"stem":3065,"subtitle":3066,"tags":3067,"tldr":3,"video":3,"__hash__":3068},"blog\u002Fblog\u002F2025\u002F07\u002Fflowfuse-release-2-19.md","FlowFuse 2.19: More Powerful AI in Node-RED, Drop-In Blueprints, Memory Monitoring, and Faster Onboarding",[1612],{"type":12,"value":2843,"toc":3040},[2844,2847,2851,2859,2862,2865,2868,2872,2882,2893,2896,2900,2908,2911,2914,2917,2921,2929,2932,2935,2939,2942,2945,2959,2963,2972,2975,2995,2998,3000,3003,3006,3008,3015,3020,3024,3026,3028,3030,3032,3034],[15,2845,2846],{},"This release focuses on speeding time to value with more powerful AI functionality within Node-RED, along with reducing friction for new users while enhancing the experience for existing users through improved Blueprint functionality, comprehensive performance monitoring, and a modernized interface that reflects FlowFuse's evolution.",[19,2848,2850],{"id":2849},"ai-enhancements-to-node-red","AI Enhancements to Node-RED",[15,2852,2853,2857],{},[74,2854],{"alt":2855,"src":2856},"GIF of AI Flow Explainer","\u002Fblog\u002F2025\u002F07\u002Fimages\u002Fassistant-0-3-0-flow-explainer-3tbNoRlb4T-1089.gif",[128,2858,2855],{},[15,2860,2861],{},"The FlowFuse Expert can now do more than create a Function node based on your text instructions. With this release, you can highlight a flow in the Node-RED editor and ask the FlowFuse Expert to explain the purpose of the flow. This new functionality is perfect for learning and collaboration.",[15,2863,2864],{},"You can also use the FlowFuse Expert to create Dashboard templates with HTML, VUE, Vuetify, and CSS, allowing you to build even faster.",[15,2866,2867],{},"Stay tuned for more developments as we continue to add enhancements to the Node-RED editor in FlowFuse to enable even faster development.",[19,2869,2871],{"id":2870},"comprehensive-performance-monitoring","Comprehensive Performance Monitoring",[15,2873,2874,2878,2881],{},[74,2875],{"alt":2876,"src":2877},"Screenshot of Memory in Performance Feature","\u002Fblog\u002F2025\u002F07\u002Fimages\u002FMemory.png",[128,2879,2880],{},"Screenshot of Memory Monitoring","\nBuilding on our existing CPU monitoring capabilities, we've added memory usage tracking to the Performance feature. This enhancement provides:",[150,2883,2884,2887,2890],{},[153,2885,2886],{},"Complete visibility into both CPU and memory utilization",[153,2888,2889],{},"Better understanding of instance resource consumption",[153,2891,2892],{},"More informed decision-making for scaling and optimization",[15,2894,2895],{},"With these features, you can now get a holistic view of your instance performance and make informed decisions about resource allocation.",[19,2897,2899],{"id":2898},"add-blueprints-to-existing-instances","Add Blueprints to Existing Instances",[15,2901,2902,2906],{},[74,2903],{"alt":2904,"src":2905},"Screenshot of Blueprint Import","\u002Fblog\u002F2025\u002F07\u002Fimages\u002Fblueprint-import.png",[128,2907,2904],{},[15,2909,2910],{},"Previously, Blueprints could only be used when creating new instances. Now you can import Blueprints into existing instances, making them much more versatile. Blueprints now appear as an option in the Import menu.",[15,2912,2913],{},"And if you're running Node-RED version 4.1, when you select a Blueprint to import that uses nodes not in your current palette, it will offer to install them automatically.",[15,2915,2916],{},"This change transforms Blueprints from a one-time instance creation tool into a constantly useful resource to speed your development with Node-RED.",[19,2918,2920],{"id":2919},"social-sign-in-for-easy-onboarding","Social Sign-in for Easy Onboarding",[15,2922,2923,2927],{},[74,2924],{"alt":2925,"src":2926},"Screenshot of Google Signin","\u002Fblog\u002F2025\u002F07\u002Fimages\u002Fsocial-sign-on.png",[128,2928,2925],{},[15,2930,2931],{},"To make it easier than ever to create a FlowFuse account, we've introduced social sign-in options that allow users to create FlowFuse Cloud accounts using their Google credentials.",[15,2933,2934],{},"This enhancement removes multiple steps from the onboarding process, making it significantly easier for new users to get started with FlowFuse.",[19,2936,2938],{"id":2937},"enhanced-device-agent-flow-selection","Enhanced Device Agent Flow Selection",[15,2940,2941],{},"Connecting your existing Node-RED instances running on remote devices is now even easier with the new Device Agent terminal file browser. When installing the Device Agent, you can now easily navigate your file system and select existing Node-RED instances through an interactive interface directly in the terminal.",[15,2943,2944],{},"This improvement replaces the previous manual file path entry process with:",[150,2946,2947,2950,2953,2956],{},[153,2948,2949],{},"An intuitive file browser that works directly in your terminal",[153,2951,2952],{},"Easy navigation through your file system to locate flows",[153,2954,2955],{},"Contextual information about flows including file size and modification dates",[153,2957,2958],{},"A streamlined selection process that reduces setup friction",[19,2960,2962],{"id":2961},"modernized-user-interface","Modernized User Interface",[15,2964,2965,2969],{},[74,2966],{"alt":2967,"src":2968},"Screenshot of New Homepage","\u002Fblog\u002F2025\u002F07\u002Fimages\u002Fhomepage.png",[128,2970,2971],{},"Screenshot of Homepage",[15,2973,2974],{},"The FlowFuse user interface was due for a restructuring in light of what users are looking for, along with a visual touchup. This release introduces a dedicated landing page that focuses on what we've learned users want to do when they first access FlowFuse. The new homepage provides:",[150,2976,2977,2980,2983,2986,2989,2992],{},[153,2978,2979],{},"Direct access to relevant hosted and remote instances",[153,2981,2982],{},"Smart prioritization based on recent activity and deployments",[153,2984,2985],{},"Prominent display of issues requiring attention (performance alerts, errors)",[153,2987,2988],{},"Recent team activity overview through audit log integration",[153,2990,2991],{},"Improved layout and visual hierarchy",[153,2993,2994],{},"Updated color scheme and styling",[15,2996,2997],{},"These changes make it easier to find what you are looking for within FlowFuse, address issues that may arise, and creates a more pleasant workspace.",[19,2999,2322],{"id":2321},[15,3001,3002],{},"Our development team continues to focus on AI integration and workflow optimization. The upcoming releases will build on these foundational improvements while introducing more intelligent automation and development assistance features.",[15,3004,3005],{},"We're also working on expanding our Blueprint library and improving the overall development experience within the Node-RED editor, with several exciting features planned for the coming months.",[19,3007,148],{"id":147},[15,3009,3010,3011,190],{},"For a complete list of everything included in our 2.19 release, check out the ",[43,3012,189],{"href":3013,"rel":3014},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Freleases\u002F",[47],[15,3016,1558,3017,190],{},[43,3018,1563],{"href":1561,"rel":3019},[47],[15,3021,1894,3022,1899],{},[43,3023,1898],{"href":1897},[19,3025,202],{"id":201},[27,3027,206],{"id":205},[15,3029,1573],{},[15,3031,1576],{},[27,3033,213],{"id":212},[15,3035,1581,3036,221,3038,190],{},[43,3037,220],{"href":219},[43,3039,225],{"href":224},{"title":77,"searchDepth":227,"depth":227,"links":3041},[3042,3043,3044,3045,3046,3047,3048,3049,3050],{"id":2849,"depth":230,"text":2850},{"id":2870,"depth":230,"text":2871},{"id":2898,"depth":230,"text":2899},{"id":2919,"depth":230,"text":2920},{"id":2937,"depth":230,"text":2938},{"id":2961,"depth":230,"text":2962},{"id":2321,"depth":230,"text":2322},{"id":147,"depth":230,"text":148},{"id":201,"depth":230,"text":202,"children":3051},[3052,3053],{"id":205,"depth":233,"text":206},{"id":212,"depth":233,"text":213},"2025-07-03","AI enhancements to Node-RED, streamlined onboarding with social authentication, improved Blueprint experience, more comprehensive performance monitoring, and a refreshed user interface.","\u002Fblog\u002F2025\u002F07\u002Fimages\u002Frelease-2-19.png",{"excerpt":3058},{"type":12,"value":3059},[3060],[15,3061,2846],{},"\u002Fblog\u002F2025\u002F07\u002Fflowfuse-release-2-19",{"title":2840,"description":3055},{"loc":3062},"blog\u002F2025\u002F07\u002Fflowfuse-release-2-19","AI enhancements to Node-RED, streamlined onboarding with social authentication and device flow selection, improved Blueprint experience, more comprehensive performance monitoring, and a refreshed user interface.",[270,271,272],"1j8JC9RZYj46mLVHY3Ct0hKdh_jvSqmE2-kqe1A6vy0",{"id":3070,"title":3071,"authors":3072,"body":3073,"cta":3,"date":3234,"description":3235,"extension":256,"image":3236,"lastUpdated":3,"meta":3237,"navigation":263,"path":3242,"seo":3243,"sitemap":3244,"stem":3245,"subtitle":3235,"tags":3246,"tldr":3,"video":3,"__hash__":3247},"blog\u002Fblog\u002F2025\u002F06\u002Fflowfuse-release-2-18.md","FlowFuse 2.18: Smarter Monitoring, AI Integration, Improved DevOps, and a preview of exciting things to come",[1612],{"type":12,"value":3074,"toc":3222},[3075,3078,3082,3091,3094,3097,3101,3109,3112,3115,3118,3126,3130,3133,3136,3143,3147,3150,3159,3162,3166,3169,3172,3175,3181,3183,3189,3195,3200,3203,3205,3207,3214,3216,3219],[15,3076,3077],{},"This release is focused on improvements that help you manage and optimize the performance of your Node-RED instances and takes an important step in integrating AI with FlowFuse so that you can build applications even more quickly.",[19,3079,3081],{"id":3080},"enhanced-observability-for-better-performance-management","Enhanced Observability for Better Performance Management",[15,3083,3084,3088],{},[74,3085],{"alt":3086,"src":3087},"Screenshot of Performance feature","\u002Fblog\u002F2025\u002F06\u002Fimages\u002Fobservability1.png",[128,3089,3090],{},"Screenshot of Performance Feature",[15,3092,3093],{},"Understanding how your Node-RED instances perform is crucial for maintaining reliable applications. Our new observability feature provides detailed CPU usage metrics at both the instance and team levels, giving you the visibility needed to optimize performance and troubleshoot issues before they impact your operations.",[15,3095,3096],{},"With these insights, you can make informed decisions about scaling your instances, identify performance bottlenecks, and ensure your Node-RED instances run smoothly in production environments. This feature is available exclusively for Enterprise customers, providing the enterprise-grade monitoring capabilities your organization needs.",[19,3098,3100],{"id":3099},"blueprint-openai-llm-with-chat-agent","Blueprint: OpenAI LLM with Chat Agent",[15,3102,3103,3106],{},[2697,3104],{"src":3105,"controls":263},"https:\u002F\u002Fwebsite-data.s3.eu-west-1.amazonaws.com\u002FBlueprint+-+Open+AI+Chat.mp4",[128,3107,3108],{},"Video of OpenAI LLM Blueprint demo",[15,3110,3111],{},"We're bringing AI speed and power directly to your FlowFuse Dashboard. The new LLM Blueprint enables you to deploy an AI chat agent that can query and analyze data connected to your FlowFuse environment.",[15,3113,3114],{},"This Blueprint makes it simple to surface insights relevant to your Node-RED flows, allowing team members to ask natural language questions and get immediate answers about their connected systems and devices. Whether you're monitoring sensor data, analyzing trends, or troubleshooting issues, the AI chat agent will speed up your workflow.",[15,3116,3117],{},"Check out the video demo to see it in action, featuring the agent connected to a worldmap node!",[15,3119,3120,3121],{},"To put this Blueprint to use, check out the Blueprint page for ",[43,3122,3125],{"href":3123,"rel":3124},"https:\u002F\u002Fflowfuse.com\u002Fblueprints\u002Fai\u002Fllm-chat-agent\u002F",[47],"OpenAI LLM Chat Agent.",[19,3127,3129],{"id":3128},"complete-git-integration-with-pull-support","Complete Git Integration with Pull Support",[15,3131,3132],{},"Building on our previous Git push functionality, we've now added Git pull support, completing the core Git integration experience within FlowFuse.",[15,3134,3135],{},"You can now seamlessly synchronize changes from your remote repositories, collaborate more effectively with team members, and maintain consistent version history across your Node-RED projects.",[15,3137,3138,3139,190],{},"More details are available in the ",[43,3140,3142],{"href":3141},"\u002Fchangelog\u002F2025\u002F06\u002Fgit-integration\u002F","Git Integration changelog",[19,3144,3146],{"id":3145},"self-hosted-blueprint-support","Self-Hosted Blueprint Support",[15,3148,3149],{},"Organizations running self-hosted FlowFuse installations can now take advantage of the Blueprints we publish, bringing the same rapid development capabilities to on-premises and private cloud deployments.",[15,3151,3152,3153,3158],{},"Self-hosted installations will automatically pull down the ",[43,3154,3157],{"href":3155,"rel":3156},"https:\u002F\u002Fflowfuse.com\u002Fblueprints\u002F",[47],"blueprint library",", and will stay up to date when we publish new blueprints.",[15,3160,3161],{},"This update ensures that all FlowFuse users, regardless of their deployment model, can benefit from our growing library of pre-built solutions.",[19,3163,3165],{"id":3164},"where-are-we-headed","Where are we headed?",[15,3167,3168],{},"Our Engineering team is hard at work on the next major developments in bringing the speed of AI to FlowFuse, developing AI functionality that will be integrated directly into the Node-RED editor. This upcoming feature set will dramatically accelerate your development process, helping you build and deploy applications faster than ever before.",[15,3170,3171],{},"By combining AI assistance with Node-RED's visual programming approach, we're creating a development experience that's both more intuitive for newcomers and more powerful for experienced developers.",[15,3173,3174],{},"Here is a sneak peek of something we're working on: an AI chat in the Node-RED editor that allows you to ask questions about the instance you are working in.",[15,3176,3177],{},[74,3178],{"alt":3179,"src":3180},"Preview of AI in Node-RED Editor","\u002Fblog\u002F2025\u002F06\u002Fimages\u002FAI_preview.gif",[19,3182,148],{"id":147},[15,3184,3185,3186,190],{},"For a full list of everything that went into our 2.18 release, you can check out the ",[43,3187,189],{"href":3013,"rel":3188},[47],[15,3190,3191,3192,190],{},"We're always working to enhance your experience with FlowFuse. We're always interested in your thoughts about FlowFuse too. Your feedback is crucial to us, and we'd love to hear about your experiences with the new features and improvements. Please share your thoughts, suggestions, or report any ",[43,3193,1563],{"href":1561,"rel":3194},[47],[15,3196,3197,3198,190],{},"Which feature do you think you're most likely to use? Email me directly and let me know! You can reach me at ",[43,3199,1898],{"href":1897},[15,3201,3202],{},"Together, we can make FlowFuse better with each release!",[19,3204,202],{"id":201},[27,3206,213],{"id":212},[15,3208,3209,3210,221,3212,190],{},"We're confident you can have self managed FlowFuse running locally in under 30 minutes. You can install FlowFuse using ",[43,3211,220],{"href":219},[43,3213,225],{"href":224},[27,3215,206],{"id":205},[15,3217,3218],{},"The quickest and easiest way to get started with FlowFuse is FlowFuse Cloud.",[15,3220,3221],{},"[Get started for free]({% include \"sign-up-url.njk\" %}) now, and you'll have your own Node-RED instances running in the Cloud within minutes.",{"title":77,"searchDepth":227,"depth":227,"links":3223},[3224,3225,3226,3227,3228,3229,3230],{"id":3080,"depth":230,"text":3081},{"id":3099,"depth":230,"text":3100},{"id":3128,"depth":230,"text":3129},{"id":3145,"depth":230,"text":3146},{"id":3164,"depth":230,"text":3165},{"id":147,"depth":230,"text":148},{"id":201,"depth":230,"text":202,"children":3231},[3232,3233],{"id":212,"depth":233,"text":213},{"id":205,"depth":233,"text":206},"2025-06-05","Monitor and improve instance performance, run AI chat in your Dashboard, Git pull, and more.","\u002Fblog\u002F2025\u002F06\u002Fimages\u002Frelease-2-18.png",{"excerpt":3238},{"type":12,"value":3239},[3240],[15,3241,3077],{},"\u002Fblog\u002F2025\u002F06\u002Fflowfuse-release-2-18",{"title":3071,"description":3235},{"loc":3242},"blog\u002F2025\u002F06\u002Fflowfuse-release-2-18",[270,271,272,994],"ncR93KLRKpL8WizzngXf3ZGiIaBvBkUIqQyqxNObK8o",{"id":3249,"title":3250,"authors":3251,"body":3252,"cta":3,"date":3398,"description":3399,"extension":256,"image":3400,"lastUpdated":3,"meta":3401,"navigation":263,"path":3406,"seo":3407,"sitemap":3408,"stem":3409,"subtitle":3399,"tags":3410,"tldr":3,"video":3,"__hash__":3411},"blog\u002Fblog\u002F2025\u002F05\u002Fflowfuse-release-2-17.md","FlowFuse 2.17: Easier remote instance onboarding, Dashboard blueprint, PDF generation, and more",[1612],{"type":12,"value":3253,"toc":3387},[3254,3257,3261,3264,3267,3270,3273,3277,3285,3288,3291,3294,3301,3305,3313,3316,3319,3322,3330,3332,3353,3356,3358,3364,3369,3371,3373,3375,3381,3383,3385],[15,3255,3256],{},"This release is focused on improvements that help you get up and running with FlowFuse much more quickly. Our vision is that you can get started with FlowFuse and have a successful application up and running, from scratch, in hours, not days, weeks or months. This release gets us closer to that vision by focusing on improvements to the installation process for the Device Agent, and two new Blueprints.",[19,3258,3260],{"id":3259},"device-agent-onboarding","Device Agent onboarding",[15,3262,3263],{},"If you already had a Node-RED instance running on a device, it was a bit of a hassle to get it connected to FlowFuse as a remote instance. You had to install the Device Agent, find that it clashed with your existing instance, turn off that instance, run the Device Agent again, find that you can't import your existing instance...and so on, until finally getting copies of your flows and adding them to FlowFuse manually.",[15,3265,3266],{},"Lots of friction. We heard you.",[15,3268,3269],{},"Now, when you install the Device Agent, it will automatically scan for an existing Node-RED instance running locally and help you import its flows into FlowFuse.",[15,3271,3272],{},"This streamlines the whole process, saving you valuable time and effort. It ensures you can manage the Node-RED flows running on your edge device as quickly as possible.",[19,3274,3276],{"id":3275},"blueprint-getting-started-with-dashboard","Blueprint: Getting Started with Dashboard",[15,3278,3279,3283],{},[74,3280],{"alt":3281,"src":3282},"Screenshot of Getting Started with Dashboard","\u002Fblog\u002F2025\u002F05\u002Fimages\u002Fdashboard.png",[128,3284,3281],{},[15,3286,3287],{},"One of the most popular features of Node-RED is Dashboard 2.0. And starting now, getting started with Dashboard is as simple as one click.",[15,3289,3290],{},"Our new Getting Started with Dashboard Blueprint deploys to a new Node-RED instance in a single click and demonstrates several examples of how to use Dashboard. These include various ways of visualizing data, the data entry widget that allows direct entry to a table, and audit log creation.",[15,3292,3293],{},"New Dashboard nodes are added on a regular basis, and we will keep in mind which ones users would like help using as we iterate on this Blueprint.",[15,3295,3120,3296],{},[43,3297,3300],{"href":3298,"rel":3299},"https:\u002F\u002Fflowfuse.com\u002Fblueprints\u002Fgetting-started\u002Fdashboard\u002F",[47],"Getting Started with Dashboard.",[19,3302,3304],{"id":3303},"blueprint-pdf-report-generator","Blueprint: PDF Report Generator",[15,3306,3307,3311],{},[74,3308],{"alt":3309,"src":3310},"Screenshot of PDF Report Generator","\u002Fblog\u002F2025\u002F05\u002Fimages\u002Fpdf-flow.png",[128,3312,3309],{},[15,3314,3315],{},"Until now, creating a presentable report using data accessed in your Node-RED instance was a manual effort.",[15,3317,3318],{},"This new Blueprint makes it very easy to create PDF reports from your data. Using SQLite nodes and connecting to your database, this Blueprint  enables drag-and-drop field selection.",[15,3320,3321],{},"To get you started using this Blueprint, we've included sample data that is generated automatically.",[15,3323,3324,3325],{},"Instructions for using this Blueprint, including how to map fields from your database to our preconfigured fields, ",[43,3326,3329],{"href":3327,"rel":3328},"https:\u002F\u002Fflowfuse.com\u002Fblueprints\u002Fmanufacturing\u002Fpdf-report-generator\u002F",[47],"check out the Blueprint page.",[19,3331,3165],{"id":3164},[15,3333,3334,3335,3340,3341,3346,3347,3352],{},"We are focused on making it as easy as possible to get started with Node-RED, to manage Node-RED instances, and start building applications quickly. Some improvements on the way include ",[43,3336,3339],{"href":3337,"rel":3338},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F5415",[47],"pulling from a Git repo"," (we shipped Git push last release), including ",[43,3342,3345],{"href":3343,"rel":3344},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F5179",[47],"Blueprints for self-hosted installations",", and ",[43,3348,3351],{"href":3349,"rel":3350},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F223",[47],"better information about resource usage",". We're also busy at work on a number of core Node-RED items for the forthcoming 4.1.0 release.",[15,3354,3355],{},"With this work and more on the way, we are continuing to deliver our vision of FlowFuse being the best way to unlock your industrial data, integrate everything and optimize faster.",[19,3357,148],{"id":147},[15,3359,3360,3361,190],{},"For a full list of everything that went into our 2.17 release, you can check out the ",[43,3362,189],{"href":3013,"rel":3363},[47],[15,3365,3191,3366,190],{},[43,3367,1563],{"href":1561,"rel":3368},[47],[15,3370,3202],{},[19,3372,202],{"id":201},[27,3374,213],{"id":212},[15,3376,3209,3377,221,3379,190],{},[43,3378,220],{"href":219},[43,3380,225],{"href":224},[27,3382,206],{"id":205},[15,3384,3218],{},[15,3386,3221],{},{"title":77,"searchDepth":227,"depth":227,"links":3388},[3389,3390,3391,3392,3393,3394],{"id":3259,"depth":230,"text":3260},{"id":3275,"depth":230,"text":3276},{"id":3303,"depth":230,"text":3304},{"id":3164,"depth":230,"text":3165},{"id":147,"depth":230,"text":148},{"id":201,"depth":230,"text":202,"children":3395},[3396,3397],{"id":212,"depth":233,"text":213},{"id":205,"depth":233,"text":206},"2025-05-08","Build a dashboard in one click, create PDF reports from your data, and import instances when installing Device Agent","\u002Fblog\u002F2025\u002F05\u002Fimages\u002Frelease-2-17.png",{"excerpt":3402},{"type":12,"value":3403},[3404],[15,3405,3256],{},"\u002Fblog\u002F2025\u002F05\u002Fflowfuse-release-2-17",{"title":3250,"description":3399},{"loc":3406},"blog\u002F2025\u002F05\u002Fflowfuse-release-2-17",[270,271,272],"yr75TfP9ouQ5lQyywTS4PkumnQsjCAr0p12-s5AH2xM",{"id":3413,"title":3414,"authors":3415,"body":3416,"cta":3,"date":3612,"description":3613,"extension":256,"image":3614,"lastUpdated":3,"meta":3615,"navigation":263,"path":3623,"seo":3624,"sitemap":3625,"stem":3626,"subtitle":3613,"tags":3627,"tldr":3,"video":3,"__hash__":3628},"blog\u002Fblog\u002F2025\u002F04\u002Fflowfuse-release-2-16.md","FlowFuse 2.16: Git Integration, improved log retention and more",[1472],{"type":12,"value":3417,"toc":3598},[3418,3427,3431,3439,3442,3445,3448,3451,3462,3465,3468,3471,3475,3478,3481,3484,3487,3495,3499,3502,3505,3512,3516,3519,3522,3525,3529,3532,3535,3541,3549,3556,3564,3567,3574,3579,3581,3583,3585,3591,3593,3596],[15,3419,3420,3421,3426],{},"Another release from the FlowFuse team to keep ",[43,3422,3425],{"href":3423,"rel":3424},"https:\u002F\u002Fflowfuse.com\u002Fhandbook\u002Fcompany\u002Fstrategy\u002F",[47],"realising our mission"," to empower you to fuse the digital realm and physical reality.",[19,3428,3430],{"id":3429},"git-integration","Git Integration",[15,3432,3433,3437],{},[74,3434],{"alt":3435,"dataZoomable":77,"src":3436},"Screenshot of a Git Pipeline Stage","\u002Fblog\u002F2025\u002F04\u002Fimages\u002Fgit-pipeline-stage.png",[128,3438,3435],{},[15,3440,3441],{},"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.",[15,3443,3444],{},"With this release, you can now add a Git Repository stage to your deployment pipelines. When the pipeline is triggered, the latest snapshot will get pushed to the configured repository.",[15,3446,3447],{},"This is very much a \"first-iteration\" of the feature that will allow us to get feedback early and continue to iterate.",[15,3449,3450],{},"With this release, the following restrictions apply:",[150,3452,3453,3456,3459],{},[153,3454,3455],{},"Only GitHub.com hosted repostories are supported",[153,3457,3458],{},"Users must create a GitHub Personal Access Token and add to their Team Settings",[153,3460,3461],{},"We currently only support pushing snapshots to a Git repository",[15,3463,3464],{},"This last point is important; this release lets you backup your flows to git, but we haven't yet enabled the return journey of pulling a snapshot from a Git repository back to your Node-RED instance. That'll come in the near future and will unlock a full git-based review workflow within the pipelines.",[15,3466,3467],{},"We'll also look at enabling other Git hosting providers - let us know which you'd like to see on the list.",[15,3469,3470],{},"This feature is available to Enterprise teams on FlowFuse Cloud and self-hosted customers.",[19,3472,3474],{"id":3473},"better-node-red-log-handling","Better Node-RED log handling",[15,3476,3477],{},"We've improved the log handling within our Hosted Node-RED instances. Previously we were using a fix sized buffer in memory; meaning the noisier your Node-RED instance was, the less history you'd have. The UI for browsing the logs was also awkward when you wanted to jump back to an earlier section of the logs.",[15,3479,3480],{},"With this release, once you update your instances to the latest version, we will\nnow store the last 7 days worth of logs for each hosted Node-RED instance.",[15,3482,3483],{},"To go along side this, we've added the ability to jump to a specific time\u002Fdate in the logs without having to endlessly scroll.",[15,3485,3486],{},"To start benefiting from the extended logs, make sure you update the latest version via your Instance Settings page.",[15,3488,3489,3493],{},[74,3490],{"alt":3491,"dataZoomable":77,"src":3492},"Screenshot of browsing Node-RED logs by timestamp","\u002Fblog\u002F2025\u002F04\u002Fimages\u002Fbrowse-logs.png",[128,3494,3491],{},[19,3496,3498],{"id":3497},"remote-instance-provisioning","Remote Instance Provisioning",[15,3500,3501],{},"We've updated the provisioning token support to allow you to automatically assign your remote instances to an application within your team.",[15,3503,3504],{},"The option to assign to a hosted instance is still there, but being able to assign to the appilcation is more generally useful for most workflows on the platform.",[15,3506,3507,3508,190],{},"Details available in the ",[43,3509,183],{"href":3510,"rel":3511},"https:\u002F\u002Fflowfuse.com\u002Fchangelog\u002F2025\u002F04\u002Fdevice-provisioning\u002F",[47],[19,3513,3515],{"id":3514},"local-login-for-remote-instances","Local Login for Remote Instances",[15,3517,3518],{},"One of the great features of our Remote Instance management is that we enable secure remote access to the Node-RED editor through the platform. To date, this approach has meant we disable direct local access to the editor.",[15,3520,3521],{},"With the most recent Device Agent release, we've added the ability to configure a local user login for the editor. This can be used when the remote instance is not able to reach the FlowFuse platform.",[15,3523,3524],{},"We're keen for feedback on this and will continue to explore otherwise to provide secure local access to the remote instance.",[19,3526,3528],{"id":3527},"resource-alerts","Resource Alerts",[15,3530,3531],{},"We expanded the notficiations we send to help you track the health of your Node-RED instances. We will now send notifications if the CPU and\u002For memory usages exceeds 75% of the available capacity for a prolonged time.",[15,3533,3534],{},"You can further opt-in or out of these notifications via the instance settings.",[15,3536,3507,3537],{},[43,3538,183],{"href":3539,"rel":3540},"https:\u002F\u002Fflowfuse.com\u002Fchangelog\u002F2025\u002F03\u002Fresource-notifications\u002F",[47],[19,3542,3544,3545,3548],{"id":3543},"changes-to-tags-for-flowfusenode-red-containers","Changes to tags for ",[380,3546,3547],{},"flowfuse\u002Fnode-red"," containers",[15,3550,3551,3552,3555],{},"For kubernetes and docker environments, we've updated the base container our ",[380,3553,3554],{},"latest"," tag points at to ensure\nit defaults to the latest Node.js and Node-RED versions.",[15,3557,3558,3559,3563],{},"Check the ",[43,3560,183],{"href":3561,"rel":3562},"https:\u002F\u002Fflowfuse.com\u002Fchangelog\u002F2025\u002F03\u002Fcontainer-tags\u002F",[47]," entry for full details",[19,3565,3566],{"id":147},"What Else Is New?",[15,3568,3569,3570,190],{},"For a full list of everything that went into our 2.16 release, you can check out the ",[43,3571,189],{"href":3572,"rel":3573},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Freleases\u002Ftag\u002Fv2.16.0",[47],[15,3575,3191,3576,190],{},[43,3577,1563],{"href":1561,"rel":3578},[47],[15,3580,3202],{},[19,3582,202],{"id":201},[27,3584,213],{"id":212},[15,3586,3209,3587,221,3589,190],{},[43,3588,220],{"href":219},[43,3590,225],{"href":224},[27,3592,206],{"id":205},[15,3594,3595],{},"The quickest and easiest way to get started with FlowFuse is on our own hosted instance, FlowFuse Cloud.",[15,3597,3221],{},{"title":77,"searchDepth":227,"depth":227,"links":3599},[3600,3601,3602,3603,3604,3605,3607,3608],{"id":3429,"depth":230,"text":3430},{"id":3473,"depth":230,"text":3474},{"id":3497,"depth":230,"text":3498},{"id":3514,"depth":230,"text":3515},{"id":3527,"depth":230,"text":3528},{"id":3543,"depth":230,"text":3606},"Changes to tags for flowfuse\u002Fnode-red containers",{"id":147,"depth":230,"text":3566},{"id":201,"depth":230,"text":202,"children":3609},[3610,3611],{"id":212,"depth":233,"text":213},{"id":205,"depth":233,"text":206},"2025-04-10","Start pushing your snapshots to git, get alerted when resources are running low and more logging from Node-RED","\u002Fblog\u002F2025\u002F04\u002Fimages\u002Frelease-2-16.png",{"excerpt":3616},{"type":12,"value":3617},[3618],[15,3619,3420,3620,3426],{},[43,3621,3425],{"href":3423,"rel":3622},[47],"\u002Fblog\u002F2025\u002F04\u002Fflowfuse-release-2-16",{"title":3414,"description":3613},{"loc":3623},"blog\u002F2025\u002F04\u002Fflowfuse-release-2-16",[270,271,272],"tJlujfbPT9hyJzBMlUg6Iqbfd3hhsfBTWcrHgIy5mKI",{"id":3630,"title":3631,"authors":3632,"body":3634,"cta":3,"date":3840,"description":3841,"extension":256,"image":3842,"lastUpdated":3,"meta":3843,"navigation":263,"path":3866,"seo":3867,"sitemap":3868,"stem":3869,"subtitle":3841,"tags":3870,"tldr":3,"video":3,"__hash__":3871},"blog\u002Fblog\u002F2025\u002F03\u002Fflowfuse-release-2-15.md","FlowFuse 2.15: Personal Node Collections, Smart Schema Suggestions and more control in DevOps Pipelines!",[3633],"joe-pavitt",{"type":12,"value":3635,"toc":3822},[3636,3639,3667,3670,3679,3683,3686,3695,3699,3702,3711,3715,3719,3723,3726,3733,3736,3740,3743,3747,3750,3757,3760,3764,3767,3770,3774,3780,3790,3792,3799,3804,3806,3808,3810,3816,3818,3820],[15,3637,3638],{},"Our three focal points for the latest release of FlowFuse have been:",[150,3640,3641,3651,3661],{},[153,3642,3643,3646,3647,3650],{},[35,3644,3645],{},"Collaborative Development:"," Our new ",[35,3648,3649],{},"Custom Node Catalogues"," provides a place for you to centralise your own private nodes and Javascript libraries for Node-RED.",[153,3652,3653,3656,3657,3660],{},[35,3654,3655],{},"Full Stack Applications:"," We've added our new ",[35,3658,3659],{},"\"Smart Schema Suggestions\""," feature for automatically generating documentation for your MQTT Brokers.",[153,3662,3663,3666],{},[35,3664,3665],{},"DevOps:"," We've improved Pipelines now to let you deploy to Device Groups in the middle of a Pipeline, this is just the first step in a wider set of improvements to come for DevOps Pipelines.",[19,3668,3649],{"id":3669},"custom-node-catalogues",[15,3671,3672,3676],{},[74,3673],{"alt":3674,"src":3675,"dataZoomable":77},"Screenshot of the new \"Custom Nodes\" view in Team Library\"","\u002Fblog\u002F2025\u002F03\u002Fimages\u002Fscreenshot-custon-catalog.png",[128,3677,3678],{},"Screenshot of the new \"Custom Nodes\" view in Team Library",[27,3680,3682],{"id":3681},"pain-point","Pain Point",[15,3684,3685],{},"Many of our customers have very mature Node-RED setups, including large collections of their own, custom node packages that they have built. These packages range significantly in purpose, from small utility functions, to custom hardware integrations.",[15,3687,3688,3689,3694],{},"Until now, to utilise these packages within FlowFuse, you would either need to publish to the ",[43,3690,3693],{"href":3691,"rel":3692},"https:\u002F\u002Fflows.nodered.org\u002Fsearch?type=node",[47],"public Node-RED Community Catalogue",", meaning all of your nodes are available to anyone in the world using Node-RED, or you had to setup and manage your own private NPM registry, which is very time consuming and requires deeper technical knowledge.",[27,3696,3698],{"id":3697},"now-in-flowfuse","Now in FlowFuse",[15,3700,3701],{},"With our new update, every Team- and Enterprise-Tier Library in FlowFuse has an in-built private Node collection, ready for you to go. This means that you can push your custom node packages directly to that registry, and make it available to all of your Instances running in FlowFuse within seconds. This comes built in with full version control and all of the great update mechanisms that you already have in Node-RED.",[15,3703,3704,3705,3710],{},"This new feature also integrates seamlessly ith our ",[43,3706,3709],{"href":3707,"rel":3708},"https:\u002F\u002Fflowfuse.com\u002Fdocs\u002Fuser\u002Fbill-of-materials\u002F",[47],"Bill of Materials"," view, providing you the single source of truth to all of your Instance's dependencies in one-place, making it easier to audit and manage your Node-RED instances and their dependencies.",[19,3712,3714],{"id":3713},"mqtt-broker-integration","MQTT Broker Integration",[27,3716,3718],{"id":3717},"smart-schema-suggestions","Smart Schema Suggestions",[1022,3720],{"videoid":3721,"params":1025,"style":3722,"title":1027},"bNeTDJUZ1So","margin-bottom: 12px; width: 100%; height: 400px;",[15,3724,3725],{},"We are very pleased to announce our new \"Smart Suggestions\" feature. When working with an MQTT Broker for live data, it can be difficult to understand the structure of the data and topics that are being used. We recently released the new \"Hierarchy\" view, showing the topic structure present on a Broker, and we've now evolved that even further.",[15,3727,3728,3729,3732],{},"With Smart Suggestions, you will be presented with proposals as to what FlowFuse ",[128,3730,3731],{},"thinks"," your payload schema is, based on the data that is being published to your Broker. If you approve these suggestions, then FlowFuse wll start constructing a schema to represent the traffic on your Broker, and make that available in our new \"Schema Documentation\" view.",[15,3734,3735],{},"This will save you days of effort in documenting your Broker, and provide a single source of truth for your schema to ensure your team is always on the same page when working with your MQTT data.",[27,3737,3739],{"id":3738},"searching-for-topics","Searching for Topics",[15,3741,3742],{},"A very nice, small, improvement we've made to the Broker view too is the ability to search for topics to quickly find the topics of interest. This is a small but very useful feature, especially for those with large numbers of topics on their Broker, enabling you to find the topics of interest much faster.",[19,3744,3746],{"id":3745},"devops-pipelines-improvements","DevOps Pipelines Improvements",[15,3748,3749],{},"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, rolling out a single flow to thousands of Remote Instances within seconds.",[15,3751,3752,3753,3756],{},"Previously, you could only use a Group as the ",[128,3754,3755],{},"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 Remote Instances that you want to push updates to, before pushing them out to your larger group of production Instances.",[15,3758,3759],{},"This improvement not only saves time but also enhances the consistency and reliability of Remote Instance management across your fleet.",[19,3761,3763],{"id":3762},"removing-credit-card-requirement-for-free-tier","Removing Credit Card Requirement for Free Tier",[15,3765,3766],{},"When we recently introduced the new Free Tier for FlowFuse Cloud, we had some legacy architecture in place that meant that, whilst it was entirely free, the Free Tier still require you to put in credit card details.",[15,3768,3769],{},"This is something we've completely overhauled in the new version of FlowFuse, so now, you can just sign up and get started with building your own Remote Instances without the need for any credit card details. It was deployed to FlowFuse Cloud a week ago, and is already proving popular with new users. We can't wait to see what everyone builds on the free tier.",[19,3771,3773],{"id":3772},"flowfuse-dashboard-authentication-now-includes-users-role","FlowFuse Dashboard Authentication Now Includes User's Role",[15,3775,3776,3777,3779],{},"An enhancement to FlowFuse's underlying Node-RED launcher is the inclusion of the FlowFuse user's role in the ",[380,3778,2255],{}," object return by the FlowFuse User Addon. This means you can start building your own RBAC (Role Based Access Control) into your own Node-RED\u002FDashboard applications, without the need to define roles and access levels directly within your Node-RED flows.",[15,3781,3782,3787,3788],{},[74,3783],{"alt":3784,"src":3785,"width":3786},"Screenshot showing the inclusion of the user's role within Dashboard's \"user\" object","\u002Fblog\u002F2025\u002F03\u002Fimages\u002Fscreenshot-user-role.png","300px","{style=\"margin: auto\"}\n",[128,3789,3784],{},[19,3791,3566],{"id":147},[15,3793,3794,3795,190],{},"For a full list of everything that went into our 2.15 release, you can check out the ",[43,3796,189],{"href":3797,"rel":3798},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Freleases\u002Ftag\u002Fv2.15.0",[47],[15,3800,3191,3801,190],{},[43,3802,1563],{"href":1561,"rel":3803},[47],[15,3805,3202],{},[19,3807,202],{"id":201},[27,3809,213],{"id":212},[15,3811,3209,3812,221,3814,190],{},[43,3813,220],{"href":219},[43,3815,225],{"href":224},[27,3817,206],{"id":205},[15,3819,3595],{},[15,3821,3221],{},{"title":77,"searchDepth":227,"depth":227,"links":3823},[3824,3828,3832,3833,3834,3835,3836],{"id":3669,"depth":230,"text":3649,"children":3825},[3826,3827],{"id":3681,"depth":233,"text":3682},{"id":3697,"depth":233,"text":3698},{"id":3713,"depth":230,"text":3714,"children":3829},[3830,3831],{"id":3717,"depth":233,"text":3718},{"id":3738,"depth":233,"text":3739},{"id":3745,"depth":230,"text":3746},{"id":3762,"depth":230,"text":3763},{"id":3772,"depth":230,"text":3773},{"id":147,"depth":230,"text":3566},{"id":201,"depth":230,"text":202,"children":3837},[3838,3839],{"id":212,"depth":233,"text":213},{"id":205,"depth":233,"text":206},"2025-03-12","Start building out your own collection of private nodes and Javascript libraries for Node-RED with our new Custom Node catalogues","\u002Fblog\u002F2025\u002F03\u002Fimages\u002Frelease-2-15.png",{"excerpt":3844},{"type":12,"value":3845},[3846,3848],[15,3847,3638],{},[150,3849,3850,3856,3862],{},[153,3851,3852,3646,3854,3650],{},[35,3853,3645],{},[35,3855,3649],{},[153,3857,3858,3656,3860,3660],{},[35,3859,3655],{},[35,3861,3659],{},[153,3863,3864,3666],{},[35,3865,3665],{},"\u002Fblog\u002F2025\u002F03\u002Fflowfuse-release-2-15",{"title":3631,"description":3841},{"loc":3866},"blog\u002F2025\u002F03\u002Fflowfuse-release-2-15",[270,271,272],"TXV5uKBDkFdlFY2UwwJr_U8CVSgsVapRvKsgPp_0uYc",{"id":3873,"title":3874,"authors":3875,"body":3876,"cta":3,"date":4092,"description":4093,"extension":256,"image":4094,"lastUpdated":3,"meta":4095,"navigation":263,"path":4104,"seo":4105,"sitemap":4106,"stem":4107,"subtitle":4093,"tags":4108,"tldr":3,"video":3,"__hash__":4109},"blog\u002Fblog\u002F2025\u002F02\u002Fflowfuse-release-2-14.md","FlowFuse 2.14: Announcing Third-Party Broker Integration, UNS Schemas, Enhanced Auth on Remote Instances and more!",[3633],{"type":12,"value":3877,"toc":4074},[3878,3889,3893,3901,3904,3908,3911,3914,3918,3924,3933,3938,3941,3949,3952,3955,3959,3962,3970,3973,3976,3979,3982,3985,3989,3992,4007,4010,4014,4022,4025,4042,4044,4051,4056,4058,4060,4062,4068,4070,4072],[15,3879,3880,3881,3884,3885,3888],{},"This release is full of highlights, which we’ll break down into two key areas - the ",[35,3882,3883],{},"FlowFuse MQTT Experience"," and ",[35,3886,3887],{},"Remote Instances"," - so you can better digest all of the great new functionality introduced in FlowFuse 2.14.",[19,3890,3892],{"id":3891},"mqtt-experience-in-flowfuse","MQTT Experience in FlowFuse",[15,3894,3895,3896,3900],{},"In ",[43,3897,3899],{"href":3898},"\u002Fblog\u002F2024\u002F10\u002Fannouncement-mqtt-broker\u002F","October we announced the FlowFuse MQTT Broker",", included in our Starter, Team, and Enterprise tiers. It lets you setup your own secure clients to begin publishing and subscribing to your own topics, and building out your full event-driven applications.",[15,3902,3903],{},"We see the MQTT experience and Node-RED experience regularly paired together, and so it's one of our missions at FlowFuse to provide the best developer experience for building out your event-driven applications when these two elements are in play.",[27,3905,3907],{"id":3906},"third-party-broker-integration","Third Party Broker Integration",[15,3909,3910],{},"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, so what does FlowFuse bring to the table for them?",[15,3912,3913],{},"With this new release, it is now possible for you to connect your external brokers to FlowFuse. With that, you'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.",[27,3915,3917],{"id":3916},"schema-generation","Schema Generation",[15,3919,3920,3921,190],{},"A pain point we've seen for many customers is collaboration around a single UNS, or MQTT Broker. There is limited (if any) documentation, and to create that, especially at industrial scale, would be a monstrous and time-consuming task. With that in mind, FlowFuse now offers ",[35,3922,3923],{},"automated schema generation",[15,3925,3926,3927,3932],{},"FlowFuse now generates a schema for your MQTT Broker's topic hierarchy, whether you're using the in-built FlowFuse Team Broker, or integrating your own, without you needing to do anything. The schema is generated using the industry-standard, open-sourced, ",[43,3928,3931],{"href":3929,"rel":3930},"https:\u002F\u002Fwww.asyncapi.com\u002F",[47],"AsyncAPI",", and is clearly presented to you in the FlowFuse UI in two formats.",[3934,3935,3937],"h4",{"id":3936},"topic-hierarchy-editor","Topic Hierarchy Editor",[15,3939,3940],{},"The first view lives within the FlowFuse UI that you're familiar with, will display your interactive topic hierarchy which you can explore, and is predominantly the \"edit\" and \"review\" view of your hierarchy.",[15,3942,3943,3947],{},[74,3944],{"alt":3945,"dataZoomable":77,"src":3946},"Screenshot of the Topic Hierarchy view for a given Broker in FlowFuse","\u002Fblog\u002F2025\u002F02\u002Fimages\u002Fscreenshot-topic-hierarchy.png",[128,3948,3945],{},[15,3950,3951],{},"For each topic, you can define descriptions so that team members and anyone interacting with your broker can get a clear understanding of how to get the most out of the hierarchy and associated data.",[15,3953,3954],{},"We have also hopped the first piece of our Smart Suggestions, which is an agent that runs and works out the structure of the payloads to each of your topics. Right now, this is shown in the UI under \"Detected Schema\", but we have bigger plans here, that hopefully you'll be seeing more of in the very near future.",[3934,3956,3958],{"id":3957},"personalized-uns-documentation","Personalized UNS Documentation",[15,3960,3961],{},"The second view is focussed on clarity, and collaboration.",[15,3963,3964,3968],{},[74,3965],{"alt":3966,"dataZoomable":77,"src":3967},"Screenshot of the new \"Schema Documentation\" view provided for brokers on FlowFuse","\u002Fblog\u002F2025\u002F02\u002Fimages\u002Fscreenshot-topic-docs.png",[128,3969,3966],{},[15,3971,3972],{},"A big challenge with the Unified Namespace, and wider MQTT too, can be the lack of centralized structure and information around the topics and payloads that are being used. This can make it difficult to understand what is being published and subscribed to, and can make it hard to onboard new projects, team members or partners.",[15,3974,3975],{},"That is why we have built in a new \"Schema Documentation\" view, available for both the in-built FlowFuse Broker, and any third-party broker that you choose to connect.",[15,3977,3978],{},"This view is built from the automated topic hierarchy, manually added topic descriptions and will soon feature payload schema information from our upcoming Smart Schemas.",[19,3980,3887],{"id":3981},"remote-instances",[15,3983,3984],{},"This release sees two new major features coming to Remote Instances (previously known as \"Devices\").",[27,3986,3988],{"id":3987},"flowfuse-authentication-now-supported","FlowFuse Authentication now Supported",[15,3990,3991],{},"You can now secure your Remote Instances with FlowFuse Authentication.",[15,3993,3994,3995,4000,4001,4006],{},"This means that you can now use the same credentials you use to log into FlowFuse, to authenticate any HTTP endpoints, such as the ",[43,3996,3999],{"href":3997,"rel":3998},"https:\u002F\u002Fdashboard.flowfuse.com",[47],"FlowFuse Dashboard",", on your Remote Instances. This also unlocks features like ",[43,4002,4005],{"href":4003,"rel":4004},"https:\u002F\u002Fdashboard.flowfuse.com\u002Fuser\u002Fmulti-tenancy.html",[47],"Multi-Tenant Dashboards"," that can run on your own hardware at the Edge.",[15,4008,4009],{},"Please note that this does require that your hardware has a connection to FlowFuse.",[27,4011,4013],{"id":4012},"version-history-for-remote-instances","Version History for Remote Instances",[15,4015,4016,4020],{},[74,4017],{"alt":4018,"dataZoomable":77,"src":4019},"Screenshot of the new \"Version History\" timeline view available for Remote Instances","\u002Fblog\u002F2025\u002F02\u002Fimages\u002Fscreenshot-timeline.png",[128,4021,4018],{},[15,4023,4024],{},"This release brings another great update for Remote Instances: the \"Timeline\" view has been rolled out to provide you a clear picture of everything that has been running on your Remote Instance.",[15,4026,4027,4028,4032,4033,4037,4038,190],{},"Here you will be able to see every time flows were deployed (for example from within ",[43,4029,4031],{"href":4030},"\u002Fdocs\u002Fdevice-agent\u002Fquickstart\u002F#developer-mode","Developer Mode","), when settings have updated, ",[43,4034,4036],{"href":4035},"\u002Fdocs\u002Fuser\u002Fsnapshots\u002F","Snapshots"," have been created, or new flows have been deployed via a ",[43,4039,4041],{"href":4040},"\u002Fdocs\u002Fuser\u002Fdevops-pipelines\u002F","DevOps Pipeline",[19,4043,3566],{"id":147},[15,4045,4046,4047,190],{},"For a full list of everything that went into our 2.13 release, you can check out the ",[43,4048,189],{"href":4049,"rel":4050},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Freleases\u002Ftag\u002Fv2.14.0",[47],[15,4052,3191,4053,190],{},[43,4054,1563],{"href":1561,"rel":4055},[47],[15,4057,3202],{},[19,4059,202],{"id":201},[27,4061,213],{"id":212},[15,4063,3209,4064,221,4066,190],{},[43,4065,220],{"href":219},[43,4067,225],{"href":224},[27,4069,206],{"id":205},[15,4071,3595],{},[15,4073,3221],{},{"title":77,"searchDepth":227,"depth":227,"links":4075},[4076,4083,4087,4088],{"id":3891,"depth":230,"text":3892,"children":4077},[4078,4079],{"id":3906,"depth":233,"text":3907},{"id":3916,"depth":233,"text":3917,"children":4080},[4081,4082],{"id":3936,"depth":227,"text":3937},{"id":3957,"depth":227,"text":3958},{"id":3981,"depth":230,"text":3887,"children":4084},[4085,4086],{"id":3987,"depth":233,"text":3988},{"id":4012,"depth":233,"text":4013},{"id":147,"depth":230,"text":3566},{"id":201,"depth":230,"text":202,"children":4089},[4090,4091],{"id":212,"depth":233,"text":213},{"id":205,"depth":233,"text":206},"2025-02-11","A huge wave of new features in FlowFuse elevates your MQTT experience as well as providing improved Remote Instances security and version control too","\u002Fblog\u002F2025\u002F02\u002Fimages\u002Frelease-2-14.png",{"excerpt":4096},{"type":12,"value":4097},[4098],[15,4099,3880,4100,3884,4102,3888],{},[35,4101,3883],{},[35,4103,3887],{},"\u002Fblog\u002F2025\u002F02\u002Fflowfuse-release-2-14",{"title":3874,"description":4093},{"loc":4104},"blog\u002F2025\u002F02\u002Fflowfuse-release-2-14",[270,271,272],"DgjjpoE9cOjdzD4wOwjO6gy83iGEXcha2wmxPYVz9Eg",{"id":4111,"title":4112,"authors":4113,"body":4114,"cta":3,"date":4347,"description":4348,"extension":256,"image":4349,"lastUpdated":3,"meta":4350,"navigation":263,"path":4355,"seo":4356,"sitemap":4357,"stem":4358,"subtitle":4348,"tags":4359,"tldr":3,"video":3,"__hash__":4360},"blog\u002Fblog\u002F2025\u002F01\u002Fflowfuse-release-2-13.md","FlowFuse 2.13: Remote Instances, UNS Schemas & Improved Management at Scale",[3633],{"type":12,"value":4115,"toc":4333},[4116,4119,4123,4126,4145,4152,4155,4164,4168,4176,4182,4188,4191,4220,4224,4227,4230,4234,4237,4243,4246,4250,4256,4263,4266,4270,4277,4302,4304,4310,4315,4317,4319,4321,4327,4329,4331],[15,4117,4118],{},"Happy New Year everyone! We're back with another release of FlowFuse, and whilst it's been a shorter sprint for us this time round, with most of the team out for a well-earned break over Christmas and New Year, that hasn't stopped us packing in lot of great new value into FlowFuse nonetheless.",[19,4120,4122],{"id":4121},"hosted-remote-instances","Hosted & Remote Instances",[15,4124,4125],{},"This release you'll notice that we've changed the terminology of two of our key concepts in FlowFuse:",[150,4127,4128,4137],{},[153,4129,4130,4133,4134],{},[35,4131,4132],{},"Instances"," are now referred to as ",[35,4135,4136],{},"Hosted Instances",[153,4138,4139,4142,4143],{},[35,4140,4141],{},"Devices"," are now referred to ",[35,4144,3887],{},[15,4146,4147,4148,4151],{},"We were finding that customers and prospects were getting confused over the term \"Device\", when in fact, it is a running ",[128,4149,4150],{},"Instance"," of Node-RED. You can have many Remote Instances running on the same piece of hardware, all using the FlowFuse Device Agent, and the term, \"Device\" made that misleading.",[15,4153,4154],{},"Remote Instances are just instances of Node-RED, deployed onto your own hardware and managed via FlowFuse and the FlowFuse Device Agent. We hope this change will make it clearer for everyone, and wanted to include this graphic which shows the updated terminology in the hierarchy of FlowFuse:",[15,4156,4157,4161],{},[74,4158],{"alt":4159,"dataZoomable":77,"src":4160},"FlowFuse Hierarchy","\u002Fblog\u002F2025\u002F01\u002Fimages\u002Fflowfuse-hierarchy.jpg",[128,4162,4163],{},"Diagram to show the hierarchy of different concepts in FlowFuse",[19,4165,4167],{"id":4166},"documenting-your-uns","Documenting Your UNS",[15,4169,4170,4171,4175],{},"Just under three months ago, we ",[43,4172,4174],{"href":4173},"\u002Fblog\u002F2024\u002F10\u002Fflowfuse-release-2-10\u002F","released our own MQTT Service",", making it easy for your to configure MQTT clients through FlowFuse, and connect your hardware and applications. With the Unified Namespace (UNS) growing in popularity in Industry, we wanted to make sure that if you're using MQTT to run your UNS, then FlowFuse offers the best experience for managing it.",[15,4177,4178],{},[74,4179],{"alt":4180,"dataZoomable":77,"src":4181},"FlowFuse Topic Hierarchy Schema","\u002Fblog\u002F2025\u002F01\u002Fimages\u002Fflowfuse-topic-schema.png",[15,4183,4184,4185,190],{},"With this in mind, we're now generating a formal schema for your MQTT Broker's topic hierarchy automatically, and we've made it possible to access the underlying schema through the FlowFuse interface. The schema we generate is using the industry-standard, open-sourced, ",[43,4186,3931],{"href":3929,"rel":4187},[47],[15,4189,4190],{},"If you're interested in learning more about UNS, then we recommend taking a look at some of the following resources:",[150,4192,4193,4199,4205,4211],{},[153,4194,4195],{},[43,4196,4198],{"href":4197},"\u002Fblog\u002F2023\u002F12\u002Fintroduction-to-unified-namespace\u002F","Introduction to the Unified Namespace",[153,4200,4201],{},[43,4202,4204],{"href":4203},"\u002Fblog\u002F2024\u002F11\u002Fwhy-point-to-point-connection-is-dead\u002F","Why you need a Unified Namespace",[153,4206,4207],{},[43,4208,4210],{"href":4209},"\u002Fblog\u002F2024\u002F11\u002Fbuilding-uns-with-flowfuse\u002F","Building a Unified Namespace (UNS) with FlowFuse",[153,4212,4213],{},[43,4214,4216,4219],{"href":4215},"\u002Fwhitepaper\u002Funs-decoupling-data-producers-and-consumers\u002F",[35,4217,4218],{},"Free whitepaper:"," UNS - Decoupling data producers and consumers",[27,4221,4223],{"id":4222},"future-plans","Future Plans",[15,4225,4226],{},"This is very much a first iteration and we have work underway to improve it. Right now, the generated spec is pretty minimal - there is lots of scope to add more information and present it in a clearer and more interactive format. This will make it easy for your whole development team, and anyone else that needs to know, to get a clear picture of the topics and payloads that are being used in your MQTT Broker.",[15,4228,4229],{},"We're also looking at how this information can enhance the development experience within Node-RED itself.",[19,4231,4233],{"id":4232},"managing-groups-of-instances","Managing Groups of Instances",[15,4235,4236],{},"We've introduced a new view in FlowFuse which you can find in the \"Operations\" section of the side navigation. This new view is called \"Groups\" and it allows you to group your Remote Instances together, making it easier to manage and deploy to multiple instances at once.",[15,4238,4239],{},[74,4240],{"alt":4241,"dataZoomable":77,"src":4242},"FlowFuse Groups view","\u002Fblog\u002F2025\u002F01\u002Fimages\u002Fflowfuse-team-groups.png",[15,4244,4245],{},"This functionality has been in FlowFuse for a little while, but was buried down in the \"Applications\" view, and found users were missing it. We've now brought it to the forefront, and made it easier to use, and help you deploy out to thousands of Remote Instances with the single click of a button.",[19,4247,4249],{"id":4248},"new-onboarding-tour","New Onboarding Tour",[15,4251,4252],{},[74,4253],{"alt":4254,"dataZoomable":77,"src":4255},"Screenshot from the new Free Tier onboarding tour","\u002Fblog\u002F2025\u002F01\u002Fimages\u002Ffree-tier-tour.png",[15,4257,4258,4259,190],{},"We have a new onboarding tour that will be shown to those users signing up to our ",[43,4260,4262],{"href":4261},"\u002Fblog\u002F2024\u002F12\u002Fflowfuse-release-2-12\u002F","new Free Tier on FlowFuse Cloud",[15,4264,4265],{},"This tour is purpose built to help you get up and running with your first Remote Instance in FlowFuse, setting up the Device Agent on your own hardware, and accessing your Remote Instance via FlowFuse Cloud.",[19,4267,4269],{"id":4268},"in-case-you-missed-it","In Case You Missed It...",[15,4271,4272,4273,4276],{},"Last month we ",[43,4274,4275],{"href":4261},"released a new Free Tier on FlowFuse Cloud",", but announced it in the same article as our latest release and so a lot of the other new features we'd added to FlowFuse were lost in the weeds a little. We had a few self-hosted customers mention that they missed the updates for 2.12, so we also wanted to re-highlight some new features from that release too:",[150,4278,4279,4285,4290,4296],{},[153,4280,4281,4284],{},[35,4282,4283],{},"Pipelines"," - New view at the team-level to manage your DevOps Pipelines, making it easier to deploy between development, test and production environments. Pipelines can also be used to push updates out to thousands of Remote Instances at once using the new \"Groups\" feature.",[153,4286,4287,4289],{},[35,4288,3709],{}," - New view at the team-level to get a clear picture of all dependencies that your Instances are using. Makes it easier to manage out-of-date packages, and help with auditing and compliance.",[153,4291,4292,4295],{},[35,4293,4294],{},"Device Agent Performance Improvements"," - For those running Node-RED 4.0.x and higher, the Device Agent has had some significant updates to performance, making the experience of remote editing much faster and smoother, especially when the device is on a slow network link.",[153,4297,4298,4301],{},[35,4299,4300],{},"Dashboards in iFrames"," - FlowFuse-hosted Dashboards can now be configured to run inside iFrames. You can find this option under the \"Settings\" of the Instance in question.",[19,4303,3566],{"id":147},[15,4305,4046,4306,190],{},[43,4307,189],{"href":4308,"rel":4309},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Freleases\u002Ftag\u002Fv2.13.0",[47],[15,4311,3191,4312,190],{},[43,4313,1563],{"href":1561,"rel":4314},[47],[15,4316,3202],{},[19,4318,202],{"id":201},[27,4320,213],{"id":212},[15,4322,3209,4323,221,4325,190],{},[43,4324,220],{"href":219},[43,4326,225],{"href":224},[27,4328,206],{"id":205},[15,4330,3595],{},[15,4332,3221],{},{"title":77,"searchDepth":227,"depth":227,"links":4334},[4335,4336,4339,4340,4341,4342,4343],{"id":4121,"depth":230,"text":4122},{"id":4166,"depth":230,"text":4167,"children":4337},[4338],{"id":4222,"depth":233,"text":4223},{"id":4232,"depth":230,"text":4233},{"id":4248,"depth":230,"text":4249},{"id":4268,"depth":230,"text":4269},{"id":147,"depth":230,"text":3566},{"id":201,"depth":230,"text":202,"children":4344},[4345,4346],{"id":212,"depth":233,"text":213},{"id":205,"depth":233,"text":206},"2025-01-16","FlowFuse 2.13 brings clarity to \"Instances\" in FlowFuse, automated documentation for your MQTT Broker, better management and deployment to multiple Remote Instances, and more.","\u002Fblog\u002F2025\u002F01\u002Fimages\u002Frelease-2-13.png",{"excerpt":4351},{"type":12,"value":4352},[4353],[15,4354,4118],{},"\u002Fblog\u002F2025\u002F01\u002Fflowfuse-release-2-13",{"title":4112,"description":4348},{"loc":4355},"blog\u002F2025\u002F01\u002Fflowfuse-release-2-13",[270,271,272],"HRl_MaiZCEm_dbSnQo8LQt0-Bx6-HXEWczy-id_w13g",{"id":4362,"title":4363,"authors":4364,"body":4365,"cta":4665,"date":4668,"description":4669,"extension":256,"image":4670,"lastUpdated":4671,"meta":4672,"navigation":263,"path":4678,"seo":4679,"sitemap":4680,"stem":4681,"subtitle":4669,"tags":4682,"tldr":4683,"video":3,"__hash__":4684},"blog\u002Fblog\u002F2024\u002F12\u002Fflowfuse-release-2-12.md","FlowFuse Cloud now available for free!",[1612],{"type":12,"value":4366,"toc":4646},[4367,4370,4373,4381,4385,4388,4391,4411,4415,4419,4427,4430,4438,4440,4443,4446,4449,4464,4467,4474,4478,4507,4511,4514,4530,4537,4541,4544,4547,4555,4562,4565,4574,4578,4581,4584,4588,4594,4597,4600,4612,4619,4624,4626,4628,4630,4636,4638,4640,4642],[15,4368,4369],{},"The new Free plan on FlowFuse Cloud will allow you to manage two remote instances using FlowFuse Device Agent, completely free of charge, forever! The new plan also provides Device Auto Snapshots, so any changes to your Node-RED flows running on your devices are backed up automatically.",[15,4371,4372],{},"FlowFuse is an industrial data platform that enables engineers to build, manage, scale, and secure their Node-RED solutions for digitalizing processes and operations. More fundamentally though, it's a great platform to manage multiple instances of Node-RED.",[774,4374,4377,4378],{"className":4375},[4376],"blog-update-notes","\n    ",[15,4379,4380],{},"After careful consideration, we've decided to withdraw the free plan. You can still sign up for a 2 week trial to experience all that FlowFuse has to offer, or try out our Starter plan for $20\u002Fmonth.",[19,4382,4384],{"id":4383},"whats-included","What's Included?",[15,4386,4387],{},"Whether you're running multiple Node-RED instances at home for Home Automation, or running thousands of Node-RED instances in your factory, FlowFuse provides an easy-to-use, centralised view of your Node-RED instances, making it easy to manage and monitor them in one place.",[15,4389,4390],{},"In our new free tier on FlowFuse Cloud you get:",[150,4392,4393,4400,4406],{},[153,4394,4395,4396],{},"2 x Remote Node-RED Instances, managed through the FlowFuse ",[43,4397,4399],{"href":4398},"\u002Fdocs\u002Fdevice-agent\u002Fquickstart","Device Agent",[153,4401,4402,4403],{},"Version control for your Node-RED flows with FlowFuse's ",[43,4404,4036],{"href":4405},"\u002Fdocs\u002Fuser\u002Fsnapshots\u002F#introduction",[153,4407,4408,4409],{},"Remote access to your Node-RED instances through FlowFuse Cloud, utilizing the Device Agent's ",[43,4410,4031],{"href":4030},[19,4412,4414],{"id":4413},"getting-started","Getting Started",[27,4416,4418],{"id":4417},"create-your-free-team","Create Your Free Team",[15,4420,4421,4422,190],{},"To create a free team, simply ",[43,4423,4426],{"href":4424,"rel":4425},"https:\u002F\u002Fapp.flowfuse.com\u002Fcreate",[47],"sign up to FlowFuse Cloud",[15,4428,4429],{},"Once you've filled in your details, you'll be presented with the option to choose your team type. Select the \"Free\" option, and you're good to go.",[15,4431,4432,4435],{},[74,4433],{"alt":77,"dataZoomable":77,"src":4434},"\u002Fblog\u002F2024\u002F12\u002Fimages\u002Fonboarding-team-type.png",[128,4436,4437],{},"Screenshot showing the UI for selecting your Team's type, when onboarding through on FlowFuse Cloud.",[27,4439,3887],{"id":3981},[15,4441,4442],{},"When you create a Free team, an Application is created for you automatically. Applications in FlowFuse help you organise and group your resources, from Instances to DevOps Pipelines and Snapshots for Version Control. Within your new application, you can \"register\" your first Remote Instance.",[15,4444,4445],{},"A \"Remote Instance\" in FlowFuse is a just a term for an instance Node-RED, managed by FlowFuse, but running somewhere different from FlowFuse, e.g. on Edge hardware in a factory or your home. FlowFuse connects to these Remote Instances using the FlowFuse Device Agent, which is easy to setup and get running.",[15,4447,4448],{},"To get started with your Remote Instance, you need to complete two steps:",[4450,4451,4452,4458],"ol",{},[153,4453,4454,4457],{},[35,4455,4456],{},"Install Device Agent",": The FlowFuse Device Agent is installed onto the hardware where you want your Node-RED Instance to run.",[153,4459,4460,4463],{},[35,4461,4462],{},"Add Your Remote Instance",": In the FlowFuse UI, add a new \"Remote Instance\", and connect to your hardware.",[27,4465,4456],{"id":4466},"install-device-agent",[15,4468,4469,4470,4473],{},"Firstly, wherever you want your Node-RED to run, e.g. on a Raspberry Pi or your own Laptop, install the ",[380,4471,4472],{},"flowfuse-device-agent"," package:",[3934,4475,4477],{"id":4476},"linuxmacos","Linux\u002FMacOS",[4479,4480,4484],"pre",{"className":4481,"code":4482,"language":4483,"meta":77,"style":77},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","sudo npm install -g @flowfuse\u002Fdevice-agent\n","bash",[380,4485,4486],{"__ignoreMap":77},[1086,4487,4490,4494,4498,4501,4504],{"class":4488,"line":4489},"line",1,[1086,4491,4493],{"class":4492},"sBMFI","sudo",[1086,4495,4497],{"class":4496},"sfazB"," npm",[1086,4499,4500],{"class":4496}," install",[1086,4502,4503],{"class":4496}," -g",[1086,4505,4506],{"class":4496}," @flowfuse\u002Fdevice-agent\n",[3934,4508,4510],{"id":4509},"windows","Windows",[15,4512,4513],{},"Issue the below command in an elevated command prompt:",[4479,4515,4517],{"className":4481,"code":4516,"language":4483,"meta":77,"style":77},"npm install -g @flowfuse\u002Fdevice-agent\n",[380,4518,4519],{"__ignoreMap":77},[1086,4520,4521,4524,4526,4528],{"class":4488,"line":4489},[1086,4522,4523],{"class":4492},"npm",[1086,4525,4500],{"class":4496},[1086,4527,4503],{"class":4496},[1086,4529,4506],{"class":4496},[15,4531,4532,4533,190],{},"For alternative installation options and more details, please refer to our ",[43,4534,4536],{"href":4535},"\u002Fdocs\u002Fdevice-agent\u002F","documentation",[27,4538,4540],{"id":4539},"connect-your-hardware-to-flowfuse","Connect Your Hardware to FlowFuse",[15,4542,4543],{},"To connect your Device Agent, in the FlowFuse Platform, click on the \"Remote Instances\" option in the left-hand menu, and then click the \"Add Remote Instance\" button.",[15,4545,4546],{},"Fill out the name, device type and select the application you've just created, and you'll be presented with the following:",[15,4548,4549,4553],{},[74,4550],{"alt":4551,"dataZoomable":77,"src":4552},"Screenshot showing the dialog with the one-time-code to connect your remote Node_RED instance to FlowFuse","\u002Fblog\u002F2024\u002F12\u002Fimages\u002Fonboarding-device-registration.png",[128,4554,4551],{},[15,4556,4557,4558,4561],{},"The command presented is used to connect your device to FlowFuse. Run this where you just installed the ",[380,4559,4560],{},"@flowfuse\u002Fdevice-agent"," package. This will connect your remote Node-RED instance to the FlowFuse platform.",[15,4563,4564],{},"The final step to take is to then start running the device agent, which you can do by simply calling:",[4479,4566,4568],{"className":4481,"code":4567,"language":4483,"meta":77,"style":77},"flowfuse-device-agent\n",[380,4569,4570],{"__ignoreMap":77},[1086,4571,4572],{"class":4488,"line":4489},[1086,4573,4567],{"class":4492},[27,4575,4577],{"id":4576},"developing-on-your-remote-instance","Developing on your Remote Instance",[15,4579,4580],{},"FlowFuse offers remote development capabilities, allowing you to edit your Node-RED flows directly, and securely, from the FlowFuse Cloud platform. This is done through \"Developer Mode\".",[15,4582,4583],{},"To get started with developing flows with your Remote Instance, simply select your newly created Instance in the FlowFuse UI, toggle on 'Developer Mode\", and click \"Open Editor\"!",[27,4585,4587],{"id":4586},"version-control-with-snapshots","Version Control with Snapshots",[15,4589,4590,4591,4593],{},"FlowFuse makes version control easy with ",[43,4592,4036],{"href":4405},". The new Free plan includes Device Auto Snapshots, which will automatically create a snapshot any time a flow is deployed to your device.",[19,4595,4596],{"id":147},"What Else is New?",[15,4598,4599],{},"In addition to the Free plan, we've also added two new views to the FlowFuse platform:",[150,4601,4602,4607],{},[153,4603,4604,4606],{},[35,4605,4283],{},": This view provides a way to manage all of your DevOps Pipelines, making it even easier to manage your development, testing, staging and production environments.",[153,4608,4609,4611],{},[35,4610,3709],{},": This view provides a way to manage all of your Node-RED dependencies, making it easy to see what versions of nodes are being used across all of your Node-RED instances.",[15,4613,4614,4615,190],{},"For a full list of everything that went into our 2.12 release, you can check out the ",[43,4616,189],{"href":4617,"rel":4618},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Freleases\u002Ftag\u002Fv2.12.0",[47],[15,4620,3191,4621,190],{},[43,4622,1563],{"href":1561,"rel":4623},[47],[15,4625,3202],{},[19,4627,202],{"id":201},[27,4629,213],{"id":212},[15,4631,3209,4632,221,4634,190],{},[43,4633,220],{"href":219},[43,4635,225],{"href":224},[27,4637,206],{"id":205},[15,4639,3595],{},[15,4641,3221],{},[4643,4644,4645],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":77,"searchDepth":227,"depth":227,"links":4647},[4648,4649,4660,4661],{"id":4383,"depth":230,"text":4384},{"id":4413,"depth":230,"text":4414,"children":4650},[4651,4652,4653,4657,4658,4659],{"id":4417,"depth":233,"text":4418},{"id":3981,"depth":233,"text":3887},{"id":4466,"depth":233,"text":4456,"children":4654},[4655,4656],{"id":4476,"depth":227,"text":4477},{"id":4509,"depth":227,"text":4510},{"id":4539,"depth":233,"text":4540},{"id":4576,"depth":233,"text":4577},{"id":4586,"depth":233,"text":4587},{"id":147,"depth":230,"text":4596},{"id":201,"depth":230,"text":202,"children":4662},[4663,4664],{"id":212,"depth":233,"text":213},{"id":205,"depth":233,"text":206},{"type":966,"title":4666,"description":4667},"Get Started with FlowFuse for Free","Manage your Node-RED instances in the cloud with FlowFuse. Start with a free trial and experience centralised control, snapshots, and remote access for your edge devices.","2024-12-19","With our new FlowFuse release, comes a new team tier, available on FlowFuse Cloud, to provide you an easy way to manage your many Node-RED instances.","\u002Fblog\u002F2024\u002F12\u002Fimages\u002Ftile-release-2-12.png","2026-06-03",{"keywords":4673,"excerpt":4674},"flowfuse release, flowfuse free plan, node-red cloud, device agent, remote node-red, flowfuse 2.12, free tier, node-red management",{"type":12,"value":4675},[4676],[15,4677,4369],{},"\u002Fblog\u002F2024\u002F12\u002Fflowfuse-release-2-12",{"title":4363,"description":4669},{"loc":4678},"blog\u002F2024\u002F12\u002Fflowfuse-release-2-12",[270,271,272],"FlowFuse 2.12 introduced a free team tier on FlowFuse Cloud, allowing users to manage two remote Node-RED instances via the Device Agent at no cost. The release also included Device Auto Snapshots for automatic flow backups. Note: the free plan has since been withdrawn, but a 2-week trial and a Starter plan are available.","HcTXctfBnEzFC8JC4-KiFK3jOYrAVEg6cC4nolAFZI4",{"id":4686,"title":4687,"authors":4688,"body":4689,"cta":3,"date":4871,"description":4872,"extension":256,"image":4873,"lastUpdated":3,"meta":4874,"navigation":263,"path":4881,"seo":4882,"sitemap":4883,"stem":4884,"subtitle":4872,"tags":4885,"tldr":3,"video":3,"__hash__":4887},"blog\u002Fblog\u002F2024\u002F11\u002Fflowfuse-release-2-11.md","FlowFuse 2.11: MQTT Topic Hierarchy, UI Revamp & Improved Logging",[3633],{"type":12,"value":4690,"toc":4858},[4691,4694,4697,4701,4704,4713,4716,4723,4727,4730,4738,4741,4745,4753,4761,4764,4768,4771,4774,4777,4785,4792,4797,4799,4801,4803,4809,4811,4813,4815,4819,4827,4834,4841,4845],[15,4692,4693],{},"The focus of the FlowFuse 2.11 release has all been about providing clarity for our users and reducing friction in our user experience.",[15,4695,4696],{},"Navigation in FlowFuse has been streamlined with a new sidebar and team-wide search feature. We've provided an interactive visualization for your MQTT topic hierarchy, ensuring you have a clear view of your own MQTT\u002FUNS architecture, and, we've re-architected the audit logging to ensure you have an easy-to-understand and searchable view of everything going on in your FlowFuse Team and it's respective Applications, Instances and Devices.",[19,4698,4700],{"id":4699},"navigation-revamp","Navigation Revamp",[15,4702,4703],{},"If you're using FlowFuse Cloud, you'll have already noticed a big improvement to our navigation sidebar on the left of the user interface that was released a couple of weeks ago. This is now packaged up into FlowFuse 2.11 and available to our self-hosted customers too.",[15,4705,4706,4710],{},[74,4707],{"alt":4708,"dataZoomable":77,"src":4709},"Screenshot of the new navigation sidebar in FlowFuse","\u002Fblog\u002F2024\u002F11\u002Fimages\u002Fscreenshot-sidebar.png",[128,4711,4712],{},"Screenshot of the improve left-side navigation in FlowFuse",[15,4714,4715],{},"This is the first stage of a navigation revamp we're working on, that will represent a big improvement for navigation around FlowFuse, and help make managing your applications easier.",[15,4717,4718,4719,4722],{},"You'll notice we've renamed \"Devices\" to \"Edge Devices\" to make it clearer that these are ",[128,4720,4721],{},"instances of Node-RED"," that are running on devices, rather than just a record of the device itself. We've also separated out many of the pages into sections, making it easier to find what you're looking for, and giving us scope to add in more in the coming weeks, which will make it easy to jump straight to the features you need.",[27,4724,4726],{"id":4725},"team-wide-search","Team-wide Search",[15,4728,4729],{},"A very popular feature in the \"home\" view of FlowFuse is the search bar that helps you find the relevant Application, Instance, or Device you're looking for. This has been moved into the top header and will be available on every page of FlowFuse, making it even easier to find what you're looking for, wherever you are.",[15,4731,4732,4736],{},[74,4733],{"alt":4734,"dataZoomable":77,"src":4735},"Screenshot of the team-wide search","\u002Fblog\u002F2024\u002F11\u002Fimages\u002Fscreenshot-search.png",[128,4737,4734],{},[15,4739,4740],{},"This will soon be followed by an update to our \"Applications\" view which is currently quite over-crowded. We're always looking to reduce friction for our users, and this is a big step in doing that.",[19,4742,4744],{"id":4743},"mqtt-topic-hierarchy","MQTT Topic Hierarchy",[15,4746,4747,4748,4752],{},"We recently ",[43,4749,4751],{"href":4750},"\u002Fblog\u002F2024\u002F10\u002Fannouncement-mqtt-broker","announced our very own MQTT Service",", and we're following that up with an update that lets you see what topics are being used by your MQTT clients in the UI:",[15,4754,4755,4759],{},[74,4756],{"alt":4757,"dataZoomable":77,"src":4758},"Screenshot of the UI to explore your MQTT topic hierarchy","\u002Fblog\u002F2024\u002F11\u002Fimages\u002Fscreenshot-mqtt-hierarchy.png",[128,4760,4757],{},[15,4762,4763],{},"This will make managing your event-driven applications even easier, giving you clarity on the structure of your topic-space, whether you're using the MQTT Broker for a unified namespace (UNS) or any other use case.",[19,4765,4767],{"id":4766},"audit-logging-improvements","Audit Logging Improvements",[15,4769,4770],{},"We've improved the Audit Log views at the Team and Application levels to given you better visibility on the actions taken by users across your whole team in FlowFuse.",[15,4772,4773],{},"Previously, only events associated to that \"level\" (e.g. Team, Application, Instance) were shown in the respective log. However, now, when you view the \"Team\" Audit Log, it shows not just events on that team specifically, e.g. a settings change, but also all Audit events for it's \"children\", i.e. the Applications, Instances, Pipelines, etc. that are part of that team too.",[15,4775,4776],{},"New filters on the right-side also make it easy to explore everything taking place in your FlowFuse Team, allowing you to dive into a given Instance, all from the top-level \"Team\" view.",[15,4778,4779,4783],{},[74,4780],{"alt":4781,"dataZoomable":77,"src":4782},"Screenshot of the improved audit log view","\u002Fblog\u002F2024\u002F11\u002Fimages\u002Faudit-log-child-events.png",[128,4784,4781],{},[15,4786,4787,4788,190],{},"For a full list of everything that went into our 2.11 release, you can check out the ",[43,4789,189],{"href":4790,"rel":4791},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Freleases\u002Ftag\u002Fv2.11.0",[47],[15,4793,3191,4794,190],{},[43,4795,1563],{"href":1561,"rel":4796},[47],[15,4798,3202],{},[19,4800,202],{"id":201},[27,4802,213],{"id":212},[15,4804,3209,4805,221,4807,190],{},[43,4806,220],{"href":219},[43,4808,225],{"href":224},[27,4810,206],{"id":205},[15,4812,3595],{},[15,4814,3221],{},[19,4816,4818],{"id":4817},"upgrading-flowfuse","Upgrading FlowFuse",[15,4820,4821,4822,4826],{},"If you're using [FlowFuse Cloud](",[4823,4824],"binding",{"value":4825},"site.appURL","), then there is nothing you need to do - it's already running 2.10, and you may have already been playing with the new features.",[15,4828,4829,4830,190],{},"If you installed a previous version of FlowFuse and want to upgrade, our documentation provides a guide for ",[43,4831,4833],{"href":4832},"\u002Fdocs\u002Fupgrade\u002F","upgrading your FlowFuse instance",[15,4835,4836,4837],{},"If you have an Enterprise license please make sure to review this ",[43,4838,4840],{"href":4839},"\u002Fchangelog\u002F2024\u002F08\u002Fenterprise-license-update","changelog entry",[19,4842,4844],{"id":4843},"getting-help","Getting help",[15,4846,4847,4848,4851,4852,4857],{},"Please check FlowFuse's ",[43,4849,4536],{"href":4850},"\u002Fdocs\u002F"," as the answers to many questions are covered there. Additionally you can go to the ",[43,4853,4856],{"href":4854,"rel":4855},"https:\u002F\u002Fdiscourse.nodered.org\u002Fc\u002Fvendors\u002Fflowfuse\u002F24",[47],"community forum"," if you have\nany feedback or feature requests.",{"title":77,"searchDepth":227,"depth":227,"links":4859},[4860,4863,4864,4865,4869,4870],{"id":4699,"depth":230,"text":4700,"children":4861},[4862],{"id":4725,"depth":233,"text":4726},{"id":4743,"depth":230,"text":4744},{"id":4766,"depth":230,"text":4767},{"id":201,"depth":230,"text":202,"children":4866},[4867,4868],{"id":212,"depth":233,"text":213},{"id":205,"depth":233,"text":206},{"id":4817,"depth":230,"text":4818},{"id":4843,"depth":230,"text":4844},"2024-11-21","Let's take a look at the new features and improvements in FlowFuse 2.11","\u002Fblog\u002F2024\u002F11\u002Fimages\u002Ftile-release-2-11.png",{"excerpt":4875},{"type":12,"value":4876},[4877,4879],[15,4878,4693],{},[15,4880,4696],{},"\u002Fblog\u002F2024\u002F11\u002Fflowfuse-release-2-11",{"title":4687,"description":4872},{"loc":4881},"blog\u002F2024\u002F11\u002Fflowfuse-release-2-11",[4886,270,272],"posts","s0-HKM3cGSTIJHoApawQXpnhB2IfVnvO9eKzZw2GNR0",{"id":4889,"title":4890,"authors":4891,"body":4892,"cta":3,"date":5050,"description":5051,"extension":256,"image":5052,"lastUpdated":3,"meta":5053,"navigation":263,"path":5060,"seo":5061,"sitemap":5062,"stem":5063,"subtitle":5051,"tags":5064,"tldr":3,"video":3,"__hash__":5065},"blog\u002Fblog\u002F2024\u002F10\u002Fflowfuse-release-2-10.md","FlowFuse 2.10: MQTT Broker, Improved Version Control & More!",[3633],{"type":12,"value":4893,"toc":5036},[4894,4897,4900,4904,4907,4913,4916,4920,4926,4929,4932,4936,4942,4948,4955,4959,4962,4968,4971,4979,4983,4990,4995,4997,4999,5001,5007,5009,5011,5013,5015,5019,5023,5027,5029],[15,4895,4896],{},"With FlowFuse 2.10 we've added some new major features, as well as improvements across the board for FlowFuse users.",[15,4898,4899],{},"Most notably, FlowFuse now offers it's own MQTT service, with the option to create MQTT client credentials for your teams, making it even easier and quicker to build your full-stack Node-RED applications.",[19,4901,4903],{"id":4902},"mqtt-broker","MQTT Broker",[15,4905,4906],{},"This is a significant milestone for FlowFuse, as we're now offering our own MQTT service. We have listened to a lot of feedback from users and prospective customers, and this has consistently been a regularly requested offering, and so we are delighted to announce that this is now live on FlowFuse Cloud for our Enterprise teams.",[15,4908,4909],{},[74,4910],{"alt":4911,"dataZoomable":77,"src":4912},"Screenshot of the UI to manage your MQTT clients","\u002Fblog\u002F2024\u002F10\u002Fimages\u002Fscreenshot-mqtt-client-config.png",[15,4914,4915],{},"This feature allows you to run and manage your own MQTT Clients alongside your Node-RED instances, making it easier to build full-stack applications within FlowFuse.",[27,4917,4919],{"id":4918},"pricing","Pricing",[15,4921,4922,4923,190],{},"From today, Enterprise teams on FlowFuse Cloud will be able to create up to 20 clients on their accounts at ",[35,4924,4925],{},"no extra cost",[15,4927,4928],{},"In the near future, users will then be able to purchase additional packs of clients to add to their team.",[15,4930,4931],{},"Self-hosted Enterprise customers will be able to make use of this feature in our next release.",[19,4933,4935],{"id":4934},"version-history-visual-timeline","Version History - Visual Timeline",[15,4937,4938,4939,190],{},"Since early iterations of FlowFuse, Snapshots have played a key role in Version Control for your Node-RED flows, environment variables and settings. Whilst we still offer the same \"Snapshots\" view in the application, we've also added a new view to give a clearer picture of what flows are running on your Node-RED instances and ",[128,4940,4941],{},"when",[15,4943,4944],{},[74,4945],{"alt":4946,"dataZoomable":77,"src":4947},"Screenshot showing an Instance's visual timeline","\u002Fblog\u002F2024\u002F10\u002Fimages\u002Fscreenshot-visual-timeline.png",[15,4949,4950,4951,4954],{},"In this view, you can see every time a new set of flows were deployed to your Node-RED instance, no matter the source, whether that's from the Editor itself, via our ",[43,4952,4953],{"href":4040},"DevOps Pipelines",", or restoring a Snapshot.",[19,4956,4958],{"id":4957},"device-group-environment-variables","Device Group Environment Variables",[15,4960,4961],{},"We've also added in the ability to define common environment variables in your Device Groups.",[15,4963,4964],{},[74,4965],{"alt":4966,"dataZoomable":77,"src":4967},"Screenshot showing the new Device Group Environment Variables","\u002Fchangelog\u002F2024\u002F10\u002Fimages\u002Fdevice-group--with-env-vars.png",[15,4969,4970],{},"These will now be deployed to any devices contained within a given group, and can still be overridden by environment variables defined in the Device's settings directly.",[15,4972,4973,4974,4978],{},"See the ",[43,4975,4977],{"href":4976},"\u002Fdocs\u002Fuser\u002Fdevice-groups\u002F","Device Group documentation"," for more information on how to set environment variables for your device groups.",[19,4980,4982],{"id":4981},"and-much-more","And Much More...",[15,4984,4985,4986,190],{},"For a full list of everything that went into our 2.10 release, you can check out the ",[43,4987,189],{"href":4988,"rel":4989},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Freleases\u002Ftag\u002Fv2.10.0",[47],[15,4991,3191,4992,190],{},[43,4993,1563],{"href":1561,"rel":4994},[47],[15,4996,3202],{},[19,4998,202],{"id":201},[27,5000,213],{"id":212},[15,5002,3209,5003,221,5005,190],{},[43,5004,220],{"href":219},[43,5006,225],{"href":224},[27,5008,206],{"id":205},[15,5010,3595],{},[15,5012,3221],{},[19,5014,4818],{"id":4817},[15,5016,4821,5017,4826],{},[4823,5018],{"value":4825},[15,5020,4829,5021,190],{},[43,5022,4833],{"href":4832},[15,5024,4836,5025],{},[43,5026,4840],{"href":4839},[19,5028,4844],{"id":4843},[15,5030,4847,5031,4851,5033,4857],{},[43,5032,4536],{"href":4850},[43,5034,4856],{"href":4854,"rel":5035},[47],{"title":77,"searchDepth":227,"depth":227,"links":5037},[5038,5041,5042,5043,5044,5048,5049],{"id":4902,"depth":230,"text":4903,"children":5039},[5040],{"id":4918,"depth":233,"text":4919},{"id":4934,"depth":230,"text":4935},{"id":4957,"depth":230,"text":4958},{"id":4981,"depth":230,"text":4982},{"id":201,"depth":230,"text":202,"children":5045},[5046,5047],{"id":212,"depth":233,"text":213},{"id":205,"depth":233,"text":206},{"id":4817,"depth":230,"text":4818},{"id":4843,"depth":230,"text":4844},"2024-10-24","Let's take a look at the new features and improvements in FlowFuse 2.9","\u002Fblog\u002F2024\u002F10\u002Fimages\u002Ftile-release-2-10.png",{"excerpt":5054},{"type":12,"value":5055},[5056,5058],[15,5057,4896],{},[15,5059,4899],{},"\u002Fblog\u002F2024\u002F10\u002Fflowfuse-release-2-10",{"title":4890,"description":5051},{"loc":5060},"blog\u002F2024\u002F10\u002Fflowfuse-release-2-10",[4886,270,272],"z_KXGkqq1SeAni2DUVIipadiZdRblQC_p3JwitK1AC0",{"id":5067,"title":5068,"authors":5069,"body":5070,"cta":3,"date":5220,"description":5051,"extension":256,"image":5221,"lastUpdated":3,"meta":5222,"navigation":263,"path":5227,"seo":5228,"sitemap":5229,"stem":5230,"subtitle":5051,"tags":5231,"tldr":3,"video":3,"__hash__":5232},"blog\u002Fblog\u002F2024\u002F09\u002Fflowfuse-release-2-9.md","FlowFuse 2.9: Software Bill of Materials & Public Static Assets",[3633],{"type":12,"value":5071,"toc":5208},[5072,5075,5079,5082,5088,5091,5097,5100,5104,5111,5114,5123,5126,5128,5135,5140,5142,5146,5154,5157,5160,5168,5170,5172,5178,5180,5182,5184,5186,5191,5195,5199,5201],[15,5073,5074],{},"FlowFuse 2.9 bring improvements in application maintenance with the new \"Software Bill of Materials\" and in building full stack applications, with an iteration on the \"Static Asset Service\", by providing the option to \"share\" your assets assets publicly, making them consumable by external services and your Dashboards.",[19,5076,5078],{"id":5077},"software-bill-of-materials","Software Bill of Materials",[15,5080,5081],{},"This release sees the introduction of a new feature for our Enterprise customers, the Software Bill of Materials (SBOM).",[15,5083,5084],{},[74,5085],{"alt":5086,"dataZoomable":77,"src":5087},"Screenshot showing the new Software Bill of Materials view in FlowFuse","\u002Fblog\u002F2024\u002F09\u002Fimages\u002Fscreenshot-sbom.png",[15,5089,5090],{},"This view is available for all of your Applications in FlowFuse, and provides a detailed breakdown of all packages running in your Node-RED instances within your applications, making it easier to trace down out of date packages and keep on top of the security and integrity of your applications.",[15,5092,5093,5094,190],{},"In the above screenshot, we get a clear picture of the different versions of Node-RED that I'm running, as well as the different packages that are installed in each of my instances. Highlighting in particular that I have some out-of-date versions of ",[380,5095,5096],{},"@flowfuse\u002Fnode-red-dashboard",[15,5098,5099],{},"It's possible to expand the detail for each entry to see which instances are running the respective package, and consequently jump in to update them if appropriate.",[19,5101,5103],{"id":5102},"static-assets-service","Static Assets Service",[15,5105,5106,5110],{},[43,5107,5109],{"href":5108},"\u002Fblog\u002F2024\u002F08\u002Fflowfuse-2-8-release","Last release"," we published the new \"Static Assets Service\". This new feature provided an easy way to upload files alongside your Node-RED instances, and make them easily accessible in your Node-RED Editor.",[15,5112,5113],{},"In this new release we've expanded on that feature, now allowing you to make those files publicly accessible via a URL, making them available for consumption in your Dashboards, or wherever else you may want to consume that content.",[2697,5115,5116,5117,5122],{"controls":263},"\n   ",[5118,5119],"source",{"src":5120,"type":5121},"https:\u002F\u002Fwebsite-data.s3.eu-west-1.amazonaws.com\u002FAssets+Service+Demo+-+Part+2.mp4","video\u002Fmp4","\n   Your browser does not support the video tag.\n",[15,5124,5125],{},"This unlocks a new set of possibilities for building full stack applications in FlowFuse, for examples, making it easy to customize branding in your Dashboard to match your company's branding, or to serve up images and other assets to your users.",[19,5127,4982],{"id":4981},[15,5129,5130,5131,190],{},"For a full list of everything that went into our 2.9 release, you can check out the ",[43,5132,189],{"href":5133,"rel":5134},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Freleases\u002Ftag\u002Fv2.9.0",[47],[15,5136,3191,5137,190],{},[43,5138,1563],{"href":1561,"rel":5139},[47],[15,5141,3202],{},[19,5143,5145],{"id":5144},"coming-soon-mqtt-broker","Coming Soon: MQTT Broker",[15,5147,5148,5149,5153],{},"FlowFuse already makes extensive use of MQTT under the covers. It provides the connection for our ",[43,5150,5152],{"href":5151},"\u002Fdocs\u002Fuser\u002Fprojectnodes\u002F","Project Nodes"," that make it very simple to move data between your Node-RED instances.",[15,5155,5156],{},"We're now working on opening up the broker to allow teams to connect their MQTT devices to the platform without having to manage their own broker infrastructure.",[15,5158,5159],{},"This feature will allow you to run and manage your own MQTT Clients alongside your Node-RED instances, making it easier to build full-stack IoT applications with FlowFuse.",[15,5161,5162,5163,5167],{},"We do not have a precise release date for this just yet, but we're hoping to having this in for 2.10 or 2.11. Keep an eye out for more information on this in the coming weeks. If this feature is of interest to you, please do ",[43,5164,5166],{"href":5165},"\u002Fcontact-us","reach out"," and help us shape it to make sure it meets your needs.",[19,5169,202],{"id":201},[27,5171,213],{"id":212},[15,5173,3209,5174,221,5176,190],{},[43,5175,220],{"href":219},[43,5177,225],{"href":224},[27,5179,206],{"id":205},[15,5181,3595],{},[15,5183,3221],{},[19,5185,4818],{"id":4817},[15,5187,4821,5188,5190],{},[4823,5189],{"value":4825},"), then there is nothing you need to do - it's already running 2.9, and you may have already been playing with the new features.",[15,5192,4829,5193,190],{},[43,5194,4833],{"href":4832},[15,5196,4836,5197],{},[43,5198,4840],{"href":4839},[19,5200,4844],{"id":4843},[15,5202,4847,5203,4851,5205,4857],{},[43,5204,4536],{"href":4850},[43,5206,4856],{"href":4854,"rel":5207},[47],{"title":77,"searchDepth":227,"depth":227,"links":5209},[5210,5211,5212,5213,5214,5218,5219],{"id":5077,"depth":230,"text":5078},{"id":5102,"depth":230,"text":5103},{"id":4981,"depth":230,"text":4982},{"id":5144,"depth":230,"text":5145},{"id":201,"depth":230,"text":202,"children":5215},[5216,5217],{"id":212,"depth":233,"text":213},{"id":205,"depth":233,"text":206},{"id":4817,"depth":230,"text":4818},{"id":4843,"depth":230,"text":4844},"2024-09-26","\u002Fblog\u002F2024\u002F09\u002Fimages\u002Frelease-2-9-september-2024.png",{"excerpt":5223},{"type":12,"value":5224},[5225],[15,5226,5074],{},"\u002Fblog\u002F2024\u002F09\u002Fflowfuse-release-2-9",{"title":5068,"description":5051},{"loc":5227},"blog\u002F2024\u002F09\u002Fflowfuse-release-2-9",[4886,270,272],"QNTjuMoei8qradoHxTzfjzPP_TDH5k1wBtsTMR8e7D8",{"id":5234,"title":5235,"authors":5236,"body":5237,"cta":3,"date":5403,"description":5404,"extension":256,"image":5405,"lastUpdated":3,"meta":5406,"navigation":263,"path":5108,"seo":5411,"sitemap":5412,"stem":5413,"subtitle":5404,"tags":5414,"tldr":3,"video":3,"__hash__":5415},"blog\u002Fblog\u002F2024\u002F08\u002Fflowfuse-2-8-release.md","FlowFuse 2.8: Static File Service, LDAP Updates & More",[3633],{"type":12,"value":5238,"toc":5389},[5239,5242,5244,5247,5250,5255,5258,5262,5265,5268,5271,5275,5283,5291,5294,5298,5306,5314,5318,5321,5324,5331,5333,5340,5345,5347,5351,5353,5360,5362,5365,5367,5372,5376,5380,5382],[15,5240,5241],{},"FlowFuse 2.8 sees a new major feature introduced to the platform. The first iteration of the \"Static Assets Service\" is now available, allowing you to host and serve static files from your FlowFuse instance, giving you easy access to file storage for your applications, and seamless integration of those assets and files within Node-RED.",[19,5243,5103],{"id":5102},[15,5245,5246],{},"The Static Assets Service allows you to host and serve static files from your FlowFuse instance. This feature is particularly useful for applications that require file storage, such as images, videos, or static data sets.",[15,5248,5249],{},"With the Static Assets Service, you can upload files directly to your FlowFuse instance and access them from your Node-RED flows, like so:",[2697,5251,5116,5252,5122],{"controls":263},[5118,5253],{"src":5254,"type":5121},"https:\u002F\u002Fwebsite-data.s3.eu-west-1.amazonaws.com\u002FAssets+Service+Demo.mp4",[15,5256,5257],{},"This is the first step in this new feature set, with more enhancements planned for future releases, whereby you'll also be able to configure access control to public HTTP endpoints for easy access in your Dashboards.",[19,5259,5261],{"id":5260},"ldap-service-improvements","LDAP Service Improvements",[15,5263,5264],{},"Team Membership in FlowFuse can now be automatically managed using LDAP groups. This means that you can now assign roles to LDAP groups, and when a user is added to that group in your LDAP server, they will automatically be assigned the respective role in FlowFuse.",[15,5266,5267],{},"This also extends to the management of FlowFuse Admin users, which was previously only supported for SAML SSO.",[15,5269,5270],{},"The Admin management feature is available for those running self-hosted FlowFuse.",[19,5272,5274],{"id":5273},"notifications-improvements","Notifications Improvements",[15,5276,5277,5278,5282],{},"Last release we introduced the ",[43,5279,5281],{"href":5280},"\u002Fblog\u002F2024\u002F08\u002Fflowfuse-2-7-release#notifications-inbox","Notifications Inbox",", and in this release we're starting to expand on the notifications that you wil receive in FlowFuse, starting with alerts when your Node-RED instances and devices crash unexpectedly, and when instances start in \"Safe Mode\".",[15,5284,5285,5289],{},[74,5286],{"alt":5287,"dataZoomable":77,"src":5288},"Screenshot showing some example notifications to inform users of unexpected crashes","\u002Fblog\u002F2024\u002F08\u002Fimages\u002F2-8-release-notifications.png",[128,5290,5287],{},[15,5292,5293],{},"We're also added filters to show \"Read\" notifications, and grouping together similar notifications so that it's easy to parse if you have many notifications of the same type.",[19,5295,5297],{"id":5296},"managing-devices-at-scale","Managing Devices at Scale",[15,5299,5300,5301,5305],{},"As promised in the ",[43,5302,5304],{"href":5303},"\u002Fblog\u002F2024\u002F08\u002Fflowfuse-2-7-release#bulk-device-actions","FlowFuse 2.7 Release",", we've expanded the actions you can take when working with many Devices at once, which now includes the ability to move Devices between Applications and Instances.",[15,5307,5308,5312],{},[74,5309],{"alt":5310,"dataZoomable":77,"src":5311},"Screenshot to show the new \"Move to Instance\" and \"Move to Application\" bulk actions","\u002Fblog\u002F2024\u002F08\u002Fimages\u002F2-8-release-bulk-move.png",[128,5313,5310],{},[19,5315,5317],{"id":5316},"stricter-approach-to-expired-licenses","Stricter Approach to Expired Licenses",[15,5319,5320],{},"We've made some changes to how FlowFuse handles expired licenses for self-hosted users.",[15,5322,5323],{},"If your license has expired, you will now be unable to access your FlowFuse instance until you renew your license. This is to ensure that you are always using the latest version of FlowFuse and have access to the latest features and security updates.",[15,5325,5326,5327,5330],{},"If you are currently running an older version of FlowFuse with an expired license please ",[43,5328,5329],{"href":300},"contact the Sales team"," to discuss renewing your license before upgrading to FlowFuse 2.8. You can check your current license on the \"Admin Settings\" > \"Overview\" page.",[19,5332,4982],{"id":4981},[15,5334,5335,5336,190],{},"For a full list of everything that went into our 2.8 release, you can check out the ",[43,5337,189],{"href":5338,"rel":5339},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Freleases\u002Ftag\u002Fv2.8.0",[47],[15,5341,3191,5342,190],{},[43,5343,1563],{"href":1561,"rel":5344},[47],[15,5346,3202],{},[19,5348,5350],{"id":5349},"try-it-out","Try it out",[27,5352,213],{"id":212},[15,5354,5355,5356,221,5358,190],{},"We're confident you can have self managed FlowFuse running locally in under 30 minutes. You can install using ",[43,5357,220],{"href":219},[43,5359,225],{"href":224},[27,5361,206],{"id":205},[15,5363,5364],{},"The quickest and easiest way to get started with FlowFuse is on our own hosted instance, FlowFuse Cloud: [Get started for free]({% include \"sign-up-url.njk\" %}) now, and you'll have your own Node-RED instances running in the Cloud within minutes.",[19,5366,4818],{"id":4817},[15,5368,4821,5369,5371],{},[4823,5370],{"value":4825},"), then there is nothing you need to do - it's already running 2.8, and you may have already been playing with the new features.",[15,5373,4829,5374,190],{},[43,5375,4833],{"href":4832},[15,5377,4836,5378],{},[43,5379,4840],{"href":4839},[19,5381,4844],{"id":4843},[15,5383,4847,5384,4851,5386,4857],{},[43,5385,4536],{"href":4850},[43,5387,4856],{"href":4854,"rel":5388},[47],{"title":77,"searchDepth":227,"depth":227,"links":5390},[5391,5392,5393,5394,5395,5396,5397,5401,5402],{"id":5102,"depth":230,"text":5103},{"id":5260,"depth":230,"text":5261},{"id":5273,"depth":230,"text":5274},{"id":5296,"depth":230,"text":5297},{"id":5316,"depth":230,"text":5317},{"id":4981,"depth":230,"text":4982},{"id":5349,"depth":230,"text":5350,"children":5398},[5399,5400],{"id":212,"depth":233,"text":213},{"id":205,"depth":233,"text":206},{"id":4817,"depth":230,"text":4818},{"id":4843,"depth":230,"text":4844},"2024-08-29","Let's take a look at the new features and improvements in FlowFuse 2.8","\u002Fblog\u002F2024\u002F08\u002Fimages\u002Frelease-2-8-august-2024.png",{"excerpt":5407},{"type":12,"value":5408},[5409],[15,5410,5241],{},{"title":5235,"description":5404},{"loc":5108},"blog\u002F2024\u002F08\u002Fflowfuse-2-8-release",[4886,270,272],"wfGDtp6atn9HUB4bZxXtjZQYm8B_7M3qDwpg9RGVmzs",{"id":5417,"title":5418,"authors":5419,"body":5420,"cta":3,"date":5580,"description":5581,"extension":256,"image":5582,"lastUpdated":3,"meta":5583,"navigation":263,"path":5588,"seo":5589,"sitemap":5590,"stem":5591,"subtitle":5592,"tags":5593,"tldr":3,"video":3,"__hash__":5594},"blog\u002Fblog\u002F2024\u002F08\u002Fflowfuse-2-7-release.md","FlowFuse 2.7: Improved management at scale & AI JSON Editor",[3633],{"type":12,"value":5421,"toc":5565},[5422,5425,5429,5432,5440,5448,5451,5455,5458,5462,5465,5473,5476,5479,5487,5490,5494,5497,5505,5514,5516,5523,5528,5530,5532,5534,5540,5542,5544,5546,5551,5556,5558],[15,5423,5424],{},"FlowFuse 2.7 has had a big focus on user experience improvements, particularly centered around teams running at large scales, with over a thousand devices and instances. With this in mind, we've introduced a new search feature that allows you to search across all of your FlowFuse instances, devices and applications from a single place, made it easier to manage your devices with bulk actions, introduced a new notifications inbox to give you a clearer picture on activity across your team, and just for good measure, we've also extended the AI-infused Node-RED experience to the JSON Editor.",[19,5426,5428],{"id":5427},"flowfuse-expert-in-the-json-editor","FlowFuse Expert in the JSON Editor",[15,5430,5431],{},"Last release we saw the introduction of the FlowFuse Expert, and in this release we're rolling this out further to include Node-RED's JSON Editor.",[15,5433,5434,5438],{},[74,5435],{"alt":5436,"dataZoomable":77,"src":5437},"(Left) Screenshot of the AI prompt for a list of 4-legged creatures and (Right) the resulting JSON generated by the FlowFuse Expert","\u002Fblog\u002F2024\u002F08\u002Fimages\u002Fask-assistant-json.jpg",[128,5439,5436],{},[15,5441,5442,5446],{},[74,5443],{"alt":5444,"dataZoomable":77,"src":5445},"(Left) Screenshot of the AI prompt input for a list of simulated devices and (Right) the resulting JSON generated by the FlowFuse Expert","\u002Fblog\u002F2024\u002F08\u002Fimages\u002Fask-assistant-json-2.png",[128,5447,5444],{},[15,5449,5450],{},"This new feature empowers you to create custom data sets within seconds, meaning you can sketch out Dashboards or test Node-RED flows before connecting to real, production environments.",[19,5452,5454],{"id":5453},"managing-resources-at-scale","Managing Resources at Scale",[15,5456,5457],{},"As mentioned in the introduction, a big focus on this release, and moving forward into the next couple too, is around improving the user experience when managing large numbers of devices and instances.",[27,5459,5461],{"id":5460},"centralized-search","Centralized Search",[15,5463,5464],{},"We have customers with over a thousand devices and instances running in FlowFuse. It can be very difficult to find the resource you're looking for. That's why we've introduced a new search feature that allows you to search across all of your FlowFuse instances, devices and applications from a single place.",[15,5466,5467,5471],{},[74,5468],{"alt":5469,"dataZoomable":77,"src":5470},"Screenshot showing the new Application Search feature in FlowFuse","\u002Fchangelog\u002F2024\u002F07\u002Fimages\u002Fapplications-search.png",[128,5472,5469],{},[15,5474,5475],{},"The search filters as you type, making it easy to find the resource you're looking for. It will keep reference to any applications and or child instances\u002Fdevices where appropriate too.",[27,5477,5281],{"id":5478},"notifications-inbox",[15,5480,5481,5485],{},[74,5482],{"alt":5483,"dataZoomable":77,"src":5484},"Screenshot showing the new Notifications Inbox in FlowFuse","\u002Fchangelog\u002F2024\u002F07\u002Fimages\u002Fnotifications-inbox.png",[128,5486,5483],{},[15,5488,5489],{},"This is a first step in introducing richer notifications across FlowFuse. We've introduced a new notifications inbox that will show you all the activity across your team. Currently, this just shows new team invites, but will soon show instance\u002Fdevice activity that needs your attention and more.",[27,5491,5493],{"id":5492},"bulk-device-actions","Bulk Device Actions",[15,5495,5496],{},"We've now enabled the ability to perform bulk actions on devices in FlowFuse. This is particularly useful for managing large numbers of devices, where you might want to update the settings, or delete multiple devices at once.",[15,5498,5499,5503],{},[74,5500],{"alt":5501,"dataZoomable":77,"src":5502},"Screenshot showing the new Bulk Device Actions feature in FlowFuse","\u002Fchangelog\u002F2024\u002F07\u002Fimages\u002Fbulk-delete-1.png",[128,5504,5501],{},[15,5506,5507,5508,5513],{},"For now, we just support bulk delete, but we're planning to add ",[43,5509,5512],{"href":5510,"rel":5511},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F2381",[47],"more bulk actions"," in the very near future.",[27,5515,4982],{"id":4981},[15,5517,5518,5519,190],{},"For a full list of everything that went into our 2.7 release, you can check out the ",[43,5520,189],{"href":5521,"rel":5522},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Freleases\u002Ftag\u002Fv2.7.0",[47],[15,5524,3191,5525,190],{},[43,5526,1563],{"href":1561,"rel":5527},[47],[15,5529,3202],{},[19,5531,5350],{"id":5349},[27,5533,213],{"id":212},[15,5535,5355,5536,221,5538,190],{},[43,5537,220],{"href":219},[43,5539,225],{"href":224},[27,5541,206],{"id":205},[15,5543,5364],{},[19,5545,4818],{"id":4817},[15,5547,4821,5548,5550],{},[4823,5549],{"value":4825},"), then there is nothing you need to do - it's already running 2.7, and you may have already been playing with the new features.",[15,5552,5553,5554,190],{},"If you installed a previous version of FlowFuse and want to upgrade, our documentation provides a\nguide for ",[43,5555,4833],{"href":4832},[19,5557,4844],{"id":4843},[15,5559,4847,5560,4851,5562,4857],{},[43,5561,4536],{"href":4850},[43,5563,4856],{"href":4854,"rel":5564},[47],{"title":77,"searchDepth":227,"depth":227,"links":5566},[5567,5568,5574,5578,5579],{"id":5427,"depth":230,"text":5428},{"id":5453,"depth":230,"text":5454,"children":5569},[5570,5571,5572,5573],{"id":5460,"depth":233,"text":5461},{"id":5478,"depth":233,"text":5281},{"id":5492,"depth":233,"text":5493},{"id":4981,"depth":233,"text":4982},{"id":5349,"depth":230,"text":5350,"children":5575},[5576,5577],{"id":212,"depth":233,"text":213},{"id":205,"depth":233,"text":206},{"id":4817,"depth":230,"text":4818},{"id":4843,"depth":230,"text":4844},"2024-08-01","We've extended the AI-infused Node-RED experience to the JSON Editor, plus improvements to managing and searching your resources on FlowFuse","\u002Fblog\u002F2024\u002F07\u002Fimages\u002Frelease-2-7-aug-2024.png",{"excerpt":5584},{"type":12,"value":5585},[5586],[15,5587,5424],{},"\u002Fblog\u002F2024\u002F08\u002Fflowfuse-2-7-release",{"title":5418,"description":5581},{"loc":5588},"blog\u002F2024\u002F08\u002Fflowfuse-2-7-release","We've extended the AI-infused Node-RED experience to the JSON Editor, plus improvements to managing and searching your resources on FlowFuse.",[4886,270,272],"Qmx2F7_e46Okc-WUbnP2yVmSZyYGursmNAxVDzedUyg",{"id":5596,"title":5597,"authors":5598,"body":5599,"cta":3,"date":5876,"description":5877,"extension":256,"image":5878,"lastUpdated":3,"meta":5879,"navigation":263,"path":5893,"seo":5894,"sitemap":5895,"stem":5896,"subtitle":5897,"tags":5898,"tldr":3,"video":3,"__hash__":5903},"blog\u002Fblog\u002F2024\u002F07\u002Fflowfuse-2-6-release.md","FlowFuse 2.6: AI Infused Node-RED, Persistent File Storage & Lots More",[3633],{"type":12,"value":5600,"toc":5857},[5601,5620,5624,5631,5635,5644,5651,5659,5667,5670,5674,5677,5680,5689,5696,5705,5708,5711,5715,5718,5721,5724,5733,5742,5746,5750,5753,5761,5764,5768,5776,5783,5787,5796,5799,5806,5808,5815,5820,5822,5824,5826,5833,5835,5837,5839,5844,5848,5850],[15,5602,5603,5604,3884,5609,5614,5615,190],{},"FlowFuse 2.6 is packed with great new features, and in this release we've had a heavy focus on improving the development experience of Node-RED, lowering the barrier to entry for new users and aligning to our ",[43,5605,5608],{"href":5606,"rel":5607},"https:\u002F\u002Fflowfuse.com\u002Fhandbook\u002Fengineering\u002Fproduct\u002Fstrategy\u002F#simplified-hosting",[47],"Simplified Hosting",[43,5610,5613],{"href":5611,"rel":5612},"https:\u002F\u002Fflowfuse.com\u002Fhandbook\u002Fengineering\u002Fproduct\u002Fstrategy\u002F#low-code",[47],"Low-Code"," plans from our ",[43,5616,5619],{"href":5617,"rel":5618},"https:\u002F\u002Fflowfuse.com\u002Fhandbook\u002Fengineering\u002Fproduct\u002Fstrategy\u002F",[47],"Product Strategy",[19,5621,5623],{"id":5622},"improving-the-node-red-experience","Improving the Node-RED Experience",[15,5625,5626,5627,5630],{},"Whilst a big part of FlowFuse is the ability to run Node-RED, we're also focussing on how to improve the experience of ",[128,5628,5629],{},"building"," with Node-RED on FlowFuse too.",[27,5632,5634],{"id":5633},"ai-infused-node-red","AI-Infused Node-RED",[15,5636,5637,5641],{},[74,5638],{"alt":5639,"dataZoomable":77,"src":5640},"Screenshot showing the \"FlowFuse Expert\" dialog box","\u002Fblog\u002F2024\u002F07\u002Fimages\u002Fassistant-dialog-function-node-builder.png",[128,5642,5643],{},"Screenshot of an example instruction sent to FlowFuse Expert.",[15,5645,5646,5647,5650],{},"One of the joys of Node-RED is how it empowers users not experienced with development to create bespoke applications. A popular and very powerful node in Node-RED is the \"function\" node. This node allows users to write JavaScript code to manipulate messages. However, this can be daunting for users who are not familiar with JavaScript, it's a steep learning curve. As such, when you run Node-RED in FlowFuse, you'll be able to use the ",[35,5648,5649],{},"Node-RED Assistant"," in both the Editor toolbar, and the function nodes:",[15,5652,5653,5657],{},[74,5654],{"alt":5655,"dataZoomable":77,"src":5656},"Screenshot showing the \"FlowFuse Expert\" button available in the Editor Toolbar","\u002Fblog\u002F2024\u002F07\u002Fimages\u002Fassistant-toolbar.png",[128,5658,5655],{},[15,5660,5661,5665],{},[74,5662],{"alt":5663,"dataZoomable":77,"src":5664},"Screenshot showing the \"Ask the FlowFuse Expert\" button available in the function node","\u002Fblog\u002F2024\u002F07\u002Fimages\u002Fassistant-function-node-inline-code-lens.png",[128,5666,5663],{},[15,5668,5669],{},"The Node-RED Assistant is an AI-powered tool that can help you write JavaScript code in the function node. It can suggest code snippets, help you debug your code, and even write code for you. This is a game-changer for users who are inexperienced with JavaScript, as it lowers the barrier to entry and makes it easier to create applications.",[27,5671,5673],{"id":5672},"immersive-editor-experience","Immersive Editor Experience",[15,5675,5676],{},"During our investigation on how FlowFuse and Node-RED are used together, 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.",[15,5678,5679],{},"We're always seeking to reduce friction in the FlowFuse user experience, and as such, we've introduced a large overhaul of the developer experience for Node-RED when running in FlowFuse, in what we're calling the \"Immersive Editor\".",[15,5681,5682,5686],{},[74,5683],{"alt":5684,"dataZoomable":77,"src":5685},"Screenshot showing the \"Immersive Editor\" view","\u002Fblog\u002F2024\u002F07\u002Fimages\u002Fimmersive-editor.png",[128,5687,5688],{},"Screenshot showing the \"Immersive Editor\" view, where the FlowFuse navigation is available as a floating bar.",[15,5690,5691,5692,5695],{},"Now, the instances tabs are all available in the ",[128,5693,5694],{},"same"," view as the Editor.",[15,5697,5698,5702],{},[74,5699],{"alt":5700,"dataZoomable":77,"src":5701},"Screenshot showing the \"Collapsed\" FlowFuse bar","\u002Fblog\u002F2024\u002F07\u002Fimages\u002Fimmersive-editor-collapsed.png",[128,5703,5704],{},"Screenshot showing the \"FlowFuse\" button at the bottom of the Node-RED Editor.",[15,5706,5707],{},"Don't worry though, if you want the full editor experience again, you can just collapse the FlowFuse menus down to a little \"FlowFuse\" button at the bottom.",[15,5709,5710],{},"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.",[19,5712,5714],{"id":5713},"persistent-file-storage","Persistent File Storage",[15,5716,5717],{},"Since the early days of FlowFuse, we have provided custom File nodes that can be used to read and write individual files from a flow. This was necessary because the local file system was not considered persistent; restarting an instance would reset the file system back to how it was when the instance first started.",[15,5719,5720],{},"Whilst this solved the immediate problem for the File nodes, we know there were 3rd party nodes that would want to use the file system as well - and we couldn't expect them to update to work with our custom solution.",[15,5722,5723],{},"With the 2.6 release, each instance now gets a piece of persistent file system they can read and write to normally, from any node - with full confidence those files will be persisted between restarts.",[15,5725,5726,5727,5732],{},"This unlocks lots of new capabilities using nodes from the community. For example, the ",[43,5728,5731],{"href":5729,"rel":5730},"https:\u002F\u002Fflows.nodered.org\u002Fnode\u002Fnode-red-node-sqlite",[47],"SQLite"," nodes can be used to quickly add a locally managed database to store your data in.",[15,5734,5735,5736,5741],{},"All newly created instances of FlowFuse Cloud from today will have this storage enabled. If you have an existing instance you'd like to move over, then do get ",[43,5737,5740],{"href":5738,"rel":5739},"https:\u002F\u002Fflowfuse.com\u002Fcontact-us\u002F",[47],"in touch"," and we can help move you over.",[19,5743,5745],{"id":5744},"other-highlights","Other Highlights",[27,5747,5749],{"id":5748},"compact-applications-view","Compact Applications View",[15,5751,5752],{},"This is a great example of collaboration with our customers. Three weeks ago, a customer reached out to us with a design proposal for the main \"Applications\" view. Within three weeks it's not only been implemented, but is now live, running in FlowFuse Cloud, and available in FlowFuse 2.6.",[15,5754,5755,5759],{},[74,5756],{"alt":5757,"dataZoomable":77,"src":5758},"Screenshot of new \"Applications\" view for a given Team in FlowFuse.","\u002Fblog\u002F2024\u002F07\u002Fimages\u002Fcompact-applications-view.png",[128,5760,5757],{},[15,5762,5763],{},"The improvement here is that we've moved instances and devices to be shown as a maximum of three per row (rather than the one perviously) meaning you can see far more content at a glance, and hopefully, get to where you need to go in fewer clicks.",[27,5765,5767],{"id":5766},"importexport-blueprints","Import\u002FExport Blueprints",[15,5769,5770,5774],{},[74,5771],{"alt":5772,"dataZoomable":77,"src":5773},"Screenshot showing the admin page for \"Flow Blueprints\" with the new \"Import\"\u002F\"Export\" buttons","\u002Fblog\u002F2024\u002F07\u002Fimages\u002Fblueprint-import-export.png",[128,5775,5772],{},[15,5777,5778,5779,190],{},"Administrators of FlowFuse instances can now import and export Blueprints. This is the first stage of a larger feature set for Blueprints that will make it easier to share common flows and patterns across FlowFuse instances, and see many extensions to our ",[43,5780,5782],{"href":3155,"rel":5781},[47],"Blueprint Library",[27,5784,5786],{"id":5785},"multi-line-environment-variables","Multi-line Environment Variables",[15,5788,5789,5793],{},[74,5790],{"alt":5791,"dataZoomable":77,"src":5792},"Screenshot showing the \"Environment Variables\" table in the Instance's Settings","\u002Fblog\u002F2024\u002F07\u002Fimages\u002Fmultiline-env-vars.png",[128,5794,5795],{},"Screenshot showing the \"Environment Variables\" table in an Instance's Settings",[15,5797,5798],{},"We now support the use of multi-line environment variables for your Node-RED instances running on FlowFuse. This unlocks the ability to store certs or multi-line values like JSON as environment variables.",[15,5800,5801,5802,5805],{},"We've also improved the ",[380,5803,5804],{},".env"," importing to support the use of multi-line values too.",[27,5807,4982],{"id":4981},[15,5809,5810,5811,190],{},"For a full list of everything that went into our 2.6 release, you can check out the ",[43,5812,189],{"href":5813,"rel":5814},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Freleases\u002Ftag\u002Fv2.6.0",[47],[15,5816,3191,5817,190],{},[43,5818,1563],{"href":1561,"rel":5819},[47],[15,5821,3202],{},[19,5823,5350],{"id":5349},[27,5825,213],{"id":212},[15,5827,5828,5829,190],{},"We're confident you can have self managed FlowFuse running locally in under 30 minutes. You can install FlowFuse yourself via a variety of install options. You can find out more details ",[43,5830,5832],{"href":5831},"\u002Fdocs\u002Finstall\u002Fintroduction\u002F","here",[27,5834,206],{"id":205},[15,5836,5364],{},[19,5838,4818],{"id":4817},[15,5840,4821,5841,5843],{},[4823,5842],{"value":4825},"), then there is nothing you need to do - it's already running 2.6, and you may have already been playing with the new features.",[15,5845,5553,5846,190],{},[43,5847,4833],{"href":4832},[19,5849,4844],{"id":4843},[15,5851,4847,5852,4851,5854,4857],{},[43,5853,4536],{"href":4850},[43,5855,4856],{"href":4854,"rel":5856},[47],{"title":77,"searchDepth":227,"depth":227,"links":5858},[5859,5863,5864,5870,5874,5875],{"id":5622,"depth":230,"text":5623,"children":5860},[5861,5862],{"id":5633,"depth":233,"text":5634},{"id":5672,"depth":233,"text":5673},{"id":5713,"depth":230,"text":5714},{"id":5744,"depth":230,"text":5745,"children":5865},[5866,5867,5868,5869],{"id":5748,"depth":233,"text":5749},{"id":5766,"depth":233,"text":5767},{"id":5785,"depth":233,"text":5786},{"id":4981,"depth":233,"text":4982},{"id":5349,"depth":230,"text":5350,"children":5871},[5872,5873],{"id":212,"depth":233,"text":213},{"id":205,"depth":233,"text":206},{"id":4817,"depth":230,"text":4818},{"id":4843,"depth":230,"text":4844},"2024-07-04","Discover the new features in FlowFuse 2.6, and it's focus on improving the Node-RED development experience.","\u002Fblog\u002F2024\u002F07\u002Fimages\u002Frelease-2-6-july-2024.png",{"excerpt":5880},{"type":12,"value":5881},[5882],[15,5883,5603,5884,3884,5887,5614,5890,190],{},[43,5885,5608],{"href":5606,"rel":5886},[47],[43,5888,5613],{"href":5611,"rel":5889},[47],[43,5891,5619],{"href":5617,"rel":5892},[47],"\u002Fblog\u002F2024\u002F07\u002Fflowfuse-2-6-release",{"title":5597,"description":5877},{"loc":5893},"blog\u002F2024\u002F07\u002Fflowfuse-2-6-release","Lowering the barrier to entry for new users, and enhancing the flexibility and functionality of the platform.",[4886,270,272,5899,5900,994,5901,5902,916],"storage","editor","assistant","blueprint","mLO1Jie_w2zC0RIB9yuK01_51A0Gtd_6rpEeQHWf-iM",{"id":5905,"title":5906,"authors":5907,"body":5909,"cta":3,"date":6084,"description":6085,"extension":256,"image":6086,"lastUpdated":3,"meta":6087,"navigation":263,"path":6092,"seo":6093,"sitemap":6094,"stem":6095,"subtitle":6096,"tags":6097,"tldr":3,"video":3,"__hash__":6100},"blog\u002Fblog\u002F2024\u002F06\u002Fflowfuse-2-5-release.md","FlowFuse 2.5: New features to visualize snapshots, LDAP integration, and more",[5908],"grey-dziuba",{"type":12,"value":5910,"toc":6067},[5911,5914,5923,5926,5935,5938,5947,5950,5959,5962,5971,5974,5978,5986,5995,5998,6001,6034,6036,6038,6043,6046,6048,6054,6058,6060],[15,5912,5913],{},"FlowFuse 2.5 introduces LDAP integration, snapshot comparison, extends the ability to preview flow to Blueprints, rounds out the management for snapshots, and allows you to point your own domain names at your FlowFuse instances.",[19,5915,5917,5918],{"id":5916},"support-for-ldap-integration-2558","Support for LDAP integration ",[43,5919,5922],{"href":5920,"rel":5921},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F2558",[47],"#2558",[15,5924,5925],{},"In our commitment to making FlowFuse more versatile and secure, we've introduced support for LDAP alongside our existing SAML SSO options. This has been a much requested feature that we are excited to release.  This allows organizations to manage user authentication seamlessly, leveraging their existing LDAP infrastructure. With this feature, you can ensure that access controls are robust and aligned with your company's security policies.",[19,5927,5929,5930],{"id":5928},"compare-snapshots-visually-to-see-differences-3624","Compare Snapshots Visually to see differences ",[43,5931,5934],{"href":5932,"rel":5933},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F3624",[47],"#3624",[15,5936,5937],{},"Keeping track of changes and updates has never been easier. With our new visual comparison tool, you can now compare snapshots and see the differences at a glance. This feature provides a clear, graphical representation of changes, making it simple to identify modifications and understand their impact.",[19,5939,5941,5942],{"id":5940},"preview-blueprints-before-deployment-3838","Preview Blueprints before Deployment ",[43,5943,5946],{"href":5944,"rel":5945},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F3838",[47],"#3838",[15,5948,5949],{},"Similarly to the feature to be able to compare snapshots we have enabled this same feature to allow users to preview team flows and blueprints prior to deploying.  This expedites the process when you are attempting to find the correct flow for your application.  We find that our users will be able to expedite the exploration of both their own team library and the blueprints.",[19,5951,5953,5954],{"id":5952},"import-and-export-support-for-snapshots-3628","Import and Export support for snapshots ",[43,5955,5958],{"href":5956,"rel":5957},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F3628",[47],"#3628",[15,5960,5961],{},"Managing your Node-RED artifacts just got simpler with our new import and export support for snapshots. With just a few clicks, you can easily transfer configurations between deployments or back up your current setup. This feature is perfect for those who need to replicate environments within their own enterprise with multiple deployments or ensure their configurations are safely stored.",[19,5963,5965,5966],{"id":5964},"deploy-dashboard-and-apis-running-on-flowfuse-via-your-own-domain-names-324","Deploy Dashboard and APIs running on Flowfuse via your own Domain Names ",[43,5967,5970],{"href":5968,"rel":5969},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F324",[47],"#324",[15,5972,5973],{},"Branding and accessibility are crucial, and with FlowFuse 2.5, you can now deploy dashboards and APIs on your own domain names. This enhancement allows you to present a consistent brand experience and makes it easier for users to access your services. Whether you're deploying internally or externally, this feature provides the flexibility you need.",[19,5975,5977],{"id":5976},"full-list-of-release-features-and-bug-fixes","Full list of release features and bug fixes",[15,5979,5980,5981,190],{},"You can view everything included in 2.5 on the ",[43,5982,5985],{"href":5983,"rel":5984},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Freleases\u002Ftag\u002Fv2.5.0",[47],"Github Release page",[15,5987,5988,5989,5991,5992,190],{},"We also regularly release updates to [FlowFuse Cloud](",[4823,5990],{"value":4825},") in between our monthly releases. You can follow the updates as they are made via our ",[43,5993,2310],{"href":5994},"\u002Fchangelog",[19,5996,5997],{"id":2321},"What's next?",[15,5999,6000],{},"We're always working to enhance your experience with FlowFuse. Here's how you can stay informed and contribute:",[150,6002,6003,6013,6025],{},[153,6004,6005,6008,6009,6012],{},[35,6006,6007],{},"Roadmap Overview",": Check out our ",[43,6010,6011],{"href":182},"Product Roadmap Page"," to see what we're planning for future updates.",[153,6014,6015,6018,6019,6024],{},[35,6016,6017],{},"Entire Roadmap",": Visit our ",[43,6020,6023],{"href":6021,"rel":6022},"https:\u002F\u002Fgithub.com\u002Forgs\u002FFlowFuse\u002Fprojects\u002F5",[47],"Roadmap on GitHub"," to follow our progress and contribute your ideas.",[153,6026,6027,6030,6031,190],{},[35,6028,6029],{},"Feedback",": We're interested in your thoughts about FlowFuse. Your feedback is crucial to us, and we'd love to hear about your experiences with the new features and improvements. Please share your thoughts, suggestions, or report any ",[43,6032,1563],{"href":1561,"rel":6033},[47],[15,6035,3202],{},[19,6037,5350],{"id":5349},[15,6039,6040,6041,190],{},"We're confident you can have self managed FlowFuse running locally in under 30 minutes.\nYou can install FlowFuse yourself via a variety of install options. You can find out more details ",[43,6042,5832],{"href":5831},[15,6044,6045],{},"If you'd rather use our hosted offering: [Get started for free]({% include \"sign-up-url.njk\" %}) on FlowFuse Cloud.",[19,6047,4818],{"id":4817},[15,6049,6050,6051,6053],{},"[FlowFuse Cloud](",[4823,6052],{"value":4825},") is already running 2.5.",[15,6055,5553,6056,190],{},[43,6057,4833],{"href":4832},[19,6059,4844],{"id":4843},[15,6061,4847,6062,4851,6064,4857],{},[43,6063,4536],{"href":4850},[43,6065,4856],{"href":4854,"rel":6066},[47],{"title":77,"searchDepth":227,"depth":227,"links":6068},[6069,6071,6073,6075,6077,6079,6080,6081,6082,6083],{"id":5916,"depth":230,"text":6070},"Support for LDAP integration #2558",{"id":5928,"depth":230,"text":6072},"Compare Snapshots Visually to see differences #3624",{"id":5940,"depth":230,"text":6074},"Preview Blueprints before Deployment #3838",{"id":5952,"depth":230,"text":6076},"Import and Export support for snapshots #3628",{"id":5964,"depth":230,"text":6078},"Deploy Dashboard and APIs running on Flowfuse via your own Domain Names #324",{"id":5976,"depth":230,"text":5977},{"id":2321,"depth":230,"text":5997},{"id":5349,"depth":230,"text":5350},{"id":4817,"depth":230,"text":4818},{"id":4843,"depth":230,"text":4844},"2024-06-06","Discover the new features in FlowFuse 2.5, including LDAP integration, visual snapshot comparisons, blueprint previews, snapshot import\u002Fexport support, and custom domain deployment for dashboards and APIs.","\u002Fblog\u002F2024\u002F06\u002Fimages\u002Frelease-2-5-graphic.png",{"excerpt":6088},{"type":12,"value":6089},[6090],[15,6091,5913],{},"\u002Fblog\u002F2024\u002F06\u002Fflowfuse-2-5-release",{"title":5906,"description":6085},{"loc":6092},"blog\u002F2024\u002F06\u002Fflowfuse-2-5-release","Enhancing security, visualization, and deployment flexibility.",[4886,270,272,6098,6099,5902,916],"LDAP","snapshot","gZxHxc0OL3Bajz4xpmA2P8vEKZe1l9zFZHKpSjU13r8",{"id":6102,"title":6103,"authors":6104,"body":6106,"cta":3,"date":6297,"description":6110,"extension":256,"image":6298,"lastUpdated":3,"meta":6299,"navigation":263,"path":6304,"seo":6305,"sitemap":6306,"stem":6307,"subtitle":6308,"tags":6309,"tldr":3,"video":3,"__hash__":6310},"blog\u002Fblog\u002F2024\u002F05\u002Fflowfuse-2-4-release.md","FlowFuse 2.4: making it easier to work with Snapshots, Blueprints & Devices",[6105],"rob-marcer",{"type":12,"value":6107,"toc":6280},[6108,6111,6120,6123,6132,6140,6149,6163,6171,6179,6188,6197,6206,6209,6211,6218,6224,6226,6228,6250,6252,6254,6258,6260,6262,6267,6271,6273],[15,6109,6110],{},"FlowFuse 2.4 introduces better ways to work with Snapshots, Blueprints, view the content of you flows in FlowFuse, and manage the version of Node-RED running on Devices",[19,6112,6114,6115],{"id":6113},"export-snapshots-from-flowfuse-3627","Export Snapshots from FlowFuse ",[43,6116,6119],{"href":6117,"rel":6118},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F3627",[47],"#3627",[15,6121,6122],{},"You can now export your Snapshots of your Node-RED instances. This is our first step towards making it easier to move Snapshots in and out or your FlowFuse projects, as well as share them with other teams. We will be adding many more Snapshot management features over the next few releases.",[19,6124,6126,6127],{"id":6125},"easier-creation-of-node-red-instances-from-blueprints-3729","Easier creation of Node-RED instances from Blueprints ",[43,6128,6131],{"href":6129,"rel":6130},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F3729",[47],"#3729",[15,6133,6134,6135,6139],{},"We introduced our library of Node-RED ",[43,6136,6138],{"href":6137},"\u002Fblog\u002F2023\u002F10\u002Fblueprints\u002F","Blueprints"," in October 2023. FlowFuse Blueprints aim to make the Node-RED experience more accessible for newcomers, while also offering a treasure trove of fresh ideas for seasoned Node-RED users. In this release, we are making it even easier to start a new Node-RED instance based on a Blueprint from our library.",[19,6141,6143,6144],{"id":6142},"view-flows-within-the-team-library-without-loading-node-red-3803","View Flows within the Team Library without loading Node-RED ",[43,6145,6148],{"href":6146,"rel":6147},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F3803",[47],"#3803",[15,6150,6151,6152,6157,6158,6162],{},"In September 2023, Node-RED community member ",[43,6153,6156],{"href":6154,"rel":6155},"https:\u002F\u002Fgithub.com\u002Fgorenje",[47],"gorenje"," created some code that could be used to visualise Node-RED flows without having to load the full Node-RED editor. This was added to the community ",[43,6159,6161],{"href":6160},"\u002Fblog\u002F2023\u002F09\u002Fflow-viewer\u002F","flow library"," and has proven to be a great addition.",[15,6164,6165,6166,6170],{},"With gorenje's support, we've packaged up his library to make it easier to embed in other sites and have made it generally available ",[43,6167,5832],{"href":6168,"rel":6169},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflow-renderer",[47],". A big thanks to gorenje for laying the ground work and allow us to build on it.",[15,6172,6173,6174,6178],{},"We've wasted no time putting this to good use within FlowFuse. Our first step is in our ",[43,6175,6177],{"href":6176},"\u002Fchangelog\u002F2024\u002F05\u002Flibrary-flowviewer\u002F","Team Library",". You can now view a visual representation of saved flows in your Team Library.",[19,6180,6182,6183],{"id":6181},"view-flows-within-snapshots-without-loading-node-red-3798","View Flows within Snapshots without loading Node-RED ",[43,6184,6187],{"href":6185,"rel":6186},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F3798",[47],"#3798",[15,6189,6190,6191,6196],{},"The second place we are adding the ability to preview flows is to the Snapshots interface. Again, based on ",[43,6192,6195],{"href":6193,"rel":6194},"https:\u002F\u002Fgithub.com\u002Fgorenje\u002Fnode-red-flowviewer-js",[47],"node-red-flowviewer-js",", the Flow Viewer will make loading the snapshot you need into your Node-RED instance quicker and easier.",[19,6198,6200,6201],{"id":6199},"manage-node-red-versions-on-devices-3766","Manage Node-RED versions on Devices ",[43,6202,6205],{"href":6203,"rel":6204},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fpull\u002F3766",[47],"#3766",[15,6207,6208],{},"It can be useful to select a specific version of Node-RED to run, for example where you are using a custom node which only runs on specific versions of Node-RED. In this release we have added the ability to easily select the version of Node-RED you wish to run on your devices.",[19,6210,5977],{"id":5976},[15,6212,6213,6214,190],{},"You can view everything included in 2.4 on the ",[43,6215,5985],{"href":6216,"rel":6217},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Freleases\u002Ftag\u002Fv2.4.0",[47],[15,6219,5988,6220,5991,6222,190],{},[4823,6221],{"value":4825},[43,6223,2310],{"href":5994},[19,6225,5997],{"id":2321},[15,6227,6000],{},[150,6229,6230,6236,6243],{},[153,6231,6232,6008,6234,6012],{},[35,6233,6007],{},[43,6235,6011],{"href":182},[153,6237,6238,6018,6240,6024],{},[35,6239,6017],{},[43,6241,6023],{"href":6021,"rel":6242},[47],[153,6244,6245,6030,6247,190],{},[35,6246,6029],{},[43,6248,1563],{"href":1561,"rel":6249},[47],[15,6251,3202],{},[19,6253,5350],{"id":5349},[15,6255,6040,6256,190],{},[43,6257,5832],{"href":5831},[15,6259,6045],{},[19,6261,4818],{"id":4817},[15,6263,6050,6264,6266],{},[4823,6265],{"value":4825},") is already running 2.4.",[15,6268,5553,6269,190],{},[43,6270,4833],{"href":4832},[19,6272,4844],{"id":4843},[15,6274,4847,6275,4851,6277,4857],{},[43,6276,4536],{"href":4850},[43,6278,4856],{"href":4854,"rel":6279},[47],{"title":77,"searchDepth":227,"depth":227,"links":6281},[6282,6284,6286,6288,6290,6292,6293,6294,6295,6296],{"id":6113,"depth":230,"text":6283},"Export Snapshots from FlowFuse #3627",{"id":6125,"depth":230,"text":6285},"Easier creation of Node-RED instances from Blueprints #3729",{"id":6142,"depth":230,"text":6287},"View Flows within the Team Library without loading Node-RED #3803",{"id":6181,"depth":230,"text":6289},"View Flows within Snapshots without loading Node-RED #3798",{"id":6199,"depth":230,"text":6291},"Manage Node-RED versions on Devices #3766",{"id":5976,"depth":230,"text":5977},{"id":2321,"depth":230,"text":5997},{"id":5349,"depth":230,"text":5350},{"id":4817,"depth":230,"text":4818},{"id":4843,"depth":230,"text":4844},"2024-05-09","\u002Fblog\u002F2024\u002F05\u002Fimages\u002Frelease-2-4-graphic.png",{"excerpt":6300},{"type":12,"value":6301},[6302],[15,6303,6110],{},"\u002Fblog\u002F2024\u002F05\u002Fflowfuse-2-4-release",{"title":6103,"description":6110},{"loc":6304},"blog\u002F2024\u002F05\u002Fflowfuse-2-4-release","Our latest release introduces better ways to work with Snapshots, Blueprints, view the content of you flows in FlowFuse, and manage the version of Node-RED running on Devices",[4886,270,272],"UPMRl3TkOjPS2jbzVM9Qq-pDwLwk_rD_2i7JhvaXwCs",{"id":6312,"title":6313,"authors":6314,"body":6315,"cta":3,"date":7916,"description":7917,"extension":256,"image":7918,"lastUpdated":3,"meta":7919,"navigation":263,"path":7924,"seo":7925,"sitemap":7926,"stem":7927,"subtitle":7917,"tags":7928,"tldr":3,"video":3,"__hash__":7935},"blog\u002Fblog\u002F2024\u002F04\u002Fdashboard-milestones-pwa-new-components.md","Dashboard 2.0: Milestones, PWA and New Components",[3633],{"type":12,"value":6316,"toc":7902},[6317,6320,6324,6327,6330,6355,6364,6368,6375,6378,6382,6391,6409,6415,6424,6433,6449,6729,6737,6746,6755,6761,6774,7234,7245,7254,7260,7768,7776,7785,7797,7803,7806,7814,7816,7819,7853,7861,7865,7868,7891,7899],[15,6318,6319],{},"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'll deep dive into community contributions, PWA support, new Vuetify components, and the rest of the great work published in this latest release.",[19,6321,6323],{"id":6322},"community-contributions","Community Contributions",[15,6325,6326],{},"We firstly wanted to take this opportunity to point out a big milestone that we're very proud to see in Node-RED Dashboard 2.0.",[15,6328,6329],{},"This release marks the first time we'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.",[15,6331,6332,6333,6338,6339,6338,6344,3884,6349,6354],{},"So thank you very much ",[43,6334,6337],{"href":6335,"rel":6336},"https:\u002F\u002Fgithub.com\u002Fbartbutenaers",[47],"@BartButenaers",", ",[43,6340,6343],{"href":6341,"rel":6342},"https:\u002F\u002Fgithub.com\u002FEk1nox",[47],"@Ek1nox",[43,6345,6348],{"href":6346,"rel":6347},"https:\u002F\u002Fgithub.com\u002Ffullmetal-fred",[47],"@fullmetal-fred",[43,6350,6353],{"href":6351,"rel":6352},"https:\u002F\u002Fgithub.com\u002Fcgjgh",[47],"@cgjgh"," for for great efforts and initiative in improving Node-RED Dashboard 2.0.",[15,6356,6357,6358,6363],{},"For anyone else that's interested in contributing to the project, please do reach out, and we'll be happy to help you get started. We also have a ",[43,6359,6362],{"href":6360,"rel":6361},"https:\u002F\u002Fdashboard.flowfuse.com\u002Fcontributing\u002F",[47],"Contributing Guide"," if you want to dive straight in.",[19,6365,6367],{"id":6366},"progressive-web-app-pwa-support","Progressive Web App (PWA) Support",[15,6369,6370,6371,6374],{},"The biggest community contribution we saw in this release was the addition of Progressive Web App (PWA) support. This feature was added by ",[43,6372,6353],{"href":6351,"rel":6373},[47],", and allows you to install your Node-RED Dashboard 2.0 applications directly onto your platform, including Windows, iOS and Android.",[15,6376,6377],{},"This work will give your Dashboard's a much more native\u002Fnatural feel when running on your own machines, and mean you no longer need to go via your browser to access your applications.",[19,6379,6381],{"id":6380},"new-vuetify-preview-components-available","New Vuetify (Preview) Components Available",[15,6383,6384,6385,6390],{},"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't stop you from building out fully customized interfaces yourself using our ",[43,6386,6389],{"href":6387,"rel":6388},"https:\u002F\u002Fdashboard.flowfuse.com\u002Fnodes\u002Fwidgets\u002Fui-template.html",[47],"ui-template node"," with the vast collection of Vuetify components.",[15,6392,6393,6394,6397,6398,6403,6404,190],{},"Within the ",[380,6395,6396],{},"ui-template"," node, we natively support any of the ",[43,6399,6402],{"href":6400,"rel":6401},"https:\u002F\u002Fvuetifyjs.com\u002Fen\u002Fcomponents\u002Fall\u002F#containment",[47],"core Vuetify components",", but Vuetify itself is always evolving and often they release components into their ",[43,6405,6408],{"href":6406,"rel":6407},"https:\u002F\u002Fvuetifyjs.com\u002Fen\u002Flabs\u002Fintroduction\u002F#what-is-labs",[47],"Vuetify Labs",[15,6410,6411,6412,6414],{},"In their latest releases, a few of the new components have caught our eye as we've seen them regularly requested in Dashboard 2.0. As such, we've now made available the following Vuetify components inside a ",[380,6413,6396],{}," node:",[3934,6416,6418,6419,1104],{"id":6417},"number-input-docs","Number Input (",[43,6420,6423],{"href":6421,"rel":6422},"https:\u002F\u002Fvuetifyjs.com\u002Fen\u002Fcomponents\u002Fnumber-inputs\u002F#installation",[47],"docs",[15,6425,6426,6430],{},[74,6427],{"alt":6428,"src":6429},"Number Input","\u002Fblog\u002F2024\u002F04\u002Fimages\u002Fvuetify-numeric.png",[128,6431,6432],{},"An example v-number-input from Vuetify's component library",[15,6434,6435,6436,6441,6442,6445,6446,6448],{},"We do have ",[43,6437,6440],{"href":6438,"rel":6439},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fnode-red-dashboard\u002Fissues\u002F41",[47],"plans"," 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 ",[380,6443,6444],{},"v-number-input"," component in a ",[380,6447,6396],{}," node to create your own number inputs instead.",[4479,6450,6454],{"className":6451,"code":6452,"language":6453,"meta":77,"style":77},"language-html shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u003Ctemplate>\n    \u003Cv-number-input v-model=\"value\">\u003C\u002Fv-number-input>\n\u003C\u002Ftemplate>\n\n\u003Cscript>\n  export default {\n    data() {\n      return {\n        value: 0\n      }\n    },\n    watch: {\n      value: function () {\n        this.send({payload: this.value})\n      }\n    }\n  }\n\u003C\u002Fscript>\n\n\u003Cstyle>\n    .v-number-input__control .v-btn {\n        color: var(--v-theme-on-surface);\n    }\n\u003C\u002Fstyle>\n","html",[380,6455,6456,6469,6498,6507,6512,6522,6535,6546,6554,6567,6573,6579,6589,6606,6638,6643,6649,6655,6664,6669,6678,6695,6715,6720],{"__ignoreMap":77},[1086,6457,6458,6462,6466],{"class":4488,"line":4489},[1086,6459,6461],{"class":6460},"sMK4o","\u003C",[1086,6463,6465],{"class":6464},"swJcz","template",[1086,6467,6468],{"class":6460},">\n",[1086,6470,6471,6474,6476,6480,6483,6486,6489,6491,6494,6496],{"class":4488,"line":230},[1086,6472,6473],{"class":6460},"    \u003C",[1086,6475,6444],{"class":6464},[1086,6477,6479],{"class":6478},"spNyl"," v-model",[1086,6481,6482],{"class":6460},"=",[1086,6484,6485],{"class":6460},"\"",[1086,6487,6488],{"class":4496},"value",[1086,6490,6485],{"class":6460},[1086,6492,6493],{"class":6460},">\u003C\u002F",[1086,6495,6444],{"class":6464},[1086,6497,6468],{"class":6460},[1086,6499,6500,6503,6505],{"class":4488,"line":233},[1086,6501,6502],{"class":6460},"\u003C\u002F",[1086,6504,6465],{"class":6464},[1086,6506,6468],{"class":6460},[1086,6508,6509],{"class":4488,"line":227},[1086,6510,6511],{"emptyLinePlaceholder":263},"\n",[1086,6513,6515,6517,6520],{"class":4488,"line":6514},5,[1086,6516,6461],{"class":6460},[1086,6518,6519],{"class":6464},"script",[1086,6521,6468],{"class":6460},[1086,6523,6525,6529,6532],{"class":4488,"line":6524},6,[1086,6526,6528],{"class":6527},"s7zQu","  export",[1086,6530,6531],{"class":6527}," default",[1086,6533,6534],{"class":6460}," {\n",[1086,6536,6538,6541,6544],{"class":4488,"line":6537},7,[1086,6539,6540],{"class":6464},"    data",[1086,6542,6543],{"class":6460},"()",[1086,6545,6534],{"class":6460},[1086,6547,6549,6552],{"class":4488,"line":6548},8,[1086,6550,6551],{"class":6527},"      return",[1086,6553,6534],{"class":6460},[1086,6555,6557,6560,6563],{"class":4488,"line":6556},9,[1086,6558,6559],{"class":6464},"        value",[1086,6561,6562],{"class":6460},":",[1086,6564,6566],{"class":6565},"sbssI"," 0\n",[1086,6568,6570],{"class":4488,"line":6569},10,[1086,6571,6572],{"class":6460},"      }\n",[1086,6574,6576],{"class":4488,"line":6575},11,[1086,6577,6578],{"class":6460},"    },\n",[1086,6580,6582,6585,6587],{"class":4488,"line":6581},12,[1086,6583,6584],{"class":6464},"    watch",[1086,6586,6562],{"class":6460},[1086,6588,6534],{"class":6460},[1086,6590,6592,6596,6598,6601,6604],{"class":4488,"line":6591},13,[1086,6593,6595],{"class":6594},"s2Zo4","      value",[1086,6597,6562],{"class":6460},[1086,6599,6600],{"class":6478}," function",[1086,6602,6603],{"class":6460}," ()",[1086,6605,6534],{"class":6460},[1086,6607,6609,6612,6615,6618,6621,6624,6626,6629,6632,6635],{"class":4488,"line":6608},14,[1086,6610,6611],{"class":6460},"        this.",[1086,6613,6614],{"class":6594},"send",[1086,6616,6617],{"class":6464},"(",[1086,6619,6620],{"class":6460},"{",[1086,6622,6623],{"class":6464},"payload",[1086,6625,6562],{"class":6460},[1086,6627,6628],{"class":6460}," this.",[1086,6630,6488],{"class":6631},"sTEyZ",[1086,6633,6634],{"class":6460},"}",[1086,6636,6637],{"class":6464},")\n",[1086,6639,6641],{"class":4488,"line":6640},15,[1086,6642,6572],{"class":6460},[1086,6644,6646],{"class":4488,"line":6645},16,[1086,6647,6648],{"class":6460},"    }\n",[1086,6650,6652],{"class":4488,"line":6651},17,[1086,6653,6654],{"class":6460},"  }\n",[1086,6656,6658,6660,6662],{"class":4488,"line":6657},18,[1086,6659,6502],{"class":6460},[1086,6661,6519],{"class":6464},[1086,6663,6468],{"class":6460},[1086,6665,6667],{"class":4488,"line":6666},19,[1086,6668,6511],{"emptyLinePlaceholder":263},[1086,6670,6672,6674,6676],{"class":4488,"line":6671},20,[1086,6673,6461],{"class":6460},[1086,6675,4643],{"class":6464},[1086,6677,6468],{"class":6460},[1086,6679,6681,6684,6687,6690,6693],{"class":4488,"line":6680},21,[1086,6682,6683],{"class":6460},"    .",[1086,6685,6686],{"class":4492},"v-number-input__control",[1086,6688,6689],{"class":6460}," .",[1086,6691,6692],{"class":4492},"v-btn",[1086,6694,6534],{"class":6460},[1086,6696,6698,6702,6704,6707,6709,6712],{"class":4488,"line":6697},22,[1086,6699,6701],{"class":6700},"sqsOY","        color",[1086,6703,6562],{"class":6460},[1086,6705,6706],{"class":6594}," var",[1086,6708,6617],{"class":6460},[1086,6710,6711],{"class":6631},"--v-theme-on-surface",[1086,6713,6714],{"class":6460},");\n",[1086,6716,6718],{"class":4488,"line":6717},23,[1086,6719,6648],{"class":6460},[1086,6721,6723,6725,6727],{"class":4488,"line":6722},24,[1086,6724,6502],{"class":6460},[1086,6726,4643],{"class":6464},[1086,6728,6468],{"class":6460},[3934,6730,6732,6733,1104],{"id":6731},"sparkline-docs","Sparkline (",[43,6734,6423],{"href":6735,"rel":6736},"https:\u002F\u002Fvuetifyjs.com\u002Fen\u002Fcomponents\u002Fsparklines\u002F#installation",[47],[15,6738,6739,6743],{},[74,6740],{"alt":6741,"src":6742},"Sparkline","\u002Fblog\u002F2024\u002F04\u002Fimages\u002Fvuetify-sparkline.png",[128,6744,6745],{},"An example v-sparkline rendering the output from a ui-slider",[15,6747,6748,6749,6445,6752,6754],{},"Sparklines are a great way to visualize data trends in a small space, and we've seen them requested a few times in the past. Now you can use the ",[380,6750,6751],{},"v-sparkline",[380,6753,6396],{}," node to create your own sparklines.",[15,6756,6757,6758,6760],{},"This will also likely become a standalone node at some point too, possibly as a third-party widget, but for now implementing into a ",[380,6759,6396],{}," is very straight forward.",[15,6762,6763,6764,6766,6767,6770,6771,6773],{},"In the following example ",[380,6765,6396],{},", we append any incoming ",[380,6768,6769],{},"msg.payload"," to a ",[380,6772,6488],{}," array and render the sparkline accordingly.",[4479,6775,6777],{"className":6451,"code":6776,"language":6453,"meta":77,"style":77},"\u003Ctemplate>\n  \u003Cv-sparkline class=\"nrdb-ui-sparkline\" :auto-line-width=\"false\" :fill=\"false\" :gradient=\"gradient\"\n    :gradient-direction=\"'top'\" :line-width=\"2\" :model-value=\"value\" :padding=\"8\"\n    :smooth=\"10\" :stroke-linecap=\"'round'\" :type=\"'trend'\" auto-draw>\u003C\u002Fv-sparkline>\n\u003C\u002Ftemplate>\n\n\u003Cscript>\n  export default {\n    data: function () {\n      return {\n        gradient: ['#f72047', '#ffd200', '#1feaea'],\n        value: [0, 2, 5, 9, 5, 10, 3, 5, 0, 0, 1, 8, 2, 9, 0]\n      }\n    },\n    watch: {\n      msg: function () {\n        this.value.push(this.msg.payload)\n      }\n    }\n  }\n\u003C\u002Fscript>\n\n\u003Cstyle>\n.nrdb-ui-sparkline path {\n  stroke-dasharray: 0 !important;\n}\n\u003C\u002Fstyle>\n",[380,6778,6779,6787,6842,6891,6938,6946,6950,6958,6966,6978,6984,7028,7106,7110,7114,7122,7135,7160,7164,7168,7172,7180,7184,7192,7203,7219,7225],{"__ignoreMap":77},[1086,6780,6781,6783,6785],{"class":4488,"line":4489},[1086,6782,6461],{"class":6460},[1086,6784,6465],{"class":6464},[1086,6786,6468],{"class":6460},[1086,6788,6789,6792,6794,6797,6799,6801,6804,6806,6809,6811,6813,6816,6818,6821,6823,6825,6827,6829,6832,6834,6836,6839],{"class":4488,"line":230},[1086,6790,6791],{"class":6460},"  \u003C",[1086,6793,6751],{"class":6464},[1086,6795,6796],{"class":6478}," class",[1086,6798,6482],{"class":6460},[1086,6800,6485],{"class":6460},[1086,6802,6803],{"class":4496},"nrdb-ui-sparkline",[1086,6805,6485],{"class":6460},[1086,6807,6808],{"class":6478}," :auto-line-width",[1086,6810,6482],{"class":6460},[1086,6812,6485],{"class":6460},[1086,6814,6815],{"class":4496},"false",[1086,6817,6485],{"class":6460},[1086,6819,6820],{"class":6478}," :fill",[1086,6822,6482],{"class":6460},[1086,6824,6485],{"class":6460},[1086,6826,6815],{"class":4496},[1086,6828,6485],{"class":6460},[1086,6830,6831],{"class":6478}," :gradient",[1086,6833,6482],{"class":6460},[1086,6835,6485],{"class":6460},[1086,6837,6838],{"class":4496},"gradient",[1086,6840,6841],{"class":6460},"\"\n",[1086,6843,6844,6847,6849,6851,6854,6856,6859,6861,6863,6866,6868,6871,6873,6875,6877,6879,6882,6884,6886,6889],{"class":4488,"line":233},[1086,6845,6846],{"class":6478},"    :gradient-direction",[1086,6848,6482],{"class":6460},[1086,6850,6485],{"class":6460},[1086,6852,6853],{"class":4496},"'top'",[1086,6855,6485],{"class":6460},[1086,6857,6858],{"class":6478}," :line-width",[1086,6860,6482],{"class":6460},[1086,6862,6485],{"class":6460},[1086,6864,6865],{"class":4496},"2",[1086,6867,6485],{"class":6460},[1086,6869,6870],{"class":6478}," :model-value",[1086,6872,6482],{"class":6460},[1086,6874,6485],{"class":6460},[1086,6876,6488],{"class":4496},[1086,6878,6485],{"class":6460},[1086,6880,6881],{"class":6478}," :padding",[1086,6883,6482],{"class":6460},[1086,6885,6485],{"class":6460},[1086,6887,6888],{"class":4496},"8",[1086,6890,6841],{"class":6460},[1086,6892,6893,6896,6898,6900,6903,6905,6908,6910,6912,6915,6917,6920,6922,6924,6927,6929,6932,6934,6936],{"class":4488,"line":227},[1086,6894,6895],{"class":6478},"    :smooth",[1086,6897,6482],{"class":6460},[1086,6899,6485],{"class":6460},[1086,6901,6902],{"class":4496},"10",[1086,6904,6485],{"class":6460},[1086,6906,6907],{"class":6478}," :stroke-linecap",[1086,6909,6482],{"class":6460},[1086,6911,6485],{"class":6460},[1086,6913,6914],{"class":4496},"'round'",[1086,6916,6485],{"class":6460},[1086,6918,6919],{"class":6478}," :type",[1086,6921,6482],{"class":6460},[1086,6923,6485],{"class":6460},[1086,6925,6926],{"class":4496},"'trend'",[1086,6928,6485],{"class":6460},[1086,6930,6931],{"class":6478}," auto-draw",[1086,6933,6493],{"class":6460},[1086,6935,6751],{"class":6464},[1086,6937,6468],{"class":6460},[1086,6939,6940,6942,6944],{"class":4488,"line":6514},[1086,6941,6502],{"class":6460},[1086,6943,6465],{"class":6464},[1086,6945,6468],{"class":6460},[1086,6947,6948],{"class":4488,"line":6524},[1086,6949,6511],{"emptyLinePlaceholder":263},[1086,6951,6952,6954,6956],{"class":4488,"line":6537},[1086,6953,6461],{"class":6460},[1086,6955,6519],{"class":6464},[1086,6957,6468],{"class":6460},[1086,6959,6960,6962,6964],{"class":4488,"line":6548},[1086,6961,6528],{"class":6527},[1086,6963,6531],{"class":6527},[1086,6965,6534],{"class":6460},[1086,6967,6968,6970,6972,6974,6976],{"class":4488,"line":6556},[1086,6969,6540],{"class":6594},[1086,6971,6562],{"class":6460},[1086,6973,6600],{"class":6478},[1086,6975,6603],{"class":6460},[1086,6977,6534],{"class":6460},[1086,6979,6980,6982],{"class":4488,"line":6569},[1086,6981,6551],{"class":6527},[1086,6983,6534],{"class":6460},[1086,6985,6986,6989,6991,6994,6997,7000,7002,7005,7008,7011,7013,7015,7017,7020,7022,7025],{"class":4488,"line":6575},[1086,6987,6988],{"class":6464},"        gradient",[1086,6990,6562],{"class":6460},[1086,6992,6993],{"class":6464}," [",[1086,6995,6996],{"class":6460},"'",[1086,6998,6999],{"class":4496},"#f72047",[1086,7001,6996],{"class":6460},[1086,7003,7004],{"class":6460},",",[1086,7006,7007],{"class":6460}," '",[1086,7009,7010],{"class":4496},"#ffd200",[1086,7012,6996],{"class":6460},[1086,7014,7004],{"class":6460},[1086,7016,7007],{"class":6460},[1086,7018,7019],{"class":4496},"#1feaea",[1086,7021,6996],{"class":6460},[1086,7023,7024],{"class":6464},"]",[1086,7026,7027],{"class":6460},",\n",[1086,7029,7030,7032,7034,7036,7039,7041,7044,7046,7049,7051,7054,7056,7058,7060,7063,7065,7068,7070,7072,7074,7077,7079,7081,7083,7086,7088,7091,7093,7095,7097,7099,7101,7103],{"class":4488,"line":6581},[1086,7031,6559],{"class":6464},[1086,7033,6562],{"class":6460},[1086,7035,6993],{"class":6464},[1086,7037,7038],{"class":6565},"0",[1086,7040,7004],{"class":6460},[1086,7042,7043],{"class":6565}," 2",[1086,7045,7004],{"class":6460},[1086,7047,7048],{"class":6565}," 5",[1086,7050,7004],{"class":6460},[1086,7052,7053],{"class":6565}," 9",[1086,7055,7004],{"class":6460},[1086,7057,7048],{"class":6565},[1086,7059,7004],{"class":6460},[1086,7061,7062],{"class":6565}," 10",[1086,7064,7004],{"class":6460},[1086,7066,7067],{"class":6565}," 3",[1086,7069,7004],{"class":6460},[1086,7071,7048],{"class":6565},[1086,7073,7004],{"class":6460},[1086,7075,7076],{"class":6565}," 0",[1086,7078,7004],{"class":6460},[1086,7080,7076],{"class":6565},[1086,7082,7004],{"class":6460},[1086,7084,7085],{"class":6565}," 1",[1086,7087,7004],{"class":6460},[1086,7089,7090],{"class":6565}," 8",[1086,7092,7004],{"class":6460},[1086,7094,7043],{"class":6565},[1086,7096,7004],{"class":6460},[1086,7098,7053],{"class":6565},[1086,7100,7004],{"class":6460},[1086,7102,7076],{"class":6565},[1086,7104,7105],{"class":6464},"]\n",[1086,7107,7108],{"class":4488,"line":6591},[1086,7109,6572],{"class":6460},[1086,7111,7112],{"class":4488,"line":6608},[1086,7113,6578],{"class":6460},[1086,7115,7116,7118,7120],{"class":4488,"line":6640},[1086,7117,6584],{"class":6464},[1086,7119,6562],{"class":6460},[1086,7121,6534],{"class":6460},[1086,7123,7124,7127,7129,7131,7133],{"class":4488,"line":6645},[1086,7125,7126],{"class":6594},"      msg",[1086,7128,6562],{"class":6460},[1086,7130,6600],{"class":6478},[1086,7132,6603],{"class":6460},[1086,7134,6534],{"class":6460},[1086,7136,7137,7139,7141,7143,7146,7148,7151,7154,7156,7158],{"class":4488,"line":6651},[1086,7138,6611],{"class":6460},[1086,7140,6488],{"class":6631},[1086,7142,190],{"class":6460},[1086,7144,7145],{"class":6594},"push",[1086,7147,6617],{"class":6464},[1086,7149,7150],{"class":6460},"this.",[1086,7152,7153],{"class":6631},"msg",[1086,7155,190],{"class":6460},[1086,7157,6623],{"class":6631},[1086,7159,6637],{"class":6464},[1086,7161,7162],{"class":4488,"line":6657},[1086,7163,6572],{"class":6460},[1086,7165,7166],{"class":4488,"line":6666},[1086,7167,6648],{"class":6460},[1086,7169,7170],{"class":4488,"line":6671},[1086,7171,6654],{"class":6460},[1086,7173,7174,7176,7178],{"class":4488,"line":6680},[1086,7175,6502],{"class":6460},[1086,7177,6519],{"class":6464},[1086,7179,6468],{"class":6460},[1086,7181,7182],{"class":4488,"line":6697},[1086,7183,6511],{"emptyLinePlaceholder":263},[1086,7185,7186,7188,7190],{"class":4488,"line":6717},[1086,7187,6461],{"class":6460},[1086,7189,4643],{"class":6464},[1086,7191,6468],{"class":6460},[1086,7193,7194,7196,7198,7201],{"class":4488,"line":6722},[1086,7195,190],{"class":6460},[1086,7197,6803],{"class":4492},[1086,7199,7200],{"class":4492}," path",[1086,7202,6534],{"class":6460},[1086,7204,7206,7209,7211,7213,7216],{"class":4488,"line":7205},25,[1086,7207,7208],{"class":6700},"  stroke-dasharray",[1086,7210,6562],{"class":6460},[1086,7212,7076],{"class":6565},[1086,7214,7215],{"class":6565}," !important",[1086,7217,7218],{"class":6460},";\n",[1086,7220,7222],{"class":4488,"line":7221},26,[1086,7223,7224],{"class":6460},"}\n",[1086,7226,7228,7230,7232],{"class":4488,"line":7227},27,[1086,7229,6502],{"class":6460},[1086,7231,4643],{"class":6464},[1086,7233,6468],{"class":6460},[15,7235,7236,7237,7240,7241,7244],{},"There is no limitation on ",[128,7238,7239],{},"where"," you can use the sparkline either, we could, for example, add it to a ",[380,7242,7243],{},"v-data-table"," to show a sparkline of a particular feature for each row in the table:",[15,7246,7247,7251],{},[74,7248],{"alt":7249,"src":7250},"Data Table with Sparkline","\u002Fblog\u002F2024\u002F04\u002Fimages\u002Fvuetify-data-table-sparkline.png",[128,7252,7253],{},"An example v-data-table that renders a v-sparkline on each row",[15,7255,7256,7257,7259],{},"Here we see the corresponding template for the above ",[380,7258,7243],{}," example:",[4479,7261,7263],{"className":6451,"code":7262,"language":6453,"meta":77,"style":77},"\u003Ctemplate>\n    \u003C!-- Provide an input text box to search the content -->\n    \u003Cv-text-field v-model=\"search\" label=\"Search\" prepend-inner-icon=\"mdi-magnify\" single-line variant=\"outlined\"\n        hide-details>\u003C\u002Fv-text-field>\n    \u003Cv-data-table v-model:search=\"search\" :items=\"msg?.payload\" :headers=\"headers\">\n        \u003Ctemplate v-slot:header.pingvalues=\"{ item }\">\n            Ping History\n        \u003C\u002Ftemplate>\n        \u003Ctemplate v-slot:item.ping=\"{ item }\">\n            {{ item.ping }}ms\n        \u003C\u002Ftemplate>\n        \u003Ctemplate v-slot:item.pingvalues=\"{ item }\">\n            \u003Cv-sparkline v-model=\"item.pingValues\" :gradient=\"['#42b3f4', '#42b3f400']\"\n                :line-width=\"2\" gradientDirection=\"top\" :smooth=\"true\" :fill=\"true\">\n        \u003C\u002Ftemplate>\n\n    \u003C\u002Fv-data-table>\n\u003C\u002Ftemplate>\n\n\u003Cscript>\nexport default {\n  data () {\n    return {\n      search: '',\n      headers: [\n        { key: 'id', title: 'ID' },\n        { key: 'ping', title: 'Ping' },\n        { key: 'pingvalues', title: 'Ping History' }\n      ]\n    }\n  }\n}\n\u003C\u002Fscript>\n",[380,7264,7265,7273,7279,7336,7347,7390,7411,7416,7425,7444,7449,7457,7476,7505,7554,7562,7566,7575,7583,7587,7595,7604,7613,7620,7632,7642,7676,7706,7738,7744,7749,7754,7759],{"__ignoreMap":77},[1086,7266,7267,7269,7271],{"class":4488,"line":4489},[1086,7268,6461],{"class":6460},[1086,7270,6465],{"class":6464},[1086,7272,6468],{"class":6460},[1086,7274,7275],{"class":4488,"line":230},[1086,7276,7278],{"class":7277},"sHwdD","    \u003C!-- Provide an input text box to search the content -->\n",[1086,7280,7281,7283,7286,7288,7290,7292,7295,7297,7300,7302,7304,7307,7309,7312,7314,7316,7319,7321,7324,7327,7329,7331,7334],{"class":4488,"line":233},[1086,7282,6473],{"class":6460},[1086,7284,7285],{"class":6464},"v-text-field",[1086,7287,6479],{"class":6478},[1086,7289,6482],{"class":6460},[1086,7291,6485],{"class":6460},[1086,7293,7294],{"class":4496},"search",[1086,7296,6485],{"class":6460},[1086,7298,7299],{"class":6478}," label",[1086,7301,6482],{"class":6460},[1086,7303,6485],{"class":6460},[1086,7305,7306],{"class":4496},"Search",[1086,7308,6485],{"class":6460},[1086,7310,7311],{"class":6478}," prepend-inner-icon",[1086,7313,6482],{"class":6460},[1086,7315,6485],{"class":6460},[1086,7317,7318],{"class":4496},"mdi-magnify",[1086,7320,6485],{"class":6460},[1086,7322,7323],{"class":6478}," single-line",[1086,7325,7326],{"class":6478}," variant",[1086,7328,6482],{"class":6460},[1086,7330,6485],{"class":6460},[1086,7332,7333],{"class":4496},"outlined",[1086,7335,6841],{"class":6460},[1086,7337,7338,7341,7343,7345],{"class":4488,"line":227},[1086,7339,7340],{"class":6478},"        hide-details",[1086,7342,6493],{"class":6460},[1086,7344,7285],{"class":6464},[1086,7346,6468],{"class":6460},[1086,7348,7349,7351,7353,7356,7358,7360,7362,7364,7367,7369,7371,7374,7376,7379,7381,7383,7386,7388],{"class":4488,"line":6514},[1086,7350,6473],{"class":6460},[1086,7352,7243],{"class":6464},[1086,7354,7355],{"class":6478}," v-model:search",[1086,7357,6482],{"class":6460},[1086,7359,6485],{"class":6460},[1086,7361,7294],{"class":4496},[1086,7363,6485],{"class":6460},[1086,7365,7366],{"class":6478}," :items",[1086,7368,6482],{"class":6460},[1086,7370,6485],{"class":6460},[1086,7372,7373],{"class":4496},"msg?.payload",[1086,7375,6485],{"class":6460},[1086,7377,7378],{"class":6478}," :headers",[1086,7380,6482],{"class":6460},[1086,7382,6485],{"class":6460},[1086,7384,7385],{"class":4496},"headers",[1086,7387,6485],{"class":6460},[1086,7389,6468],{"class":6460},[1086,7391,7392,7395,7397,7400,7402,7404,7407,7409],{"class":4488,"line":6524},[1086,7393,7394],{"class":6460},"        \u003C",[1086,7396,6465],{"class":6464},[1086,7398,7399],{"class":6478}," v-slot:header.pingvalues",[1086,7401,6482],{"class":6460},[1086,7403,6485],{"class":6460},[1086,7405,7406],{"class":4496},"{ item }",[1086,7408,6485],{"class":6460},[1086,7410,6468],{"class":6460},[1086,7412,7413],{"class":4488,"line":6537},[1086,7414,7415],{"class":6631},"            Ping History\n",[1086,7417,7418,7421,7423],{"class":4488,"line":6548},[1086,7419,7420],{"class":6460},"        \u003C\u002F",[1086,7422,6465],{"class":6464},[1086,7424,6468],{"class":6460},[1086,7426,7427,7429,7431,7434,7436,7438,7440,7442],{"class":4488,"line":6556},[1086,7428,7394],{"class":6460},[1086,7430,6465],{"class":6464},[1086,7432,7433],{"class":6478}," v-slot:item.ping",[1086,7435,6482],{"class":6460},[1086,7437,6485],{"class":6460},[1086,7439,7406],{"class":4496},[1086,7441,6485],{"class":6460},[1086,7443,6468],{"class":6460},[1086,7445,7446],{"class":4488,"line":6569},[1086,7447,7448],{"class":6631},"            {{ item.ping }}ms\n",[1086,7450,7451,7453,7455],{"class":4488,"line":6575},[1086,7452,7420],{"class":6460},[1086,7454,6465],{"class":6464},[1086,7456,6468],{"class":6460},[1086,7458,7459,7461,7463,7466,7468,7470,7472,7474],{"class":4488,"line":6581},[1086,7460,7394],{"class":6460},[1086,7462,6465],{"class":6464},[1086,7464,7465],{"class":6478}," v-slot:item.pingvalues",[1086,7467,6482],{"class":6460},[1086,7469,6485],{"class":6460},[1086,7471,7406],{"class":4496},[1086,7473,6485],{"class":6460},[1086,7475,6468],{"class":6460},[1086,7477,7478,7481,7483,7485,7487,7489,7492,7494,7496,7498,7500,7503],{"class":4488,"line":6591},[1086,7479,7480],{"class":6460},"            \u003C",[1086,7482,6751],{"class":6464},[1086,7484,6479],{"class":6478},[1086,7486,6482],{"class":6460},[1086,7488,6485],{"class":6460},[1086,7490,7491],{"class":4496},"item.pingValues",[1086,7493,6485],{"class":6460},[1086,7495,6831],{"class":6478},[1086,7497,6482],{"class":6460},[1086,7499,6485],{"class":6460},[1086,7501,7502],{"class":4496},"['#42b3f4', '#42b3f400']",[1086,7504,6841],{"class":6460},[1086,7506,7507,7510,7512,7514,7516,7518,7521,7523,7525,7528,7530,7533,7535,7537,7540,7542,7544,7546,7548,7550,7552],{"class":4488,"line":6608},[1086,7508,7509],{"class":6478},"                :line-width",[1086,7511,6482],{"class":6460},[1086,7513,6485],{"class":6460},[1086,7515,6865],{"class":4496},[1086,7517,6485],{"class":6460},[1086,7519,7520],{"class":6478}," gradientDirection",[1086,7522,6482],{"class":6460},[1086,7524,6485],{"class":6460},[1086,7526,7527],{"class":4496},"top",[1086,7529,6485],{"class":6460},[1086,7531,7532],{"class":6478}," :smooth",[1086,7534,6482],{"class":6460},[1086,7536,6485],{"class":6460},[1086,7538,7539],{"class":4496},"true",[1086,7541,6485],{"class":6460},[1086,7543,6820],{"class":6478},[1086,7545,6482],{"class":6460},[1086,7547,6485],{"class":6460},[1086,7549,7539],{"class":4496},[1086,7551,6485],{"class":6460},[1086,7553,6468],{"class":6460},[1086,7555,7556,7558,7560],{"class":4488,"line":6640},[1086,7557,7420],{"class":6460},[1086,7559,6465],{"class":6464},[1086,7561,6468],{"class":6460},[1086,7563,7564],{"class":4488,"line":6645},[1086,7565,6511],{"emptyLinePlaceholder":263},[1086,7567,7568,7571,7573],{"class":4488,"line":6651},[1086,7569,7570],{"class":6460},"    \u003C\u002F",[1086,7572,7243],{"class":6464},[1086,7574,6468],{"class":6460},[1086,7576,7577,7579,7581],{"class":4488,"line":6657},[1086,7578,6502],{"class":6460},[1086,7580,6465],{"class":6464},[1086,7582,6468],{"class":6460},[1086,7584,7585],{"class":4488,"line":6666},[1086,7586,6511],{"emptyLinePlaceholder":263},[1086,7588,7589,7591,7593],{"class":4488,"line":6671},[1086,7590,6461],{"class":6460},[1086,7592,6519],{"class":6464},[1086,7594,6468],{"class":6460},[1086,7596,7597,7600,7602],{"class":4488,"line":6680},[1086,7598,7599],{"class":6527},"export",[1086,7601,6531],{"class":6527},[1086,7603,6534],{"class":6460},[1086,7605,7606,7609,7611],{"class":4488,"line":6697},[1086,7607,7608],{"class":6464},"  data",[1086,7610,6603],{"class":6460},[1086,7612,6534],{"class":6460},[1086,7614,7615,7618],{"class":4488,"line":6717},[1086,7616,7617],{"class":6527},"    return",[1086,7619,6534],{"class":6460},[1086,7621,7622,7625,7627,7630],{"class":4488,"line":6722},[1086,7623,7624],{"class":6464},"      search",[1086,7626,6562],{"class":6460},[1086,7628,7629],{"class":6460}," ''",[1086,7631,7027],{"class":6460},[1086,7633,7634,7637,7639],{"class":4488,"line":7205},[1086,7635,7636],{"class":6464},"      headers",[1086,7638,6562],{"class":6460},[1086,7640,7641],{"class":6464}," [\n",[1086,7643,7644,7647,7650,7652,7654,7657,7659,7661,7664,7666,7668,7671,7673],{"class":4488,"line":7221},[1086,7645,7646],{"class":6460},"        {",[1086,7648,7649],{"class":6464}," key",[1086,7651,6562],{"class":6460},[1086,7653,7007],{"class":6460},[1086,7655,7656],{"class":4496},"id",[1086,7658,6996],{"class":6460},[1086,7660,7004],{"class":6460},[1086,7662,7663],{"class":6464}," title",[1086,7665,6562],{"class":6460},[1086,7667,7007],{"class":6460},[1086,7669,7670],{"class":4496},"ID",[1086,7672,6996],{"class":6460},[1086,7674,7675],{"class":6460}," },\n",[1086,7677,7678,7680,7682,7684,7686,7689,7691,7693,7695,7697,7699,7702,7704],{"class":4488,"line":7227},[1086,7679,7646],{"class":6460},[1086,7681,7649],{"class":6464},[1086,7683,6562],{"class":6460},[1086,7685,7007],{"class":6460},[1086,7687,7688],{"class":4496},"ping",[1086,7690,6996],{"class":6460},[1086,7692,7004],{"class":6460},[1086,7694,7663],{"class":6464},[1086,7696,6562],{"class":6460},[1086,7698,7007],{"class":6460},[1086,7700,7701],{"class":4496},"Ping",[1086,7703,6996],{"class":6460},[1086,7705,7675],{"class":6460},[1086,7707,7709,7711,7713,7715,7717,7720,7722,7724,7726,7728,7730,7733,7735],{"class":4488,"line":7708},28,[1086,7710,7646],{"class":6460},[1086,7712,7649],{"class":6464},[1086,7714,6562],{"class":6460},[1086,7716,7007],{"class":6460},[1086,7718,7719],{"class":4496},"pingvalues",[1086,7721,6996],{"class":6460},[1086,7723,7004],{"class":6460},[1086,7725,7663],{"class":6464},[1086,7727,6562],{"class":6460},[1086,7729,7007],{"class":6460},[1086,7731,7732],{"class":4496},"Ping History",[1086,7734,6996],{"class":6460},[1086,7736,7737],{"class":6460}," }\n",[1086,7739,7741],{"class":4488,"line":7740},29,[1086,7742,7743],{"class":6464},"      ]\n",[1086,7745,7747],{"class":4488,"line":7746},30,[1086,7748,6648],{"class":6460},[1086,7750,7752],{"class":4488,"line":7751},31,[1086,7753,6654],{"class":6460},[1086,7755,7757],{"class":4488,"line":7756},32,[1086,7758,7224],{"class":6460},[1086,7760,7762,7764,7766],{"class":4488,"line":7761},33,[1086,7763,6502],{"class":6460},[1086,7765,6519],{"class":6464},[1086,7767,6468],{"class":6460},[3934,7769,7771,7772,1104],{"id":7770},"treeview-docs","Treeview (",[43,7773,6423],{"href":7774,"rel":7775},"https:\u002F\u002Fvuetifyjs.com\u002Fen\u002Fcomponents\u002Ftreeview\u002F#installation",[47],[15,7777,7778,7782],{},[74,7779],{"alt":7780,"src":7781},"Treeview","\u002Fblog\u002F2024\u002F04\u002Fimages\u002Fvuetify-treeview.png",[128,7783,7784],{},"An example v-treeview from Vuetify Lab's component library",[15,7786,7787,7788,7791,7792,6445,7794,7796],{},"The ",[380,7789,7790],{},"v-treeview"," component is a great way to visualize hierarchical data in a tree-like structure. We've seen this requested a few times in the past, and now you can use the ",[380,7793,7790],{},[380,7795,6396],{}," node to create your own treeviews.",[15,7798,7799,7800,7802],{},"There is still scope for this to, one day, become a core or third party widget, but in the mean time, it's very easy to get this up and running in a ",[380,7801,6396],{}," node.",[15,7804,7805],{},"The Treeview example, and other examples above are available in this sample flow:",[7807,7808],"iframe",{"width":7809,"height":7810,"src":7811,"allow":7812,"style":7813},"100%","340px","https:\u002F\u002Fflows.nodered.org\u002Fflow\u002F0ac4d82aaf97409cb0dce9812cfa214c\u002Fshare?height=300","clipboard-read; clipboard-write","border: none;",[19,7815,5745],{"id":5744},[15,7817,7818],{},"Whilst the above are the main highlights of this release, we've also had a number of other smaller improvements and fixes that have been added to the project. These include:",[150,7820,7821,7829,7837,7845],{},[153,7822,7823,7824],{},"UI Radio Group - Dynamic radio options in ",[43,7825,7828],{"href":7826,"rel":7827},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fnode-red-dashboard\u002Fpull\u002F765",[47],"#765",[153,7830,7831,7832],{},"UI Notification - Notification output & output msg when button clicked in ",[43,7833,7836],{"href":7834,"rel":7835},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fnode-red-dashboard\u002Fpull\u002F766",[47],"#766",[153,7838,7839,7840],{},"UI Dropdown - Clear dropdown selection in ",[43,7841,7844],{"href":7842,"rel":7843},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fnode-red-dashboard\u002Fpull\u002F775",[47],"#775",[153,7846,7847,7848],{},"UI Button - Add \"Emulate Click\" option in ",[43,7849,7852],{"href":7850,"rel":7851},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fnode-red-dashboard\u002Fpull\u002F783",[47],"#783",[15,7854,7855,7856,190],{},"You can see the full list of changes in the ",[43,7857,7860],{"href":7858,"rel":7859},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fnode-red-dashboard\u002Freleases\u002Ftag\u002Fv1.8.0",[47],"1.8.0 Release Notes",[19,7862,7864],{"id":7863},"follow-our-progress","Follow our Progress",[15,7866,7867],{},"New features and improvements are coming to Node-RED Dashboard 2.0 every week, if you'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:",[150,7869,7870,7877,7884],{},[153,7871,7872],{},[43,7873,7876],{"href":7874,"rel":7875},"https:\u002F\u002Fgithub.com\u002Forgs\u002FFlowFuse\u002Fprojects\u002F15\u002Fviews\u002F1",[47],"Dashboard 2.0 Activity Tracker",[153,7878,7879],{},[43,7880,7883],{"href":7881,"rel":7882},"https:\u002F\u002Fgithub.com\u002Forgs\u002FFlowFuse\u002Fprojects\u002F15\u002Fviews\u002F4",[47],"Dashboard 2.0 Planning Board",[153,7885,7886],{},[43,7887,7890],{"href":7888,"rel":7889},"https:\u002F\u002Fgithub.com\u002Forgs\u002FFlowFuse\u002Fprojects\u002F15\u002Fviews\u002F5",[47],"Dashboard 1.0 Feature Parity Tracker",[15,7892,7893,7894,190],{},"If you have any feature requests, bugs\u002Fcomplaints or general feedback, please do reach out, and raise issues on our relevant ",[43,7895,7898],{"href":7896,"rel":7897},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fnode-red-dashboard",[47],"GitHub repository",[4643,7900,7901],{},"html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sqsOY, html code.shiki .sqsOY{--shiki-light:#8796B0;--shiki-default:#B2CCD6;--shiki-dark:#B2CCD6}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}",{"title":77,"searchDepth":227,"depth":227,"links":7903},[7904,7905,7906,7914,7915],{"id":6322,"depth":230,"text":6323},{"id":6366,"depth":230,"text":6367},{"id":6380,"depth":230,"text":6381,"children":7907},[7908,7910,7912],{"id":6417,"depth":227,"text":7909},"Number Input (docs)",{"id":6731,"depth":227,"text":7911},"Sparkline (docs)",{"id":7770,"depth":227,"text":7913},"Treeview (docs)",{"id":5744,"depth":230,"text":5745},{"id":7863,"depth":230,"text":7864},"2024-04-26","Checkout all the great content that's been added to Dashboard 2.0 in the past few weeks and the new (in-preview) Vuetify components we've made available in UI Template nodes.","\u002Fblog\u002F2024\u002F04\u002Fimages\u002Fmilestones-pwa-new-components.png",{"excerpt":7920},{"type":12,"value":7921},[7922],[15,7923,6319],{},"\u002Fblog\u002F2024\u002F04\u002Fdashboard-milestones-pwa-new-components",{"title":6313,"description":7917},{"loc":7924},"blog\u002F2024\u002F04\u002Fdashboard-milestones-pwa-new-components",[4886,272,7929,183,7930,7931,7932,7933,7934],"community","dashboard","node-red Dashboard 2.0","node-red visualization","progressive web app","Vuetify","wN8APZfbU3DYJJbfJLITj3Q6NLQOkw0QIT7ucl46qOg",{"id":7937,"title":7938,"authors":7939,"body":7940,"cta":3,"date":8445,"description":8446,"extension":256,"image":8447,"lastUpdated":8448,"meta":8449,"navigation":263,"path":8458,"seo":8459,"sitemap":8460,"stem":8461,"subtitle":8446,"tags":8462,"tldr":8465,"video":3,"__hash__":8466},"blog\u002Fblog\u002F2024\u002F03\u002Fdashboard-getting-started.md","Getting Started with Node-RED Dashboard 2.0",[3633],{"type":12,"value":7941,"toc":8427},[7942,7945,7948,7951,7955,7959,7965,7967,7975,7979,7985,7987,8001,8005,8008,8014,8016,8023,8026,8064,8068,8071,8077,8079,8082,8103,8109,8112,8116,8119,8159,8163,8166,8204,8208,8211,8217,8220,8224,8234,8238,8241,8249,8255,8261,8263,8267,8270,8278,8281,8290,8300,8306,8308,8316,8322,8324,8337,8343,8345,8348,8354,8357,8361,8364,8401,8403,8405,8422],[15,7943,7944],{},"With our latest release of Node-RED Dashboard 2.0, we've made some big improvements to the onboarding experience.",[15,7946,7947],{},"We'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't explored a UI solution previously and existing users migrating from Dashboard 1.0.",[15,7949,7950],{},"So, with that in mind, we wanted to offer a new \"Getting Started\" guide that will help you get up and running with building custom user interfaces and data visualizations in Node-RED.",[19,7952,7954],{"id":7953},"how-to-install-node-red-dashboard-20","How to Install Node-RED Dashboard 2.0",[27,7956,7958],{"id":7957},"step-1-manage-palette","Step 1: \"Manage Palette\"",[15,7960,7961],{},[74,7962],{"alt":7963,"dataZoomable":77,"src":7964},"Screenshot to show where to find the \"Manage Palette\" option in Node-RED","\u002Fblog\u002F2024\u002F03\u002Fimages\u002Fdashboard-getting-started-manage-palette.png",[519,7966,7963],{},[4450,7968,7969,7972],{},[153,7970,7971],{},"Click the Node-RED Settings (top-right)",[153,7973,7974],{},"Click \"Manage Palette\"",[27,7976,7978],{"id":7977},"step-2-search-install","Step 2: Search & \"Install\"",[15,7980,7981],{},[74,7982],{"alt":7983,"dataZoomable":77,"src":7984},"Screenshot to show where to find the \"Install\" tab, and how to find @flowfuse\u002Fnode-red-dashboard","\u002Fblog\u002F2024\u002F03\u002Fimages\u002Fdashboard-getting-started-search-install.png",[519,7986,7983],{},[4450,7988,7989,7992,7998],{},[153,7990,7991],{},"Switch to the \"Install\" tab",[153,7993,7994,7995],{},"Search for ",[128,7996,7997],{},"\"@flowfuse\u002Fnode-red-dashboard\"",[153,7999,8000],{},"Click \"Install\"",[19,8002,8004],{"id":8003},"adding-your-first-widgets","Adding your first widgets",[15,8006,8007],{},"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.",[15,8009,8010],{},[74,8011],{"alt":8012,"dataZoomable":77,"src":8013},"Screen recording to show how easy it is to deploy your first Dashboard 2.0 application.","\u002Fblog\u002F2024\u002F03\u002Fimages\u002Fdashboard-getting-started-add-widget.gif",[519,8015,8012],{},[15,8017,8018,8019,8022],{},"In this case, we drop in a ",[380,8020,8021],{},"ui-button",", click \"Deploy\" and then can see the button running live in our user interface.",[15,8024,8025],{},"Notice too that Dashboard will automatically setup some underlying configurations for you (visible in the right-side menu):",[150,8027,8028,8037,8050,8055],{},[153,8029,8030,8033,8034,8036],{},[380,8031,8032],{},"ui-base",": Each instance of Node-RED that uses Dashboard 2.0 must have a single ",[380,8035,8032],{}," element (we're hoping to add support for multiple in the future). This element contains all of the global settings for your Dashboard instance.",[153,8038,8039,8042,8043,8045,8046,8049],{},[380,8040,8041],{},"ui-page",": A single Dashboard (",[380,8044,8032],{},") 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 ",[380,8047,8048],{},"ui-group"," elements.",[153,8051,8052,8054],{},[380,8053,8048],{},": Each group contains a collection of widgets, and can be used to organize your Dashboard into logical sections.",[153,8056,8057,8060,8061,8063],{},[380,8058,8059],{},"ui-theme",": Each ",[380,8062,8041],{}," can be assigned a given theme. Your \"Themes\" provide control over the aesthetic of your Dashboard like color, padding and margins.",[19,8065,8067],{"id":8066},"configuring-your-layout","Configuring your layout",[15,8069,8070],{},"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.",[15,8072,8073],{},[74,8074],{"alt":8075,"dataZoomable":77,"src":8076},"Screenshot showing the Dashboard 2.0 sidebar in the Node-RED Editor.","\u002Fblog\u002F2024\u002F03\u002Fimages\u002Fdashboard-getting-started-sidebar.png",[519,8078,8075],{},[15,8080,8081],{},"When defining your layout options, we break the choice into two sections:",[150,8083,8084,8094],{},[153,8085,8086,8089,8090,8093],{},[35,8087,8088],{},"Page Layout:"," Controls how the ",[380,8091,8092],{},"ui-groups","'s are presented on a given page in your application.",[153,8095,8096,8099,8100,8102],{},[35,8097,8098],{},"Navigation Sidebar:"," Defines the left-side navigation style, defined at the ",[380,8101,8032],{}," level.",[15,8104,8105],{},[74,8106],{"alt":8107,"dataZoomable":77,"src":8108},"Example of a \"Grid\" page layout, with \"Collapsing\" sidebar navigation.","\u002Fblog\u002F2024\u002F03\u002Fimages\u002Fdashboard-getting-started-layout.png",[519,8110,8111],{},"Example of the \"Grid\" page layout, with \"Collapsing\" sidebar navigation.",[27,8113,8115],{"id":8114},"page-layout","Page Layout",[15,8117,8118],{},"Currently, we have three different options for page layout:",[150,8120,8121,8135,8149],{},[153,8122,8123,8126,8127,8131,8132,8134],{},[35,8124,8125],{},"Grid:"," (",[43,8128,6423],{"href":8129,"rel":8130},"https:\u002F\u002Fdashboard.flowfuse.com\u002Flayouts\u002Ftypes\u002Fgrid.html",[47],") This is the default layout for a page, and uses a 12-column grid system to layout your ",[380,8133,8092],{},". Widths of groups and widgets define the number of columns they will render in. So, a \"width\" of 6\" would render to 50% of the screen. Grid layouts are entirely responsive, and will adjust to the size of the screen.",[153,8136,8137,8126,8140,8144,8145,8148],{},[35,8138,8139],{},"Fixed:",[43,8141,6423],{"href":8142,"rel":8143},"https:\u002F\u002Fdashboard.flowfuse.com\u002Flayouts\u002Ftypes\u002Ffixed.html",[47],") Each component will render at a ",[128,8146,8147],{},"fixed"," width, no matter what the screen size is. The \"width\" property is converted a fixed pixel value (multiples of 48px by default).",[153,8150,8151,8126,8154,8158],{},[35,8152,8153],{},"Notebook:",[43,8155,6423],{"href":8156,"rel":8157},"https:\u002F\u002Fdashboard.flowfuse.com\u002Flayouts\u002Ftypes\u002Fnotebook.html",[47],") This layout will stretch to 100% width, up to a maximum width of 1024px, and will centrally align. It's particularly useful for storytelling (e.g. articles\u002Fblogs) or analysis type user interfaces (e.g. Jupyter Notebooks), where you want the user to digest content in a particular order through scrolling.",[27,8160,8162],{"id":8161},"navigation-sidebar","Navigation Sidebar",[15,8164,8165],{},"Dashboard 2.0 offers various options on the appearance of the navigation sidebar:",[150,8167,8168,8174,8179,8185,8191],{},[153,8169,8170,8173],{},[35,8171,8172],{},"Collapsing:"," When the sidebar is opened the page content will adjust with the width of the sidebar.",[153,8175,8176,8178],{},[35,8177,8139],{}," The full sidebar will always be visible, and the page content will adjust to the width of the sidebar.",[153,8180,8181,8184],{},[35,8182,8183],{},"Collapse to Icons:"," When minimized, users can still navigate between pages by clicking on the icons representing each page in the sidebar.",[153,8186,8187,8190],{},[35,8188,8189],{},"Appear over Content:"," When the sidebar is opened, the page is given an overlay, and the sidebar sits on top.",[153,8192,8193,8196,8197,190],{},[35,8194,8195],{},"Always Hide:"," The sidebar will never show, and navigation between pages can instead be driven by ",[43,8198,8201],{"href":8199,"rel":8200},"https:\u002F\u002Fdashboard.flowfuse.com\u002Fnodes\u002Fwidgets\u002Fui-control.html",[47],[380,8202,8203],{},"ui-control",[27,8205,8207],{"id":8206},"define-your-layout","Define Your Layout",[15,8209,8210],{},"In our example, we're going to switch to a \"Notebook\" layout, with a \"Collapse to Icons\" sidebar:",[15,8212,8213],{},[74,8214],{"alt":8215,"dataZoomable":77,"src":8216},"Example of the \"Notebook\" layout and \"Collapse to icons\" sidebar","\u002Fblog\u002F2024\u002F03\u002Fimages\u002Fdashboard-getting-started-example.png",[519,8218,8219],{},"Example of the \"Notebook\" layout, with \"Collapse to Icons\" sidebar navigation.",[19,8221,8223],{"id":8222},"adding-more-widgets","Adding More Widgets",[15,8225,8226,8227,8230,8231,190],{},"Now, we're going to build a quick example to demonstrate how we can wire nodes together, and visualize the output from a ",[380,8228,8229],{},"ui-slider"," onto a ",[380,8232,8233],{},"ui-chart",[27,8235,8237],{"id":8236},"adding-a-group","Adding a Group",[15,8239,8240],{},"In the Node-RED Editor's Dashboard 2.0 sidebar, we're going to then do the following things:",[4450,8242,8243,8246],{},[153,8244,8245],{},"Edit \"My Group\" and rename it to \"Controls\"",[153,8247,8248],{},"Create a new \"Group\" in your existing page called \"Data Visualization\"",[15,8250,8251,8252,8254],{},"You'll now see the two groups listed under \"Page 1\". \"Controls\" with a single ",[380,8253,8021],{}," and \"Data Visualization\" with no widgets.",[15,8256,8257],{},[74,8258],{"alt":8259,"dataZoomable":77,"src":8260},"Screenshot of the modified and newly added groups","\u002Fblog\u002F2024\u002F03\u002Fimages\u002Fdashboard-getting-started-new-group.png",[519,8262,8259],{},[27,8264,8266],{"id":8265},"connecting-new-nodes","Connecting New Nodes",[15,8268,8269],{},"Then, we're going to add two new widgets:",[150,8271,8272,8275],{},[153,8273,8274],{},"UI Chart",[153,8276,8277],{},"UI Slider",[15,8279,8280],{},"Which we can do by dropping them from the left-side Palette and onto our canvas.",[15,8282,8283,8284,8286,8287,8289],{},"We'll need to double-click each new node and confirm which \"Group\" we want to add this node to. In this case, we'll add the ",[380,8285,8229],{}," to the \"Controls\" group, and the ",[380,8288,8233],{}," to the \"Data Visualization\" group.",[15,8291,8292,8293,3884,8295,8297,8298,6562],{},"We're also going to connect the output from both the ",[380,8294,8229],{},[380,8296,8021],{}," to the input of the ",[380,8299,8233],{},[15,8301,8302],{},[74,8303],{"alt":8304,"dataZoomable":77,"src":8305},"Screenshot of the Node-RED Editor, showing the ui-slider and ui-button connected to our ui-chart","\u002Fblog\u002F2024\u002F03\u002Fimages\u002Fdashboard-getting-started-flow.png",[519,8307,8304],{},[15,8309,8310,8311,8313,8314,6562],{},"Now, when we view our Dashboard, we can see the ",[380,8312,8229],{}," output is def straight into our ",[380,8315,8233],{},[15,8317,8318],{},[74,8319],{"alt":8320,"dataZoomable":77,"src":8321},"Screenshot of the Dashboard with all three widgets rendered","\u002Fblog\u002F2024\u002F03\u002Fimages\u002Fdashboard-getting-started-final.png",[519,8323,8320],{},[15,8325,8326,8327,8329,8330,8333,8334,8336],{},"The final step we're going to make is to modify our ",[380,8328,8021],{},". We're going to rename it to \"Clear\", and configure it's \"Payload\" option to send a JSON payload of ",[380,8331,8332],{},"[]",", which, when sent to the ",[380,8335,8233],{}," will clear the chart of all data.",[15,8338,8339],{},[74,8340],{"alt":8341,"dataZoomable":77,"src":8342},"The ui-button configuration after setting it's payload and label","\u002Fblog\u002F2024\u002F03\u002Fimages\u002Fdashboard-getting-started-btn-config.png",[519,8344,8341],{},[15,8346,8347],{},"With all of this together, we have the following functional Dashboard:",[15,8349,8350],{},[74,8351],{"alt":8352,"dataZoomable":77,"src":8353},"Short animation showing the final functional dashboard","\u002Fblog\u002F2024\u002F03\u002Fimages\u002Fdashboard-getting-started-final.gif",[519,8355,8356],{},"Short animation showing the final functional dashboard.",[19,8358,8360],{"id":8359},"next-steps","Next Steps",[15,8362,8363],{},"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.",[150,8365,8366,8373,8380,8388,8395],{},[153,8367,8368,8372],{},[43,8369,8371],{"href":8370},"\u002Fblog\u002Fdashboard\u002F","FlowFuse Dashboard Articles"," - Collection of examples and guides written by FlowFuse.",[153,8374,8375,8379],{},[43,8376,8378],{"href":3997,"rel":8377},[47],"Node-RED Dashboard 2.0 Documentation"," - 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.",[153,8381,8382,8387],{},[43,8383,8386],{"href":8384,"rel":8385},"https:\u002F\u002Fdiscourse.nodered.org\u002Ftag\u002Fdashboard-2",[47],"Node-RED Forums - Dashboard 2.0"," -  The Node-RED forums is a great place to ask questions, share your projects and get help from the community.",[153,8389,8390,8394],{},[43,8391,8393],{"href":8392},"\u002Febooks\u002Fbeginner-guide-to-a-professional-nodered\u002F","Beginner Guide to a Professional Node-RED"," - A free guide to an enterprise-ready Node-RED. Learn all about Node-RED history, securing your flows and dashboard data visualization.",[153,8396,8397,8400],{},[43,8398,8399],{"href":5165},"FlowFuse - Book a Demo"," - FlowFuse provides a complete platform to scale your production Node-RED applications, increase developer velocity, and enhance security in order to accelerate innovation.",[19,8402,7864],{"id":7863},[15,8404,7867],{},[150,8406,8407,8412,8417],{},[153,8408,8409],{},[43,8410,7876],{"href":7874,"rel":8411},[47],[153,8413,8414],{},[43,8415,7883],{"href":7881,"rel":8416},[47],[153,8418,8419],{},[43,8420,7890],{"href":7888,"rel":8421},[47],[15,8423,7893,8424,190],{},[43,8425,7898],{"href":7896,"rel":8426},[47],{"title":77,"searchDepth":227,"depth":227,"links":8428},[8429,8433,8434,8439,8443,8444],{"id":7953,"depth":230,"text":7954,"children":8430},[8431,8432],{"id":7957,"depth":233,"text":7958},{"id":7977,"depth":233,"text":7978},{"id":8003,"depth":230,"text":8004},{"id":8066,"depth":230,"text":8067,"children":8435},[8436,8437,8438],{"id":8114,"depth":233,"text":8115},{"id":8161,"depth":233,"text":8162},{"id":8206,"depth":233,"text":8207},{"id":8222,"depth":230,"text":8223,"children":8440},[8441,8442],{"id":8236,"depth":233,"text":8237},{"id":8265,"depth":233,"text":8266},{"id":8359,"depth":230,"text":8360},{"id":7863,"depth":230,"text":7864},"2024-03-27","New to Node-RED? New to Dashboard 2.0? This guide will help you get started.","\u002Fblog\u002F2024\u002F03\u002Fimages\u002Fgetting-started-with-dashboard-2.png","2025-07-23",{"excerpt":8450},{"type":12,"value":8451},[8452,8454,8456],[15,8453,7944],{},[15,8455,7947],{},[15,8457,7950],{},"\u002Fblog\u002F2024\u002F03\u002Fdashboard-getting-started",{"title":7938,"description":8446},{"loc":8458},"blog\u002F2024\u002F03\u002Fdashboard-getting-started",[4886,272,7929,183,7930,8463,8464],"nodered dashboard beginners guide","nodered dashboard basics","This getting-started guide walks new and experienced Node-RED users through installing FlowFuse Dashboard 2.0 and building their first dashboard. It covers installing the package via the Palette Manager, adding widgets to a canvas, and understanding the core building blocks ui-base, ui-page, ui-group, and ui-theme.","IdCxt0H-_KO3fXqHk7ysa3d9P6ThiYKYN14CU5FcDzo",{"id":8468,"title":8469,"authors":8470,"body":8471,"cta":3,"date":8623,"description":8624,"extension":256,"image":8625,"lastUpdated":3,"meta":8626,"navigation":263,"path":8639,"seo":8640,"sitemap":8641,"stem":8642,"subtitle":8624,"tags":8643,"tldr":3,"video":3,"__hash__":8644},"blog\u002Fblog\u002F2024\u002F01\u002Fdashboard-2-ga.md","Node-RED Dashboard 2.0 is Generally Available!",[3633],{"type":12,"value":8472,"toc":8618},[8473,8493,8499,8516,8519,8523,8526,8546,8549,8555,8558,8566,8575,8579,8585,8587,8596,8613],[15,8474,8475,8476,8480,8481,8126,8485,8488,8489,8492],{},"Back in ",[43,8477,8479],{"href":8478},"\u002Fblog\u002F2023\u002F06\u002Fdashboard-announcement\u002F","June 2023"," 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.\nWe followed this up with the ",[43,8482,8484],{"href":8483},"\u002Fblog\u002F2023\u002F07\u002Fdashboard-0-1-release\u002F","first release",[380,8486,8487],{},"0.0.1",") 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 (",[380,8490,8491],{},"1.0.0",") of Node-RED Dashboard 2.0.",[15,8494,8495],{},[74,8496],{"alt":8497,"src":8498},"Dashboard 2.0 Example showing weather data","\u002Fblog\u002F2024\u002F01\u002Fimages\u002Fdashboard-ga-example.png",[15,8500,8501,8502,8504,8505,3884,8510,8515],{},"With our ",[380,8503,8491],{}," 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 ",[43,8506,8509],{"href":8507,"rel":8508},"https:\u002F\u002Fdashboard.flowfuse.com\u002Fcontributing\u002Fwidgets\u002Fthird-party.html",[47],"widgets",[43,8511,8514],{"href":8512,"rel":8513},"https:\u002F\u002Fdashboard.flowfuse.com\u002Fcontributing\u002Fplugins\u002F",[47],"plugins",". We're excited to see what the community can contribute and build on top of this new Dashboard 2.0 framework, and we'll be continuing development to the core collection of widgets too.",[15,8517,8518],{},"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've made many quality of life improvements across the board to the existing widget collection, as well as adding a few new ones too.",[19,8520,8522],{"id":8521},"whats-new-in-dashboard-20","What's new in Dashboard 2.0?",[15,8524,8525],{},"We'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've added to the new Dashboard, such as Markdown, Mermaid Charts and new Layout Options, you can read more about those here:",[150,8527,8528,8534,8540],{},[153,8529,8530],{},[43,8531,8533],{"href":8532},"\u002Fblog\u002F2023\u002F09\u002Fdashboard-notebook-layout\u002F","Dynamic Markdown, Tables & Notebooks",[153,8535,8536],{},[43,8537,8539],{"href":8538},"\u002Fblog\u002F2023\u002F11\u002Fdashboard-0-7\u002F","UI Chart Improvements",[153,8541,8542],{},[43,8543,8545],{"href":8544},"\u002Fblog\u002F2023\u002F12\u002Fdashboard-0-10-0\u002F","Building a Custom Video Player",[15,8547,8548],{},"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's viewing the dashboard.",[15,8550,8551],{},[74,8552],{"alt":8553,"src":8554},"Dashboard 2.0 Example showing personalised dashboard","\u002Fblog\u002F2024\u002F01\u002Fimages\u002Fmulti-user-dashboard-user2.png",[15,8556,8557],{},"Read more about it here:",[150,8559,8560],{},[153,8561,8562],{},[43,8563,8565],{"href":8564},"\u002Fblog\u002F2024\u002F01\u002Fdashboard-2-multi-user\u002F","Personalised Multi User Dashboards",[15,8567,8568,8569,8574],{},"If that wasn't enough, we also have ",[43,8570,8573],{"href":8571,"rel":8572},"https:\u002F\u002Fdashboard.flowfuse.com\u002F",[47],"rich documentation"," 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're that way inclined.",[19,8576,8578],{"id":8577},"upcoming-webinar","Upcoming Webinar",[15,8580,8581,8582],{},"If you're interested in learning more about Dashboard 2.0 and in particular, personalised multi-user dashboards, we're hosting a webinar on Thursday, 29th February. You can find out more information ",[43,8583,5832],{"href":8584},"\u002Fwebinars\u002F2024\u002Fnode-red-dashboard-multi-user\u002F",[19,8586,7864],{"id":7863},[15,8588,8589,8590,8595],{},"We aren't stopping here, we'll continnue to push Dashboard 2.0 forward with future development, with a ",[43,8591,8594],{"href":8592,"rel":8593},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fnode-red-dashboard\u002Fissues\u002F12",[47],"new UI Gauge"," 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:",[150,8597,8598,8603,8608],{},[153,8599,8600],{},[43,8601,7876],{"href":7874,"rel":8602},[47],[153,8604,8605],{},[43,8606,7883],{"href":7881,"rel":8607},[47],[153,8609,8610],{},[43,8611,7890],{"href":7888,"rel":8612},[47],[15,8614,7893,8615,190],{},[43,8616,7898],{"href":7896,"rel":8617},[47],{"title":77,"searchDepth":227,"depth":227,"links":8619},[8620,8621,8622],{"id":8521,"depth":230,"text":8522},{"id":8577,"depth":230,"text":8578},{"id":7863,"depth":230,"text":7864},"2024-01-24","This week sees our first major version release of Node-RED Dashboard 2.0!","\u002Fblog\u002F2024\u002F01\u002Fimages\u002Ftile-dashboard-2-ga.png",{"excerpt":8627},{"type":12,"value":8628},[8629],[15,8630,8475,8631,8480,8633,8126,8635,8488,8637,8492],{},[43,8632,8479],{"href":8478},[43,8634,8484],{"href":8483},[380,8636,8487],{},[380,8638,8491],{},"\u002Fblog\u002F2024\u002F01\u002Fdashboard-2-ga",{"title":8469,"description":8624},{"loc":8639},"blog\u002F2024\u002F01\u002Fdashboard-2-ga",[4886,272,7929,183,7930],"fJRM4rVCaEUL-VZKECJY8e6OvNoDC9hR6GiGbvJVAH8",{"id":8646,"title":8647,"authors":8648,"body":8649,"cta":3,"date":8623,"description":9264,"extension":256,"image":9265,"lastUpdated":3,"meta":9266,"navigation":263,"path":9275,"seo":9276,"sitemap":9277,"stem":9278,"subtitle":9279,"tags":9280,"tldr":3,"video":3,"__hash__":9281},"blog\u002Fblog\u002F2024\u002F01\u002Fdashboard-2-multi-user.md","Personalised Multi-user Dashboards with Node-RED Dashboard 2.0!",[3633],{"type":12,"value":8650,"toc":9246},[8651,8658,8661,8664,8667,8669,8672,8676,8683,8690,8699,8703,8706,8711,8723,8729,8732,8736,8739,8746,8750,8757,8863,8866,8872,8878,8898,8914,8920,8926,8942,8946,8950,8956,8961,8967,8991,8994,9049,9052,9065,9069,9072,9084,9088,9091,9116,9170,9179,9185,9190,9209,9211,9216,9218,9221,9238,9243],[15,8652,8653,8654,8657],{},"This week has seen the release of the ",[43,8655,8656],{"href":8639},"first major version of Node-RED Dashboard 2.0",", with it, we've made available a new FlowFuse-exclusive feature, personalised multi-user dashboards.",[15,8659,8660],{},"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're really excited to see what the Node-RED Community and our FlowFuse customers can do with such a powerful and flexible framework.",[19,8662,8565],{"id":8663},"personalised-multi-user-dashboards",[15,8665,8666],{},"The original Node-RED Dashboard was built with a \"single source of truth\", 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'll want to be able to have unique dashboard experiences for each user.",[27,8668,4414],{"id":4413},[15,8670,8671],{},"To enable personalised multi-user dashboards, you'll need to be using FlowFuse, and complete two steps:",[3934,8673,8675],{"id":8674},"step-1-enable-flowfuse-user-authentication","Step 1: Enable \"FlowFuse User Authentication\"",[15,8677,8678,8679,8682],{},"All instances on FlowFuse can be configured with ",[128,8680,8681],{},"\"FlowFuse User Authentication\""," in the \"Security\" Settings. This option requires any user that wants access to your Editor or dashboard to be authorized by FlowFuse first.",[15,8684,8685],{},[74,8686],{"alt":8687,"dataZoomable":77,"src":8688,"title":8689},"\"Screenshot of the 'Security' settings available for any Instances running in FlowFuse\"","\u002Fblog\u002F2024\u002F01\u002Fimages\u002Fmulti-user-dashboard-ffauth.png","Screenshot of the 'Security' settings available for any Instances running in FlowFuse",[519,8691,8696],{"className":8692},[8693,8694,8695],"-mt-6","mb-4","text-center",[8697,8698,8687],"b",{},[3934,8700,8702],{"id":8701},"step-2-install-flowfuses-user-addon","Step 2: Install FlowFuse's User Addon",[8704,8705,206],"h5",{"id":205},[15,8707,8708],{},[128,8709,8710],{},"Note: Every instance created from today onwards automatically comes with the necessary configuration. Already created instances need to be manually restarted.",[15,8712,8713,8714,8717,8718,8722],{},"The Personalised Multi-User Dashboard plugin, ",[380,8715,8716],{},"@flowfuse\u002Fnode-red-dashboard-2-user-addon",", is available in our ",[43,8719,8721],{"href":8720},"\u002Fcertified-nodes\u002F","Certified Nodes"," catalogue, accessible to our Teams and Enterprise customers.",[15,8724,8725,8726,8728],{},"Once the \"FlowFuse User Authentication\" option has been enabled on your instance, you can then install our plugin, ",[380,8727,8716],{},", through the \"Manage Palette\" option in the Node-RED Editor.",[15,8730,8731],{},"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.",[8704,8733,8735],{"id":8734},"flowfuse-self-hosted","FlowFuse Self-Hosted",[15,8737,8738],{},"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.",[15,8740,8741,8742,8745],{},"Alternatively, if you're looking to elevate your Node-RED infrastructure, ",[43,8743,8744],{"href":5165},"book in a chat with us"," to talk about how FlowFuse can help.",[27,8747,8749],{"id":8748},"using-the-plugin","Using the Plugin",[15,8751,8752,8753,8756],{},"Once enabled, any messages emitted by a Dashboard 2.0 node will contain a new ",[380,8754,8755],{},"msg._client.user"," object, e.g:",[4479,8758,8762],{"className":8759,"code":8760,"language":8761,"meta":77,"style":77},"language-js shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n    \"userId\": \"\",   \u002F\u002F unique identifier for the user\n    \"username\": \"\", \u002F\u002F FlowFuse Username\n    \"email\": \"\",    \u002F\u002F E-Mail Address connected to their FlowFuse account\n    \"name\": \"\",     \u002F\u002F Full Name\n    \"image\": \"\"     \u002F\u002F User Avatar from FlowFuse\n}\n","js",[380,8763,8764,8769,8789,8807,8825,8843,8859],{"__ignoreMap":77},[1086,8765,8766],{"class":4488,"line":4489},[1086,8767,8768],{"class":6460},"{\n",[1086,8770,8771,8774,8777,8779,8781,8784,8786],{"class":4488,"line":230},[1086,8772,8773],{"class":6460},"    \"",[1086,8775,8776],{"class":4496},"userId",[1086,8778,6485],{"class":6460},[1086,8780,641],{"class":6464},[1086,8782,8783],{"class":6460},"\"\"",[1086,8785,7004],{"class":6460},[1086,8787,8788],{"class":7277},"   \u002F\u002F unique identifier for the user\n",[1086,8790,8791,8793,8796,8798,8800,8802,8804],{"class":4488,"line":233},[1086,8792,8773],{"class":6460},[1086,8794,8795],{"class":4496},"username",[1086,8797,6485],{"class":6460},[1086,8799,641],{"class":6464},[1086,8801,8783],{"class":6460},[1086,8803,7004],{"class":6460},[1086,8805,8806],{"class":7277}," \u002F\u002F FlowFuse Username\n",[1086,8808,8809,8811,8814,8816,8818,8820,8822],{"class":4488,"line":227},[1086,8810,8773],{"class":6460},[1086,8812,8813],{"class":4496},"email",[1086,8815,6485],{"class":6460},[1086,8817,641],{"class":6464},[1086,8819,8783],{"class":6460},[1086,8821,7004],{"class":6460},[1086,8823,8824],{"class":7277},"    \u002F\u002F E-Mail Address connected to their FlowFuse account\n",[1086,8826,8827,8829,8832,8834,8836,8838,8840],{"class":4488,"line":6514},[1086,8828,8773],{"class":6460},[1086,8830,8831],{"class":4496},"name",[1086,8833,6485],{"class":6460},[1086,8835,641],{"class":6464},[1086,8837,8783],{"class":6460},[1086,8839,7004],{"class":6460},[1086,8841,8842],{"class":7277},"     \u002F\u002F Full Name\n",[1086,8844,8845,8847,8850,8852,8854,8856],{"class":4488,"line":6524},[1086,8846,8773],{"class":6460},[1086,8848,8849],{"class":4496},"image",[1086,8851,6485],{"class":6460},[1086,8853,641],{"class":6464},[1086,8855,8783],{"class":6460},[1086,8857,8858],{"class":7277},"     \u002F\u002F User Avatar from FlowFuse\n",[1086,8860,8861],{"class":4488,"line":6537},[1086,8862,7224],{"class":6460},[15,8864,8865],{},"Then, when running Node-RED Dashboard 2.0 on FlowFuse, you'll have a new sidebar option in the Node-RED Editor, which allows you to control which node types allow for \"client constraints\".",[15,8867,8868],{},[74,8869],{"alt":8870,"dataZoomable":77,"src":8871,"title":8870},"The new 'FF Auth' options available in Node-RED to allow for client constraints","\u002Fblog\u002F2024\u002F01\u002Fimages\u002Fmulti-user-dashboard-ff-settings.png",[519,8873,8875],{"className":8874},[8693,8694,8695],[8697,8876,8877],{},"A screenshot of the new 'FF Auth' options available in Node-RED to allow for client constraints on different node types.",[15,8879,8880,8881,8884,8885,3884,8888,8890,8891,8894,8895,8897],{},"In the original Node-RED Dashboard, this was ",[128,8882,8883],{},"always"," enabled for the ",[380,8886,8887],{},"ui-notification",[380,8889,8203],{}," nodes, whereby you could include ",[380,8892,8893],{},"msg.socket"," data and it would only then send that message to the specified client. For Dashboard 2.0 we've extended this concept so that as a Node-RED Developer, you can now include ",[380,8896,8755],{}," 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's connection.",[15,8899,8900,8901,8903,8904,8907,8908,8910,8911,8913],{},"Utilising this feature, below you can see an example where we send data to a ",[380,8902,6396],{}," to render a custom table for each user. Under the covers this is a ",[380,8905,8906],{},"ui-event"," node (triggered on a page view), which then uses the ",[380,8909,8755],{}," 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 ",[380,8912,6396],{},", which has been configured to \"Accept Client Constraints\", and so only sends this data to User 2's dashboard.",[15,8915,8916],{},[74,8917],{"alt":8918,"dataZoomable":77,"src":8919,"title":8918},"Showing Admin Task View","\u002Fblog\u002F2024\u002F01\u002Fimages\u002Fmulti-user-dashboard-admin-tasks.png",[519,8921,8923],{"className":8922},[8693,8694,8695],[8697,8924,8925],{},"Example of a dashboard that displays user-specific content.",[15,8927,8928,8929,8934,8935,8937,8938,8941],{},"Note too that we're also utilising the new ",[43,8930,8933],{"href":8931,"rel":8932},"https:\u002F\u002Fdashboard.flowfuse.com\u002Fnodes\u002Fwidgets\u002Fui-template.html#teleports",[47],"Teleport"," option available in a ",[380,8936,6396],{}," which allows us to define content to show in the top-right of the dashboard, in this case, a little ",[128,8939,8940],{},"\"Hi {username}\""," message.",[27,8943,8945],{"id":8944},"examples","Examples",[3934,8947,8949],{"id":8948},"rendering-logged-in-user-data","Rendering Logged In User Data",[15,8951,8952,8953,8955],{},"In the previous example, you may have noticed that we'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 ",[380,8954,6396],{}," that we render too.",[15,8957,8958],{},[74,8959],{"alt":8960,"dataZoomable":77,"src":8554,"title":8960},"Showing User Unique Data",[519,8962,8964],{"className":8963},[8693,8694,8695],[8697,8965,8966],{},"The \"Admin\" view that is only made available to users registered as an \"admin\".",[15,8968,8969,8970,8972,8973,8975,8976,8979,8980,8983,8984,8987,8988,8990],{},"Under the covers, we're appending our ",[380,8971,2255],{}," object to the ",[380,8974,7153],{}," object, via the SocketIO ",[380,8977,8978],{},"auth"," option. We make the ",[380,8981,8982],{},"socketio"," object available via a computed ",[380,8985,8986],{},"setup"," variable, this means that we can access this data in any ",[380,8989,6396],{}," node, and render like so:",[15,8992,8993],{},"{% raw %}",[4479,8995,8997],{"className":6451,"code":8996,"language":6453,"meta":77,"style":77},"\u003Ctemplate>\n    \u003Cdiv>\n        \u003Ch1>Hi, {{ setup?.socketio?.auth?.user?.name }}!\u003C\u002Fh1>\n    \u003C\u002Fdiv>\n\u003C\u002Ftemplate>\n",[380,8998,8999,9007,9015,9033,9041],{"__ignoreMap":77},[1086,9000,9001,9003,9005],{"class":4488,"line":4489},[1086,9002,6461],{"class":6460},[1086,9004,6465],{"class":6464},[1086,9006,6468],{"class":6460},[1086,9008,9009,9011,9013],{"class":4488,"line":230},[1086,9010,6473],{"class":6460},[1086,9012,774],{"class":6464},[1086,9014,6468],{"class":6460},[1086,9016,9017,9019,9021,9024,9027,9029,9031],{"class":4488,"line":233},[1086,9018,7394],{"class":6460},[1086,9020,1861],{"class":6464},[1086,9022,9023],{"class":6460},">",[1086,9025,9026],{"class":6631},"Hi, {{ setup?.socketio?.auth?.user?.name }}!",[1086,9028,6502],{"class":6460},[1086,9030,1861],{"class":6464},[1086,9032,6468],{"class":6460},[1086,9034,9035,9037,9039],{"class":4488,"line":227},[1086,9036,7570],{"class":6460},[1086,9038,774],{"class":6464},[1086,9040,6468],{"class":6460},[1086,9042,9043,9045,9047],{"class":4488,"line":6514},[1086,9044,6502],{"class":6460},[1086,9046,6465],{"class":6464},[1086,9048,6468],{"class":6460},[15,9050,9051],{},"{% endraw %}",[15,9053,9054,9055,9057,9058,9061,9062,9064],{},"To enable custom user-by-user content in a ",[380,9056,6396],{}," though, we must allow it to \"Accept Client Constraints\". This means that if a ",[380,9059,9060],{},".msg._client.user"," value is included in any messages sent to a ",[380,9063,6396],{}," node, then the underlying SocketIO message will be filtered to only send to the relevant user's connection, and no others.",[3934,9066,9068],{"id":9067},"admin-only-views","Admin Only Views",[15,9070,9071],{},"With this new functionality we can also now show\u002Fhide content based on the authenticated user.",[15,9073,9074,9075,9080,9081,9083],{},"We recently introduced the option to ",[43,9076,9079],{"href":9077,"rel":9078},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fnode-red-dashboard\u002Fpull\u002F484",[47],"set default visiblity & interaction states",". This was partly introduced because it's a good practice to set the default \"Visibility\" option for any admin-only pages to \"Hidden\", and then use a ",[380,9082,8203],{}," node to show the content only to the relevant admins.",[7807,9085],{"width":7809,"height":7809,"src":9086,"allow":7812,"style":9087},"https:\u002F\u002Fflows.nodered.org\u002Fflow\u002F2fe8e6f1e7002f1ff6a9195ad1a153b6\u002Fshare","border: none; margin-bottom: 12px;",[15,9089,9090],{},"Let's breakdown the above flow:",[4450,9092,9093,9099,9106],{},[153,9094,9095,9096,9098],{},"We wire a ",[380,9097,8906],{}," node (which emits each time a user views a page) into a switch node",[153,9100,9101,9102,9105],{},"Our switch node checks the ",[380,9103,9104],{},"user.username"," against a known list of admin users and branches \"admin:\" and \"non-admin\" users",[153,9107,9108,9109,9112,9113,9115],{},"For admin users, the ",[380,9110,9111],{},"change"," node defines a message for our ",[380,9114,8203],{}," node to dynamically show content, in this case an \"Admin\" page, when appropriate.",[4479,9117,9121],{"className":9118,"code":9119,"language":9120,"meta":77,"style":77},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n    \"pages\":{\n        \"show\": [\"Admin View\"]\n    }\n}\n","json",[380,9122,9123,9127,9139,9162,9166],{"__ignoreMap":77},[1086,9124,9125],{"class":4488,"line":4489},[1086,9126,8768],{"class":6460},[1086,9128,9129,9131,9134,9136],{"class":4488,"line":230},[1086,9130,8773],{"class":6460},[1086,9132,9133],{"class":6478},"pages",[1086,9135,6485],{"class":6460},[1086,9137,9138],{"class":6460},":{\n",[1086,9140,9141,9144,9147,9149,9151,9153,9155,9158,9160],{"class":4488,"line":233},[1086,9142,9143],{"class":6460},"        \"",[1086,9145,9146],{"class":4492},"show",[1086,9148,6485],{"class":6460},[1086,9150,6562],{"class":6460},[1086,9152,6993],{"class":6460},[1086,9154,6485],{"class":6460},[1086,9156,9157],{"class":4496},"Admin View",[1086,9159,6485],{"class":6460},[1086,9161,7105],{"class":6460},[1086,9163,9164],{"class":4488,"line":227},[1086,9165,6648],{"class":6460},[1086,9167,9168],{"class":4488,"line":6514},[1086,9169,7224],{"class":6460},[15,9171,9172,9173,9175,9176,9178],{},"All events going into ",[380,9174,8203],{}," are automatically filtered based on the ",[380,9177,8755],{}," object, so only the Admin users will receive the message to show the \"Admin View\" page, resulting in:",[15,9180,9181],{},[74,9182],{"alt":9183,"dataZoomable":77,"src":9184,"title":9183},"Showing Admin Only View","\u002Fblog\u002F2024\u002F01\u002Fimages\u002Fmulti-user-dashboard-admin.png",[519,9186,9188],{"className":9187},[8693,8694,8695],[8697,9189,8966],{},[15,9191,9192,9193,9195,9196,9199,9200,9202,9203,9208],{},"Further extensions of this could also check ",[380,9194,8906],{}," in case a non-admin user tries to access the ",[380,9197,9198],{},"\u002Fadmin"," page directly, in which case we can utilise ",[380,9201,8203],{}," to navigate the user away from the page immediately. See the ",[43,9204,9207],{"href":9205,"rel":9206},"https:\u002F\u002Fdashboard.flowfuse.com\u002Fnodes\u002Fwidgets\u002Fui-control.html#navigation",[47],"ui-control documentation"," for more details on this.",[19,9210,8578],{"id":8577},[15,9212,9213,9214],{},"If you're interested in learning more about Dashboard 2.0 and in particular multi-user Dashboards, we're hosting a webinar on Thursday, 29th February. You can find out more information ",[43,9215,5832],{"href":8584},[19,9217,7864],{"id":7863},[15,9219,9220],{},"We aren't stopping here, we'll continue to push Dashboard 2.0 forward with future development, and you can track that progress on our GitHub Projects:",[150,9222,9223,9228,9233],{},[153,9224,9225],{},[43,9226,7876],{"href":7874,"rel":9227},[47],[153,9229,9230],{},[43,9231,7883],{"href":7881,"rel":9232},[47],[153,9234,9235],{},[43,9236,7890],{"href":7888,"rel":9237},[47],[15,9239,7893,9240,190],{},[43,9241,7898],{"href":7896,"rel":9242},[47],[4643,9244,9245],{},"html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}",{"title":77,"searchDepth":227,"depth":227,"links":9247},[9248,9262,9263],{"id":8663,"depth":230,"text":8565,"children":9249},[9250,9257,9258],{"id":4413,"depth":233,"text":4414,"children":9251},[9252,9253],{"id":8674,"depth":227,"text":8675},{"id":8701,"depth":227,"text":8702,"children":9254},[9255,9256],{"id":205,"depth":6514,"text":206},{"id":8734,"depth":6514,"text":8735},{"id":8748,"depth":233,"text":8749},{"id":8944,"depth":233,"text":8945,"children":9259},[9260,9261],{"id":8948,"depth":227,"text":8949},{"id":9067,"depth":227,"text":9068},{"id":8577,"depth":230,"text":8578},{"id":7863,"depth":230,"text":7864},"Discover how to create personalized multi-user dashboards secured with FlowFuse Cloud! Enable FlowFuse User Authentication and install the FlowFuse Node-RED Dashboard 2.0 User Addon for a customized dashboard experience.","\u002Fblog\u002F2024\u002F01\u002Fimages\u002Ftile-dashboard-2-multi-user.png",{"excerpt":9267},{"type":12,"value":9268},[9269,9273],[15,9270,8653,9271,8657],{},[43,9272,8656],{"href":8639},[15,9274,8660],{},"\u002Fblog\u002F2024\u002F01\u002Fdashboard-2-multi-user",{"title":8647,"description":9264},{"loc":9275},"blog\u002F2024\u002F01\u002Fdashboard-2-multi-user","Explore how to build multi-user Dashboards, secured with FlowFuse Cloud!",[4886,272,7929,183,7930],"ovrqv5gl3D6LlMBbR05ng7XRJNH4SzDm2u0e33ET_iA",{"id":9283,"title":9284,"authors":9285,"body":9287,"cta":3,"date":9423,"description":9424,"extension":256,"image":9425,"lastUpdated":3,"meta":9426,"navigation":263,"path":9431,"seo":9432,"sitemap":9433,"stem":9434,"subtitle":9435,"tags":9436,"tldr":3,"video":3,"__hash__":9437},"blog\u002Fblog\u002F2024\u002F01\u002Fflowfuse-release-2-0.md","FlowFuse 2.0 Release",[9286],"marian-demme",{"type":12,"value":9288,"toc":9414},[9289,9292,9295,9298,9302,9323,9327,9336,9340,9350,9354,9368,9372,9377,9379,9381,9386,9390,9397,9405,9407],[15,9290,9291],{},"Following the release of FlowFuse 1.0 end of 2022, we're excited to release FlowFuse 2.0, marking a significant step in managing Node-RED remote instances, which we call Devices. FlowFuse already was the best place to operate Node-RED at scale in the cloud or on-premise, now it's able to manage Node-RED where ever it's run.",[15,9293,9294],{},"Many organizations position Node-RED instances on remote servers like edge or industrial devices. This way they can meet network requirement, interact with analog protocols, and overcome other infrastructure requirements. Management of remote instances is crucial for the overall success of closing the gap between IT and OT. A key enhancement was the introduction of Device Groups (from version 1.15) and the new feature to assign target snapshots. This allows for direct and streamlined management of Node-RED Device fleets, setting the stage for future advancements in device management capabilities.",[15,9296,9297],{},"For our FlowFuse users, this means it is no longer necessary or recommended to assign devices to an instance. Node-RED devices can be managed independently, and snapshots can be assigned via DevOps pipelines.",[19,9299,9301],{"id":9300},"enterprise-readiness","Enterprise-Readiness",[15,9303,9304,9305,6338,9309,3346,9313,9317,9318,9322],{},"FlowFuse is committed to augmenting the enterprise-readiness of Node-RED with introductions like ",[43,9306,9308],{"href":9307},"\u002Fdocs\u002Fadmin\u002Fsso\u002F","Single Sign-On (SSO)",[43,9310,9312],{"href":9311},"\u002Fdocs\u002Fuser\u002Fuser-settings\u002F#two-factor-authentication","Multi-Factor Authentication (MFA)",[43,9314,9316],{"href":9315},"\u002Fdocs\u002Fuser\u002Fhigh-availability\u002F","High Availability"," since version 1.0. Furthermore, we recently achieved ",[43,9319,9321],{"href":9320},"\u002Fblog\u002F2024\u002F01\u002Fsoc2\u002F","SOC2 Type 1 compliance",". With these advancements, Node-RED, in combination with FlowFuse, is genuinely ready for enterprise and production use.",[19,9324,9326],{"id":9325},"enhanced-integration-capabilities","Enhanced Integration Capabilities",[15,9328,9329,9330,9332,9333,190],{},"The Node-RED Flow Library has always been a cornerstone, offering over 4800 connectors (nodes) for various OT and IT protocols. Thanks to the community and the Node-RED library. Building on this foundation, FlowFuse introduced \"Certified Nodes\" and \"Blueprints\". These ",[43,9331,6138],{"href":6137}," are designed to provide an easier start with Node-RED, showcasing its full potential, while Certified Nodes ensure the security of the nodes used. Learn more about our new Certified Nodes ",[43,9334,5832],{"href":9335},"\u002Fblog\u002F2023\u002F10\u002Fcertified-nodes\u002F",[19,9337,9339],{"id":9338},"developer-velocity","Developer Velocity",[15,9341,9342,9343,9346,9347,9349],{},"Node-RED team development is made possible with FlowFuse. Different development team members are able to share and collaborate on the same Node-RED instance. This makes for much easier collaboration between Node-RED developers. We've worked hard on maturing our ",[43,9344,9345],{"href":4035},"snapshot capabilties"," and introduced ",[43,9348,4953],{"href":4040}," that can be set up to stage Node-RED instances that have different development stages, e.g. test, development and production.",[19,9351,9353],{"id":9352},"looking-ahead","Looking Ahead",[15,9355,9356,9357,9360,9361,9363,9364,9367],{},"At FlowFuse, our mission is to empower bottom-up innovation and enable organizations to transform their workflows into business-critical applications with unprecedented efficiency. As we move forward, we are excited to invite our users to actively engage with our future developments. Our ",[43,9358,9359],{"href":182},"Roadmap"," lays out the advancements we're targeting, offering a glimpse into the features and enhancements that are on the horizon. We also encourage our users to stay informed and involved by checking out our latest updates in our detailed ",[43,9362,183],{"href":182},". Your insights and feedback are crucial to us; they fuel our commitment to continuous improvement and innovation. We warmly invite you to ",[43,9365,9366],{"href":300},"share your thoughts and suggestions",", as your input is a vital part of our journey in shaping the next steps for FlowFuse.",[19,9369,9371],{"id":9370},"how-to-get-started","How to get started",[15,9373,9374,9375,190],{},"You can install FlowFuse yourself via a variety of install options. You can find out more details ",[43,9376,5832],{"href":5831},[15,9378,6045],{},[19,9380,4818],{"id":4817},[15,9382,6050,9383,9385],{},[4823,9384],{"value":4825},") is already running version 2.0.",[15,9387,5553,9388,190],{},[43,9389,4833],{"href":4832},[15,9391,9392,9393,9396],{},"The version 2.0 release of the FlowFuse Helm Chart includes a breaking change for deployments making use of the ",[380,9394,9395],{},"forge.localPostgresql"," setting when upgrading. This is where the helm chart installs a dedicated PostgreSQL database instance.\nWith version 2.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.",[15,9398,9399,9400,9404],{},"The steps are documented on the ",[43,9401,9403],{"href":9402},"\u002Fdocs\u002Finstall\u002Fkubernetes\u002F#upgrade","Upgrade instructions"," page, please read them carefully before upgrading",[19,9406,4844],{"id":4843},[15,9408,4847,9409,4851,9411,4857],{},[43,9410,4536],{"href":4850},[43,9412,4856],{"href":4854,"rel":9413},[47],{"title":77,"searchDepth":227,"depth":227,"links":9415},[9416,9417,9418,9419,9420,9421,9422],{"id":9300,"depth":230,"text":9301},{"id":9325,"depth":230,"text":9326},{"id":9338,"depth":230,"text":9339},{"id":9352,"depth":230,"text":9353},{"id":9370,"depth":230,"text":9371},{"id":4817,"depth":230,"text":4818},{"id":4843,"depth":230,"text":4844},"2024-01-18","Announcing the launch of FlowFuse 2.0, a significant upgrade in managing Node-RED remote instances.","\u002Fblog\u002F2024\u002F01\u002Fimages\u002Fflowfuse-2-release.png",{"excerpt":9427},{"type":12,"value":9428},[9429],[15,9430,9291],{},"\u002Fblog\u002F2024\u002F01\u002Fflowfuse-release-2-0",{"title":9284,"description":9424},{"loc":9431},"blog\u002F2024\u002F01\u002Fflowfuse-release-2-0","Elevating Node-RED Device Management to new heights",[4886,270,271,272],"64OjX_xGZNqlwAsLm_o7Iiukhq-JgpJF8pguGOhpLpY",{"id":9439,"title":9440,"authors":9441,"body":9442,"cta":3,"date":10911,"description":10912,"extension":256,"image":10913,"lastUpdated":3,"meta":10914,"navigation":263,"path":10935,"seo":10936,"sitemap":10937,"stem":10938,"subtitle":10939,"tags":10940,"tldr":3,"video":3,"__hash__":10941},"blog\u002Fblog\u002F2023\u002F12\u002Fdashboard-0-10-0.md","Building a Custom Video Player in Dashboard 2.0",[3633],{"type":12,"value":9443,"toc":10897},[9444,9454,9471,9474,9477,9488,9503,9507,9510,9518,9672,9675,9730,9734,9740,9778,9785,9789,9793,9796,9920,9923,9967,9974,9980,9984,9987,9991,10011,10259,10269,10275,10279,10303,10620,10624,10630,10836,10839,10842,10858,10860,10867,10876,10882,10894],[15,9445,9446,9447,9450,9451,9453],{},"Dashboard 2.0 just got ",[128,9448,9449],{},"a lot"," more powerful with our new updates to the ",[380,9452,6396],{}," node. New features added to the node include:",[150,9455,9456,9459,9466],{},[153,9457,9458],{},"Support for a full Vue component  to be defined using the VueJS Options API.",[153,9460,9461,9462,9465],{},"Running of raw JavaScript within ",[380,9463,9464],{},"\u003Cscript \u002F>"," tags",[153,9467,9468,9469,9465],{},"Loading of external dependencies through ",[380,9470,9464],{},[15,9472,9473],{},"In this article we're going to deepdive into an example of how you can use this new functionality to build a custom video player.",[15,9475,9476],{},"We're going to aim for 3 key features:",[4450,9478,9479,9482,9485],{},[153,9480,9481],{},"Emit events into Node-RED when a user plays\u002Fpauses the video",[153,9483,9484],{},"Allow for the video to be played\u002Fpaused from within Node-RED",[153,9486,9487],{},"Allow the user to seek to a specific point in the video from within Node-RED",[774,9489,9491,9492,9496,9497,9499,9500,190],{"style":9490},"background-color: #fff4b9; border:1px solid #ffc400; color: #a27110; padding: 12px; border-radius: 6px; font-style: italic;","Reminder: all new releases of Dashboard are now under the ",[380,9493,9495],{"style":9494},"background-color: transparent;","@flowfuse"," namespace, so you'll need to update to use ",[380,9498,5096],{"style":9494},", and not ",[380,9501,9502],{"style":9494},"@flowforge",[19,9504,9506],{"id":9505},"building-a-vue-component","Building a Vue Component",[15,9508,9509],{},"With Dashboard 2.0, we switched over our underlying front-end framework to VueJS. We're aware that not everyone coming into Dashboard 2.0 will be familiar with VueJS.",[15,9511,9512,9513,9517],{},"We have a more detailed guide ",[43,9514,5832],{"href":9515,"rel":9516},"https:\u002F\u002Fdashboard.flowfuse.com\u002Fnodes\u002Fwidgets\u002Fui-template.html#building-full-vue-components",[47],", but we'll also give a quick overview of the elements from Vue \"component\" that we'll use here:",[4479,9519,9521],{"className":6451,"code":9520,"language":6453,"meta":77,"style":77},"\u003Ctemplate>\n    \u003C!-- Our HTML content will go here -->\n\u003C\u002Ftemplate>\n\n\u003Cscript>\nexport default {\n  name: 'MyComponent',\n  methods: {\n    \u002F\u002F JS methods we want to use across our component will go here\n  },\n  mounted () {\n    \u002F\u002F Code we want to run when our component is loaded will go here\n  },\n  unmounted () {\n    \u002F\u002F Code we want to run when our component is unloaded will go here\n  }\n}\n\u003C\u002Fscript>\n\n\u003Cstyle>\n    \u002F* We can define custom CSS here too *\u002F\n\u003C\u002Fstyle>\n",[380,9522,9523,9531,9536,9544,9548,9556,9564,9580,9589,9594,9599,9608,9613,9617,9626,9631,9635,9639,9647,9651,9659,9664],{"__ignoreMap":77},[1086,9524,9525,9527,9529],{"class":4488,"line":4489},[1086,9526,6461],{"class":6460},[1086,9528,6465],{"class":6464},[1086,9530,6468],{"class":6460},[1086,9532,9533],{"class":4488,"line":230},[1086,9534,9535],{"class":7277},"    \u003C!-- Our HTML content will go here -->\n",[1086,9537,9538,9540,9542],{"class":4488,"line":233},[1086,9539,6502],{"class":6460},[1086,9541,6465],{"class":6464},[1086,9543,6468],{"class":6460},[1086,9545,9546],{"class":4488,"line":227},[1086,9547,6511],{"emptyLinePlaceholder":263},[1086,9549,9550,9552,9554],{"class":4488,"line":6514},[1086,9551,6461],{"class":6460},[1086,9553,6519],{"class":6464},[1086,9555,6468],{"class":6460},[1086,9557,9558,9560,9562],{"class":4488,"line":6524},[1086,9559,7599],{"class":6527},[1086,9561,6531],{"class":6527},[1086,9563,6534],{"class":6460},[1086,9565,9566,9569,9571,9573,9576,9578],{"class":4488,"line":6537},[1086,9567,9568],{"class":6464},"  name",[1086,9570,6562],{"class":6460},[1086,9572,7007],{"class":6460},[1086,9574,9575],{"class":4496},"MyComponent",[1086,9577,6996],{"class":6460},[1086,9579,7027],{"class":6460},[1086,9581,9582,9585,9587],{"class":4488,"line":6548},[1086,9583,9584],{"class":6464},"  methods",[1086,9586,6562],{"class":6460},[1086,9588,6534],{"class":6460},[1086,9590,9591],{"class":4488,"line":6556},[1086,9592,9593],{"class":7277},"    \u002F\u002F JS methods we want to use across our component will go here\n",[1086,9595,9596],{"class":4488,"line":6569},[1086,9597,9598],{"class":6460},"  },\n",[1086,9600,9601,9604,9606],{"class":4488,"line":6575},[1086,9602,9603],{"class":6464},"  mounted",[1086,9605,6603],{"class":6460},[1086,9607,6534],{"class":6460},[1086,9609,9610],{"class":4488,"line":6581},[1086,9611,9612],{"class":7277},"    \u002F\u002F Code we want to run when our component is loaded will go here\n",[1086,9614,9615],{"class":4488,"line":6591},[1086,9616,9598],{"class":6460},[1086,9618,9619,9622,9624],{"class":4488,"line":6608},[1086,9620,9621],{"class":6464},"  unmounted",[1086,9623,6603],{"class":6460},[1086,9625,6534],{"class":6460},[1086,9627,9628],{"class":4488,"line":6640},[1086,9629,9630],{"class":7277},"    \u002F\u002F Code we want to run when our component is unloaded will go here\n",[1086,9632,9633],{"class":4488,"line":6645},[1086,9634,6654],{"class":6460},[1086,9636,9637],{"class":4488,"line":6651},[1086,9638,7224],{"class":6460},[1086,9640,9641,9643,9645],{"class":4488,"line":6657},[1086,9642,6502],{"class":6460},[1086,9644,6519],{"class":6464},[1086,9646,6468],{"class":6460},[1086,9648,9649],{"class":4488,"line":6666},[1086,9650,6511],{"emptyLinePlaceholder":263},[1086,9652,9653,9655,9657],{"class":4488,"line":6671},[1086,9654,6461],{"class":6460},[1086,9656,4643],{"class":6464},[1086,9658,6468],{"class":6460},[1086,9660,9661],{"class":4488,"line":6680},[1086,9662,9663],{"class":7277},"    \u002F* We can define custom CSS here too *\u002F\n",[1086,9665,9666,9668,9670],{"class":4488,"line":6697},[1086,9667,6502],{"class":6460},[1086,9669,4643],{"class":6464},[1086,9671,6468],{"class":6460},[15,9673,9674],{},"Some quick gotchas to note:",[150,9676,9677,9683,9689,9695,9701,9718],{},[153,9678,8993,9679,9682],{},[380,9680,9681],{},"\u003Cdiv>{{ msg }}\u003C\u002Fdiv>","{% endraw %} - is an example of how you render variables into the HTML.",[153,9684,9685,9688],{},[380,9686,9687],{},"\u003Cdiv v-if=\"myVar\">\u003C\u002Fdiv>"," - lets you conditionally show\u002Fhide content based on a variable.",[153,9690,9691,9694],{},[380,9692,9693],{},"\u003Cdiv v-for=\"item in items\">\u003C\u002Fdiv>"," - lets you loop over an array of items and render them into the HTML.",[153,9696,9697,9700],{},[380,9698,9699],{},"\u003Cdiv @click=\"myMethod\">\u003C\u002Fdiv>"," - lets you bind a method to an event, in this case, when the user clicks on the div.",[153,9702,9703,9706,9707,9709,9710,9713,9714,9717],{},[380,9704,9705],{},"\u003Cdiv :class=\"{ 'my-class': isActive }\">\u003C\u002Fdiv>"," - ",[380,9708,6562],{}," is a way to define a \"bound\" property. In this case, the class ",[380,9711,9712],{},"my-class"," will be applied when ",[380,9715,9716],{},"isActive"," is true.",[153,9719,9720,9723,9724,9726,9727,190],{},[380,9721,9722],{},"console.log(this.myVar)"," - when you're writing code inside the ",[380,9725,9464],{}," tags, you can access Component variables and methods using ",[380,9728,9729],{},"this",[27,9731,9733],{"id":9732},"built-in-extras","Built-in Extras",[15,9735,9736,9737,9739],{},"In addition to building a component from scratch, we'll also utilize some built-in features of ",[380,9738,6396],{}," too. These will be:",[150,9741,9742,9765],{},[153,9743,9744,9747],{},[35,9745,9746],{},"Variables:",[150,9748,9749,9754,9759],{},[153,9750,9751,9753],{},[380,9752,7656],{}," - The unique ID for this node in Node-RED",[153,9755,9756,9758],{},[380,9757,7153],{}," - The message that was most recently received into the node",[153,9760,9761,9764],{},[380,9762,9763],{},"$socket"," - The underlying SocketIO connection to Node-RED. Use this to listen to any incoming events, and send new ones back.",[153,9766,9767,9770],{},[35,9768,9769],{},"Functions:",[150,9771,9772],{},[153,9773,9774,9777],{},[380,9775,9776],{},"send(payload)"," - Send a message back to Node-RED",[15,9779,9780,9781,190],{},"As above, we have more detailed documentation on these features ",[43,9782,5832],{"href":9783,"rel":9784},"https:\u002F\u002Fdashboard.flowfuse.com\u002Fnodes\u002Fwidgets\u002Fui-template.html#built-in-functionality",[47],[19,9786,9788],{"id":9787},"building-the-video-player","Building the Video Player",[27,9790,9792],{"id":9791},"defining-the-content-html","Defining the Content (HTML)",[15,9794,9795],{},"We're going to start by adding a basic HTML video player:",[4479,9797,9799],{"className":6451,"code":9798,"language":6453,"meta":77,"style":77},"\u003Ctemplate>\n    \u003Cvideo ref=\"my-video\" style=\"width: 100%\" controls @play=\"onPlay\" @pause=\"onPause\">\n        \u003Csource src=\"http:\u002F\u002Fcommondatastorage.googleapis.com\u002Fgtv-videos-bucket\u002Fsample\u002FBigBuckBunny.mp4\" type=\"video\u002Fmp4\">\n        Your browser does not support the video tag.\n    \u003C\u002Fvideo>\n\u003C\u002Ftemplate>\n",[380,9800,9801,9809,9868,9899,9904,9912],{"__ignoreMap":77},[1086,9802,9803,9805,9807],{"class":4488,"line":4489},[1086,9804,6461],{"class":6460},[1086,9806,6465],{"class":6464},[1086,9808,6468],{"class":6460},[1086,9810,9811,9813,9815,9818,9820,9822,9825,9827,9830,9832,9834,9837,9839,9842,9845,9847,9849,9852,9854,9857,9859,9861,9864,9866],{"class":4488,"line":230},[1086,9812,6473],{"class":6460},[1086,9814,2697],{"class":6464},[1086,9816,9817],{"class":6478}," ref",[1086,9819,6482],{"class":6460},[1086,9821,6485],{"class":6460},[1086,9823,9824],{"class":4496},"my-video",[1086,9826,6485],{"class":6460},[1086,9828,9829],{"class":6478}," style",[1086,9831,6482],{"class":6460},[1086,9833,6485],{"class":6460},[1086,9835,9836],{"class":4496},"width: 100%",[1086,9838,6485],{"class":6460},[1086,9840,9841],{"class":6478}," controls",[1086,9843,9844],{"class":6478}," @play",[1086,9846,6482],{"class":6460},[1086,9848,6485],{"class":6460},[1086,9850,9851],{"class":4496},"onPlay",[1086,9853,6485],{"class":6460},[1086,9855,9856],{"class":6478}," @pause",[1086,9858,6482],{"class":6460},[1086,9860,6485],{"class":6460},[1086,9862,9863],{"class":4496},"onPause",[1086,9865,6485],{"class":6460},[1086,9867,6468],{"class":6460},[1086,9869,9870,9872,9874,9877,9879,9881,9884,9886,9889,9891,9893,9895,9897],{"class":4488,"line":233},[1086,9871,7394],{"class":6460},[1086,9873,5118],{"class":6464},[1086,9875,9876],{"class":6478}," src",[1086,9878,6482],{"class":6460},[1086,9880,6485],{"class":6460},[1086,9882,9883],{"class":4496},"http:\u002F\u002Fcommondatastorage.googleapis.com\u002Fgtv-videos-bucket\u002Fsample\u002FBigBuckBunny.mp4",[1086,9885,6485],{"class":6460},[1086,9887,9888],{"class":6478}," type",[1086,9890,6482],{"class":6460},[1086,9892,6485],{"class":6460},[1086,9894,5121],{"class":4496},[1086,9896,6485],{"class":6460},[1086,9898,6468],{"class":6460},[1086,9900,9901],{"class":4488,"line":227},[1086,9902,9903],{"class":6631},"        Your browser does not support the video tag.\n",[1086,9905,9906,9908,9910],{"class":4488,"line":6514},[1086,9907,7570],{"class":6460},[1086,9909,2697],{"class":6464},[1086,9911,6468],{"class":6460},[1086,9913,9914,9916,9918],{"class":4488,"line":6524},[1086,9915,6502],{"class":6460},[1086,9917,6465],{"class":6464},[1086,9919,6468],{"class":6460},[15,9921,9922],{},"A few things of importance to note here:",[150,9924,9925,9939,9945,9958],{},[153,9926,9927,9930,9931,9934,9935,9938],{},[380,9928,9929],{},"ref"," is Vue's replacement for ",[380,9932,9933],{},"document.getElementById()",". This is copied to each instance of the component, meaning we can call ",[380,9936,9937],{},"this.$refs['my-video']"," to access the video element, and this doesn't break when duplicating the widget multiple times in Dashboard.",[153,9940,9941,9944],{},[380,9942,9943],{},"style=\"\""," is required here to ensure the video fills the group\u002Fwrapper that it is contained within.",[153,9946,9947,9950,9951,9954,9955,9957],{},[380,9948,9949],{},"@play="," is Vue's way of binding onto the standard ",[380,9952,9953],{},"onplay"," event listener available on HTML video players. We'll define the ",[380,9956,9851],{}," method in the next section.",[153,9959,9960,9963,9964,9966],{},[380,9961,9962],{},"@pause="," is our event listener for when the video is paused by the user. As with ",[380,9965,9851],{},", we'll define this shortly.",[15,9968,9969,9970,9973],{},"With ",[128,9971,9972],{},"just"," the above defined, we end up with a standard video player rendered:",[15,9975,9976],{},[74,9977],{"alt":9978,"src":9979},"HTML5 Video Player rendered in Dashboard","\u002Fblog\u002F2023\u002F12\u002Fimages\u002Fdashboard-video-1.png",[27,9981,9983],{"id":9982},"defining-the-behaviors-vuejs","Defining the Behaviors (VueJS)",[15,9985,9986],{},"Now we begin to build our Vue component. Referring back to our earlier set of features, we'll tackle these one at a time.",[3934,9988,9990],{"id":9989},"_1-emitting-events-to-node-red-on-playpause","1. Emitting Events to Node-RED on Play\u002FPause",[15,9992,9993,9994,9997,9998,3884,10000,10002,10003,10006,10007,10010],{},"We can use ",[380,9995,9996],{},"methods"," to define our ",[380,9999,9851],{},[380,10001,9863],{}," functions that are called ",[380,10004,10005],{},"@play","\u002F",[380,10008,10009],{},"@pause"," respectively.",[4479,10012,10014],{"className":6451,"code":10013,"language":6453,"meta":77,"style":77},"\u003Cscript>\nexport default {\n  name: 'MyVideoPlayer',\n  methods: {\n    capture (eventType) {\n        \u002F\u002F let's define our own function that can be called onPlay\u002FonPause\n        \u002F\u002F this prevents duplicated code across the two methods\n\n        \u002F\u002F get the Video's DOM element\n        const video = this.$refs['my-video']\n\n        \u002F\u002F send a msg to Node-RED using built-in \"send\" fcn\n        this.send({\n            \u002F\u002F specify which action is taking place\n            event: eventType,\n            \u002F\u002F use Vue's $refs to get the video's currentTime\n            time: video.currentTime\n        })\n    },\n    onPlay () {\n        this.capture('play')\n    },\n    onPause () {\n        this.capture('pause')\n    }\n  }\n}\n\u003C\u002Fscript>\n",[380,10015,10016,10024,10032,10047,10055,10070,10075,10080,10084,10089,10116,10120,10125,10135,10140,10152,10157,10171,10178,10182,10191,10209,10213,10222,10239,10243,10247,10251],{"__ignoreMap":77},[1086,10017,10018,10020,10022],{"class":4488,"line":4489},[1086,10019,6461],{"class":6460},[1086,10021,6519],{"class":6464},[1086,10023,6468],{"class":6460},[1086,10025,10026,10028,10030],{"class":4488,"line":230},[1086,10027,7599],{"class":6527},[1086,10029,6531],{"class":6527},[1086,10031,6534],{"class":6460},[1086,10033,10034,10036,10038,10040,10043,10045],{"class":4488,"line":233},[1086,10035,9568],{"class":6464},[1086,10037,6562],{"class":6460},[1086,10039,7007],{"class":6460},[1086,10041,10042],{"class":4496},"MyVideoPlayer",[1086,10044,6996],{"class":6460},[1086,10046,7027],{"class":6460},[1086,10048,10049,10051,10053],{"class":4488,"line":227},[1086,10050,9584],{"class":6464},[1086,10052,6562],{"class":6460},[1086,10054,6534],{"class":6460},[1086,10056,10057,10060,10062,10066,10068],{"class":4488,"line":6514},[1086,10058,10059],{"class":6464},"    capture",[1086,10061,8126],{"class":6460},[1086,10063,10065],{"class":10064},"sHdIc","eventType",[1086,10067,1104],{"class":6460},[1086,10069,6534],{"class":6460},[1086,10071,10072],{"class":4488,"line":6524},[1086,10073,10074],{"class":7277},"        \u002F\u002F let's define our own function that can be called onPlay\u002FonPause\n",[1086,10076,10077],{"class":4488,"line":6537},[1086,10078,10079],{"class":7277},"        \u002F\u002F this prevents duplicated code across the two methods\n",[1086,10081,10082],{"class":4488,"line":6548},[1086,10083,6511],{"emptyLinePlaceholder":263},[1086,10085,10086],{"class":4488,"line":6556},[1086,10087,10088],{"class":7277},"        \u002F\u002F get the Video's DOM element\n",[1086,10090,10091,10094,10097,10100,10102,10105,10108,10110,10112,10114],{"class":4488,"line":6569},[1086,10092,10093],{"class":6478},"        const",[1086,10095,10096],{"class":6631}," video",[1086,10098,10099],{"class":6460}," =",[1086,10101,6628],{"class":6460},[1086,10103,10104],{"class":6631},"$refs",[1086,10106,10107],{"class":6464},"[",[1086,10109,6996],{"class":6460},[1086,10111,9824],{"class":4496},[1086,10113,6996],{"class":6460},[1086,10115,7105],{"class":6464},[1086,10117,10118],{"class":4488,"line":6575},[1086,10119,6511],{"emptyLinePlaceholder":263},[1086,10121,10122],{"class":4488,"line":6581},[1086,10123,10124],{"class":7277},"        \u002F\u002F send a msg to Node-RED using built-in \"send\" fcn\n",[1086,10126,10127,10129,10131,10133],{"class":4488,"line":6591},[1086,10128,6611],{"class":6460},[1086,10130,6614],{"class":6594},[1086,10132,6617],{"class":6464},[1086,10134,8768],{"class":6460},[1086,10136,10137],{"class":4488,"line":6608},[1086,10138,10139],{"class":7277},"            \u002F\u002F specify which action is taking place\n",[1086,10141,10142,10145,10147,10150],{"class":4488,"line":6640},[1086,10143,10144],{"class":6464},"            event",[1086,10146,6562],{"class":6460},[1086,10148,10149],{"class":6631}," eventType",[1086,10151,7027],{"class":6460},[1086,10153,10154],{"class":4488,"line":6645},[1086,10155,10156],{"class":7277},"            \u002F\u002F use Vue's $refs to get the video's currentTime\n",[1086,10158,10159,10162,10164,10166,10168],{"class":4488,"line":6651},[1086,10160,10161],{"class":6464},"            time",[1086,10163,6562],{"class":6460},[1086,10165,10096],{"class":6631},[1086,10167,190],{"class":6460},[1086,10169,10170],{"class":6631},"currentTime\n",[1086,10172,10173,10176],{"class":4488,"line":6657},[1086,10174,10175],{"class":6460},"        }",[1086,10177,6637],{"class":6464},[1086,10179,10180],{"class":4488,"line":6666},[1086,10181,6578],{"class":6460},[1086,10183,10184,10187,10189],{"class":4488,"line":6671},[1086,10185,10186],{"class":6464},"    onPlay",[1086,10188,6603],{"class":6460},[1086,10190,6534],{"class":6460},[1086,10192,10193,10195,10198,10200,10202,10205,10207],{"class":4488,"line":6680},[1086,10194,6611],{"class":6460},[1086,10196,10197],{"class":6594},"capture",[1086,10199,6617],{"class":6464},[1086,10201,6996],{"class":6460},[1086,10203,10204],{"class":4496},"play",[1086,10206,6996],{"class":6460},[1086,10208,6637],{"class":6464},[1086,10210,10211],{"class":4488,"line":6697},[1086,10212,6578],{"class":6460},[1086,10214,10215,10218,10220],{"class":4488,"line":6717},[1086,10216,10217],{"class":6464},"    onPause",[1086,10219,6603],{"class":6460},[1086,10221,6534],{"class":6460},[1086,10223,10224,10226,10228,10230,10232,10235,10237],{"class":4488,"line":6722},[1086,10225,6611],{"class":6460},[1086,10227,10197],{"class":6594},[1086,10229,6617],{"class":6464},[1086,10231,6996],{"class":6460},[1086,10233,10234],{"class":4496},"pause",[1086,10236,6996],{"class":6460},[1086,10238,6637],{"class":6464},[1086,10240,10241],{"class":4488,"line":7205},[1086,10242,6648],{"class":6460},[1086,10244,10245],{"class":4488,"line":7221},[1086,10246,6654],{"class":6460},[1086,10248,10249],{"class":4488,"line":7227},[1086,10250,7224],{"class":6460},[1086,10252,10253,10255,10257],{"class":4488,"line":7708},[1086,10254,6502],{"class":6460},[1086,10256,6519],{"class":6464},[1086,10258,6468],{"class":6460},[15,10260,10261,10262,10264,10265,10268],{},"With this functionality in place, we can wire the ",[380,10263,6396],{}," node to a ",[380,10266,10267],{},"debug"," node, and see the following when we play\u002Fpause the video:",[15,10270,10271],{},[74,10272],{"alt":10273,"src":10274},"Example debug output when our custom build video player is played\u002Fpaused","\u002Fblog\u002F2023\u002F12\u002Fimages\u002Fdashboard-video-2.png",[3934,10276,10278],{"id":10277},"_2-remote-control-of-playpause-from-node-red","2. Remote control of play\u002Fpause from Node-RED",[15,10280,10281,10282,10284,10285,10287,10288,10291,10292,3884,10295,10298,10299,10302],{},"We can use the built-in ",[380,10283,9763],{}," variable to listen for incoming events from Node-RED. When Dashboard 2.0's nodes receive a ",[380,10286,7153],{}," inside Node-RED, they send a ",[380,10289,10290],{},"msg-input:\u003Cnode-id>"," event to the Dashboard client. We can listen for this event and then call the ",[380,10293,10294],{},"play()",[380,10296,10297],{},"pause()"," methods on the video element, depending on any properties of that message, in this case, the ",[380,10300,10301],{},"msg.payload.event"," value.",[4479,10304,10306],{"className":6451,"code":10305,"language":6453,"meta":77,"style":77},"\u003Cscript>\nexport default {\n  name: 'MyVideoPlayer',\n  methods: {\n    \u002F\u002F ...\n  },\n  mounted () {\n    \u002F\u002F listen for incoming msg's from Node-RED\n    \u002F\u002F note our topic is \"msg-input\" + the node's unique ID\n    this.$socket.on('msg-input:' + this.id, (msg) => {\n        \u002F\u002F get the Video's DOM element\n        const video = this.$refs['my-video']\n\n        \u002F\u002F if the event is \"play\", call the video's play() method\n        if (msg.payload?.event === 'play') {\n            video.play()\n        }\n\n        \u002F\u002F if the event is \"pause\", call the video's pause() method\n        if (msg.payload?.event === 'pause') {\n            video.pause()\n        }\n    })\n  },\n  unmounted () {\n    \u002F\u002F make sure we remove our listeners when the widget is destroyed\n    this.$socket.off(`msg-input:${this.id}`)\n  }\n}\n\u003C\u002Fscript>\n",[380,10307,10308,10316,10324,10338,10346,10351,10355,10363,10368,10373,10414,10418,10440,10444,10449,10482,10494,10499,10503,10508,10536,10546,10550,10557,10561,10569,10574,10604,10608,10612],{"__ignoreMap":77},[1086,10309,10310,10312,10314],{"class":4488,"line":4489},[1086,10311,6461],{"class":6460},[1086,10313,6519],{"class":6464},[1086,10315,6468],{"class":6460},[1086,10317,10318,10320,10322],{"class":4488,"line":230},[1086,10319,7599],{"class":6527},[1086,10321,6531],{"class":6527},[1086,10323,6534],{"class":6460},[1086,10325,10326,10328,10330,10332,10334,10336],{"class":4488,"line":233},[1086,10327,9568],{"class":6464},[1086,10329,6562],{"class":6460},[1086,10331,7007],{"class":6460},[1086,10333,10042],{"class":4496},[1086,10335,6996],{"class":6460},[1086,10337,7027],{"class":6460},[1086,10339,10340,10342,10344],{"class":4488,"line":227},[1086,10341,9584],{"class":6464},[1086,10343,6562],{"class":6460},[1086,10345,6534],{"class":6460},[1086,10347,10348],{"class":4488,"line":6514},[1086,10349,10350],{"class":7277},"    \u002F\u002F ...\n",[1086,10352,10353],{"class":4488,"line":6524},[1086,10354,9598],{"class":6460},[1086,10356,10357,10359,10361],{"class":4488,"line":6537},[1086,10358,9603],{"class":6464},[1086,10360,6603],{"class":6460},[1086,10362,6534],{"class":6460},[1086,10364,10365],{"class":4488,"line":6548},[1086,10366,10367],{"class":7277},"    \u002F\u002F listen for incoming msg's from Node-RED\n",[1086,10369,10370],{"class":4488,"line":6556},[1086,10371,10372],{"class":7277},"    \u002F\u002F note our topic is \"msg-input\" + the node's unique ID\n",[1086,10374,10375,10378,10380,10382,10385,10387,10389,10392,10394,10397,10399,10401,10403,10405,10407,10409,10412],{"class":4488,"line":6569},[1086,10376,10377],{"class":6460},"    this.",[1086,10379,9763],{"class":6631},[1086,10381,190],{"class":6460},[1086,10383,10384],{"class":6594},"on",[1086,10386,6617],{"class":6464},[1086,10388,6996],{"class":6460},[1086,10390,10391],{"class":4496},"msg-input:",[1086,10393,6996],{"class":6460},[1086,10395,10396],{"class":6460}," +",[1086,10398,6628],{"class":6460},[1086,10400,7656],{"class":6631},[1086,10402,7004],{"class":6460},[1086,10404,8126],{"class":6460},[1086,10406,7153],{"class":10064},[1086,10408,1104],{"class":6460},[1086,10410,10411],{"class":6478}," =>",[1086,10413,6534],{"class":6460},[1086,10415,10416],{"class":4488,"line":6575},[1086,10417,10088],{"class":7277},[1086,10419,10420,10422,10424,10426,10428,10430,10432,10434,10436,10438],{"class":4488,"line":6581},[1086,10421,10093],{"class":6478},[1086,10423,10096],{"class":6631},[1086,10425,10099],{"class":6460},[1086,10427,6628],{"class":6460},[1086,10429,10104],{"class":6631},[1086,10431,10107],{"class":6464},[1086,10433,6996],{"class":6460},[1086,10435,9824],{"class":4496},[1086,10437,6996],{"class":6460},[1086,10439,7105],{"class":6464},[1086,10441,10442],{"class":4488,"line":6591},[1086,10443,6511],{"emptyLinePlaceholder":263},[1086,10445,10446],{"class":4488,"line":6608},[1086,10447,10448],{"class":7277},"        \u002F\u002F if the event is \"play\", call the video's play() method\n",[1086,10450,10451,10454,10456,10458,10460,10462,10465,10468,10471,10473,10475,10477,10480],{"class":4488,"line":6640},[1086,10452,10453],{"class":6527},"        if",[1086,10455,8126],{"class":6464},[1086,10457,7153],{"class":6631},[1086,10459,190],{"class":6460},[1086,10461,6623],{"class":6631},[1086,10463,10464],{"class":6460},"?.",[1086,10466,10467],{"class":6631},"event",[1086,10469,10470],{"class":6460}," ===",[1086,10472,7007],{"class":6460},[1086,10474,10204],{"class":4496},[1086,10476,6996],{"class":6460},[1086,10478,10479],{"class":6464},") ",[1086,10481,8768],{"class":6460},[1086,10483,10484,10487,10489,10491],{"class":4488,"line":6645},[1086,10485,10486],{"class":6631},"            video",[1086,10488,190],{"class":6460},[1086,10490,10204],{"class":6594},[1086,10492,10493],{"class":6464},"()\n",[1086,10495,10496],{"class":4488,"line":6651},[1086,10497,10498],{"class":6460},"        }\n",[1086,10500,10501],{"class":4488,"line":6657},[1086,10502,6511],{"emptyLinePlaceholder":263},[1086,10504,10505],{"class":4488,"line":6666},[1086,10506,10507],{"class":7277},"        \u002F\u002F if the event is \"pause\", call the video's pause() method\n",[1086,10509,10510,10512,10514,10516,10518,10520,10522,10524,10526,10528,10530,10532,10534],{"class":4488,"line":6671},[1086,10511,10453],{"class":6527},[1086,10513,8126],{"class":6464},[1086,10515,7153],{"class":6631},[1086,10517,190],{"class":6460},[1086,10519,6623],{"class":6631},[1086,10521,10464],{"class":6460},[1086,10523,10467],{"class":6631},[1086,10525,10470],{"class":6460},[1086,10527,7007],{"class":6460},[1086,10529,10234],{"class":4496},[1086,10531,6996],{"class":6460},[1086,10533,10479],{"class":6464},[1086,10535,8768],{"class":6460},[1086,10537,10538,10540,10542,10544],{"class":4488,"line":6680},[1086,10539,10486],{"class":6631},[1086,10541,190],{"class":6460},[1086,10543,10234],{"class":6594},[1086,10545,10493],{"class":6464},[1086,10547,10548],{"class":4488,"line":6697},[1086,10549,10498],{"class":6460},[1086,10551,10552,10555],{"class":4488,"line":6717},[1086,10553,10554],{"class":6460},"    }",[1086,10556,6637],{"class":6464},[1086,10558,10559],{"class":4488,"line":6722},[1086,10560,9598],{"class":6460},[1086,10562,10563,10565,10567],{"class":4488,"line":7205},[1086,10564,9621],{"class":6464},[1086,10566,6603],{"class":6460},[1086,10568,6534],{"class":6460},[1086,10570,10571],{"class":4488,"line":7221},[1086,10572,10573],{"class":7277},"    \u002F\u002F make sure we remove our listeners when the widget is destroyed\n",[1086,10575,10576,10578,10580,10582,10585,10587,10590,10592,10595,10597,10599,10602],{"class":4488,"line":7227},[1086,10577,10377],{"class":6460},[1086,10579,9763],{"class":6631},[1086,10581,190],{"class":6460},[1086,10583,10584],{"class":6594},"off",[1086,10586,6617],{"class":6464},[1086,10588,10589],{"class":6460},"`",[1086,10591,10391],{"class":4496},[1086,10593,10594],{"class":6460},"${",[1086,10596,7150],{"class":6460},[1086,10598,7656],{"class":6631},[1086,10600,10601],{"class":6460},"}`",[1086,10603,6637],{"class":6464},[1086,10605,10606],{"class":4488,"line":7708},[1086,10607,6654],{"class":6460},[1086,10609,10610],{"class":4488,"line":7740},[1086,10611,7224],{"class":6460},[1086,10613,10614,10616,10618],{"class":4488,"line":7746},[1086,10615,6502],{"class":6460},[1086,10617,6519],{"class":6464},[1086,10619,6468],{"class":6460},[3934,10621,10623],{"id":10622},"_3-seeking-to-a-specific-point-in-the-video-from-within-node-red","3. Seeking to a specific point in the video from within Node-RED",[15,10625,1125,10626,10629],{},[380,10627,10628],{},"on('msg-input')"," listener in place, we can now extend our handler to handle seeking to a specific point in the video.",[4479,10631,10633],{"className":6451,"code":10632,"language":6453,"meta":77,"style":77},"\u003Cscript>\nexport default {\n  name: 'MyVideoPlayer',\n  methods: {\n    \u002F\u002F ...\n  },\n  mounted () {\n    \u002F\u002F ...\n    this.$socket.on('msg-input:' + this.id, (msg) => {\n        \u002F\u002F ... other handlers\n\n        \u002F\u002F if the event is \"seek\", call the video's currentTime() method\n        if (msg.payload?.event === 'seek') {\n            video.currentTime = msg.payload.currentTime\n        }\n    })\n  },\n  unmounted () {\n    \u002F\u002F ...\n  }\n}\n\u003C\u002Fscript>\n",[380,10634,10635,10643,10651,10665,10673,10677,10681,10689,10693,10729,10734,10738,10743,10772,10794,10798,10804,10808,10816,10820,10824,10828],{"__ignoreMap":77},[1086,10636,10637,10639,10641],{"class":4488,"line":4489},[1086,10638,6461],{"class":6460},[1086,10640,6519],{"class":6464},[1086,10642,6468],{"class":6460},[1086,10644,10645,10647,10649],{"class":4488,"line":230},[1086,10646,7599],{"class":6527},[1086,10648,6531],{"class":6527},[1086,10650,6534],{"class":6460},[1086,10652,10653,10655,10657,10659,10661,10663],{"class":4488,"line":233},[1086,10654,9568],{"class":6464},[1086,10656,6562],{"class":6460},[1086,10658,7007],{"class":6460},[1086,10660,10042],{"class":4496},[1086,10662,6996],{"class":6460},[1086,10664,7027],{"class":6460},[1086,10666,10667,10669,10671],{"class":4488,"line":227},[1086,10668,9584],{"class":6464},[1086,10670,6562],{"class":6460},[1086,10672,6534],{"class":6460},[1086,10674,10675],{"class":4488,"line":6514},[1086,10676,10350],{"class":7277},[1086,10678,10679],{"class":4488,"line":6524},[1086,10680,9598],{"class":6460},[1086,10682,10683,10685,10687],{"class":4488,"line":6537},[1086,10684,9603],{"class":6464},[1086,10686,6603],{"class":6460},[1086,10688,6534],{"class":6460},[1086,10690,10691],{"class":4488,"line":6548},[1086,10692,10350],{"class":7277},[1086,10694,10695,10697,10699,10701,10703,10705,10707,10709,10711,10713,10715,10717,10719,10721,10723,10725,10727],{"class":4488,"line":6556},[1086,10696,10377],{"class":6460},[1086,10698,9763],{"class":6631},[1086,10700,190],{"class":6460},[1086,10702,10384],{"class":6594},[1086,10704,6617],{"class":6464},[1086,10706,6996],{"class":6460},[1086,10708,10391],{"class":4496},[1086,10710,6996],{"class":6460},[1086,10712,10396],{"class":6460},[1086,10714,6628],{"class":6460},[1086,10716,7656],{"class":6631},[1086,10718,7004],{"class":6460},[1086,10720,8126],{"class":6460},[1086,10722,7153],{"class":10064},[1086,10724,1104],{"class":6460},[1086,10726,10411],{"class":6478},[1086,10728,6534],{"class":6460},[1086,10730,10731],{"class":4488,"line":6569},[1086,10732,10733],{"class":7277},"        \u002F\u002F ... other handlers\n",[1086,10735,10736],{"class":4488,"line":6575},[1086,10737,6511],{"emptyLinePlaceholder":263},[1086,10739,10740],{"class":4488,"line":6581},[1086,10741,10742],{"class":7277},"        \u002F\u002F if the event is \"seek\", call the video's currentTime() method\n",[1086,10744,10745,10747,10749,10751,10753,10755,10757,10759,10761,10763,10766,10768,10770],{"class":4488,"line":6591},[1086,10746,10453],{"class":6527},[1086,10748,8126],{"class":6464},[1086,10750,7153],{"class":6631},[1086,10752,190],{"class":6460},[1086,10754,6623],{"class":6631},[1086,10756,10464],{"class":6460},[1086,10758,10467],{"class":6631},[1086,10760,10470],{"class":6460},[1086,10762,7007],{"class":6460},[1086,10764,10765],{"class":4496},"seek",[1086,10767,6996],{"class":6460},[1086,10769,10479],{"class":6464},[1086,10771,8768],{"class":6460},[1086,10773,10774,10776,10778,10781,10783,10786,10788,10790,10792],{"class":4488,"line":6608},[1086,10775,10486],{"class":6631},[1086,10777,190],{"class":6460},[1086,10779,10780],{"class":6631},"currentTime",[1086,10782,10099],{"class":6460},[1086,10784,10785],{"class":6631}," msg",[1086,10787,190],{"class":6460},[1086,10789,6623],{"class":6631},[1086,10791,190],{"class":6460},[1086,10793,10170],{"class":6631},[1086,10795,10796],{"class":4488,"line":6640},[1086,10797,10498],{"class":6460},[1086,10799,10800,10802],{"class":4488,"line":6645},[1086,10801,10554],{"class":6460},[1086,10803,6637],{"class":6464},[1086,10805,10806],{"class":4488,"line":6651},[1086,10807,9598],{"class":6460},[1086,10809,10810,10812,10814],{"class":4488,"line":6657},[1086,10811,9621],{"class":6464},[1086,10813,6603],{"class":6460},[1086,10815,6534],{"class":6460},[1086,10817,10818],{"class":4488,"line":6666},[1086,10819,10350],{"class":7277},[1086,10821,10822],{"class":4488,"line":6671},[1086,10823,6654],{"class":6460},[1086,10825,10826],{"class":4488,"line":6680},[1086,10827,7224],{"class":6460},[1086,10829,10830,10832,10834],{"class":4488,"line":6697},[1086,10831,6502],{"class":6460},[1086,10833,6519],{"class":6464},[1086,10835,6468],{"class":6460},[15,10837,10838],{},"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.",[15,10840,10841],{},"Other features available with the UI Template are detailed in the online documentation, and include:",[150,10843,10844,10851],{},[153,10845,10846],{},[43,10847,10850],{"href":10848,"rel":10849},"https:\u002F\u002Fdashboard.flowfuse.com\u002Fnodes\u002Fwidgets\u002Fui-template.html#loading-external-dependencies",[47],"Loading External Dependencies",[153,10852,10853],{},[43,10854,10857],{"href":10855,"rel":10856},"https:\u002F\u002Fdashboard.flowfuse.com\u002Fnodes\u002Fwidgets\u002Fui-template.html#writing-raw-javascript",[47],"Running raw JavaScript",[19,10859,7864],{"id":7863},[15,10861,10862,10863,10866],{},"You can also read the more comprehensive release notes for ",[380,10864,10865],{},"v0.10.0"," release here:",[150,10868,10869],{},[153,10870,10871],{},[43,10872,10875],{"href":10873,"rel":10874},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fnode-red-dashboard\u002Freleases\u002Ftag\u002Fv0.10.0",[47],"0.10.0 Release Notes",[15,10877,10878,10879,190],{},"As always, thanks for reading and your interest in Dashboard 2.0. If you have any feature requests, bugs\u002Fcomplaints or general feedback, please do reach out, and raise issues on our relevant ",[43,10880,7898],{"href":7896,"rel":10881},[47],[150,10883,10884,10889],{},[153,10885,10886],{},[43,10887,7876],{"href":7874,"rel":10888},[47],[153,10890,10891],{},[43,10892,7883],{"href":7881,"rel":10893},[47],[4643,10895,10896],{},"html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}",{"title":77,"searchDepth":227,"depth":227,"links":10898},[10899,10902,10910],{"id":9505,"depth":230,"text":9506,"children":10900},[10901],{"id":9732,"depth":233,"text":9733},{"id":9787,"depth":230,"text":9788,"children":10903},[10904,10905],{"id":9791,"depth":233,"text":9792},{"id":9982,"depth":233,"text":9983,"children":10906},[10907,10908,10909],{"id":9989,"depth":227,"text":9990},{"id":10277,"depth":227,"text":10278},{"id":10622,"depth":227,"text":10623},{"id":7863,"depth":230,"text":7864},"2023-12-07","Delve into the possibilities of Dashboard 2.0's new UI Templates with a comprehensive tutorial on building a custom video player.","\u002Fblog\u002F2023\u002F12\u002Fimages\u002Ftile-dashboard-0-10-0.png",{"excerpt":10915},{"type":12,"value":10916},[10917,10923],[15,10918,9446,10919,9450,10921,9453],{},[128,10920,9449],{},[380,10922,6396],{},[150,10924,10925,10927,10931],{},[153,10926,9458],{},[153,10928,9461,10929,9465],{},[380,10930,9464],{},[153,10932,9468,10933,9465],{},[380,10934,9464],{},"\u002Fblog\u002F2023\u002F12\u002Fdashboard-0-10-0",{"title":9440,"description":10912},{"loc":10935},"blog\u002F2023\u002F12\u002Fdashboard-0-10-0","We'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.",[4886,272,7929,183,7930],"pFYofgu7OtLAMd_JKnY0DZ51wfEtz4nB2vUmHlVNWhs",{"id":10943,"title":10944,"authors":10945,"body":10947,"cta":3,"date":11157,"description":11158,"extension":256,"image":11159,"lastUpdated":3,"meta":11160,"navigation":263,"path":11165,"seo":11166,"sitemap":11167,"stem":11168,"subtitle":11169,"tags":11170,"tldr":3,"video":3,"__hash__":11171},"blog\u002Fblog\u002F2023\u002F11\u002Fdashboard-0-8-0.md","Overhauling the Dashboard 2.0 Build Pipeline",[3633,10946],"pez-cuckow",{"type":12,"value":10948,"toc":11151},[10949,10952,10966,10973,10981,10985,10992,11013,11020,11026,11034,11038,11048,11051,11057,11068,11075,11079,11082,11119,11122,11131,11133,11139],[15,10950,10951],{},"As a developer, sometimes you have to hold up your hands and realise something you've spent two weeks building needs to be thrown away and restarted.",[15,10953,10954,10955,10959,10960,10965],{},"Having shipped the ",[43,10956,10958],{"href":10957},"\u002Fblog\u002F2023\u002F10\u002Fdashboard-integrations\u002F","third-party widget support for Dashboard 2.0"," in line with Dashboard 1.0's approach, we then had the ",[43,10961,10964],{"href":10962,"rel":10963},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fnode-red-dashboard\u002Fissues\u002F307",[47],"feedback"," that the way Dashboard 1.0 did things really wasn'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.",[15,10967,10968,10969,10972],{},"So, that's exactly what we've done with the ",[380,10970,10971],{},"0.8.0"," release, amongst a few other things.",[774,10974,9491,10975,9496,10977,9499,10979,190],{"style":9490},[380,10976,9495],{"style":9494},[380,10978,5096],{"style":9494},[380,10980,9502],{"style":9494},[19,10982,10984],{"id":10983},"migrating-our-build-pipeline","Migrating our Build Pipeline",[15,10986,10987,10988,10991],{},"Without getting ",[128,10989,10990],{},"too"," 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.",[15,10993,10994,10995,11000,11001,11006,11007,11012],{},"Previously, we used ",[128,10996,10997],{},[35,10998,10999],{},"Webpack",", but now, we've switched over to ",[128,11002,11003],{},[35,11004,11005],{},"Vite",". This is a newer build tool, and is much faster than Webpack. It's also what we've now updated out ",[43,11008,11011],{"href":11009,"rel":11010},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fnode-red-dashboard-2-ui-example",[47],"Example Node"," to use too.",[15,11014,11015,11016,11019],{},"So now, when working with a third-party widget, Vite builds up all of your code, wraps it into a single ",[380,11017,11018],{},"umd.js"," file, and Node-RED then serves that file up for Dashboard 2.0 to load in.",[15,11021,11022],{},[74,11023],{"alt":11024,"src":11025},"Vite Build Process","\u002Fblog\u002F2023\u002F11\u002Fimages\u002Fdashboard-build.png",[15,11027,11028,11029,11033],{},"We've also re-written our ",[43,11030,11032],{"href":8507,"rel":11031},[47],"\"Building Third Party Widgets\""," guide to reflect this change.",[19,11035,11037],{"id":11036},"debugging-dashboard","Debugging Dashboard",[15,11039,11040,11041,11043,11044,11047],{},"A new feature we've added in ",[380,11042,10971],{}," is also for those developing Dashboard's core and third-party widgets. You can now navigate to ",[380,11045,11046],{},"\u002Fdashboard\u002F_debug"," to explore the full configuration that Dashboard receives from Node-RED.",[15,11049,11050],{},"This is particularly useful when you're trying to debug why a widget isn't loading, showing the correct data, or generally isn't behaving as you expect.",[15,11052,11053],{},[74,11054],{"alt":11055,"src":11056},"Dashboard's Debug View","\u002Fblog\u002F2023\u002F11\u002Fimages\u002Fdebug-view.png",[15,11058,11059,11060,11063,11064,11067],{},"Note in the above example, where we can see that the ",[380,11061,11062],{},"ui-dropdown"," has had it's options overriden by ",[380,11065,11066],{},"msg.options"," on injection.",[15,11069,11070,11071],{},"You can read more about the debugging view ",[43,11072,5832],{"href":11073,"rel":11074},"https:\u002F\u002Fdashboard.flowfuse.com\u002Fcontributing\u002Fwidgets\u002Fdebugging.html",[47],[19,11076,11078],{"id":11077},"what-else-is-new-in-080","What else is new in 0.8.0?",[15,11080,11081],{},"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:",[150,11083,11084,11091,11098,11105,11112],{},[153,11085,11086],{},[43,11087,11090],{"href":11088,"rel":11089},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fnode-red-dashboard\u002Fpull\u002F345",[47],"Dynamic setting of msg.options for UI Dropdown",[153,11092,11093],{},[43,11094,11097],{"href":11095,"rel":11096},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fnode-red-dashboard\u002Fpull\u002F346",[47],"\"Date\" type for UI Text Input",[153,11099,11100],{},[43,11101,11104],{"href":11102,"rel":11103},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fnode-red-dashboard\u002Fpull\u002F365",[47],"Finer grain controls of Text Input event emissions",[153,11106,11107],{},[43,11108,11111],{"href":11109,"rel":11110},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fnode-red-dashboard\u002Fpull\u002F367",[47],"Control over when UI Slider emits events",[153,11113,11114],{},[43,11115,11118],{"href":11116,"rel":11117},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fnode-red-dashboard\u002Fpull\u002F364",[47],"Improved documentation for Bar Charts",[15,11120,11121],{},"You can also read the more comprehensive release notes for the release here:",[150,11123,11124],{},[153,11125,11126],{},[43,11127,11130],{"href":11128,"rel":11129},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fnode-red-dashboard\u002Freleases\u002Ftag\u002Fv0.8.0",[47],"0.8.0 Release Notes",[19,11132,7864],{"id":7863},[15,11134,11135,11136,190],{},"As always, thanks for reading and your interested in Dashboard 2.0. If you have any feature requests, bugs\u002Fcomplaints or general feedback, please do reach out, and raise issues on our relevant ",[43,11137,7898],{"href":7896,"rel":11138},[47],[150,11140,11141,11146],{},[153,11142,11143],{},[43,11144,7876],{"href":7874,"rel":11145},[47],[153,11147,11148],{},[43,11149,7883],{"href":7881,"rel":11150},[47],{"title":77,"searchDepth":227,"depth":227,"links":11152},[11153,11154,11155,11156],{"id":10983,"depth":230,"text":10984},{"id":11036,"depth":230,"text":11037},{"id":11077,"depth":230,"text":11078},{"id":7863,"depth":230,"text":7864},"2023-11-23","Explore the latest updates in Dashboard 2.0 with the 0.8.0 release, featuring an overhauled build pipeline, improved debugging capabilities, and more.","\u002Fblog\u002F2023\u002F11\u002Fimages\u002Fdashboard-0-8-0.png",{"excerpt":11161},{"type":12,"value":11162},[11163],[15,11164,10951],{},"\u002Fblog\u002F2023\u002F11\u002Fdashboard-0-8-0",{"title":10944,"description":11158},{"loc":11165},"blog\u002F2023\u002F11\u002Fdashboard-0-8-0","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've built it again!",[4886,272,7929,183,7930],"XKtaP6Lj7REJ386OQmkvAg_66ojpS4zP8x38fRnFbUM",{"id":11173,"title":11174,"authors":11175,"body":11176,"cta":3,"date":11852,"description":11853,"extension":256,"image":11854,"lastUpdated":3,"meta":11855,"navigation":263,"path":11860,"seo":11861,"sitemap":11862,"stem":11863,"subtitle":11864,"tags":11865,"tldr":3,"video":3,"__hash__":11866},"blog\u002Fblog\u002F2023\u002F11\u002Fdashboard-0-7.md","Chart Improvements & Migrating to Dashboard 2.0",[3633],{"type":12,"value":11177,"toc":11835},[11178,11181,11185,11202,11205,11209,11219,11228,11232,11235,11250,11253,11267,11271,11284,11287,11291,11299,11306,11312,11315,11318,11321,11325,11334,11337,11341,11345,11348,11363,11366,11491,11505,11511,11514,11519,11523,11538,11549,11552,11720,11727,11732,11735,11740,11743,11747,11750,11787,11790,11813,11815,11820,11832],[15,11179,11180],{},"It's been a little while since we've done an update, since we last posted we've moved into the 0.7.x releases for Dashboard 2.0. With these we'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.",[19,11182,11184],{"id":11183},"package-name-changes","Package Name Changes",[15,11186,11187,11188,11190,11191,11195,11196,11199,11200,190],{},"Firstly a bit of news regarding the ",[380,11189,4523],{}," package we publish. Inline with our own ",[43,11192,11194],{"href":11193},"\u002Fblog\u002F2023\u002F08\u002Fflowforge-is-now-flowfuse","company name change",", we've had to update Dashboard 2.0's npm package, and so, we've changed from ",[380,11197,11198],{},"@flowforge\u002Fnode-red-dashboard"," to ",[380,11201,5096],{},[15,11203,11204],{},"In the short term, we'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 \"deprecated\" mode.",[27,11206,11208],{"id":11207},"npm-package-migration","NPM Package Migration",[15,11210,11211,11212,11199,11215,11218],{},"Unfortunately, this migration from ",[380,11213,11214],{},"@flowforge\u002F",[380,11216,11217],{},"@flowfuse\u002F"," requires a little bit of manual work, and isn't as easy as just clicking \"update\" in the Node-RED Editor.",[15,11220,11221,11222,11224,11225,11227],{},"In any case, there is no need to update your flow in this migration, you'll just need to uninstall ",[380,11223,11198],{}," and install ",[380,11226,5096],{}," instead.",[3934,11229,11231],{"id":11230},"running-locally","Running Locally",[15,11233,11234],{},"If you're running Node-RED locally, or in your own infrastructure, you'll need to manually uninstall the old package:",[4479,11236,11238],{"className":4481,"code":11237,"language":4483,"meta":77,"style":77},"npm uninstall @flowforge\u002Fnode-red-dashboard\n",[380,11239,11240],{"__ignoreMap":77},[1086,11241,11242,11244,11247],{"class":4488,"line":4489},[1086,11243,4523],{"class":4492},[1086,11245,11246],{"class":4496}," uninstall",[1086,11248,11249],{"class":4496}," @flowforge\u002Fnode-red-dashboard\n",[15,11251,11252],{},"and re-install the new one:",[4479,11254,11256],{"className":4481,"code":11255,"language":4483,"meta":77,"style":77},"npm install @flowfuse\u002Fnode-red-dashboard\n",[380,11257,11258],{"__ignoreMap":77},[1086,11259,11260,11262,11264],{"class":4488,"line":4489},[1086,11261,4523],{"class":4492},[1086,11263,4500],{"class":4496},[1086,11265,11266],{"class":4496}," @flowfuse\u002Fnode-red-dashboard\n",[3934,11268,11270],{"id":11269},"running-in-flowfuse","Running in FlowFuse",[15,11272,11273,11274,11276,11277,11279,11280,11283],{},"Navigate to your Instance > Settings > Palette, and then change the ",[380,11275,11198],{}," entry to ",[380,11278,5096],{}," (the latest version as of this post is ",[380,11281,11282],{},"0.7.2",").",[15,11285,11286],{},"Restart your instance, and the new package will automatically install.",[19,11288,11290],{"id":11289},"dashboard-10-to-20-migration-guide","Dashboard 1.0 to 2.0 Migration Guide",[15,11292,11293,11294,190],{},"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 ",[43,11295,11298],{"href":11296,"rel":11297},"https:\u002F\u002Fdashboard.flowfuse.com\u002Fuser\u002Fmigration.html",[47],"Migration Guide",[15,11300,11301,11302,11305],{},"As a starting point, we have comprehesively covered the Dashboard 1.0 widgets and their associated properties. We've then detailed which properties are already supported, which have partial support, and where appropriate, we do not support and ",[128,11303,11304],{},"why"," (most of the time, it's just because we haven't got round to it yet!)",[15,11307,11308],{},[74,11309],{"alt":11310,"src":11311},"Migration Guide Snippet","\u002Fblog\u002F2023\u002F11\u002Fimages\u002Fmigration-guide-snippet.png",[15,11313,11314],{},"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.",[15,11316,11317],{},"We will also be adding \"event\" and \"dynamic properties\" 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.",[15,11319,11320],{},"Whilst we aren't quite there yet, this guide offers a comprehensive breakdown on our progress in backporting all of the properties from Dashboard 1.0",[27,11322,11324],{"id":11323},"automated-script","Automated Script",[15,11326,11327,11328,11333],{},"An ambitious plan that we have is to also provide a ",[43,11329,11332],{"href":11330,"rel":11331},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fnode-red-dashboard\u002Fissues\u002F261",[47],"Migration Script",". Any feedback, ideas or concerns are most welcome as comments on the issue.",[15,11335,11336],{},"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.",[19,11338,11340],{"id":11339},"updates-to-ui-chart","Updates to UI Chart",[27,11342,11344],{"id":11343},"key-mapping","Key Mapping",[15,11346,11347],{},"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've made some big improvements to the UI Chart node to make it easier to use and more powerful.",[15,11349,11350,11351,11354,11355,11358,11359,11362],{},"In Dashboard 1.0, it was common place to have to regularly re-format your own data into ",[380,11352,11353],{},"{x, y}"," structure to be chart-friendly. In ",[380,11356,11357],{},"0.7.0"," we've introduced the concept of ",[35,11360,11361],{},"key mapping",", 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.",[15,11364,11365],{},"For example, when rendering a chart of our weekly npm downloads, we have a data structure:",[4479,11367,11369],{"className":9118,"code":11368,"language":9120,"meta":77,"style":77},"[{\n    \"day\": \"YYYY-MM-DD\",\n    \"downloads\": 128\n}, {\n    \"day\": \"YYYY-MM-DD\",\n    \"downloads\": 256\n}, {\n    \"day\": \"YYYY-MM-DD\",\n    \"downloads\": 512\n}]\n",[380,11370,11371,11376,11397,11411,11418,11436,11449,11455,11473,11486],{"__ignoreMap":77},[1086,11372,11373],{"class":4488,"line":4489},[1086,11374,11375],{"class":6460},"[{\n",[1086,11377,11378,11380,11383,11385,11387,11390,11393,11395],{"class":4488,"line":230},[1086,11379,8773],{"class":6460},[1086,11381,11382],{"class":6478},"day",[1086,11384,6485],{"class":6460},[1086,11386,6562],{"class":6460},[1086,11388,11389],{"class":6460}," \"",[1086,11391,11392],{"class":4496},"YYYY-MM-DD",[1086,11394,6485],{"class":6460},[1086,11396,7027],{"class":6460},[1086,11398,11399,11401,11404,11406,11408],{"class":4488,"line":233},[1086,11400,8773],{"class":6460},[1086,11402,11403],{"class":6478},"downloads",[1086,11405,6485],{"class":6460},[1086,11407,6562],{"class":6460},[1086,11409,11410],{"class":6565}," 128\n",[1086,11412,11413,11416],{"class":4488,"line":227},[1086,11414,11415],{"class":6460},"},",[1086,11417,6534],{"class":6460},[1086,11419,11420,11422,11424,11426,11428,11430,11432,11434],{"class":4488,"line":6514},[1086,11421,8773],{"class":6460},[1086,11423,11382],{"class":6478},[1086,11425,6485],{"class":6460},[1086,11427,6562],{"class":6460},[1086,11429,11389],{"class":6460},[1086,11431,11392],{"class":4496},[1086,11433,6485],{"class":6460},[1086,11435,7027],{"class":6460},[1086,11437,11438,11440,11442,11444,11446],{"class":4488,"line":6524},[1086,11439,8773],{"class":6460},[1086,11441,11403],{"class":6478},[1086,11443,6485],{"class":6460},[1086,11445,6562],{"class":6460},[1086,11447,11448],{"class":6565}," 256\n",[1086,11450,11451,11453],{"class":4488,"line":6537},[1086,11452,11415],{"class":6460},[1086,11454,6534],{"class":6460},[1086,11456,11457,11459,11461,11463,11465,11467,11469,11471],{"class":4488,"line":6548},[1086,11458,8773],{"class":6460},[1086,11460,11382],{"class":6478},[1086,11462,6485],{"class":6460},[1086,11464,6562],{"class":6460},[1086,11466,11389],{"class":6460},[1086,11468,11392],{"class":4496},[1086,11470,6485],{"class":6460},[1086,11472,7027],{"class":6460},[1086,11474,11475,11477,11479,11481,11483],{"class":4488,"line":6556},[1086,11476,8773],{"class":6460},[1086,11478,11403],{"class":6478},[1086,11480,6485],{"class":6460},[1086,11482,6562],{"class":6460},[1086,11484,11485],{"class":6565}," 512\n",[1086,11487,11488],{"class":4488,"line":6569},[1086,11489,11490],{"class":6460},"}]\n",[15,11492,11493,11494,11497,11498,11501,11502,11504],{},"Rather than having to pipe this into a ",[380,11495,11496],{},"function"," node and re-map the properties to ",[380,11499,11500],{},"{ x, y }",", we can now use the ",[380,11503,8233],{},"'s key mapping properties:",[15,11506,11507],{},[74,11508],{"alt":11509,"src":11510},"ui-chart-key-mapping","\u002Fblog\u002F2023\u002F11\u002Fimages\u002Fui-chart-keymap-properties.png",[15,11512,11513],{},"Resulting in the following chart:",[15,11515,11516],{},[74,11517],{"alt":11509,"src":11518},"\u002Fblog\u002F2023\u002F11\u002Fimages\u002Fui-chart-mapping.png",[27,11520,11522],{"id":11521},"multiple-lines","Multiple Lines",[15,11524,11525,11526,11529,11530,11533,11534,11537],{},"Note above, another new option has been added to define ",[128,11527,11528],{},"\"Series\"",". In Dashboard 1.0 this was fixed as ",[380,11531,11532],{},"msg.topic"," at all times, and defined which line\u002Fseries data points rendered too. Now, this is configurable, and can even be set as a ",[380,11535,11536],{},"key:"," type too, whereby each data point being treated individually, and grouped based on a given key\u002Fproperty.",[15,11539,11540,11541,11544,11545,11548],{},"Another great new feature here is the type ",[380,11542,11543],{},"JSON"," for this property. We can provide a ",[128,11546,11547],{},"list"," of series labels, and the chart will render each value from a single data point as separate lines.",[15,11550,11551],{},"For example, if we consider the data:",[4479,11553,11555],{"className":9118,"code":11554,"language":9120,"meta":77,"style":77},"[{\n    \"day\": \"2023-10-23\",\n    \"temperature\": 28,\n    \"humidity\": 16\n}, {\n    \"day\": \"2023-10-24\",\n    \"temperature\": 26,\n    \"humidity\": 19\n}, {\n    \"day\": \"2023-10-25\",\n    \"temperature\": 27,\n    \"humidity\": 24\n}]\n",[380,11556,11557,11561,11580,11596,11610,11616,11635,11650,11663,11669,11688,11703,11716],{"__ignoreMap":77},[1086,11558,11559],{"class":4488,"line":4489},[1086,11560,11375],{"class":6460},[1086,11562,11563,11565,11567,11569,11571,11573,11576,11578],{"class":4488,"line":230},[1086,11564,8773],{"class":6460},[1086,11566,11382],{"class":6478},[1086,11568,6485],{"class":6460},[1086,11570,6562],{"class":6460},[1086,11572,11389],{"class":6460},[1086,11574,11575],{"class":4496},"2023-10-23",[1086,11577,6485],{"class":6460},[1086,11579,7027],{"class":6460},[1086,11581,11582,11584,11587,11589,11591,11594],{"class":4488,"line":233},[1086,11583,8773],{"class":6460},[1086,11585,11586],{"class":6478},"temperature",[1086,11588,6485],{"class":6460},[1086,11590,6562],{"class":6460},[1086,11592,11593],{"class":6565}," 28",[1086,11595,7027],{"class":6460},[1086,11597,11598,11600,11603,11605,11607],{"class":4488,"line":227},[1086,11599,8773],{"class":6460},[1086,11601,11602],{"class":6478},"humidity",[1086,11604,6485],{"class":6460},[1086,11606,6562],{"class":6460},[1086,11608,11609],{"class":6565}," 16\n",[1086,11611,11612,11614],{"class":4488,"line":6514},[1086,11613,11415],{"class":6460},[1086,11615,6534],{"class":6460},[1086,11617,11618,11620,11622,11624,11626,11628,11631,11633],{"class":4488,"line":6524},[1086,11619,8773],{"class":6460},[1086,11621,11382],{"class":6478},[1086,11623,6485],{"class":6460},[1086,11625,6562],{"class":6460},[1086,11627,11389],{"class":6460},[1086,11629,11630],{"class":4496},"2023-10-24",[1086,11632,6485],{"class":6460},[1086,11634,7027],{"class":6460},[1086,11636,11637,11639,11641,11643,11645,11648],{"class":4488,"line":6537},[1086,11638,8773],{"class":6460},[1086,11640,11586],{"class":6478},[1086,11642,6485],{"class":6460},[1086,11644,6562],{"class":6460},[1086,11646,11647],{"class":6565}," 26",[1086,11649,7027],{"class":6460},[1086,11651,11652,11654,11656,11658,11660],{"class":4488,"line":6548},[1086,11653,8773],{"class":6460},[1086,11655,11602],{"class":6478},[1086,11657,6485],{"class":6460},[1086,11659,6562],{"class":6460},[1086,11661,11662],{"class":6565}," 19\n",[1086,11664,11665,11667],{"class":4488,"line":6556},[1086,11666,11415],{"class":6460},[1086,11668,6534],{"class":6460},[1086,11670,11671,11673,11675,11677,11679,11681,11684,11686],{"class":4488,"line":6569},[1086,11672,8773],{"class":6460},[1086,11674,11382],{"class":6478},[1086,11676,6485],{"class":6460},[1086,11678,6562],{"class":6460},[1086,11680,11389],{"class":6460},[1086,11682,11683],{"class":4496},"2023-10-25",[1086,11685,6485],{"class":6460},[1086,11687,7027],{"class":6460},[1086,11689,11690,11692,11694,11696,11698,11701],{"class":4488,"line":6575},[1086,11691,8773],{"class":6460},[1086,11693,11586],{"class":6478},[1086,11695,6485],{"class":6460},[1086,11697,6562],{"class":6460},[1086,11699,11700],{"class":6565}," 27",[1086,11702,7027],{"class":6460},[1086,11704,11705,11707,11709,11711,11713],{"class":4488,"line":6581},[1086,11706,8773],{"class":6460},[1086,11708,11602],{"class":6478},[1086,11710,6485],{"class":6460},[1086,11712,6562],{"class":6460},[1086,11714,11715],{"class":6565}," 24\n",[1086,11717,11718],{"class":4488,"line":6591},[1086,11719,11490],{"class":6460},[15,11721,11722,11723,11726],{},"We can provide a series: ",[380,11724,11725],{},"[\"temperature\", \"humidity\"]"," like so:",[15,11728,11729],{},[74,11730],{"alt":11509,"src":11731},"\u002Fblog\u002F2023\u002F11\u002Fimages\u002Fui-chart-series-property.png",[15,11733,11734],{},"Which would result in the following plot:",[15,11736,11737],{},[74,11738],{"alt":11509,"src":11739},"\u002Fblog\u002F2023\u002F11\u002Fimages\u002Fui-chart-multipoint.png",[15,11741,11742],{},"We appreciate this offers a new way of working with data in Dashboard, but hopefully, once you've tried it, you'll find it much easier to work with, and see the value it brings when working with your own data sets.",[19,11744,11746],{"id":11745},"what-else-is-new-in-07x","What else is new in 0.7.x?",[15,11748,11749],{},"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:",[150,11751,11752,11759,11766,11773,11780],{},[153,11753,11754],{},[43,11755,11758],{"href":11756,"rel":11757},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fnode-red-dashboard\u002Fpull\u002F279",[47],"Re-architecture of Server-side State Management",[153,11760,11761],{},[43,11762,11765],{"href":11763,"rel":11764},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fnode-red-dashboard\u002Fpull\u002F327",[47],"Y Axis Min\u002FMax Options",[153,11767,11768],{},[43,11769,11772],{"href":11770,"rel":11771},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fnode-red-dashboard\u002Fpull\u002F320",[47],"\"Focus\" button for widgets added to Sidebar",[153,11774,11775],{},[43,11776,11779],{"href":11777,"rel":11778},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fnode-red-dashboard\u002Fpull\u002F310",[47],"No more \"blue screen\" and improved error reporting",[153,11781,11782],{},[43,11783,11786],{"href":11784,"rel":11785},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fnode-red-dashboard\u002Fpull\u002F301",[47],"Better route handling",[15,11788,11789],{},"You can also read the more comprehensive release notes for each release here:",[150,11791,11792,11799,11806],{},[153,11793,11794],{},[43,11795,11798],{"href":11796,"rel":11797},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fnode-red-dashboard\u002Freleases\u002Ftag\u002Fv0.7.0",[47],"0.7.0 Release Notes",[153,11800,11801],{},[43,11802,11805],{"href":11803,"rel":11804},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fnode-red-dashboard\u002Freleases\u002Ftag\u002Fv0.7.1",[47],"0.7.1 Release Notes",[153,11807,11808],{},[43,11809,11812],{"href":11810,"rel":11811},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fnode-red-dashboard\u002Freleases\u002Ftag\u002Fv0.7.2",[47],"0.7.2 Release Notes",[19,11814,7864],{"id":7863},[15,11816,11135,11817,190],{},[43,11818,7898],{"href":7896,"rel":11819},[47],[150,11821,11822,11827],{},[153,11823,11824],{},[43,11825,7876],{"href":7874,"rel":11826},[47],[153,11828,11829],{},[43,11830,7883],{"href":7881,"rel":11831},[47],[4643,11833,11834],{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}",{"title":77,"searchDepth":227,"depth":227,"links":11836},[11837,11843,11846,11850,11851],{"id":11183,"depth":230,"text":11184,"children":11838},[11839],{"id":11207,"depth":233,"text":11208,"children":11840},[11841,11842],{"id":11230,"depth":227,"text":11231},{"id":11269,"depth":227,"text":11270},{"id":11289,"depth":230,"text":11290,"children":11844},[11845],{"id":11323,"depth":233,"text":11324},{"id":11339,"depth":230,"text":11340,"children":11847},[11848,11849],{"id":11343,"depth":233,"text":11344},{"id":11521,"depth":233,"text":11522},{"id":11745,"depth":230,"text":11746},{"id":7863,"depth":230,"text":7864},"2023-11-09","Discover significant chart enhancements and migration guidance in Dashboard 2.0's 0.7.x releases. Stay informed on project updates.","\u002Fblog\u002F2023\u002F11\u002Fimages\u002Ftile-blog-dashboard-migration.png",{"excerpt":11856},{"type":12,"value":11857},[11858],[15,11859,11180],{},"\u002Fblog\u002F2023\u002F11\u002Fdashboard-0-7",{"title":11174,"description":11853},{"loc":11860},"blog\u002F2023\u002F11\u002Fdashboard-0-7","With the 0.7.x Releases of Dashboard 2.0, we've made big improvements to Charts, generated a migration guide, and much more...",[4886,272,7929,183,7930],"T4o8ZOuxQftTMkhLO8Cxf8btELrymkTWhQQHIfhxRiM",{"id":11868,"title":11869,"authors":11870,"body":11871,"cta":3,"date":12026,"description":12027,"extension":256,"image":12028,"lastUpdated":3,"meta":12029,"navigation":263,"path":12036,"seo":12037,"sitemap":12038,"stem":12039,"subtitle":12040,"tags":12041,"tldr":3,"video":3,"__hash__":12042},"blog\u002Fblog\u002F2023\u002F10\u002Fcertified-nodes.md","What are Certified Nodes?",[9286],{"type":12,"value":11872,"toc":12019},[11873,11880,11884,11887,11892,11900,11905,11913,11918,11926,11930,11936,11942,11946,11954,11989,11993],[15,11874,11875,11876,11879],{},"We are thrilled to introduce a new feature for our Teams and Enterprise Tier customers - ",[35,11877,11878],{},"Certified Nodes for Node-RED",". This new offering is designed to reinforce your flows's robustness by granting you access to Node-RED nodes that stand up to our rigorous quality and security standards.",[19,11881,11883],{"id":11882},"what-is-a-certified-node","What is a certified node?",[15,11885,11886],{},"A certified node is a module from the Node-RED library that undergoes a certification process, ensuring it adheres to standards that address three core pillars:",[15,11888,11889],{},[35,11890,11891],{},"Quality",[150,11893,11894,11897],{},[153,11895,11896],{},"Testing phases for each node.",[153,11898,11899],{},"Operational reliability and compatibility.",[15,11901,11902],{},[35,11903,11904],{},"Security",[150,11906,11907,11910],{},[153,11908,11909],{},"Proactive resolution of potential vulnerabilities.",[153,11911,11912],{},"Revocation of certification for nodes falling short on security, with prompt notifications to affected customers.",[15,11914,11915],{},[35,11916,11917],{},"Support",[150,11919,11920,11923],{},[153,11921,11922],{},"Ambitious aim towards effective issue resolution.",[153,11924,11925],{},"Assistance for troubleshooting.",[19,11927,11929],{"id":11928},"how-to-use-certfied-nodes","How to use certfied nodes?",[15,11931,11932,11933,190],{},"Accessing certified nodes is straightforward, they're integrated directly within your Node-RED palette manager, simplifying selection and implementation. All new instances since October 26, 2023, have automatic access to the catalogue. If you want to add Certified Nodes to one of your existing instances, just ",[43,11934,301],{"href":11935},"\u002Fsupport\u002F",[15,11937,11938],{},[74,11939],{"alt":11940,"src":11941},"Node-RED palette manager","\u002Fblog\u002F2023\u002F10\u002Fimages\u002Fcertified-nodes.png",[19,11943,11945],{"id":11944},"what-kind-of-nodes-are-included","What kind of Nodes are included?",[15,11947,11948,11949,11953],{},"Our initial roll-out includes a curated assortment of certified nodes. We're continuously expanding our library, with upcoming weeks bringing a wider array of options. Should you find a gap in your desired functionalities, we encourage you to ",[43,11950,5166],{"href":11951,"rel":11952},"https:\u002F\u002Fdiscourse.nodered.org\u002Fc\u002Fvendors\u002Fflowfuse\u002F24\u002F",[47],". Your feedback drives our journey forward, influencing the nodes we introduce next.",[150,11955,11956,11959,11962,11965,11968,11971,11974,11977,11980,11983,11986],{},[153,11957,11958],{},"Linting for Node-RED",[153,11960,11961],{},"Enhanced debugging for Node-RED",[153,11963,11964],{},"FlowFuse Snapshot Plugin",[153,11966,11967],{},"Node-RED Dashboard 2.0",[153,11969,11970],{},"E-Mail Communication",[153,11972,11973],{},"Base64 converter",[153,11975,11976],{},"Buffer Parser",[153,11978,11979],{},"PostgreSQL",[153,11981,11982],{},"InfluxDB",[153,11984,11985],{},"Omron PLC",[153,11987,11988],{},"MC Protocol (Mitsubishi PLCs)",[27,11990,11992],{"id":11991},"what-will-follow-in-the-coming-weeks","What will follow in the coming weeks?",[150,11994,11995,11998,12001,12004,12007,12010,12013,12016],{},[153,11996,11997],{},"Siemens PLC",[153,11999,12000],{},"Modbus",[153,12002,12003],{},"Mssql",[153,12005,12006],{},"Rockwell and Allen Bradley",[153,12008,12009],{},"OPC-UA",[153,12011,12012],{},"MongoDB",[153,12014,12015],{},"MySQL",[153,12017,12018],{},"WhatsAPP, Telegram, Slack",{"title":77,"searchDepth":227,"depth":227,"links":12020},[12021,12022,12023],{"id":11882,"depth":230,"text":11883},{"id":11928,"depth":230,"text":11929},{"id":11944,"depth":230,"text":11945,"children":12024},[12025],{"id":11991,"depth":233,"text":11992},"2023-10-27","Explore Certified Nodes for Node-RED, ensuring robustness with quality, security, and support standards.","\u002Fblog\u002F2023\u002F10\u002Fimages\u002Fimage-certified-nodes.png",{"excerpt":12030},{"type":12,"value":12031},[12032],[15,12033,11875,12034,11879],{},[35,12035,11878],{},"\u002Fblog\u002F2023\u002F10\u002Fcertified-nodes",{"title":11869,"description":12027},{"loc":12036},"blog\u002F2023\u002F10\u002Fcertified-nodes","Enhanced Security, Quality, and Support",[4886,272,270],"9AmRtFD7qfaysBafjbdzXLd1XDNl4CNVbC6QWJRCCPI",{"id":12044,"title":12045,"authors":12046,"body":12047,"cta":3,"date":12122,"description":12123,"extension":256,"image":12124,"lastUpdated":3,"meta":12125,"navigation":263,"path":12130,"seo":12131,"sitemap":12132,"stem":12133,"subtitle":12134,"tags":12135,"tldr":3,"video":3,"__hash__":12136},"blog\u002Fblog\u002F2023\u002F10\u002Fblueprints.md","What are FlowFuse Blueprints?",[9286],{"type":12,"value":12048,"toc":12112},[12049,12052,12056,12059,12063,12069,12073,12079,12083,12090,12094,12101,12105],[15,12050,12051],{},"Starting today, FlowFuse Blueprints are available on FlowFuse Cloud. Additionally, upon request, all our Teams and Enterprise Self-Hosted customers gain access to this collection. But what exactly are FlowFuse Blueprints?",[19,12053,12055],{"id":12054},"flowfuse-blueprints","FlowFuse Blueprints",[15,12057,12058],{},"FlowFuse Blueprints aim to make the Node-RED experience more accessible for newcomers, while also offering a treasure trove of fresh ideas for seasoned Node-RED users. When setting up a new Node-RED instance, you now have the option to choose a blueprint tailored for specific use cases. For example, our \"ANDON Operator Terminal\" blueprint can be selected, and it will automatically configure the Node-RED instance, sparing you the need to start from scratch. While these templates are powerful out-of-the-box, they're also fully customizable, allowing you to tweak them to suit your unique requirements. Ultimately, blueprints speed up the learning curve for new users and expedite the solution-building process for experienced ones.",[27,12060,12062],{"id":12061},"how-to-use-blueprints","How to use Blueprints?",[15,12064,12065,12066,190],{},"All our FlowFuse Cloud users can select a Blueprint directly while creating a new Node-RED instance. Self-hosted customers can request access to our blueprints via a ",[43,12067,12068],{"href":11935},"support ticket",[19,12070,12072],{"id":12071},"the-first-three-blueprints","The first three Blueprints",[15,12074,12075,12076,190],{},"In the coming weeks, we'll be releasing a multitude of blueprints tailored for diverse use cases. However, we decided to start with with three foundational manufacturing applications designed with the ",[43,12077,11967],{"href":8571,"rel":12078},[47],[27,12080,12082],{"id":12081},"andon-operator-terminal","ANDON Operator Terminal",[15,12084,12085,12086],{},"The Andon Operator Terminal is designed to be at the start of an Andon process, allowing end-users to report any issues with the cell to a supervisor.\n",[74,12087],{"alt":12088,"src":12089},"ANDON Blueprint Screenshot","\u002Fblog\u002F2023\u002F10\u002Fimages\u002FANDON1.png",[27,12091,12093],{"id":12092},"performance-overview-dashboard","Performance Overview Dashboard",[15,12095,12096,12097],{},"The Performance Overview Dashboard Blueprint provides a real-time snapshot of key performance metrics, delivering a comprehensive overview of manufacturing operations for a specific station or entire line.\n",[74,12098],{"alt":12099,"src":12100},"Performance Overview Screenshot","\u002Fblog\u002F2023\u002F10\u002Fimages\u002Fperformance-dashboard.png",[27,12102,12104],{"id":12103},"oee-calculator","OEE Calculator",[15,12106,12107,12108],{},"If automatic calculations are not feasible, the OEE Calculator Blueprint enables end-users to manually input production data to compute the Overall Equipment Effectiveness (OEE) for a given machine.\n",[74,12109],{"alt":12110,"src":12111},"OEE Calculator Screenshot","\u002Fblog\u002F2023\u002F10\u002Fimages\u002Fdashboard-data.png",{"title":77,"searchDepth":227,"depth":227,"links":12113},[12114,12117],{"id":12054,"depth":230,"text":12055,"children":12115},[12116],{"id":12061,"depth":233,"text":12062},{"id":12071,"depth":230,"text":12072,"children":12118},[12119,12120,12121],{"id":12081,"depth":233,"text":12082},{"id":12092,"depth":233,"text":12093},{"id":12103,"depth":233,"text":12104},"2023-10-16","Explore the concept of FlowFuse Blueprints, the pre-built solutions to simplify Node-RED experience, and take a look at the first three Blueprints we've launched for manufacturing applications.","\u002Fblog\u002F2023\u002F10\u002Fimages\u002Fblueprints.png",{"excerpt":12126},{"type":12,"value":12127},[12128],[15,12129,12051],{},"\u002Fblog\u002F2023\u002F10\u002Fblueprints",{"title":12045,"description":12123},{"loc":12130},"blog\u002F2023\u002F10\u002Fblueprints","Preconfigured Node-RED Applications",[4886,272,270],"TMDYzUWCMZQFUcJgV4xfYgvjGPHmA4GE1VtrhBzh9v8",{"id":12138,"title":12139,"authors":12140,"body":12141,"cta":3,"date":12306,"description":12307,"extension":256,"image":12308,"lastUpdated":3,"meta":12309,"navigation":263,"path":12314,"seo":12315,"sitemap":12316,"stem":12317,"subtitle":12318,"tags":12319,"tldr":3,"video":3,"__hash__":12320},"blog\u002Fblog\u002F2023\u002F10\u002Fdashboard-integrations.md","Integrate your own widgets with Dashboard 2.0",[3633],{"type":12,"value":12142,"toc":12300},[12143,12146,12156,12159,12165,12171,12183,12186,12236,12242,12246,12249,12270,12274,12283,12288],[15,12144,12145],{},"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.",[15,12147,12148,12149,6338,12152,12155],{},"Dashboard 1.0 had a hugely popular ecosystem of third party widgets (e.g. ",[380,12150,12151],{},"ui-worldmap",[380,12153,12154],{},"ui-svg",") and something we've been keen to support is a platform where these widgets (and more) can be built and used within Dashboard 2.0 too.",[15,12157,12158],{},"Whilst we can't support the existing Dashboard 1.0 extensions directly (given that we'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.",[19,12160,12162,12163],{"id":12161},"building-from-ui-template","Building from ",[380,12164,6396],{},[15,12166,12167,12168,12170],{},"As with Dashboard 1.0, we've utilised the flexibility of our ",[380,12169,6396],{}," node here to enable third-party integrations.",[15,12172,12173,12174,12176,12177,12179,12180,12182],{},"If you're used the new ",[380,12175,6396],{}," in Dashboard 2.0 already, you'll know that you can provide raw Vue (HTML) content and it'll render that into your Dashboard. In 0.6.0, we've added ",[128,12178,9449],{}," of new functionality to the guts of ",[380,12181,6396],{},", which we can then extend with our third-party widgets.",[15,12184,12185],{},"This new functionality includes:",[150,12187,12188,12197,12206,12215,12221,12230],{},[153,12189,12190,12193,12194,190],{},[35,12191,12192],{},"Custom Dependencies"," - Injection of external widget dependencies (e.g. other JavaScript libraries) via ",[380,12195,12196],{},"\u003Chead>",[153,12198,12199,9706,12202,12205],{},[35,12200,12201],{},"On Input",[380,12203,12204],{},"onInput"," defines behaviour of the widget in Dashboard when it receives a message in Node-RED.",[153,12207,12208,9706,12211,12214],{},[35,12209,12210],{},"On Load",[380,12212,12213],{},"onMounted"," defines functionality when a widget first loads in Dashboard.",[153,12216,12217,12220],{},[35,12218,12219],{},"Custom Functions"," - Define general functions that can be called from within your widget at any point of your choosing",[153,12222,12223,12226,12227,12229],{},[35,12224,12225],{},"Extend Built-In Events"," - Our built in ",[380,12228,6614],{}," function can be called within your widget's template, and will send a message back to Node-RED, with any content of your choosing.",[153,12231,12232,12235],{},[35,12233,12234],{},"Custom SocketIO Event Handlers"," - 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.",[15,12237,12238,12239,12241],{},"We also have plans to expose more of this new functionality to the ",[380,12240,6396],{}," interface itself within Node-RED, but for now it's mostly available when developing third-party widgets.",[19,12243,12245],{"id":12244},"useful-resources","Useful Resources",[15,12247,12248],{},"If you're interested in building integrations, then we've also built a couple of resources to help you get started:",[150,12250,12251,12258],{},[153,12252,12253,12257],{},[43,12254,12256],{"href":8507,"rel":12255},[47],"Widget Development Guide"," - A guide for how to structure your own widgets, and",[153,12259,12260,12265,12266,12269],{},[43,12261,12264],{"href":12262,"rel":12263},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fnode-red-dashboard-example-node",[47],"Example Integration (Repo)"," - We've open sourced a very simple ",[380,12267,12268],{},"ui-example"," node that demonstrates how you can build your own widget for Dashboard 2.0, that utilises all of the features highlighted above.",[19,12271,12273],{"id":12272},"what-else-is-new-in-060","What else is new in 0.6.0?",[15,12275,12276,12277,12282],{},"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 ",[43,12278,12281],{"href":12279,"rel":12280},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fnode-red-dashboard\u002Freleases\u002Ftag\u002Fv0.6.0",[47],"other fixes and improvements",", including the separation of the Dash oard 2.0 nodes into a new \"Dashboard 2\" category in the Node-RED palette.",[15,12284,11135,12285,190],{},[43,12286,7898],{"href":7896,"rel":12287},[47],[150,12289,12290,12295],{},[153,12291,12292],{},[43,12293,7876],{"href":7874,"rel":12294},[47],[153,12296,12297],{},[43,12298,7883],{"href":7881,"rel":12299},[47],{"title":77,"searchDepth":227,"depth":227,"links":12301},[12302,12304,12305],{"id":12161,"depth":230,"text":12303},"Building from ui-template",{"id":12244,"depth":230,"text":12245},{"id":12272,"depth":230,"text":12273},"2023-10-06","Explore Dashboard 2.0's 0.6.0 Release with third-party widget support. Learn more, build your widgets, and join our community on GitHub.","\u002Fblog\u002F2023\u002F10\u002Fimages\u002Ftile-db-integration.png",{"excerpt":12310},{"type":12,"value":12311},[12312],[15,12313,12145],{},"\u002Fblog\u002F2023\u002F10\u002Fdashboard-integrations",{"title":12139,"description":12307},{"loc":12314},"blog\u002F2023\u002F10\u002Fdashboard-integrations","With the 0.6.0 Release of Dashboard 2.0, we now support third-party widget integration. Read more in this deep dive.",[4886,272,7929,183,7930],"o2c00-QjwDorb5KemQ3SEepc9GVlbWLyUmeev7Rc_Yc",{"id":12322,"title":12323,"authors":12324,"body":12325,"cta":3,"date":12626,"description":12627,"extension":256,"image":12628,"lastUpdated":3,"meta":12629,"navigation":263,"path":12634,"seo":12635,"sitemap":12636,"stem":12637,"subtitle":12638,"tags":12639,"tldr":3,"video":3,"__hash__":12640},"blog\u002Fblog\u002F2023\u002F09\u002Fdashboard-notebook-layout.md","Dynamic Markdown, Tables & Notebooks with Dashboard 2.0",[3633],{"type":12,"value":12326,"toc":12620},[12327,12330,12333,12346,12365,12374,12378,12381,12407,12411,12417,12424,12427,12500,12520,12526,12529,12535,12537,12543,12553,12560,12566,12569,12574,12577,12582,12586,12600,12605,12617],[15,12328,12329],{},"Whilst we're still busy backporting through the existing Dashboard 1.0 features, we did want to highlight some new features we've built in Dashboard 2.0 released this week.",[15,12331,12332],{},"In our v0.4.0 release, we've introduced a new \"Notebook\" layout, alongside a new Table widget.",[15,12334,12335,12336,221,12341,11283],{},"The Notebook layout is designed to allow users to create Dashboards structured like a Notebook (most often seen with the likes of ",[43,12337,12340],{"href":12338,"rel":12339},"https:\u002F\u002Fjupyter.org\u002F",[47],"Jupyter Notebooks",[43,12342,12345],{"href":12343,"rel":12344},"https:\u002F\u002Fobservablehq.com\u002F",[47],"ObservableHQ",[15,12347,12348,12349,8126,12352,12356,12357,8126,12360,12364],{},"Here we will deepdive into the Notebook layout, and show how, alongside our new ",[35,12350,12351],{},"Markdown Node",[43,12353,6423],{"href":12354,"rel":12355},"https:\u002F\u002Fdashboard.flowfuse.com\u002Fnodes\u002Fwidgets\u002Fui-markdown.html",[47],"), ",[35,12358,12359],{},"Table Node",[43,12361,6423],{"href":12362,"rel":12363},"https:\u002F\u002Fdashboard.flowfuse.com\u002Fnodes\u002Fwidgets\u002Fui-table.html",[47],") and others, it's becoming easier to create dynamic and interactive Dashboards.",[15,12366,12367],{},[128,12368,12369,12370,190],{},"Note: If you're not familiar with Markdown, it's a simple markup language that allows you to format text. You can learn more about it ",[43,12371,5832],{"href":12372,"rel":12373},"https:\u002F\u002Fwww.markdownguide.org\u002Fcheat-sheet\u002F",[47],[19,12375,12377],{"id":12376},"dashboard-hierarchy","Dashboard Hierarchy",[15,12379,12380],{},"As a quick introductory note ahead of our below guide, each Dashboard is structured accordingly:",[150,12382,12383,12389,12395,12401],{},[153,12384,12385,12388],{},[35,12386,12387],{},"Widget",": An individual functional block, e.g. button, chart, slider",[153,12390,12391,12394],{},[35,12392,12393],{},"Group",": A collection of widgets that render together",[153,12396,12397,12400],{},[35,12398,12399],{},"Page",": A single page\u002Ftab in your Dashboard. Each page can have it's own Layout, in this case we'll use \"Notebook\"",[153,12402,12403,12406],{},[35,12404,12405],{},"UI",": Contains a collection of pages, deployed from Node-RED, provides the basic side navigation to switch between Pages.",[19,12408,12410],{"id":12409},"building-a-notebook","Building a Notebook",[15,12412,12413],{},[74,12414],{"alt":12415,"src":12416},"Example Notebook created in Dashboard","\u002Fblog\u002F2023\u002F09\u002Fimages\u002Fdb-notebook-example.png",[15,12418,12419,12420,12423],{},"To get started, drop your first widget (in this case, we'll add a ",[380,12421,12422],{},"ui-markdown",") onto the Node-RED canvas. This in turn will prompt us to create our first Group\u002FPage\u002FDashboard which we can name and configure accordingly.",[15,12425,12426],{},"Let's add the following Markdown to our first widget:",[4479,12428,12431],{"className":12429,"code":12430,"language":256,"meta":77,"style":77},"language-md shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# Markdown Content\n\nHere we can render dynamic Markdown content that is\neasily _styled_.\n\n{% raw %}\nWe can inject `msg.payload`. For example, here is a\ntimestamp updating every second: {{ msg.payload }}\n{% endraw %}\n",[380,12432,12433,12441,12445,12450,12467,12471,12476,12490,12495],{"__ignoreMap":77},[1086,12434,12435,12438],{"class":4488,"line":4489},[1086,12436,12437],{"class":6460},"# ",[1086,12439,12440],{"class":4492},"Markdown Content\n",[1086,12442,12443],{"class":4488,"line":230},[1086,12444,6511],{"emptyLinePlaceholder":263},[1086,12446,12447],{"class":4488,"line":233},[1086,12448,12449],{"class":6631},"Here we can render dynamic Markdown content that is\n",[1086,12451,12452,12455,12458,12462,12464],{"class":4488,"line":227},[1086,12453,12454],{"class":6631},"easily ",[1086,12456,12457],{"class":6527},"_",[1086,12459,12461],{"class":12460},"s5tWE","styled",[1086,12463,12457],{"class":6527},[1086,12465,12466],{"class":6631},".\n",[1086,12468,12469],{"class":4488,"line":6514},[1086,12470,6511],{"emptyLinePlaceholder":263},[1086,12472,12473],{"class":4488,"line":6524},[1086,12474,12475],{"class":6631},"{% raw %}\n",[1086,12477,12478,12481,12483,12485,12487],{"class":4488,"line":6537},[1086,12479,12480],{"class":6631},"We can inject ",[1086,12482,10589],{"class":6460},[1086,12484,6769],{"class":4496},[1086,12486,10589],{"class":6460},[1086,12488,12489],{"class":6631},". For example, here is a\n",[1086,12491,12492],{"class":4488,"line":6548},[1086,12493,12494],{"class":6631},"timestamp updating every second: {{ msg.payload }}\n",[1086,12496,12497],{"class":4488,"line":6556},[1086,12498,12499],{"class":6631},"{% endraw %}\n",[15,12501,12502,12503,12505,12506,12509,12510,12512,12513,12516,12517,12519],{},"The joy of ",[380,12504,12422],{}," in Dashboard 2.0 is ",[128,12507,12508],{},"dynamic"," content, i.e. content that can be updated by passing messages to the ",[380,12511,12422],{}," node. We can wire an ",[380,12514,12515],{},"inject"," node, set it up to repeat every second, and connect it to ",[380,12518,12422],{},". Now, our Markdown content will automatically update show this value.",[15,12521,12522],{},[74,12523],{"alt":12524,"src":12525},"Screenshot to show how an inject node can drive content of a ui-markdown node","\u002Fblog\u002F2023\u002F09\u002Fimages\u002Fdb-notebook-inject.png",[15,12527,12528],{},"Resulting in:",[15,12530,12531],{},[74,12532],{"alt":12533,"src":12534},"Dynamic markdown with an updating timestamp every 1 second","\u002Fblog\u002F2023\u002F09\u002Fimages\u002Fmd-timestamp.gif",[19,12536,8223],{"id":8222},[15,12538,12539,12540,12542],{},"Because the Notebook is ",[128,12541,9972],{}," a layout, we can still wire together any of the available widgets and existing nodes and display them accordingly.",[15,12544,12545,12546,12548,12549,12552],{},"Let's wire a ",[380,12547,8021],{},", HTTP Request, and ",[380,12550,12551],{},"ui-table"," node. When we click the button, it will perform the HTTP request, and then render the response in the table.",[15,12554,12555,12556,12559],{},"For this, we're going to use the Random Jokes API, and in particular, a call to ",[380,12557,12558],{},"https:\u002F\u002Fofficial-joke-api.appspot.com\u002Fjokes\u002Ften"," which will return 10 random jokes.",[15,12561,12562],{},[74,12563],{"alt":12564,"src":12565},"Screenshot showing a simple Button > HTTP Request > Table flow","\u002Fblog\u002F2023\u002F09\u002Fimages\u002Fgenerate-jokes-flow.png",[15,12567,12568],{},"We can also re-order the widgets on the page using the Dashboard 2.0 sidebar (as you could in Dashboard 1.0).",[15,12570,12571],{},[74,12572],{"alt":12524,"src":12573},"\u002Fblog\u002F2023\u002F09\u002Fimages\u002Fdb-notebook-order.png",[15,12575,12576],{},"The above effort results in the following output in our Notebook:",[15,12578,12579],{},[74,12580],{"alt":12524,"src":12581},"\u002Fblog\u002F2023\u002F09\u002Fimages\u002Fdb-notebook-jokes-table.png",[19,12583,12585],{"id":12584},"what-else-is-new-in-040","What else is new in 0.4.0?",[15,12587,12588,12589,12593,12594,12599],{},"The above demonstrates just a few of the new features in the 0.4.0 Release, but we've also added ",[43,12590,12281],{"href":12591,"rel":12592},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fnode-red-dashboard\u002Freleases\u002Ftag\u002Fv0.4.0",[47],". In particular, I want to call out Steve's great work on implementing custom class injection, the first of our new ",[43,12595,12598],{"href":12596,"rel":12597},"https:\u002F\u002Fdashboard.flowfuse.com\u002Fuser\u002Fdynamic-properties.html",[47],"\"Dynamic Properties\"",", of which there will be more (e.g. visibility, disabled, etc.) to come.",[15,12601,11135,12602,190],{},[43,12603,7898],{"href":7896,"rel":12604},[47],[150,12606,12607,12612],{},[153,12608,12609],{},[43,12610,7876],{"href":7874,"rel":12611},[47],[153,12613,12614],{},[43,12615,7883],{"href":7881,"rel":12616},[47],[4643,12618,12619],{},"html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .s5tWE, html code.shiki .s5tWE{--shiki-light:#E53935;--shiki-light-font-style:italic;--shiki-default:#F07178;--shiki-default-font-style:italic;--shiki-dark:#F07178;--shiki-dark-font-style:italic}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":77,"searchDepth":227,"depth":227,"links":12621},[12622,12623,12624,12625],{"id":12376,"depth":230,"text":12377},{"id":12409,"depth":230,"text":12410},{"id":8222,"depth":230,"text":8223},{"id":12584,"depth":230,"text":12585},"2023-09-06","Explore the latest features in Dashboard 2.0's v0.4.0 release, including \"Notebook\" layout, dynamic Markdown & Table widgets, and additional enhancements.","\u002Fblog\u002F2023\u002F09\u002Fimages\u002Fdb-notebook-tile.png",{"excerpt":12630},{"type":12,"value":12631},[12632],[15,12633,12329],{},"\u002Fblog\u002F2023\u002F09\u002Fdashboard-notebook-layout",{"title":12323,"description":12627},{"loc":12634},"blog\u002F2023\u002F09\u002Fdashboard-notebook-layout","A dive into the new features available in 0.4.0 - The \"Notebook\" Layout and new dynamic Markdown & Table widgets.",[4886,272,7929,183,7930],"6fU7RFKqryqT85Q9gudjfXS-bzzPLWcHsHsCgXVvfyo",{"id":12642,"title":12643,"authors":12644,"body":12646,"cta":3,"date":12831,"description":12832,"extension":256,"image":12833,"lastUpdated":3,"meta":12834,"navigation":263,"path":12839,"seo":12840,"sitemap":12841,"stem":12842,"subtitle":12843,"tags":12844,"tldr":3,"video":3,"__hash__":12845},"blog\u002Fblog\u002F2023\u002F08\u002Fflowfuse-1-11-release.md","FlowFuse 1.11 makes it easier to get started with FlowFuse and Node-RED",[12645],"ian-skerrett",{"type":12,"value":12647,"toc":12815},[12648,12651,12660,12663,12666,12675,12678,12687,12690,12699,12707,12711,12745,12749,12759,12761,12763,12785,12787,12789,12793,12795,12797,12802,12806,12808],[15,12649,12650],{},"FlowFuse 1.11 introduces a new starter tier for FlowFuse Cloud that makes it easier to get started with FlowFuse and Node-RED.",[19,12652,12654,12655],{"id":12653},"new-flowfuse-cloud-starter-tier-2328","New FlowFuse Cloud Starter Tier  ",[43,12656,12659],{"href":12657,"rel":12658},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F2328",[47],"#2328",[15,12661,12662],{},"It is now easier for Node-RED developers to get started with FlowFuse and Node-RED. The new starter tier allows developers to use two Node-RED instances and two remote device deployments. Ideal for creating proof of concepts or running a home automation system with Node-RED.",[15,12664,12665],{},"FlowFuse provides a cloud hosted version of Node-RED so developers don't need to worry about Node-RED installation or operation. This makes it a lot easier to get started with Node-RED and easier to maintain a running instance.",[19,12667,12669,12670],{"id":12668},"flowfuse-api-access-now-possible-via-personal-access-tokens-14","FlowFuse API access now possible via personal access tokens ",[43,12671,12674],{"href":12672,"rel":12673},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F14",[47],"#14",[15,12676,12677],{},"FlowFuse APIs are now accessible via personal access tokens (PAT). This makes it possible to create automation scripts that interact with the FlowFuse platform using the API and authenticate the scripts with the PAT.",[19,12679,12681,12682],{"id":12680},"usability-improvements-to-device-management-2294","Usability Improvements to Device Management ",[43,12683,12686],{"href":12684,"rel":12685},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F2334",[47],"#2294",[15,12688,12689],{},"A number of usability improvements have been added to the FlowFuse device management solution to make it more flexible and intuitive to use. These improvements include being able to associate devices at the application level allowing for easier editing of Node-RED instances on edge devices.",[19,12691,12693,12694],{"id":12692},"flowfuse-rebranding-119","FlowFuse Rebranding ",[43,12695,12698],{"href":12696,"rel":12697},"https:\u002F\u002Fgithub.com\u002Forgs\u002FFlowFuse\u002Fprojects\u002F1?pane=issue&itemId=34719640",[47],"#119",[15,12700,12701,12702,12706],{},"Earlier in August, ",[43,12703,12705],{"href":12704},"\u002Fblog\u002F2023\u002F08\u002Fflowforge-is-now-flowfuse\u002F","FlowForge announced"," a change to our company and product name to FlowFuse. Work has begun to change the product branding to FlowFuse. The UI has been rebranded and the remaining points will be changed in the next release.",[19,12708,12710],{"id":12709},"other-new-features","Other New Features",[150,12712,12713,12721,12729,12737],{},[153,12714,12715,12716],{},"Add ability to add a description to an application and display it in the portal ",[43,12717,12720],{"href":12718,"rel":12719},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F2279",[47],"#2279",[153,12722,12723,12724],{},"UI Improvements to device management ",[43,12725,12728],{"href":12726,"rel":12727},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F2427",[47],"#2427",[153,12730,12731,12732],{},"Improve landing page for documentation ",[43,12733,12736],{"href":12734,"rel":12735},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fwebsite\u002Fissues\u002F842",[47],"#842",[153,12738,12739,12740],{},"Restructure of user interface navigation ",[43,12741,12744],{"href":12742,"rel":12743},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F2474",[47],"#2474",[19,12746,12748],{"id":12747},"bug-fixes","Bug Fixes",[150,12750,12751],{},[153,12752,12753,12754],{},"Device running old snapshot ",[43,12755,12758],{"href":12756,"rel":12757},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fdevice-agent\u002Fissues\u002F132",[47],"#132",[19,12760,5997],{"id":2321},[15,12762,6000],{},[150,12764,12765,12771,12778],{},[153,12766,12767,6008,12769,6012],{},[35,12768,6007],{},[43,12770,6011],{"href":182},[153,12772,12773,6018,12775,6024],{},[35,12774,6017],{},[43,12776,6023],{"href":6021,"rel":12777},[47],[153,12779,12780,6030,12782,190],{},[35,12781,6029],{},[43,12783,1563],{"href":1561,"rel":12784},[47],[15,12786,3202],{},[19,12788,5350],{"id":5349},[15,12790,6040,12791,190],{},[43,12792,5832],{"href":5831},[15,12794,6045],{},[19,12796,4818],{"id":4817},[15,12798,6050,12799,12801],{},[4823,12800],{"value":4825},") is already running 1.11.",[15,12803,5553,12804,190],{},[43,12805,4833],{"href":4832},[19,12807,4844],{"id":4843},[15,12809,4847,12810,4851,12812,4857],{},[43,12811,4536],{"href":4850},[43,12813,4856],{"href":4854,"rel":12814},[47],{"title":77,"searchDepth":227,"depth":227,"links":12816},[12817,12819,12821,12823,12825,12826,12827,12828,12829,12830],{"id":12653,"depth":230,"text":12818},"New FlowFuse Cloud Starter Tier  #2328",{"id":12668,"depth":230,"text":12820},"FlowFuse API access now possible via personal access tokens #14",{"id":12680,"depth":230,"text":12822},"Usability Improvements to Device Management #2294",{"id":12692,"depth":230,"text":12824},"FlowFuse Rebranding #119",{"id":12709,"depth":230,"text":12710},{"id":12747,"depth":230,"text":12748},{"id":2321,"depth":230,"text":5997},{"id":5349,"depth":230,"text":5350},{"id":4817,"depth":230,"text":4818},{"id":4843,"depth":230,"text":4844},"2023-08-31","The new FlowFuse 1.11 release includes a new starter tier for FlowFuse Cloud, Personal Access Tokens for API access and improvements to device management.","\u002Fblog\u002F2023\u002F08\u002Fimages\u002Frelease-1-11-graphic.png",{"excerpt":12835},{"type":12,"value":12836},[12837],[15,12838,12650],{},"\u002Fblog\u002F2023\u002F08\u002Fflowfuse-1-11-release",{"title":12643,"description":12832},{"loc":12839},"blog\u002F2023\u002F08\u002Fflowfuse-1-11-release","Our latest release includes a new starter tier for FlowFuse Cloud, Personal Access Tokens for API access and improvements to device management.",[4886,270,272],"8oMJZkofD2oHMI02qVFD-z0gqf60tuhV6e6wZov_5Is",{"id":12847,"title":12848,"authors":12849,"body":12850,"cta":3,"date":13051,"description":13052,"extension":256,"image":13053,"lastUpdated":3,"meta":13054,"navigation":263,"path":13059,"seo":13060,"sitemap":13061,"stem":13062,"subtitle":13052,"tags":13063,"tldr":3,"video":3,"__hash__":13064},"blog\u002Fblog\u002F2023\u002F08\u002Fdashboard-community-update.md","Dashboard 2.0 - Community Update",[3633],{"type":12,"value":12851,"toc":13036},[12852,12855,12862,12868,12875,12879,12886,12897,12903,12906,12934,12941,12947,12950,12954,12958,12964,12968,12977,12985,12989,12997,13004,13006,13014,13020,13024,13027],[15,12853,12854],{},"Welcome to the latest Node-RED Dashboard 2.0 update. We've added lots of new widgets, cleaned up compatibility issues alongside Dashboard 1.0 and made strides to improve the events system linking the Node-RED editor with the Dashboard.",[15,12856,12857,12858,12861],{},"I firstly need to begin with a  ",[128,12859,12860],{},"\"Thank You\""," to the dozens of pre-alpha users we've had so far. Thanks for being patient whilst we're shipping fast and breaking things. We've had some great feedback, and we're working hard to implement is as best as possible.",[15,12863,12864,12865,190],{},"With all of the changes we've been making, we've also made the decision to jump to minor version numbers, and so, ",[35,12866,12867],{},"0.1.0 is available now",[15,12869,12870,12871,190],{},"Below you'll find a summary of the changes we've made since our ",[43,12872,12874],{"href":12873},"\u002Fblog\u002F2023\u002F07\u002Fdashboard-0-1-release","last community update",[19,12876,12878],{"id":12877},"new-widgets","New Widgets",[27,12880,12882,12883,1104],{"id":12881},"template-docs","Template (",[43,12884,6423],{"href":6387,"target":12885},"_blank",[15,12887,12888,12889,12891,12892,12896],{},"Steve has been doing some incredible work on the new ",[380,12890,6396],{}," widget. This widget allows you to create your own custom components using raw HTML, but also works with any of the components in the ",[43,12893,7934],{"href":12894,"rel":12895},"https:\u002F\u002Fvuetifyjs.com\u002Fen\u002Fcomponents\u002Fall\u002F",[47]," component library. It's a powerful tool that will enable users to be creative with their own widgets that are not currently available with the standard set of widgets.",[15,12898,12899],{},[74,12900],{"alt":12901,"src":12902},"Examples of ui-template","https:\u002F\u002Fdashboard.flowfuse.com\u002Fimages\u002Fnode-examples\u002Fui-template.png",[15,12904,12905],{},"The Template node also provides access to two built-in functions that can be used to send data back to Node-RED:",[150,12907,12908,12914],{},[153,12909,12910,12913],{},[35,12911,12912],{},"send(msg)",": Outputs a message (defined by the input to this function call) from this node in the Node-RED flow.",[153,12915,12916,12919,12920,12923,12924,12927,12928,12930,12931,12933],{},[35,12917,12918],{},"submit()",": Send a ",[380,12921,12922],{},"FormData"," object when attached to a ",[380,12925,12926],{},"\u003Cform>"," element. The created object will consist of the ",[380,12929,8831],{}," attributes for each form element, corresponding to their respective ",[380,12932,6488],{}," attributes.",[27,12935,12937,12938,1104],{"id":12936},"toggle-switch-docs","Toggle Switch (",[43,12939,6423],{"href":12940,"target":12885},"https:\u002F\u002Fdashboard.flowfuse.com\u002Fnodes\u002Fwidgets\u002Fui-switch.html",[15,12942,12943],{},[74,12944],{"alt":12945,"src":12946},"Examples of ui-switch","https:\u002F\u002Fdashboard.flowfuse.com\u002Fimages\u002Fnode-examples\u002Fui-switch.png",[15,12948,12949],{},"Adds a toggle switch to the user interface that can be rendered with a label, and traditional toggle switch, or, as in Dashboard 1.0, can be a square element with an icon & color provided.",[19,12951,12953],{"id":12952},"fixes-other-changes","Fixes & Other Changes",[27,12955,12957],{"id":12956},"sidebar","Sidebar",[15,12959,12960,12961,12963],{},"As requested on multiple occasions by the community when we released v0.0.4 of Dashboard 2.0, we've now added a side menu, as per Dashboard 1.0. Currently, this ",[128,12962,9972],{}," provides a link to the Dashboard UI, but gives us a canvas on which to expand functionality in the future.",[27,12965,12967],{"id":12966},"improved-events-system","Improved Events System",[15,12969,12970,12971,12973,12974,190],{},"We've re-structured the hierarchy of the events system to make it more streamlined. Now, the ",[380,12972,8032],{}," manages comms via single channels dedicated to each event type, and the widget's ID is then used as a topic. Previously, we had a separate channel for each ",[380,12975,12976],{},"action:id",[15,12978,12979,12980,12984],{},"If you're interested in learning more about our events architecture, you can read about it ",[43,12981,5832],{"href":12982,"rel":12983},"https:\u002F\u002Fdashboard.flowfuse.com\u002Fcontributing\u002Fguides\u002Fevents.html",[47]," in the docs.",[27,12986,12988],{"id":12987},"documentation-updates","Documentation Updates",[15,12990,12991,12992,12996],{},"It's not glamorous, but it's important. We've made sure that all documentation and help text inside Node-RED is fully up to date for the Dashboard 2.0 nodes. We've also include rendered examples for all widgets in our ",[43,12993,12995],{"href":8571,"rel":12994},[47],"online documentation"," too.",[15,12998,12999,13000,13003],{},"We've also made sure that any legacy options that had been transferred over from Dashboard 1.0 that haven't been fully implemented yet are temporarily hidden. This means, any options you're seeing, ",[128,13001,13002],{},"should"," be working. If they're not - it's a bug.",[19,13005,2322],{"id":2321},[15,13007,13008,13009,13013],{},"We have a lot of things to keep us busy, we are documenting them all in GitHub, and have made public our ",[43,13010,13012],{"href":7874,"rel":13011},[47],"planning board",". You can see what we're working on, what's coming up next, and what we've got planned for the future.",[15,13015,13016,13017,190],{},"As always, we're open to ideas, feedback & contributions. If you'd like to get involved, please check out our GitHub Repository ",[43,13018,5832],{"href":7896,"rel":13019},[47],[19,13021,13023],{"id":13022},"join-our-team","Join Our Team",[15,13025,13026],{},"If you'd like to be paid to directly contribute to Dashboard 2.0, we are hiring for a 2-3 month position to do just that:",[150,13028,13029],{},[153,13030,13031],{},[43,13032,13035],{"href":13033,"rel":13034},"https:\u002F\u002Fboards.greenhouse.io\u002Fflowfuse\u002Fjobs\u002F4911532004",[47],"Contract Front-End Engineer – Node-RED Dashboard",{"title":77,"searchDepth":227,"depth":227,"links":13037},[13038,13044,13049,13050],{"id":12877,"depth":230,"text":12878,"children":13039},[13040,13042],{"id":12881,"depth":233,"text":13041},"Template (docs)",{"id":12936,"depth":233,"text":13043},"Toggle Switch (docs)",{"id":12952,"depth":230,"text":12953,"children":13045},[13046,13047,13048],{"id":12956,"depth":233,"text":12957},{"id":12966,"depth":233,"text":12967},{"id":12987,"depth":233,"text":12988},{"id":2321,"depth":230,"text":2322},{"id":13022,"depth":230,"text":13023},"2023-08-10","Our latest Community Update for Dashboard 2.0, including the latest new widgets, fixes and updates on what's next.","\u002Fblog\u002F2023\u002F08\u002Fimages\u002FDashboard Community Update-Aug23.jpg",{"excerpt":13055},{"type":12,"value":13056},[13057],[15,13058,12854],{},"\u002Fblog\u002F2023\u002F08\u002Fdashboard-community-update",{"title":12848,"description":13052},{"loc":13059},"blog\u002F2023\u002F08\u002Fdashboard-community-update",[4886,272,7929,7930],"H0v8D8RuvOesIOyZ38eIm01iP0HfQm0NNW0sMP3Rd78",{"id":13066,"title":13067,"authors":13068,"body":13069,"cta":3,"date":13270,"description":13271,"extension":256,"image":13272,"lastUpdated":3,"meta":13273,"navigation":263,"path":13278,"seo":13279,"sitemap":13280,"stem":13281,"subtitle":13282,"tags":13283,"tldr":3,"video":3,"__hash__":13284},"blog\u002Fblog\u002F2023\u002F08\u002Fflowforge-1-10-release.md","FlowFuse 1.10 Release Now Available",[12645],{"type":12,"value":13070,"toc":13255},[13071,13074,13083,13086,13095,13098,13106,13109,13111,13137,13139,13165,13167,13170,13198,13200,13202,13224,13226,13228,13232,13234,13236,13241,13245,13247],[15,13072,13073],{},"FlowFuse 1.10 release includes improvements to device management and importing environment variable templates.",[19,13075,13077,13078],{"id":13076},"import-environment-variable-templates-2372","Import Environment Variable Templates  ",[43,13079,13082],{"href":13080,"rel":13081},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F2372",[47],"#2372",[15,13084,13085],{},"FlowFuse 1.10 now allows users to import environment variable templates. This makes it much easier and less error prone to maintain and add new environment variables to Node-RED instances running on FlowFuse.",[19,13087,13089,13090],{"id":13088},"devops-pipelines-now-can-include-devices-2243","DevOps Pipelines now can include devices ",[43,13091,13094],{"href":13092,"rel":13093},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F2243",[47],"#2243",[15,13096,13097],{},"DevOps pipelines have proven very popular for creating dev\u002Ftest\u002Fproduction environments for Node-RED flow development. Now, devices can be associated with a pipeline so when a snapshot is created it can be pushed to all the devices associated with the pipeline.  This will improve the overall quality and reliability of Node-RED development for remote devices.",[19,13099,13101,13102],{"id":13100},"devices-can-now-access-the-team-library-2294","Devices can now access the team library ",[43,13103,12686],{"href":13104,"rel":13105},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F2294",[47],[15,13107,13108],{},"Team libraries allow Node-RED development team to share common flows and nodes through a shared library. Until the 1.10 release, Node-RED running remotely on a device did not have access to the team library. This limitation is now removed so device development can benefit from reusing standard flows.",[19,13110,12710],{"id":12709},[150,13112,13113,13121,13129],{},[153,13114,13115,13116],{},"Add description of device type field  ",[43,13117,13120],{"href":13118,"rel":13119},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F2428",[47],"#2428",[153,13122,13123,13124],{},"Improve reliability of device editor ",[43,13125,13128],{"href":13126,"rel":13127},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F2483",[47],"#2483",[153,13130,13131,13132],{},"Improve error feedback from device editor tunnel ",[43,13133,13136],{"href":13134,"rel":13135},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F2473",[47],"#2473",[19,13138,12748],{"id":12747},[150,13140,13141,13149,13157],{},[153,13142,13143,13144],{},"Improve visualization of Last Seen & Last Known with large amounts of devices. ",[43,13145,13148],{"href":13146,"rel":13147},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F2380",[47],"#2380",[153,13150,13151,13152],{},"Fix billing information error in FlowFuse Cloud ",[43,13153,13156],{"href":13154,"rel":13155},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F2416",[47],"#2416",[153,13158,13159,13160],{},"Fix T&C checkbox on sign-up page ",[43,13161,13164],{"href":13162,"rel":13163},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F2419",[47],"#2419",[19,13166,6323],{"id":6322},[15,13168,13169],{},"Thanks to our community members for their contributions to this release.",[150,13171,13172,13185],{},[153,13173,13174,13179,13180],{},[43,13175,13178],{"href":13176,"rel":13177},"https:\u002F\u002Fgithub.com\u002Fdfulgham",[47],"dfulgham"," - Added support for annotation substitutions ",[43,13181,13184],{"href":13182,"rel":13183},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowforge-driver-k8s\u002Fpull\u002F95",[47],"#95",[153,13186,13187,13192,13193],{},[43,13188,13191],{"href":13189,"rel":13190},"https:\u002F\u002Fgithub.com\u002Felenaviter",[47],"elanaviter"," - Editors: allow optional service account linkage ",[43,13194,13197],{"href":13195,"rel":13196},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowforge-driver-k8s\u002Fpull\u002F92",[47],"#92",[19,13199,5997],{"id":2321},[15,13201,6000],{},[150,13203,13204,13210,13217],{},[153,13205,13206,6008,13208,6012],{},[35,13207,6007],{},[43,13209,6011],{"href":182},[153,13211,13212,6018,13214,6024],{},[35,13213,6017],{},[43,13215,6023],{"href":6021,"rel":13216},[47],[153,13218,13219,6030,13221,190],{},[35,13220,6029],{},[43,13222,1563],{"href":1561,"rel":13223},[47],[15,13225,3202],{},[19,13227,5350],{"id":5349},[15,13229,6040,13230,190],{},[43,13231,5832],{"href":5831},[15,13233,6045],{},[19,13235,4818],{"id":4817},[15,13237,6050,13238,13240],{},[4823,13239],{"value":4825},") is already running 1.10.",[15,13242,5553,13243,190],{},[43,13244,4833],{"href":4832},[19,13246,4844],{"id":4843},[15,13248,4847,13249,13251,13252,4857],{},[43,13250,4536],{"href":4850}," as the answers to many questions are covered there. Additionally you can go the the ",[43,13253,4856],{"href":4854,"rel":13254},[47],{"title":77,"searchDepth":227,"depth":227,"links":13256},[13257,13259,13261,13263,13264,13265,13266,13267,13268,13269],{"id":13076,"depth":230,"text":13258},"Import Environment Variable Templates  #2372",{"id":13088,"depth":230,"text":13260},"DevOps Pipelines now can include devices #2243",{"id":13100,"depth":230,"text":13262},"Devices can now access the team library #2294",{"id":12709,"depth":230,"text":12710},{"id":12747,"depth":230,"text":12748},{"id":6322,"depth":230,"text":6323},{"id":2321,"depth":230,"text":5997},{"id":5349,"depth":230,"text":5350},{"id":4817,"depth":230,"text":4818},{"id":4843,"depth":230,"text":4844},"2023-08-03","New FlowFuse 1.10 release introduces importing of environment variable templates and improvements to device management.","\u002Fblog\u002F2023\u002F08\u002Fimages\u002Frelease-1-10-graphic.png",{"excerpt":13274},{"type":12,"value":13275},[13276],[15,13277,13073],{},"\u002Fblog\u002F2023\u002F08\u002Fflowforge-1-10-release",{"title":13067,"description":13271},{"loc":13278},"blog\u002F2023\u002F08\u002Fflowforge-1-10-release","New FlowFuse 1.10 also includes improvements to device management and importing environment variable templates.",[4886,270,272],"OXvQfCG6SsG36CXI5cdRBVU6WPzIR2njghCyFgQyVmo",{"id":13286,"title":13287,"authors":13288,"body":13289,"cta":3,"date":13436,"description":13437,"extension":256,"image":13438,"lastUpdated":3,"meta":13439,"navigation":263,"path":12873,"seo":13446,"sitemap":13447,"stem":13448,"subtitle":13449,"tags":13450,"tldr":3,"video":3,"__hash__":13451},"blog\u002Fblog\u002F2023\u002F07\u002Fdashboard-0-1-release.md","First Pre-Alpha Release of the new Node-RED Dashboard",[3633,9286],{"type":12,"value":13290,"toc":13432},[13291,13298,13302,13310,13313,13320,13323,13330,13334,13337,13371,13374,13384,13387,13426,13429],[15,13292,13293,13294,13297],{},"Just weeks ago, we at FlowFuse ",[43,13295,13296],{"href":8478},"announced our plan"," to develop a successor to the Node-RED Dashboard. Today, we're excited to reveal the pre-alpha release of this highly anticipated project, bringing us one step closer to a new era of data visualization in Node-RED.",[19,13299,13301],{"id":13300},"sneak-peek-into-the-new-node-red-dashboard","Sneak Peek into the New Node-RED Dashboard",[15,13303,13304,13305,13309],{},"The Node-RED Dashboard successor is now available for install as an npm package under the name ",[43,13306,11198],{"href":13307,"rel":13308},"https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@flowforge\u002Fnode-red-dashboard",[47]," in your Node-RED palette manager.",[15,13311,13312],{},"This pre-alpha version includes the first set of Vue.js-based elements familiar to Node-RED Dashboard users:",[15,13314,13315],{},[74,13316],{"alt":13317,"src":13318,"title":13319},"\"new Node-RED Dashboard Elements\"","\u002Fblog\u002F2023\u002F07\u002Fimages\u002Fnr-dashboard-screenshot.png","new Node-RED Dashboard Elements",[15,13321,13322],{},"This is but a hint of what's to come. The objective of these pre-alpha releases is to provide early access to the current status.",[15,13324,13325,13326,190],{},"The strength of the project comes from the community. Your insights, suggestions and contributions play a significant role in shaping the future of this dashboard. Keep them coming through our ",[43,13327,13329],{"href":7896,"rel":13328},[47],"Github page",[19,13331,13333],{"id":13332},"current-status-and-next-steps","Current Status and Next Steps",[15,13335,13336],{},"As of now, we've implemented the following Dashboard Widgets:",[150,13338,13339,13347,13355,13363],{},[153,13340,13341,13342,1104],{},"UI Text (",[43,13343,13346],{"href":13344,"rel":13345},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fnode-red-dashboard\u002Fissues\u002F38",[47],"ui-text Widget",[153,13348,13349,13350,1104],{},"Text Input (",[43,13351,13354],{"href":13352,"rel":13353},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fnode-red-dashboard\u002Fissues\u002F39",[47],"ui-text-input Widget",[153,13356,13357,13358,1104],{},"Range Slider (",[43,13359,13362],{"href":13360,"rel":13361},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fnode-red-dashboard\u002Fissues\u002F47",[47],"ui-slider Widget",[153,13364,13365,13366,1104],{},"Dropdown\u002FSelect (",[43,13367,13370],{"href":13368,"rel":13369},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fnode-red-dashboard\u002Fissues\u002F45",[47],"ui-dropdown Widget",[15,13372,13373],{},"We've also introduced a new widget:",[150,13375,13376],{},[153,13377,13378,13379,1104],{},"Markdown (",[43,13380,13383],{"href":13381,"rel":13382},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fnode-red-dashboard\u002Fissues\u002F62",[47],"ui-markdown Widget",[15,13385,13386],{},"Not yet part of the first Pre-Alpha Release:",[150,13388,13389,13396,13404,13410,13418],{},[153,13390,12937,13391,1104],{},[43,13392,13395],{"href":13393,"rel":13394},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fnode-red-dashboard\u002Fissues\u002F42",[47],"ui-switch Widget",[153,13397,13398,13399,1104],{},"Color Picker (",[43,13400,13403],{"href":13401,"rel":13402},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fnode-red-dashboard\u002Fissues\u002F46",[47],"ui-color-picker Widget",[153,13405,6418,13406,1104],{},[43,13407,13409],{"href":6438,"rel":13408},[47],"ui-numeric Widget",[153,13411,13412,13413,1104],{},"Form (",[43,13414,13417],{"href":13415,"rel":13416},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fnode-red-dashboard\u002Fissues\u002F49",[47],"ui-form Widget",[153,13419,13420,13421,1104],{},"Date selector (",[43,13422,13425],{"href":13423,"rel":13424},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fnode-red-dashboard\u002Fissues\u002F32",[47],"ui-date-picker",[15,13427,13428],{},"Our immediate focus is to continue adding the missing elements from the original Node-RED Dashboard, releasing each as soon as they're fully developed. This will significantly increase the frequency of our releases in the upcoming weeks.",[15,13430,13431],{},"In addition to these releases, we plan to publish regular blog posts titled \"What's New in Node-RED Dashboard\". These posts will keep you informed of all the latest features, updates, and improvements.",{"title":77,"searchDepth":227,"depth":227,"links":13433},[13434,13435],{"id":13300,"depth":230,"text":13301},{"id":13332,"depth":230,"text":13333},"2023-07-27","The first release of the successor to the Node-RED Dashboard has arrived, marking the beginning of the pre-alpha phase.","\u002Fblog\u002F2023\u002F07\u002Fimages\u002Fnr-dashboard-tile.png",{"excerpt":13440},{"type":12,"value":13441},[13442],[15,13443,13293,13444,13297],{},[43,13445,13296],{"href":8478},{"title":13287,"description":13437},{"loc":12873},"blog\u002F2023\u002F07\u002Fdashboard-0-1-release","Introducing v0.0.1 – An Initial Glimpse at the Future of Dashboarding in Node-RED",[4886,272,7930],"TRQka9nz4i5NfX96JGrliGWel82iCxbUM7EBwXh8oVs",{"id":13453,"title":13454,"authors":13455,"body":13456,"cta":3,"date":13589,"description":13590,"extension":256,"image":3,"lastUpdated":3,"meta":13591,"navigation":263,"path":13596,"seo":13597,"sitemap":13598,"stem":13599,"subtitle":13590,"tags":13600,"tldr":3,"video":3,"__hash__":13601},"blog\u002Fblog\u002F2023\u002F07\u002Fflowforge-1-9-3-release.md","FlowFuse 1.9.3 and Device Agent 1.9.5 released",[1472],{"type":12,"value":13457,"toc":13581},[13458,13461,13465,13468,13471,13474,13490,13494,13525,13527,13529,13551,13553,13555,13559,13561,13563,13568,13572,13574],[15,13459,13460],{},"FlowFuse and the Device Agent both received updates yesterday that bring improvements to the Device Agent editor experience, making it more resilient to network issues.",[19,13462,13464],{"id":13463},"improving-the-device-agent-editor-experience","Improving the Device Agent editor experience",[15,13466,13467],{},"The ability to remotely edit flows running the Device Agent has been warmly welcomed by many users on the platform. Along with that comes great feedback we can use to continue improving the user experience.",[15,13469,13470],{},"Some early feedback identified issues with the resilience of the tunnel we connect between the Device Agent and the platform. If the tunnel was interrupted for any reason, the user would have to manually set it up again.",[15,13472,13473],{},"With the FlowFuse 1.9.3 release, now running FlowFuse Cloud, along with the latest version of the Device Agent, we have made the tunnel much more resilient. It can now restablish itself without any intervention from the user - making for a much more seamless experience.",[150,13475,13476,13483],{},[153,13477,13478],{},[43,13479,13482],{"href":13480,"rel":13481},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fpull\u002F2488",[47],"#2488",[153,13484,13485],{},[43,13486,13489],{"href":13487,"rel":13488},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fpull\u002F2507",[47],"#2507",[19,13491,13493],{"id":13492},"other-new-features-and-bug-fixes","Other New Features and Bug Fixes",[150,13495,13496,13510,13517],{},[153,13497,13498,13499,13504,13505],{},"Fixes incorrect 'start-failed' notifications when restarting an instance ",[43,13500,13503],{"href":13501,"rel":13502},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fpull\u002F2505",[47],"#2505"," The system log now includes more information about the callingThe FlowFuse device agent is now supported on Windows ",[43,13506,13509],{"href":13507,"rel":13508},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fdevice-agent\u002Fissues\u002F78",[47],"#78",[153,13511,13512,13513],{},"Ensures the system logging captures the proper source IP address of requests ",[43,13514,13503],{"href":13515,"rel":13516},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fpull\u002F2503",[47],[153,13518,13519,13520],{},"A few documentation updates, including a clarfication on how to run the Device Agent under docker ",[43,13521,13524],{"href":13522,"rel":13523},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fpull\u002F2498",[47],"#2498",[19,13526,5997],{"id":2321},[15,13528,6000],{},[150,13530,13531,13537,13544],{},[153,13532,13533,6008,13535,6012],{},[35,13534,6007],{},[43,13536,6011],{"href":182},[153,13538,13539,6018,13541,6024],{},[35,13540,6017],{},[43,13542,6023],{"href":6021,"rel":13543},[47],[153,13545,13546,6030,13548,190],{},[35,13547,6029],{},[43,13549,1563],{"href":1561,"rel":13550},[47],[15,13552,3202],{},[19,13554,5350],{"id":5349},[15,13556,6040,13557,190],{},[43,13558,5832],{"href":5831},[15,13560,6045],{},[19,13562,4818],{"id":4817},[15,13564,6050,13565,13567],{},[4823,13566],{"value":4825},") is already running 1.9.3.",[15,13569,5553,13570,190],{},[43,13571,4833],{"href":4832},[19,13573,4844],{"id":4843},[15,13575,4847,13576,13251,13578,4857],{},[43,13577,4536],{"href":4850},[43,13579,4856],{"href":4854,"rel":13580},[47],{"title":77,"searchDepth":227,"depth":227,"links":13582},[13583,13584,13585,13586,13587,13588],{"id":13463,"depth":230,"text":13464},{"id":13492,"depth":230,"text":13493},{"id":2321,"depth":230,"text":5997},{"id":5349,"depth":230,"text":5350},{"id":4817,"depth":230,"text":4818},{"id":4843,"depth":230,"text":4844},"2023-07-21","A maintenance release to improve the Device Agent editor experience",{"excerpt":13592},{"type":12,"value":13593},[13594],[15,13595,13460],{},"\u002Fblog\u002F2023\u002F07\u002Fflowforge-1-9-3-release",{"title":13454,"description":13590},{"loc":13596},"blog\u002F2023\u002F07\u002Fflowforge-1-9-3-release",[4886,270,272],"UPIwOnd5vVjKhKqhhITQMPCMrZR9JYr01ef93D3Pk0Y",{"id":13603,"title":13604,"authors":13605,"body":13606,"cta":3,"date":13861,"description":13862,"extension":256,"image":13863,"lastUpdated":3,"meta":13864,"navigation":263,"path":13869,"seo":13870,"sitemap":13871,"stem":13872,"subtitle":13873,"tags":13874,"tldr":3,"video":3,"__hash__":13875},"blog\u002Fblog\u002F2023\u002F07\u002Fflowforge-1-9-release.md","FlowFuse now offers API Documentation with Swagger UI",[12645],{"type":12,"value":13607,"toc":13847},[13608,13611,13615,13618,13632,13641,13644,13647,13656,13659,13661,13709,13711,13769,13771,13773,13791,13793,13795,13817,13819,13821,13825,13827,13829,13834,13838,13840],[15,13609,13610],{},"FlowFuse 1.9 adds new features to make it easier to administer FlowFuse platform deployments, including new API documentation and the ability to create customized Node-RED palettes.",[19,13612,13614],{"id":13613},"api-documentation","API Documentation",[15,13616,13617],{},"FlowFuse API allows developers to programmatically interact with the FlowFuse platform. This makes it possible to integrate FlowFuse into different infrastructure technologies, create scripts to automate specific FlowFuse tasks and embed FlowFuse into other applications.",[15,13619,13620,13621,13625,13626,13631],{},"In the 1.9 release we are now publishing our ",[43,13622,13624],{"href":13623},"\u002Fdocs\u002Fapi\u002F","API documentation"," using the ",[43,13627,13630],{"href":13628,"rel":13629},"https:\u002F\u002Fswagger.io\u002Fspecification\u002F",[47],"OpenAPI specification"," and making it viewable with the Swagger UI. Both these industrial standards will make using the FlowFuse API easier to use and understand.",[19,13633,13635,13636],{"id":13634},"customize-node-red-palettes-2002","Customize Node-RED Palettes  ",[43,13637,13640],{"href":13638,"rel":13639},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F2002",[47],"#2002",[15,13642,13643],{},"FlowFuse platform adminstrators are now able to create customized Node-RED palettes that will be used when a Node-RED instance is created. An adminstator can create pre-defined templates to specify the nodes that should be included in the palette. This makes it easier for FlowFuse teams to standardized on Node-RED usage across an organization.",[15,13645,13646],{},"Note: this feature is not available for FlowFuse cloud users since they do not have administrator access.",[19,13648,13650,13651],{"id":13649},"new-rbac-role-for-dashboard-users-2292","New RBAC Role for Dashboard users ",[43,13652,13655],{"href":13653,"rel":13654},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F1924",[47],"#2292",[15,13657,13658],{},"A new FlowFuse user role has been created to view Node-RED dashboards. This allows for users to view Nod-RED dashboards without access to the Node-RED editor or requiring separate login credentials.",[19,13660,12710],{"id":12709},[150,13662,13663,13669,13677,13685,13693,13701],{},[153,13664,13665,13666],{},"FlowFuse device agent is now supported on Windows ",[43,13667,13509],{"href":13507,"rel":13668},[47],[153,13670,13671,13672],{},"Allow local configuration of https\u002FhttpStatic on a device ",[43,13673,13676],{"href":13674,"rel":13675},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fdevice-agent\u002Fissues\u002F110",[47],"#110",[153,13678,13679,13680],{},"Implementing custom certificate settings for device configuration ",[43,13681,13684],{"href":13682,"rel":13683},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F2257",[47],"#2257",[153,13686,13687,13688],{},"Allow devices to access the \"Snapshot ID\" and the \"Snapshot Name\" running on them ",[43,13689,13692],{"href":13690,"rel":13691},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fdevice-agent\u002Fissues\u002F94",[47],"#94",[153,13694,13695,13696],{},"High Availability logging enhanced: Individual Node-RED Instance replica querying and filtering ",[43,13697,13700],{"href":13698,"rel":13699},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F2260",[47],"#2260",[153,13702,13703,13704],{},"High Availability is now generally available ",[43,13705,13708],{"href":13706,"rel":13707},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F2412",[47],"#2414",[19,13710,12748],{"id":12747},[150,13712,13713,13721,13729,13737,13745,13753,13761],{},[153,13714,13715,13716],{},"Can not promote NR instance in DevOps Pipeline  ",[43,13717,13720],{"href":13718,"rel":13719},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F2363",[47],"#2363",[153,13722,13723,13724],{},"Billing team menu item missing on first page load ",[43,13725,13728],{"href":13726,"rel":13727},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F2398",[47],"#2398",[153,13730,13731,13732],{},"Duplicate labels in Instance Import dialog ",[43,13733,13736],{"href":13734,"rel":13735},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F2200",[47],"#2200",[153,13738,13739,13740],{},"Broken littie animations ",[43,13741,13744],{"href":13742,"rel":13743},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F2354",[47],"#2354",[153,13746,13747,13748],{},"Instance Logs page doesn't handle errors well ",[43,13749,13752],{"href":13750,"rel":13751},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F1083",[47],"#1083",[153,13754,13755,13756],{},"Device continues to run edited flows once taken out of dev mode ",[43,13757,13760],{"href":13758,"rel":13759},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F2323",[47],"#2323",[153,13762,13763,13764],{},"Device Editor cannot pickup FF theme ",[43,13765,13768],{"href":13766,"rel":13767},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fdevice-agent\u002Fissues\u002F89",[47],"#89",[19,13770,6323],{"id":6322},[15,13772,13169],{},[150,13774,13775,13783],{},[153,13776,13777,13778],{},"sumitshinde-84 - make Instance and application names in delete popup easily selectable ",[43,13779,13782],{"href":13780,"rel":13781},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fpull\u002F2291",[47],"#2291",[153,13784,13785,13786],{},"biancode - Fixed typo in doc  ",[43,13787,13790],{"href":13788,"rel":13789},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fpull\u002F2327",[47],"#2327",[19,13792,5997],{"id":2321},[15,13794,6000],{},[150,13796,13797,13803,13810],{},[153,13798,13799,6008,13801,6012],{},[35,13800,6007],{},[43,13802,6011],{"href":182},[153,13804,13805,6018,13807,6024],{},[35,13806,6017],{},[43,13808,6023],{"href":6021,"rel":13809},[47],[153,13811,13812,6030,13814,190],{},[35,13813,6029],{},[43,13815,1563],{"href":1561,"rel":13816},[47],[15,13818,3202],{},[19,13820,5350],{"id":5349},[15,13822,6040,13823,190],{},[43,13824,5832],{"href":5831},[15,13826,6045],{},[19,13828,4818],{"id":4817},[15,13830,6050,13831,13833],{},[4823,13832],{"value":4825},") is already running 1.9.",[15,13835,5553,13836,190],{},[43,13837,4833],{"href":4832},[19,13839,4844],{"id":4843},[15,13841,4847,13842,13251,13844,4857],{},[43,13843,4536],{"href":4850},[43,13845,4856],{"href":4854,"rel":13846},[47],{"title":77,"searchDepth":227,"depth":227,"links":13848},[13849,13850,13852,13854,13855,13856,13857,13858,13859,13860],{"id":13613,"depth":230,"text":13614},{"id":13634,"depth":230,"text":13851},"Customize Node-RED Palettes  #2002",{"id":13649,"depth":230,"text":13853},"New RBAC Role for Dashboard users #2292",{"id":12709,"depth":230,"text":12710},{"id":12747,"depth":230,"text":12748},{"id":6322,"depth":230,"text":6323},{"id":2321,"depth":230,"text":5997},{"id":5349,"depth":230,"text":5350},{"id":4817,"depth":230,"text":4818},{"id":4843,"depth":230,"text":4844},"2023-07-06","The new release of FlowFuse 1.9 adds new API Swagger documentation and the ability to customize Node-RED pallettes.","\u002Fblog\u002F2023\u002F07\u002Fimages\u002Frelease-1.9.0.png",{"excerpt":13865},{"type":12,"value":13866},[13867],[15,13868,13610],{},"\u002Fblog\u002F2023\u002F07\u002Fflowforge-1-9-release",{"title":13604,"description":13862},{"loc":13869},"blog\u002F2023\u002F07\u002Fflowforge-1-9-release","FlowFuse 1.9 adds new features to make it easier to administer FlowFuse",[4886,270,272],"p-3_s0Ck6lDIfQ-wUClbm7q5SMxPtLxy74p-eK67R4s",{"id":13877,"title":13878,"authors":13879,"body":13880,"cta":3,"date":14120,"description":14121,"extension":256,"image":14122,"lastUpdated":3,"meta":14123,"navigation":263,"path":14128,"seo":14129,"sitemap":14130,"stem":14131,"subtitle":14132,"tags":14133,"tldr":3,"video":3,"__hash__":14134},"blog\u002Fblog\u002F2023\u002F06\u002Fflowforge-1-8-released.md","FlowFuse now offers High Availability Node-RED",[9286],{"type":12,"value":13881,"toc":14106},[13882,13885,13889,13895,13902,13910,13914,13917,13920,13928,13931,13935,13943,13946,13952,13956,13973,13977,13981,13984,13986,13988,14010,14012,14014,14022,14030,14038,14046,14054,14062,14070,14078,14080,14084,14086,14088,14093,14097,14099],[15,13883,13884],{},"FlowFuse 1.8 introduces two key features that allow organizations to reliably deploy Node-RED applications into production. In 1.8, it is now possible to run Node-RED applications with high availability so the application is more scalable and more fault tolerant. FlowFuse 1.8 also introduces software deliver pipelines, so development teams can now set up dev\u002Ftest\u002Fproduction environments for their Node-RED applications.",[19,13886,13888],{"id":13887},"more-reliable-and-scalable-node-red-applications","More reliable and scalable Node-RED applications",[15,13890,13891,13892,190],{},"FlowFuse now makes it possible to deploy business critical applications built in Node-RED that are reliable and scalable. The new 1.8 features allows a Node-RED instance to be deployed in high availability mode, meaning two instances of the same Node-RED flows are available behind a load balancer. This allows for increased traffic to be automatically distributed across the two Node-RED instances. This means your Node-RED applications can handle more traffic and experience less downtime. For more details, please see our ",[43,13893,4536],{"href":13894},"\u002Fdocs\u002Fuser\u002Fhigh-availability",[15,13896,13897,13898,190],{},"Additionally, we're pleased to offer a 30-day premium trial license for self-managed installs on Kubernetes. To avail of this offer, book a demo at ",[43,13899,13901],{"href":13900},"\u002Fbook-demo","flowforge.com\u002Fbook-demo",[15,13903,13904,13905,13909],{},"High Availability is our first ",[43,13906,13908],{"href":13907},"\u002Fhandbook\u002Fengineering\u002Fproduct\u002Fversioning\u002F#preview-features","preview feature",", and your feedback is crucial. We encourage you to try out HA in your Node-RED instances and share your experiences with us. Your feedback will help us refine this feature and make it even better.",[1022,13911],{"videoid":13912,"params":1025,"style":13913,"title":1027},"mbDkjKhVwIw","width: 704px; height: 100%;",[19,13915,4953],{"id":13916},"devops-pipelines",[15,13918,13919],{},"FlowFuse 1.8 introduces the concept of Pipelines to better organize your Node-RED development. Development team can now set up different staging environments for different steps in the development cycle, ex. test, development and production. Node-RED instances can be pushed along a pipeline as they move along the development process. This allows for a better organized and predictable development process for your team.",[15,13921,13922,13923,13927],{},"The new Pipelines feature builds upon the Staged Development support that we introduced in",[43,13924,13926],{"href":13925},"\u002Fblog\u002F02\u002Fflowforge-1-4-0-released","FlowFuse Version 1.4",". We highly recommend that development teams avoid developing their flows directly in production instances. This approach fosters a more reliable and robust development process, reducing the risks associated with production environment modifications. Instead, start your development in a dedicated development or test instance and then deploy your Node-RED instance to production once they have been thoroughly tested and reviewed.",[1022,13929],{"videoid":13930,"params":1025,"style":13913,"title":1027},"Pbql22f3vqY",[19,13932,13934],{"id":13933},"user-interface-for-device-agent","User interface for Device Agent",[15,13936,13937,13938,13942],{},"In our previous release, we introduced ",[43,13939,13941],{"href":13940},"\u002Fblog\u002F05\u002Fflowforge-1-7-released","Editor Access for Devices",". Now, the FlowFuse Device Agent now comes with its very own User Interface (UI) for configuration.",[15,13944,13945],{},"Imagine this: Your industrial equipment arrives with the Device Agent preinstalled. In the past, you might have faced challenges in configuring and connecting your device with FlowFuse, particularly if you had no direct shell access. But not any more.",[15,13947,13948,13949,190],{},"With the newly introduced UI, you can easily set up and connect your device with FlowFuse without needing to access the command line interface directly. This simplifies the process significantly and saves you time. For more details, see our ",[43,13950,4536],{"href":13951},"\u002Fdocs\u002Fdevice-agent\u002Fintroduction\u002F",[19,13953,13955],{"id":13954},"node-red-31-beta-3-available","Node-RED 3.1 Beta 3 Available",[15,13957,13958,13959,13964,13965,3884,13969,190],{},"FlowFuse Cloud is a great place to try out the new Node-RED features, with FlowFuse Cloud now including the ",[43,13960,13963],{"href":13961,"rel":13962},"https:\u002F\u002Fdiscourse.nodered.org\u002Ft\u002Fnode-red-3-1-0-beta-3-released\u002F78716",[47],"Node-RED 3.1.0-beta.3",". If you want to try this version you can ",[43,13966,13968],{"href":13967},"\u002Fdocs\u002Fuser\u002Finstance-settings\u002F","duplicate your instance",[43,13970,13972],{"href":13971},"\u002Fdocs\u002Fuser\u002Fchangestack\u002F","upgrade your stack",[19,13974,13976],{"id":13975},"ongoing-topics","Ongoing Topics",[27,13978,13980],{"id":13979},"soc2-certification","SOC2 Certification",[15,13982,13983],{},"We're making great strides on our journey towards SOC2 certification, striving to meet the highest industry standards for security and privacy. While we're not quite ready to disclose specific milestones, be assured that everything is progressing smoothly. As we continue working diligently towards our target, we promise to keep you informed every step of the way. Our unwavering commitment to deliver secure and private services to our customers and partners remains our foremost priority. Stay tuned for more updates!",[19,13985,5997],{"id":2321},[15,13987,6000],{},[150,13989,13990,13996,14003],{},[153,13991,13992,6008,13994,6012],{},[35,13993,6007],{},[43,13995,6011],{"href":182},[153,13997,13998,6018,14000,6024],{},[35,13999,6017],{},[43,14001,6023],{"href":6021,"rel":14002},[47],[153,14004,14005,6030,14007,190],{},[35,14006,6029],{},[43,14008,1563],{"href":1561,"rel":14009},[47],[15,14011,3202],{},[19,14013,12748],{"id":12747},[15,14015,14016,14017],{},"When editing a device in developer mode via the tunnel\u002Fproxy connection, a list of team projects are not presented in the \"Target\" field of the project-link nodes. ",[43,14018,14021],{"href":14019,"rel":14020},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F2228",[47],"#2228",[15,14023,14024,14025],{},"If a user invites an external user to their team with an sso-enable email domain, when that user registers and logs in, they are not added to the team they were invited to and must be re-invited. ",[43,14026,14029],{"href":14027,"rel":14028},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F2232",[47],"#2232",[15,14031,14032,14033],{},"No warning given if tying to start device editor when NR is not running ",[43,14034,14037],{"href":14035,"rel":14036},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F2233",[47],"#2233",[15,14039,14040,14041],{},"Stuck on the form Create a new Application & Instance after using an already known instance name ",[43,14042,14045],{"href":14043,"rel":14044},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F2221",[47],"#2221",[15,14047,14048,14049],{},"If the device agent finds itself in Developer mode, it stops pulling snapshots from the platform ",[43,14050,14053],{"href":14051,"rel":14052},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fdevice-agent\u002Fissues\u002F97",[47],"#97",[15,14055,14056,14057],{},"Accessing the Admin Settings General page resets the Platform Statstics token ",[43,14058,14061],{"href":14059,"rel":14060},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F2140",[47],"#2140",[15,14063,14064,14065],{},"Selection of Team and Instance in nr-tools-plugin not possible ",[43,14066,14069],{"href":14067,"rel":14068},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fnr-tools-plugin\u002Fissues\u002F15",[47],"#15",[15,14071,14072,14073],{},"HOME env var not set within Node-RED process ",[43,14074,14077],{"href":14075,"rel":14076},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowforge-nr-launcher\u002Fissues\u002F117",[47],"#117",[19,14079,5350],{"id":5349},[15,14081,6040,14082,190],{},[43,14083,5832],{"href":5831},[15,14085,6045],{},[19,14087,4818],{"id":4817},[15,14089,6050,14090,14092],{},[4823,14091],{"value":4825},") is already running 1.8.",[15,14094,5553,14095,190],{},[43,14096,4833],{"href":4832},[19,14098,4844],{"id":4843},[15,14100,4847,14101,13251,14103,4857],{},[43,14102,4536],{"href":4850},[43,14104,4856],{"href":4854,"rel":14105},[47],{"title":77,"searchDepth":227,"depth":227,"links":14107},[14108,14109,14110,14111,14112,14115,14116,14117,14118,14119],{"id":13887,"depth":230,"text":13888},{"id":13916,"depth":230,"text":4953},{"id":13933,"depth":230,"text":13934},{"id":13954,"depth":230,"text":13955},{"id":13975,"depth":230,"text":13976,"children":14113},[14114],{"id":13979,"depth":233,"text":13980},{"id":2321,"depth":230,"text":5997},{"id":12747,"depth":230,"text":12748},{"id":5349,"depth":230,"text":5350},{"id":4817,"depth":230,"text":4818},{"id":4843,"depth":230,"text":4844},"2023-06-08","FlowFuse now supports High Availibility, DevOps Pipelines and more","\u002Fblog\u002F2023\u002F06\u002Fimages\u002Frelease-1.8.0.png",{"excerpt":14124},{"type":12,"value":14125},[14126],[15,14127,13884],{},"\u002Fblog\u002F2023\u002F06\u002Fflowforge-1-8-released",{"title":13878,"description":14121},{"loc":14128},"blog\u002F2023\u002F06\u002Fflowforge-1-8-released","FlowFuse 1.8 makes Node-RED applications more reliable and scalable, plus more streamline deployment pipelines.",[4886,270,272],"hveNIGn6JE5D_xm5sEZCjO9QPAzyfnC7zYqXeDOKvpM",{"id":14136,"title":14137,"authors":14138,"body":14139,"cta":3,"date":14429,"description":14430,"extension":256,"image":14431,"lastUpdated":3,"meta":14432,"navigation":263,"path":14437,"seo":14438,"sitemap":14439,"stem":14440,"subtitle":14147,"tags":14441,"tldr":3,"video":3,"__hash__":14442},"blog\u002Fblog\u002F2023\u002F05\u002Fflowforge-1-7-released.md","FlowFuse 1.7 Now Available with Remote Node-RED Editor Access",[9286],{"type":12,"value":14140,"toc":14413},[14141,14144,14148,14151,14159,14162,14166,14169,14172,14176,14179,14181,14184,14187,14189,14192,14196,14199,14202,14206,14209,14241,14248,14250,14252,14273,14275,14277,14285,14293,14301,14308,14316,14324,14332,14340,14342,14346,14348,14350,14355,14359,14361,14366,14375,14383,14391,14403,14410],[15,14142,14143],{},"FlowFuse 1.7 adds new support for accessing the Node-RED Editor on Devices via FlowFuse.",[19,14145,14147],{"id":14146},"further-improving-fleet-management-and-maintenance-of-remote-node-red-instances","Further improving fleet management and maintenance of remote Node-RED instances",[15,14149,14150],{},"We are excited to introduce a new feature that will simplify the process of debugging and developing flows for devices. Our latest feature, \"Editing Flows on Devices\" allows users to access the editor directly on their device without the need for complex network configurations or firewalls. This feature will significantly improve the user experience, making it easier and more efficient to work with devices.",[15,14152,14153,14154,14158],{},"This update is a part of our ongoing commitment to making FlowFuse the best possible solution for developing your Node-RED flows, no matter where they're running. In fact, as part of our last release 1.6, we already introduced the feature: ",[43,14155,14157],{"href":14156},"\u002Fblog\u002F04\u002Fflowforge-1-6-released#access-node-red-logs-from-remote-devices","\"Access Node-RED logs from remote devices\"",". This feature made it easy for users to troubleshoot and debug. Building on that, we've taken the next step, and it's now possible to access the Device Editor.",[1022,14160],{"videoid":14161,"params":1025,"style":13913,"title":1027},"zS6P3RR86vE",[19,14163,14165],{"id":14164},"device-status-visualisation","Device Status Visualisation",[15,14167,14168],{},"This FlowFuse version upgrades device monitoring. It's made easier to manage your devices effectively, especially when there's many of them. Now we offer an intuitive, user-friendly method for users to keep an eye on their devices' status and evaluate the health of their team's devices overall. Creating an overview of your fleet's health, however large your fleet might be.",[1022,14170],{"videoid":14171,"params":1025,"style":13913,"title":1027},"S--viuPhrS8",[19,14173,14175],{"id":14174},"auto-restart-for-hung-node-red-instances","Auto Restart for Hung Node-RED Instances",[15,14177,14178],{},"This enhancement ensures a more robust and reliable experience when working with Node-RED flows. The launcher now actively monitors the Node-RED process to detect if it has become unresponsive or hung, in addition to the existing checks for start-up and unexpected process exits. This advancement takes us one step further in improving the availability of our Node-RED instances.",[19,14180,13976],{"id":13975},[27,14182,9316],{"id":14183},"high-availability",[15,14185,14186],{},"We're actively progressing on the topic of enhancing High Availability in FlowFuse for Node-RED. Our initial tasks and modifications have been identified, specifically pertaining to the operation of Node-RED instances within the k8s environment. These adjustments are aimed at constructing a more resilient system. Stay tuned for a comprehensive update regarding our advancements in High Availability.",[27,14188,13980],{"id":13979},[15,14190,14191],{},"Dedicated to upholding the highest levels of security and privacy, our company acknowledges the significance of industry-standard certifications like SOC2 in fostering trust with our customers and partners. We aim to achieve SOC2 Type 1 certification by the end of Q2 and subsequently maintain a continuous SOC2 Type 2 certification. We will keep you informed on our progress as we reach essential milestones in our SOC2 certification journey. Rest assured, our commitment to delivering the utmost security and privacy for our customers and partners remains unwavering.",[27,14193,14195],{"id":14194},"aws-marketplace-onboarding","AWS Marketplace onboarding",[15,14197,14198],{},"We are excited to provide an update on our ongoing task of onboarding Node-RED instances to AWS Marketplace via FlowFuse Cloud, which we have started in this Iteration. By offering Node-RED instances through AWS Marketplace, we aim to simplify the deployment process for our customers.",[15,14200,14201],{},"One of the significant challenges we are currently addressing is handling our current payment system in parallel with a new method. This will ensure a seamless billing experience for our customers, as they will be able to manage their Node-RED instance subscriptions through their existing AWS accounts.",[19,14203,14205],{"id":14204},"contributors","Contributors",[15,14207,14208],{},"We'd like the thank the following for their contributions to this release:",[150,14210,14211,14229],{},[153,14212,14213,14218,14219,3884,14224],{},[43,14214,14217],{"href":14215,"rel":14216},"https:\u002F\u002Fgithub.com\u002Fandreikop",[47],"@andreikop"," for their work on the ",[43,14220,14223],{"href":14221,"rel":14222},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowforge-driver-k8s\u002Fpull\u002F80",[47],"flowforge-driver-k8s #80",[43,14225,14228],{"href":14226,"rel":14227},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fhelm\u002Fpull\u002F125",[47],"flowforge\u002Fhelm #125",[153,14230,14231,14235,14236],{},[43,14232,14234],{"href":13189,"rel":14233},[47],"@elenaviter"," for their work on ",[43,14237,14240],{"href":14238,"rel":14239},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fhelm\u002Fpull\u002F126",[47],"flowforge\u002Fhelm #126",[15,14242,14243,14244,190],{},"As an open-source project, we welcome community involvement in what we're building. If you're interested in contributing, checkout our ",[43,14245,14247],{"href":14246},"\u002Fdocs\u002Fcontribute\u002F","guide in the docs",[19,14249,5997],{"id":2321},[15,14251,6000],{},[150,14253,14254,14259,14266],{},[153,14255,14256,14258],{},[35,14257,6007],{},": Check out our [Product Roadmap Page\u002Fchangelog\u002F) to see what we're planning for future updates.",[153,14260,14261,6018,14263,6024],{},[35,14262,6017],{},[43,14264,6023],{"href":6021,"rel":14265},[47],[153,14267,14268,6030,14270,190],{},[35,14269,6029],{},[43,14271,1563],{"href":1561,"rel":14272},[47],[15,14274,3202],{},[19,14276,12748],{"id":12747},[15,14278,14279,14280],{},"Incorrect number of days displayed when adding a new license ",[43,14281,14284],{"href":14282,"rel":14283},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F1895",[47],"#1895",[15,14286,14287,14288],{},"Users were unable to upgrade modules in Manage Palette, even after restarting Node-RED. ",[43,14289,14292],{"href":14290,"rel":14291},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F2005",[47],"#2005",[15,14294,14295,14296],{},"Enable 'Delete Team' Button ",[43,14297,14300],{"href":14298,"rel":14299},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F2031",[47],"#2031",[15,14302,14303,14304],{},"Triggering a Node-RED restart using the action button resulted in two instances of Node-RED running in the container, causing one instance to crash due to port 1880 being already in use. ",[43,14305,14300],{"href":14306,"rel":14307},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F1860",[47],[15,14309,14310,14311],{},"Error deleting instance with missing subscription ",[43,14312,14315],{"href":14313,"rel":14314},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F2080",[47],"#2080",[15,14317,14318,14319],{},"Snapshot Rollback no longer working ",[43,14320,14323],{"href":14321,"rel":14322},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F2026",[47],"#2026",[15,14325,14326,14327],{},"Users receiving an unauthorized error when attempting to switch to a team in which they are a member ",[43,14328,14331],{"href":14329,"rel":14330},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F1845",[47],"#1845",[15,14333,14334,14335],{},"Cannot select \"Member\" option when inviting a team member ",[43,14336,14339],{"href":14337,"rel":14338},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F2084",[47],"#2084",[19,14341,5350],{"id":5349},[15,14343,6040,14344,190],{},[43,14345,5832],{"href":5831},[15,14347,6045],{},[19,14349,4818],{"id":4817},[15,14351,6050,14352,14354],{},[4823,14353],{"value":4825},") is already running 1.7.",[15,14356,5553,14357,190],{},[43,14358,4833],{"href":4832},[19,14360,4844],{"id":4843},[15,14362,4847,14363,14365],{},[43,14364,4536],{"href":4850}," as the answers to many questions are covered there.",[15,14367,14368,14369,14374],{},"If you hit any problems with the platform please raise an ",[43,14370,14373],{"href":14371,"rel":14372},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues",[47],"issue on GitHub",".\nThat's also a great place to send us any feedback or feature requests.",[15,14376,14377,14378],{},"You can also get help on ",[43,14379,14382],{"href":14380,"rel":14381},"https:\u002F\u002Fdiscourse.nodered.org\u002F",[47],"the Node-RED forums",[15,14384,14385,14386],{},"As well as in the ",[43,14387,14390],{"href":14388,"rel":14389},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fdiscussions",[47],"forum within our Github project",[15,14392,14393,14394,14397,14398],{},"Chat with us on the ",[380,14395,14396],{},"#flowfuse"," channel on the ",[43,14399,14402],{"href":14400,"rel":14401},"https:\u002F\u002Fnodered.org\u002Fslack",[47],"Node-RED Slack workspace",[15,14404,14405,14406],{},"You can raise a support ticket by emailing ",[43,14407,14409],{"href":14408},"mailto:support@flowfuse.com","support@flowfuse.com",[15,14411,14412],{},"We've also added a live chat widget to our website, you can access it using the icon on the bottom right corner of our website. We'd love to hear from you.",{"title":77,"searchDepth":227,"depth":227,"links":14414},[14415,14416,14417,14418,14423,14424,14425,14426,14427,14428],{"id":14146,"depth":230,"text":14147},{"id":14164,"depth":230,"text":14165},{"id":14174,"depth":230,"text":14175},{"id":13975,"depth":230,"text":13976,"children":14419},[14420,14421,14422],{"id":14183,"depth":233,"text":9316},{"id":13979,"depth":233,"text":13980},{"id":14194,"depth":233,"text":14195},{"id":14204,"depth":230,"text":14205},{"id":2321,"depth":230,"text":5997},{"id":12747,"depth":230,"text":12748},{"id":5349,"depth":230,"text":5350},{"id":4817,"depth":230,"text":4818},{"id":4843,"depth":230,"text":4844},"2023-05-11","FlowFuse now supports access to the Node-RED Editor on devices","\u002Fblog\u002F2023\u002F05\u002Fimages\u002Frelease-1.7.0.png",{"excerpt":14433},{"type":12,"value":14434},[14435],[15,14436,14143],{},"\u002Fblog\u002F2023\u002F05\u002Fflowforge-1-7-released",{"title":14137,"description":14430},{"loc":14437},"blog\u002F2023\u002F05\u002Fflowforge-1-7-released",[4886,270,272],"YSS8jVGwwZTedYomL0KkdLEeAq-pG6n1hKj1I-jH_6w",{"id":14444,"title":14445,"authors":14446,"body":14447,"cta":3,"date":14624,"description":14625,"extension":256,"image":14626,"lastUpdated":3,"meta":14627,"navigation":263,"path":14632,"seo":14633,"sitemap":14634,"stem":14635,"subtitle":14625,"tags":14636,"tldr":3,"video":3,"__hash__":14637},"blog\u002Fblog\u002F2023\u002F04\u002Fflowforge-1-6-released.md","FlowFuse v1.6 Now Available",[12645],{"type":12,"value":14448,"toc":14615},[14449,14452,14456,14459,14462,14466,14469,14472,14476,14484,14492,14500,14508,14514,14522,14530,14532,14540,14548,14554,14562,14564,14568,14570,14572,14577,14581,14583,14587,14592,14597,14602,14609,14613],[15,14450,14451],{},"The new FlowFuse 1.6 adds new support for multi-instance Node-RED within a single application and support for logging from remote devices.",[19,14453,14455],{"id":14454},"flowfuse-applications-can-now-support-multi-instance-node-red","FlowFuse Applications Can Now Support Multi-Instance Node-RED",[15,14457,14458],{},"FlowFuse 1.6 expands the scope of applications to now allow for multiple instances of Node-RED. For complex Node-RED applications, it is common to have different flows interacting with other flows or flows deployed to different target environments. The ability to associate all these different flows with a single application makes it easier for the development, test and deployment of these types of complex applications.",[1022,14460],{"videoid":14461,"params":1025,"style":13913,"title":1027},"OHChdWeRI9Q",[19,14463,14465],{"id":14464},"access-node-red-logs-from-remote-devices","Access Node-RED logs from remote devices",[15,14467,14468],{},"FlowFuse makes it easy to deploy Node-RED out to remote devices. However, once Node-RED has been deployed to the remote device it is often difficult to troubleshoot or debug. Now with FlowFuse 1.6, you can get access to the Node-RED logs from remote devices. This makes it much easier to understand and debug the behavior of a remote device.",[1022,14470],{"videoid":14471,"params":1025,"style":13913,"title":1027},"yW1zxwiCmto",[19,14473,14475],{"id":14474},"other-improvements","Other Improvements",[15,14477,14478,14479],{},"Update email address verification  ",[43,14480,14483],{"href":14481,"rel":14482},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F813",[47],"#813",[15,14485,14486,14487],{},"Reminder email about trial doesn't include a link to FF Cloud ",[43,14488,14491],{"href":14489,"rel":14490},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F1815",[47],"#1815",[15,14493,14494,14495],{},"Sign-up coupons improvement ",[43,14496,14499],{"href":14497,"rel":14498},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F1788",[47],"#1788",[15,14501,14502,14503],{},"New FF_Instance_* envvars inline with new terminology ",[43,14504,14507],{"href":14505,"rel":14506},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F1844",[47],"#1844",[15,14509,14510,14511],{},"Deprecate FF_PROJECT_* envvars ",[43,14512,14507],{"href":14505,"rel":14513},[47],[15,14515,14516,14517],{},"Integrate with PostHog events ",[43,14518,14521],{"href":14519,"rel":14520},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fpull\u002F1922",[47],"#1922",[15,14523,14524,14525],{},"Introduce search bar to docs\u002Fhandbook  ",[43,14526,14529],{"href":14527,"rel":14528},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fwebsite\u002Fpull\u002F620",[47],"#620",[19,14531,12748],{"id":12747},[15,14533,14534,14535],{},"Deleting instances from the instance list fails ",[43,14536,14539],{"href":14537,"rel":14538},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F1859",[47],"#1859",[15,14541,14542,14543],{},"Removing old projects with missing subscriptions fails ",[43,14544,14547],{"href":14545,"rel":14546},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F1837",[47],"#1837",[15,14549,14550,14551],{},"Changing to a team as a member shows unauthorized error ",[43,14552,14331],{"href":14329,"rel":14553},[47],[15,14555,14556,14557],{},"Application Overview: “Open Editor” shouldn’t show (or should be disabled) if in “Starting” state ",[43,14558,14561],{"href":14559,"rel":14560},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F1931",[47],"#1931",[19,14563,5350],{"id":5349},[15,14565,6040,14566,190],{},[43,14567,5832],{"href":5831},[15,14569,6045],{},[19,14571,4818],{"id":4817},[15,14573,6050,14574,14576],{},[4823,14575],{"value":4825},") is already running 1.6.",[15,14578,5553,14579,190],{},[43,14580,4833],{"href":4832},[19,14582,4844],{"id":4843},[15,14584,4847,14585,14365],{},[43,14586,4536],{"href":4850},[15,14588,14368,14589,14374],{},[43,14590,14373],{"href":14371,"rel":14591},[47],[15,14593,14377,14594],{},[43,14595,14382],{"href":14380,"rel":14596},[47],[15,14598,14385,14599],{},[43,14600,14390],{"href":14388,"rel":14601},[47],[15,14603,14393,14604,14397,14606],{},[380,14605,14396],{},[43,14607,14402],{"href":14400,"rel":14608},[47],[15,14610,14405,14611],{},[43,14612,14409],{"href":14408},[15,14614,14412],{},{"title":77,"searchDepth":227,"depth":227,"links":14616},[14617,14618,14619,14620,14621,14622,14623],{"id":14454,"depth":230,"text":14455},{"id":14464,"depth":230,"text":14465},{"id":14474,"depth":230,"text":14475},{"id":12747,"depth":230,"text":12748},{"id":5349,"depth":230,"text":5350},{"id":4817,"depth":230,"text":4818},{"id":4843,"depth":230,"text":4844},"2023-04-13","FlowFuse Now Supports Multi-Instance Node-RED for Complex Application Development","\u002Fblog\u002F2023\u002F04\u002Fimages\u002Frelease-1.6.0.png",{"excerpt":14628},{"type":12,"value":14629},[14630],[15,14631,14451],{},"\u002Fblog\u002F2023\u002F04\u002Fflowforge-1-6-released",{"title":14445,"description":14625},{"loc":14632},"blog\u002F2023\u002F04\u002Fflowforge-1-6-released",[4886,270,272],"JRodnoGfys1EnvLDtJO9NbMn1z40dFoSHjNK31Efo_g",{"id":14639,"title":14640,"authors":14641,"body":14642,"cta":3,"date":14876,"description":14646,"extension":256,"image":14877,"lastUpdated":3,"meta":14878,"navigation":263,"path":14883,"seo":14884,"sitemap":14885,"stem":14886,"subtitle":14887,"tags":14888,"tldr":3,"video":3,"__hash__":14889},"blog\u002Fblog\u002F2023\u002F03\u002Fflowforge-1-5-0-released.md","FlowFuse v1.5 Now Available",[3633],{"type":12,"value":14643,"toc":14865},[14644,14647,14655,14668,14676,14680,14683,14686,14692,14695,14699,14702,14705,14711,14714,14717,14723,14727,14730,14737,14743,14747,14761,14763,14792,14794,14812,14814,14818,14820,14822,14827,14831,14833,14837,14842,14847,14852,14859,14863],[15,14645,14646],{},"For FlowFuse 1.5 we have been busy making a lot of UX changes and upgrading our underlying architecture to enable future innovations on the FlowFuse platform.",[15,14648,14649,14650,14654],{},"With our recently announced ",[43,14651,14653],{"href":14652},"\u002Fblog\u002F2023\u002F03\u002Fterminology-changes\u002F","Terminology Changes",", we have introduced some new concepts into FlowFuse.",[150,14656,14657,14663],{},[153,14658,14659,14662],{},[35,14660,14661],{},"Application",": A group of Node-RED Instances Each instance can run locally (in FlowFuse) or remotely (on Devices)",[153,14664,14665,14667],{},[35,14666,4132],{},": We renamed \"Projects\" to \"Instances\" to be more inline with the terminology used in the Node-RED community",[15,14669,14670,14671,190],{},"As such, our User Experience has been updated to reflect these changes, and allow for further functionality to be introduced with our plans for ",[43,14672,14675],{"href":14673,"rel":14674},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F1689",[47],"Multiple Instances per Application",[27,14677,14679],{"id":14678},"applications-view","\"Applications\" View",[15,14681,14682],{},"At the top-level in FlowFuse, you can now see a list of your \"Appications\". In FlowFuse 1.5, as we still have a 1:1 relationship of Applications to Local Instances, this will be the same as the list of \"Projects\" that you're used to seeing.",[15,14684,14685],{},"![Screenshot to show the new \"Applications\" view](.\u002Fimages\u002Fscreenshot-applications.png \"Screenshot to show the new \"Applications\" view\")",[519,14687,14689],{"className":14688},[8693,8695],[8697,14690,14691],{},"\"Applications\" view in FlowFuse, listing all available Applications",[15,14693,14694],{},"For 1.5, all of your settings, environment variables, etc. are all now at the \"Instance\" level. Applications will gain a lot more functionality in future releases.",[27,14696,14698],{"id":14697},"instances-view","\"Instances\" View",[15,14700,14701],{},"When clicking on one of your Applications, you will see a list of Node-RED instances bound to that Application.",[15,14703,14704],{},"![Screenshot to show the new \"Instances\" view](.\u002Fimages\u002Fscreenshot-instances.png \"Screenshot to show the new \"Instances\" view\")",[519,14706,14708],{"className":14707},[8693,8695],[8697,14709,14710],{},"A list of Instances contained within a single Application.",[15,14712,14713],{},"Clicking on this Instance, will open up the \"Instance\" view, this is an exact replica of the \"Project\" view you'll be used to seeing in FlowFuse, and contains all of the same functionality:",[15,14715,14716],{},"![Screenshot to show the new \"Instances\" view](.\u002Fimages\u002Fscreenshot-instance.png \"Screenshot to show the new \"Instances\" view\")",[519,14718,14720],{"className":14719},[8693,8695],[8697,14721,14722],{},"FlowFuse 1.5's \"Instance\" view. This contains all of the functionality previously found in the \"Project\" view.",[27,14724,14726],{"id":14725},"devices-managing-remote-instances","Devices & Managing Remote Instances",[15,14728,14729],{},"Devices are now bound to \"Instances\", you'll see these in the \"Devices\" view, and can be managed and deployed to in exactly the same way as before. Devices will run whatever you've selected as your \"Target Snapshot\" for this Instance.",[15,14731,14732],{},[74,14733],{"alt":14734,"src":14735,"title":14736},"\"Screenshot to show an Instance's 'Devices' view\"","\u002Fblog\u002F2023\u002F03\u002Fimages\u002Fscreenshot-devices.png","Screenshot to show an Instance's 'Devices' view",[519,14738,14740],{"className":14739},[8693,8695],[8697,14741,14742],{},"\"Devices\" view, available for a given Node-RED Instance. This lists all of the connected devices to a given instance, that will automatically update when a new Target Snapshot is set.",[19,14744,14746],{"id":14745},"node-red-31-beta-available","Node-RED 3.1 Beta Available",[15,14748,13958,14749,13964,14754,221,14759,190],{},[43,14750,14753],{"href":14751,"rel":14752},"https:\u002F\u002Fdiscourse.nodered.org\u002Ft\u002Fnode-red-3-1-0-beta-2-released\u002F76192",[47],"Node-RED 3.1.0-beta.2",[43,14755,14758],{"href":14756,"rel":14757},"https:\u002F\u002Fflowfuse.com\u002Fdocs\u002Fuser\u002Finstance-settings\u002F#copy-instance",[47],"duplicate your application",[43,14760,13972],{"href":13971},[19,14762,14475],{"id":14474},[150,14764,14765,14779],{},[153,14766,14767,14768,14773,14774,7024],{},"Update to audit logs to improve usability [",[43,14769,14772],{"href":14770,"rel":14771},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F1800",[47],"#1800","] [",[43,14775,14778],{"href":14776,"rel":14777},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F1785",[47],"#1785",[153,14780,14781,14782,14773,14787,7024],{},"Improve how licensing works with overages, for easier scaling of FlowFuse and your Node-RED Instances [",[43,14783,14786],{"href":14784,"rel":14785},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F1639",[47],"#1639",[43,14788,14791],{"href":14789,"rel":14790},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F1739",[47],"#1739",[19,14793,12748],{"id":12747},[150,14795,14796,14804],{},[153,14797,14798,14799,7024],{},"Device \"Last Seen\" status shows \"never\" even though it has previously been seen [",[43,14800,14803],{"href":14801,"rel":14802},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F1723",[47],"#1723",[153,14805,14806,14807,7024],{},"Improved Safe Mode launch for small projects [",[43,14808,14811],{"href":14809,"rel":14810},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F1579",[47],"#1579",[19,14813,5350],{"id":5349},[15,14815,6040,14816,190],{},[43,14817,5832],{"href":5831},[15,14819,6045],{},[19,14821,4818],{"id":4817},[15,14823,6050,14824,14826],{},[4823,14825],{"value":4825},") is already running 1.5.",[15,14828,5553,14829,190],{},[43,14830,4833],{"href":4832},[19,14832,4844],{"id":4843},[15,14834,4847,14835,14365],{},[43,14836,4536],{"href":4850},[15,14838,14368,14839,14374],{},[43,14840,14373],{"href":14371,"rel":14841},[47],[15,14843,14377,14844],{},[43,14845,14382],{"href":14380,"rel":14846},[47],[15,14848,14385,14849],{},[43,14850,14390],{"href":14388,"rel":14851},[47],[15,14853,14393,14854,14397,14856],{},[380,14855,14396],{},[43,14857,14402],{"href":14400,"rel":14858},[47],[15,14860,14405,14861],{},[43,14862,14409],{"href":14408},[15,14864,14412],{},{"title":77,"searchDepth":227,"depth":227,"links":14866},[14867,14868,14869,14870,14871,14872,14873,14874,14875],{"id":14678,"depth":233,"text":14679},{"id":14697,"depth":233,"text":14698},{"id":14725,"depth":233,"text":14726},{"id":14745,"depth":230,"text":14746},{"id":14474,"depth":230,"text":14475},{"id":12747,"depth":230,"text":12748},{"id":5349,"depth":230,"text":5350},{"id":4817,"depth":230,"text":4818},{"id":4843,"depth":230,"text":4844},"2023-03-16","\u002Fblog\u002F2023\u002F03\u002Fimages\u002Frelease-150.jpg",{"excerpt":14879},{"type":12,"value":14880},[14881],[15,14882,14646],{},"\u002Fblog\u002F2023\u002F03\u002Fflowforge-1-5-0-released",{"title":14640,"description":14646},{"loc":14883},"blog\u002F2023\u002F03\u002Fflowforge-1-5-0-released","Updates to UI and architecture to allow for future features and Node-RED 3.1.0 Beta Available!",[4886,270,272],"wfd6qr-oEwEiZXDHBAbZpglUAa6ciKaa1AMteUs5enM",{"id":14891,"title":14892,"authors":14893,"body":14894,"cta":3,"date":15121,"description":14898,"extension":256,"image":15122,"lastUpdated":3,"meta":15123,"navigation":263,"path":15128,"seo":15129,"sitemap":15130,"stem":15131,"subtitle":15132,"tags":15133,"tldr":3,"video":15134,"__hash__":15135},"blog\u002Fblog\u002F2023\u002F02\u002Fflowforge-1-4-0-released.md","FlowFuse v1.4 with device provisioning in bulk and staged development process",[12645],{"type":12,"value":14895,"toc":15112},[14896,14899,14902,14905,14909,14914,14922],[15,14897,14898],{},"Deploy Node-RED to many devices quickly, and allow a staged development process with the latest release of FlowFuse v1.4.",[15,14900,14901],{},"Keep reading for the details of what's in this release or you can watch our 1 minute roundup video of the new release above.",[15,14903,14904],{},"To make it easy for everyone to experience FlowFuse, we are introducing a new free 30-day trial. You can now experience the power of using FlowFuse to quickly deliver Node-RED applications in a reliable, repeatable, collaborative, and secure manner. To get your free trial simply [sign up for FlowFuse Cloud;]({% include \"sign-up-url.njk\" %}) no credit card is required!",[19,14906,14908],{"id":14907},"new-user-features","New User Features",[15,14910,14911],{},[35,14912,14913],{},"Automatic Device Provisioning",[15,14915,14916,14917],{},"Most prominently, FlowFuse 1.4 features automatic device onboarding for fleets. Simply download a FlowFuse device provisioning credential to allow quick roll-out to a whole fleet, without the need to have device specific configuration. When the agent starts, the FlowFuse agent and the Node-RED snapshot will automatically be provisioned to the device and start operations. ",[43,14918,14921],{"href":14919,"rel":14920},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F1212",[47],"Issue #1212",[774,14923,14924,14927,14932,14940],{},[1022,14925],{"videoid":14926,"params":1025,"style":13913,"title":1027},"XTVw4O4-Crg",[15,14928,14929],{},[35,14930,14931],{},"Support for Staged Development",[15,14933,14934,14935],{},"A new feature of 1.4 is the ability to setup staged deployments. This makes it possible to simply move a project between a Development > Test > Production for your Node-RED application delivery. ",[43,14936,14939],{"href":14937,"rel":14938},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F1580",[47],"Issue #1580",[774,14941,14942,14945,14949,15009,15011,15014,15036,15038,15040,15054,15059,15061,15065,15067,15069,15074,15078,15080,15084,15089,15094,15099,15106,15110],{},[1022,14943],{"videoid":14944,"params":1025,"style":13913,"title":1027},"6QOmotlrwWw",[19,14946,14948],{"id":14947},"improvements","Improvements",[150,14950,14951,14959,14967,14975,14983,14991,14999,15002],{},[153,14952,14953,14954],{},"It's now much easier to change the resources available to your Node-RED instance. With a few clicks a resource intensive workload can be processed faster by changing between small, medium, or large instance types. ",[43,14955,14958],{"href":14956,"rel":14957},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F595",[47],"#595",[153,14960,14961,14962],{},"Last release allows users to capture flows in a shared library to reuse in another flow, now it's possible to preview the stored flows. ",[43,14963,14966],{"href":14964,"rel":14965},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F1657",[47],"#1657",[153,14968,14969,14970],{},"Add a synchronous mode for the FlowFuse persisted context store, next to the asynchronous mode already available. ",[43,14971,14974],{"href":14972,"rel":14973},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowforge-nr-persistent-context\u002Fissues\u002F17",[47],"#17",[153,14976,14977,14978],{},"Add a Last Seen status for devices connecting to FlowFuse. ",[43,14979,14982],{"href":14980,"rel":14981},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F1599",[47],"#1599",[153,14984,14985,14986],{},"Added a check to ensure the team slug is unique. ",[43,14987,14990],{"href":14988,"rel":14989},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F1609",[47],"#1609",[153,14992,14993,14994],{},"Optionally set snapshot as target at creation, to quickly roll out changes to remote deployments ",[43,14995,14998],{"href":14996,"rel":14997},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F1527",[47],"#1527",[153,15000,15001],{},"Agents are more rugged when starting up if they're unable to connect to FlowFuse, and will retry to connect.",[153,15003,15004,15005,15008],{},"With FlowFuse v1.4 some changes were made under the hood to speed up the recovery\nof Node-RED instances. On terminal failures of an instance it will now be\nautomatically be redeployed with the correct flows. This uses Kubernetes features\nand is also available if you've installed through ",[43,15006,15007],{"href":224},"kubernetes",".\nTo migrate the old style of deployments to this system a restart or stack upgrade is needed.",[19,15010,12748],{"id":12747},[15,15012,15013],{},"We've fixed the following bugs in this release.",[150,15015,15016,15024,15030],{},[153,15017,15018,15019],{},"Deleting your only team, doesn't exit from the team UI. ",[43,15020,15023],{"href":15021,"rel":15022},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F1630",[47],"#1630",[153,15025,15026,15027],{},"Async Team Slug Check. ",[43,15028,14990],{"href":14988,"rel":15029},[47],[153,15031,15032,15033],{},"Improve communication of Device Last Seen and Status ",[43,15034,14982],{"href":14980,"rel":15035},[47],[19,15037,14205],{"id":14204},[15,15039,14208],{},[150,15041,15042],{},[153,15043,15044,14235,15049],{},[43,15045,15048],{"href":15046,"rel":15047},"https:\u002F\u002Fgithub.com\u002FUlisesGascon",[47],"UlisesGascon",[43,15050,15053],{"href":15051,"rel":15052},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Finstaller\u002Fpull\u002F74",[47],"#74",[15,15055,15056,15057,190],{},"As an open-source project, we welcome community involvement in what we're building.\nIf you're interested in contributing, checkout our ",[43,15058,14247],{"href":14246},[19,15060,5350],{"id":5349},[15,15062,6040,15063,190],{},[43,15064,5832],{"href":5831},[15,15066,6045],{},[19,15068,4818],{"id":4817},[15,15070,6050,15071,15073],{},[4823,15072],{"value":4825},") is already running 1.4.",[15,15075,5553,15076,190],{},[43,15077,4833],{"href":4832},[19,15079,4844],{"id":4843},[15,15081,4847,15082,14365],{},[43,15083,4536],{"href":4850},[15,15085,14368,15086,14374],{},[43,15087,14373],{"href":14371,"rel":15088},[47],[15,15090,14377,15091],{},[43,15092,14382],{"href":14380,"rel":15093},[47],[15,15095,14385,15096],{},[43,15097,14390],{"href":14388,"rel":15098},[47],[15,15100,14393,15101,14397,15103],{},[380,15102,14396],{},[43,15104,14402],{"href":14400,"rel":15105},[47],[15,15107,14405,15108],{},[43,15109,14409],{"href":14408},[15,15111,14412],{},{"title":77,"searchDepth":227,"depth":227,"links":15113},[15114,15115,15116,15117,15118,15119,15120],{"id":14907,"depth":230,"text":14908},{"id":14947,"depth":230,"text":14948},{"id":12747,"depth":230,"text":12748},{"id":14204,"depth":230,"text":14205},{"id":5349,"depth":230,"text":5350},{"id":4817,"depth":230,"text":4818},{"id":4843,"depth":230,"text":4844},"2023-02-16","\u002Fblog\u002F2023\u002F02\u002Fimages\u002Fff-r14-image.png",{"excerpt":15124},{"type":12,"value":15125},[15126],[15,15127,14898],{},"\u002Fblog\u002F2023\u002F02\u002Fflowforge-1-4-0-released",{"title":14892,"description":14898},{"loc":15128},"blog\u002F2023\u002F02\u002Fflowforge-1-4-0-released","Our second release of 2023 with some great new features to try out.",[4886,270,272],"vbg4zTmUYjQ","g8EN4rXBw-6eYNZuKlAzAuZ0bV96GlBjyOHgttv17Sk",{"id":15137,"title":15138,"authors":15139,"body":15140,"cta":3,"date":15354,"description":15138,"extension":256,"image":15355,"lastUpdated":3,"meta":15356,"navigation":263,"path":15361,"seo":15362,"sitemap":15363,"stem":15364,"subtitle":15365,"tags":15366,"tldr":3,"video":15367,"__hash__":15368},"blog\u002Fblog\u002F2023\u002F01\u002Fflowforge-1-3-0-released.md","FlowFuse 1.3 is now available, share your flows through our new team libraries and much more",[6105],{"type":12,"value":15141,"toc":15345},[15142,15145,15148,15151,15155,15172],[15,15143,15144],{},"Share your flows via team libraries, control access to your Node-RED dashboards using FlowFuse credentials, and filter your audit logs by users and actions.",[15,15146,15147],{},"We're pleased to announce version 1.3 is now available! Due to the recent holiday season, most of our team have been away from their desks but we still have some great new features to share. Keep reading for the details of what's in this release or you can watch our 1 minute roundup video of the new release above.",[15,15149,15150],{},"To make it easy for everyone to experience FlowFuse, we are introducing a new [free 30-day trial]({% include \"sign-up-url.njk\" %}). With this trial, you can experience the power of using FlowFuse to quickly deliver Node-RED applications in a reliable, repeatable, collaborative, and secure manner. To get your trial simply [sign up for a new FlowFuse team]({% include \"sign-up-url.njk\" %}).",[19,15152,15154],{"id":15153},"features","Features",[15,15156,15157,15162,15163,15165,15166,15171],{},[43,15158,15161],{"href":15159,"rel":15160},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F237",[47],"Share your flows via team libraries"," ",[348,15164],{},"\nFlowFuse has now added the ability for you to share your flows via the import and export features in Node-RED. Once you export a flow everyone else in your FlowFuse team will be able to import your work into their projects. You can see a demonstration of this new feature in ",[43,15167,15170],{"href":15168,"rel":15169},"https:\u002F\u002Fyoutu.be\u002FB7XK3TUklUU",[47],"the video"," below.",[774,15173,15174,15177,15191],{},[1022,15175],{"videoid":15176,"params":1025,"style":13913,"title":1027},"B7XK3TUklUU",[15,15178,15179,15162,15184,15186,15187,15171],{},[43,15180,15183],{"href":15181,"rel":15182},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F1325",[47],"Control access to your Node-RED dashboards using FlowFuse credentials",[348,15185],{},"\nIn FlowFuse 0.10 we added the ability to secure endpoints created within your FlowFuse projects. This allows you to create dashboards or APIs and limit who can access them. In 1.3 we've added the ability for you to limit access to those same resources based on the visitor having a user account on your FlowFuse team. You can see a demonstration of this new feature in ",[43,15188,15170],{"href":15189,"rel":15190},"https:\u002F\u002Fyoutu.be\u002FJRk-Cf7eNIo",[47],[774,15192,15193,15196,15210],{},[1022,15194],{"videoid":15195,"params":1025,"style":13913,"title":1027},"JRk-Cf7eNIo",[15,15197,15198,15162,15203,15205,15206,15171],{},[43,15199,15202],{"href":15200,"rel":15201},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F1448",[47],"Filter your audit logs for easier reading",[348,15204],{},"\nIn FlowFuse 1.3 we’ve added the ability to filter your admin logs by user or action type. We think this is a great new feature which will help admins have confidence that they will be able to review the audit logs quickly when needed. You can see a demonstration of this new feature in ",[43,15207,15170],{"href":15208,"rel":15209},"https:\u002F\u002Fyoutu.be\u002Fp0Vuy5x42Go",[47],[774,15211,15212,15215,15217,15233,15235,15237,15271,15273,15276,15287,15291,15293,15297,15299,15301,15306,15310,15312,15316,15321,15326,15332,15339,15343],{},[1022,15213],{"videoid":15214,"params":1025,"style":13913,"title":1027},"p0Vuy5x42Go",[19,15216,14948],{"id":14947},[15,15218,15219,15162,15224,15226,15227,15232],{},[43,15220,15223],{"href":15221,"rel":15222},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fdevice-agent\u002Fissues\u002F45",[47],"Allow installation of FlowFuse on devices which can't access npm",[348,15225],{},"\nWe've had feedback from customers that in some cases they want to use FlowFuse devices on hardware which cannot access ",[43,15228,15231],{"href":15229,"rel":15230},"https:\u002F\u002Fwww.npmjs.com\u002F",[47],"Node Package Manager"," (npm). In a standard configuration of Node-RED, access to npm is mandatory to run your flows. In FlowFuse 1.3.0 we've added the ability for you to import all the data usually installed from npm without your devices having access to the npm service.",[19,15234,12748],{"id":12747},[15,15236,15013],{},[150,15238,15239,15247,15255,15263],{},[153,15240,15241,15242],{},"Project status UI sometimes getting stuck when restarting ",[43,15243,15246],{"href":15244,"rel":15245},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F1232",[47],"#1232",[153,15248,15249,15250],{},"SSO users asked to click link in email to verify ",[43,15251,15254],{"href":15252,"rel":15253},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F1543",[47],"#1543",[153,15256,15257,15258],{},"SSO users unable to edit settings ",[43,15259,15262],{"href":15260,"rel":15261},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F1542",[47],"#1542",[153,15264,15265,15266],{},"SSO users not redirected to editor when signing in ",[43,15267,15270],{"href":15268,"rel":15269},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F1481",[47],"#1481",[19,15272,14205],{"id":14204},[15,15274,15275],{},"We'd like to thank the following for their contributions to this release:",[15,15277,15278,14235,15283],{},[43,15279,15282],{"href":15280,"rel":15281},"https:\u002F\u002Fgithub.com\u002Fflecoufle",[47],"flecoufle",[43,15284,13768],{"href":15285,"rel":15286},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fhelm\u002Fpull\u002F89",[47],[15,15288,15056,15289,190],{},[43,15290,14247],{"href":14246},[19,15292,5350],{"id":5349},[15,15294,6040,15295,190],{},[43,15296,5832],{"href":5831},[15,15298,6045],{},[19,15300,4818],{"id":4817},[15,15302,6050,15303,15305],{},[4823,15304],{"value":4825},") is already running 1.3.",[15,15307,5553,15308,190],{},[43,15309,4833],{"href":4832},[19,15311,4844],{"id":4843},[15,15313,4847,15314,14365],{},[43,15315,4536],{"href":4850},[15,15317,14368,15318,14374],{},[43,15319,14373],{"href":14371,"rel":15320},[47],[15,15322,14377,15323],{},[43,15324,14382],{"href":14380,"rel":15325},[47],[15,15327,15328,15329],{},"AS well as in the ",[43,15330,14390],{"href":14388,"rel":15331},[47],[15,15333,14393,15334,14397,15336],{},[380,15335,14396],{},[43,15337,14402],{"href":14400,"rel":15338},[47],[15,15340,14405,15341],{},[43,15342,14409],{"href":14408},[15,15344,14412],{},{"title":77,"searchDepth":227,"depth":227,"links":15346},[15347,15348,15349,15350,15351,15352,15353],{"id":15153,"depth":230,"text":15154},{"id":14947,"depth":230,"text":14948},{"id":12747,"depth":230,"text":12748},{"id":14204,"depth":230,"text":14205},{"id":5349,"depth":230,"text":5350},{"id":4817,"depth":230,"text":4818},{"id":4843,"depth":230,"text":4844},"2023-01-19","\u002Fblog\u002F2023\u002F01\u002Fimages\u002Fflowforge-130-hero.png",{"excerpt":15357},{"type":12,"value":15358},[15359],[15,15360,15144],{},"\u002Fblog\u002F2023\u002F01\u002Fflowforge-1-3-0-released",{"title":15138,"description":15138},{"loc":15361},"blog\u002F2023\u002F01\u002Fflowforge-1-3-0-released","Our first release of 2023 with some great new features to try out, happy new year from everyone at FlowFuse!",[4886,270,272],"ey3xv5j5x7k","lI3pbf8cHw48Xz6RlaJ4AnpoOf8aenMW8WPFupA6e6U",{"id":15370,"title":15371,"authors":15372,"body":15374,"cta":3,"date":15440,"description":15441,"extension":256,"image":3,"lastUpdated":3,"meta":15442,"navigation":263,"path":15447,"seo":15448,"sitemap":15449,"stem":15450,"subtitle":15441,"tags":15451,"tldr":3,"video":3,"__hash__":15452},"blog\u002Fblog\u002F2023\u002F01\u002Fflowforge-1.2.1-released.md","FlowFuse 1.2.1 released",[15373],"ben-hardill",{"type":12,"value":15375,"toc":15436},[15376,15379,15388,15400,15402,15407,15411,15413,15417,15424,15431],[15,15377,15378],{},"We've published a maintenance release containing a fix for new users.",[15,15380,15381,15382,15387],{},"This release fixes an ",[43,15383,15386],{"href":15384,"rel":15385},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F1537",[47],"issue"," introduced in FlowFuse 1.2 where users were not being sent their welcome email when they first sign up to the platform. As the sign-up page asks them to click on the link in that email, it left them waiting for an email that wasn't going to arrive.",[15,15389,15390,15391,15395,15396,15399],{},"The same fix also addresses an ",[43,15392,15386],{"href":15393,"rel":15394},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F1514",[47]," where users could not sign up using an email with a ",[380,15397,15398],{},"+"," in it. This is a restriction we apply to users signing up with Single Sign-On enabled email domains - but the check was being applied to everyone.",[27,15401,4818],{"id":4817},[15,15403,15404,15405,11283],{},"This release has already been rolled out to [FlowFuse Cloud](",[4823,15406],{"value":4825},[15,15408,5553,15409],{},[43,15410,4833],{"href":4832},[27,15412,4844],{"id":4843},[15,15414,4847,15415,14365],{},[43,15416,4536],{"href":4850},[15,15418,15419,15420,15423],{},"If you hit any problems with the platform, please raise an ",[43,15421,14373],{"href":14371,"rel":15422},[47],".\nThat also includes if you have any feedback or feature requests.",[15,15425,14393,15426,14397,15428,190],{},[380,15427,14396],{},[43,15429,14402],{"href":14400,"rel":15430},[47],[15,15432,15433,15434],{},"You can also raise a support ticket by emailing ",[43,15435,14409],{"href":14408},{"title":77,"searchDepth":227,"depth":227,"links":15437},[15438,15439],{"id":4817,"depth":233,"text":4818},{"id":4843,"depth":233,"text":4844},"2023-01-12","Release includes fix for emailing new user",{"excerpt":15443},{"type":12,"value":15444},[15445],[15,15446,15378],{},"\u002Fblog\u002F2023\u002F01\u002Fflowforge-1.2.1-released",{"title":15371,"description":15441},{"loc":15447},"blog\u002F2023\u002F01\u002Fflowforge-1.2.1-released",[4886,270,272],"Oc7sBa6JqP9ekGt1Cw9c1fNlEflux-Qmjy8Zw0RFfsM",{"id":15454,"title":15455,"authors":15456,"body":15457,"cta":3,"date":15692,"description":15693,"extension":256,"image":3,"lastUpdated":3,"meta":15694,"navigation":263,"path":15699,"seo":15700,"sitemap":15701,"stem":15702,"subtitle":15693,"tags":15703,"tldr":3,"video":15705,"__hash__":15706},"blog\u002Fblog\u002F2022\u002F12\u002Fflowforge-1-2-0-released.md","FlowFuse 1.2 is now available with single sign on and persistent context storage",[6105],{"type":12,"value":15458,"toc":15682},[15459,15462,15465,15472,15474,15476,15490,15503,15505,15553,15555,15557,15583,15585,15587,15597,15609,15621,15625,15627,15640,15647,15649,15654,15658,15660,15664,15669,15676,15680],[15,15460,15461],{},"Control access to FlowFuse using single sign-on and retain context values when restarting projects.",[15,15463,15464],{},"We're pleased to announce version 1.2 is now available! The latest release of the FlowFuse application contains new features, improvements, better documentation, and bug fixes.",[15,15466,15467,15468,3884,15470,190],{},"We've put a great deal of work in this release to make it easier to run your own self-managed instance of FlowFuse. That includes significant improvements for FlowFuse in ",[43,15469,225],{"href":224},[43,15471,220],{"href":219},[15,15473,14901],{},[19,15475,15154],{"id":15153},[15,15477,15478,15483,15484,15489],{},[43,15479,15482],{"href":15480,"rel":15481},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F226",[47],"Single Sign-On"," Single sign-on (SSO) is a method of authentication that allows a user to access multiple applications or systems with a single set of login credentials, improving security, productivity, and user experience, and reducing IT overhead. We've implemented SSO using the Security Assertion Markup Language ",[43,15485,15488],{"href":15486,"rel":15487},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FSecurity_Assertion_Markup_Language",[47],"(SAML)"," framework. This allows users of FlowFuse Cloud, Premium and the open source edition to easily access their FlowFuse projects.",[15,15491,15492,15497,15498,190],{},[43,15493,15496],{"href":15494,"rel":15495},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F212",[47],"Persistent Context"," Node-RED provides a way to store information that can be shared between different nodes and flow executions without using the messages that pass through a flow. This is called ‘context’. You can now select if context should be stored in memory or in persistent storage. Persistent storage allows the stored values to be recalled after a restart of your project. You can see a demonstration of this feature on our ",[43,15499,15502],{"href":15500,"rel":15501},"https:\u002F\u002Fyoutu.be\u002Fma2vYrXmssc",[47],"Youtube channel",[19,15504,14948],{"id":14947},[150,15506,15507,15521,15527,15530,15539,15545],{},[153,15508,15509,15510,15515,15516],{},"In FlowFuse 1.1 we added logging of user actions. In 1.2 we’ve ",[43,15511,15514],{"href":15512,"rel":15513},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F517",[47],"improved the audit log interface"," to help you read the recorded user actions.\n",[74,15517],{"alt":15518,"src":15519,"title":15520},"\"An image of the new audit log interface of FlowFuse\"","\u002Fblog\u002F2022\u002F12\u002Fimages\u002Faudit-log.png","An image of the new audit log interface of FlowFuse",[153,15522,15523,15524,190],{},"Configuring DNS for FlowFuse has historically been challenging as for most FlowFuse installs you'll need two entries. One for the FlowFuse application, and one for the Node-RED projects. There's been updates to the documentation to make it much easier to set this up, and much faster. Please checkout the new ",[43,15525,4536],{"href":15526},"\u002Fdocs\u002Finstall\u002Fdns-setup\u002F",[153,15528,15529],{},"We've updated our documentation to always link to the latest build (older builds are still available).",[153,15531,15532,15533,15538],{},"Previously customers were asked to build their own containers for the main FlowFuse applications, as well as the Node-RED ones. For the Node-RED containers this allows customers to pre-install packages in the container they intent to use. For FlowFuse Cloud these containers are build by FlowFuse. These containers are now published to the ",[43,15534,15537],{"href":15535,"rel":15536},"https:\u002F\u002Fhub.docker.com\u002Fu\u002Fflowforge",[47],"Docker Hub",". This makes it much easier to get up and running with your first containers.",[153,15540,15541,15542,190],{},"We are now pushing our Docker builds to Docker Hub, this saves users from having to build the Docker images when installing or updating. These containers are used by default by ",[380,15543,15544],{},"docker-compose",[153,15546,15547,15548,190],{},"Setting up MQTT for inter-project communication and communication with devices has been simplified. Please read the improved the documentation around configuration of ",[43,15549,15552],{"href":15550,"rel":15551},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F1397",[47],"MQTT",[19,15554,12748],{"id":12747},[15,15556,15013],{},[150,15558,15559,15567,15575],{},[153,15560,15561,15562],{},"Unable to edit 'Prevent Install of External nodes' template option ",[43,15563,15566],{"href":15564,"rel":15565},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F1376",[47],"#1376",[153,15568,15569,15570],{},"Self-managed FlowFuse needs an external email server to deliver email to users. FlowFuse should be able deal with the email server being offline and gracefully recover once it is back online. ",[43,15571,15574],{"href":15572,"rel":15573},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F1159",[47],"#1159",[153,15576,15577,15578],{},"Duplicate Activity Log for Project whose state is in flight ",[43,15579,15582],{"href":15580,"rel":15581},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F1461",[47],"#1461",[19,15584,14205],{"id":14204},[15,15586,14208],{},[15,15588,15589,14235,15592],{},[43,15590,15282],{"href":15280,"rel":15591},[47],[43,15593,15596],{"href":15594,"rel":15595},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fdocker-compose\u002Fpull\u002F59",[47],"#59",[15,15598,15599,14235,15604],{},[43,15600,15603],{"href":15601,"rel":15602},"https:\u002F\u002Fgithub.com\u002Fsumanpaikdev",[47],"sumanpaikdev",[43,15605,15608],{"href":15606,"rel":15607},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fdocker-compose\u002Fpull\u002F53",[47],"#53",[15,15610,15611,14235,15616],{},[43,15612,15615],{"href":15613,"rel":15614},"https:\u002F\u002Fgithub.com\u002Fsdirosa",[47],"sdirosa",[43,15617,15620],{"href":15618,"rel":15619},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fpull\u002F1326",[47],"#1326",[15,15622,15056,15623,190],{},[43,15624,14247],{"href":14246},[27,15626,5350],{"id":5349},[15,15628,15629,15630,15634,15635,15637,15638,190],{},"In 1.2 we've continued to improve the experience of running your own self managed FlowFuse installation. We're confident you can have self managed FlowFuse running locally in under 30 minutes.\nYou can install our ",[43,15631,15633],{"href":15632},"\u002Fdocs\u002Fcontribute\u002Flocal\u002F","local build",", through ",[43,15636,220],{"href":219},", or ",[43,15639,225],{"href":224},[15,15641,15642,15643,15646],{},"If you'd rather use our hosted offering: [Sign up for FlowFuse Cloud]({% include \"sign-up-url.njk\" %}?code=FF12)\nwith the coupon ",[35,15644,15645],{},"FF12"," to get your first project free for a month.",[27,15648,4818],{"id":4817},[15,15650,6050,15651,15653],{},[4823,15652],{"value":4825},") is already running 1.2. To use\npersistent context you'll need to upgrade your projects stack.",[15,15655,5553,15656,190],{},[43,15657,4833],{"href":4832},[27,15659,4844],{"id":4843},[15,15661,4847,15662,14365],{},[43,15663,4536],{"href":4850},[15,15665,14368,15666,15423],{},[43,15667,14373],{"href":14371,"rel":15668},[47],[15,15670,14393,15671,14397,15673,190],{},[380,15672,14396],{},[43,15674,14402],{"href":14400,"rel":15675},[47],[15,15677,14405,15678,190],{},[43,15679,14409],{"href":14408},[15,15681,14412],{},{"title":77,"searchDepth":227,"depth":227,"links":15683},[15684,15685,15686,15687],{"id":15153,"depth":230,"text":15154},{"id":14947,"depth":230,"text":14948},{"id":12747,"depth":230,"text":12748},{"id":14204,"depth":230,"text":14205,"children":15688},[15689,15690,15691],{"id":5349,"depth":233,"text":5350},{"id":4817,"depth":233,"text":4818},{"id":4843,"depth":233,"text":4844},"2022-12-22","Our final release for 2022 with some great new features to try out",{"excerpt":15695},{"type":12,"value":15696},[15697],[15,15698,15461],{},"\u002Fblog\u002F2022\u002F12\u002Fflowforge-1-2-0-released",{"title":15455,"description":15693},{"loc":15699},"blog\u002F2022\u002F12\u002Fflowforge-1-2-0-released",[4886,15704,272],"flowforge","u7TjqUAub1g","_3lXZuF7zcgo6QD9hX5YVS3sU1hVdjCDdkpgP45S1sk",{"id":15708,"title":15709,"authors":15710,"body":15711,"cta":3,"date":15830,"description":15831,"extension":256,"image":3,"lastUpdated":3,"meta":15832,"navigation":263,"path":15837,"seo":15838,"sitemap":15839,"stem":15840,"subtitle":15831,"tags":15841,"tldr":3,"video":3,"__hash__":15842},"blog\u002Fblog\u002F2022\u002F12\u002Fflowforge-1-1-2-released.md","FlowFuse 1.1.2 released",[1472],{"type":12,"value":15712,"toc":15823},[15713,15716,15725,15732,15741,15744,15746,15749,15774,15776,15779,15787,15791,15793,15797,15801,15803,15807,15812,15819],[15,15714,15715],{},"We've published a maintenance fix with an important fix for the Palette Manager in Node-RED.",[15,15717,15718,15719,15724],{},"A ",[43,15720,15723],{"href":15721,"rel":15722},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F1367",[47],"bug"," was reported this week\nwhere a user was unable to install additional nodes into their Node-RED project\nusing the editor's palette manager.",[15,15726,15727,15728,15731],{},"We tracked it down to an issue that was introduced in the 1.1 release, where the\nproject template lets you list nodes that should be blocked from being installed.\nIt was interpreting an empty list to mean ",[128,15729,15730],{},"disallow everything","! Not quite the\nintended behaviour.",[15,15733,15734,15735,15740],{},"Whilst tracking this down, we also spotted a bug (",[43,15736,15739],{"href":15737,"rel":15738},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F1379",[47],"#1379",")\naround editing this same setting that made it tricky to work around without this\nrelease being published.",[15,15742,15743],{},"These issues have now been fixed and FlowFuse 1.1.2 published.",[19,15745,12748],{"id":12747},[15,15747,15748],{},"In additional to the above issues, this release includes some further fixes around\nthe docker and helm components:",[150,15750,15751,15757],{},[153,15752,15753,15754],{},"Fix fileStore hostname by @flecoufle in ",[43,15755,15596],{"href":15594,"rel":15756},[47],[153,15758,15759,15760,15162,15765,15162,15770],{},"Fix healthcheck ",[43,15761,15764],{"href":15762,"rel":15763},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fdocker-compose\u002Fpull\u002F62",[47],"#62",[43,15766,15769],{"href":15767,"rel":15768},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fdocker-compose\u002Fpull\u002F63",[47],"#63",[43,15771,15053],{"href":15772,"rel":15773},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fhelm\u002Fpull\u002F74",[47],[19,15775,14205],{"id":14204},[15,15777,15778],{},"We'd like to thank the following people for their contributions to this release:",[15,15780,15781,14235,15784],{},[43,15782,15282],{"href":15280,"rel":15783},[47],[43,15785,15596],{"href":15594,"rel":15786},[47],[15,15788,15056,15789,190],{},[43,15790,14247],{"href":14246},[27,15792,4818],{"id":4817},[15,15794,15404,15795,11283],{},[4823,15796],{"value":4825},[15,15798,5553,15799],{},[43,15800,4833],{"href":4832},[27,15802,4844],{"id":4843},[15,15804,4847,15805,14365],{},[43,15806,4536],{"href":4850},[15,15808,15419,15809,15423],{},[43,15810,14373],{"href":14371,"rel":15811},[47],[15,15813,14393,15814,14397,15816,190],{},[380,15815,14396],{},[43,15817,14402],{"href":14400,"rel":15818},[47],[15,15820,15433,15821],{},[43,15822,14409],{"href":14408},{"title":77,"searchDepth":227,"depth":227,"links":15824},[15825,15826],{"id":12747,"depth":230,"text":12748},{"id":14204,"depth":230,"text":14205,"children":15827},[15828,15829],{"id":4817,"depth":233,"text":4818},{"id":4843,"depth":233,"text":4844},"2022-12-09","Release includes a fix for installing additional nodes into Node-RED.",{"excerpt":15833},{"type":12,"value":15834},[15835],[15,15836,15715],{},"\u002Fblog\u002F2022\u002F12\u002Fflowforge-1-1-2-released",{"title":15709,"description":15831},{"loc":15837},"blog\u002F2022\u002F12\u002Fflowforge-1-1-2-released",[4886,270,272],"3Ob42qnbOp1WHSdJkzKiXHEeODJEymGtcdSAD7hPAuI",{"id":15844,"title":15845,"authors":15846,"body":15847,"cta":3,"date":16051,"description":16052,"extension":256,"image":3,"lastUpdated":3,"meta":16053,"navigation":263,"path":16058,"seo":16059,"sitemap":16060,"stem":16061,"subtitle":16052,"tags":16062,"tldr":3,"video":16063,"__hash__":16064},"blog\u002Fblog\u002F2022\u002F11\u002Fflowforge-1-1-released.md","FlowFuse 1.1 released with persistent file storage",[6105],{"type":12,"value":15848,"toc":16041},[15849,15852,15855,15857,15864,15871,15873,15881,15884,15887,15889,15898,15900,15968,15970,15972,15984,15988,15990,16002,16008,16010,16015,16019,16021,16025,16030,16037],[15,15850,15851],{},"Persist files on your FlowFuse Projects, publish locally developed flows to dozens of Devices in a few clicks, and use our new interface for managing Project Deployments.",[15,15853,15854],{},"We're pleased to announce version 1.1 is now available! The latest release of the FlowFuse application contains new features, many improvements, and bug fixes. Keep reading for the details of what's in this release or you can watch our 1 minute roundup video of the new release above.",[19,15856,15154],{"id":15153},[15,15858,15859,15863],{},[43,15860,5714],{"href":15861,"rel":15862},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F998",[47]," We've had a great deal of feedback\nfrom our customers that being able to persist files in a project is a vital feature\nin Node-RED. In FlowFuse 1.1 flows can now create and persist files within\nyour Projects. We know those files are used in many creative ways and we're looking\nforward to seeing how users improve their Projects using this new feature.",[15,15865,15866,15870],{},[43,15867,15869],{"href":15868},"\u002Fdocs\u002Fmigration\u002Fnode-red-tools\u002F","Import Snapshots from Outside FlowFuse"," Developers may wish to\nwork on Node-RED in a local environment but want an easy path to share that with their team. You can now link your Node-RED instances running outside of FlowFuse and push Snapshots directly into your FlowFuse Projects to leverage FlowFuse fully.  With this new feature we've made it effortless to push a local build of a project to FlowFuse for deployment to your staging and production FlowFuse instances.",[19,15872,14948],{"id":14947},[15,15874,15875,15880],{},[43,15876,15879],{"href":15877,"rel":15878},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F1046",[47],"Project Deployments UX","\nWe've reworked the interface for managing your FlowFuse Deployments of Node-RED.\nWe are seeing FlowFuse users deploying their Projects to edge devices at scale.\nThis is another step towards making it easier for users to manage a large quantity\nof devices in their Projects.",[15,15882,15883],{},"When users change their username, email address, or password they'll now be\nnotified through email of changes to ensure they were made by the\nuser.",[15,15885,15886],{},"In this release a lot of effort went into the install process, specifically the\nlocal install method. First and foremost; a default Stack and Template will be\ninstalled automatically. That will ensure users get up and running with\nNode-RED more quickly. Administrators of each platform can still change Stacks\nand Templates when needed. Secondly, the installer now auto generates the\nconfiguration file for Mosquitto, the MQTT broker FlowFuse uses. This again should save\nadministrators time when installing FlowFuse.",[19,15888,12748],{"id":12747},[15,15890,15891,15892,15897],{},"The v1.0.1 release included a bug fix where ",[43,15893,15896],{"href":15894,"rel":15895},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F1186",[47],"snapshot rollbacks","\ndidn't work, which has also been included in v1.1 onwards.",[15,15899,15013],{},[150,15901,15902,15909,15917,15925,15933,15941,15949,15957,15965],{},[153,15903,15904,15905],{},"When installing the stack during a FlowFuse installation the process would quit on Windows ",[43,15906,15764],{"href":15907,"rel":15908},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Finstaller\u002Fissues\u002F62",[47],[153,15910,15911,15912],{},"After accepting an invite to join a team, users are no longer seeing a blank page ",[43,15913,15916],{"href":15914,"rel":15915},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F1208",[47],"#1208",[153,15918,15919,15920],{},"Pagination on device deployments wasn't showing all devices ",[43,15921,15924],{"href":15922,"rel":15923},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F1207",[47],"#1207",[153,15926,15927,15928],{},"Markdown rendering when selecting the project type wasn't quite working, fixed now! ",[43,15929,15932],{"href":15930,"rel":15931},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F1171",[47],"#1171",[153,15934,15935,15936],{},"Continuous spinner in UI body when entering a new (short) password ",[43,15937,15940],{"href":15938,"rel":15939},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F1280",[47],"#1280",[153,15942,15943,15944],{},"Friendly stack name not shown in the Change Project Stack option list ",[43,15945,15948],{"href":15946,"rel":15947},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F1169",[47],"#1169",[153,15950,15951,15952],{},"The stacks view in the admin area didn't render properly ",[43,15953,15956],{"href":15954,"rel":15955},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F1260",[47],"#1260",[153,15958,15959,15960],{},"Like the deployments page, pagination for stacks was broken. ",[43,15961,15964],{"href":15962,"rel":15963},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F1164",[47],"#1164",[153,15966,15967],{},"Several UX and UI bugs got polished away!",[19,15969,14205],{"id":14204},[15,15971,14208],{},[15,15973,15974,14235,15979],{},[43,15975,15978],{"href":15976,"rel":15977},"https:\u002F\u002Fgithub.com\u002Fmikermcneil",[47],"mikermcneil",[43,15980,15983],{"href":15981,"rel":15982},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fpull\u002F1301",[47],"#1301",[15,15985,15056,15986,190],{},[43,15987,14247],{"href":14246},[27,15989,5350],{"id":5349},[15,15991,15992,15993,15996,15997,3884,15999,16001],{},"As said before, a lot of effort went into the local installer. We're confident\nyou can have your own FlowFuse running locally in about 30 minutes.\n",[43,15994,15995],{"href":15632},"Get started right away!","\n(",[43,15998,220],{"href":219},[43,16000,225],{"href":224},"\nare available too!)",[15,16003,16004,16005,15646],{},"If you'd rather use our hosted offering: [Sign up for FlowFuse Cloud]({% include \"sign-up-url.njk\" %}?code=RELEASE11)\nwith the coupon ",[35,16006,16007],{},"RELEASE11",[27,16009,4818],{"id":4817},[15,16011,6050,16012,16014],{},[4823,16013],{"value":4825},") is already running 1.1. To use\npersisted files you'll need to upgrade your projects stack. You'll be prompted\nto do so on the project page.",[15,16016,5553,16017],{},[43,16018,4833],{"href":4832},[27,16020,4844],{"id":4843},[15,16022,4847,16023,14365],{},[43,16024,4536],{"href":4850},[15,16026,14368,16027,15423],{},[43,16028,14373],{"href":14371,"rel":16029},[47],[15,16031,14393,16032,14397,16034,190],{},[380,16033,14396],{},[43,16035,14402],{"href":14400,"rel":16036},[47],[15,16038,15433,16039],{},[43,16040,14409],{"href":14408},{"title":77,"searchDepth":227,"depth":227,"links":16042},[16043,16044,16045,16046],{"id":15153,"depth":230,"text":15154},{"id":14947,"depth":230,"text":14948},{"id":12747,"depth":230,"text":12748},{"id":14204,"depth":230,"text":14205,"children":16047},[16048,16049,16050],{"id":5349,"depth":233,"text":5350},{"id":4817,"depth":233,"text":4818},{"id":4843,"depth":233,"text":4844},"2022-11-24","A new set of features to improve FlowFuse as the best solution for running Node-RED in production in a secure, scalable, and team-based environment.",{"excerpt":16054},{"type":12,"value":16055},[16056],[15,16057,15851],{},"\u002Fblog\u002F2022\u002F11\u002Fflowforge-1-1-released",{"title":15845,"description":16052},{"loc":16058},"blog\u002F2022\u002F11\u002Fflowforge-1-1-released",[4886,270,272],"134iljE_urI","_7VLf_lEnHGSS_geCMKGcpbG95ImnpEoti7VetekvQg",{"id":16066,"title":16067,"authors":16068,"body":16069,"cta":3,"date":16337,"description":16338,"extension":256,"image":3,"lastUpdated":3,"meta":16339,"navigation":263,"path":16346,"seo":16347,"sitemap":16348,"stem":16349,"subtitle":16350,"tags":16351,"tldr":3,"video":16352,"__hash__":16353},"blog\u002Fblog\u002F2022\u002F10\u002Fflowforge-1-released.md","FlowFuse 1.0 released",[6105],{"type":12,"value":16070,"toc":16327},[16071,16078,16085,16087,16094,16102,16110,16117,16120,16122,16125,16159,16161,16163,16258,16260,16262,16274,16278,16280,16292,16294,16300,16306,16308,16314,16319],[15,16072,16073,16074,190],{},"Predefined environment variables for your Instances and Devices, manage your Project's modules and import your existing flows (and credentials) into your FlowFuse ",[43,16075,16077],{"href":16076},"\u002Fdocs\u002Fuser\u002Fconcepts\u002F#instance","Projects",[15,16079,16080,16081,190],{},"We're pleased to announce version 1.0 FlowFuse is now available. Keep reading for a promotion code to get your first month free on FlowFuse. Version 1.0 represents our vision of the base set of features needed for you to get great value from using FlowFuse in a production environment. That's not to say we are done, we will continue to add features, improve our interfaces and fix bugs with the same enthusiasm as we've worked towards 1.0. We'd like to hear your feedback on what we will be including in ",[43,16082,16084],{"href":6021,"rel":16083},[47],"1.1 and beyond",[19,16086,15154],{"id":15153},[15,16088,16089],{},[43,16090,16093],{"href":16091,"rel":16092},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F841",[47],"Standard Environment Variables set for both Projects and Devices",[15,16095,16096,16097,16101],{},"Projects now get a set of predefined environment variables that can be used by their flows. These give your flows access to the projects unique id and name. When the flows are deployed to ",[43,16098,16100],{"href":16099},"\u002Fdocs\u002Fuser\u002Fconcepts\u002F#device","devices",", they also get the device's id and name. That makes is easier to deploy flows across multiple devices and have each able to identify itself.",[15,16103,16104,16109],{},[43,16105,16108],{"href":16106,"rel":16107},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F405",[47],"Add additional node modules to your projects","\nThis feature allows you to pre-define additional Node-RED nodes and node modules you may want to be installed in your FlowFuse project, making it easier to manage.",[15,16111,16112],{},[43,16113,16116],{"href":16114,"rel":16115},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F835",[47],"Import existing projects into FlowFuse",[15,16118,16119],{},"You can now import your existing flow and credentials files straight into your FlowFuse project - making it really easy to move your existing projects into the platform.",[19,16121,14948],{"id":14947},[15,16123,16124],{},"We've made a number of improvements to the overall experience of running FlowFuse.",[150,16126,16127,16135,16143,16151],{},[153,16128,16129,16130],{},"Editable Stack labels ",[43,16131,16134],{"href":16132,"rel":16133},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F915",[47],"#915",[153,16136,16137,16138],{},"Check for suitable version of Node on Devices ",[43,16139,16142],{"href":16140,"rel":16141},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fdevice-agent\u002Fissues\u002F37",[47],"#37",[153,16144,16145,16146],{},"Realtime Project status details in Project overview  ",[43,16147,16150],{"href":16148,"rel":16149},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F990",[47],"#990",[153,16152,16153,16154],{},"Improve Template creation & Edit Project Settings UX ",[43,16155,16158],{"href":16156,"rel":16157},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F1041",[47],"#1041",[19,16160,12748],{"id":12747},[15,16162,15013],{},[150,16164,16165,16172,16179,16186,16193,16200,16207,16214,16221,16228,16235,16242,16249,16256],{},[153,16166,16167],{},[43,16168,16171],{"href":16169,"rel":16170},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F1143",[47],"Pressing return in search box reloads page",[153,16173,16174],{},[43,16175,16178],{"href":16176,"rel":16177},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F1126",[47],"Vue Router Warn",[153,16180,16181],{},[43,16182,16185],{"href":16183,"rel":16184},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fforge-ui-components\u002Fissues\u002F58",[47],"Kebab menu in Settings breaks",[153,16187,16188],{},[43,16189,16192],{"href":16190,"rel":16191},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F1096",[47],"flowforge-nr-launcher missing try\u002Fcatch on http request",[153,16194,16195],{},[43,16196,16199],{"href":16197,"rel":16198},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F1145",[47],"Invite with + in email address is incorrectly sanitised",[153,16201,16202],{},[43,16203,16206],{"href":16204,"rel":16205},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fforge-ui-components\u002Fissues\u002F59",[47],"Table does not sort correctly when empty fields are present",[153,16208,16209],{},[43,16210,16213],{"href":16211,"rel":16212},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F929",[47],"4xx Errors not shown in App",[153,16215,16216],{},[43,16217,16220],{"href":16218,"rel":16219},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F1076",[47],"Inconsistent errors returned from the API",[153,16222,16223],{},[43,16224,16227],{"href":16225,"rel":16226},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowforge-nr-launcher\u002Fissues\u002F77",[47],"Module install not working on windows",[153,16229,16230],{},[43,16231,16234],{"href":16232,"rel":16233},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F1038",[47],"Avatar lettering is mis-allinged when only rendering 1 character",[153,16236,16237],{},[43,16238,16241],{"href":16239,"rel":16240},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F968",[47],"it.only is not prohibited",[153,16243,16244],{},[43,16245,16248],{"href":16246,"rel":16247},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F966",[47],"No feedback when an API error occurs editing user",[153,16250,16251],{},[43,16252,16255],{"href":16253,"rel":16254},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F1040",[47],"Start action is available on a running project",[153,16257],{},[19,16259,14205],{"id":14204},[15,16261,14208],{},[15,16263,16264,14235,16269,190],{},[43,16265,16268],{"href":16266,"rel":16267},"https:\u002F\u002Fgithub.com\u002FJozefik",[47],"Jozefik",[43,16270,16273],{"href":16271,"rel":16272},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fpull\u002F1082",[47],"Adding limits to admin panel",[15,16275,14243,16276,190],{},[43,16277,14247],{"href":14246},[27,16279,5350],{"id":5349},[15,16281,16282,16283,16286,16287,16291],{},"[Sign up for FlowFuse-Managed Premium]({% include \"sign-up-url.njk\" %}?code=RELEASE1) with this link or at the checkout enter the code ",[35,16284,16285],{},"RELEASE1"," to get your first project free for a month. As an open source project you can also use ",[43,16288,16290],{"href":16289},"\u002Fdocs\u002Finstall\u002F","FlowFuse-Community"," for free, forever.",[27,16293,4818],{"id":4817},[15,16295,16296,16297,16299],{},"Our managed [FlowFuse](",[4823,16298],{"value":4825},") is already running 1.0. Upgrade your project Stacks to the latest version to make sure you get all the latest changes.",[15,16301,5553,16302,190],{},[43,16303,16305],{"href":16304},"\u002Fdocs\u002Fupgrade\u002F#upgrading-flowfuse","upgrading FlowFuse on a local server",[27,16307,4844],{"id":4843},[15,16309,16310,16311,15423],{},"If you hit any problems with the platform, or have questions to ask, please raise an ",[43,16312,14373],{"href":14371,"rel":16313},[47],[15,16315,16316,16317],{},"Customers of FlowFuse Cloud can raise a ticket by emailing ",[43,16318,14409],{"href":14408},[15,16320,16321,16322,14397,16324,190],{},"We also have a ",[380,16323,14396],{},[43,16325,14402],{"href":14400,"rel":16326},[47],{"title":77,"searchDepth":227,"depth":227,"links":16328},[16329,16330,16331,16332],{"id":15153,"depth":230,"text":15154},{"id":14947,"depth":230,"text":14948},{"id":12747,"depth":230,"text":12748},{"id":14204,"depth":230,"text":14205,"children":16333},[16334,16335,16336],{"id":5349,"depth":233,"text":5350},{"id":4817,"depth":233,"text":4818},{"id":4843,"depth":233,"text":4844},"2022-10-27","FlowFuse is now 1.0!",{"excerpt":16340},{"type":12,"value":16341},[16342],[15,16343,16073,16344,190],{},[43,16345,16077],{"href":16076},"\u002Fblog\u002F2022\u002F10\u002Fflowforge-1-released",{"title":16067,"description":16338},{"loc":16346},"blog\u002F2022\u002F10\u002Fflowforge-1-released","FlowFuse at 1.0, a huge milestone for us.",[4886,270,272],"5TLT7CQR7iI","9s50AjzIB_k42j4bwST4KtZ97ahWBg3ZNLHgFgjm_-k",{"id":16355,"title":16356,"authors":16357,"body":16358,"cta":3,"date":16593,"description":16594,"extension":256,"image":3,"lastUpdated":3,"meta":16595,"navigation":263,"path":16600,"seo":16601,"sitemap":16602,"stem":16603,"subtitle":16604,"tags":16605,"tldr":3,"video":16606,"__hash__":16607},"blog\u002Fblog\u002F2022\u002F09\u002Fflowforge-010-released.md","FlowFuse 0.10 released",[6105],{"type":12,"value":16359,"toc":16583},[16360,16363,16365,16368,16370,16378,16386,16393,16395,16397,16423,16425,16427,16512,16514,16516,16528,16540,16545,16547,16553,16555,16560,16564,16566,16572,16576],[15,16361,16362],{},"Secure your HTTP endpoints, create read-only users in your teams and use our static IP address for outbound traffic",[15,16364,14901],{},[15,16366,16367],{},"We're pleased to announce version 0.10 is now available. The next release of the FlowFuse application containing new features, a number of improvements, and bug fixes. Keep reading for a promotion code to get your first month free on FlowFuse Cloud.",[19,16369,15154],{"id":15153},[15,16371,16372,16377],{},[43,16373,16376],{"href":16374,"rel":16375},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F578",[47],"Secure HTTP Endpoints","\nWe've added the ability for you to secure your HTTP endpoints. You can now control who can access Dashboards or API endpoints you create in FlowFuse.",[15,16379,16380,16385],{},[43,16381,16384],{"href":16382,"rel":16383},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F657",[47],"Read-only Users","\nWe've added a new user role for Read-only access. This will allow users to login to your FlowFuse project and view the Node-RED flows without them being able to edit anything.",[15,16387,16388,16392],{},[43,16389,16391],{"href":16390},"\u002Fdocs\u002Fcloud\u002Fintroduction\u002F#ip-addresses","Static Outbound IP Addresses","\nWe've updated FlowFuse Cloud so that all outbound traffic from your projects now comes from a single IP address. When trying to access a remote resource such as a database it is often a requirement for the IP address the traffic comes from to be fixed.",[19,16394,14948],{"id":14947},[15,16396,16124],{},[150,16398,16399,16407,16415],{},[153,16400,16401,16402],{},"Allow both key and component in a ff-data-table column definition ",[43,16403,16406],{"href":16404,"rel":16405},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fforge-ui-components\u002Fissues\u002F43",[47],"#43",[153,16408,16409,16410],{},"Default Stack and Templates ",[43,16411,16414],{"href":16412,"rel":16413},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F989",[47],"#989",[153,16416,16417,16418],{},"Provide platform containers and base stack container for administrators ",[43,16419,16422],{"href":16420,"rel":16421},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F917",[47],"#917",[19,16424,12748],{"id":12747},[15,16426,15013],{},[150,16428,16429,16435,16442,16449,16456,16463,16470,16477,16484,16491,16498,16505],{},[153,16430,16431],{},[43,16432,16434],{"href":16420,"rel":16433},[47],"Provide platform containers and base stack container for administrators",[153,16436,16437],{},[43,16438,16441],{"href":16439,"rel":16440},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F983",[47],"User names can be same (but different case)",[153,16443,16444],{},[43,16445,16448],{"href":16446,"rel":16447},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F463",[47],"User list not refreshing after changing user details",[153,16450,16451],{},[43,16452,16455],{"href":16453,"rel":16454},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F986",[47],"Navigating directly to a device page gets the wrong team selected",[153,16457,16458],{},[43,16459,16462],{"href":16460,"rel":16461},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F941",[47],"Node-RED Isn't ready when FlowFuse app says it is running following a project restart",[153,16464,16465],{},[43,16466,16469],{"href":16467,"rel":16468},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F923",[47],"Invitations left for deleted teams",[153,16471,16472],{},[43,16473,16476],{"href":16474,"rel":16475},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F1024",[47],"Following email verification link twice throws error",[153,16478,16479],{},[43,16480,16483],{"href":16481,"rel":16482},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fdevice-agent\u002Fissues\u002F21",[47],"Agent does not log stderr from the Node-RED process",[153,16485,16486],{},[43,16487,16490],{"href":16488,"rel":16489},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F948",[47],"On Kubernetes project names can not start with a number",[153,16492,16493],{},[43,16494,16497],{"href":16495,"rel":16496},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F930",[47],"When creating projects stack options do not wrap",[153,16499,16500],{},[43,16501,16504],{"href":16502,"rel":16503},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F979",[47],"Save button in admin user-edit dialog doesn't close dialog",[153,16506,16507],{},[43,16508,16511],{"href":16509,"rel":16510},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F911",[47],"Setting UI doesn't allow me to update settings",[19,16513,14205],{"id":14204},[15,16515,14208],{},[15,16517,16518,14235,16523],{},[43,16519,16522],{"href":16520,"rel":16521},"https:\u002F\u002Fgithub.com\u002FPezmc",[47],"Pezmc",[43,16524,16527],{"href":16525,"rel":16526},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fpull\u002F949",[47],"Add device count and project counts by type to admin",[15,16529,16530,14235,16535],{},[43,16531,16534],{"href":16532,"rel":16533},"https:\u002F\u002Fgithub.com\u002FArshErgon",[47],"ArshErgon",[43,16536,16539],{"href":16537,"rel":16538},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fpull\u002F977",[47],"Update vue component name for NoVerifiedEmail.vue",[15,16541,16542,16543,190],{},"As an open-source project, we welcome the community involvement in what we're building. If you're interested in contributing, checkout our ",[43,16544,14247],{"href":14246},[27,16546,5350],{"id":5349},[15,16548,16549,16550,15646],{},"[Sign up for FlowFuse Cloud]({% include \"sign-up-url.njk\" %}?code=RELEASE010) with this link or at the checkout enter the code ",[35,16551,16552],{},"RELEASE010",[27,16554,4818],{"id":4817},[15,16556,6050,16557,16559],{},[4823,16558],{"value":4825},") is already running 0.10 and the stacks updated. Upgrade your project stacks to the latest version to make sure you get all the latest changes.",[15,16561,5553,16562,190],{},[43,16563,16305],{"href":16304},[27,16565,4844],{"id":4843},[15,16567,16568,16569,15423],{},"If you hit any problems with the platform, or have questions to ask, please do\nraise an ",[43,16570,14373],{"href":14371,"rel":16571},[47],[15,16573,16316,16574],{},[43,16575,14409],{"href":14408},[15,16577,16321,16578,14397,16580,190],{},[380,16579,14396],{},[43,16581,14402],{"href":14400,"rel":16582},[47],{"title":77,"searchDepth":227,"depth":227,"links":16584},[16585,16586,16587,16588],{"id":15153,"depth":230,"text":15154},{"id":14947,"depth":230,"text":14948},{"id":12747,"depth":230,"text":12748},{"id":14204,"depth":230,"text":14205,"children":16589},[16590,16591,16592],{"id":5349,"depth":233,"text":5350},{"id":4817,"depth":233,"text":4818},{"id":4843,"depth":233,"text":4844},"2022-09-30","Secure Node-RED HTTP end points, Read-only users and Static outbound IPs",{"excerpt":16596},{"type":12,"value":16597},[16598],[15,16599,16362],{},"\u002Fblog\u002F2022\u002F09\u002Fflowforge-010-released",{"title":16356,"description":16594},{"loc":16600},"blog\u002F2022\u002F09\u002Fflowforge-010-released","Secure HTTP end points, Read-only users and Static outbound IPs",[4886,270,272],"mjR1iiEFiBg","BWtrpvPmvs7Zjnz8S3GBOTnYLgsvle_pLVQNyO7ECJc",{"id":16609,"title":16610,"authors":16611,"body":16613,"cta":3,"date":16840,"description":16841,"extension":256,"image":3,"lastUpdated":3,"meta":16842,"navigation":263,"path":16847,"seo":16848,"sitemap":16849,"stem":16850,"subtitle":16841,"tags":16851,"tldr":3,"video":16852,"__hash__":16853},"blog\u002Fblog\u002F2022\u002F09\u002Fflowforge-09-released.md","FlowFuse 0.9 released",[16612],"sam-machin",{"type":12,"value":16614,"toc":16830},[16615,16618,16621,16624,16626,16634,16637,16645,16659,16667,16682,16684,16686,16720,16722,16724,16770,16772,16774,16787,16793,16795,16801,16803,16808,16812,16814,16819,16823],[15,16616,16617],{},"Suspend your projects when you don't need them, login with either your username or email, and introducing Team Types",[15,16619,16620],{},"Keep reading for the details of what's in this release our you can watch our 1 minute roundup video of the new release above.",[15,16622,16623],{},"We're pleased to announce version 0.9 is now available. The next release of the FlowFuse application containing new features, a number of improvements, and bug fixes. Keep reading for a promotion code to get your first month free on FlowFuse Cloud.",[19,16625,15154],{"id":15153},[15,16627,16628,16633],{},[43,16629,16632],{"href":16630,"rel":16631},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F893",[47],"Suspend Projects","\nSometimes you want to put a project to one side for a while, maybe your development has stalled or you're waiting on something external to be ready. Perhaps you don't need it to be running all the time. With the 0.9 release we've added the ability to suspend a project. Once suspended, your flows are safely stored in the platform database, but Node-RED isn't running and the project doesn't consume any resources. In FlowFuse Cloud we do not charge you for suspended projects - you only pay when the project is running.\nYour project will be there ready to start back up when you need it with just one click.\nRemember that any context data or anything written to the filesystem will not persist through a restart or a suspend of a project.",[15,16635,16636],{},"Alongside this change, we've removed the option to 'stop' a project. That option would only stop Node-RED, but the underlying container would still be running, consuming resources. With Node-RED 3.0 adding the ability to stop the flows, but still be able to edit them, that provides a much better user experience.\nYou can still restart the Node-RED process from the Forge app as before for example when you have updated a package in your flows.",[15,16638,16639,16644],{},[43,16640,16643],{"href":16641,"rel":16642},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F733",[47],"Team Types","\nWe've introduced another concept into the platform with this release. Team Types will allow us to offer more advanced features to teams on FlowFuse Cloud. You won't see much difference in this release but it allows us to build on in future releases.",[15,16646,16647,16652,16653,16658],{},[43,16648,16651],{"href":16649,"rel":16650},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F695",[47],"PostHog Analytics","\nWe've changed the analytics tooling integrated into the platform. With this release, we've deprecated the use of Plausible Analytics as it didn't quite provide the sort of insight we wanted. We now integrate with ",[43,16654,16657],{"href":16655,"rel":16656},"https:\u002F\u002Fposthog.com\u002F",[47],"PostHog",". They share our ethos and approach to open source and self hosting - something you can take advantage of if you're running your own FlowFuse platform.\nFor FlowFuse Cloud, the data is sent to our PostHog account so we can better understand how the platform is being used. If you're running your own instance, the information is only captured if you configure it with your own PostHog instance details - it does not send any data back to us.",[15,16660,16661,16666],{},[43,16662,16665],{"href":16663,"rel":16664},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F856",[47],"Login with email","\nA common problem that we've seen from users is trying to login with their email address instead of their username. As of 0.9 you can now enter either at the login screen.",[15,16668,16669,16674,16675,16678,16679,16681],{},[43,16670,16673],{"href":16671,"rel":16672},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F774",[47],"Custom Dashboard Path","\nIf you are using the Node-RED Dashboard set of nodes, you can now change the path where the dashboard will be served from. The default is still ",[380,16676,16677],{},"\u002Fui"," but you can now move that onto ",[380,16680,10006],{}," or anything else. This is helpful when migrating existing projects over to FlowFuse.",[19,16683,14948],{"id":14947},[15,16685,16124],{},[150,16687,16688,16696,16704,16712],{},[153,16689,16690,16691,190],{},"Improvements to the FlowFuse Theme ",[43,16692,16695],{"href":16693,"rel":16694},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fpull\u002F883",[47],"#883",[153,16697,16698,16699],{},"Upper-case characters in Project Names ",[43,16700,16703],{"href":16701,"rel":16702},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F546",[47],"#546",[153,16705,16706,16707],{},"Password reset requests are logged",[43,16708,16711],{"href":16709,"rel":16710},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F773",[47],"#773",[153,16713,16714,16715],{},"Admin can manually verify users email ",[43,16716,16719],{"href":16717,"rel":16718},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F692",[47],"#902",[19,16721,12748],{"id":12747},[15,16723,15013],{},[150,16725,16726,16735,16742,16749,16756,16763],{},[153,16727,16728,16733],{},[43,16729,16732],{"href":16730,"rel":16731},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F875",[47],"Cannot edit template settings",[348,16734],{},[153,16736,16737],{},[43,16738,16741],{"href":16739,"rel":16740},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fnr-project-nodes\u002Fissues\u002F10",[47],"Project Link Nodes Appear in CE Install",[153,16743,16744],{},[43,16745,16748],{"href":16746,"rel":16747},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fnr-project-nodes\u002Fissues\u002F14",[47],"Project Link Nodes MQTT Connection",[153,16750,16751],{},[43,16752,16755],{"href":16753,"rel":16754},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowforge-nr-theme\u002Fissues\u002F19",[47],"Theme shows white characters on white background",[153,16757,16758],{},[43,16759,16762],{"href":16760,"rel":16761},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fdevice-agent\u002Fissues\u002F27",[47],"Changing Project on device doesn't remove old modules",[153,16764,16765],{},[43,16766,16769],{"href":16767,"rel":16768},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fdevice-agent\u002Fissues\u002F30",[47],"Device Agent and Node-RED use different time in logs",[19,16771,14205],{"id":14204},[15,16773,14208],{},[15,16775,16776,16781,16782],{},[43,16777,16780],{"href":16778,"rel":16779},"https:\u002F\u002Fgithub.com\u002Fbonanitech",[47],"Bonantech"," for his work ",[43,16783,16786],{"href":16784,"rel":16785},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowforge-nr-theme\u002Fcommit\u002F30e21a3777dc3438ef206157ee9110728011f59c",[47],"cleaning up the theme CSS",[15,16788,16542,16789,190],{},[43,16790,14247],{"href":16791,"rel":16792},"https:\u002F\u002Fflowforge.com\u002Fdocs\u002Fcontribute\u002F",[47],[27,16794,5350],{"id":5349},[15,16796,16797,16798,15646],{},"[Sign up for FlowFuse Cloud]({% include \"sign-up-url.njk\" %}) and at the checkout enter the code ",[35,16799,16800],{},"RELEASE09",[27,16802,4818],{"id":4817},[15,16804,6050,16805,16807],{},[4823,16806],{"value":4825},") is already running 0.9 and the stacks updated. Upgrade your project stacks to the latest version and start using the Project Link nodes now.",[15,16809,5553,16810,190],{},[43,16811,16305],{"href":16304},[27,16813,4844],{"id":4843},[15,16815,16568,16816,15423],{},[43,16817,14373],{"href":14371,"rel":16818},[47],[15,16820,16316,16821],{},[43,16822,14409],{"href":14408},[15,16824,16321,16825,14397,16827,190],{},[380,16826,14396],{},[43,16828,14402],{"href":14400,"rel":16829},[47],{"title":77,"searchDepth":227,"depth":227,"links":16831},[16832,16833,16834,16835],{"id":15153,"depth":230,"text":15154},{"id":14947,"depth":230,"text":14948},{"id":12747,"depth":230,"text":12748},{"id":14204,"depth":230,"text":14205,"children":16836},[16837,16838,16839],{"id":5349,"depth":233,"text":5350},{"id":4817,"depth":233,"text":4818},{"id":4843,"depth":233,"text":4844},"2022-09-01","Suspended projects, login with email and Team Types",{"excerpt":16843},{"type":12,"value":16844},[16845],[15,16846,16617],{},"\u002Fblog\u002F2022\u002F09\u002Fflowforge-09-released",{"title":16610,"description":16841},{"loc":16847},"blog\u002F2022\u002F09\u002Fflowforge-09-released",[4886,270,272],"d23Pmyc0k7I","ST15Mk_6yGKxqkgygbAh9qQL6m-PqK3_jXgaNYDlj0o",{"id":16855,"title":16856,"authors":16857,"body":16858,"cta":3,"date":17118,"description":17119,"extension":256,"image":3,"lastUpdated":3,"meta":17120,"navigation":263,"path":17125,"seo":17126,"sitemap":17127,"stem":17128,"subtitle":17119,"tags":17129,"tldr":3,"video":17130,"__hash__":17131},"blog\u002Fblog\u002F2022\u002F08\u002Fflowforge-08-released.md","FlowFuse 0.8 released",[16612],{"type":12,"value":16859,"toc":17109},[16860,16863,16866,16869,16871,16890,16904,16912,16914,16916,16959,16961,16963,17044,17046,17048,17076,17080,17082,17087,17091,17093,17098,17102],[15,16861,16862],{},"Easily pass messages between your projects on the cloud or devices, UX improvements, and more.",[15,16864,16865],{},"Keep reading for  the details of whats in this release our you can watch our 1 minute roundup video of the new release above.",[15,16867,16868],{},"We're pleased to announce version 0.8 is now available. The next release of the FlowFuse application containing new features, a number of improvements, and bug fixes.",[19,16870,15154],{"id":15153},[15,16872,16873,16878,16879,16884,16885],{},[43,16874,16877],{"href":16875,"rel":16876},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F662",[47],"Project Link Nodes","\nWe've introduced our first custom FlowFuse nodes to the palette of new projects. The Project Link nodes allow you to easily pass data between different projects within the same team.\nThese projects can be running in the cloud or on devices, with the communication powered by our own internal MQTT broker.\nTry these out today on FlowFuse Cloud by creating a new project or updating your existing project's stack. There's more information in the ",[43,16880,16883],{"href":16881,"rel":16882},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fnr-project-nodes\u002Fblob\u002Fmain\u002FREADME.md",[47],"README"," for the nodes.\nFor local installs of FlowFuse, the nodes are only available with an Enterprise Edition license.\n",[74,16886],{"alt":16887,"src":16888,"title":16889},"\"Screenshot showing the message being sent from one project to another using project link nodes\"","\u002Fblog\u002F2022\u002F08\u002Fimages\u002FProjectLink.gif","Screenshot showing the message being sent from one project to another using project link nodes",[15,16891,16892,16897,16898,16903],{},[43,16893,16896],{"href":16894,"rel":16895},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F839",[47],"Start & Stop Flows","\nNode-RED 3.0 ",[43,16899,16902],{"href":16900,"rel":16901},"https:\u002F\u002Fnodered.org\u002Fblog\u002F2022\u002F07\u002F14\u002Fversion-3-0-released#editing-stopped-flows",[47],"introduced a new feature"," that allows you to stop your flows from processing requests while still being able to work in the editor and deploy changes. We've now enabled this feature within FlowFuse for projects running a Node-RED 3.x stack.",[15,16905,16906,16911],{},[43,16907,16910],{"href":16908,"rel":16909},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F298",[47],"Default Team","\nIf you are a member of multiple teams you can now set your preferred default saving you from having to change teams each time you log in.",[19,16913,14948],{"id":14947},[15,16915,16124],{},[150,16917,16918,16927,16935,16943,16951],{},[153,16919,16920,16921,16926],{},"Devices now communicate to the Forge application over MQTT instead of polling ",[43,16922,16925],{"href":16923,"rel":16924},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F754",[47],"#754",". You'll need to update your Device Agent to the latest version to take advantage of this.",[153,16928,16929,16930],{},"The table views have had a major overhaul allowing you to sort and search items ",[43,16931,16934],{"href":16932,"rel":16933},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fforge-ui-components\u002Fissues\u002F28",[47],"#28",[153,16936,16937,16938],{},"If the application receives an error you now see a notification in the UI. ",[43,16939,16942],{"href":16940,"rel":16941},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F771",[47],"#771",[153,16944,16945,16946],{},"The Verification email page has been cleaned up ",[43,16947,16950],{"href":16948,"rel":16949},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F718",[47],"#718",[153,16952,16953,16954],{},"The initial Thank-you page has been cleaned up ",[43,16955,16958],{"href":16956,"rel":16957},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F648",[47],"#648",[19,16960,12748],{"id":12747},[15,16962,15013],{},[150,16964,16965,16974,16983,16992,16999,17008,17017,17026,17035],{},[153,16966,16967,16972],{},[43,16968,16971],{"href":16969,"rel":16970},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F793",[47],"Logo Distorted in Safari",[348,16973],{},[153,16975,16976,16981],{},[43,16977,16980],{"href":16978,"rel":16979},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F729",[47],"LocalFS Install doesn't check for Build Tools",[348,16982],{},[153,16984,16985,16990],{},[43,16986,16989],{"href":16987,"rel":16988},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fpull\u002F842",[47],"Users with Expired passwords can create teams",[348,16991],{},[153,16993,16994],{},[43,16995,16998],{"href":16996,"rel":16997},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fpull\u002F790",[47],"Click-jacking Vulnerability",[153,17000,17001,17006],{},[43,17002,17005],{"href":17003,"rel":17004},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fpull\u002F824",[47],"Users with can create teams without verifying email",[348,17007],{},[153,17009,17010,17015],{},[43,17011,17014],{"href":17012,"rel":17013},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowforge-nr-storage\u002Fissues\u002F17",[47],"Occasional Timeout when deploying flows",[348,17016],{},[153,17018,17019,17024],{},[43,17020,17023],{"href":17021,"rel":17022},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F833",[47],"Notification of member deletion contains internal ID",[348,17025],{},[153,17027,17028,17033],{},[43,17029,17032],{"href":17030,"rel":17031},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F334",[47],"Pressing Enter in the Team Delete modal triggers cancel",[348,17034],{},[153,17036,17037,17042],{},[43,17038,17041],{"href":17039,"rel":17040},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F751",[47],"Node-RED Isn't ready when Forge app says it is running (Docker)",[348,17043],{},[19,17045,14205],{"id":14204},[15,17047,14208],{},[150,17049,17050,17063],{},[153,17051,17052,17057,17058],{},[43,17053,17056],{"href":17054,"rel":17055},"https:\u002F\u002Fgithub.com\u002FHaroldPetersInskipp",[47],"HaroldPetersInskipp"," helped ",[43,17059,17062],{"href":17060,"rel":17061},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fpull\u002F812",[47],"updating our documentation",[153,17064,17065,17070,17071],{},[43,17066,17069],{"href":17067,"rel":17068},"https:\u002F\u002Fgithub.com\u002FSteveorevo",[47],"Steveorevo"," also ",[43,17072,17075],{"href":17073,"rel":17074},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fpull\u002F818",[47],"updated our documentation",[15,17077,16542,17078,190],{},[43,17079,14247],{"href":14246},[27,17081,4818],{"id":4817},[15,17083,6050,17084,17086],{},[4823,17085],{"value":4825},") is already running 0.8 and the stacks updated. Upgrade your project stacks to the latest version and start using the Project Link nodes now.",[15,17088,5553,17089,190],{},[43,17090,16305],{"href":16304},[27,17092,4844],{"id":4843},[15,17094,16568,17095,15423],{},[43,17096,14373],{"href":14371,"rel":17097},[47],[15,17099,16316,17100],{},[43,17101,14409],{"href":14408},[15,17103,16321,17104,14397,17106,190],{},[380,17105,14396],{},[43,17107,14402],{"href":14400,"rel":17108},[47],{"title":77,"searchDepth":227,"depth":227,"links":17110},[17111,17112,17113,17114],{"id":15153,"depth":230,"text":15154},{"id":14947,"depth":230,"text":14948},{"id":12747,"depth":230,"text":12748},{"id":14204,"depth":230,"text":14205,"children":17115},[17116,17117],{"id":4817,"depth":233,"text":4818},{"id":4843,"depth":233,"text":4844},"2022-08-04","Inter-Project Communication, Default Teams, and realtime device management.",{"excerpt":17121},{"type":12,"value":17122},[17123],[15,17124,16862],{},"\u002Fblog\u002F2022\u002F08\u002Fflowforge-08-released",{"title":16856,"description":17119},{"loc":17125},"blog\u002F2022\u002F08\u002Fflowforge-08-released",[4886,270,272],"nCe_qs0G6ZQ","72hANNRO0VA1oJiZKxOR6PgyLHl4jGtQNQZ3atZMwXo",{"id":17133,"title":17134,"authors":17135,"body":17136,"cta":3,"date":17336,"description":17337,"extension":256,"image":3,"lastUpdated":3,"meta":17338,"navigation":263,"path":17343,"seo":17344,"sitemap":17345,"stem":17346,"subtitle":17337,"tags":17347,"tldr":3,"video":17348,"__hash__":17349},"blog\u002Fblog\u002F2022\u002F07\u002Fflowforge-07-released.md","FlowFuse 0.7 released",[16612],{"type":12,"value":17137,"toc":17328},[17138,17141,17144,17147,17149,17157,17165,17178,17186,17194,17196,17198,17232,17234,17236,17299,17301,17306,17310,17312,17317,17321],[15,17139,17140],{},"Rollback projects to a previous snapshot, improvements in using Devices, and more.",[15,17142,17143],{},"Keep reading for  the details of whats in this release our you can watch our 1 min roundup video of the new release above.",[15,17145,17146],{},"We're pleased to announce version 0.7 is now available. the next release of the FlowFuse application.",[19,17148,15154],{"id":15153},[15,17150,17151,17156],{},[43,17152,17155],{"href":17153,"rel":17154},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F587",[47],"Rollback","\nFlowFuse is about running Node-RED at any scale, part of that scale is having multiple users collaborate on the same project. When you are collaborating with people it's important to be able to go back in time to a known working state. As part of that we are introducing rollbacks, this means that you can now take a snapshot of your project at a point in time and then make changes safe in the knowledge that you can rollback to that previous snapshot if you need to.",[15,17158,17159,17164],{},[43,17160,17163],{"href":17161,"rel":17162},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F680",[47],"Device Environment Variables","\nIn the last release we introduced the concept of devices. We're already learning from how these are used and one feature we've added in 0.7 is Device Environment Variables. You have been able to set Environment Variables at the project level but when deploying a snapshot to multiple devices you may want to override these values for each device, for example to set a site ID. With device specific variable users are enabled to differentiate based on the context in their flows.",[15,17166,17167,17172,17173],{},[43,17168,17171],{"href":17169,"rel":17170},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowforge-nr-theme\u002F",[47],"FlowFuse Theme","\nNow that we have a stronger visual identity in the Forge application we have continued that work through to the Node-RED editor. If you create or upgrade a project with a Node-RED 3.0 stack you will see a different theme in the editor. It's still very much Node-RED but just has some subtle hints to tie it back to the FlowFuse application. We will continue to iterate on this to further integrate the experience between FlowFuse and Node-RED in both directions.\n",[74,17174],{"alt":17175,"src":17176,"title":17177},"\"Screenshot showing the FlowFuse theme when the Node-RED 3.0 stack is selected\"","\u002Fblog\u002F2022\u002F07\u002Fimages\u002Fff-07-theme.png","Screenshot showing the FlowFuse theme when the Node-RED 3.0 stack is selected",[15,17179,17180,17185],{},[43,17181,17184],{"href":17182,"rel":17183},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F380",[47],"ProjectTypes","\nThe introduction of ProjectTypes is a way to group Stacks together that share common characteristics - such as memory\u002Fcpu limits, or the availability of particular features. In platforms with billing enabled, such as our own FlowFuse Cloud, the ProjectTypes can have different price points set on them. Within FlowFuse Cloud, you'll see we've introduced the Small ProjectType - which applies to all existing projects on the platform.",[15,17187,17188,17193],{},[43,17189,17192],{"href":17190,"rel":17191},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F694",[47],"Stack Versions","\nThis allows an admin to link different stacks together in their lineage. This allows administrators to nudge users to new Node-RED versions or upgrade pre-installed dependencies when running in a container environment. Any users with projects on an old version will be prompted that there is an update available, making it even easier to stay up to date with Node-RED versions when you build your flows on FlowFuse.",[19,17195,14948],{"id":14947},[15,17197,16124],{},[150,17199,17200,17208,17216,17224],{},[153,17201,17202,17203],{},"The Team Switch menu has been moved to a more prominent position in the interface, this also makes it easier to see how to create a new team. ",[43,17204,17207],{"href":17205,"rel":17206},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F616",[47],"#616",[153,17209,17210,17211],{},"Notifications have had an overhaul, you will now see waiting invites on all pages. ",[43,17212,17215],{"href":17213,"rel":17214},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F515",[47],"#515",[153,17217,17218,17219],{},"If you are running your own copy of FlowFuse you can now see the version details in the admin pages ",[43,17220,17223],{"href":17221,"rel":17222},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F655",[47],"#655",[153,17225,17226,17227],{},"Device polling is no longer an INFO level message  filling the log on your devices ",[43,17228,17231],{"href":17229,"rel":17230},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fdevice-agent\u002Fissues\u002F10",[47],"#10",[19,17233,12748],{"id":12747},[15,17235,15013],{},[150,17237,17238,17247,17255,17264,17272,17281,17290],{},[153,17239,17240,17245],{},[43,17241,17244],{"href":17242,"rel":17243},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fdevice-agent\u002Fissues\u002F7",[47],"Devices now listen on all Interfaces allowing you to run local http servers",[348,17246],{},[153,17248,17249,17253],{},[43,17250,17252],{"href":17242,"rel":17251},[47],"Solved an issue where a device gets an error  unknown device",[348,17254],{},[153,17256,17257,17262],{},[43,17258,17261],{"href":17259,"rel":17260},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F507",[47],"The Audit Log in the Forge app displays the correct IP when a user logs in to Node-RED",[348,17263],{},[153,17265,17266,17270],{},[43,17267,17269],{"href":17259,"rel":17268},[47],"Resolved an issue with devices downloading snaphots from legacy stacks",[348,17271],{},[153,17273,17274,17279],{},[43,17275,17278],{"href":17276,"rel":17277},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F735",[47],"Fixed an error where objects in the Node-RED log would hang the log page",[348,17280],{},[153,17282,17283,17288],{},[43,17284,17287],{"href":17285,"rel":17286},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F745",[47],"Next Billing Date is now shown correctly",[348,17289],{},[153,17291,17292,17297],{},[43,17293,17296],{"href":17294,"rel":17295},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F689",[47],"Fixed a bug where the loading page would flash during polling",[348,17298],{},[27,17300,4818],{"id":4817},[15,17302,6050,17303,17305],{},[4823,17304],{"value":4825},") is already running 0.7 - ready for\nyou to try out rollbacks and the new theme.",[15,17307,5553,17308,190],{},[43,17309,16305],{"href":16304},[27,17311,4844],{"id":4843},[15,17313,16568,17314,15423],{},[43,17315,14373],{"href":14371,"rel":17316},[47],[15,17318,16316,17319],{},[43,17320,14409],{"href":14408},[15,17322,16321,17323,14397,17325,190],{},[380,17324,14396],{},[43,17326,14402],{"href":14400,"rel":17327},[47],{"title":77,"searchDepth":227,"depth":227,"links":17329},[17330,17331,17332],{"id":15153,"depth":230,"text":15154},{"id":14947,"depth":230,"text":14948},{"id":12747,"depth":230,"text":12748,"children":17333},[17334,17335],{"id":4817,"depth":233,"text":4818},{"id":4843,"depth":233,"text":4844},"2022-07-07","Rollbacks, Device Environment Variables and a FlowFuse Theme",{"excerpt":17339},{"type":12,"value":17340},[17341],[15,17342,17140],{},"\u002Fblog\u002F2022\u002F07\u002Fflowforge-07-released",{"title":17134,"description":17337},{"loc":17343},"blog\u002F2022\u002F07\u002Fflowforge-07-released",[4886,270,272],"rl_Ln2_uEtg","HV6ixd4qi_ukPKbytjazhfAIdGCW7VT7necWdwyPmNc",{"id":17351,"title":17352,"authors":17353,"body":17354,"cta":3,"date":17473,"description":17474,"extension":256,"image":3,"lastUpdated":3,"meta":17475,"navigation":263,"path":17482,"seo":17483,"sitemap":17484,"stem":17485,"subtitle":17474,"tags":17486,"tldr":3,"video":3,"__hash__":17487},"blog\u002Fblog\u002F2022\u002F06\u002Fflowforge-06-released.md","FlowFuse 0.6 released",[1472],{"type":12,"value":17355,"toc":17466},[17356,17359,17362,17364,17373,17376,17379,17382,17396,17399,17402,17409,17412,17425,17429,17432,17435,17438,17440,17445,17449,17451,17456,17459],[15,17357,17358],{},"Node-RED is well known for its role in IoT solutions - which often means running\nflows on devices.",[15,17360,17361],{},"This was something we always wanted to support in FlowFuse and with this release\nwe're taking the next steps in that direction.",[27,17363,4141],{"id":16100},[15,17365,17366,17367,17372],{},"This release includes the first alpha release of the ",[43,17368,17371],{"href":17369,"rel":17370},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fdevice-agent",[47],"FlowFuse Device Agent",". This is a small piece of node.js software that can be\ninstalled on a device, such as a Raspberry Pi. It connects back to the FlowFuse\nplatform to get the Node-RED flows it should be running.",[15,17374,17375],{},"This builds on the work we added in 0.5 that lets you register the device,\ngenerate credentials for it and pick which Project in your team it should be assigned\nto.",[15,17377,17378],{},"It makes it super simple to start developing your flows in FlowFuse and push them\nout to a group of devices with a couple clicks.",[15,17380,17381],{},"There's plenty of work still to come on the Devices feature. Under the covers\nit uses an HTTP polling approach to check for updates. That was a pragmatic choice\nto get something working - but it isn't our long term strategy. We'll be working\ntowards a more IoT-native MQTT\u002FWebSocket appoach in the coming releases.",[150,17383,17384,17389],{},[153,17385,17386],{},[43,17387,17388],{"href":13951},"Devices documentation",[153,17390,17391],{},[43,17392,17395],{"href":17393,"rel":17394},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F446",[47],"Epic #446 - Devices",[27,17397,4036],{"id":17398},"snapshots",[15,17400,17401],{},"This release adds the ability to create Snapshots of your projects. These are\npoint-in-time backups of your project's flows, credentials and settings.",[15,17403,17404,17405,17408],{},"With this release we support ",[128,17406,17407],{},"creating"," snapshots and pushing them to devices.",[15,17410,17411],{},"We don't have the ability to revert a project back to a previous snapshot, but\nthat will come soon.",[150,17413,17414,17419],{},[153,17415,17416],{},[43,17417,17418],{"href":4035},"Snapshot documentation",[153,17420,17421],{},[43,17422,17424],{"href":17153,"rel":17423},[47],"Story #587 - Snapshot\u002FRollback",[27,17426,17428],{"id":17427},"other-updates","Other updates",[15,17430,17431],{},"Beyond these headline features, there are a number of smaller, but just as useful\nitems in this release.",[15,17433,17434],{},"We've continued with the rebranding work started in 0.5 with some more improvements\nto the overall UX of the platform. Little touches like placeholder loading graphics\ngive the UI a more responsive feel.",[15,17436,17437],{},"When you log out of the platform we now also automatically log you out of any\nNode-RED editor sessions you have open.",[27,17439,4818],{"id":4817},[15,17441,6050,17442,17444],{},[4823,17443],{"value":4825},") is already running 0.6 - ready for\nyou to start creating snapshots and adding devices right now.",[15,17446,5553,17447,190],{},[43,17448,16305],{"href":16304},[27,17450,4844],{"id":4843},[15,17452,16568,17453,190],{},[43,17454,14373],{"href":14371,"rel":17455},[47],[15,17457,17458],{},"That also includes if you have any feedback or feature requests.",[15,17460,16321,17461,14397,17463,190],{},[380,17462,14396],{},[43,17464,14402],{"href":14400,"rel":17465},[47],{"title":77,"searchDepth":227,"depth":227,"links":17467},[17468,17469,17470,17471,17472],{"id":16100,"depth":233,"text":4141},{"id":17398,"depth":233,"text":4036},{"id":17427,"depth":233,"text":17428},{"id":4817,"depth":233,"text":4818},{"id":4843,"depth":233,"text":4844},"2022-06-19","Adding Devices to the platform",{"excerpt":17476},{"type":12,"value":17477},[17478,17480],[15,17479,17358],{},[15,17481,17361],{},"\u002Fblog\u002F2022\u002F06\u002Fflowforge-06-released",{"title":17352,"description":17474},{"loc":17482},"blog\u002F2022\u002F06\u002Fflowforge-06-released",[4886,270,272],"maRLwnDfBXoQl_M3pZ2RNXnKOmBRWC8HTv48IHKs3qg",{"id":17489,"title":17490,"authors":17491,"body":17492,"cta":3,"date":17638,"description":17639,"extension":256,"image":3,"lastUpdated":3,"meta":17640,"navigation":263,"path":17645,"seo":17646,"sitemap":17647,"stem":17648,"subtitle":17639,"tags":17649,"tldr":3,"video":3,"__hash__":17650},"blog\u002Fblog\u002F2022\u002F05\u002Fflowforge-05-released.md","FlowFuse 0.5 released",[1472],{"type":12,"value":17493,"toc":17631},[17494,17497,17500,17503,17508,17517,17521,17524,17527,17530,17538,17541,17564,17568,17571,17580,17583,17586,17589,17592,17595,17598,17601,17608,17610,17615,17617,17622,17624],[15,17495,17496],{},"The cycle continues with our next regularly scheduled release, bringing a fresh\nnew look to the platform.",[15,17498,17499],{},"Since joining the team, Joe has been hard at work bringing a more consistent\ndesign language to what we're doing. This release brings a lot of his hardwork\nto the platform itself.",[15,17501,17502],{},"There's more to be done on the individual pages of the platform, but this\ngives us a solid framework to build on.",[15,17504,17505],{},[74,17506],{"alt":77,"src":17507},"\u002Fblog\u002F2022\u002F05\u002Fimages\u002Fff-05-dashboard.png",[150,17509,17510],{},[153,17511,17512],{},[43,17513,17516],{"href":17514,"rel":17515},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F430",[47],"Epic #430 - Rebrand Forage App",[27,17518,17520],{"id":17519},"copying-projects","Copying Projects",[15,17522,17523],{},"One of the usage scenarios we want to support is having an easy way to have separate\ntest and production environments. The previous release added the ability to configure\nenvironment variables on individual projects.",[15,17525,17526],{},"This release unlocks the next piece of the puzzle - making it easy to copy flows\nbetween projects.",[15,17528,17529],{},"The Project settings page has two new options:",[150,17531,17532,17535],{},[153,17533,17534],{},"Copy Project lets you create a complete copy of the project.",[153,17536,17537],{},"Export to existing project lets you copy over selected aspects of the project\nover to another project.",[15,17539,17540],{},"In both cases, you get to pick what parts of the project should be copied.",[150,17542,17543,17550,17557],{},[153,17544,17545],{},[43,17546,17549],{"href":17547,"rel":17548},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F268",[47],"Epic #268 - Export Project",[153,17551,17552],{},[43,17553,17556],{"href":17554,"rel":17555},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F271",[47],"Story #271 - Duplicate Project",[153,17558,17559],{},[43,17560,17563],{"href":17561,"rel":17562},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F272",[47],"Story #272 - Export to Existing Project",[27,17565,17567],{"id":17566},"improve-billing-information","Improve Billing Information",[15,17569,17570],{},"We've been getting some great feedback from the users of FlowFuse Cloud. One of the\nareas we identified as needing some more clarity was around the point users are\nasked to setup their billing information.",[150,17572,17573],{},[153,17574,17575],{},[43,17576,17579],{"href":17577,"rel":17578},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F563",[47],"Story #563 - Improve Information on billing",[27,17581,17582],{"id":1234},"Edge Devices",[15,17584,17585],{},"Whilst we always want to deliver new functionality to end users in each release,\nsometimes bits of work don't fit naturally into a single four week iteration.",[15,17587,17588],{},"That's the case here with some of the preliminary work we've done to introduce\nthe idea of Edge Devices to the platform.",[15,17590,17591],{},"The goal here is to provide a way to easily deploy and manage Node-RED projects\non remote devices.",[15,17593,17594],{},"This release introduces a bunch of work to the core app and front-end to begin\nintroducing the concept of a Device. It includes the basic workflows for registering\na device on the platform and being able to assign it to a team.",[15,17596,17597],{},"The whole feature is hidden behind a feature flag so users on FlowFuse Cloud won't\nsee any of this quite yet.",[15,17599,17600],{},"The next release will introduce the Edge Agent piece of this - the bit that runs\non devices.",[150,17602,17603],{},[153,17604,17605],{},[43,17606,17395],{"href":17393,"rel":17607},[47],[27,17609,4818],{"id":4817},[15,17611,17612,17613,190],{},"If you installed a previous version of FlowFuse  and want to upgrade, our documentation provides a\nguide for ",[43,17614,16305],{"href":16304},[27,17616,4844],{"id":4843},[15,17618,16568,17619,190],{},[43,17620,14373],{"href":14371,"rel":17621},[47],[15,17623,17458],{},[15,17625,16321,17626,14397,17628,190],{},[380,17627,14396],{},[43,17629,14402],{"href":14400,"rel":17630},[47],{"title":77,"searchDepth":227,"depth":227,"links":17632},[17633,17634,17635,17636,17637],{"id":17519,"depth":233,"text":17520},{"id":17566,"depth":233,"text":17567},{"id":1234,"depth":233,"text":17582},{"id":4817,"depth":233,"text":4818},{"id":4843,"depth":233,"text":4844},"2022-05-12","Bringing a new look to the platform",{"excerpt":17641},{"type":12,"value":17642},[17643],[15,17644,17496],{},"\u002Fblog\u002F2022\u002F05\u002Fflowforge-05-released",{"title":17490,"description":17639},{"loc":17645},"blog\u002F2022\u002F05\u002Fflowforge-05-released",[4886,270,272],"nutSXrnM5SlyB4e1RrPAq-l_3LwFmfUs-8nO2kXxP5M",{"id":17652,"title":17653,"authors":17654,"body":17655,"cta":3,"date":17827,"description":17828,"extension":256,"image":3,"lastUpdated":3,"meta":17829,"navigation":263,"path":17834,"seo":17835,"sitemap":17836,"stem":17837,"subtitle":17828,"tags":17838,"tldr":3,"video":3,"__hash__":17839},"blog\u002Fblog\u002F2022\u002F04\u002Fflowforge-04-released.md","FlowFuse 0.4 released",[16612],{"type":12,"value":17656,"toc":17818},[17657,17660,17668,17672,17675,17683,17686,17689,17703,17707,17720,17734,17738,17747,17761,17765,17771,17774,17777,17779,17783,17785,17790,17792,17799,17801,17808,17815],[15,17658,17659],{},"This release of the FlowFuse adds a seemingly small, but significant new feature.",[15,17661,9969,17662,17667],{},[43,17663,17666],{"href":17664,"rel":17665},"https:\u002F\u002Fnodered.org\u002Fabout\u002Freleases\u002F",[47],"Node-RED 3.0 fast approaching"," we've been making sure we are ready to support this.",[27,17669,17671],{"id":17670},"upgrading-node-red","Upgrading Node-RED",[15,17673,17674],{},"The goal of FlowFuse is to be the best way to run Node-RED at any scale, whether that's many users or many instances. Node-RED is a constantly developing as a platform and therefore part of running Node-RED is also upgrading the version you are running.",[15,17676,17677,17678,17682],{},"With the 0.4 release today we've made that super simple in FlowFuse. Last month we introduced the concept of ",[43,17679,17681],{"href":17680},"\u002Fdocs\u002Fuser\u002Fconcepts\u002F#stack","Project Stacks",". One of the key elements of a Stack was the version of Node-RED in use. Initially this may have seemed fairly basic, when you create a new project you usually want to use the latest version of Node-RED. However what happens when a new version is released and you have an existing project?\nNow you can change the stack that a project is running on, which in turn will change the version of Node-RED. This is a simple process from the project settings, it only requires a short period of downtime while the project restarts on the new stack, typically around 10-15 seconds.",[15,17684,17685],{},"Our driver to get this feature into the 0.4 release is the approaching release of Node-RED 3.0, now we know that we can be ready to offer our users Node-RED 3.0 as soon as it is released.",[15,17687,17688],{},"We will also be making available the Beta's of Node-RED 3.0 within FlowFuse Cloud,  this becomes a great way to test out the new features without having to touch your own environments.",[150,17690,17691,17698],{},[153,17692,17693],{},[43,17694,17697],{"href":17695,"rel":17696},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F288",[47],"Story #288 - Change Stacks",[153,17699,17700],{},[43,17701,17702],{"href":13971},"Docs",[27,17704,17706],{"id":17705},"environment-variables","Environment Variables",[15,17708,17709,17710,17714,17715,17719],{},"Another key new feature we are introducing is the ability to set and manage environment variables within your projects.\nEnvironment Variables are a key tool when building applications as they allow you to to separate the configuration of your system from the logic in the code. Even in Low-Code platforms this is an important design pattern. Environment variables are fully integrated into ",[43,17711,17713],{"href":17712},"\u002Fdocs\u002Fuser\u002Fconcepts\u002F#template","Templates"," that we introduced last month so they can be set both at the platform level or on an individual project.\nOur plans for the next release will make these even more useful as we introduce the ability to ",[43,17716,17718],{"href":17554,"rel":17717},[47],"duplicate a project"," and then modify those variables for the new project.",[150,17721,17722,17729],{},[153,17723,17724],{},[43,17725,17728],{"href":17726,"rel":17727},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F225",[47],"Story #225 - Project Environment Variables",[153,17730,17731],{},[43,17732,17702],{"href":17733},"\u002Fdocs\u002Fuser\u002Fenvvar\u002F",[27,17735,17737],{"id":17736},"theres-more","There's more",[15,17739,17740,17741,17746],{},"There are many more improvements in this release, such as the ability to ",[43,17742,17745],{"href":17743,"rel":17744},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F239",[47],"Set the timezone"," your project is running in, we've also been iterating on our billing experience as we've welcomed the first paying customers to FlowFuse Cloud.",[15,17748,17749,17750,17755,17756,17760],{},"Finally we're very happy that we've had our first external contribution to the code base, as an Open Core company we believe strongly that Open Source lives at the heart of everything we do.\nWe would like to say a big thank-you to ",[43,17751,17754],{"href":17752,"rel":17753},"https:\u002F\u002Ffakocodes.netlify.app\u002F",[47],"Fakorede Damilola Idris"," for his work on fixing a ",[43,17757,15723],{"href":17758,"rel":17759},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F424",[47]," in the UI.",[27,17762,17764],{"id":17763},"getting-started-with-flowfuse","Getting started with FlowFuse",[15,17766,17767,17768,190],{},"The documentation provides a guide for ",[43,17769,17770],{"href":16289},"installing FlowFuse on a local server",[15,17772,17773],{},"If you haven't played with FlowFuse yet, here's a more complete walk-through\nof the platform:",[1022,17775],{"videoid":17776,"params":1025,"style":13913,"title":1027},"YYZDx8n17Ys",[27,17778,4818],{"id":4817},[15,17780,17612,17781,190],{},[43,17782,16305],{"href":16304},[27,17784,4844],{"id":4843},[15,17786,16568,17787,190],{},[43,17788,14373],{"href":14371,"rel":17789},[47],[15,17791,17458],{},[15,17793,16321,17794,14397,17796,190],{},[380,17795,14396],{},[43,17797,14402],{"href":14400,"rel":17798},[47],[27,17800,5997],{"id":2321},[15,17802,17803,17804,190],{},"Our regular release cycle puts the next release on Thursday 12th May.\nWe will be building on features in the last few releases around managing your projects and using templates, we're also  setting the foundations of our work to ",[43,17805,17807],{"href":17393,"rel":17806},[47],"manage Node-RED on your own devices running at the Edge",[15,17809,17810,17811,190],{},"For more information, check out the ",[43,17812,17814],{"href":17813},"\u002Fblog\u002F2022\u002F02\u002Fannouncing-flowforge-cloud\u002F","announcement blog post",[15,17816,17817],{},"You can also sign up to our general mailing list below if you want to hear more\nabout the work we're doing.",{"title":77,"searchDepth":227,"depth":227,"links":17819},[17820,17821,17822,17823,17824,17825,17826],{"id":17670,"depth":233,"text":17671},{"id":17705,"depth":233,"text":17706},{"id":17736,"depth":233,"text":17737},{"id":17763,"depth":233,"text":17764},{"id":4817,"depth":233,"text":4818},{"id":4843,"depth":233,"text":4844},{"id":2321,"depth":233,"text":5997},"2022-04-14","Getting ready for Node-RED 3.0",{"excerpt":17830},{"type":12,"value":17831},[17832],[15,17833,17659],{},"\u002Fblog\u002F2022\u002F04\u002Fflowforge-04-released",{"title":17653,"description":17828},{"loc":17834},"blog\u002F2022\u002F04\u002Fflowforge-04-released",[4886,270,272],"7Xju2CohqFurZOeKAdRS6SjtxI9ituRCPLtQ4Sl74Bs",{"id":17841,"title":17842,"authors":17843,"body":17844,"cta":3,"date":17981,"description":17982,"extension":256,"image":3,"lastUpdated":3,"meta":17983,"navigation":263,"path":17988,"seo":17989,"sitemap":17990,"stem":17991,"subtitle":17982,"tags":17992,"tldr":3,"video":3,"__hash__":17993},"blog\u002Fblog\u002F2022\u002F03\u002Fflowforge-03-released.md","FlowFuse 0.3 released",[1472],{"type":12,"value":17845,"toc":17973},[17846,17849,17852,17856,17859,17862,17865,17868,17871,17874,17877,17893,17897,17900,17903,17906,17909,17915,17924,17926,17932,17934,17936,17938,17943,17945,17950,17952,17959,17961,17964,17967],[15,17847,17848],{},"The FlowFuse 0.3 release brings us closer to the launch of FlowFuse Cloud.\nFind out more about what's in this new release.",[15,17850,17851],{},"This release of the FlowFuse platform brings some significant new features that\nwill underpin more of what is to come.",[27,17853,17855],{"id":17854},"project-stacks-templates","Project Stacks & Templates",[15,17857,17858],{},"When we think about what a makes a Project inside FlowFuse, the simple answer\nis Node-RED.",[15,17860,17861],{},"The more complete answer is: a version of Node-RED, a version of Node.js, some\nmemory, some CPU and a bunch of Node-RED settings to customise the instance.",[15,17863,17864],{},"In a platform like FlowFuse, it's important to have the tools to manage all\nof these things.",[15,17866,17867],{},"This is where Project Stacks and Template come in.",[15,17869,17870],{},"A Project Stack defines the underlying characteristics of the Node-RED process -\nor the container it is running in. For example, with our Local deployment model,\nit defines the version of Node-RED to use and how much memory the process should\ntry to use. In our container based deployment models, the stack identifies the\ncontainer to use for the project, along with memory and CPU limits.",[15,17872,17873],{},"In a future release, this will be the way we will support upgrading the version\nof Node-RED a project is using - and doing so in a well managed way. An Administrator\nwill be able to create a new Stack containing the new version of Node-RED.\nProject owners will then be able to update their projects to use the new Stack -\nat a time that is convenient to them.",[15,17875,17876],{},"A Project Template is more about how the Node-RED instance is configured - exposing\nthe options a user would traditional modify in their Node-RED settings file.\nWith this release, we're not exposing a lot of settings as the focus has been\nmore on the underlying Template concept. But it will be the basis for gradually\nexposing more options for customisation in the future.",[150,17878,17879,17886],{},[153,17880,17881],{},[43,17882,17885],{"href":17883,"rel":17884},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F285",[47],"Epic #285 - Project Stacks",[153,17887,17888],{},[43,17889,17892],{"href":17890,"rel":17891},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F141",[47],"Epic #141 - Project Templates",[27,17894,17896],{"id":17895},"billing-integration","Billing Integration",[15,17898,17899],{},"With our open core philosophy, the heart of the FlowFuse platform is open source\nand available under the Apache 2 license for anyone to use.",[15,17901,17902],{},"But the plan was always to have certain features that were licensed separately.",[15,17904,17905],{},"This release brings the first of those features - Stripe Billing Integration. This\nfeature brings the ability to require a Team to have a Stripe Billing agreement\nin place and to be able to charge on a per-project basis within that Team.",[15,17907,17908],{},"Being able to charge is an important feature for any commercial platform, and\nwith our own FlowFuse Cloud launching soon, we needed to get this feature in\nplace today.",[15,17910,17911,17912,17914],{},"We've structured the code in the repository and updated the LICENSE file to make it\nvery clear what parts of the code base are ",[128,17913,1676],{}," covered by the Apache 2 license.",[150,17916,17917],{},[153,17918,17919],{},[43,17920,17923],{"href":17921,"rel":17922},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F224",[47],"Epic #224 - Billing",[27,17925,17764],{"id":17763},[15,17927,17767,17928,190],{},[43,17929,17770],{"href":17930,"rel":17931},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Ftree\u002Fmain\u002Fdocs",[47],[15,17933,17773],{},[1022,17935],{"videoid":17776,"params":1025,"style":13913,"title":1027},[27,17937,4818],{"id":4817},[15,17939,17940,17941,190],{},"If you installed FlowFuse 0.1 or 0.2 and want to upgrade, our documentation provides a\nguide for ",[43,17942,16305],{"href":4832},[27,17944,4844],{"id":4843},[15,17946,16568,17947,190],{},[43,17948,14373],{"href":14371,"rel":17949},[47],[15,17951,17458],{},[15,17953,16321,17954,14397,17956,190],{},[380,17955,14396],{},[43,17957,14402],{"href":14400,"rel":17958},[47],[27,17960,5997],{"id":2321},[15,17962,17963],{},"Our regular release cycle puts the next release on Thursday 14th April.",[15,17965,17966],{},"We're still in planning stage for the release, but we'll also be beginning to invite\npeople from the waiting list to sign-up to FlowFuse Cloud.",[15,17968,17810,17969,17972],{},[43,17970,17971],{"href":17813},"annoucement blog post",".\nYou can also sign up to our general mailing list below if you want to hear more\nabout the work we're doing.",{"title":77,"searchDepth":227,"depth":227,"links":17974},[17975,17976,17977,17978,17979,17980],{"id":17854,"depth":233,"text":17855},{"id":17895,"depth":233,"text":17896},{"id":17763,"depth":233,"text":17764},{"id":4817,"depth":233,"text":4818},{"id":4843,"depth":233,"text":4844},{"id":2321,"depth":233,"text":5997},"2022-03-17","Moving towards the launch of FlowFuse Cloud",{"excerpt":17984},{"type":12,"value":17985},[17986],[15,17987,17848],{},"\u002Fblog\u002F2022\u002F03\u002Fflowforge-03-released",{"title":17842,"description":17982},{"loc":17988},"blog\u002F2022\u002F03\u002Fflowforge-03-released",[4886,270,272],"yrZGx7uSPpdKgHoBEpEGMqeM-ieKbo5UpjTwJxoSIc8",{"id":17995,"title":17996,"authors":17997,"body":17999,"cta":3,"date":18045,"description":18046,"extension":256,"image":3,"lastUpdated":3,"meta":18047,"navigation":263,"path":18057,"seo":18058,"sitemap":18059,"stem":18060,"subtitle":18061,"tags":18062,"tldr":3,"video":3,"__hash__":18063},"blog\u002Fblog\u002F2022\u002F02\u002Fannouncing-flowforge-cloud.md","Announcing FlowFuse Cloud",[17998],"zeger-jan-van-de-weg",{"type":12,"value":18000,"toc":18042},[18001,18010,18013,18016,18020,18028,18031],[15,18002,18003,18004,18009],{},"As an open core company, anyone is free to ",[43,18005,18008],{"href":18006,"rel":18007},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Ftree\u002F9219e81399eaf52fb0ee5573707a52f5520fbfdd\u002Fdocs\u002Finstall",[47],"download and install","\nour platform. In many cases this is a great solution, it\nallows for custom setups in your own environment. We know this isn't for everyone\nthough, some people just want to start building with Node-RED without having to manage their servers.",[15,18011,18012],{},"We are excited to announce FlowFuse Cloud, a hosted\nNode-RED as a service offering and today we are opening the waitlist.",[15,18014,18015],{},"Our waitlist captures your email, and we'll reach out to you on that address once your account is created.",[27,18017,18019],{"id":18018},"starting-operations","Starting operations",[15,18021,18022,18023,18027],{},"After having released v0.2 recently, we're now working on v0.3 that will include\na user flow for ",[43,18024,18026],{"href":17921,"rel":18025},[47],"billing",".\nWhen that work has been done and deployed people on the waitlist will slowly be invited to the platform.\nCurrently that's scheduled for April 1st, no joke, although it could happen either sooner\nor later.\nMore details on the exact pricing will be availble nearer the time.",[15,18029,18030],{},"Once you are invited you will be able to;",[150,18032,18033,18036,18039],{},[153,18034,18035],{},"Create multiple Node-RED projects hosted on flowforge.cloud,",[153,18037,18038],{},"Invite team members to collaborate on those projects,",[153,18040,18041],{},"And many more features will automatically become availble with each new release.",{"title":77,"searchDepth":227,"depth":227,"links":18043},[18044],{"id":18018,"depth":233,"text":18019},"2022-02-23","Join the waitlist for our cloud offering.",{"excerpt":18048},{"type":12,"value":18049},[18050,18055],[15,18051,18003,18052,18009],{},[43,18053,18008],{"href":18006,"rel":18054},[47],[15,18056,18012],{},"\u002Fblog\u002F2022\u002F02\u002Fannouncing-flowforge-cloud",{"title":17996,"description":18046},{"loc":18057},"blog\u002F2022\u002F02\u002Fannouncing-flowforge-cloud","Hosting your Node-RED, so you don't have to.",[4886,270,271,272],"L5-0dyQQ63PfU78RjGuIU6mG1QaA4OD-Ei_c5VCXPUA",{"id":18065,"title":18066,"authors":18067,"body":18068,"cta":3,"date":18152,"description":18153,"extension":256,"image":3,"lastUpdated":3,"meta":18154,"navigation":263,"path":18159,"seo":18160,"sitemap":18161,"stem":18162,"subtitle":18153,"tags":18163,"tldr":3,"video":3,"__hash__":18164},"blog\u002Fblog\u002F2022\u002F02\u002Fflowforge-02-released.md","FlowFuse 0.2 released",[1472],{"type":12,"value":18069,"toc":18146},[18070,18073,18076,18079,18082,18091,18093,18098,18101,18103,18105,18110,18112,18117,18119,18126,18128,18140,18143],[15,18071,18072],{},"Four weeks have passed since our initial release of FlowFuse, and we're happy\nto release v0.2 today as we continue moving forward and evolve the platform.",[15,18074,18075],{},"There aren't lots of headline features in this release to tell you about as a lot\nof the work has been on the internals, as well as responding to some of the early\nfeedback from the community.",[15,18077,18078],{},"Features like improving the test framework, and building a database migration\nframework may not sound too exciting to the end user, but they are critical pieces\nwhen build a platform that needs to be stable and easy to upgrade.",[15,18080,18081],{},"We've also been doing work to get our own instance of the platform running in the\nCloud - and figuring out how to automate as much of that as possible. Aside\nfrom being a key way to test the platform, it helps validate the work we're doing\nfor when others come to run it in that way. It also lays the ground work for our\nown cloud service we'll be sharing more about in the coming days.",[15,18083,18084,18085,18090],{},"The full change-log for the core of the platform is available ",[43,18086,18089],{"href":18087,"rel":18088},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fblob\u002Fv0.2.0\u002FCHANGELOG.md",[47],"on GitHub",".\nBut with a further 15 repositories containing different components, each with its\nown change-log, we're still thinking about how best to share a single view of the\nupdates.",[27,18092,17764],{"id":17763},[15,18094,17767,18095,190],{},[43,18096,17770],{"href":17930,"rel":18097},[47],[15,18099,18100],{},"If you haven't played with FlowFuse 0.1 yet, here's a more complete walk-through\nof the platform:",[1022,18102],{"videoid":17776,"params":1025,"style":13913,"title":1027},[27,18104,4818],{"id":4817},[15,18106,18107,18108,190],{},"If you installed FlowFuse 0.1 and want to upgrade, our documentation provides a\nguide for ",[43,18109,16305],{"href":4832},[27,18111,4844],{"id":4843},[15,18113,16568,18114,190],{},[43,18115,14373],{"href":14371,"rel":18116},[47],[15,18118,17458],{},[15,18120,16321,18121,14397,18123,190],{},[380,18122,14396],{},[43,18124,14402],{"href":14400,"rel":18125},[47],[27,18127,5997],{"id":2321},[15,18129,18130,18131,3884,18135,18139],{},"Our regular release cycle puts the next release on Thursday 17th March. We've\ngot some key features planned in this release around ",[43,18132,18134],{"href":17890,"rel":18133},[47],"Project Templates",[43,18136,18138],{"href":17883,"rel":18137},[47],"Stacks"," -\nwhich will underpin how you can customise Node-RED within FlowFuse.",[15,18141,18142],{},"We'll also have some exciting news to share about our own hosted service you'll\nbe able to sign-up for.",[15,18144,18145],{},"Sign up to the mailing list below if you want to hear more about the work we're\ndoing.",{"title":77,"searchDepth":227,"depth":227,"links":18147},[18148,18149,18150,18151],{"id":17763,"depth":233,"text":17764},{"id":4817,"depth":233,"text":4818},{"id":4843,"depth":233,"text":4844},{"id":2321,"depth":233,"text":5997},"2022-02-17","Keeping the releases flowing of our open platform for Node-RED",{"excerpt":18155},{"type":12,"value":18156},[18157],[15,18158,18072],{},"\u002Fblog\u002F2022\u002F02\u002Fflowforge-02-released",{"title":18066,"description":18153},{"loc":18159},"blog\u002F2022\u002F02\u002Fflowforge-02-released",[4886,270,272],"MkKvMmCvc4ALnp31cp096gqBNHaZwEh7ZQ8pQ65RONg",{"id":18166,"title":18167,"authors":18168,"body":18169,"cta":3,"date":18242,"description":18243,"extension":256,"image":3,"lastUpdated":3,"meta":18244,"navigation":263,"path":18251,"seo":18252,"sitemap":18253,"stem":18254,"subtitle":18243,"tags":18255,"tldr":3,"video":3,"__hash__":18256},"blog\u002Fblog\u002F2022\u002F01\u002Fflowforge-01-released.md","FlowFuse 0.1 released",[1472],{"type":12,"value":18170,"toc":18237},[18171,18174,18177,18180,18183,18186,18197,18200,18202,18204,18209,18212,18214,18219,18221,18223,18226,18235],[15,18172,18173],{},"For an open core company, we haven't been very open with what we're doing. That all\nchanges today with the release of FlowFuse 0.1 and making all of our repositories\npublic.",[15,18175,18176],{},"This is a significant step for the company as we look to build a platform around Node-RED.",[15,18178,18179],{},"The main question we get asked is: 'What is FlowFuse?\" - which is a very reasonable\nquestion to ask.",[15,18181,18182],{},"FlowFuse is a platform for managing Node-RED instances at scale. It lets you have\nmultiple users on the platform, organised into teams to provide proper access control\nto individual Node-RED instances, or Projects as we call them.",[15,18184,18185],{},"With the 0.1 release, we have the basic building blocks of the platform in place.",[150,18187,18188,18191,18194],{},[153,18189,18190],{},"Add multiple users to the platform",[153,18192,18193],{},"Create teams for those users",[153,18195,18196],{},"Create Node-RED projects quickly and easily through the platform UI",[15,18198,18199],{},"For a more complete walk-through of the platform in this early release, you can\nwatch this video.",[1022,18201],{"videoid":17776,"params":1025,"style":13913,"title":1027},[27,18203,17764],{"id":17763},[15,18205,17767,18206,190],{},[43,18207,17770],{"href":17930,"rel":18208},[47],[15,18210,18211],{},"We also have drivers for deploying to Docker Compose and Kubernetes based environments\nto enable a larger scale of deployment. We'll have more documentation on those options\nin the near future.",[27,18213,4844],{"id":4843},[15,18215,16568,18216,190],{},[43,18217,14373],{"href":14371,"rel":18218},[47],[15,18220,17458],{},[27,18222,5997],{"id":2321},[15,18224,18225],{},"With so much in the plan and lots of exciting features to come, we will have a\nregular cycle of releases every four weeks. So you can expect the next release, 0.2,\non Thursday 17th February.",[15,18227,18228,18229,18234],{},"As we're only at 0.1 today, there is a lot still to do. We will be following the\nprinciples of ",[43,18230,18233],{"href":18231,"rel":18232},"https:\u002F\u002Fsemver.org\u002F",[47],"Semantic Versioning"," with our releases,\nbut until we reach 1.0, there may be some disruptive changes along the way.",[15,18236,18145],{},{"title":77,"searchDepth":227,"depth":227,"links":18238},[18239,18240,18241],{"id":17763,"depth":233,"text":17764},{"id":4843,"depth":233,"text":4844},{"id":2321,"depth":233,"text":5997},"2022-01-20","Making the first release of the platform and transitioning to open development",{"excerpt":18245},{"type":12,"value":18246},[18247,18249],[15,18248,18173],{},[15,18250,18176],{},"\u002Fblog\u002F2022\u002F01\u002Fflowforge-01-released",{"title":18167,"description":18243},{"loc":18251},"blog\u002F2022\u002F01\u002Fflowforge-01-released",[4886,270,272],"l-Y1yykezdgdSsQZ1E5Xg5z00oed52y9Fv2XsMA8Lwg",1785528678282]