What changed, and why it matters
This commit is a routine version bump to mark the v26.04rc1 release candidate of Core Lightning. It only updates version strings across packaging files, the changelog, a contributor credit script, and a lockfile. There are no code changes that alter how the software behaves or processes data.
No action needed for this commit. Review the individual pull requests referenced in CHANGELOG.md if assessing the security of the v26.04rc1 release.
Security signals we found
No strong security signals were identified.
Evidence from the diff
The diff consists entirely of metadata updates: .version, CHANGELOG.md, Python package init.py and pyproject.toml files, tools/reckless, devtools/credit, and uv.lock. The CHANGELOG adds release notes for v26.04rc1, but the actual functional changes were committed separately in the referenced pull requests. No executable logic is modified in this commit.
Changed components
Version metadataPython package manifestsRelease changelogDeveloper tooling metadataInspect captured patch +154 / −12
diff --git a/.version b/.version
index 96e30f12..7a040422 100644
--- a/.version
+++ b/.version
@@ -1 +1 @@
-v25.12
+v26.04rc1
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 99fd568c..c413d26d 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,6 +4,148 @@ 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.04rc1] - 2026-03-23: TBD
+
+This release is named by TBD.
+
+### Added
+
+ - JSON-RPC: `bkpr-report` allows flexible summaries of bookkeeper income. ([#8937])
+ - Config: `bkpr-currency` option to record conversion rate at each event. ([#8937])
+ - JSON-RPC: `currencyrate` API for getting the current median BTC conversion to a given fiat currency. ([#8937])
+ - JSON-RPC: `listcurrencyrates` API for examining the current values from the `currencyconvert` plugin's sources. ([#8937])
+ - New command `spliceout` for easily splicing out of channels ([#8857])
+ - New command `splicein` allows for convenient splicing funds into a channel ([#8856])
+ - Added support for multi (ie 3+) channel splices, dynamic wallet funding, and dynamic fee calculating. ([#8450])
+ - Plugins: new `currencyrate` plugin to provide `currencyconvert` API ([#8842])
+ - `listpeerchannels` now accepts a `channel_id` filter ([#8766])
+ - JSON-RPC: `offer` now has a `fronting_nodes` option to specify neighbors for payer to use to fetch invoices and make payments. ([#8490])
+ - Config: `payment-fronting-node` option to specify neighbor node(s) to use for all bolt11 invoices, bolt12 offers, invoices and invoice_requests. ([#8490])
+ - libplugin: support for options which accumulate if specified more than once ("multi": true). ([#8490])
+ - Database: STRICT tables and security pragmas in developer mode ([#8559])
+ - Config: `askrene-max-threads` to control how many CPUs we use for routing (default 4). ([#8723])
+ - Protocol: we now pad all peer messages to make them the same length. ([#8893])
+ - `gossipd` now uses a `lightning_gossip_compactd` helper to compact the gossip_store on demand, keeping it under about 210MB. ([#8903])
+ - askrene: add a new layer auto.include_fees that makes fees be deducted from the payment amount making in effect the receiver pay for routing fees. ([#8824])
+ - clnrest: add clnrest-register-path rpc method to register dynamic paths ([#7529])
+ - Expose decoded offer description in `offer` and `listoffers` RPC responses. ([#8782])
+ - Add 'payer-note' field to the 'xpay' RPC call. ([#8784])
+ - Added a new `version-vls` tag which includes VLS's `remote_hsmd_socket` binary with the Core Lightning image. ([#8712])
+
+
+### Changed
+
+ - Plugins: `forward_event` notification now has `preimage` set if status is settled. ([#8943])
+ - Plugins: `askrene` now runs routing in parallel. ([#8723])
+ - bcli plugin now uses synchronous execution, simplifying bitcoin backend communication and improving error handling reliability. ([#8820])
+ - `gossipd` no longer compacts gossip_store on startup (improving start times significantly). ([#8903])
+ - Build: most binaries are now about 20% smaller. ([#8658])
+ - lightningd: logging is now more efficient internally (no more pruning, simple ringbuffer). ([#8770])
+ - JSON-RPC: `recover` takes a 12-word mnemonic for nodes created by v25.12 or later. ([#8830])
+ - `lightning-hsmtool`: `getsecret` replaces `getcodexsecret` for modern nodes (gives mnemonic). ([#8830])
+
+
+### Deprecated
+
+Note: You should always set `allow-deprecated-apis=false` to test for changes.
+
+ - `lightning-hsmtool`: `getcodexsecret`. Use `getsecret`. ([#8830])
+
+
+### Removed
+
+ - Protocol: we no longer support legacy onions (never sent by LND >= 0.18.3, which was the last) ([#8772])
+ - lightningd: `estimatefeesv1` support for older bcli plugins (deprecated v23.05, disabled by default v24.05). ([#8850])
+ - JSON-RPC: `close` `tx` and `txid` field (use `txs` and `txids`), deprecated v24.11. ([#8850])
+ - JSON-RPC: `decodepay` (use `decode`), deprecated v24.11. ([#8850])
+ - JSON-RPC: `listpeers` `features` array string "option_anchors_zero_fee_htlc_tx": use "option_anchors" (spec renamed it). Deprecated in 24.08. ([#8850])
+
+
+### Fixed
+
+ - lightningd: unreserve UTXOs from withheld funding PSBT ([#8943])
+ - lightningd: withheld channel now fails back incoming inflight HTLC ([#8943])
+ - JSON-RPC: reckless command no longer hangs if reckless executable is not found in PATH. ([#8894])
+ - lightning-cli: fix invalid json requests when input includes a numeric string with leading zeroes ([#8934])
+ - xpay: handle payment redirected from "pay" even if we don't recognize some arguments. ([#8939])
+ - Database migration for old BLOB-typed faildetail values ([#8559])
+ - renepay: fixes a race condition that leads to **BROKEN** plugin-cln-renepay: Unable to parse sendpay_failure ([#8798])
+ - fuzz: fix build with newer clang. ([#8717])
+ - Plugins: `bkpr_listbalances` no longer crashes if we lost our db, then do emergencyrecover and close a channel. ([#8890])
+ - lightningd: possible crash when peers disconnected if there was more than one plugin servicing the `peer_connected` hook. ([#8889])
+ - JSON-RPC: `decode` is now more informative with malformed strings (won't claim everything is a malformed rune!). ([#8814])
+ - reckless search now returns partial matches instead of requiring exact plugin names. ([#8762])
+ - enableoffer: Adding an error when trying to activate an used single use offer (don't crash!) ([#8813])
+ - askrene: fixed a class of corner cases that cause askrene main loop to timeout instead of quickly failing, thus wasting runtime. ([#8866])
+ - Testing infrastructure no longer fails when logging output capture is disabled. ([#8843])
+ - Core lightning builds for Fedora on all systems are deterministic. ([#8846])
+ - lightningd: we now correctly sign for non-taproot addresses given by nodes created by v25.12 or newer. ([#8831])
+ - `lightning-hsmtool`: handle mnemonic hsm_secret files (nodes created >= v25.12). ([#8831])
+ - plugins: `pay` can crash on errors returned from deep inside routehints. ([#8829])
+ - plugins: `askrene` can crash on a corner case in increase_flows. ([#8829])
+ - askrene: fix a plugin crash triggered during single path payments when a channel fees doesn't fit u32. ([#8832])
+ - JSON-RPC: malformed filters no longer crash lightningd. ([#8780])
+ - pay: `maxdelay` parameter now enforced for direct channel payments ([#8740])
+ - Ensure documentation renders correctly when adding/updating new RPCs by detecting non-MDX-compatible pages. ([#8792])
+ - gossipd: we would occasionally not show a node announcement in listnodes(). ([#8769])
+ - Replacing sed by $(SED) in Makefile ([#8786])
+ - lightningd: potential crash on startup if bitcoind isn't up-to-date. ([#8779])
+
+
+### EXPERIMENTAL
+
+ - Protocol: avoid an occasional hang when splicing with a pending closing HTLC. ([#8911])
+
+
+[#7529]: https://github.com/ElementsProject/lightning/pull/7529
+[#8450]: https://github.com/ElementsProject/lightning/pull/8450
+[#8490]: https://github.com/ElementsProject/lightning/pull/8490
+[#8559]: https://github.com/ElementsProject/lightning/pull/8559
+[#8658]: https://github.com/ElementsProject/lightning/pull/8658
+[#8712]: https://github.com/ElementsProject/lightning/pull/8712
+[#8717]: https://github.com/ElementsProject/lightning/pull/8717
+[#8723]: https://github.com/ElementsProject/lightning/pull/8723
+[#8740]: https://github.com/ElementsProject/lightning/pull/8740
+[#8762]: https://github.com/ElementsProject/lightning/pull/8762
+[#8766]: https://github.com/ElementsProject/lightning/pull/8766
+[#8769]: https://github.com/ElementsProject/lightning/pull/8769
+[#8770]: https://github.com/ElementsProject/lightning/pull/8770
+[#8772]: https://github.com/ElementsProject/lightning/pull/8772
+[#8779]: https://github.com/ElementsProject/lightning/pull/8779
+[#8780]: https://github.com/ElementsProject/lightning/pull/8780
+[#8782]: https://github.com/ElementsProject/lightning/pull/8782
+[#8784]: https://github.com/ElementsProject/lightning/pull/8784
+[#8786]: https://github.com/ElementsProject/lightning/pull/8786
+[#8792]: https://github.com/ElementsProject/lightning/pull/8792
+[#8798]: https://github.com/ElementsProject/lightning/pull/8798
+[#8813]: https://github.com/ElementsProject/lightning/pull/8813
+[#8814]: https://github.com/ElementsProject/lightning/pull/8814
+[#8820]: https://github.com/ElementsProject/lightning/pull/8820
+[#8824]: https://github.com/ElementsProject/lightning/pull/8824
+[#8829]: https://github.com/ElementsProject/lightning/pull/8829
+[#8830]: https://github.com/ElementsProject/lightning/pull/8830
+[#8831]: https://github.com/ElementsProject/lightning/pull/8831
+[#8832]: https://github.com/ElementsProject/lightning/pull/8832
+[#8842]: https://github.com/ElementsProject/lightning/pull/8842
+[#8843]: https://github.com/ElementsProject/lightning/pull/8843
+[#8846]: https://github.com/ElementsProject/lightning/pull/8846
+[#8850]: https://github.com/ElementsProject/lightning/pull/8850
+[#8856]: https://github.com/ElementsProject/lightning/pull/8856
+[#8857]: https://github.com/ElementsProject/lightning/pull/8857
+[#8866]: https://github.com/ElementsProject/lightning/pull/8866
+[#8889]: https://github.com/ElementsProject/lightning/pull/8889
+[#8890]: https://github.com/ElementsProject/lightning/pull/8890
+[#8893]: https://github.com/ElementsProject/lightning/pull/8893
+[#8894]: https://github.com/ElementsProject/lightning/pull/8894
+[#8903]: https://github.com/ElementsProject/lightning/pull/8903
+[#8911]: https://github.com/ElementsProject/lightning/pull/8911
+[#8934]: https://github.com/ElementsProject/lightning/pull/8934
+[#8937]: https://github.com/ElementsProject/lightning/pull/8937
+[#8939]: https://github.com/ElementsProject/lightning/pull/8939
+[#8943]: https://github.com/ElementsProject/lightning/pull/8943
+[v26.04rc1]: https://github.com/ElementsProject/lightning/releases/tag/v26.04rc1
+
+
## [25.12] - 2025-12-04: "Boltz's Seamless Upgrade Experience"
This release is named by @sangbida
diff --git a/contrib/pyln-client/pyln/client/__init__.py b/contrib/pyln-client/pyln/client/__init__.py
index 2e1effe1..b9508a3d 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__ = "v25.12"
+__version__ = "v26.04rc1"
__all__ = [
"LightningRpc",
diff --git a/contrib/pyln-client/pyproject.toml b/contrib/pyln-client/pyproject.toml
index 6820ec73..7ec3b7c2 100644
--- a/contrib/pyln-client/pyproject.toml
+++ b/contrib/pyln-client/pyproject.toml
@@ -1,6 +1,6 @@
[project]
name = "pyln-client"
-version = "v25.12"
+version = "v26.04rc1"
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 39548e51..c3becb9b 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__ = "v25.12"
+__version__ = "v26.04rc1"
__all__ = [
"Invoice",
diff --git a/contrib/pyln-proto/pyproject.toml b/contrib/pyln-proto/pyproject.toml
index 6c89e04f..24caebd7 100644
--- a/contrib/pyln-proto/pyproject.toml
+++ b/contrib/pyln-proto/pyproject.toml
@@ -1,6 +1,6 @@
[project]
name = "pyln-proto"
-version = "v25.12"
+version = "v26.04rc1"
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 0c7f3eec..66ae3385 100644
--- a/contrib/pyln-testing/pyln/testing/__init__.py
+++ b/contrib/pyln-testing/pyln/testing/__init__.py
@@ -1,4 +1,4 @@
-__version__ = "v25.12"
+__version__ = "v26.04rc1"
__all__ = [
"__version__",
diff --git a/contrib/pyln-testing/pyproject.toml b/contrib/pyln-testing/pyproject.toml
index ff2808d6..cfced70d 100644
--- a/contrib/pyln-testing/pyproject.toml
+++ b/contrib/pyln-testing/pyproject.toml
@@ -1,6 +1,6 @@
[project]
name = "pyln-testing"
-version = "v25.12"
+version = "v26.04rc1"
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/devtools/credit b/devtools/credit
index 4018f5a7..6036c115 100755
--- a/devtools/credit
+++ b/devtools/credit
@@ -21,7 +21,7 @@ git log "$PREV_TAG".. --format="%an|%ae" | sort | uniq -c | sort -rn > /tmp/auth
sed -n 's/.*[Nn]amed by //p' < CHANGELOG.md | sed 's/(.*)//' | tr -dc '[:alnum:][:space:]' > /tmp/namers.$$
git log "$PREV_TAG" --format="%an|%ae" | sort -u > /tmp/prev-authors.$$
# Include aliases
-printf "Alex Myers\nShahanaFarooqui\nMatt Whitlock\n" >> /tmp/namers.$$
+printf "Alex Myers\nShahanaFarooqui\nMatt Whitlock\nSangbida Chaudhuri\n" >> /tmp/namers.$$
NAMER=""
BACKUP_NAMER=""
diff --git a/tools/reckless b/tools/reckless
index c3f89bbd..225e55b8 100755
--- a/tools/reckless
+++ b/tools/reckless
@@ -21,7 +21,7 @@ from urllib.error import HTTPError
import venv
-__VERSION__ = 'v25.12'
+__VERSION__ = 'v26.04rc1'
logging.basicConfig(
level=logging.INFO,
diff --git a/uv.lock b/uv.lock
index 18721b93..629675e7 100644
--- a/uv.lock
+++ b/uv.lock
@@ -1621,7 +1621,7 @@ dev = [{ name = "pyln-proto", editable = "contrib/pyln-proto" }]
[[package]]
name = "pyln-client"
-version = "25.12"
+version = "26.4rc1"
source = { editable = "contrib/pyln-client" }
dependencies = [
{ name = "pyln-bolt7" },
@@ -1680,7 +1680,7 @@ dev = [
[[package]]
name = "pyln-proto"
-version = "25.12"
+version = "26.4rc1"
source = { editable = "contrib/pyln-proto" }
dependencies = [
{ name = "base58" },
@@ -1710,7 +1710,7 @@ dev = [{ name = "pytest", specifier = ">=8.0.0" }]
[[package]]
name = "pyln-testing"
-version = "25.12"
+version = "26.4rc1"
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.