What's New
- Added WASM support (Node.js and Web)
- Lowered the minimum payment amount for sending
- Enabled fee payments in USDT
More Information Regarding WASM
To achieve WASM support, we made several major improvements across the SDK:
-
WASM-Compatible SDK Core:
We updated thesdk-common
crate to work in WASM environments by:- Integrating a WASM-compatible gRPC client using
tonic_web_wasm_client
- Implementing custom DNS resolution for WASM
- Refactoring our internal REST client for better testability without relying on non-WASM-compatible libraries
- Introducing a new
sdk-macros
crate to support required macro annotations across platforms
- Integrating a WASM-compatible gRPC client using
-
New WASM-Specific Crate:
We added a dedicated WASM interface usingwasm-bindgen
, with custom type and callback handling to provide a smooth developer experience. -
Flexible SDK Customization:
The newLiquidSdkBuilder
makes it easy to configure SDK components, including platform-specific filesystem abstractions to support persistent storage in both Web and Node.js environments. -
SQLite and Cache Handling:
Since traditional database solutions are challenging in WASM, we use an adapted in-memory SQLite (rusqlite
) setup along with a custom persistent watcher. -
Background Tasks & System Adaptations:
We implemented new methods for background task spawning, interval management, and system time access tailored for WASM constraints. -
Alternative Blockchain Data Sources:
As Electrum wasn't feasible in WASM, we integrated support for Waterfalls as a lightweight alternative for blockchain data. -
WASM-Ready Boltz Integration:
We refactored the Boltz swap client to be fully WASM compatible. -
gRPC-Web Proxy Support:
All our gRPC-based services (like the Breez Server and real-time sync) now support gRPC-Web proxies, ensuring seamless connectivity from browser environments.
What's Changed
- Fix ios dummies archiving by @dangeross in #772
- WASM: Update boltz client dependency and use included wasm tokio-tungstenite by @danielgranhao in #769
- Refactor recoverer by @roeierez in #764
- Move
mockall
dependency by @dangeross in #783 - Fix LNURL drain and payment info by @dangeross in #776
- Fix swap recovery before wallet scan by @danielgranhao in #775
- Notification Plugin: Dismiss replaceable notifications on service shutdown by @dangeross in #777
- Downgrade android release to Uniffi 0.25 by @erdemyerebasmaz in #786
- Update flutter_rust_bridge to version 2.9.0 by @erdemyerebasmaz in #789
- Fix pending receive balance by @dangeross in #787
- WASM: lock frb and bindings modules by @danielgranhao in #791
- WASM: getting the current time by @danielgranhao in #795
- WASM: run core crate tests on wasm by @danielgranhao in #799
- WASM: Update
secp256k1-zkp
patch by @dangeross in #780 - WASM: Setup emscripten by @dangeross in #782
- WASM: Add missing lnurl_info/bip353_address to wasm PaymentDetails by @dangeross in #804
- Expose real time synced event by @danielgranhao in #800
- WASM: prevent filesystem access by @danielgranhao in #792
- Include boltz regtest as submodule by @danielgranhao in #774
- WASM: sync grpc client by @danielgranhao in #790
- WASM: spawn task by @danielgranhao in #797
- Lock cargo-expand install by @dangeross in #803
- Reintroduce 32bit builds by @dangeross in #808
- WASM: Conditionally add MissedTickBehavior by @dangeross in #806
- Improve development guides by @dangeross in #809
- Update Flutter plugin to match Dart plugin version by @erdemyerebasmaz in #794
- regtest: improve README.md by @danielgranhao in #811
- WASM: fix various minor issues by @danielgranhao in #810
- Update README: Add Breez API Key Instructions by @Dunsin-cyber in #807
- Add python 3.13 wheels by @dangeross in #813
- Add Esplora client to chain services by @hydra-yse in #761
- Integrate Esplora support to Boltz swapper by @hydra-yse in #805
- WASM: Fix minor compilation issues by @hydra-yse in #819
- WASM: Use MaybeSend + MaybeSync for all traits by @dangeross in #817
- Fix println by @dangeross in #820
- WASM: Fix minor typo by @hydra-yse in #822
- Add Esplora support to LWK wallet by @hydra-yse in #818
- WASM: fix clippy and tests by @danielgranhao in #823
- Set Swift framework CFBundleShortVersionString by @dangeross in #826
- Only full_scan_to_index when not using waterfalls by @dangeross in #833
- Wasm package and examples by @dangeross in #814
- Use lazy initialization for all swapper clients by @hydra-yse in #841
- WASM: fix remaining sleep and current time uses by @danielgranhao in #840
- Adds Logger interface for Wasm (v2) by @dangeross in #835
- Pay fees with USDT asset (payjoin) by @dangeross in #779
- Add regtest end-to-end tests by @danielgranhao in #816
- Store claim/refund addresses by @dangeross in #849
- Wasm publish by @dangeross in #815
- Fix clippy test issues by @dangeross in #850
- Wasm: Reset interval after sync by @dangeross in #860
- WASM: db backups by @danielgranhao in #851
- LWK waterfalls fixes by @dangeross in #853
- Waterfalls script history by @dangeross in #858
- Wasm: Add the remaining CLI commands for the node.js example by @dangeross in #861
- Fix clippy issues for rust 1.86.0 by @dangeross in #864
- Switch Esplora client url to Breez server instance by @hydra-yse in #845
- Set correct realtime sync url for wasm by @roeierez in #867
- Add wasm to defaults for publishing by @dangeross in #866
- Strip input prefix before bip353 lookup by @dangeross in #869
- Handle send swap minimal_batched by @dangeross in #863
- Wasm: wallet cache persistence by @danielgranhao in #868
- fix: Wasm makefile extra spaces by @danielgranhao in #873
- Wasm: prevent IndexedDb wallet cache corruption and gracefully handle it by @danielgranhao in #875
- Wasm: Run tests on node.js by @danielgranhao in #872
- fix: missing wallet cache dir creation after deletion by @danielgranhao in #881
- fix: Interval not compatible with node.js by @danielgranhao in #880
- Fix invoice expiry check logic by @danielgranhao in #885
- Add failsafe mechanism for real-time sync by @hydra-yse in #871
- Fix WASM Breez server url by @roeierez in #886
New Contributors
- @Dunsin-cyber made their first contribution in #807
Full Changelog: 0.7.2...0.8.0