From f92e06bd9be0d226383db15b4e0018c46cb8c3cd Mon Sep 17 00:00:00 2001 From: Lagrang3 Date: Tue, 9 Jun 2026 12:22:40 +0100 Subject: [PATCH 1/2] chore: add v26.06gl1 version Signed-off-by: Lagrang3 --- libs/gl-client-py/CHANGELOG.md | 4 ++++ libs/gl-client-py/glclient/__init__.py | 2 +- libs/gl-client/CHANGELOG.md | 4 ++++ libs/gl-client/src/signer/mod.rs | 2 +- libs/gl-testing/CHANGELOG.md | 4 ++++ libs/gl-testing/gltesting/utils.py | 2 ++ 6 files changed, 16 insertions(+), 2 deletions(-) diff --git a/libs/gl-client-py/CHANGELOG.md b/libs/gl-client-py/CHANGELOG.md index 245034002..b2d14d347 100644 --- a/libs/gl-client-py/CHANGELOG.md +++ b/libs/gl-client-py/CHANGELOG.md @@ -5,3 +5,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## Unreleased + +### 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/glclient/__init__.py b/libs/gl-client-py/glclient/__init__.py index 5def639c5..abc552695 100644 --- a/libs/gl-client-py/glclient/__init__.py +++ b/libs/gl-client-py/glclient/__init__.py @@ -16,7 +16,7 @@ # Keep in sync with the libhsmd version, this is tested in unit tests. -__version__ = "v25.12" +__version__ = "v26.06" E = TypeVar("E", bound=PbMessage) diff --git a/libs/gl-client/CHANGELOG.md b/libs/gl-client/CHANGELOG.md index 646cc3c2a..098d31659 100644 --- a/libs/gl-client/CHANGELOG.md +++ b/libs/gl-client/CHANGELOG.md @@ -6,6 +6,10 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), ## Unreleased +### Changed + +- Signer version updated from `v25.12` to `v26.06` (VLS 0.14.0 / CLN v26.06.1) + ## [0.6.0] - 2026-05-21 ### Added diff --git a/libs/gl-client/src/signer/mod.rs b/libs/gl-client/src/signer/mod.rs index 7370d298e..da3fee6e9 100644 --- a/libs/gl-client/src/signer/mod.rs +++ b/libs/gl-client/src/signer/mod.rs @@ -60,7 +60,7 @@ pub mod model; mod report; mod resolve; -const VERSION: &str = "v25.12"; +const VERSION: &str = "v26.06"; const GITHASH: &str = env!("GIT_HASH"); const RUNE_VERSION: &str = "gl0"; // This is the same derivation key that is used by core lightning itself. diff --git a/libs/gl-testing/CHANGELOG.md b/libs/gl-testing/CHANGELOG.md index a5fa884ef..a10e8f886 100644 --- a/libs/gl-testing/CHANGELOG.md +++ b/libs/gl-testing/CHANGELOG.md @@ -6,6 +6,10 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), ## Unreleased +### Changed + +- Updated gl-client dependency to support CLN `v26.06` signer. + ## [0.3.1] - 2026-01-16 ### Changed diff --git a/libs/gl-testing/gltesting/utils.py b/libs/gl-testing/gltesting/utils.py index 8d8aec2e6..536bc1187 100644 --- a/libs/gl-testing/gltesting/utils.py +++ b/libs/gl-testing/gltesting/utils.py @@ -23,6 +23,7 @@ def is_compat(self, nv: NodeVersion) -> bool: "v24.11": ["v24.11gl1"], "v25.05": ["v25.05gl1"], "v25.12": ["v25.12gl1"], + "v26.06": ["v25.12gl1", "v26.06gl1"], } return self.name in compat[nv.name] @@ -41,6 +42,7 @@ def get_node_version(self): "v24.11": "v24.11gl1", "v25.05": "v25.05gl1", "v25.12": "v25.12gl1", + "v26.06": "v26.06gl1", } return m[self.name] From fa0fad3310d2d27b44f48d742e9c9c11429b8125 Mon Sep 17 00:00:00 2001 From: Lagrang3 Date: Fri, 12 Jun 2026 09:51:21 +0100 Subject: [PATCH 2/2] gl-client-py: use decode instead of decodepay decodepay was deprecated in v24.11 and removed in commit in CLN's PR #8850 (see commit a9d9803eb6baaed119ad8433ac61b1cba26782e5) ``` tests/test_plugin.py::test_trampoline_pay - ValueError: error calling remote method: status: Unknown, message: "Unknown command 'decodepay'" ``` Signed-off-by: Lagrang3 --- libs/gl-client-py/CHANGELOG.md | 1 + libs/gl-plugin/CHANGELOG.md | 1 + libs/gl-plugin/src/tramp.rs | 23 +++++++++++++--------- libs/gl-testing/CHANGELOG.md | 2 ++ libs/gl-testing/tests/test_lnurl_server.py | 2 +- libs/gl-testing/tests/test_node.py | 10 +++++----- 6 files changed, 24 insertions(+), 15 deletions(-) diff --git a/libs/gl-client-py/CHANGELOG.md b/libs/gl-client-py/CHANGELOG.md index b2d14d347..70f0f15f9 100644 --- a/libs/gl-client-py/CHANGELOG.md +++ b/libs/gl-client-py/CHANGELOG.md @@ -9,3 +9,4 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), ### Changed - Signer version updated from `v25.12` to `v26.06` (VLS 0.14.0 / CLN v26.06.1) +- Remove the use of `decodepay`, deprecated in v24.11. diff --git a/libs/gl-plugin/CHANGELOG.md b/libs/gl-plugin/CHANGELOG.md index d27184210..c300fde29 100644 --- a/libs/gl-plugin/CHANGELOG.md +++ b/libs/gl-plugin/CHANGELOG.md @@ -9,6 +9,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), ### Removed - Legacy client-side LSPS2 `htlc_accepted` hook — JIT channel fee handling is now performed natively by CLN +- Remove `Decodepay` rpc, deprecated in v24.11. ## [0.3.1] - 2026-01-16 diff --git a/libs/gl-plugin/src/tramp.rs b/libs/gl-plugin/src/tramp.rs index 0f0d035af..486a32443 100644 --- a/libs/gl-plugin/src/tramp.rs +++ b/libs/gl-plugin/src/tramp.rs @@ -231,15 +231,20 @@ pub async fn trampolinepay( // Extract the amount from the bolt11 or use the set amount field // Return an error if there is a mismatch. let decoded = rpc - .call_typed(&cln_rpc::model::requests::DecodepayRequest { - bolt11: req.bolt11.clone(), - description: None, + .call_typed(&cln_rpc::model::requests::DecodeRequest { + string: req.bolt11.clone(), }) .await?; + let payment_hash = decoded.payment_hash.ok_or_else(|| { + error!( + TrampolineErrorCode::Internal, + "decoded bolt11 does not return a payment_hash" + ) + })?; let send_pays = rpc .call_typed(&cln_rpc::model::requests::ListsendpaysRequest { - payment_hash: Some(decoded.payment_hash.clone()), + payment_hash: Some(payment_hash.clone()), bolt11: None, index: None, limit: None, @@ -254,7 +259,7 @@ pub async fn trampolinepay( { let resp = rpc .call_typed(&cln_rpc::model::requests::WaitsendpayRequest { - payment_hash: decoded.payment_hash.clone(), + payment_hash: payment_hash.clone(), groupid: None, partid: None, timeout: None, @@ -514,7 +519,7 @@ pub async fn trampolinepay( let handle = tokio::spawn(async move { let payment_secret = decoded .payment_secret - .map(|e| e[..].to_vec()) + .map(|e| e.to_vec()) .ok_or(error!( TrampolineErrorCode::InvalidInvoice, "The invoice is invalid, missing payment secret" @@ -537,7 +542,7 @@ pub async fn trampolinepay( scid, part_id, group_id, - decoded.payment_hash, + payment_hash.clone(), cln_rpc::primitives::Amount::from_msat(amount_msat), payment_secret, payload_hex, @@ -566,14 +571,14 @@ pub async fn trampolinepay( if let Some(payment_preimage) = payment_preimage { Ok(cln_rpc::model::responses::PayResponse { - destination: Some(decoded.payee), + destination: decoded.payee, warning_partial_completion: None, status: cln_rpc::model::responses::PayStatus::COMPLETE, amount_msat: cln_rpc::primitives::Amount::from_msat(amount_msat), amount_sent_msat: cln_rpc::primitives::Amount::from_msat(amount_msat), created_at: 0., parts: alloc.len() as u32, - payment_hash: decoded.payment_hash, + payment_hash: payment_hash, payment_preimage, }) } else { diff --git a/libs/gl-testing/CHANGELOG.md b/libs/gl-testing/CHANGELOG.md index a10e8f886..68abc1297 100644 --- a/libs/gl-testing/CHANGELOG.md +++ b/libs/gl-testing/CHANGELOG.md @@ -9,6 +9,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), ### Changed - Updated gl-client dependency to support CLN `v26.06` signer. +- Remove the use of `decodepay`, deprecated in v24.11, always use `decode` + instead. ## [0.3.1] - 2026-01-16 diff --git a/libs/gl-testing/tests/test_lnurl_server.py b/libs/gl-testing/tests/test_lnurl_server.py index e9f9424e8..80b3e6510 100644 --- a/libs/gl-testing/tests/test_lnurl_server.py +++ b/libs/gl-testing/tests/test_lnurl_server.py @@ -55,7 +55,7 @@ def test_pay_callback_returns_valid_invoice(lnurl_service): assert "pr" in body # Decode the BOLT11 using the backing CLN node - decoded = lnurl_service.cln_rpc.decodepay(body["pr"]) + decoded = lnurl_service.cln_rpc.decode(body["pr"]) assert decoded["amount_msat"] == amount_msat # description hash must match SHA256(metadata) expected_hash = metadata_sha256(pay_req["metadata"]) diff --git a/libs/gl-testing/tests/test_node.py b/libs/gl-testing/tests/test_node.py index a9a27919b..02c4f4ec8 100644 --- a/libs/gl-testing/tests/test_node.py +++ b/libs/gl-testing/tests/test_node.py @@ -85,7 +85,7 @@ def test_node_network(node_factory, clients, bitcoind): label="lbl", ).bolt11 - decoded = l1.rpc.decodepay(inv) + decoded = l1.rpc.decode(inv) pprint(decoded) l1.rpc.pay(inv) @@ -166,7 +166,7 @@ def test_node_invoice_amountless(bitcoind, node_factory, clients): payload={"label": "test", "amount_msat": "any", "description": "desc"}, )["bolt11"] print(inv) - print(l1.rpc.decodepay(inv)) + print(l1.rpc.decode(inv)) p = gl1.pay(inv, clnpb.Amount(msat=31337)) invs = l1.rpc.listinvoices()["invoices"] @@ -288,16 +288,16 @@ def test_vls_crash_repro( ) -> None: """Reproduce an overflow panic in VLS v0.10.0.""" (l1,) = node_factory.line_graph(1, opts={"experimental-anchors": None}) - + c = clients.new() c.register(configure=True) - + # Get the expected node version from the signer version mapping from gltesting.utils import SignerVersion signer_version_str = c.signer().version() signer_version = SignerVersion(name=signer_version_str) expected_node_version = signer_version.get_node_version() - + assert l1.rpc.getinfo()["version"] == expected_node_version s = c.signer().run_in_thread() gl1 = c.node()