Skip to content

thirdshift update #34

Closed
Closed

Description

@JacobStephens2

Parent

#30

What to build

thirdshift update replaces the installed binary with the latest stable GitHub Release, using dist's axoupdater library with the install receipt written by the shell installer.

  • When it updates, or is already on the latest version, it says so on stderr and exits 0.
  • On failure (no network, GitHub unavailable) it explains on stderr and exits 1.
  • With no install receipt (built from source, installed from crates.io, or copied by hand) it refuses, says why, names the command that updates that kind of install, and exits 1.
  • stdout always stays empty.
  • Replacing the binary must be safe while a Run is using the old binary.
  • A Run never checks for updates or updates itself.

HTTPS must go through rustls, never OpenSSL, so the musl binary stays statically linked. The release pipeline's build and Rocky/WSL smoke jobs must still pass on this PR.

Acceptance criteria

  • thirdshift update updates to, or confirms, the latest stable release. Messages go to stderr, stdout stays empty, and it exits 0.
  • With HOME and the XDG config location pointing at an empty temporary directory, it exits 1 with a reinstall hint on stderr and empty stdout. This is covered by an offline integration test on the binary-subprocess seam.
  • Network or GitHub failures exit 1 with an explanation on stderr.
  • No OpenSSL in the dependency tree, and the musl build and smoke jobs still pass.
  • Runs never invoke the updater.
  • The README's Updating section says thirdshift update.

Blocked by

Metadata

Metadata

Assignees

No one assigned

    Labels

    ready-for-agentFully specified, ready for an AFK agent

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions