Repository navigation
Wavelength v0.2.0 — Mainnet is open
Wavelength v0.2.0 is our first public mainnet release. Anyone can now join—no invitation required.
This release adds scheduled batches, free-only automatic refresh, and clearer payment status, alongside stronger signing checks and more reliable recovery. These notes cover changes since v0.1.2.
Get started with the daemon setup guide.
Stronger mainnet safeguards
The daemon now rejects plaintext operator and swap connections, public development passwords, and externally exposed HTTP gateways on mainnet by default. Mailbox traffic is restricted to the configured operator. (#1427, #1429)
Scheduled batches and visible waiting times
Wavelength can join operator-published batch windows, accounting for clock differences and signing the selected slot into its request. Round status, wallet activity, and wavecli now show why an operation is waiting and when it plans to join. (#1332, #1447)
Free-only automatic refresh
Automatic refresh waits for the operator’s free-refresh window and rejects any quote that charges a fee. Paid refresh remains available through an explicit request. Critical exits still proceed when needed and can incur on-chain mining fees. (#1391)
Stronger checks before signing
Incoming virtual transaction outputs (VTXOs) now require expiry evidence tied to their actual funding path. Signing checks verify spending scripts, transaction fields, and swap funding records before releasing signatures. Decoders also reject malformed or oversized records more defensively. (#1244, #1413, #1428, #785)
Clearer payment outcomes and credit limits
Credit spending and top-ups now have separate, explicit limits; both default to zero. Definitive payment failures stop lingering as pending, while transfers that have already committed signatures retain their recovery paths. Successful credit-only payments expose their payment preimage in activity history. (#1415, #1407, #1409, #1392)
More reliable round and exit recovery
Accepted rounds have persisted deadlines, and failed rounds release deposits when it is safe to retry. Exit recovery handles more broadcast failures and fee-rejected sweeps without mistaking an uncertain response for success. (#1317, #1393, #1319, #1356)
Accounting that survives restarts
Accounting commits alongside round completion and boarding sweeps, preserving attribution after a restart. Own-wallet transfers and recycled deposits no longer inflate incoming-payment totals. Fee history gains cursor pagination, and a read-only checker helps diagnose ledger inconsistencies. (#1324, #1330, #1345, #1353)
A more responsive daemon
Mailbox handling avoids several deadlocks under load, and optional /readyz and /livez endpoints detect stalled core actors. Backing-wallet balances now reflect the configured spending account, including supported remote-signing LND setups. (#1373, #1363, #1310, #1439)
Builds and mobile support
Android bindings use an SQLite backend compatible with the application sandbox. Release binaries and source builds now use Go 1.27.3. (#1352, #1440)
Verifying the release
Verify a downloaded binary or archive:
./scripts/verify-install.sh v0.2.0 <path>Reproduce the release from the v0.2.0 checkout:
make docker-release tag=v0.2.0See the reproducible build guide for details.
Contributors
Thanks to everyone represented in the commits, co-author credits, and merged pull requests:
Additional contributions came from @litbot-9000, including the lightninglabs-deploy identity, and claudell.