chore: replace v26.03 version mentions with v26.04
What changed, and why it matters
This is a routine release-version bump from v26.03 to v26.04 across documentation, generated schema files, and one source file. It also fixes a test so that a deprecated database column is actually allowed when deprecated APIs are enabled. There is no security vulnerability here; it is ordinary release housekeeping.
No security action required. Treat as normal release maintenance.
Security signals we found
No strong security signals were identified.
Evidence from the diff
The commit updates version strings from v26.03 to v26.04 in .msggen.json, schema.json, release checklist, deprecated-features documentation, and the peer_control.c deprecation window for listpeerchannels.max_total_htlc_in_msat. The only functional change is in tests/test_plugin.py: test_sql_deprecated now correctly enables the deprecated API column and expects it to return a value, whereas before the test asserted it was absent even with allow-deprecated-apis=True. This aligns the test behavior with the intended deprecation policy.
Changed components
doc/developers-guide/deprecated-features.mddoc/schemas/listpeerchannels.jsondoc/schemas/notification/channel_state_changed.jsonlightningd/peer_control.ctests/test_plugin.py.msggen.jsoncontrib/msggen/msggen/schema.jsondoc/contribute-to-core-lightning/release-checklist.mdInspect captured patch +15 / −15
diff --git a/.msggen.json b/.msggen.json
index e6929768..f7f1903d 100644
--- a/.msggen.json
+++ b/.msggen.json
@@ -10847,7 +10847,7 @@
"deprecated": null
},
"ListPeerChannels.channel_id": {
- "added": "v26.03",
+ "added": "v26.04",
"deprecated": null
},
"ListPeerChannels.channels[]": {
diff --git a/contrib/msggen/msggen/schema.json b/contrib/msggen/msggen/schema.json
index 682f0c91..60d92efd 100644
--- a/contrib/msggen/msggen/schema.json
+++ b/contrib/msggen/msggen/schema.json
@@ -23623,7 +23623,7 @@
]
},
"channel_id": {
- "added": "v26.03",
+ "added": "v26.04",
"type": "hash",
"description": [
"If supplied, limits the channels to just this channel_id, if it exists. Cannot be used with 'id' or 'short_channel_id'."
@@ -24173,7 +24173,7 @@
],
"deprecated": [
"v25.02",
- "v26.03"
+ "v26.04"
]
},
"their_max_htlc_value_in_flight_msat": {
@@ -37517,7 +37517,7 @@
],
"description": [
"The channel state, in particular \"CHANNELD_NORMAL\" and \"CHANNELD_AWAITING_SPLICE\" mean the channel can be used normally.",
- "The deprecated value 'unknown' is also present for new channels: after v26.03 this field will be omitted instead."
+ "The deprecated value 'unknown' is also present for new channels: after v26.04 this field will be omitted instead."
],
"added": "pre-v0.10.1"
},
diff --git a/doc/contribute-to-core-lightning/release-checklist.md b/doc/contribute-to-core-lightning/release-checklist.md
index 7fb9a7a0..24456d14 100644
--- a/doc/contribute-to-core-lightning/release-checklist.md
+++ b/doc/contribute-to-core-lightning/release-checklist.md
@@ -61,7 +61,7 @@ Here's a checklist for the release process.
3. Create a PR with above changes.
4. After the PR is merged, create and push the release tag:
- Run `git pull`.
- - Set the current release version in your shell (e.g., if the current release is `v26.03`): `VERSION=26.03`
+ - Set the current release version in your shell (e.g., if the current release is `v26.04`): `VERSION=26.04`
- Create a signed, annotated tag: `git tag -a -s v$VERSION -m "v$VERSION"`
- Push the tag: `git push origin v$VERSION`
5. Pushing the tag will trigger the CI pipeline, which will draft the pre-release and upload the build artifacts with project-signed checksums.
diff --git a/doc/developers-guide/deprecated-features.md b/doc/developers-guide/deprecated-features.md
index c02b4560..a3f0811e 100644
--- a/doc/developers-guide/deprecated-features.md
+++ b/doc/developers-guide/deprecated-features.md
@@ -10,9 +10,9 @@ privacy:
| Name | Type | First Deprecated | Last Supported | Description |
|----------------------------------------------------|--------------------|------------------|----------------|---------------------------------------------------------------------------------------------------------------------------|
| xpay.ignore_bolt12_mpp | Field | v25.05 | v25.12 | Try MPP even if the BOLT12 invoice doesn't explicitly allow it (CLN didn't until 25.02) |
-| listpeerchannels.max_total_htlc_in_msat | Field | v25.02 | v26.03 | Use our_max_total_htlc_out_msat |
+| listpeerchannels.max_total_htlc_in_msat | Field | v25.02 | v26.04 | Use our_max_total_htlc_out_msat |
| wait.details | Field | v25.05 | v26.06 | Use subsystem-specific object instead |
-| channel_state_changed.old_state.unknown | Notification Field | v25.05 | v26.03 | Value "unknown" is deprecated: field will be omitted instead |
+| channel_state_changed.old_state.unknown | Notification Field | v25.05 | v26.04 | Value "unknown" is deprecated: field will be omitted instead |
| coin_movement.tags | Notification Field | v25.09 | v26.09 | Use `primary_tag` (first tag) and `extra_tags` instead |
| coin_movement.utxo_txid | Notification Field | v25.09 | v26.09 | Use `utxo` instead of `utxo_txid` & `vout` |
| coin_movement.txid | Notification Field | v25.09 | v26.09 | Use `spending_txid` instead |
diff --git a/doc/schemas/listpeerchannels.json b/doc/schemas/listpeerchannels.json
index b331bd2c..62f26575 100644
--- a/doc/schemas/listpeerchannels.json
+++ b/doc/schemas/listpeerchannels.json
@@ -32,7 +32,7 @@
]
},
"channel_id": {
- "added": "v26.03",
+ "added": "v26.04",
"type": "hash",
"description": [
"If supplied, limits the channels to just this channel_id, if it exists. Cannot be used with 'id' or 'short_channel_id'."
@@ -582,7 +582,7 @@
],
"deprecated": [
"v25.02",
- "v26.03"
+ "v26.04"
]
},
"their_max_htlc_value_in_flight_msat": {
diff --git a/doc/schemas/notification/channel_state_changed.json b/doc/schemas/notification/channel_state_changed.json
index a90fddbf..d8eea70c 100644
--- a/doc/schemas/notification/channel_state_changed.json
+++ b/doc/schemas/notification/channel_state_changed.json
@@ -66,7 +66,7 @@
],
"description": [
"The channel state, in particular \"CHANNELD_NORMAL\" and \"CHANNELD_AWAITING_SPLICE\" mean the channel can be used normally.",
- "The deprecated value 'unknown' is also present for new channels: after v26.03 this field will be omitted instead."
+ "The deprecated value 'unknown' is also present for new channels: after v26.04 this field will be omitted instead."
],
"added": "pre-v0.10.1"
},
diff --git a/lightningd/peer_control.c b/lightningd/peer_control.c
index ab26bb75..fea267e6 100644
--- a/lightningd/peer_control.c
+++ b/lightningd/peer_control.c
@@ -1197,7 +1197,7 @@ static void NON_NULL_ARGS(1, 2, 4, 5) json_add_channel(struct command *cmd,
json_add_amount_sat_msat(response, "dust_limit_msat",
channel->our_config.dust_limit);
if (command_deprecated_out_ok(cmd, "max_total_htlc_in_msat",
- "v25.02", "v26.03"))
+ "v25.02", "v26.04"))
json_add_amount_msat(response, "max_total_htlc_in_msat",
channel->our_config.max_htlc_value_in_flight);
json_add_amount_msat(
diff --git a/tests/test_plugin.py b/tests/test_plugin.py
index 9644d416..594e4ab3 100644
--- a/tests/test_plugin.py
+++ b/tests/test_plugin.py
@@ -4317,11 +4317,11 @@ def test_sql(node_factory, bitcoind):
def test_sql_deprecated(node_factory, bitcoind):
- l1, l2 = node_factory.line_graph(2, opts=[{'allow-deprecated-apis': True}, {}])
+ l1, l2 = node_factory.line_graph(2, opts=[{'allow-deprecated-apis': True, "broken_log": "DEPRECATED API USED: listpeerchannels.max_total_htlc_in_msat"}, {}])
- # Even with deprecated APIs, this isn't there.
- with pytest.raises(RpcError, match="Deprecated column table peerchannels.max_total_htlc_in_msat"):
- l1.rpc.sql("SELECT max_total_htlc_in_msat FROM peerchannels;")
+ # With deprecated APIs, this is there.
+ ret = l1.rpc.sql("SELECT max_total_htlc_in_msat FROM peerchannels;")
+ assert ret == {'rows': [[-1]]}
# It's deprecated in l2, so that will fail!
with pytest.raises(RpcError, match="Deprecated column table peerchannels.max_total_htlc_in_msat"):
Why this scored 17/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.