hephaestus/docs/how-to/self-update/release-poll-version-check.md
Erich Blume 4a0094f955 C2(hephd-self-update): close release-poll-version-check
Version-compare + forge release parsing landed and unit-tested.
2026-06-04 13:37:14 -07:00

1.2 KiB

title modified tags requires
Release poll + version check 2026-06-04
how-to

Release poll + version check

The piece that answers "is a newer release available?" — independent of any daemon wiring, so it can be unit-tested in isolation.

Deliverables

  • Fetch the latest release from the forge: GET https://forge.ops.eblu.me/api/v1/repos/eblume/hephaestus/releases/latest, read tag_name (e.g. v1.0.4). hephd already depends on ureq and reqwest (crates/hephd/Cargo.toml) — reuse one (the poll loop is async, so reqwest fits; ureq would need spawn_blocking).
  • Parse the running version: heph_core::VERSION is "1.0.3 (sha)" — take the X.Y.Z head. Add semver = "1" to crates/hephd/Cargo.toml (already in the lockfile transitively) and compare tag_name (strip leading v) against it.
  • A pure is_newer(current, tag) -> bool helper with tests covering equal / older / newer / malformed tags.

Done when

Given a fixed current version and a sample releases-API JSON body, the helper correctly reports whether an update exists. No daemon loop yet — that's self-update-poll-loop. Part of hephd-self-update.