What changed, and why it matters
This commit is a routine version bump for a new release candidate (v26.06rc1) of Core Lightning. It updates version strings in packaging files and adds a detailed changelog. No actual source code behavior changes are included in this commit, so it does not introduce or fix any security issue by itself.
No action required for this commit. Review the actual code changes referenced in the changelog (e.g., PRs #8922, #9044, #9109, #9110) separately if assessing security content of the release.
Security signals we found
No strong security signals were identified.
Evidence from the diff
The diff consists entirely of metadata changes: .version, Python package init.py and pyproject.toml files, tools/reckless, and uv.lock are updated from v26.04.1 to v26.06rc1. CHANGELOG.md is expanded with release notes summarizing many prior pull requests. There are no code logic changes in this commit, so no vulnerability is present in the diff itself.
Changed components
Version metadata filesCHANGELOG.mdPython package manifests (pyln-client, pyln-proto, pyln-testing)tools/recklessuv.lockInspect captured patch +104 / −11
diff --git a/.version b/.version
index 44926a13..305ba258 100644
--- a/.version
+++ b/.version
@@ -1 +1 @@
-v26.04.1
+v26.06rc1
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 997852b8..c7ea2a20 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,6 +4,99 @@ 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/).
+## [26.06rc1] - 2026-05-11: "CODENAME"
+
+### Added
+
+ - JSON-RPC: `graceful` command to prepare CLN for shutdown. ([#9111])
+ - JSON-RPC: `xkeysend` command for keysend with modern routing support. ([#9110])
+ - JSON-RPC: `sendamount` command, to make a payment specifying the desired amount to send instead of the amount to be received. ([#None])
+ - JSON-RPC: `askrene-remove-channel-update`, a new RPC to remove channel_update entries from layers. ([#9040])
+ - Plugins: `invoice_creation` notification now includes `offer_id` when the invoice is associated with a BOLT 12 offer. ([#8981])
+ - Config: option `xpay-user-layer` to add default layer(s) to `xpay` ([#9037])
+ - JSON-RPC: `sendpay` now accepts one of the `paths` returned from `getroutes` as its `route` parameter. ([#9110])
+ - JSON-RPC: `getroutes` `route` explicit fields `node_id_in`, `node_id_out`, `amount_in_msat`, `amount_out_msat`, `cltv_in`, `cltv_out`. ([#9110])
+ - Protocol: `xpay` now uses shadow CLTV additions to help mask final destination as per BOLT 7. ([#9110])
+ - Protocol: `xpay` will now update for the current payment if it gets a `channel_update` in an error message. ([#9110])
+ - JSON-RPC: `xpay` now accepts `label` and `localinvreqid` parameters (like `pay`). ([#9110])
+ - JSON-RPC: `injectpaymentonion` parameter `destination`. ([#9110])
+ - Tracing: Add a unix-domain socket sink for opentelemetry traces ([#9078])
+
+
+### Changed
+
+ - Protocol: `message-padding` defaults to false, due to poor detection of broken implementations. ([#9119])
+ - JSON-RPC: `xpay` now handles `pay` command by default (use `xpay-handle-pay=false` to prevent this) ([#9110])
+ - JSON-RPC: `pay` now accepts `invstring` as a parameter name for `bolt11`, to ease transition when xpay takes over in v27.03. ([#9110])
+ - offers: we now use `xpay` not `pay` for paying invoices made with invoicerequest(). ([#9110])
+ - JSON-RPC: `getemergencyrecoverdata` is now more verbose. ([#8422])
+ - Build: We no longer use `-Werror` by default, unless --enable-debugbuild is set. ([#9101])
+ - Protocol: We now wait 72 blocks, not 12, before closing channels (BOLT update) ([#9051])
+
+
+### Deprecated
+
+Note: You should always set `allow-deprecated-apis=false` to test for changes.
+
+ - JSON-RPC: `keysend` (use `xkeysend`). `xkeysend` will take over `keysend` in v27.03. ([#9110])
+ - JSON-RPC: `getroute` (use `getroutes` with layers `["auto.localchans","auto.sourcefree"]` and `maxparts=1`) (available since v25.09). ([#9110])
+ - JSON-RPC: `pay` and `paystatus`: use `xpay`, `listpays` (or `xpay`'s notifications for details of attempts). `pay` will be replaced by `xpay` in v27.03. ([#9110])
+ - JSON-RPC: `getroutes` `route` fields `next_node_id`, `amount_msat` and `delay` (use `node_id_out`, `amount_in_msat` and `cltv_in`). ([#9110])
+ - JSON-RPC: `getroutes` layer `auto.no_mpp_support`: use `maxparts=1` parameter instead (available since v25.09). ([#9110])
+
+
+### Removed
+
+ - JSON-RPC: `exclude` parameter to `pay` (when `xpay-handle-pay` is True): craft a layer with desired modifications and pass it to `xpay` `layers`. ([#9110])
+
+
+### Fixed
+
+ - Protocol: high fee issue that caused `splicein` and `spliceout` to abort. ([#9109])
+ - JSON-RPC: `setconfig` no longer crashes on dynamic multi-value plugin options ([#8751])
+ - contrib: the systemd lightningd.service script now shuts down lightningd properly. ([#9111])
+ - JSON-RPC: `xpay` now correctly returns error code 219 on already paid invoices (not 218). ([#9110])
+ - JSON-RPC: `withdraw` now returns a fully signed transaction in the `tx` response field. ([#8942])
+ - Wallet: Transactions now correctly create change outputs >= 330 sat for P2TR/P2WPKH instead of absorbing them as fees ([#8807])
+ - Protocol: we now only store the most recent peer backup when recovering from peers. ([#8422])
+ - JSON-RPC: `fundchannel_complete`: reject PSBTs with unsigned non-segwit inputs (could lead to unrecoverable funds!). ([#8922])
+ - Protocol: `gossipd` will now silently ignore gossip for other chains (rather than sending warnings). ([#9044])
+ - Protocol: when we send errors, we won't include a `channel_update` if we chose a different channel than the one they told us to. ([#9044])
+ - Protocol: use BOLT4's paranoid advice about doing constant-time error decryption. ([#9044])
+ - Fix for `splicein`, `spliceout`, and `dev-splice` commands where channel balances included partial sats. ([#9097])
+ - build: fix build errors with GCC 15 (Arch Linux). ([#9075])
+
+
+### EXPERIMENTAL
+
+ - JSON-RPC: `createproof` to create a payment proof for a (successful) BOLT12 payment. ([#9116])
+ - JSON-RPC: `decode` now supports the `lnp` payer proof format. ([#9116])
+ - Plugins: `bwatch` plugin (enable using `plugin=bwatch`) ([#9098])
+
+
+[#9101]: https://github.com/ElementsProject/lightning/pull/9101
+[#9044]: https://github.com/ElementsProject/lightning/pull/9044
+[#9100]: https://github.com/ElementsProject/lightning/pull/9100
+[#9110]: https://github.com/ElementsProject/lightning/pull/9110
+[#9040]: https://github.com/ElementsProject/lightning/pull/9040
+[#9111]: https://github.com/ElementsProject/lightning/pull/9111
+[#9097]: https://github.com/ElementsProject/lightning/pull/9097
+[#8422]: https://github.com/ElementsProject/lightning/pull/8422
+[#9078]: https://github.com/ElementsProject/lightning/pull/9078
+[#8981]: https://github.com/ElementsProject/lightning/pull/8981
+[#8751]: https://github.com/ElementsProject/lightning/pull/8751
+[#8807]: https://github.com/ElementsProject/lightning/pull/8807
+[#9037]: https://github.com/ElementsProject/lightning/pull/9037
+[#9119]: https://github.com/ElementsProject/lightning/pull/9119
+[#9051]: https://github.com/ElementsProject/lightning/pull/9051
+[#9098]: https://github.com/ElementsProject/lightning/pull/9098
+[#9075]: https://github.com/ElementsProject/lightning/pull/9075
+[#9109]: https://github.com/ElementsProject/lightning/pull/9109
+[#9116]: https://github.com/ElementsProject/lightning/pull/9116
+[#8942]: https://github.com/ElementsProject/lightning/pull/8942
+[#8922]: https://github.com/ElementsProject/lightning/pull/8922
+[26.06rc1]: https://github.com/ElementsProject/lightning/releases/tag/v26.06rc1
+
## [26.04.1] - 2026-04-25: "Negative Routing Fees II"
This point release is recommended: it fixes a build failure in some environments and a gossip protocol issue.
diff --git a/contrib/pyln-client/pyln/client/__init__.py b/contrib/pyln-client/pyln/client/__init__.py
index ad8c1783..0760e65c 100644
--- a/contrib/pyln-client/pyln/client/__init__.py
+++ b/contrib/pyln-client/pyln/client/__init__.py
@@ -4,7 +4,7 @@ from .gossmap import Gossmap, GossmapNode, GossmapChannel, GossmapHalfchannel, G
from .gossmapstats import GossmapStats
from .version import NodeVersion
-__version__ = "v26.04.1"
+__version__ = "v26.06rc1"
__all__ = [
"LightningRpc",
diff --git a/contrib/pyln-client/pyproject.toml b/contrib/pyln-client/pyproject.toml
index 1ebd0d5b..ad6329f4 100644
--- a/contrib/pyln-client/pyproject.toml
+++ b/contrib/pyln-client/pyproject.toml
@@ -1,6 +1,6 @@
[project]
name = "pyln-client"
-version = "v26.04.1"
+version = "v26.06rc1"
description = "Client library and plugin library for Core Lightning"
authors = [{ name = "Christian Decker", email = "decker.christian@gmail.com" }]
license = { text = "BSD-MIT" }
diff --git a/contrib/pyln-proto/pyln/proto/__init__.py b/contrib/pyln-proto/pyln/proto/__init__.py
index 7faaea88..8601a0b3 100644
--- a/contrib/pyln-proto/pyln/proto/__init__.py
+++ b/contrib/pyln-proto/pyln/proto/__init__.py
@@ -4,7 +4,7 @@ from .invoice import Invoice
from .onion import OnionPayload, TlvPayload, LegacyOnionPayload
from .wire import LightningConnection, LightningServerSocket
-__version__ = "v26.04.1"
+__version__ = "v26.06rc1"
__all__ = [
"Invoice",
diff --git a/contrib/pyln-proto/pyproject.toml b/contrib/pyln-proto/pyproject.toml
index 3edf9fcd..7666eab2 100644
--- a/contrib/pyln-proto/pyproject.toml
+++ b/contrib/pyln-proto/pyproject.toml
@@ -1,6 +1,6 @@
[project]
name = "pyln-proto"
-version = "v26.04.1"
+version = "v26.06rc1"
description = "This package implements some of the Lightning Network protocol in pure python. It is intended for protocol testing and some minor tooling only. It is not deemed secure enough to handle any amount of real funds (you have been warned!)."
authors = [
{name = "Christian Decker", email = "decker.christian@gmail.com"}
diff --git a/contrib/pyln-testing/pyln/testing/__init__.py b/contrib/pyln-testing/pyln/testing/__init__.py
index 460b2a05..c9253e09 100644
--- a/contrib/pyln-testing/pyln/testing/__init__.py
+++ b/contrib/pyln-testing/pyln/testing/__init__.py
@@ -1,4 +1,4 @@
-__version__ = "v26.04.1"
+__version__ = "v26.06rc1"
__all__ = [
"__version__",
diff --git a/contrib/pyln-testing/pyproject.toml b/contrib/pyln-testing/pyproject.toml
index b2cabca5..b474414b 100644
--- a/contrib/pyln-testing/pyproject.toml
+++ b/contrib/pyln-testing/pyproject.toml
@@ -1,6 +1,6 @@
[project]
name = "pyln-testing"
-version = "v26.04.1"
+version = "v26.06rc1"
description = "Test your Core Lightning integration, plugins or whatever you want"
authors = [{ name = "Christian Decker", email = "decker.christian@gmail.com" }]
license = { text = "BSD-MIT" }
diff --git a/tools/reckless b/tools/reckless
index 8154ef66..61a493f0 100755
--- a/tools/reckless
+++ b/tools/reckless
@@ -21,7 +21,7 @@ from urllib.error import HTTPError
import venv
-__VERSION__ = 'v26.04.1'
+__VERSION__ = 'v26.06rc1'
logging.basicConfig(
level=logging.INFO,
diff --git a/uv.lock b/uv.lock
index 8d015975..7e01f2f6 100644
--- a/uv.lock
+++ b/uv.lock
@@ -1392,7 +1392,7 @@ dev = [{ name = "pyln-proto", editable = "contrib/pyln-proto" }]
[[package]]
name = "pyln-client"
-version = "26.4.1"
+version = "26.6rc1"
source = { editable = "contrib/pyln-client" }
dependencies = [
{ name = "pyln-bolt7" },
@@ -1450,7 +1450,7 @@ dev = [
[[package]]
name = "pyln-proto"
-version = "26.4.1"
+version = "26.6rc1"
source = { editable = "contrib/pyln-proto" }
dependencies = [
{ name = "base58" },
@@ -1479,7 +1479,7 @@ dev = [{ name = "pytest", specifier = ">=8.0.0" }]
[[package]]
name = "pyln-testing"
-version = "26.4.1"
+version = "26.6rc1"
source = { editable = "contrib/pyln-testing" }
dependencies = [
{ name = "cheroot" },
Why this scored 15/100
Community notes
Notes can correct, qualify, or add evidence to the AI analysis. Every note shown here has been validated by a human moderator.
The AI analysis stands alone for now. Submit a note if you can add evidence or important context.