You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Collapse the upgrade flow to the Claude-Code model: the backend only
advertises the latest version; the runner alone decides whether to apply
and reports no status over the wire. The backend infers the outcome purely
from the version the runner reports on its next heartbeat.
- Drop the upgrade.status wire message + UpgradeStatusPayload; the phase
labels are now local-log-only constants (journald), not a protocol.
- Add --disable-auto-update (env FLASHDUTY_RUNNER_DISABLE_AUTO_UPDATE):
a per-runner opt-out replaces any server-side policy. handleUpgrade
short-circuits on it before any disk work.
- CanSelfUpdate(): probe whether the binary's dir is writable and skip the
swap for manual root-owned installs instead of looping a doomed upgrade.
- Runner-local last-rolled-back-version guard (ShouldSkipTarget): since the
backend re-advertises the same latest every heartbeat, a rollback records
the bad version and the handler ignores re-advertisements of exactly that
version until a newer one is published or a later upgrade commits — no
more endless download -> swap -> rollback loop.
- Download resilience: a 60s no-bytes stall watchdog plus bounded retry on
transient failures (connection drop, stall, 5xx/429), and NO retry on
deterministic ones (checksum mismatch, 4xx, bad archive).
- install.sh documents the opt-out in the generated env file.
cmd.Flags().BoolVar(&flagDisableAutoUpdate, "disable-auto-update", false, "Opt out of automatic self-updates; this runner stays on its installed version (env: FLASHDUTY_RUNNER_DISABLE_AUTO_UPDATE)")
0 commit comments