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
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).
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
Targets
plotter-gatewaysystemd service.Acceptance criteria
Notes
gateway/install.sh.gateway/server.ts).