-
Release 0.4.0 Stable
released this
2026-10-13 20:43:13 -04:00 | 51 commits to main since this releasev0.4.0 — Hardened updates
Command Center now verifies every self-update before applying it, and the fleet
view groups machines by site.✨ What's new
- 📊 Stale machines on the dashboard — the overview rolls up machines that
haven't checked in for 7 days, and the Seats nav item carries a badge. - 🗂️ Fleet grouped by site — the Seats screen lists one collapsible card per
company, with machines nested under deployment sub-headings when a site spans
more than one deployment. The collapse state is remembered per control plane.
🔐 Security
- 🔏 Verified updates — the self-updater verifies each release artifact's
detached RSA-2048/SHA-256 signature (<asset>.sig) against an embedded
public key before applying it, and refuses a release whose signature is missing
or invalid. Asset URLs must be HTTPS on the Forgejo host, every redirect hop is
re-validated, and downloads are bounded by a size cap and an idle timeout. - 🔑 No token in release builds —
--dart-define=CONTROL_PLANE_ADMIN_TOKEN
is now debug-only; release builds require the token at runtime (stored in the
OS keychain), so it is never baked into a shipped binary. - 🔒 HTTPS required — control-plane URLs must be
https://(loopback
http://is allowed for local dev); the admin token travels in a header. - 🧱 Hardened Windows updater — the generated batch script rejects paths that
could inject commands. - 🛡️ Private download staging — updates stage in a private per-run temp
directory instead of the shared system temp. - 🌐 Web warning — the browser build warns that the admin token is kept in
browser storage, not a secure keychain.
🧱 Under the hood
- New
domain/update/release_crypto.dart(RSA primitives) and
update_signature.dart(UpdateSignatureVerifier);UpdateServiceverifies
the detached<asset>.sigand fails closed. - New
tool/release.sh+tool/sign_release.dartfor build → sign → publish. - AppImage tooling (linuxdeploy, GTK plugin) pinned and checksum-verified;
Android release builds use a real keystore whenkey.propertiesis present. dart analyzeclean, all tests green, Linux build succeeds.
📦 Assets
Attach the matching asset (and its
.sig) to install automatically:
Linuxcommand_center-0.4.0-linux.AppImage, Windows
command_center-0.4.0-windows.zip.Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- 📊 Stale machines on the dashboard — the overview rolls up machines that