• v1.20.0 a4009d007f

    v1.20.0
    All checks were successful
    CI / Rust clippy (push) Successful in 3m28s
    CI / Rust fmt (push) Successful in 1m6s
    CI / Rust test (push) Successful in 5m9s
    CI / UI (SvelteKit) (push) Successful in 1m2s
    CI / Security Audit (push) Successful in 1m18s
    docs / build (push) Successful in 28s
    Release / Docker Multi-Arch (push) Successful in 19m46s
    Release / Binary aarch64-unknown-linux-gnu (push) Successful in 10m52s
    Release / Binary x86_64-unknown-linux-gnu (push) Successful in 9m44s
    Release / Linux .deb + .rpm (amd64) (push) Successful in 10m42s
    Release / Linux .deb + .rpm (arm64) (push) Successful in 11m33s
    Release / Linux AppImage (aarch64) (push) Successful in 10m27s
    Release / Linux AppImage (x86_64) (push) Successful in 9m39s
    Release / Cosign sign artifacts (push) Successful in 17s
    Release / Forgejo Release (push) Successful in 26s
    Stable

    dvb-projekt released this 2026-07-16 15:02:37 +00:00 | 60 commits to main since this release

    Recovery codes for two-factor auth, plus fixes surfaced by the first public
    mainnet run.

    Added

    • 2FA recovery codes. Enabling two-factor auth now issues 10 one-time
      recovery codes (shown once) so a lost authenticator no longer locks you out
      of the admin area. Enter a code in place of the TOTP at login; each works
      once. The admin 2FA page shows how many remain, warns when few are left, and
      can regenerate a fresh set (requires the current app code). Only Argon2
      hashes are stored — the plaintext is shown once and never persisted, and the
      codes are excluded from backups. Login accepts a recovery code only after the
      correct password, so it adds no brute-force surface.

    Fixed

    • Address ownership verification could get stuck. A failed signature check
      (wrong wallet or a malformed paste) used to consume the challenge, so every
      retry against the message still shown in the UI failed forever. A failed
      attempt now keeps the challenge; only a successful verify (or expiry)
      consumes it, and the one-shot guarantee holds under concurrency.
    • Admin visibility toggle mislabelled. The switch labelled "Miners tab"
      actually controls the Devices tab (the /miners route is the Devices
      nav entry); the label and its hint now match the navigation.
    • Owner area up front names the wallets that can sign a proof-of-ownership
      message (Electrum/Sparrow, incl. hardware wallets via those), so operators
      pick a working wallet before trying.

    Security

    • Recovery codes are drawn with rejection sampling (no modulo bias) and each
      login attempt that reaches the recovery path consumes at most one code
      atomically. 2FA enable is rejected on an already-active account so codes are
      never rotated silently — rotation goes through the confirmed regenerate flow.

    dvb-WarpPool v1.20.0 — Downloads

    Docker

    git.warppool.org/dvb-projekt/dvb-warppool:v1.20.0 (multi-arch amd64+arm64, ohne v-Präfix)

    Native packages

    • Linux .deb: amd64 + arm64 → apt install ./dvb-warppool_*.deb
    • Linux .rpm: amd64 + arm64 → dnf install ./dvb-warppool-*.rpm
    • Linux AppImage: x86_64 + aarch64 portable
    • Linux tarballs: x86_64 + aarch64 for manual installs
    • macOS .dmg: added shortly after publish (built separately) — or build from source
    • Windows .msi: paused since the forge migration (no Windows runner yet)

    Signatures

    • SHA256SUMS + cosign bundle (SHA256SUMS.bundle, project key)
    • SBOM (SPDX) for all dependencies

    Verify (project public key cosign.pub in the repo root):

    cosign verify-blob \
      --key cosign.pub \
      --bundle SHA256SUMS.bundle \
      SHA256SUMS
    sha256sum --check SHA256SUMS
    

    First-time setup: run dvb-warppool-setup for the first-run wizard.

    Downloads