• release(v1.7.37-alpha): bitcoin-core install fixes + dynamic node UI + full-archive default

    Ghost released this 2026-04-22 15:03:47 +00:00 | 670 commits to main since this release

    Install flow

    • api/rpc/package/install.rs: always append the literal image URL as a
      last-resort pull candidate in do_pull_image, so images not carried by
      any configured mirror (docker.io/bitcoin/bitcoin:28.4) still install
      instead of masquerading as a generic pull failure across every mirror.
    • api/rpc/package/install.rs: write_bitcoin_conf now skips on any stat
      error, not just "file exists". Once bitcoin-knots' first-boot chowns
      /var/lib/archipelago/bitcoin into the container's user namespace (700
      perms, UID 100100/100101), the archipelago daemon can't even traverse
      in — try_exists returns Err which unwrap_or(false) treated as "not
      present" and drove a doomed write. Now errors out of the directory
      traversal are treated as "conf already owned by container user" and
      the write is skipped. Mirrors the lnd.conf pattern.
    • api/rpc/package/install.rs: drop the hardcoded prune=550 from the
      conf default. Operators with multi-TB drives shouldn't be silently
      pruned; users who want a pruned node can set it in bitcoin.conf
      themselves. Full archive is the only honest default.
    • api/rpc/package/config.rs: bitcoin-core now passes explicit
      -server/-rpcbind/-rpcallowip/-rpcport/-printtoconsole/-datadir CLI
      args. Vanilla bitcoin/bitcoin:28.4 has no entrypoint wrapper and
      reads conf + argv only; without these the RPC listens on 127.0.0.1
      inside the container and rootlessport can't reach it, so the
      bitcoin-ui companion gets 502 on every /bitcoin-rpc/ call.
      Bitcoin Knots keeps its own entrypoint-driven defaults.
    • container/docker_packages.rs: split bitcoin-core out of the shared
      AppMetadata arm. bitcoin-core now surfaces as "Bitcoin Core" with
      bitcoin-core.svg and a Reference-implementation description; the
      bitcoin + bitcoin-knots ids keep the Knots branding. Fixes the home
      card showing "Bitcoin Knots" for a Core install.

    Bitcoin node UI (docker/bitcoin-ui)

    • index.html: impl name/tagline/logo now dynamic. applyImplBranding()
      reads subversion from getnetworkinfo — /Satoshi:X/Knots:Y/ resolves
      to Bitcoin Knots, plain /Satoshi:X/ resolves to Bitcoin Core. Both
      get their own icon and subtitle. Settings modal replaced its
      hardcoded Regtest/txindex=1/port-18443 placeholders with live values
      from getblockchaininfo + getindexinfo + getzmqnotifications.
    • index.html: new Storage info card (Full Archive · X GB /
      Pruned · X GB from blockchainInfo.pruned + size_on_disk) visible on
      the main dashboard, same level as Network. Settings modal mirrors it
      with the prune height when applicable.
    • Dockerfile + assets/: bitcoin-core.svg, bitcoin-knots.webp, and the
      bg-network.jpg used by the dashboard are now COPY'd into the image
      under /usr/share/nginx/html/assets. Previously the pointed
      at paths that 404'd into the SPA fallback and the onerror handler
      hid the broken logo silently.

    Frontend

    • appSession/appSessionConfig.ts: add bitcoin-core to APP_PORTS (8334),
      HTTPS_PROXY_PATHS (/app/bitcoin-ui/), and APP_TITLES (Bitcoin Core).
      Without these the AppSessionFrame showed "No URL found for
      bitcoin-core" and the home/app-list title fell through to the raw id.
    • settings/AccountInfoSection.vue: backfill What's New entries for
      v1.7.31 through v1.7.37 that had been missed in earlier cuts.

    Release plumbing

    • releases/v1.7.37-alpha/: binary + frontend tarball.
    • releases/manifest.json: v1.7.37-alpha, sha256/size refreshed.
    • Cargo.toml / package.json: version bumps.

    Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com

    Downloads