github arkade-os/arkd v0.9.16

7 hours ago

What's Changed

⚠️ Potential Breaking Changes

  • Split client-lib and client-wallet (#1078) — the client library has been restructured into separate client-lib and client-wallet packages. SDK consumers that import from the combined package will need to update their import paths.
  • Remove dashboard (#72) — the built-in admin dashboard has been removed. The new Admin web console (see Features) replaces it.

🔒 Security & Hardening

This release contains a large batch of security hardening commits. Operators on v0.9.15 or earlier should upgrade promptly.

  • Patch CVE-2026-56852 in golang.org/x/text (#1164)
  • Fix unbounded allocation in DecodeTapTree (OOM / DoS class) (#33)
  • Harden fee estimation: stop accepting client-declared input amounts in EstimateIntentFee
  • Make Proof.Fees overflow-safe and exclude the toSpend input (#9)
  • Bind PSBT prevout metadata to the operator's own records in forfeit path (#10)
  • Match Ark proprietary PSBT field keys exactly (#20)
  • Verify MuSig2 tree partial signatures under sorted key aggregation (#37)
  • Reject non-taproot pkScripts before byte-slicing (#36)
  • Reject offchain outputs whose taproot key is off the curve (#12)
  • Reject sighash types that do not commit to all outputs (#58)
  • Reject VTXO spends through unhandled closures (#26)
  • Reject unregistered cosigners from submitting nonces/signatures in Redis store (#51)
  • Mitigate tree nonces/signatures submitted for another cosigner (#59)
  • Ban participants that withhold forfeit signatures (#93)
  • Validate asset inputs in RegisterIntent (#1)
  • Harden batch builder (#4)
  • Harden locktime config checks and witness reads in ExtractWithAnchors; handle BanThreshold overflow
  • Bind boarding signatures to the operator's commitment tx (#53)
  • Accept only standard onchain receiver scripts in intents (#15)
  • Transaction sanity checks (#2)
  • Fix nil-check for input[0].WitnessUtxo (#5)
  • Fraud hardening (#28)
  • Add OP_SIZE check to VHTLC claim condition (go-sdk #219 backport)

✨ Features

  • Admin web console — replaces the removed dashboard
  • client-lib: Add GetBlockHeight to explorer interface (#1154)
  • Log client IP metadata on gRPC calls (#42)
  • Require forfeits for expired, unswept VTXOs (#94)
  • Push Docker images to prod and staging ECR on tag release (#3)
  • Cross-compile multi-arch images (instead of emulation) for faster builds (#7)

🐛 Bug Fixes

  • Fix RegisterIntent / SubmitOffchainTx cache race (#62, #92)
  • Fix offchain transaction cache/DB projection race (#71)
  • Fix confirmation session race on concurrent Confirm() (#91)
  • Fix inmemory intent store DeleteAll desyncing the VTXO guard set (#98)
  • Fix ScheduledSweep SQL query (#68)
  • Fix pagination overflow (#35)
  • In-memory live-store: never block on the collection signal (#50)
  • Reconnect with back-off to scanner notification watcher (#90)
  • Collect asset issuance once per group, not once per output (#16)
  • Clamp fee output (#39) and boarding target-amount-exceed clamp (#38)
  • Decode timelocks from actual script pushes, not inferred offsets (#47)
  • Avoid panic on signature error (#19)
  • Admin console display fixes (#60)
  • arkd-wallet: improve coin selection algorithm (#1158)
  • compose: wait for arkd-wallet readiness before starting arkd (#56)

📦 Dependencies

  • golang.org/x/text → v0.39.0 (CVE-2026-56852)
  • golang.org/x/net → v0.56.0 (#74)
  • google.golang.org/grpc → v1.82.1 (#1156)
  • Go toolchain → 1.26.6 (#75)

🔧 CI / Infrastructure

  • Cancel superseded pull-request runs (#61)
  • Cache Docker module downloads; drop redundant Go cache on self-hosted (#76)
  • SQLite/Badger integration tests run only on merge to master (#41)
  • E2E tests: replace fixed sleeps with condition polling (#44)
  • Updated SECURITY.md (drop Nostr DM contact) (#1165)

Changelog generated by Arkana release-coordinator · 2026-08-25

Full Changelog: v0.9.15...v0.9.16

Don't miss a new arkd release

NewReleases is sending notifications on new releases.