Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions libs/gl-client-py/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,8 @@ 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)
- Remove the use of `decodepay`, deprecated in v24.11.
2 changes: 1 addition & 1 deletion libs/gl-client-py/glclient/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
4 changes: 4 additions & 0 deletions libs/gl-client/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion libs/gl-client/src/signer/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
1 change: 1 addition & 0 deletions libs/gl-plugin/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
23 changes: 14 additions & 9 deletions libs/gl-plugin/src/tramp.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand All @@ -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,
Expand Down Expand Up @@ -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"
Expand All @@ -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,
Expand Down Expand Up @@ -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 {
Expand Down
6 changes: 6 additions & 0 deletions libs/gl-testing/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,12 @@ 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.
- Remove the use of `decodepay`, deprecated in v24.11, always use `decode`
instead.

## [0.3.1] - 2026-01-16

### Changed
Expand Down
2 changes: 2 additions & 0 deletions libs/gl-testing/gltesting/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -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]
Expand All @@ -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]

Expand Down
2 changes: 1 addition & 1 deletion libs/gl-testing/tests/test_lnurl_server.py
Original file line number Diff line number Diff line change
Expand Up @@ -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"])
Expand Down
10 changes: 5 additions & 5 deletions libs/gl-testing/tests/test_node.py
Original file line number Diff line number Diff line change
Expand Up @@ -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)

Expand Down Expand Up @@ -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"]

Expand Down Expand Up @@ -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()
Expand Down
Loading