0.2-rc1 backports - #4193

Merged
TheBlueMatt merged 15 commits into
lightningdevkit:0.2from
TheBlueMatt:2025-10-0.2-backports-2
Oct 31, 2025
Merged

0.2-rc1 backports#4193
TheBlueMatt merged 15 commits into
lightningdevkit:0.2from
TheBlueMatt:2025-10-0.2-backports-2

Conversation

@TheBlueMatt

Copy link
Copy Markdown
Collaborator

Backport of #4189, #4186, #4192, #4191, #4187, and #4163 for 0.2.

TheBlueMattand others added 10 commits October 30, 2025 18:26
This reverts commit 561da4c.
A user pointed out, when looking to upgrade to LDK 0.2, that the
`lazy` flag is actually quite important for performance when using
a `MonitorUpdatingPersister`, especially in synchronous persistence
mode.
Thus, we add it back here.
Fixeslightningdevkit#4188
Backport of 3b4c2ff
In the previous commit we reverted
561da4c. One of the motivations
for it (in addition to `lazy` removals being somewhat less, though
still arguably useful in an async context) was that the ordering
requirements of `lazy` removals is somewhat unclear.
Here we simply default to the simplest safe option, requiring a
total order across all `write` and `remove` operations to the same
key, `lazy` or not.
Backport of 0f9548b
While HTTP headers should be a unique K->V mapping, returning three
headers to a user in an event via a `HashMap` is substantially
overkill (and also not trivial to do in bindings). Instead, we
expose them as a `Vec`.
Backport of 031a987
`WebhookNotification` already has all fields `pub`, making its
`new` constructor somewhat redundant, but also conflicting with the
bindings-auto-generated `new` constructor. Thus we just drop it.
Backport of b10a4e8
If we're already passing `AChannelManagerRef` and `ChainMonitorRef`
to `can_support_additional_anchor_channel` there's no need to take
them by reference.
Backport of e4512d1
If we fail to load a `ChannelMonitor` due to the new limits in LDK
0.2, its useful to communicate which monitor failed, which we do
here.
Requested at
lightningdevkit#4146 (comment)
Backport of a4f4663
`crates.io` will show any README/README.md which apears in the
crate which is uploaded, but it doesn't consider the README from
the workspace, only if its in the crate itself.
Instead, add the `readme` field so that the workspace README also
gets uploaded.
Backport of 1605291
@TheBlueMattTheBlueMatt added this to the 0.2 milestone Oct 30, 2025
@ldk-reviews-bot

ldk-reviews-bot commented Oct 30, 2025

Copy link
Copy Markdown

I've assigned @wpaulino as a reviewer!
I'll wait for their review and will help manage the review process.
Once they submit their review, I'll check if a second reviewer would be helpful.

@TheBlueMatt

Copy link
Copy Markdown
CollaboratorAuthor

Also backported #4195 to fix clippy.

@TheBlueMattTheBlueMatt mentioned this pull request Oct 30, 2025
@codecov

codecovBot commented Oct 30, 2025

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 72.16495% with 27 lines in your changes missing coverage. Please review.
✅ Project coverage is 88.86%. Comparing base (1b4d8e4) to head (a107ca2).
⚠️ Report is 16 commits behind head on 0.2.

Files with missing linesPatch %Lines
lightning-persister/src/fs_store.rs52.38%5 Missing and 5 partials ⚠️
lightning/src/util/persist.rs55.00%7 Missing and 2 partials ⚠️
lightning-background-processor/src/lib.rs0.00%2 Missing ⚠️
lightning/src/util/anchor_channel_reserves.rs0.00%2 Missing ⚠️
lightning/src/util/test_utils.rs60.00%2 Missing ⚠️
lightning-liquidity/src/lsps2/service.rs0.00%1 Missing ⚠️
lightning-liquidity/src/lsps5/service.rs75.00%1 Missing ⚠️
Additional details and impacted files
@@ Coverage Diff @@## 0.2 #4193 +/- ##
==========================================
- Coverage 88.86% 88.86% -0.01% 
==========================================
Files 180 180 Lines 137770 137802 +32 Branches 137770 137802 +32 ==========================================
+ Hits 122433 122455 +22 - Misses 12530 12537 +7 - Partials 2807 2810 +3 
FlagCoverage Δ
fuzzing21.45% <0.00%> (+0.58%)⬆️
tests88.70% <72.16%> (-0.01%)⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@ldk-reviews-bot

Copy link
Copy Markdown

👋 The first review has been submitted!

Do you think this PR is ready for a second reviewer? If so, click here to assign a second reviewer.

Comment threadCHANGELOG.md Outdated
@TheBlueMatt
TheBlueMattforce-pushed the 2025-10-0.2-backports-2 branch from aa9a347 to fb6da9eCompareOctober 30, 2025 21:05
@TheBlueMatt

TheBlueMatt commented Oct 30, 2025

Copy link
Copy Markdown
CollaboratorAuthor

Updated #4163 and the backported copy of it. That needs to land first anyway:

$ git diff-tree -U1 aa9a347531 fb6da9e545
diff --git a/CHANGELOG.md b/CHANGELOG.md
index b4839d6423..513a026f62 100644
--- a/CHANGELOG.md+++ b/CHANGELOG.md@@ -92,2 +92,4 @@
`KVStore` to restore custom logic for specific storage objects (#3905).
+ * `BlindedMessagePath::new_with_dummy_hops` was added (but is not used by+ default, #3726). You can use `NodeIdMessageRouter` to enable dummy hops.
* `ProbabilisticScoringFeeParameters::probing_diversity_penalty` was added to
@@ -150,4 +152,2 @@
marginally when forwarding gossip to a slow peer (#4093, #4096).
- * `BlindedMessagePath::new_with_dummy_hops` was added (but is not used by- default, #3726).
* Blinded path serialization is now padded to better hide its contents (#3177).

`ChannelManager::splice_channel` initiates a splice which
ultimately generates a series of events. The most important of
which, `FundingTransactionReadyForSigning` (which must always be
handled, unlike the others), was not documented.
Here we mention the event generation.
Backport of 00e06a0
Users implementing the "onion message mailbox" feature and handling
`OnionMessageIntercepted` events need to also handle
`Event::OnionMessagePeerConnected` events.
Here we update the event docs for both to add additional references
and be more explicit about what implementors need to do.
Backport of 683d03c
`clippy` now complains that `Default` for the interactive tx
constructor `StateMachine` can be auto-derived, but its a bit weird
to have a `Default` that loads an invalid ("indeterminate") state.
Instead, we replace the one line that actually cares about the
`Default` (which uses `core::mem::take`) with `core::mem::replace`,
making it more explict.
Backport of a8b990a
`clippy` now complains about more instances of useless `vec!`s, so
we drop them here.
Backport of 3c1159c
@TheBlueMatt
TheBlueMattforce-pushed the 2025-10-0.2-backports-2 branch from fb6da9e to a107ca2CompareOctober 30, 2025 22:09
@TheBlueMatt

Copy link
Copy Markdown
CollaboratorAuthor

Updated backports of #4163.

$ git diff-tree -U1 fb6da9e545 a107ca264d
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 513a026f62..0480191933 100644
--- a/CHANGELOG.md+++ b/CHANGELOG.md@@ -33,3 +33,3 @@
LDK-based LSPs wishing to support often-offline senders and recipients should
- set `UserConfig::enable_htlc_hold`, support the existing "onion mesage+ set `UserConfig::enable_htlc_hold`, support the existing "onion message
mailbox" feature (setting `intercept_messages_for_offline_peers` on
@@ -39,3 +39,3 @@
force-closure risk for feerate disagreements by using a fixed, zero fee on
- presigned transactions, relying on anchor bumps instead. They also utilize+ pre-signed transactions, relying on anchor bumps instead. They also utilize
the new TRUC + ephemeral dust policy in Bitcoin Core 29 to substantially
@@ -127,3 +127,3 @@
full available buffer (#3640).
- * structs in `lightning-liquidity` were renamed to be globally unique (#3583).+ * Structs in `lightning-liquidity` were renamed to be globally unique (#3583).
* Renamed `SpendableOutputDescriptor::outpoint` to `spendable_outpoint` (#3634)
@@ -147,3 +147,3 @@
fixed (#4168).
- * The fields in `SocketAddress::OnionV3` are now corectly parsed, and the+ * The fields in `SocketAddress::OnionV3` are now correctly parsed, and the
`Display` for such addresses is now lowercase (#4090).
@@ -170,5 +170,5 @@
* Blinded message paths generated by previous versions of LDK, except those
- generated for inclusion in `Bolt12Offer`s will no longer be accepted. As most- blinded message paths are ephemeral, this should only invalidate issued- `Refund`s in practice (#3917).+ generated for inclusion in BOLT 12 `Offer`s will no longer be accepted. As+ most blinded message paths are ephemeral, this should only invalidate issued+ BOLT 12 `Refund`s in practice (#3917).
* Once a channel has been spliced, LDK can no longer be downgraded.
diff --git a/lightning/src/ln/channelmanager.rs b/lightning/src/ln/channelmanager.rs
index d52668eef6..632d897043 100644
--- a/lightning/src/ln/channelmanager.rs+++ b/lightning/src/ln/channelmanager.rs@@ -4685,5 +4685,4 @@ where
///
-	/// After initial signatures have been exchanged, if we contributed any inputs,-	/// [`Event::FundingTransactionReadyForSigning`] will be generated and-	/// [`ChannelManager::funding_transaction_signed`] should be called.+	/// After initial signatures have been exchanged, [`Event::FundingTransactionReadyForSigning`]+	/// will be generated and [`ChannelManager::funding_transaction_signed`] should be called.
///

@TheBlueMatt
TheBlueMatt merged commit ef789f4 into lightningdevkit:0.2Oct 31, 2025
25 checks passed
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@TheBlueMatt@ldk-reviews-bot@wpaulino@valentinewallace@tankyleo
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

0.2-rc1 backports - #4193

Merged
TheBlueMatt merged 15 commits into
lightningdevkit:0.2from
TheBlueMatt:2025-10-0.2-backports-2
Oct 31, 2025
Merged

0.2-rc1 backports#4193
TheBlueMatt merged 15 commits into
lightningdevkit:0.2from
TheBlueMatt:2025-10-0.2-backports-2

Conversation

@TheBlueMatt

Copy link
Copy Markdown
Collaborator

Backport of #4189, #4186, #4192, #4191, #4187, and #4163 for 0.2.

TheBlueMattand others added 10 commits October 30, 2025 18:26
This reverts commit 561da4c.
A user pointed out, when looking to upgrade to LDK 0.2, that the
`lazy` flag is actually quite important for performance when using
a `MonitorUpdatingPersister`, especially in synchronous persistence
mode.
Thus, we add it back here.
Fixeslightningdevkit#4188
Backport of 3b4c2ff
In the previous commit we reverted
561da4c. One of the motivations
for it (in addition to `lazy` removals being somewhat less, though
still arguably useful in an async context) was that the ordering
requirements of `lazy` removals is somewhat unclear.
Here we simply default to the simplest safe option, requiring a
total order across all `write` and `remove` operations to the same
key, `lazy` or not.
Backport of 0f9548b
While HTTP headers should be a unique K->V mapping, returning three
headers to a user in an event via a `HashMap` is substantially
overkill (and also not trivial to do in bindings). Instead, we
expose them as a `Vec`.
Backport of 031a987
`WebhookNotification` already has all fields `pub`, making its
`new` constructor somewhat redundant, but also conflicting with the
bindings-auto-generated `new` constructor. Thus we just drop it.
Backport of b10a4e8
If we're already passing `AChannelManagerRef` and `ChainMonitorRef`
to `can_support_additional_anchor_channel` there's no need to take
them by reference.
Backport of e4512d1
If we fail to load a `ChannelMonitor` due to the new limits in LDK
0.2, its useful to communicate which monitor failed, which we do
here.
Requested at
lightningdevkit#4146 (comment)
Backport of a4f4663
`crates.io` will show any README/README.md which apears in the
crate which is uploaded, but it doesn't consider the README from
the workspace, only if its in the crate itself.
Instead, add the `readme` field so that the workspace README also
gets uploaded.
Backport of 1605291
@TheBlueMattTheBlueMatt added this to the 0.2 milestone Oct 30, 2025
@ldk-reviews-bot

ldk-reviews-bot commented Oct 30, 2025

Copy link
Copy Markdown

I've assigned @wpaulino as a reviewer!
I'll wait for their review and will help manage the review process.
Once they submit their review, I'll check if a second reviewer would be helpful.

@TheBlueMatt

Copy link
Copy Markdown
CollaboratorAuthor

Also backported #4195 to fix clippy.

@TheBlueMattTheBlueMatt mentioned this pull request Oct 30, 2025
@codecov

codecovBot commented Oct 30, 2025

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 72.16495% with 27 lines in your changes missing coverage. Please review.
✅ Project coverage is 88.86%. Comparing base (1b4d8e4) to head (a107ca2).
⚠️ Report is 16 commits behind head on 0.2.

Files with missing linesPatch %Lines
lightning-persister/src/fs_store.rs52.38%5 Missing and 5 partials ⚠️
lightning/src/util/persist.rs55.00%7 Missing and 2 partials ⚠️
lightning-background-processor/src/lib.rs0.00%2 Missing ⚠️
lightning/src/util/anchor_channel_reserves.rs0.00%2 Missing ⚠️
lightning/src/util/test_utils.rs60.00%2 Missing ⚠️
lightning-liquidity/src/lsps2/service.rs0.00%1 Missing ⚠️
lightning-liquidity/src/lsps5/service.rs75.00%1 Missing ⚠️
Additional details and impacted files
@@ Coverage Diff @@## 0.2 #4193 +/- ##
==========================================
- Coverage 88.86% 88.86% -0.01% 
==========================================
Files 180 180 Lines 137770 137802 +32 Branches 137770 137802 +32 ==========================================
+ Hits 122433 122455 +22 - Misses 12530 12537 +7 - Partials 2807 2810 +3 
FlagCoverage Δ
fuzzing21.45% <0.00%> (+0.58%)⬆️
tests88.70% <72.16%> (-0.01%)⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@ldk-reviews-bot

Copy link
Copy Markdown

👋 The first review has been submitted!

Do you think this PR is ready for a second reviewer? If so, click here to assign a second reviewer.

Comment threadCHANGELOG.md Outdated
@TheBlueMatt
TheBlueMattforce-pushed the 2025-10-0.2-backports-2 branch from aa9a347 to fb6da9eCompareOctober 30, 2025 21:05
@TheBlueMatt

TheBlueMatt commented Oct 30, 2025

Copy link
Copy Markdown
CollaboratorAuthor

Updated #4163 and the backported copy of it. That needs to land first anyway:

$ git diff-tree -U1 aa9a347531 fb6da9e545
diff --git a/CHANGELOG.md b/CHANGELOG.md
index b4839d6423..513a026f62 100644
--- a/CHANGELOG.md+++ b/CHANGELOG.md@@ -92,2 +92,4 @@
`KVStore` to restore custom logic for specific storage objects (#3905).
+ * `BlindedMessagePath::new_with_dummy_hops` was added (but is not used by+ default, #3726). You can use `NodeIdMessageRouter` to enable dummy hops.
* `ProbabilisticScoringFeeParameters::probing_diversity_penalty` was added to
@@ -150,4 +152,2 @@
marginally when forwarding gossip to a slow peer (#4093, #4096).
- * `BlindedMessagePath::new_with_dummy_hops` was added (but is not used by- default, #3726).
* Blinded path serialization is now padded to better hide its contents (#3177).

`ChannelManager::splice_channel` initiates a splice which
ultimately generates a series of events. The most important of
which, `FundingTransactionReadyForSigning` (which must always be
handled, unlike the others), was not documented.
Here we mention the event generation.
Backport of 00e06a0
Users implementing the "onion message mailbox" feature and handling
`OnionMessageIntercepted` events need to also handle
`Event::OnionMessagePeerConnected` events.
Here we update the event docs for both to add additional references
and be more explicit about what implementors need to do.
Backport of 683d03c
`clippy` now complains that `Default` for the interactive tx
constructor `StateMachine` can be auto-derived, but its a bit weird
to have a `Default` that loads an invalid ("indeterminate") state.
Instead, we replace the one line that actually cares about the
`Default` (which uses `core::mem::take`) with `core::mem::replace`,
making it more explict.
Backport of a8b990a
`clippy` now complains about more instances of useless `vec!`s, so
we drop them here.
Backport of 3c1159c
@TheBlueMatt
TheBlueMattforce-pushed the 2025-10-0.2-backports-2 branch from fb6da9e to a107ca2CompareOctober 30, 2025 22:09
@TheBlueMatt

Copy link
Copy Markdown
CollaboratorAuthor

Updated backports of #4163.

$ git diff-tree -U1 fb6da9e545 a107ca264d
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 513a026f62..0480191933 100644
--- a/CHANGELOG.md+++ b/CHANGELOG.md@@ -33,3 +33,3 @@
LDK-based LSPs wishing to support often-offline senders and recipients should
- set `UserConfig::enable_htlc_hold`, support the existing "onion mesage+ set `UserConfig::enable_htlc_hold`, support the existing "onion message
mailbox" feature (setting `intercept_messages_for_offline_peers` on
@@ -39,3 +39,3 @@
force-closure risk for feerate disagreements by using a fixed, zero fee on
- presigned transactions, relying on anchor bumps instead. They also utilize+ pre-signed transactions, relying on anchor bumps instead. They also utilize
the new TRUC + ephemeral dust policy in Bitcoin Core 29 to substantially
@@ -127,3 +127,3 @@
full available buffer (#3640).
- * structs in `lightning-liquidity` were renamed to be globally unique (#3583).+ * Structs in `lightning-liquidity` were renamed to be globally unique (#3583).
* Renamed `SpendableOutputDescriptor::outpoint` to `spendable_outpoint` (#3634)
@@ -147,3 +147,3 @@
fixed (#4168).
- * The fields in `SocketAddress::OnionV3` are now corectly parsed, and the+ * The fields in `SocketAddress::OnionV3` are now correctly parsed, and the
`Display` for such addresses is now lowercase (#4090).
@@ -170,5 +170,5 @@
* Blinded message paths generated by previous versions of LDK, except those
- generated for inclusion in `Bolt12Offer`s will no longer be accepted. As most- blinded message paths are ephemeral, this should only invalidate issued- `Refund`s in practice (#3917).+ generated for inclusion in BOLT 12 `Offer`s will no longer be accepted. As+ most blinded message paths are ephemeral, this should only invalidate issued+ BOLT 12 `Refund`s in practice (#3917).
* Once a channel has been spliced, LDK can no longer be downgraded.
diff --git a/lightning/src/ln/channelmanager.rs b/lightning/src/ln/channelmanager.rs
index d52668eef6..632d897043 100644
--- a/lightning/src/ln/channelmanager.rs+++ b/lightning/src/ln/channelmanager.rs@@ -4685,5 +4685,4 @@ where
///
-	/// After initial signatures have been exchanged, if we contributed any inputs,-	/// [`Event::FundingTransactionReadyForSigning`] will be generated and-	/// [`ChannelManager::funding_transaction_signed`] should be called.+	/// After initial signatures have been exchanged, [`Event::FundingTransactionReadyForSigning`]+	/// will be generated and [`ChannelManager::funding_transaction_signed`] should be called.
///

@TheBlueMatt
TheBlueMatt merged commit ef789f4 into lightningdevkit:0.2Oct 31, 2025
25 checks passed
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@TheBlueMatt@ldk-reviews-bot@wpaulino@valentinewallace@tankyleo
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

0.2-rc1 backports - #4193

Merged
TheBlueMatt merged 15 commits into
lightningdevkit:0.2from
TheBlueMatt:2025-10-0.2-backports-2
Oct 31, 2025
Merged

0.2-rc1 backports#4193
TheBlueMatt merged 15 commits into
lightningdevkit:0.2from
TheBlueMatt:2025-10-0.2-backports-2

Conversation

@TheBlueMatt

Copy link
Copy Markdown
Collaborator

Backport of #4189, #4186, #4192, #4191, #4187, and #4163 for 0.2.

TheBlueMattand others added 10 commits October 30, 2025 18:26
This reverts commit 561da4c.
A user pointed out, when looking to upgrade to LDK 0.2, that the
`lazy` flag is actually quite important for performance when using
a `MonitorUpdatingPersister`, especially in synchronous persistence
mode.
Thus, we add it back here.
Fixeslightningdevkit#4188
Backport of 3b4c2ff
In the previous commit we reverted
561da4c. One of the motivations
for it (in addition to `lazy` removals being somewhat less, though
still arguably useful in an async context) was that the ordering
requirements of `lazy` removals is somewhat unclear.
Here we simply default to the simplest safe option, requiring a
total order across all `write` and `remove` operations to the same
key, `lazy` or not.
Backport of 0f9548b
While HTTP headers should be a unique K->V mapping, returning three
headers to a user in an event via a `HashMap` is substantially
overkill (and also not trivial to do in bindings). Instead, we
expose them as a `Vec`.
Backport of 031a987
`WebhookNotification` already has all fields `pub`, making its
`new` constructor somewhat redundant, but also conflicting with the
bindings-auto-generated `new` constructor. Thus we just drop it.
Backport of b10a4e8
If we're already passing `AChannelManagerRef` and `ChainMonitorRef`
to `can_support_additional_anchor_channel` there's no need to take
them by reference.
Backport of e4512d1
If we fail to load a `ChannelMonitor` due to the new limits in LDK
0.2, its useful to communicate which monitor failed, which we do
here.
Requested at
lightningdevkit#4146 (comment)
Backport of a4f4663
`crates.io` will show any README/README.md which apears in the
crate which is uploaded, but it doesn't consider the README from
the workspace, only if its in the crate itself.
Instead, add the `readme` field so that the workspace README also
gets uploaded.
Backport of 1605291
@TheBlueMattTheBlueMatt added this to the 0.2 milestone Oct 30, 2025
@ldk-reviews-bot

ldk-reviews-bot commented Oct 30, 2025

Copy link
Copy Markdown

I've assigned @wpaulino as a reviewer!
I'll wait for their review and will help manage the review process.
Once they submit their review, I'll check if a second reviewer would be helpful.

@TheBlueMatt

Copy link
Copy Markdown
CollaboratorAuthor

Also backported #4195 to fix clippy.

@TheBlueMattTheBlueMatt mentioned this pull request Oct 30, 2025
@codecov

codecovBot commented Oct 30, 2025

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 72.16495% with 27 lines in your changes missing coverage. Please review.
✅ Project coverage is 88.86%. Comparing base (1b4d8e4) to head (a107ca2).
⚠️ Report is 16 commits behind head on 0.2.

Files with missing linesPatch %Lines
lightning-persister/src/fs_store.rs52.38%5 Missing and 5 partials ⚠️
lightning/src/util/persist.rs55.00%7 Missing and 2 partials ⚠️
lightning-background-processor/src/lib.rs0.00%2 Missing ⚠️
lightning/src/util/anchor_channel_reserves.rs0.00%2 Missing ⚠️
lightning/src/util/test_utils.rs60.00%2 Missing ⚠️
lightning-liquidity/src/lsps2/service.rs0.00%1 Missing ⚠️
lightning-liquidity/src/lsps5/service.rs75.00%1 Missing ⚠️
Additional details and impacted files
@@ Coverage Diff @@## 0.2 #4193 +/- ##
==========================================
- Coverage 88.86% 88.86% -0.01% 
==========================================
Files 180 180 Lines 137770 137802 +32 Branches 137770 137802 +32 ==========================================
+ Hits 122433 122455 +22 - Misses 12530 12537 +7 - Partials 2807 2810 +3 
FlagCoverage Δ
fuzzing21.45% <0.00%> (+0.58%)⬆️
tests88.70% <72.16%> (-0.01%)⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@ldk-reviews-bot

Copy link
Copy Markdown

👋 The first review has been submitted!

Do you think this PR is ready for a second reviewer? If so, click here to assign a second reviewer.

Comment threadCHANGELOG.md Outdated
@TheBlueMatt
TheBlueMattforce-pushed the 2025-10-0.2-backports-2 branch from aa9a347 to fb6da9eCompareOctober 30, 2025 21:05
@TheBlueMatt

TheBlueMatt commented Oct 30, 2025

Copy link
Copy Markdown
CollaboratorAuthor

Updated #4163 and the backported copy of it. That needs to land first anyway:

$ git diff-tree -U1 aa9a347531 fb6da9e545
diff --git a/CHANGELOG.md b/CHANGELOG.md
index b4839d6423..513a026f62 100644
--- a/CHANGELOG.md+++ b/CHANGELOG.md@@ -92,2 +92,4 @@
`KVStore` to restore custom logic for specific storage objects (#3905).
+ * `BlindedMessagePath::new_with_dummy_hops` was added (but is not used by+ default, #3726). You can use `NodeIdMessageRouter` to enable dummy hops.
* `ProbabilisticScoringFeeParameters::probing_diversity_penalty` was added to
@@ -150,4 +152,2 @@
marginally when forwarding gossip to a slow peer (#4093, #4096).
- * `BlindedMessagePath::new_with_dummy_hops` was added (but is not used by- default, #3726).
* Blinded path serialization is now padded to better hide its contents (#3177).

`ChannelManager::splice_channel` initiates a splice which
ultimately generates a series of events. The most important of
which, `FundingTransactionReadyForSigning` (which must always be
handled, unlike the others), was not documented.
Here we mention the event generation.
Backport of 00e06a0
Users implementing the "onion message mailbox" feature and handling
`OnionMessageIntercepted` events need to also handle
`Event::OnionMessagePeerConnected` events.
Here we update the event docs for both to add additional references
and be more explicit about what implementors need to do.
Backport of 683d03c
`clippy` now complains that `Default` for the interactive tx
constructor `StateMachine` can be auto-derived, but its a bit weird
to have a `Default` that loads an invalid ("indeterminate") state.
Instead, we replace the one line that actually cares about the
`Default` (which uses `core::mem::take`) with `core::mem::replace`,
making it more explict.
Backport of a8b990a
`clippy` now complains about more instances of useless `vec!`s, so
we drop them here.
Backport of 3c1159c
@TheBlueMatt
TheBlueMattforce-pushed the 2025-10-0.2-backports-2 branch from fb6da9e to a107ca2CompareOctober 30, 2025 22:09
@TheBlueMatt

Copy link
Copy Markdown
CollaboratorAuthor

Updated backports of #4163.

$ git diff-tree -U1 fb6da9e545 a107ca264d
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 513a026f62..0480191933 100644
--- a/CHANGELOG.md+++ b/CHANGELOG.md@@ -33,3 +33,3 @@
LDK-based LSPs wishing to support often-offline senders and recipients should
- set `UserConfig::enable_htlc_hold`, support the existing "onion mesage+ set `UserConfig::enable_htlc_hold`, support the existing "onion message
mailbox" feature (setting `intercept_messages_for_offline_peers` on
@@ -39,3 +39,3 @@
force-closure risk for feerate disagreements by using a fixed, zero fee on
- presigned transactions, relying on anchor bumps instead. They also utilize+ pre-signed transactions, relying on anchor bumps instead. They also utilize
the new TRUC + ephemeral dust policy in Bitcoin Core 29 to substantially
@@ -127,3 +127,3 @@
full available buffer (#3640).
- * structs in `lightning-liquidity` were renamed to be globally unique (#3583).+ * Structs in `lightning-liquidity` were renamed to be globally unique (#3583).
* Renamed `SpendableOutputDescriptor::outpoint` to `spendable_outpoint` (#3634)
@@ -147,3 +147,3 @@
fixed (#4168).
- * The fields in `SocketAddress::OnionV3` are now corectly parsed, and the+ * The fields in `SocketAddress::OnionV3` are now correctly parsed, and the
`Display` for such addresses is now lowercase (#4090).
@@ -170,5 +170,5 @@
* Blinded message paths generated by previous versions of LDK, except those
- generated for inclusion in `Bolt12Offer`s will no longer be accepted. As most- blinded message paths are ephemeral, this should only invalidate issued- `Refund`s in practice (#3917).+ generated for inclusion in BOLT 12 `Offer`s will no longer be accepted. As+ most blinded message paths are ephemeral, this should only invalidate issued+ BOLT 12 `Refund`s in practice (#3917).
* Once a channel has been spliced, LDK can no longer be downgraded.
diff --git a/lightning/src/ln/channelmanager.rs b/lightning/src/ln/channelmanager.rs
index d52668eef6..632d897043 100644
--- a/lightning/src/ln/channelmanager.rs+++ b/lightning/src/ln/channelmanager.rs@@ -4685,5 +4685,4 @@ where
///
-	/// After initial signatures have been exchanged, if we contributed any inputs,-	/// [`Event::FundingTransactionReadyForSigning`] will be generated and-	/// [`ChannelManager::funding_transaction_signed`] should be called.+	/// After initial signatures have been exchanged, [`Event::FundingTransactionReadyForSigning`]+	/// will be generated and [`ChannelManager::funding_transaction_signed`] should be called.
///

@TheBlueMatt
TheBlueMatt merged commit ef789f4 into lightningdevkit:0.2Oct 31, 2025
25 checks passed
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@TheBlueMatt@ldk-reviews-bot@wpaulino@valentinewallace@tankyleo
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

0.2-rc1 backports - #4193

Merged
TheBlueMatt merged 15 commits into
lightningdevkit:0.2from
TheBlueMatt:2025-10-0.2-backports-2
Oct 31, 2025
Merged

0.2-rc1 backports#4193
TheBlueMatt merged 15 commits into
lightningdevkit:0.2from
TheBlueMatt:2025-10-0.2-backports-2

Conversation

@TheBlueMatt

Copy link
Copy Markdown
Collaborator

Backport of #4189, #4186, #4192, #4191, #4187, and #4163 for 0.2.

TheBlueMattand others added 10 commits October 30, 2025 18:26
This reverts commit 561da4c.
A user pointed out, when looking to upgrade to LDK 0.2, that the
`lazy` flag is actually quite important for performance when using
a `MonitorUpdatingPersister`, especially in synchronous persistence
mode.
Thus, we add it back here.
Fixeslightningdevkit#4188
Backport of 3b4c2ff
In the previous commit we reverted
561da4c. One of the motivations
for it (in addition to `lazy` removals being somewhat less, though
still arguably useful in an async context) was that the ordering
requirements of `lazy` removals is somewhat unclear.
Here we simply default to the simplest safe option, requiring a
total order across all `write` and `remove` operations to the same
key, `lazy` or not.
Backport of 0f9548b
While HTTP headers should be a unique K->V mapping, returning three
headers to a user in an event via a `HashMap` is substantially
overkill (and also not trivial to do in bindings). Instead, we
expose them as a `Vec`.
Backport of 031a987
`WebhookNotification` already has all fields `pub`, making its
`new` constructor somewhat redundant, but also conflicting with the
bindings-auto-generated `new` constructor. Thus we just drop it.
Backport of b10a4e8
If we're already passing `AChannelManagerRef` and `ChainMonitorRef`
to `can_support_additional_anchor_channel` there's no need to take
them by reference.
Backport of e4512d1
If we fail to load a `ChannelMonitor` due to the new limits in LDK
0.2, its useful to communicate which monitor failed, which we do
here.
Requested at
lightningdevkit#4146 (comment)
Backport of a4f4663
`crates.io` will show any README/README.md which apears in the
crate which is uploaded, but it doesn't consider the README from
the workspace, only if its in the crate itself.
Instead, add the `readme` field so that the workspace README also
gets uploaded.
Backport of 1605291
@TheBlueMattTheBlueMatt added this to the 0.2 milestone Oct 30, 2025
@ldk-reviews-bot

ldk-reviews-bot commented Oct 30, 2025

Copy link
Copy Markdown

I've assigned @wpaulino as a reviewer!
I'll wait for their review and will help manage the review process.
Once they submit their review, I'll check if a second reviewer would be helpful.

@TheBlueMatt

Copy link
Copy Markdown
CollaboratorAuthor

Also backported #4195 to fix clippy.

@TheBlueMattTheBlueMatt mentioned this pull request Oct 30, 2025
@codecov

codecovBot commented Oct 30, 2025

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 72.16495% with 27 lines in your changes missing coverage. Please review.
✅ Project coverage is 88.86%. Comparing base (1b4d8e4) to head (a107ca2).
⚠️ Report is 16 commits behind head on 0.2.

Files with missing linesPatch %Lines
lightning-persister/src/fs_store.rs52.38%5 Missing and 5 partials ⚠️
lightning/src/util/persist.rs55.00%7 Missing and 2 partials ⚠️
lightning-background-processor/src/lib.rs0.00%2 Missing ⚠️
lightning/src/util/anchor_channel_reserves.rs0.00%2 Missing ⚠️
lightning/src/util/test_utils.rs60.00%2 Missing ⚠️
lightning-liquidity/src/lsps2/service.rs0.00%1 Missing ⚠️
lightning-liquidity/src/lsps5/service.rs75.00%1 Missing ⚠️
Additional details and impacted files
@@ Coverage Diff @@## 0.2 #4193 +/- ##
==========================================
- Coverage 88.86% 88.86% -0.01% 
==========================================
Files 180 180 Lines 137770 137802 +32 Branches 137770 137802 +32 ==========================================
+ Hits 122433 122455 +22 - Misses 12530 12537 +7 - Partials 2807 2810 +3 
FlagCoverage Δ
fuzzing21.45% <0.00%> (+0.58%)⬆️
tests88.70% <72.16%> (-0.01%)⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@ldk-reviews-bot

Copy link
Copy Markdown

👋 The first review has been submitted!

Do you think this PR is ready for a second reviewer? If so, click here to assign a second reviewer.

Comment threadCHANGELOG.md Outdated
@TheBlueMatt
TheBlueMattforce-pushed the 2025-10-0.2-backports-2 branch from aa9a347 to fb6da9eCompareOctober 30, 2025 21:05
@TheBlueMatt

TheBlueMatt commented Oct 30, 2025

Copy link
Copy Markdown
CollaboratorAuthor

Updated #4163 and the backported copy of it. That needs to land first anyway:

$ git diff-tree -U1 aa9a347531 fb6da9e545
diff --git a/CHANGELOG.md b/CHANGELOG.md
index b4839d6423..513a026f62 100644
--- a/CHANGELOG.md+++ b/CHANGELOG.md@@ -92,2 +92,4 @@
`KVStore` to restore custom logic for specific storage objects (#3905).
+ * `BlindedMessagePath::new_with_dummy_hops` was added (but is not used by+ default, #3726). You can use `NodeIdMessageRouter` to enable dummy hops.
* `ProbabilisticScoringFeeParameters::probing_diversity_penalty` was added to
@@ -150,4 +152,2 @@
marginally when forwarding gossip to a slow peer (#4093, #4096).
- * `BlindedMessagePath::new_with_dummy_hops` was added (but is not used by- default, #3726).
* Blinded path serialization is now padded to better hide its contents (#3177).

`ChannelManager::splice_channel` initiates a splice which
ultimately generates a series of events. The most important of
which, `FundingTransactionReadyForSigning` (which must always be
handled, unlike the others), was not documented.
Here we mention the event generation.
Backport of 00e06a0
Users implementing the "onion message mailbox" feature and handling
`OnionMessageIntercepted` events need to also handle
`Event::OnionMessagePeerConnected` events.
Here we update the event docs for both to add additional references
and be more explicit about what implementors need to do.
Backport of 683d03c
`clippy` now complains that `Default` for the interactive tx
constructor `StateMachine` can be auto-derived, but its a bit weird
to have a `Default` that loads an invalid ("indeterminate") state.
Instead, we replace the one line that actually cares about the
`Default` (which uses `core::mem::take`) with `core::mem::replace`,
making it more explict.
Backport of a8b990a
`clippy` now complains about more instances of useless `vec!`s, so
we drop them here.
Backport of 3c1159c
@TheBlueMatt
TheBlueMattforce-pushed the 2025-10-0.2-backports-2 branch from fb6da9e to a107ca2CompareOctober 30, 2025 22:09
@TheBlueMatt

Copy link
Copy Markdown
CollaboratorAuthor

Updated backports of #4163.

$ git diff-tree -U1 fb6da9e545 a107ca264d
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 513a026f62..0480191933 100644
--- a/CHANGELOG.md+++ b/CHANGELOG.md@@ -33,3 +33,3 @@
LDK-based LSPs wishing to support often-offline senders and recipients should
- set `UserConfig::enable_htlc_hold`, support the existing "onion mesage+ set `UserConfig::enable_htlc_hold`, support the existing "onion message
mailbox" feature (setting `intercept_messages_for_offline_peers` on
@@ -39,3 +39,3 @@
force-closure risk for feerate disagreements by using a fixed, zero fee on
- presigned transactions, relying on anchor bumps instead. They also utilize+ pre-signed transactions, relying on anchor bumps instead. They also utilize
the new TRUC + ephemeral dust policy in Bitcoin Core 29 to substantially
@@ -127,3 +127,3 @@
full available buffer (#3640).
- * structs in `lightning-liquidity` were renamed to be globally unique (#3583).+ * Structs in `lightning-liquidity` were renamed to be globally unique (#3583).
* Renamed `SpendableOutputDescriptor::outpoint` to `spendable_outpoint` (#3634)
@@ -147,3 +147,3 @@
fixed (#4168).
- * The fields in `SocketAddress::OnionV3` are now corectly parsed, and the+ * The fields in `SocketAddress::OnionV3` are now correctly parsed, and the
`Display` for such addresses is now lowercase (#4090).
@@ -170,5 +170,5 @@
* Blinded message paths generated by previous versions of LDK, except those
- generated for inclusion in `Bolt12Offer`s will no longer be accepted. As most- blinded message paths are ephemeral, this should only invalidate issued- `Refund`s in practice (#3917).+ generated for inclusion in BOLT 12 `Offer`s will no longer be accepted. As+ most blinded message paths are ephemeral, this should only invalidate issued+ BOLT 12 `Refund`s in practice (#3917).
* Once a channel has been spliced, LDK can no longer be downgraded.
diff --git a/lightning/src/ln/channelmanager.rs b/lightning/src/ln/channelmanager.rs
index d52668eef6..632d897043 100644
--- a/lightning/src/ln/channelmanager.rs+++ b/lightning/src/ln/channelmanager.rs@@ -4685,5 +4685,4 @@ where
///
-	/// After initial signatures have been exchanged, if we contributed any inputs,-	/// [`Event::FundingTransactionReadyForSigning`] will be generated and-	/// [`ChannelManager::funding_transaction_signed`] should be called.+	/// After initial signatures have been exchanged, [`Event::FundingTransactionReadyForSigning`]+	/// will be generated and [`ChannelManager::funding_transaction_signed`] should be called.
///

@TheBlueMatt
TheBlueMatt merged commit ef789f4 into lightningdevkit:0.2Oct 31, 2025
25 checks passed
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@TheBlueMatt@ldk-reviews-bot@wpaulino@valentinewallace@tankyleo
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

0.2-rc1 backports - #4193

Merged
TheBlueMatt merged 15 commits into
lightningdevkit:0.2from
TheBlueMatt:2025-10-0.2-backports-2
Oct 31, 2025
Merged

0.2-rc1 backports#4193
TheBlueMatt merged 15 commits into
lightningdevkit:0.2from
TheBlueMatt:2025-10-0.2-backports-2

Conversation

@TheBlueMatt

Copy link
Copy Markdown
Collaborator

Backport of #4189, #4186, #4192, #4191, #4187, and #4163 for 0.2.

TheBlueMattand others added 10 commits October 30, 2025 18:26
This reverts commit 561da4c.
A user pointed out, when looking to upgrade to LDK 0.2, that the
`lazy` flag is actually quite important for performance when using
a `MonitorUpdatingPersister`, especially in synchronous persistence
mode.
Thus, we add it back here.
Fixeslightningdevkit#4188
Backport of 3b4c2ff
In the previous commit we reverted
561da4c. One of the motivations
for it (in addition to `lazy` removals being somewhat less, though
still arguably useful in an async context) was that the ordering
requirements of `lazy` removals is somewhat unclear.
Here we simply default to the simplest safe option, requiring a
total order across all `write` and `remove` operations to the same
key, `lazy` or not.
Backport of 0f9548b
While HTTP headers should be a unique K->V mapping, returning three
headers to a user in an event via a `HashMap` is substantially
overkill (and also not trivial to do in bindings). Instead, we
expose them as a `Vec`.
Backport of 031a987
`WebhookNotification` already has all fields `pub`, making its
`new` constructor somewhat redundant, but also conflicting with the
bindings-auto-generated `new` constructor. Thus we just drop it.
Backport of b10a4e8
If we're already passing `AChannelManagerRef` and `ChainMonitorRef`
to `can_support_additional_anchor_channel` there's no need to take
them by reference.
Backport of e4512d1
If we fail to load a `ChannelMonitor` due to the new limits in LDK
0.2, its useful to communicate which monitor failed, which we do
here.
Requested at
lightningdevkit#4146 (comment)
Backport of a4f4663
`crates.io` will show any README/README.md which apears in the
crate which is uploaded, but it doesn't consider the README from
the workspace, only if its in the crate itself.
Instead, add the `readme` field so that the workspace README also
gets uploaded.
Backport of 1605291
@TheBlueMattTheBlueMatt added this to the 0.2 milestone Oct 30, 2025
@ldk-reviews-bot

ldk-reviews-bot commented Oct 30, 2025

Copy link
Copy Markdown

I've assigned @wpaulino as a reviewer!
I'll wait for their review and will help manage the review process.
Once they submit their review, I'll check if a second reviewer would be helpful.

@TheBlueMatt

Copy link
Copy Markdown
CollaboratorAuthor

Also backported #4195 to fix clippy.

@TheBlueMattTheBlueMatt mentioned this pull request Oct 30, 2025
@codecov

codecovBot commented Oct 30, 2025

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 72.16495% with 27 lines in your changes missing coverage. Please review.
✅ Project coverage is 88.86%. Comparing base (1b4d8e4) to head (a107ca2).
⚠️ Report is 16 commits behind head on 0.2.

Files with missing linesPatch %Lines
lightning-persister/src/fs_store.rs52.38%5 Missing and 5 partials ⚠️
lightning/src/util/persist.rs55.00%7 Missing and 2 partials ⚠️
lightning-background-processor/src/lib.rs0.00%2 Missing ⚠️
lightning/src/util/anchor_channel_reserves.rs0.00%2 Missing ⚠️
lightning/src/util/test_utils.rs60.00%2 Missing ⚠️
lightning-liquidity/src/lsps2/service.rs0.00%1 Missing ⚠️
lightning-liquidity/src/lsps5/service.rs75.00%1 Missing ⚠️
Additional details and impacted files
@@ Coverage Diff @@## 0.2 #4193 +/- ##
==========================================
- Coverage 88.86% 88.86% -0.01% 
==========================================
Files 180 180 Lines 137770 137802 +32 Branches 137770 137802 +32 ==========================================
+ Hits 122433 122455 +22 - Misses 12530 12537 +7 - Partials 2807 2810 +3 
FlagCoverage Δ
fuzzing21.45% <0.00%> (+0.58%)⬆️
tests88.70% <72.16%> (-0.01%)⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@ldk-reviews-bot

Copy link
Copy Markdown

👋 The first review has been submitted!

Do you think this PR is ready for a second reviewer? If so, click here to assign a second reviewer.

Comment threadCHANGELOG.md Outdated
@TheBlueMatt
TheBlueMattforce-pushed the 2025-10-0.2-backports-2 branch from aa9a347 to fb6da9eCompareOctober 30, 2025 21:05
@TheBlueMatt

TheBlueMatt commented Oct 30, 2025

Copy link
Copy Markdown
CollaboratorAuthor

Updated #4163 and the backported copy of it. That needs to land first anyway:

$ git diff-tree -U1 aa9a347531 fb6da9e545
diff --git a/CHANGELOG.md b/CHANGELOG.md
index b4839d6423..513a026f62 100644
--- a/CHANGELOG.md+++ b/CHANGELOG.md@@ -92,2 +92,4 @@
`KVStore` to restore custom logic for specific storage objects (#3905).
+ * `BlindedMessagePath::new_with_dummy_hops` was added (but is not used by+ default, #3726). You can use `NodeIdMessageRouter` to enable dummy hops.
* `ProbabilisticScoringFeeParameters::probing_diversity_penalty` was added to
@@ -150,4 +152,2 @@
marginally when forwarding gossip to a slow peer (#4093, #4096).
- * `BlindedMessagePath::new_with_dummy_hops` was added (but is not used by- default, #3726).
* Blinded path serialization is now padded to better hide its contents (#3177).

`ChannelManager::splice_channel` initiates a splice which
ultimately generates a series of events. The most important of
which, `FundingTransactionReadyForSigning` (which must always be
handled, unlike the others), was not documented.
Here we mention the event generation.
Backport of 00e06a0
Users implementing the "onion message mailbox" feature and handling
`OnionMessageIntercepted` events need to also handle
`Event::OnionMessagePeerConnected` events.
Here we update the event docs for both to add additional references
and be more explicit about what implementors need to do.
Backport of 683d03c
`clippy` now complains that `Default` for the interactive tx
constructor `StateMachine` can be auto-derived, but its a bit weird
to have a `Default` that loads an invalid ("indeterminate") state.
Instead, we replace the one line that actually cares about the
`Default` (which uses `core::mem::take`) with `core::mem::replace`,
making it more explict.
Backport of a8b990a
`clippy` now complains about more instances of useless `vec!`s, so
we drop them here.
Backport of 3c1159c
@TheBlueMatt
TheBlueMattforce-pushed the 2025-10-0.2-backports-2 branch from fb6da9e to a107ca2CompareOctober 30, 2025 22:09
@TheBlueMatt

Copy link
Copy Markdown
CollaboratorAuthor

Updated backports of #4163.

$ git diff-tree -U1 fb6da9e545 a107ca264d
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 513a026f62..0480191933 100644
--- a/CHANGELOG.md+++ b/CHANGELOG.md@@ -33,3 +33,3 @@
LDK-based LSPs wishing to support often-offline senders and recipients should
- set `UserConfig::enable_htlc_hold`, support the existing "onion mesage+ set `UserConfig::enable_htlc_hold`, support the existing "onion message
mailbox" feature (setting `intercept_messages_for_offline_peers` on
@@ -39,3 +39,3 @@
force-closure risk for feerate disagreements by using a fixed, zero fee on
- presigned transactions, relying on anchor bumps instead. They also utilize+ pre-signed transactions, relying on anchor bumps instead. They also utilize
the new TRUC + ephemeral dust policy in Bitcoin Core 29 to substantially
@@ -127,3 +127,3 @@
full available buffer (#3640).
- * structs in `lightning-liquidity` were renamed to be globally unique (#3583).+ * Structs in `lightning-liquidity` were renamed to be globally unique (#3583).
* Renamed `SpendableOutputDescriptor::outpoint` to `spendable_outpoint` (#3634)
@@ -147,3 +147,3 @@
fixed (#4168).
- * The fields in `SocketAddress::OnionV3` are now corectly parsed, and the+ * The fields in `SocketAddress::OnionV3` are now correctly parsed, and the
`Display` for such addresses is now lowercase (#4090).
@@ -170,5 +170,5 @@
* Blinded message paths generated by previous versions of LDK, except those
- generated for inclusion in `Bolt12Offer`s will no longer be accepted. As most- blinded message paths are ephemeral, this should only invalidate issued- `Refund`s in practice (#3917).+ generated for inclusion in BOLT 12 `Offer`s will no longer be accepted. As+ most blinded message paths are ephemeral, this should only invalidate issued+ BOLT 12 `Refund`s in practice (#3917).
* Once a channel has been spliced, LDK can no longer be downgraded.
diff --git a/lightning/src/ln/channelmanager.rs b/lightning/src/ln/channelmanager.rs
index d52668eef6..632d897043 100644
--- a/lightning/src/ln/channelmanager.rs+++ b/lightning/src/ln/channelmanager.rs@@ -4685,5 +4685,4 @@ where
///
-	/// After initial signatures have been exchanged, if we contributed any inputs,-	/// [`Event::FundingTransactionReadyForSigning`] will be generated and-	/// [`ChannelManager::funding_transaction_signed`] should be called.+	/// After initial signatures have been exchanged, [`Event::FundingTransactionReadyForSigning`]+	/// will be generated and [`ChannelManager::funding_transaction_signed`] should be called.
///

@TheBlueMatt
TheBlueMatt merged commit ef789f4 into lightningdevkit:0.2Oct 31, 2025
25 checks passed
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@TheBlueMatt@ldk-reviews-bot@wpaulino@valentinewallace@tankyleo
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

0.2-rc1 backports - #4193

Merged
TheBlueMatt merged 15 commits into
lightningdevkit:0.2from
TheBlueMatt:2025-10-0.2-backports-2
Oct 31, 2025
Merged

0.2-rc1 backports#4193
TheBlueMatt merged 15 commits into
lightningdevkit:0.2from
TheBlueMatt:2025-10-0.2-backports-2

Conversation

@TheBlueMatt

Copy link
Copy Markdown
Collaborator

Backport of #4189, #4186, #4192, #4191, #4187, and #4163 for 0.2.

TheBlueMattand others added 10 commits October 30, 2025 18:26
This reverts commit 561da4c.
A user pointed out, when looking to upgrade to LDK 0.2, that the
`lazy` flag is actually quite important for performance when using
a `MonitorUpdatingPersister`, especially in synchronous persistence
mode.
Thus, we add it back here.
Fixeslightningdevkit#4188
Backport of 3b4c2ff
In the previous commit we reverted
561da4c. One of the motivations
for it (in addition to `lazy` removals being somewhat less, though
still arguably useful in an async context) was that the ordering
requirements of `lazy` removals is somewhat unclear.
Here we simply default to the simplest safe option, requiring a
total order across all `write` and `remove` operations to the same
key, `lazy` or not.
Backport of 0f9548b
While HTTP headers should be a unique K->V mapping, returning three
headers to a user in an event via a `HashMap` is substantially
overkill (and also not trivial to do in bindings). Instead, we
expose them as a `Vec`.
Backport of 031a987
`WebhookNotification` already has all fields `pub`, making its
`new` constructor somewhat redundant, but also conflicting with the
bindings-auto-generated `new` constructor. Thus we just drop it.
Backport of b10a4e8
If we're already passing `AChannelManagerRef` and `ChainMonitorRef`
to `can_support_additional_anchor_channel` there's no need to take
them by reference.
Backport of e4512d1
If we fail to load a `ChannelMonitor` due to the new limits in LDK
0.2, its useful to communicate which monitor failed, which we do
here.
Requested at
lightningdevkit#4146 (comment)
Backport of a4f4663
`crates.io` will show any README/README.md which apears in the
crate which is uploaded, but it doesn't consider the README from
the workspace, only if its in the crate itself.
Instead, add the `readme` field so that the workspace README also
gets uploaded.
Backport of 1605291
@TheBlueMattTheBlueMatt added this to the 0.2 milestone Oct 30, 2025
@ldk-reviews-bot

ldk-reviews-bot commented Oct 30, 2025

Copy link
Copy Markdown

I've assigned @wpaulino as a reviewer!
I'll wait for their review and will help manage the review process.
Once they submit their review, I'll check if a second reviewer would be helpful.

@TheBlueMatt

Copy link
Copy Markdown
CollaboratorAuthor

Also backported #4195 to fix clippy.

@TheBlueMattTheBlueMatt mentioned this pull request Oct 30, 2025
@codecov

codecovBot commented Oct 30, 2025

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 72.16495% with 27 lines in your changes missing coverage. Please review.
✅ Project coverage is 88.86%. Comparing base (1b4d8e4) to head (a107ca2).
⚠️ Report is 16 commits behind head on 0.2.

Files with missing linesPatch %Lines
lightning-persister/src/fs_store.rs52.38%5 Missing and 5 partials ⚠️
lightning/src/util/persist.rs55.00%7 Missing and 2 partials ⚠️
lightning-background-processor/src/lib.rs0.00%2 Missing ⚠️
lightning/src/util/anchor_channel_reserves.rs0.00%2 Missing ⚠️
lightning/src/util/test_utils.rs60.00%2 Missing ⚠️
lightning-liquidity/src/lsps2/service.rs0.00%1 Missing ⚠️
lightning-liquidity/src/lsps5/service.rs75.00%1 Missing ⚠️
Additional details and impacted files
@@ Coverage Diff @@## 0.2 #4193 +/- ##
==========================================
- Coverage 88.86% 88.86% -0.01% 
==========================================
Files 180 180 Lines 137770 137802 +32 Branches 137770 137802 +32 ==========================================
+ Hits 122433 122455 +22 - Misses 12530 12537 +7 - Partials 2807 2810 +3 
FlagCoverage Δ
fuzzing21.45% <0.00%> (+0.58%)⬆️
tests88.70% <72.16%> (-0.01%)⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@ldk-reviews-bot

Copy link
Copy Markdown

👋 The first review has been submitted!

Do you think this PR is ready for a second reviewer? If so, click here to assign a second reviewer.

Comment threadCHANGELOG.md Outdated
@TheBlueMatt
TheBlueMattforce-pushed the 2025-10-0.2-backports-2 branch from aa9a347 to fb6da9eCompareOctober 30, 2025 21:05
@TheBlueMatt

TheBlueMatt commented Oct 30, 2025

Copy link
Copy Markdown
CollaboratorAuthor

Updated #4163 and the backported copy of it. That needs to land first anyway:

$ git diff-tree -U1 aa9a347531 fb6da9e545
diff --git a/CHANGELOG.md b/CHANGELOG.md
index b4839d6423..513a026f62 100644
--- a/CHANGELOG.md+++ b/CHANGELOG.md@@ -92,2 +92,4 @@
`KVStore` to restore custom logic for specific storage objects (#3905).
+ * `BlindedMessagePath::new_with_dummy_hops` was added (but is not used by+ default, #3726). You can use `NodeIdMessageRouter` to enable dummy hops.
* `ProbabilisticScoringFeeParameters::probing_diversity_penalty` was added to
@@ -150,4 +152,2 @@
marginally when forwarding gossip to a slow peer (#4093, #4096).
- * `BlindedMessagePath::new_with_dummy_hops` was added (but is not used by- default, #3726).
* Blinded path serialization is now padded to better hide its contents (#3177).

`ChannelManager::splice_channel` initiates a splice which
ultimately generates a series of events. The most important of
which, `FundingTransactionReadyForSigning` (which must always be
handled, unlike the others), was not documented.
Here we mention the event generation.
Backport of 00e06a0
Users implementing the "onion message mailbox" feature and handling
`OnionMessageIntercepted` events need to also handle
`Event::OnionMessagePeerConnected` events.
Here we update the event docs for both to add additional references
and be more explicit about what implementors need to do.
Backport of 683d03c
`clippy` now complains that `Default` for the interactive tx
constructor `StateMachine` can be auto-derived, but its a bit weird
to have a `Default` that loads an invalid ("indeterminate") state.
Instead, we replace the one line that actually cares about the
`Default` (which uses `core::mem::take`) with `core::mem::replace`,
making it more explict.
Backport of a8b990a
`clippy` now complains about more instances of useless `vec!`s, so
we drop them here.
Backport of 3c1159c
@TheBlueMatt
TheBlueMattforce-pushed the 2025-10-0.2-backports-2 branch from fb6da9e to a107ca2CompareOctober 30, 2025 22:09
@TheBlueMatt

Copy link
Copy Markdown
CollaboratorAuthor

Updated backports of #4163.

$ git diff-tree -U1 fb6da9e545 a107ca264d
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 513a026f62..0480191933 100644
--- a/CHANGELOG.md+++ b/CHANGELOG.md@@ -33,3 +33,3 @@
LDK-based LSPs wishing to support often-offline senders and recipients should
- set `UserConfig::enable_htlc_hold`, support the existing "onion mesage+ set `UserConfig::enable_htlc_hold`, support the existing "onion message
mailbox" feature (setting `intercept_messages_for_offline_peers` on
@@ -39,3 +39,3 @@
force-closure risk for feerate disagreements by using a fixed, zero fee on
- presigned transactions, relying on anchor bumps instead. They also utilize+ pre-signed transactions, relying on anchor bumps instead. They also utilize
the new TRUC + ephemeral dust policy in Bitcoin Core 29 to substantially
@@ -127,3 +127,3 @@
full available buffer (#3640).
- * structs in `lightning-liquidity` were renamed to be globally unique (#3583).+ * Structs in `lightning-liquidity` were renamed to be globally unique (#3583).
* Renamed `SpendableOutputDescriptor::outpoint` to `spendable_outpoint` (#3634)
@@ -147,3 +147,3 @@
fixed (#4168).
- * The fields in `SocketAddress::OnionV3` are now corectly parsed, and the+ * The fields in `SocketAddress::OnionV3` are now correctly parsed, and the
`Display` for such addresses is now lowercase (#4090).
@@ -170,5 +170,5 @@
* Blinded message paths generated by previous versions of LDK, except those
- generated for inclusion in `Bolt12Offer`s will no longer be accepted. As most- blinded message paths are ephemeral, this should only invalidate issued- `Refund`s in practice (#3917).+ generated for inclusion in BOLT 12 `Offer`s will no longer be accepted. As+ most blinded message paths are ephemeral, this should only invalidate issued+ BOLT 12 `Refund`s in practice (#3917).
* Once a channel has been spliced, LDK can no longer be downgraded.
diff --git a/lightning/src/ln/channelmanager.rs b/lightning/src/ln/channelmanager.rs
index d52668eef6..632d897043 100644
--- a/lightning/src/ln/channelmanager.rs+++ b/lightning/src/ln/channelmanager.rs@@ -4685,5 +4685,4 @@ where
///
-	/// After initial signatures have been exchanged, if we contributed any inputs,-	/// [`Event::FundingTransactionReadyForSigning`] will be generated and-	/// [`ChannelManager::funding_transaction_signed`] should be called.+	/// After initial signatures have been exchanged, [`Event::FundingTransactionReadyForSigning`]+	/// will be generated and [`ChannelManager::funding_transaction_signed`] should be called.
///

@TheBlueMatt
TheBlueMatt merged commit ef789f4 into lightningdevkit:0.2Oct 31, 2025
25 checks passed
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@TheBlueMatt@ldk-reviews-bot@wpaulino@valentinewallace@tankyleo
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

0.2-rc1 backports - #4193

Merged
TheBlueMatt merged 15 commits into
lightningdevkit:0.2from
TheBlueMatt:2025-10-0.2-backports-2
Oct 31, 2025
Merged

0.2-rc1 backports#4193
TheBlueMatt merged 15 commits into
lightningdevkit:0.2from
TheBlueMatt:2025-10-0.2-backports-2

Conversation

@TheBlueMatt

Copy link
Copy Markdown
Collaborator

Backport of #4189, #4186, #4192, #4191, #4187, and #4163 for 0.2.

TheBlueMattand others added 10 commits October 30, 2025 18:26
This reverts commit 561da4c.
A user pointed out, when looking to upgrade to LDK 0.2, that the
`lazy` flag is actually quite important for performance when using
a `MonitorUpdatingPersister`, especially in synchronous persistence
mode.
Thus, we add it back here.
Fixeslightningdevkit#4188
Backport of 3b4c2ff
In the previous commit we reverted
561da4c. One of the motivations
for it (in addition to `lazy` removals being somewhat less, though
still arguably useful in an async context) was that the ordering
requirements of `lazy` removals is somewhat unclear.
Here we simply default to the simplest safe option, requiring a
total order across all `write` and `remove` operations to the same
key, `lazy` or not.
Backport of 0f9548b
While HTTP headers should be a unique K->V mapping, returning three
headers to a user in an event via a `HashMap` is substantially
overkill (and also not trivial to do in bindings). Instead, we
expose them as a `Vec`.
Backport of 031a987
`WebhookNotification` already has all fields `pub`, making its
`new` constructor somewhat redundant, but also conflicting with the
bindings-auto-generated `new` constructor. Thus we just drop it.
Backport of b10a4e8
If we're already passing `AChannelManagerRef` and `ChainMonitorRef`
to `can_support_additional_anchor_channel` there's no need to take
them by reference.
Backport of e4512d1
If we fail to load a `ChannelMonitor` due to the new limits in LDK
0.2, its useful to communicate which monitor failed, which we do
here.
Requested at
lightningdevkit#4146 (comment)
Backport of a4f4663
`crates.io` will show any README/README.md which apears in the
crate which is uploaded, but it doesn't consider the README from
the workspace, only if its in the crate itself.
Instead, add the `readme` field so that the workspace README also
gets uploaded.
Backport of 1605291
@TheBlueMattTheBlueMatt added this to the 0.2 milestone Oct 30, 2025
@ldk-reviews-bot

ldk-reviews-bot commented Oct 30, 2025

Copy link
Copy Markdown

I've assigned @wpaulino as a reviewer!
I'll wait for their review and will help manage the review process.
Once they submit their review, I'll check if a second reviewer would be helpful.

@TheBlueMatt

Copy link
Copy Markdown
CollaboratorAuthor

Also backported #4195 to fix clippy.

@TheBlueMattTheBlueMatt mentioned this pull request Oct 30, 2025
@codecov

codecovBot commented Oct 30, 2025

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 72.16495% with 27 lines in your changes missing coverage. Please review.
✅ Project coverage is 88.86%. Comparing base (1b4d8e4) to head (a107ca2).
⚠️ Report is 16 commits behind head on 0.2.

Files with missing linesPatch %Lines
lightning-persister/src/fs_store.rs52.38%5 Missing and 5 partials ⚠️
lightning/src/util/persist.rs55.00%7 Missing and 2 partials ⚠️
lightning-background-processor/src/lib.rs0.00%2 Missing ⚠️
lightning/src/util/anchor_channel_reserves.rs0.00%2 Missing ⚠️
lightning/src/util/test_utils.rs60.00%2 Missing ⚠️
lightning-liquidity/src/lsps2/service.rs0.00%1 Missing ⚠️
lightning-liquidity/src/lsps5/service.rs75.00%1 Missing ⚠️
Additional details and impacted files
@@ Coverage Diff @@## 0.2 #4193 +/- ##
==========================================
- Coverage 88.86% 88.86% -0.01% 
==========================================
Files 180 180 Lines 137770 137802 +32 Branches 137770 137802 +32 ==========================================
+ Hits 122433 122455 +22 - Misses 12530 12537 +7 - Partials 2807 2810 +3 
FlagCoverage Δ
fuzzing21.45% <0.00%> (+0.58%)⬆️
tests88.70% <72.16%> (-0.01%)⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@ldk-reviews-bot

Copy link
Copy Markdown

👋 The first review has been submitted!

Do you think this PR is ready for a second reviewer? If so, click here to assign a second reviewer.

Comment threadCHANGELOG.md Outdated
@TheBlueMatt
TheBlueMattforce-pushed the 2025-10-0.2-backports-2 branch from aa9a347 to fb6da9eCompareOctober 30, 2025 21:05
@TheBlueMatt

TheBlueMatt commented Oct 30, 2025

Copy link
Copy Markdown
CollaboratorAuthor

Updated #4163 and the backported copy of it. That needs to land first anyway:

$ git diff-tree -U1 aa9a347531 fb6da9e545
diff --git a/CHANGELOG.md b/CHANGELOG.md
index b4839d6423..513a026f62 100644
--- a/CHANGELOG.md+++ b/CHANGELOG.md@@ -92,2 +92,4 @@
`KVStore` to restore custom logic for specific storage objects (#3905).
+ * `BlindedMessagePath::new_with_dummy_hops` was added (but is not used by+ default, #3726). You can use `NodeIdMessageRouter` to enable dummy hops.
* `ProbabilisticScoringFeeParameters::probing_diversity_penalty` was added to
@@ -150,4 +152,2 @@
marginally when forwarding gossip to a slow peer (#4093, #4096).
- * `BlindedMessagePath::new_with_dummy_hops` was added (but is not used by- default, #3726).
* Blinded path serialization is now padded to better hide its contents (#3177).

`ChannelManager::splice_channel` initiates a splice which
ultimately generates a series of events. The most important of
which, `FundingTransactionReadyForSigning` (which must always be
handled, unlike the others), was not documented.
Here we mention the event generation.
Backport of 00e06a0
Users implementing the "onion message mailbox" feature and handling
`OnionMessageIntercepted` events need to also handle
`Event::OnionMessagePeerConnected` events.
Here we update the event docs for both to add additional references
and be more explicit about what implementors need to do.
Backport of 683d03c
`clippy` now complains that `Default` for the interactive tx
constructor `StateMachine` can be auto-derived, but its a bit weird
to have a `Default` that loads an invalid ("indeterminate") state.
Instead, we replace the one line that actually cares about the
`Default` (which uses `core::mem::take`) with `core::mem::replace`,
making it more explict.
Backport of a8b990a
`clippy` now complains about more instances of useless `vec!`s, so
we drop them here.
Backport of 3c1159c
@TheBlueMatt
TheBlueMattforce-pushed the 2025-10-0.2-backports-2 branch from fb6da9e to a107ca2CompareOctober 30, 2025 22:09
@TheBlueMatt

Copy link
Copy Markdown
CollaboratorAuthor

Updated backports of #4163.

$ git diff-tree -U1 fb6da9e545 a107ca264d
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 513a026f62..0480191933 100644
--- a/CHANGELOG.md+++ b/CHANGELOG.md@@ -33,3 +33,3 @@
LDK-based LSPs wishing to support often-offline senders and recipients should
- set `UserConfig::enable_htlc_hold`, support the existing "onion mesage+ set `UserConfig::enable_htlc_hold`, support the existing "onion message
mailbox" feature (setting `intercept_messages_for_offline_peers` on
@@ -39,3 +39,3 @@
force-closure risk for feerate disagreements by using a fixed, zero fee on
- presigned transactions, relying on anchor bumps instead. They also utilize+ pre-signed transactions, relying on anchor bumps instead. They also utilize
the new TRUC + ephemeral dust policy in Bitcoin Core 29 to substantially
@@ -127,3 +127,3 @@
full available buffer (#3640).
- * structs in `lightning-liquidity` were renamed to be globally unique (#3583).+ * Structs in `lightning-liquidity` were renamed to be globally unique (#3583).
* Renamed `SpendableOutputDescriptor::outpoint` to `spendable_outpoint` (#3634)
@@ -147,3 +147,3 @@
fixed (#4168).
- * The fields in `SocketAddress::OnionV3` are now corectly parsed, and the+ * The fields in `SocketAddress::OnionV3` are now correctly parsed, and the
`Display` for such addresses is now lowercase (#4090).
@@ -170,5 +170,5 @@
* Blinded message paths generated by previous versions of LDK, except those
- generated for inclusion in `Bolt12Offer`s will no longer be accepted. As most- blinded message paths are ephemeral, this should only invalidate issued- `Refund`s in practice (#3917).+ generated for inclusion in BOLT 12 `Offer`s will no longer be accepted. As+ most blinded message paths are ephemeral, this should only invalidate issued+ BOLT 12 `Refund`s in practice (#3917).
* Once a channel has been spliced, LDK can no longer be downgraded.
diff --git a/lightning/src/ln/channelmanager.rs b/lightning/src/ln/channelmanager.rs
index d52668eef6..632d897043 100644
--- a/lightning/src/ln/channelmanager.rs+++ b/lightning/src/ln/channelmanager.rs@@ -4685,5 +4685,4 @@ where
///
-	/// After initial signatures have been exchanged, if we contributed any inputs,-	/// [`Event::FundingTransactionReadyForSigning`] will be generated and-	/// [`ChannelManager::funding_transaction_signed`] should be called.+	/// After initial signatures have been exchanged, [`Event::FundingTransactionReadyForSigning`]+	/// will be generated and [`ChannelManager::funding_transaction_signed`] should be called.
///

@TheBlueMatt
TheBlueMatt merged commit ef789f4 into lightningdevkit:0.2Oct 31, 2025
25 checks passed
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@TheBlueMatt@ldk-reviews-bot@wpaulino@valentinewallace@tankyleo
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

0.2-rc1 backports - #4193

Merged
TheBlueMatt merged 15 commits into
lightningdevkit:0.2from
TheBlueMatt:2025-10-0.2-backports-2
Oct 31, 2025
Merged

0.2-rc1 backports#4193
TheBlueMatt merged 15 commits into
lightningdevkit:0.2from
TheBlueMatt:2025-10-0.2-backports-2

Conversation

@TheBlueMatt

Copy link
Copy Markdown
Collaborator

Backport of #4189, #4186, #4192, #4191, #4187, and #4163 for 0.2.

TheBlueMattand others added 10 commits October 30, 2025 18:26
This reverts commit 561da4c.
A user pointed out, when looking to upgrade to LDK 0.2, that the
`lazy` flag is actually quite important for performance when using
a `MonitorUpdatingPersister`, especially in synchronous persistence
mode.
Thus, we add it back here.
Fixeslightningdevkit#4188
Backport of 3b4c2ff
In the previous commit we reverted
561da4c. One of the motivations
for it (in addition to `lazy` removals being somewhat less, though
still arguably useful in an async context) was that the ordering
requirements of `lazy` removals is somewhat unclear.
Here we simply default to the simplest safe option, requiring a
total order across all `write` and `remove` operations to the same
key, `lazy` or not.
Backport of 0f9548b
While HTTP headers should be a unique K->V mapping, returning three
headers to a user in an event via a `HashMap` is substantially
overkill (and also not trivial to do in bindings). Instead, we
expose them as a `Vec`.
Backport of 031a987
`WebhookNotification` already has all fields `pub`, making its
`new` constructor somewhat redundant, but also conflicting with the
bindings-auto-generated `new` constructor. Thus we just drop it.
Backport of b10a4e8
If we're already passing `AChannelManagerRef` and `ChainMonitorRef`
to `can_support_additional_anchor_channel` there's no need to take
them by reference.
Backport of e4512d1
If we fail to load a `ChannelMonitor` due to the new limits in LDK
0.2, its useful to communicate which monitor failed, which we do
here.
Requested at
lightningdevkit#4146 (comment)
Backport of a4f4663
`crates.io` will show any README/README.md which apears in the
crate which is uploaded, but it doesn't consider the README from
the workspace, only if its in the crate itself.
Instead, add the `readme` field so that the workspace README also
gets uploaded.
Backport of 1605291
@TheBlueMattTheBlueMatt added this to the 0.2 milestone Oct 30, 2025
@ldk-reviews-bot

ldk-reviews-bot commented Oct 30, 2025

Copy link
Copy Markdown

I've assigned @wpaulino as a reviewer!
I'll wait for their review and will help manage the review process.
Once they submit their review, I'll check if a second reviewer would be helpful.

@TheBlueMatt

Copy link
Copy Markdown
CollaboratorAuthor

Also backported #4195 to fix clippy.

@TheBlueMattTheBlueMatt mentioned this pull request Oct 30, 2025
@codecov

codecovBot commented Oct 30, 2025

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 72.16495% with 27 lines in your changes missing coverage. Please review.
✅ Project coverage is 88.86%. Comparing base (1b4d8e4) to head (a107ca2).
⚠️ Report is 16 commits behind head on 0.2.

Files with missing linesPatch %Lines
lightning-persister/src/fs_store.rs52.38%5 Missing and 5 partials ⚠️
lightning/src/util/persist.rs55.00%7 Missing and 2 partials ⚠️
lightning-background-processor/src/lib.rs0.00%2 Missing ⚠️
lightning/src/util/anchor_channel_reserves.rs0.00%2 Missing ⚠️
lightning/src/util/test_utils.rs60.00%2 Missing ⚠️
lightning-liquidity/src/lsps2/service.rs0.00%1 Missing ⚠️
lightning-liquidity/src/lsps5/service.rs75.00%1 Missing ⚠️
Additional details and impacted files
@@ Coverage Diff @@## 0.2 #4193 +/- ##
==========================================
- Coverage 88.86% 88.86% -0.01% 
==========================================
Files 180 180 Lines 137770 137802 +32 Branches 137770 137802 +32 ==========================================
+ Hits 122433 122455 +22 - Misses 12530 12537 +7 - Partials 2807 2810 +3 
FlagCoverage Δ
fuzzing21.45% <0.00%> (+0.58%)⬆️
tests88.70% <72.16%> (-0.01%)⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@ldk-reviews-bot

Copy link
Copy Markdown

👋 The first review has been submitted!

Do you think this PR is ready for a second reviewer? If so, click here to assign a second reviewer.

Comment threadCHANGELOG.md Outdated
@TheBlueMatt
TheBlueMattforce-pushed the 2025-10-0.2-backports-2 branch from aa9a347 to fb6da9eCompareOctober 30, 2025 21:05
@TheBlueMatt

TheBlueMatt commented Oct 30, 2025

Copy link
Copy Markdown
CollaboratorAuthor

Updated #4163 and the backported copy of it. That needs to land first anyway:

$ git diff-tree -U1 aa9a347531 fb6da9e545
diff --git a/CHANGELOG.md b/CHANGELOG.md
index b4839d6423..513a026f62 100644
--- a/CHANGELOG.md+++ b/CHANGELOG.md@@ -92,2 +92,4 @@
`KVStore` to restore custom logic for specific storage objects (#3905).
+ * `BlindedMessagePath::new_with_dummy_hops` was added (but is not used by+ default, #3726). You can use `NodeIdMessageRouter` to enable dummy hops.
* `ProbabilisticScoringFeeParameters::probing_diversity_penalty` was added to
@@ -150,4 +152,2 @@
marginally when forwarding gossip to a slow peer (#4093, #4096).
- * `BlindedMessagePath::new_with_dummy_hops` was added (but is not used by- default, #3726).
* Blinded path serialization is now padded to better hide its contents (#3177).

`ChannelManager::splice_channel` initiates a splice which
ultimately generates a series of events. The most important of
which, `FundingTransactionReadyForSigning` (which must always be
handled, unlike the others), was not documented.
Here we mention the event generation.
Backport of 00e06a0
Users implementing the "onion message mailbox" feature and handling
`OnionMessageIntercepted` events need to also handle
`Event::OnionMessagePeerConnected` events.
Here we update the event docs for both to add additional references
and be more explicit about what implementors need to do.
Backport of 683d03c
`clippy` now complains that `Default` for the interactive tx
constructor `StateMachine` can be auto-derived, but its a bit weird
to have a `Default` that loads an invalid ("indeterminate") state.
Instead, we replace the one line that actually cares about the
`Default` (which uses `core::mem::take`) with `core::mem::replace`,
making it more explict.
Backport of a8b990a
`clippy` now complains about more instances of useless `vec!`s, so
we drop them here.
Backport of 3c1159c
@TheBlueMatt
TheBlueMattforce-pushed the 2025-10-0.2-backports-2 branch from fb6da9e to a107ca2CompareOctober 30, 2025 22:09
@TheBlueMatt

Copy link
Copy Markdown
CollaboratorAuthor

Updated backports of #4163.

$ git diff-tree -U1 fb6da9e545 a107ca264d
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 513a026f62..0480191933 100644
--- a/CHANGELOG.md+++ b/CHANGELOG.md@@ -33,3 +33,3 @@
LDK-based LSPs wishing to support often-offline senders and recipients should
- set `UserConfig::enable_htlc_hold`, support the existing "onion mesage+ set `UserConfig::enable_htlc_hold`, support the existing "onion message
mailbox" feature (setting `intercept_messages_for_offline_peers` on
@@ -39,3 +39,3 @@
force-closure risk for feerate disagreements by using a fixed, zero fee on
- presigned transactions, relying on anchor bumps instead. They also utilize+ pre-signed transactions, relying on anchor bumps instead. They also utilize
the new TRUC + ephemeral dust policy in Bitcoin Core 29 to substantially
@@ -127,3 +127,3 @@
full available buffer (#3640).
- * structs in `lightning-liquidity` were renamed to be globally unique (#3583).+ * Structs in `lightning-liquidity` were renamed to be globally unique (#3583).
* Renamed `SpendableOutputDescriptor::outpoint` to `spendable_outpoint` (#3634)
@@ -147,3 +147,3 @@
fixed (#4168).
- * The fields in `SocketAddress::OnionV3` are now corectly parsed, and the+ * The fields in `SocketAddress::OnionV3` are now correctly parsed, and the
`Display` for such addresses is now lowercase (#4090).
@@ -170,5 +170,5 @@
* Blinded message paths generated by previous versions of LDK, except those
- generated for inclusion in `Bolt12Offer`s will no longer be accepted. As most- blinded message paths are ephemeral, this should only invalidate issued- `Refund`s in practice (#3917).+ generated for inclusion in BOLT 12 `Offer`s will no longer be accepted. As+ most blinded message paths are ephemeral, this should only invalidate issued+ BOLT 12 `Refund`s in practice (#3917).
* Once a channel has been spliced, LDK can no longer be downgraded.
diff --git a/lightning/src/ln/channelmanager.rs b/lightning/src/ln/channelmanager.rs
index d52668eef6..632d897043 100644
--- a/lightning/src/ln/channelmanager.rs+++ b/lightning/src/ln/channelmanager.rs@@ -4685,5 +4685,4 @@ where
///
-	/// After initial signatures have been exchanged, if we contributed any inputs,-	/// [`Event::FundingTransactionReadyForSigning`] will be generated and-	/// [`ChannelManager::funding_transaction_signed`] should be called.+	/// After initial signatures have been exchanged, [`Event::FundingTransactionReadyForSigning`]+	/// will be generated and [`ChannelManager::funding_transaction_signed`] should be called.
///

@TheBlueMatt
TheBlueMatt merged commit ef789f4 into lightningdevkit:0.2Oct 31, 2025
25 checks passed
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@TheBlueMatt@ldk-reviews-bot@wpaulino@valentinewallace@tankyleo