Skip to content

Releases: FreeOnlineUser/bitcoin-pocket-node

v0.34.1-alpha - Data Usage Fixes + Smart Burst Sync

03 Apr 05:58

Choose a tag to compare

Smart Burst Sync

  • Polls headers to detect new blocks (10s) instead of fixed delay
  • Stays online until fully synced when new blocks exist (10min cap)
  • 15s grace period after sync for LDK gossip/HTLCs/scoring
  • No new blocks = fast disconnect

Data Usage Fixes

  • Disconnect all peers when network goes offline (was only preventing new connections)
  • Disconnect peers on mode transition to Low/Away
  • Subtract loopback/localhost traffic from data usage counter (TrafficStats includes RPC to bitcoind)
  • Skip Electrum wallet RPC polling when no addresses are tracked (fixes listtransactions error spam)

Full Changelog: v0.34-alpha...v0.34.1-alpha

v0.34-alpha - Reliable Chainstate Sharing

29 Mar 13:00

Choose a tag to compare

Share The Freedom - Now Reliable

Chainstate Consistency

  • Always clean chainstate + block index before download, prevents corruption from mismatched snapshots
  • Delete partial files on download failure, resume never skips corrupt data
  • Check file dates in resume logic, updated files get re-downloaded

Peer Channel Limits

  • Export/import floor, ceiling, and anchor support metadata
  • Robust type handling (fixes silent import failures)
  • Smallest tab populates correctly on received data

UI Polish

  • Fix 99% stuck on sender (receiver now sends completion signal)
  • Hide progress bar and file count when transfer completes
  • Hide default port in address field

Internal

  • Add lastModified timestamps to file manifest
  • Dual completion detection (receiver signal OR file count match)

Full Changelog: v0.32.1-alpha...v0.34-alpha

v0.33-alpha: Lightning Unlocked + Relay Sharing

28 Mar 13:33

Choose a tag to compare

Lightning Unlocked

  • Lightning works without block filters (LDK uses bitcoind RPC directly)
  • Lightning button always visible, LDK Lightning toggle in settings
  • Block filters default OFF (saves 13 GB). Total node: ~13 GB with full Lightning
  • Fee estimate retry shows progress during first start

Share & Receive

  • 'Copy from a trusted Pocket Node or relay' is the top bootstrap option
  • Session progress, resume support, QR scan fixed
  • Go to Dashboard button, services stop before download
  • Cleartext HTTP for LAN connections

Channel Management

  • Cooperative close fee floor (253 sat/kw)
  • Force close confirmation, detailed balance breakdown
  • Events drained every 10s

Cleanup

  • Removed 'Add Lightning', 'Remove Lightning' buttons (obsolete)
  • All docs corrected: filters for Neutrino wallets, not Lightning
  • Default power mode: Max for first-run

v0.32.1-alpha: Stability + Safety

24 Mar 04:22

Choose a tag to compare

Initial Sync Fix

  • Burst sync cycle no longer runs during initial block download (IBD). Was killing peers after ~50 blocks on LTE.
  • setNetworkActive(false) blocked during IBD. No code path can disable network mid-sync.

Power Mode Fix

  • Mode no longer reverts to Low on service restart. reloadFromPrefs() ensures saved mode persists.

Graceful Lightning Shutdown
All restart/update paths now stop Lightning cleanly before stopping bitcoind:

  • Tor toggle
  • Version switch (Core/Knots)
  • BIP 110 toggle
  • In-app update
  • AdminReceiver (ADB)

Previously, version switch, BIP 110 toggle, and in-app updates killed Lightning without flushing state, risking channel corruption.

Other Fixes

  • Stale error messages ("sync stalled") cleared on successful Lightning start
  • AdminReceiver stays stopped (clears auto-restart flag)
  • PowerModeManager architecture documented

Thanks to @MoneysNotNeeded for the detailed bug reports on the sync issue.

v0.32-alpha: Channel Safety + Recovery

23 Mar 10:32

Choose a tag to compare

Channel Safety

  • WAL checkpoint after every channel/payment event. Forces SQLite writes to disk immediately. Prevents channel state loss on unexpected process termination. The fix for the mystery channel losses.
  • WAL integrity check + TRUNCATE on startup. Detects corrupt WAL frames, merges everything into main DB file before LDK reads it.
  • All auto-restarts disabled. Orphan rebroadcast and sync watchdog no longer silently restart Lightning. Shows error message instead. Manual restart is safer.
  • Gossip logs dropped. LDK gossip (36k+ channel updates) was flooding the 256 KB logcat buffer, wiping all crash/debug logs. Now silenced.

Recovery

  • Static Channel Backup (SCB). Saves peer pubkey, funding outpoint, and addresses on every channel open. On channel loss: connect to peer, they detect state mismatch, force-close. Proven to recover funds.
  • Recovery UI. Lost channels card (red) shows SCB entries with recovery instructions. Missing on-chain funds card explains seed export to external wallet.
  • Stale monitor injection removed. Was causing native crashes (SIGABRT in libldk_node.so). SCB is the correct recovery path.

Channel Management

  • Event-driven network hold. Keeps peers connected while channel funding tx confirms in Low/Away mode. Holds on ChannelPending, releases on ChannelReady or ChannelClosed.
  • Peer browser: Smallest tab. Shows all peers with known minimum channel sizes from probe results and rejection data, sorted smallest first.

Documentation

  • Mobile Lightning Playbook. Consolidated hard-won techniques from 16 incident reports and design docs into one reference. WAL management, SCB, Tor routing, power modes, channel open UX, and more.
  • Removed 16 obsolete docs (2,835 lines).

v0.31-alpha

22 Mar 10:17

Choose a tag to compare

Reliability, code quality, and UX improvements.

Balance and display fixes:

  • On-chain balance no longer double-counts pending close funds
  • Pending close hides after 6 confirmations (was lingering ~1 month)
  • Blocks remaining countdown on pending close
  • 'Catching up' status when blocks behind headers (was falsely showing 'Synced')
  • Low Data banners show peer count during sync

Lightning fixes:

  • Channel rejection banner with peer message
  • Lightning Pay home screen re-locks correctly when no channels
  • Min channel parsing fixed for integer BTC amounts (e.g. '2 BTC')
  • Circuit breaker: auto-restart disabled after 3 consecutive crashes
  • ANR fix: state refresh moved off main thread

Network and privacy:

  • NetworkMonitor singleton (was 5x instantiated, inflating data usage)
  • Reactive data usage flow (instant reset, no stale caches)
  • Reset data usage button with confirmation
  • Network privacy info panel (expandable, shows Tor routing per component)
  • Approximate usage disclaimer

Architecture:

  • LightningService reduced from 1172 to 989 lines
  • Extracted: BalanceTracker, ChannelEventHandler, StateRefreshLoop
  • Prune recovery moved to RecoveryManager
  • 124 unit tests (was 53): balance, rejection, seed derivation, backup health, lifecycle, circuit breaker

Documentation:

  • Disaster recovery path (seed + channel restore)

v0.30-alpha

21 Mar 14:27

Choose a tag to compare

UI polish and share improvements.

  • Phone-to-phone share: clear completion indicator on both sender and receiver (safe to disconnect)
  • Lightning screen layout: fund wallet, seed backup, channels, watchtower reordered
  • Hide send/receive buttons until channel is open
  • Removed legacy flat-file migration warning (was always SQLite)
  • Channel loss prevention documentation

v0.29-alpha

20 Mar 08:16

Choose a tag to compare

Full Tor privacy, state backup, sync indicator

Tor Privacy Mode

  • One-tap toggle routes all traffic through embedded Arti (0.39.0) SOCKS proxy
  • bitcoind peers, LDK Lightning peers, RGS/scoring fetches all go through Tor
  • .onion watchtower connection verified
  • Hides your IP from the network. Node pubkey is still public (Tor hides location, not identity)

State Backup & Recovery

  • Rolling SQLite state backups (3 slots) with health checks and auto-restore
  • Detects state corruption on startup, restores from last healthy backup
  • Legacy monitor fallback as last resort
  • Smarter backup health check (compares against previous backup, not just thresholds)

Sync Indicator

  • LDK sync progress shown on Lightning screen
  • Orange spinner with blocks-behind count while catching up
  • Grey block height when synced

Fixes

  • Fix orphan funds restart loop
  • Fix periodic backup interval (5 min, was firing every 10s)
  • Fix HTTP timeouts for Tor (30s, was 5s)

v0.27.1-alpha (Pre-Tor Snapshot)

17 Mar 10:12

Choose a tag to compare

Pre-Tor Snapshot

Stable snapshot before Tor integration work begins.

Power-Aware Invoice Expiry

  • BOLT11 invoices expire in 5 minutes on Low/Away mode (matches network hold)
  • BOLT11 invoices expire in 24 hours on Max mode (always online)
  • Toggle descriptions explain expiry and suggest Max mode for longer invoices
  • BOLT12 toggle explains why it works best on Max mode (requires online for onion messages)

Peer Count Explainer

  • Tap the B:N L:N badge for a popup explaining both peer types
  • B: Bitcoin P2P peers for block sync, temporarily connects for Lightning operations
  • L: Lightning peers for payments, stay connected even when Bitcoin network is paused

Full Changelog: v0.27-alpha...v0.27.1-alpha

v0.27-alpha

17 Mar 05:20

Choose a tag to compare

What's New

Dual Peer Count Badge

  • Shows both bitcoind (B:N) and Lightning (L:N) peer counts on Lightning Pay screen
  • Positioned below fold opposite Balance label
  • Lightning peers stay connected independently of bitcoind network state
  • Lightning gossip uses ~5-10 KB/hour, essentially free

Route Visualization Fixes

  • Successful payment route now correctly displayed (was showing last failed attempt)
  • Route data captured on fast payments (polls up to 3s after success)
  • Failed routes shown as one-liners above successful route

Receive Screen UX

  • Keyboard auto-dismisses when invoice generated
  • Auto-scrolls to show QR code and copy button
  • Auto-scrolls to payment received confirmation

Critical Bug Fix

  • Burst sync was not starting on cold boot (network stayed fully open for ~15 min)
  • Root cause: setRpc() called before setMode() in startup, activeScope was null
  • Fixed in both cold-start and attach-to-running paths

Documentation

  • New RELIABILITY.md: comprehensive reference for all reliability settings
  • LDK safety buffers, chain polling, network holds, routing fees
  • BIP-110 support claims corrected in README

Tests

  • 12 new tests for startup order and network hold patterns
  • Total: 53 tests across 7 suites

Full Changelog: v0.26-alpha...v0.27-alpha