Skip to content

In-app updater (local machine and Raspberry Pi) #13

Description

@BernardJen

Summary

Add an updater so the app/gateway can be updated to a new version without a manual rebuild — covering both the local machine and the Raspberry Pi deployment.

Motivation

Today the Pi is updated by rsync + manual rebuild + service restart from the laptop (see README "Deploying updates"), and there is no in-app notion of "a new version is available." An updater makes upgrades discoverable and low-effort, especially for the headless Pi.

Behavior

  • Detect that a newer version is available (e.g. compare against a release/tag or remote source).
  • Show the current version and the available version in the UI.
  • Trigger an update: fetch the new code, rebuild the GUI, and restart the gateway service.
  • Report progress and success/failure; do not interrupt a running plot — defer the restart until the plotter is idle.

Targets

  • Raspberry Pi — update the daemon + GUI in place and restart the plotter-gateway systemd service.
  • Local machine — at minimum surface current vs. available version and the steps/command to update.

Acceptance criteria

  • App shows the current version.
  • App detects when a newer version is available.
  • User can trigger an update (at least on the Pi) from the UI.
  • Update fetches, rebuilds, and restarts the service.
  • Progress and outcome are reported; a running plot is never interrupted.

Notes

  • Pi update path should mirror the existing rsync/rebuild/restart flow in the README and gateway/install.sh.
  • Needs new gateway endpoint(s) to drive the update (gateway/server.ts).
  • Define how "latest version" is determined (git tag / release / commit).

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions