From b9ed56a350f5d0ba78a60b14561ed8363644921f Mon Sep 17 00:00:00 2001 From: patrickryan01 Date: Mon, 2 Nov 2026 07:21:16 -0500 Subject: [PATCH] feat(sync): flow 2.8.1 is out, so the docs are synced to it The flow install page was read against 2.8.1: the image is on amd64 and arm64 now, and the rest was unchanged, the chart included. --- src/content/docs/flow/deploying.md | 12 +++++----- src/content/docs/flow/install.md | 10 ++++----- src/content/docs/flow/overview.md | 4 ++-- src/content/docs/flow/quick-start.md | 4 ++-- src/content/docs/install/index.md | 2 +- src/content/docs/releases/flow-2-8-1.md | 29 +++++++++++++++++++++++++ src/content/docs/releases/index.md | 3 ++- src/data/sync.json | 21 +++++++++++++----- src/pinned/flow/install.md | 4 ++-- 9 files changed, 65 insertions(+), 24 deletions(-) create mode 100644 src/content/docs/releases/flow-2-8-1.md diff --git a/src/content/docs/flow/deploying.md b/src/content/docs/flow/deploying.md index 0c5ce00..4c0813b 100644 --- a/src/content/docs/flow/deploying.md +++ b/src/content/docs/flow/deploying.md @@ -6,7 +6,7 @@ editUrl: false --- Three ways in, all from the same image, `ghcr.io/hotloop-io/hotloop-flow`, built -for amd64, with arm64 following in 2.8.1: +for amd64 and arm64: | You have | Use | |---|---| @@ -70,7 +70,7 @@ To choose your own instead: ```bash helm install line3-flows hotloop-flow/hotloop-flow \ - --set auth.passwordHash="$(podman run --rm ghcr.io/hotloop-io/hotloop-flow:2.8.0 hash-password -password 'something-long')" \ + --set auth.passwordHash="$(podman run --rm ghcr.io/hotloop-io/hotloop-flow:2.8.1 hash-password -password 'something-long')" \ --set hotloopFlow.credentialSecret="$(openssl rand -hex 32)" ``` @@ -191,7 +191,7 @@ so the unit can be copied around, committed and reviewed without carrying anything that matters. ```bash -printf '%s' "$(podman run --rm ghcr.io/hotloop-io/hotloop-flow:2.8.0 \ +printf '%s' "$(podman run --rm ghcr.io/hotloop-io/hotloop-flow:2.8.1 \ hash-password -password 'something-long')" | podman secret create hotloop-flow-admin-hash - printf '%s' "$(openssl rand -hex 32)" | podman secret create hotloop-flow-credential-secret - ``` @@ -210,7 +210,7 @@ After=network-online.target [Container] ContainerName=hotloop-flow -Image=ghcr.io/hotloop-io/hotloop-flow:2.8.0 +Image=ghcr.io/hotloop-io/hotloop-flow:2.8.1 PublishPort=1880:1880 Volume=hotloop-flow-data:/data Environment=HOTLOOP_FLOW_ADMIN_USER=admin @@ -271,9 +271,9 @@ To try it, not to run a line on: ```bash podman run --rm -p 1880:1880 -v hotloop-flow-data:/data \ -e HOTLOOP_FLOW_ADMIN_USER=admin \ - -e HOTLOOP_FLOW_ADMIN_PASSWORD_HASH="$(podman run --rm ghcr.io/hotloop-io/hotloop-flow:2.8.0 hash-password -password 'something-long')" \ + -e HOTLOOP_FLOW_ADMIN_PASSWORD_HASH="$(podman run --rm ghcr.io/hotloop-io/hotloop-flow:2.8.1 hash-password -password 'something-long')" \ -e HOTLOOP_FLOW_CREDENTIAL_SECRET="$(openssl rand -hex 32)" \ - ghcr.io/hotloop-io/hotloop-flow:2.8.0 + ghcr.io/hotloop-io/hotloop-flow:2.8.1 ``` Then open . That credential secret is new every time you diff --git a/src/content/docs/flow/install.md b/src/content/docs/flow/install.md index 3f26a20..c0b9ce7 100644 --- a/src/content/docs/flow/install.md +++ b/src/content/docs/flow/install.md @@ -1,13 +1,13 @@ --- # generated by scripts/sync-docs.mjs title: "Install HotLoop Flow with Podman or Helm" -description: "Run HotLoop Flow 2.8.0 with Podman or Quadlet, on Kubernetes with Helm, or from source. It starts locked, so set an admin password first." +description: "Run HotLoop Flow 2.8.1 with Podman or Quadlet, on Kubernetes with Helm, or from source. It starts locked, so set an admin password first." sidebar: label: "Install" editUrl: false --- -HotLoop Flow 2.8.0 is current. It ships as `ghcr.io/hotloop-io/hotloop-flow:2.8.0`, a 45.64 MB image on amd64, with the arm64 build following in 2.8.1, plus a Helm chart and source you can build yourself. The image is distroless, runs as a non-root user, and has no shell in it, so there's nothing to drop into, for you or for anybody who shouldn't be there. There's no Docker or Compose path on this page: Podman for one box, Quadlet to make it a service, Helm for a cluster. +HotLoop Flow 2.8.1 is current. It ships as `ghcr.io/hotloop-io/hotloop-flow:2.8.1`, a 45.64 MB image on amd64 and an arm64 build as well, plus a Helm chart and source you can build yourself. The image is distroless, runs as a non-root user, and has no shell in it, so there's nothing to drop into, for you or for anybody who shouldn't be there. There's no Docker or Compose path on this page: Podman for one box, Quadlet to make it a service, Helm for a cluster. Flow starts locked. It refuses to run without an admin account, because a flow can run commands. And it refuses to run without a credential secret, which encrypts every broker and database password stored with your flows. Every path below sets both. @@ -18,7 +18,7 @@ From 2.2.0 context and durable wires live in a SQLite file, `state.db`, on the d Make a password hash first. The image has no shell, so hashing is a subcommand of the binary itself, and it refuses anything under eight characters. ```bash -podman run --rm ghcr.io/hotloop-io/hotloop-flow:2.8.0 hash-password -password 'something-long' +podman run --rm ghcr.io/hotloop-io/hotloop-flow:2.8.1 hash-password -password 'something-long' ``` Then make the credential secret, and save it somewhere you'll still find it in a year: @@ -34,7 +34,7 @@ podman run -d --name hotloop-flow -p 1880:1880 -v hotloop-flow-data:/data \ -e HOTLOOP_FLOW_ADMIN_USER=admin \ -e HOTLOOP_FLOW_ADMIN_PASSWORD_HASH='' \ -e HOTLOOP_FLOW_CREDENTIAL_SECRET='' \ - ghcr.io/hotloop-io/hotloop-flow:2.8.0 + ghcr.io/hotloop-io/hotloop-flow:2.8.1 ``` Open `http://localhost:1880/` and sign in as `admin`. `/health` answers with the version once the process is up, and `/ready` says whether the runtime actually started. @@ -64,7 +64,7 @@ After=network-online.target Wants=network-online.target [Container] -Image=ghcr.io/hotloop-io/hotloop-flow:2.8.0 +Image=ghcr.io/hotloop-io/hotloop-flow:2.8.1 ContainerName=hotloop-flow PublishPort=1880:1880 Volume=hotloop-flow-data:/data diff --git a/src/content/docs/flow/overview.md b/src/content/docs/flow/overview.md index 22db7fa..68b7cc4 100644 --- a/src/content/docs/flow/overview.md +++ b/src/content/docs/flow/overview.md @@ -40,8 +40,8 @@ What that means on a bad night: It runs your existing flows unchanged, too. That's [further down](/flow/migrating-from-node-red/), because it's a feature, not the point. -Current release is `2.8.0`. The image is `ghcr.io/hotloop-io/hotloop-flow:2.8.0` -for amd64 (arm64 follows in 2.8.1), the Helm repo is `https://hotloop.io/hotloop-flow/`, and +Current release is `2.8.1`. The image is `ghcr.io/hotloop-io/hotloop-flow:2.8.1` +for amd64 and arm64, the Helm repo is `https://hotloop.io/hotloop-flow/`, and [docs/deploying.md](/flow/deploying/) has Kubernetes, Podman and Quadlet. About 104,000 lines of Go, a little under 40 percent of it tests, 79 node types for messages and 28 for FlowLab diagrams, and the race detector comes back clean on every package. Home and lab use is free, so is use by schools, nonprofits and government, and diff --git a/src/content/docs/flow/quick-start.md b/src/content/docs/flow/quick-start.md index e2a6cb2..1892bc8 100644 --- a/src/content/docs/flow/quick-start.md +++ b/src/content/docs/flow/quick-start.md @@ -30,10 +30,10 @@ podman run --rm -p 1880:1880 -v hotloop-flow-data:/data \ -e HOTLOOP_FLOW_ADMIN_USER=admin \ -e HOTLOOP_FLOW_ADMIN_PASSWORD_HASH='' \ -e HOTLOOP_FLOW_CREDENTIAL_SECRET="$(openssl rand -hex 32)" \ - ghcr.io/hotloop-io/hotloop-flow:2.8.0 + ghcr.io/hotloop-io/hotloop-flow:2.8.1 ``` -Generate the hash with `podman run --rm ghcr.io/hotloop-io/hotloop-flow:2.8.0 +Generate the hash with `podman run --rm ghcr.io/hotloop-io/hotloop-flow:2.8.1 hash-password -password 'something-long'`. The image is distroless nonroot with no shell in it, so there is nothing to `exec` into and nothing for anybody who gets code execution to pivot with. diff --git a/src/content/docs/install/index.md b/src/content/docs/install/index.md index df82d99..ae9c5af 100644 --- a/src/content/docs/install/index.md +++ b/src/content/docs/install/index.md @@ -25,7 +25,7 @@ There are two ways to run a HotLoop product for real: Helm on k3s or any Kuberne | [HotLoop Edge](/edge/overview/) | 4.18.11 | Yes | Yes | [Install Edge](/edge/install/) | | [HotLoop Gateway](/gateway/overview/) | 4.18.11 | Yes | Yes | [Install the Gateway](/gateway/install/) | | [HotLoop Edge Relay](/edge-relay/overview/) | 4.18.11 | Yes | Yes | [Install the Edge Relay](/edge-relay/install/) | -| [HotLoop Flow](/flow/overview/) | 2.8.0 | Yes | Yes | [Install Flow](/flow/install/) | +| [HotLoop Flow](/flow/overview/) | 2.8.1 | Yes | Yes | [Install Flow](/flow/install/) | | [HotLoop Cascade](/cascade/overview/) | 1.0.2 | Yes, no login needed | Yes, no login needed, see [Cascade with Podman Quadlet](/cascade/quadlet/) | [Running Cascade](/cascade/running/) | HotLoop IoT, Edge, Gateway, and the Edge Relay come out of one tag, in lockstep, so they share a version number. Flow and Cascade have their own. The IoT, Edge, and Gateway Quadlet units need Podman 5.0 or newer, and the relay's unit was run on Podman 4.9.3. Raspberry Pi OS Bookworm ships 4.3, which has no Quadlet at all, so a Pi wants Trixie or newer. diff --git a/src/content/docs/releases/flow-2-8-1.md b/src/content/docs/releases/flow-2-8-1.md new file mode 100644 index 0000000..bd1d100 --- /dev/null +++ b/src/content/docs/releases/flow-2-8-1.md @@ -0,0 +1,29 @@ +--- +# generated by scripts/sync-docs.mjs +title: "HotLoop Flow 2.8.1 release notes" +description: "What shipped in HotLoop Flow 2.8.1, what changed on upgrade, and what to read before you touch a running plant." +editUrl: false +sidebar: + label: "2.8.1" +--- + +HotLoop Flow 2.8.1 is 2.8.0 with the arm64 image added, and nothing else. 2.8.0 shipped amd64 only so it could get to production and read stable first, and this is the one small bump that builds both. There is no change to the code, the chart, the settings or your flows. + +## What changed + +- The image is built for linux/amd64 and linux/arm64 again. The `2.8.1`, `2.8` and `2` tags hold both. +- The README and the install pages name 2.8.1 and say amd64 and arm64, as they did before 2.8.0. + +## New settings + +None. + +## Upgrade + +A plain `helm upgrade` to the 2.8.1 image and chart, or the new tag in your Quadlet unit. If you are on arm64 and stayed on 2.7.1 while 2.8.0 was amd64 only, this is your move to the analysis nodes, the data acquisition node, the durable MQTT output and the TDMS log: read the 2.8.0 notes for what they are and what isn't proven. Nothing happens on first start and nothing needs migrating. + +## What isn't proven + +The arm64 image is built the way it was for 2.7.1, under emulation on the runner, and it starts and reports its version in the release run. It has not been run on an arm64 box for this release. + +Image: `ghcr.io/hotloop-io/hotloop-flow:2.8.1`, linux/amd64 and linux/arm64. Chart: `https://hotloop.io/hotloop-flow/`. The README at this tag has the rest, with pictures: https://github.com/HotLoop-io/hotloop-flow/blob/v2.8.1/README.md diff --git a/src/content/docs/releases/index.md b/src/content/docs/releases/index.md index c494504..c472ca4 100644 --- a/src/content/docs/releases/index.md +++ b/src/content/docs/releases/index.md @@ -5,7 +5,7 @@ description: "What shipped in every HotLoop core, HotLoop Flow and HotLoop Casca editUrl: false --- -Every release has its own page, written the day it shipped. A note marked "on main, next release" describes a release that is not out yet, so nothing in it is in what you have installed. The latest HotLoop core release is 4.18.11, the latest Flow release is 2.8.0, and the latest Cascade release is 1.0.2. +Every release has its own page, written the day it shipped. A note marked "on main, next release" describes a release that is not out yet, so nothing in it is in what you have installed. The latest HotLoop core release is 4.18.11, the latest Flow release is 2.8.1, and the latest Cascade release is 1.0.2. ## HotLoop core @@ -19,6 +19,7 @@ IoT, Edge, Gateway and Edge Relay release together from one tag, so they share t ## HotLoop Flow +- [HotLoop Flow 2.8.1 release notes](/releases/flow-2-8-1/) - [HotLoop Flow 2.8.0 release notes](/releases/flow-2-8-0/) - [HotLoop Flow 2.7.1 release notes](/releases/flow-2-7-1/) - [HotLoop Flow 2.7.0 release notes](/releases/flow-2-7-0/) diff --git a/src/data/sync.json b/src/data/sync.json index 910c0ae..79ac60f 100644 --- a/src/data/sync.json +++ b/src/data/sync.json @@ -15,13 +15,13 @@ "flow": { "slug": "HotLoop-io/hotloop-flow", "ref": "origin/main", - "sha": "37f730bded1a7e2c0d4aba2bb79b3d59c9835a32", + "sha": "dd6a815f9dffd31420f6fd954808011e37b23d09", "release": { - "tag": "v2.8.0", - "version": "2.8.0", + "tag": "v2.8.1", + "version": "2.8.1", "prerelease": false, - "publishedAt": "2026-11-02T04:38:59Z", - "sha": "37f730bded1a7e2c0d4aba2bb79b3d59c9835a32" + "publishedAt": "2026-11-02T12:19:34Z", + "sha": "dd6a815f9dffd31420f6fd954808011e37b23d09" } }, "cascade": { @@ -1044,6 +1044,17 @@ "source": "docs/releases/2.8.0.md", "release": true }, + { + "slug": "releases/flow-2-8-1", + "product": "releases", + "group": "HotLoop Flow", + "title": "HotLoop Flow 2.8.1 release notes", + "label": "2.8.1", + "status": "released", + "repo": "flow", + "source": "docs/releases/2.8.1.md", + "release": true + }, { "slug": "releases/cascade-0-1-1", "product": "releases", diff --git a/src/pinned/flow/install.md b/src/pinned/flow/install.md index b5eca0b..9f9dfd4 100644 --- a/src/pinned/flow/install.md +++ b/src/pinned/flow/install.md @@ -1,12 +1,12 @@ --- -reviewed: flow=2.8.0 +reviewed: flow=2.8.1 title: "Install HotLoop Flow with Podman or Helm" description: "Run HotLoop Flow {{flow}} with Podman or Quadlet, on Kubernetes with Helm, or from source. It starts locked, so set an admin password first." sidebar: label: "Install" --- -HotLoop Flow {{flow}} is current. It ships as `ghcr.io/hotloop-io/hotloop-flow:{{flow}}`, a 45.64 MB image on amd64, with the arm64 build following in 2.8.1, plus a Helm chart and source you can build yourself. The image is distroless, runs as a non-root user, and has no shell in it, so there's nothing to drop into, for you or for anybody who shouldn't be there. There's no Docker or Compose path on this page: Podman for one box, Quadlet to make it a service, Helm for a cluster. +HotLoop Flow {{flow}} is current. It ships as `ghcr.io/hotloop-io/hotloop-flow:{{flow}}`, a 45.64 MB image on amd64 and an arm64 build as well, plus a Helm chart and source you can build yourself. The image is distroless, runs as a non-root user, and has no shell in it, so there's nothing to drop into, for you or for anybody who shouldn't be there. There's no Docker or Compose path on this page: Podman for one box, Quadlet to make it a service, Helm for a cluster. Flow starts locked. It refuses to run without an admin account, because a flow can run commands. And it refuses to run without a credential secret, which encrypts every broker and database password stored with your flows. Every path below sets both.