• v0.2.1 f81dcc9f4a

    v0.2.1
    All checks were successful
    CI / shellcheck (push) Successful in 2s
    CI / python (push) Successful in 22s
    CI / build (push) Successful in 1m6s
    CI / integration (push) Successful in 2s
    Publish / Build .debs + tarball, create releases (Forgejo, NAS, GitHub) (push) Successful in 5m6s
    Publish / Update the Homebrew tap formula (stable or -rc per tag) (push) Successful in 4s
    Publish / Reconcile releases across registries (bridge .pkgs to NAS, heal history) (push) Successful in 41s
    Stable

    Cody Bryant released this 2026-07-23 22:59:59 -07:00 | 516 commits to main since this release

    • fix: decrypting the recovery backup no longer fails on an in-use robot. The three flash slices
      share one keystream, but 0.2.0 recovered it from each slice on its own — which only works for the
      sparse boot slice, so the dense rootfs/userdata slices of a robot with real maps and logs failed
      with "keystream recovery failed". They're now decrypted together, the sparse slice anchoring the
      shared keystream for the dense ones; re-running fills in any slice a prior run left behind. The
      sealed .bin dumps and the recovery .zip were always preserved, so nothing was ever lost.
    • fix: the shareable run log now includes first-run workspace migration. Migration runs before
      the log can be created (the log lives inside the folder it sets up), so its output — including any
      problem it reported — was previously missing from the log; it's now captured and replayed in. The
      recovery-backup slice names (dustx100/101/102) stay readable in the log instead of being
      redacted as credential-shaped, so a shared log shows which slice a step refers to.
    Downloads