15 lines
24 KiB
XML
Raw Normal View History

release(v1.7.37-alpha): bitcoin-core install fixes + dynamic node UI + full-archive default 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 <img src> 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>
2026-04-22 11:03:47 -04:00
<svg width="256" height="256" viewBox="0 0 256 256" fill="none" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g clip-path="url(#clip0_297_6189)">
<rect width="256" height="256" fill="url(#pattern0_297_6189)"/>
</g>
<defs>
<pattern id="pattern0_297_6189" patternContentUnits="objectBoundingBox" width="1" height="1">
<use xlink:href="#image0_297_6189" transform="scale(0.00130208)"/>
</pattern>
<clipPath id="clip0_297_6189">
<rect width="256" height="256" fill="white"/>
</clipPath>
<image id="image0_297_6189" width="768" height="768" preserveAspectRatio="none" xlink:href="data:image/jpeg;base64,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
</defs>
</svg>