Skip to content

Releases: synonymdev/ldk-node

v0.7.0-rc.38

11 May 23:17
d096cd3

Choose a tag to compare

Add receive address index APIs

v0.7.0-rc.37

28 Apr 20:27
52f73c4

Choose a tag to compare

Adds probe correlation support to the bindings.

  • Exposes ProbeHandle values from the BOLT11 and spontaneous send_probes APIs.
  • Emits ProbeSuccessful and ProbeFailed events for matching dispatched probe IDs.
  • Updates generated Swift, Kotlin, Python bindings and native libraries for v0.7.0-rc.37.

v0.7.0-rc.36

19 Mar 20:36
ae38ead

Choose a tag to compare

Changes since rc.35

  • Fixed orphaned channel migration blocking node startup when the existing monitor
    in the KV store can't be deserialized (e.g., UnknownVersion from a newer LDK
    version). The migration now skips writing and lets the node start normally,
    preserving the existing monitor data.
  • Switched rust-lightning fork from ovitrif/rust-lightning to synonymdev/rust-lightning#0.2.2-accept-stale-monitors.

v0.7.0-rc.35

19 Mar 10:34
db5ce1b

Choose a tag to compare

Changes since rc.34

  • Fixed HTLC timeout force-close during stale monitor recovery. The healing keysend
    created HTLCs with a stale cltv_expiry (based on the ChannelManager's outdated
    best block height for users offline >24h). When chain sync caught up, LDK
    force-closed the channel (HTLCsTimedOut). Fix: sync the chain tip before sending
    healing payments so HTLCs get a valid CLTV expiry. If sync fails, skip the keysend
    to avoid the stale-CLTV force-close.
  • Fixed native crash (SIGABRT) during stale channel monitor recovery. The
    CounterpartyCommitmentSecrets store was not reset when force-syncing the
    monitor's update_id, causing provide_secret() to fail after a few commitment
    round-trips, triggering a ChannelMonitorUpdateStatus mode mismatch panic.
    (rust-lightning fork change)

v0.7.0-rc.34

18 Mar 22:21
153ecbe

Choose a tag to compare

Changes since rc.33

  • Fixed native crash (SIGABRT) during stale channel monitor recovery. The
    CounterpartyCommitmentSecrets store was not reset when force-syncing the
    monitor's update_id, causing provide_secret() to fail validation after
    a few commitment round-trips. The failed update triggered a
    ChannelMonitorUpdateStatus mode mismatch panic in the ChannelManager.
    Fix: reset the secrets store in force_set_latest_update_id so new secrets
    build a fresh, consistent tree. (rust-lightning fork change)
  • Added set_accept_stale_channel_monitors builder API for one-time recovery when channel
    monitors are stale compared to the channel manager (e.g., after migration overwrote newer
    monitors with stale backup data). Defers chain sync and sends probes to heal monitors via
    commitment round-trips.
  • Added BuildError::DangerousValue variant to distinguish stale channel monitor failures
    from other ReadFailed causes, enabling precise app-side recovery logic.
  • Depends on patched rust-lightning fork (ovitrif/rust-lightning#0.2.2-accept-stale-monitors-v2).

v0.7.0-rc.33

12 Mar 09:04
1531af7

Choose a tag to compare

Changes since rc.32

  • Added connection_timeout_secs field to ElectrumSyncConfig (default: 10 s) to prevent thread pool exhaustion from dead Electrum sockets
  • Fixed FS→KV channel data migration blindly overwriting newer state (monitors and channel manager)
  • Migration read/deserialization failures now fail-closed to prevent silent data loss
  • Reworded changelog and regenerated bindings

v0.7.0-rc.32

04 Mar 23:34
6a0782f

Choose a tag to compare

Version bump to bust Android CI cache after rc.31 retag; no Rust/FFI code changes.

  • Bumped version from 0.7.0-rc.31 to 0.7.0-rc.32 across all manifests
  • Regenerated bindings

v0.7.0-rc.31

04 Mar 21:27
e7d924b

Choose a tag to compare

This release:

  • Fix cumulative change-address derivation index leak in dry-run tx builds — cancel_tx /
    cancel_dry_run_tx on all early-return and fee-estimation paths (#72)
  • Speed up ./bindgen.sh: eliminate redundant cargo build --release and duplicate
    gobley-uniffi-bindgen install, standardize all targets on release-smaller profile
  • Fix AI review persona rules blocking Claude code reviews in CI — skip build/test stages
    when running as code-review plugin in GitHub Actions (AGENTS.md)
  • Update all bindings

v0.7.0-rc.30

02 Mar 01:02
6f6bc44

Choose a tag to compare

This release:

  • Add OnchainPayment::calculate_send_all_fee() as the fee-estimation counterpart of
    send_all_to_address(), allowing callers to preview the mining fee for a drain transaction
    before broadcasting.
  • Supports retain_reserves flag to match send_all_to_address behavior (anchor channel
    reserve handling).

v0.7.0-rc.29

01 Mar 16:09
35dd1a5

Choose a tag to compare

0.7.0-rc.29 (Synonym Fork)

Bug Fixes

  • Bumped FEE_RATE_CACHE_UPDATE_TIMEOUT_SECS and TX_BROADCAST_TIMEOUT_SECS from 5s to 15s.
    The 5s node-level timeout fires before Electrum can complete a request (10s timeout), causing
    FeerateEstimationUpdateTimeout on node start.
  • Fixed external scores sync using spawn_background_processor_task (reserved for the single
    LDK background processor), which caused a debug_assert panic. Switched to
    spawn_cancellable_background_task.
  • Fixed PeerStore::add_peer silently ignoring address updates for existing peers. When a peer's
    IP address changes (e.g., LSP node migration), add_peer now upserts the socket address and
    re-persists, instead of returning early.
  • Backported upstream Electrum sync fix (PR #4341): Skip unconfirmed get_history entries in
    ElectrumSyncClient.
  • Fixed duplicate payment events being emitted when LDK replays events after node restart.
  • Switched from forked rust-lightning back to official upstream crates.io releases.