diff --git a/Cargo.lock b/Cargo.lock index 77a4ea3d2..659049949 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1528,7 +1528,7 @@ dependencies = [ [[package]] name = "gl-client" -version = "0.6.0" +version = "0.7.0" dependencies = [ "aes 0.8.4", "anyhow", @@ -1653,7 +1653,7 @@ dependencies = [ [[package]] name = "gl-sdk" -version = "0.4.0" +version = "0.5.0" dependencies = [ "anyhow", "bip39", @@ -1675,7 +1675,7 @@ dependencies = [ [[package]] name = "gl-sdk-cli" -version = "0.3.0" +version = "0.4.0" dependencies = [ "bip39", "clap", @@ -1691,7 +1691,7 @@ dependencies = [ [[package]] name = "gl-sdk-node" -version = "0.2.0" +version = "0.3.0" dependencies = [ "anyhow", "gl-sdk", diff --git a/libs/gl-cli/Cargo.toml b/libs/gl-cli/Cargo.toml index df9c2ff9f..9b8f0449d 100644 --- a/libs/gl-cli/Cargo.toml +++ b/libs/gl-cli/Cargo.toml @@ -26,7 +26,7 @@ clap = { version = "4.5", features = ["derive"] } dirs = "6.0" env_logger = "0.11" futures = "0.3" -gl-client = { version = "0.6", path = "../gl-client", features = ["backup"] } +gl-client = { version = "0.7", path = "../gl-client", features = ["backup"] } hex = "0.4" serde = { version = "1", features = ["derive"] } serde_json = "1" diff --git a/libs/gl-client-py/CHANGELOG.md b/libs/gl-client-py/CHANGELOG.md index 70f0f15f9..d6514b644 100644 --- a/libs/gl-client-py/CHANGELOG.md +++ b/libs/gl-client-py/CHANGELOG.md @@ -6,6 +6,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), ## Unreleased +## [0.4.0] - 2026-10-12 + ### Changed - Signer version updated from `v25.12` to `v26.06` (VLS 0.14.0 / CLN v26.06.1) diff --git a/libs/gl-client-py/pyproject.toml b/libs/gl-client-py/pyproject.toml index ac67a08f3..76122dbfa 100644 --- a/libs/gl-client-py/pyproject.toml +++ b/libs/gl-client-py/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "gl-client" -version = "0.3.4" +version = "0.4.0" description = "" readme = "README.md" requires-python = ">=3.8,<4" diff --git a/libs/gl-client-py/tests/test_plugin.py b/libs/gl-client-py/tests/test_plugin.py index 296ac2a65..49cb55817 100644 --- a/libs/gl-client-py/tests/test_plugin.py +++ b/libs/gl-client-py/tests/test_plugin.py @@ -228,14 +228,17 @@ def test_lsps_plugin_calls(clients, bitcoind, node_factory, lsps_server): # Try the pyo3 bindings from gl-client-py res = s.lsp_invoice(label="lbl2", description="description", amount_msat=31337) - from pyln.proto import Invoice - inv = Invoice.decode(res.bolt11) - pprint(inv) + # Decode with the CLN node's own decoder rather than pyln.proto's + # Invoice.decode, which uses bitstring.ConstBitStream (removed in + # bitstring >= 4.1). + decoded = r1.rpc.decode(res.bolt11) + pprint(decoded) # Only one routehint, with only one hop, the LSP to the destination - assert len(inv.route_hints.route_hints) == 1 - rh = inv.route_hints.route_hints[0] - assert rh.pubkey == bytes.fromhex(lsp_id) + routes = decoded.get("routes", decoded.get("route_hints", [])) + assert len(routes) == 1 + hop = routes[0][0] if isinstance(routes[0], list) else routes[0] + assert hop.get("pubkey", hop.get("node_id")) == lsp_id # The response should include the LSP opening fee computed from # the LSPS2 fee parameters (min_fee_msat=1000, proportional=1000). diff --git a/libs/gl-client/CHANGELOG.md b/libs/gl-client/CHANGELOG.md index c0be5e15c..48a66c8c5 100644 --- a/libs/gl-client/CHANGELOG.md +++ b/libs/gl-client/CHANGELOG.md @@ -6,14 +6,21 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), ## Unreleased +## [0.7.0] - 2026-10-12 + ### Added - `Scheduler::check_lightning_availability(node_id)` and the corresponding `Scheduler.CheckLightningAvailability` RPC — reports whether the Lightning account backed by `node_id` may be surfaced to the user. Unauthenticated and callable before the node is registered, so the `node_id` is passed explicitly rather than taken from the credentials. Monotonic: a registered node is always reported as available. +- Channel-splice support: a splice-policy dry-run resolver that answers splice decisions offline, durable splice state primitives in the `persist` module, and PSBT helpers (`psbt` module) for building splices from PSBTv2. ### Changed - Signer version updated from `v25.12` to `v26.06` (VLS 0.14.0 / CLN v26.06.1) +### Fixed + +- Signing operations no longer hang after a `signmessage` RPC call. + ## [0.6.0] - 2026-05-21 ### Added @@ -55,4 +62,5 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - Addressed a deprecation warning in gl-testing regarding `PROTOCOL_TLS` being renamed to `PROTOCOL_TLS_SERVER` - Fixed initial VLS state not being persisted to the tower (nodelet) +[0.7.0]: https://github.com/Blockstream/greenlight/compare/gl-client-v0.6.0...gl-client-v0.7.0 [0.6.0]: https://github.com/Blockstream/greenlight/compare/gl-client-0.3.2...gl-client-v0.6.0 diff --git a/libs/gl-client/Cargo.toml b/libs/gl-client/Cargo.toml index ecfd2a876..72d218a3c 100644 --- a/libs/gl-client/Cargo.toml +++ b/libs/gl-client/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "gl-client" -version = "0.6.0" +version = "0.7.0" edition = "2021" authors = [ "The Greenlight Team" diff --git a/libs/gl-plugin/Cargo.toml b/libs/gl-plugin/Cargo.toml index f1173ddcd..2505f8c97 100644 --- a/libs/gl-plugin/Cargo.toml +++ b/libs/gl-plugin/Cargo.toml @@ -22,7 +22,7 @@ cln-plugin = "^0.1" cln-rpc = { workspace = true } env_logger = "^0.7.1" futures = "0.3" -gl-client = { version = "^0.6.0", path = "../gl-client" } +gl-client = { version = ">=0.6.0, <0.8.0", path = "../gl-client" } gl-util = { version = "0.1", path = "../gl-util" } governor = { version = "0.5", default-features = false, features = ["std"] } hex = "0.4" diff --git a/libs/gl-sdk-android/gradle.properties b/libs/gl-sdk-android/gradle.properties index 4c66e37fe..5a5c6cee3 100644 --- a/libs/gl-sdk-android/gradle.properties +++ b/libs/gl-sdk-android/gradle.properties @@ -29,4 +29,4 @@ kotlin.mpp.enableCInteropCommonization=true android.builtInKotlin=false android.newDsl=false -libraryVersion=0.4.0 \ No newline at end of file +libraryVersion=0.5.0 \ No newline at end of file diff --git a/libs/gl-sdk-cli/CHANGELOG.md b/libs/gl-sdk-cli/CHANGELOG.md index 6aeb25623..5d80215d0 100644 --- a/libs/gl-sdk-cli/CHANGELOG.md +++ b/libs/gl-sdk-cli/CHANGELOG.md @@ -6,6 +6,12 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), ## Unreleased +## [0.4.0] - 2026-10-12 + +### Changed + +- Updated gl-sdk dependency to `0.5.0` (CLN `v26.06` signer, `Scheduler.lightning_available`) + ## [0.3.0] - 2026-05-21 ### Added @@ -18,4 +24,5 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - Updated gl-sdk dependency (builder-style Node creation, LNURL support, diagnostic data, on-chain preview, error codes) - Adapted `onchain_send` command for new optional `sat_per_vbyte` and `utxos` parameters +[0.4.0]: https://github.com/Blockstream/greenlight/releases/tag/gl-sdk-cli-v0.4.0 [0.3.0]: https://github.com/Blockstream/greenlight/releases/tag/gl-sdk-cli-v0.3.0 diff --git a/libs/gl-sdk-cli/Cargo.toml b/libs/gl-sdk-cli/Cargo.toml index e37a7efdf..282d4aa7f 100644 --- a/libs/gl-sdk-cli/Cargo.toml +++ b/libs/gl-sdk-cli/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "gl-sdk-cli" -version = "0.3.0" +version = "0.4.0" edition = "2021" description = "CLI wrapper for gl-sdk" @@ -12,7 +12,7 @@ name = "glsdk" path = "src/bin/glsdk.rs" [dependencies] -glsdk = { version = "0.4.0", path = "../gl-sdk", package = "gl-sdk" } +glsdk = { version = "0.5.0", path = "../gl-sdk", package = "gl-sdk" } bip39 = { version = "2.2", features = ["rand"] } clap = { version = "4.5", features = ["derive"] } dirs = "6.0" diff --git a/libs/gl-sdk-napi/Cargo.toml b/libs/gl-sdk-napi/Cargo.toml index 0b90ac42c..bc1eaaf23 100644 --- a/libs/gl-sdk-napi/Cargo.toml +++ b/libs/gl-sdk-napi/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "gl-sdk-node" -version = "0.2.0" +version = "0.3.0" edition = "2021" license = "MIT" @@ -16,7 +16,7 @@ napi = { version = "2", features = ["async", "tokio_rt"] } napi-derive = "2" # Use local gl-sdk (library name is 'glsdk') -glsdk = { version = "0.4.0", path = "../gl-sdk", package = "gl-sdk" } +glsdk = { version = "0.5.0", path = "../gl-sdk", package = "gl-sdk" } # Additional dependencies that gl-sdk uses tokio = { version = "1", features = ["full"] } diff --git a/libs/gl-sdk-napi/package.json b/libs/gl-sdk-napi/package.json index 8b5428211..20d29c5f9 100644 --- a/libs/gl-sdk-napi/package.json +++ b/libs/gl-sdk-napi/package.json @@ -1,6 +1,6 @@ { "name": "@greenlightcln/glsdk", - "version": "0.2.0", + "version": "0.3.0", "description": "Node.js bindings for Blockstream Greenlight SDK", "author": "The Greenlight Team", "main": "index.js", @@ -33,6 +33,7 @@ "scripts": { "clean": "rm -rf ../../target && rm -rf index.js && rm -rf index.d.ts && rm -rf *.node", "build": "napi build --platform --release", + "pretest": "cargo build -p gl-plugin -p gl-signerproxy", "test": "jest" }, "devDependencies": { diff --git a/libs/gl-sdk/CHANGELOG.md b/libs/gl-sdk/CHANGELOG.md index 4e6d3e589..55d68b47a 100644 --- a/libs/gl-sdk/CHANGELOG.md +++ b/libs/gl-sdk/CHANGELOG.md @@ -6,14 +6,20 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), ## Unreleased -### Fixed - -- Kotlin: `UniFFI API checksum mismatch` on 32-bit ARM Android once the app is AOT-compiled. The bindings are generated with a gobley build that reads `u8`/`u16` return values correctly ([gobley#252](https://github.com/gobley/gobley/issues/252)). +## [0.5.0] - 2026-10-12 ### Added - `Scheduler.lightning_available(node_id)` — asks whether the Lightning account backed by `node_id` may be surfaced to the user. Intended as a feature gate for applications that offer Lightning alongside other account types. Callable before `register()` and without credentials, since the decision has to be made before a node exists. The answer is monotonic: once the node is registered it is reported as available and stays that way, whatever the node's status or the provider's capacity. Before registration the answer is advisory; treat an error as "unknown" rather than as a negative answer. Greenlight currently reports every unregistered account as unavailable while the backing Lightning Service Provider integration is being built. +### Changed + +- Updated gl-client dependency to `0.7.0`, adding CLN `v26.06` signer support and channel splices. + +### Fixed + +- Kotlin: `UniFFI API checksum mismatch` on 32-bit ARM Android once the app is AOT-compiled. The bindings are generated with a gobley build that reads `u8`/`u16` return values correctly ([gobley#252](https://github.com/gobley/gobley/issues/252)). + ## [0.4.0] - 2026-05-21 ### Added @@ -70,5 +76,6 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - Updated gl-client dependency to support CLN v25.12 signer. +[0.5.0]: https://github.com/Blockstream/greenlight/compare/gl-sdk-v0.4.0...gl-sdk-v0.5.0 [0.4.0]: https://github.com/Blockstream/greenlight/compare/gl-sdk-v0.1.1...gl-sdk-v0.4.0 [0.1.1]: https://github.com/Blockstream/greenlight/releases/tag/gl-sdk-v0.1.1 diff --git a/libs/gl-sdk/Cargo.toml b/libs/gl-sdk/Cargo.toml index 3051dff5f..ead17b040 100644 --- a/libs/gl-sdk/Cargo.toml +++ b/libs/gl-sdk/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "gl-sdk" -version = "0.4.0" +version = "0.5.0" edition = "2024" description = "High-level SDK for Greenlight with UniFFI language bindings" license = "MIT" @@ -17,7 +17,7 @@ name = "glsdk" anyhow = "1" bip39 = "2.2.0" bitcoin = { version = "0.32", features = ["base64"] } -gl-client = { version = "0.6.0", path = "../gl-client" } +gl-client = { version = "0.7.0", path = "../gl-client" } hex = "0.4" log = "0.4" lightning-invoice = "0.33" diff --git a/libs/gl-sdk/pyproject.toml b/libs/gl-sdk/pyproject.toml index 846ab885e..223d919e6 100644 --- a/libs/gl-sdk/pyproject.toml +++ b/libs/gl-sdk/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "gl-sdk" -version = "0.4.0" +version = "0.5.0" description = "Python bindings for Greenlight SDK using UniFFI" readme = "README.md" requires-python = ">=3.10" diff --git a/libs/gl-testing/CHANGELOG.md b/libs/gl-testing/CHANGELOG.md index 68abc1297..81a167087 100644 --- a/libs/gl-testing/CHANGELOG.md +++ b/libs/gl-testing/CHANGELOG.md @@ -6,6 +6,12 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), ## Unreleased +## [0.4.0] - 2026-10-12 + +### Added + +- The mock scheduler answers `CheckLightningAvailability` like the real one: unregistered nodes are reported as unavailable, registered nodes always as available. + ### Changed - Updated gl-client dependency to support CLN `v26.06` signer. @@ -18,5 +24,6 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - Updated gl-client dependency to support CLN v25.12 signer. +[0.4.0]: https://github.com/Blockstream/greenlight/releases/tag/gl-testing-v0.4.0 [0.3.1]: https://github.com/Blockstream/greenlight/releases/tag/gl-testing-v0.3.1 diff --git a/libs/gl-testing/pyproject.toml b/libs/gl-testing/pyproject.toml index 8e3c4ff0a..c7f9c6594 100644 --- a/libs/gl-testing/pyproject.toml +++ b/libs/gl-testing/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "gl-testing" -version = "0.3.1" +version = "0.4.0" description = "" readme = "README.md" requires-python = ">=3.8"