Skip to content

Releases: khmilevoi/rpi-deploy

v0.23.0

Choose a tag to compare

@github-actions github-actions released this 13 Jul 20:56

What changed

  • rpi command <name> --full — the live pane used to keep only the last 10 lines of output on screen once a command finished successfully; pass --full to dump the complete captured log instead. (On failure, the full log was already dumped and still is.)
  • Internal: added maintainer-facing architecture docs and skill design notes; no user-facing effect.

Full changelog

Full Changelog: v0.22.0...v0.23.0

v0.22.0

Choose a tag to compare

@github-actions github-actions released this 13 Jul 14:44

What changed

  • rpi upgrade (new command) — update a board's agent to a chosen version from your laptop, over the SSH + sudo path you already use. It defaults to your CLI's own version (keeping the client and board in sync), --version <X> pins a specific version, --version latest picks the newest published release, and --yes skips the confirmation. It shows current → target, triggers the update with an interactive ssh -t … sudo rpi agent update (so the board's sudo can prompt), and re-reads /v1/version afterward to confirm.
  • rpi agent update (new board-side command) — obtains a fresh binary (refreshes the global rpi-deploy@<version> on npm installs, or downloads rpi-v<version>-<triple>.tar.gz from the GitHub Release), verifies its SHA-256 against the release SHA256SUMS before doing anything, atomically swaps /usr/local/bin/rpi, re-runs the idempotent agent setup, and restarts the unit only when the binary actually changed. --dry-run reports the plan without changing anything. The agent never touches its own binary — the privileged swap happens only under sudo, over authenticated SSH, exactly like the manual path it replaces.
  • install.sh (new, no-npm installer)curl -fsSL https://raw.githubusercontent.com/khmilevoi/rpi-deploy/master/scripts/install.sh | sh installs a checksum-verified prebuilt binary on binary-only hosts (no Node required), sharing the exact download-and-verify recipe. RPI_VERSION pins a version (default: latest) and RPI_INSTALL_DIR overrides the target dir. It does not run setup — follow with sudo rpi agent setup on a Pi or rpi setup on a dev machine.

The trust model is unchanged: no new agent privilege, no new secret or trust anchor — integrity rests on the release SHA256SUMS over GitHub's TLS, the same anchor the npm postinstall already uses. Boards on older versions are updated once by the manual path (or install.sh + sudo rpi agent setup); every subsequent update is a single rpi upgrade.

Internal: release-artifact download/verify plumbing ported from postinstall.js, an SSH-exec runner, a Docker e2e scenario for the board-side update, and target-version validation on the client. See the full changelog below.


Full Changelog: v0.21.1...v0.22.0

v0.21.1

Choose a tag to compare

@github-actions github-actions released this 13 Jul 10:26

What changed

  • rpi stats -w now quits the instant you ask it to. q, Esc, and Ctrl-C exit the live dashboard immediately, even in the middle of a refresh. Before, the periodic metrics fetch (docker stats over SSH, on the default 2s interval) ran on the same loop as keyboard input, so a keypress could be stuck waiting for the fetch to finish — the quit keys felt laggy or, if you happened to press during a slow refresh, dead. The fetch now runs off the input loop, so quitting is instant regardless of what the refresh is doing.

Internal

Metrics polling moved to a background task feeding the UI over a channel; the input/render loop was extracted (run_events) and covered with regression tests that quit while a fetch is stalled. Plus release-side security-review bookkeeping.

Full Changelog: v0.21.0...v0.21.1

v0.21.0

Choose a tag to compare

@github-actions github-actions released this 13 Jul 00:44

What changed

  • rpi stats -w is now a dashboard TUI. The live view shows CPU, memory, and temperature as separate cards — each with a large current value and its own mini line chart — replacing the previous single combined chart. The top strip now carries disk usage and uptime.
  • The services table shows real per-container status. Each service row now has a status pill (running / restarting / unhealthy / …) driven by the container's actual Docker state and healthcheck, plus an inline memory bar scaled to the heaviest service. Against an older agent that doesn't report status, the pill shows a neutral placeholder instead of a made-up value.
  • rpi doctor: the version-mismatch hint now points at the stale side — it tells you whether the CLI or the agent is the one behind, instead of a generic message.

Colours follow the raspberry theme and downgrade cleanly on terminals without truecolor; the dashboard adapts to smaller terminals (compact and minimal fallbacks) so it never overflows.

Internal

Rendering is split into a pure, unit-tested view-model (stats_view) and a rendering-only stats_tui; a new tui-big-text dependency draws the large card numbers; container state/health are threaded through ServiceStats/ServiceStatsDto, backward compatible with older agents via serde defaults.

Full Changelog: v0.20.1...v0.21.0

v0.20.1

Choose a tag to compare

@github-actions github-actions released this 12 Jul 21:39

What changed

  • Deployed containers now survive a host reboot. rpi deploy pins restart: unless-stopped on the published service in its generated compose override. Before, the container inherited Docker's default restart: no, so after the Pi rebooted the service stayed down (hosts returned 530) until someone ran docker start by hand. A deliberate rpi stop is still respected across reboots — that's why unless-stopped and not always.

    Scope: this covers the published [ingress].service only; other services (databases, workers) still take their restart policy from your own compose file. The new policy takes effect on your next rpi deploy after upgrading — the override is regenerated on every deploy.

Full changelog: v0.20.0...v0.20.1

v0.20.0

Choose a tag to compare

@github-actions github-actions released this 12 Jul 21:05

What changed

  • rpi stats -w/--watch opens a full-screen live TUI (ratatui) with CPU, memory, disk, and temperature sparklines and history, refreshed on --interval (default 2s); quit with q/Esc/Ctrl-C. The static view (rpi stats) now also shows temperature and painted graphs in the brand accent color.
  • Host metrics collection: the agent now samples CPU/memory/disk/temperature in the background and serves recent history, powering the new stats views.
  • CLI/agent version-skew handling: the CLI and agent now handshake on connect and gate commands against the agent's advertised feature set. Instead of a confusing raw error when the CLI and agent versions drift apart, you get a clear banner explaining what's unsupported.
  • rpi doctor gained a memory-cgroup accounting check with a fix hint, catching a class of host misconfiguration that previously surfaced as confusing OOM behavior.
  • Internal: refactored the CLI's feature-gating into a single expect_feature safety net (replacing ad-hoc 404 sniffing per route); added a cross-version e2e scenario that runs the current CLI against a pinned v0.17.1 agent to guard the compatibility layer; fixed a Docker BuildKit cache-mount race that intermittently broke the e2e build.

Full changelog

v0.19.1...v0.20.0

v0.19.1

Choose a tag to compare

@github-actions github-actions released this 11 Jul 23:11

Full Changelog: v0.19.0...v0.19.1

v0.19.0

Choose a tag to compare

@github-actions github-actions released this 10 Jul 17:24

Full Changelog: v0.18.0...v0.19.0

v0.18.0

Choose a tag to compare

@github-actions github-actions released this 10 Jul 15:27

Full Changelog: v0.17.1...v0.18.0

v0.17.1

Choose a tag to compare

@github-actions github-actions released this 10 Jul 10:30

Full Changelog: v0.17.0...v0.17.1