release branch for 25.12 release
What changed, and why it matters
This commit is purely a release-versioning change. It renames the release candidate label from v25.12rc3 to the final v25.12 across version files, changelogs, and Python package metadata. There are no code behavior changes, bug fixes, or security fixes in the diff.
No security action needed. Treat as routine release bookkeeping.
Security signals we found
No strong security signals were identified.
Evidence from the diff
The diff updates .version, CHANGELOG.md, several contrib/pyln-* init.py and pyproject.toml files, tools/reckless, and uv.lock from ‘v25.12rc3’ to ‘v25.12’. No functional source code is modified. This is a release-tagging/version-bump commit on the release branch for Core Lightning 25.12.
Changed components
Version metadata filesPython package metadata (pyln-client, pyln-proto, pyln-testing)tools/reckless version stringuv.lockInspect captured patch +14 / −16
diff --git a/.version b/.version
index 5247f42f..96e30f12 100644
--- a/.version
+++ b/.version
@@ -1 +1 @@
-v25.12rc3
+v25.12
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 5b2cfe9f..99fd568c 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,11 +4,9 @@ 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/).
-## [25.12rc2] - 2025-11-28: "Boltz's Seamless Upgrade Experience"
+## [25.12] - 2025-12-04: "Boltz's Seamless Upgrade Experience"
-Release Candidate for Core Lightning v25.12
-
-This release named by @sangbida
+This release is named by @sangbida
### Added
@@ -138,7 +136,7 @@ Note: You should always set `allow-deprecated-apis=false` to test for changes.
[#8651]: https://github.com/ElementsProject/lightning/pull/8651
[#8561]: https://github.com/ElementsProject/lightning/pull/8561
[#8302]: https://github.com/ElementsProject/lightning/pull/8302
-[v25.12rc2]: https://github.com/ElementsProject/lightning/releases/tag/v25.12rc2
+[v25.12]: https://github.com/ElementsProject/lightning/releases/tag/v25.12
## [25.09.3] - 2025-11-06: "Hot Wallet Guardian IV"
diff --git a/contrib/pyln-client/pyln/client/__init__.py b/contrib/pyln-client/pyln/client/__init__.py
index 0e3a0b21..2e1effe1 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.12rc3"
+__version__ = "v25.12"
__all__ = [
"LightningRpc",
diff --git a/contrib/pyln-client/pyproject.toml b/contrib/pyln-client/pyproject.toml
index 8e6a6eb2..6820ec73 100644
--- a/contrib/pyln-client/pyproject.toml
+++ b/contrib/pyln-client/pyproject.toml
@@ -1,6 +1,6 @@
[project]
name = "pyln-client"
-version = "v25.12rc3"
+version = "v25.12"
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 1ab75543..39548e51 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.12rc3"
+__version__ = "v25.12"
__all__ = [
"Invoice",
diff --git a/contrib/pyln-proto/pyproject.toml b/contrib/pyln-proto/pyproject.toml
index 5fba9182..6c89e04f 100644
--- a/contrib/pyln-proto/pyproject.toml
+++ b/contrib/pyln-proto/pyproject.toml
@@ -1,6 +1,6 @@
[project]
name = "pyln-proto"
-version = "v25.12rc3"
+version = "v25.12"
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 b51cd21b..0c7f3eec 100644
--- a/contrib/pyln-testing/pyln/testing/__init__.py
+++ b/contrib/pyln-testing/pyln/testing/__init__.py
@@ -1,4 +1,4 @@
-__version__ = "v25.12rc3"
+__version__ = "v25.12"
__all__ = [
"__version__",
diff --git a/contrib/pyln-testing/pyproject.toml b/contrib/pyln-testing/pyproject.toml
index 87df3faa..e942e5e0 100644
--- a/contrib/pyln-testing/pyproject.toml
+++ b/contrib/pyln-testing/pyproject.toml
@@ -1,6 +1,6 @@
[project]
name = "pyln-testing"
-version = "v25.12rc3"
+version = "v25.12"
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 4834f601..62a917b6 100755
--- a/tools/reckless
+++ b/tools/reckless
@@ -21,7 +21,7 @@ from urllib.error import HTTPError
import venv
-__VERSION__ = 'v25.12rc3'
+__VERSION__ = 'v25.12'
logging.basicConfig(
level=logging.INFO,
diff --git a/uv.lock b/uv.lock
index 9db2982a..6b57a107 100644
--- a/uv.lock
+++ b/uv.lock
@@ -1355,7 +1355,7 @@ dev = [{ name = "pyln-proto", editable = "contrib/pyln-proto" }]
[[package]]
name = "pyln-client"
-version = "25.12rc3"
+version = "25.12"
source = { editable = "contrib/pyln-client" }
dependencies = [
{ name = "pyln-bolt7" },
@@ -1413,7 +1413,7 @@ dev = [
[[package]]
name = "pyln-proto"
-version = "25.12rc3"
+version = "25.12"
source = { editable = "contrib/pyln-proto" }
dependencies = [
{ name = "base58" },
@@ -1442,7 +1442,7 @@ dev = [{ name = "pytest", specifier = ">=8.0.0" }]
[[package]]
name = "pyln-testing"
-version = "25.12rc3"
+version = "25.12"
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.