Skip to content

HRN resolution refinement and architectural clean-up - #887

Merged
tnull merged 5 commits into
lightningdevkit:mainfrom
chuksys:add-support-for-hrn-resolution-follow-up
Apr 27, 2026
Merged

HRN resolution refinement and architectural clean-up#887
tnull merged 5 commits into
lightningdevkit:mainfrom
chuksys:add-support-for-hrn-resolution-follow-up

Conversation

@chuksys

@chuksyschuksys commented Apr 22, 2026

Copy link
Copy Markdown
Contributor

Description

This is a follow-up to #630 to clean up the initial HRN resolution implementation. It focuses on improving initialization flow, reducing memory indirection, and fixing minor documentation bugs.

Changes

  • Initialization: Replaced the peer_manager_hook (Mutex/Option) with a deferred Weak pointer registration to resolve circular dependencies safely and efficiently.

  • Performance: Switched to ok_or_else in DNS Resolver setup to ensure error logging/string formatting only occurs on failure.

  • Type Cleanup: Removed redundant Arc wrapping around HRNResolver and implemented Clone for the enum to simplify passing it by value.

  • Docs: Corrected the default value description for resolution_config and realigned the configuration defaults table.

  • Tests: Cleaned up variable naming in the set_test_offer helper.

Fixes#883

Refactors the circular dependency between the HRNResolver and the
PeerManager during the Node initialization process.
Changes:
- Removed the `peer_manager_hook` Mutex/Option pattern used to
bridge the initialization gap.
- Replaced the global initialization hook with a local deferred
registration pattern using `Arc::downgrade` after the PeerManager
is constructed.
- Optimized `post_queue_action` by utilizing a Weak pointer upgrade
instead of locking a Mutex on every call.
This change improves performance for HRN resolution events and
simplifies the builder logic by making the circular dependency
resolution explicit and local to the builder function.
@ldk-reviews-bot

ldk-reviews-bot commented Apr 22, 2026

Copy link
Copy Markdown

I've assigned @tnull 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.

Streamlines the storage and passing of HRNResolver by holding it by
value in the Node and UnifiedPayment structs.
Changes:
- Removed the outer Arc wrapper around HRNResolver in Node and
UnifiedPayment.
- Implemented Clone for HRNResolver to facilitate easy sharing of
the internal Arcs.
- Updated UnifiedPayment method calls to pass HRNResolver by
reference instead of using .as_ref() on an outer Arc.
Since HRNResolver variants already contain internal Arcs, the outer
Arc was redundant and added unnecessary memory indirection.
Optimizes the DNS resolver setup by deferring log execution until an
actual failure occurs.
Changes:
- Replaced `ok_or` with `ok_or_else` when resolving DNS server
addresses.
evaluation and unnecessary string formatting on successful builds.
This ensures that logging overhead and string interpolation are only
incurred during error states, rather than being evaluated on every
successful initialization.
Updates the documentation in config.rs for better accuracy and readability.
Changes:
- Corrected the description of HRN resolution_config from 'Enabled' to 'Disabled' to align with the actual default value of false.
- Realigned the Config defaults table to accommodate longer type names and improve Markdown rendering.
These changes are strictly documentation-focused and do not alter any runtime behavior.
Cleans up the set_test_offer method by removing the underscore from
the offer parameter name.
Changes:
- Renamed `_offer` to `offer` to reflect that the variable is
actively used within the method body.
- Ensures the code adheres to standard Rust naming conventions
for used variables.
This is a minor cleanup of the test-only API used for HRN
integration testing.
@chuksys
chuksysforce-pushed the add-support-for-hrn-resolution-follow-up branch from 7877e09 to e29ae44CompareApril 22, 2026 16:47
@ldk-reviews-bot

Copy link
Copy Markdown

🔔 1st Reminder

Hey @tnull! This PR has been waiting for your review.
Please take a look when you have a chance. If you're unable to review, please let us know so we can find another reviewer.

@ldk-reviews-bot

Copy link
Copy Markdown

🔔 2nd Reminder

Hey @tnull! This PR has been waiting for your review.
Please take a look when you have a chance. If you're unable to review, please let us know so we can find another reviewer.

@tnulltnull left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, LGTM!

@tnull
tnull merged commit 297ae84 into lightningdevkit:mainApr 27, 2026
21 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.

HRN Resolution Follow-ups

3 participants

@chuksys@ldk-reviews-bot@tnull
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
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;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
HRN resolution refinement and architectural clean-up by chuksys · Pull Request #887 · lightningdevkit/ldk-node · GitHub
Skip to content

HRN resolution refinement and architectural clean-up - #887

Merged
tnull merged 5 commits into
lightningdevkit:mainfrom
chuksys:add-support-for-hrn-resolution-follow-up
Apr 27, 2026
Merged

HRN resolution refinement and architectural clean-up#887
tnull merged 5 commits into
lightningdevkit:mainfrom
chuksys:add-support-for-hrn-resolution-follow-up

Conversation

@chuksys

@chuksyschuksys commented Apr 22, 2026

Copy link
Copy Markdown
Contributor

Description

This is a follow-up to #630 to clean up the initial HRN resolution implementation. It focuses on improving initialization flow, reducing memory indirection, and fixing minor documentation bugs.

Changes

  • Initialization: Replaced the peer_manager_hook (Mutex/Option) with a deferred Weak pointer registration to resolve circular dependencies safely and efficiently.

  • Performance: Switched to ok_or_else in DNS Resolver setup to ensure error logging/string formatting only occurs on failure.

  • Type Cleanup: Removed redundant Arc wrapping around HRNResolver and implemented Clone for the enum to simplify passing it by value.

  • Docs: Corrected the default value description for resolution_config and realigned the configuration defaults table.

  • Tests: Cleaned up variable naming in the set_test_offer helper.

Fixes#883

Refactors the circular dependency between the HRNResolver and the
PeerManager during the Node initialization process.
Changes:
- Removed the `peer_manager_hook` Mutex/Option pattern used to
bridge the initialization gap.
- Replaced the global initialization hook with a local deferred
registration pattern using `Arc::downgrade` after the PeerManager
is constructed.
- Optimized `post_queue_action` by utilizing a Weak pointer upgrade
instead of locking a Mutex on every call.
This change improves performance for HRN resolution events and
simplifies the builder logic by making the circular dependency
resolution explicit and local to the builder function.
@ldk-reviews-bot

ldk-reviews-bot commented Apr 22, 2026

Copy link
Copy Markdown

I've assigned @tnull 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.

Streamlines the storage and passing of HRNResolver by holding it by
value in the Node and UnifiedPayment structs.
Changes:
- Removed the outer Arc wrapper around HRNResolver in Node and
UnifiedPayment.
- Implemented Clone for HRNResolver to facilitate easy sharing of
the internal Arcs.
- Updated UnifiedPayment method calls to pass HRNResolver by
reference instead of using .as_ref() on an outer Arc.
Since HRNResolver variants already contain internal Arcs, the outer
Arc was redundant and added unnecessary memory indirection.
Optimizes the DNS resolver setup by deferring log execution until an
actual failure occurs.
Changes:
- Replaced `ok_or` with `ok_or_else` when resolving DNS server
addresses.
evaluation and unnecessary string formatting on successful builds.
This ensures that logging overhead and string interpolation are only
incurred during error states, rather than being evaluated on every
successful initialization.
Updates the documentation in config.rs for better accuracy and readability.
Changes:
- Corrected the description of HRN resolution_config from 'Enabled' to 'Disabled' to align with the actual default value of false.
- Realigned the Config defaults table to accommodate longer type names and improve Markdown rendering.
These changes are strictly documentation-focused and do not alter any runtime behavior.
Cleans up the set_test_offer method by removing the underscore from
the offer parameter name.
Changes:
- Renamed `_offer` to `offer` to reflect that the variable is
actively used within the method body.
- Ensures the code adheres to standard Rust naming conventions
for used variables.
This is a minor cleanup of the test-only API used for HRN
integration testing.
@chuksys
chuksysforce-pushed the add-support-for-hrn-resolution-follow-up branch from 7877e09 to e29ae44CompareApril 22, 2026 16:47
@ldk-reviews-bot

Copy link
Copy Markdown

🔔 1st Reminder

Hey @tnull! This PR has been waiting for your review.
Please take a look when you have a chance. If you're unable to review, please let us know so we can find another reviewer.

@ldk-reviews-bot

Copy link
Copy Markdown

🔔 2nd Reminder

Hey @tnull! This PR has been waiting for your review.
Please take a look when you have a chance. If you're unable to review, please let us know so we can find another reviewer.

@tnulltnull left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, LGTM!

@tnull
tnull merged commit 297ae84 into lightningdevkit:mainApr 27, 2026
21 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.

HRN Resolution Follow-ups

3 participants

@chuksys@ldk-reviews-bot@tnull
, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' HRN resolution refinement and architectural clean-up by chuksys · Pull Request #887 · lightningdevkit/ldk-node · GitHub
Skip to content

HRN resolution refinement and architectural clean-up - #887

Merged
tnull merged 5 commits into
lightningdevkit:mainfrom
chuksys:add-support-for-hrn-resolution-follow-up
Apr 27, 2026
Merged

HRN resolution refinement and architectural clean-up#887
tnull merged 5 commits into
lightningdevkit:mainfrom
chuksys:add-support-for-hrn-resolution-follow-up

Conversation

@chuksys

@chuksyschuksys commented Apr 22, 2026

Copy link
Copy Markdown
Contributor

Description

This is a follow-up to #630 to clean up the initial HRN resolution implementation. It focuses on improving initialization flow, reducing memory indirection, and fixing minor documentation bugs.

Changes

  • Initialization: Replaced the peer_manager_hook (Mutex/Option) with a deferred Weak pointer registration to resolve circular dependencies safely and efficiently.

  • Performance: Switched to ok_or_else in DNS Resolver setup to ensure error logging/string formatting only occurs on failure.

  • Type Cleanup: Removed redundant Arc wrapping around HRNResolver and implemented Clone for the enum to simplify passing it by value.

  • Docs: Corrected the default value description for resolution_config and realigned the configuration defaults table.

  • Tests: Cleaned up variable naming in the set_test_offer helper.

Fixes#883

Refactors the circular dependency between the HRNResolver and the
PeerManager during the Node initialization process.
Changes:
- Removed the `peer_manager_hook` Mutex/Option pattern used to
bridge the initialization gap.
- Replaced the global initialization hook with a local deferred
registration pattern using `Arc::downgrade` after the PeerManager
is constructed.
- Optimized `post_queue_action` by utilizing a Weak pointer upgrade
instead of locking a Mutex on every call.
This change improves performance for HRN resolution events and
simplifies the builder logic by making the circular dependency
resolution explicit and local to the builder function.
@ldk-reviews-bot

ldk-reviews-bot commented Apr 22, 2026

Copy link
Copy Markdown

I've assigned @tnull 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.

Streamlines the storage and passing of HRNResolver by holding it by
value in the Node and UnifiedPayment structs.
Changes:
- Removed the outer Arc wrapper around HRNResolver in Node and
UnifiedPayment.
- Implemented Clone for HRNResolver to facilitate easy sharing of
the internal Arcs.
- Updated UnifiedPayment method calls to pass HRNResolver by
reference instead of using .as_ref() on an outer Arc.
Since HRNResolver variants already contain internal Arcs, the outer
Arc was redundant and added unnecessary memory indirection.
Optimizes the DNS resolver setup by deferring log execution until an
actual failure occurs.
Changes:
- Replaced `ok_or` with `ok_or_else` when resolving DNS server
addresses.
evaluation and unnecessary string formatting on successful builds.
This ensures that logging overhead and string interpolation are only
incurred during error states, rather than being evaluated on every
successful initialization.
Updates the documentation in config.rs for better accuracy and readability.
Changes:
- Corrected the description of HRN resolution_config from 'Enabled' to 'Disabled' to align with the actual default value of false.
- Realigned the Config defaults table to accommodate longer type names and improve Markdown rendering.
These changes are strictly documentation-focused and do not alter any runtime behavior.
Cleans up the set_test_offer method by removing the underscore from
the offer parameter name.
Changes:
- Renamed `_offer` to `offer` to reflect that the variable is
actively used within the method body.
- Ensures the code adheres to standard Rust naming conventions
for used variables.
This is a minor cleanup of the test-only API used for HRN
integration testing.
@chuksys
chuksysforce-pushed the add-support-for-hrn-resolution-follow-up branch from 7877e09 to e29ae44CompareApril 22, 2026 16:47
@ldk-reviews-bot

Copy link
Copy Markdown

🔔 1st Reminder

Hey @tnull! This PR has been waiting for your review.
Please take a look when you have a chance. If you're unable to review, please let us know so we can find another reviewer.

@ldk-reviews-bot

Copy link
Copy Markdown

🔔 2nd Reminder

Hey @tnull! This PR has been waiting for your review.
Please take a look when you have a chance. If you're unable to review, please let us know so we can find another reviewer.

@tnulltnull left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, LGTM!

@tnull
tnull merged commit 297ae84 into lightningdevkit:mainApr 27, 2026
21 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.

HRN Resolution Follow-ups

3 participants

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

HRN resolution refinement and architectural clean-up - #887

Merged
tnull merged 5 commits into
lightningdevkit:mainfrom
chuksys:add-support-for-hrn-resolution-follow-up
Apr 27, 2026
Merged

HRN resolution refinement and architectural clean-up#887
tnull merged 5 commits into
lightningdevkit:mainfrom
chuksys:add-support-for-hrn-resolution-follow-up

Conversation

@chuksys

@chuksyschuksys commented Apr 22, 2026

Copy link
Copy Markdown
Contributor

Description

This is a follow-up to #630 to clean up the initial HRN resolution implementation. It focuses on improving initialization flow, reducing memory indirection, and fixing minor documentation bugs.

Changes

  • Initialization: Replaced the peer_manager_hook (Mutex/Option) with a deferred Weak pointer registration to resolve circular dependencies safely and efficiently.

  • Performance: Switched to ok_or_else in DNS Resolver setup to ensure error logging/string formatting only occurs on failure.

  • Type Cleanup: Removed redundant Arc wrapping around HRNResolver and implemented Clone for the enum to simplify passing it by value.

  • Docs: Corrected the default value description for resolution_config and realigned the configuration defaults table.

  • Tests: Cleaned up variable naming in the set_test_offer helper.

Fixes#883

Refactors the circular dependency between the HRNResolver and the
PeerManager during the Node initialization process.
Changes:
- Removed the `peer_manager_hook` Mutex/Option pattern used to
bridge the initialization gap.
- Replaced the global initialization hook with a local deferred
registration pattern using `Arc::downgrade` after the PeerManager
is constructed.
- Optimized `post_queue_action` by utilizing a Weak pointer upgrade
instead of locking a Mutex on every call.
This change improves performance for HRN resolution events and
simplifies the builder logic by making the circular dependency
resolution explicit and local to the builder function.
@ldk-reviews-bot

ldk-reviews-bot commented Apr 22, 2026

Copy link
Copy Markdown

I've assigned @tnull 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.

Streamlines the storage and passing of HRNResolver by holding it by
value in the Node and UnifiedPayment structs.
Changes:
- Removed the outer Arc wrapper around HRNResolver in Node and
UnifiedPayment.
- Implemented Clone for HRNResolver to facilitate easy sharing of
the internal Arcs.
- Updated UnifiedPayment method calls to pass HRNResolver by
reference instead of using .as_ref() on an outer Arc.
Since HRNResolver variants already contain internal Arcs, the outer
Arc was redundant and added unnecessary memory indirection.
Optimizes the DNS resolver setup by deferring log execution until an
actual failure occurs.
Changes:
- Replaced `ok_or` with `ok_or_else` when resolving DNS server
addresses.
evaluation and unnecessary string formatting on successful builds.
This ensures that logging overhead and string interpolation are only
incurred during error states, rather than being evaluated on every
successful initialization.
Updates the documentation in config.rs for better accuracy and readability.
Changes:
- Corrected the description of HRN resolution_config from 'Enabled' to 'Disabled' to align with the actual default value of false.
- Realigned the Config defaults table to accommodate longer type names and improve Markdown rendering.
These changes are strictly documentation-focused and do not alter any runtime behavior.
Cleans up the set_test_offer method by removing the underscore from
the offer parameter name.
Changes:
- Renamed `_offer` to `offer` to reflect that the variable is
actively used within the method body.
- Ensures the code adheres to standard Rust naming conventions
for used variables.
This is a minor cleanup of the test-only API used for HRN
integration testing.
@chuksys
chuksysforce-pushed the add-support-for-hrn-resolution-follow-up branch from 7877e09 to e29ae44CompareApril 22, 2026 16:47
@ldk-reviews-bot

Copy link
Copy Markdown

🔔 1st Reminder

Hey @tnull! This PR has been waiting for your review.
Please take a look when you have a chance. If you're unable to review, please let us know so we can find another reviewer.

@ldk-reviews-bot

Copy link
Copy Markdown

🔔 2nd Reminder

Hey @tnull! This PR has been waiting for your review.
Please take a look when you have a chance. If you're unable to review, please let us know so we can find another reviewer.

@tnulltnull left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, LGTM!

@tnull
tnull merged commit 297ae84 into lightningdevkit:mainApr 27, 2026
21 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.

HRN Resolution Follow-ups

3 participants

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

HRN resolution refinement and architectural clean-up - #887

Merged
tnull merged 5 commits into
lightningdevkit:mainfrom
chuksys:add-support-for-hrn-resolution-follow-up
Apr 27, 2026
Merged

HRN resolution refinement and architectural clean-up#887
tnull merged 5 commits into
lightningdevkit:mainfrom
chuksys:add-support-for-hrn-resolution-follow-up

Conversation

@chuksys

@chuksyschuksys commented Apr 22, 2026

Copy link
Copy Markdown
Contributor

Description

This is a follow-up to #630 to clean up the initial HRN resolution implementation. It focuses on improving initialization flow, reducing memory indirection, and fixing minor documentation bugs.

Changes

  • Initialization: Replaced the peer_manager_hook (Mutex/Option) with a deferred Weak pointer registration to resolve circular dependencies safely and efficiently.

  • Performance: Switched to ok_or_else in DNS Resolver setup to ensure error logging/string formatting only occurs on failure.

  • Type Cleanup: Removed redundant Arc wrapping around HRNResolver and implemented Clone for the enum to simplify passing it by value.

  • Docs: Corrected the default value description for resolution_config and realigned the configuration defaults table.

  • Tests: Cleaned up variable naming in the set_test_offer helper.

Fixes#883

Refactors the circular dependency between the HRNResolver and the
PeerManager during the Node initialization process.
Changes:
- Removed the `peer_manager_hook` Mutex/Option pattern used to
bridge the initialization gap.
- Replaced the global initialization hook with a local deferred
registration pattern using `Arc::downgrade` after the PeerManager
is constructed.
- Optimized `post_queue_action` by utilizing a Weak pointer upgrade
instead of locking a Mutex on every call.
This change improves performance for HRN resolution events and
simplifies the builder logic by making the circular dependency
resolution explicit and local to the builder function.
@ldk-reviews-bot

ldk-reviews-bot commented Apr 22, 2026

Copy link
Copy Markdown

I've assigned @tnull 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.

Streamlines the storage and passing of HRNResolver by holding it by
value in the Node and UnifiedPayment structs.
Changes:
- Removed the outer Arc wrapper around HRNResolver in Node and
UnifiedPayment.
- Implemented Clone for HRNResolver to facilitate easy sharing of
the internal Arcs.
- Updated UnifiedPayment method calls to pass HRNResolver by
reference instead of using .as_ref() on an outer Arc.
Since HRNResolver variants already contain internal Arcs, the outer
Arc was redundant and added unnecessary memory indirection.
Optimizes the DNS resolver setup by deferring log execution until an
actual failure occurs.
Changes:
- Replaced `ok_or` with `ok_or_else` when resolving DNS server
addresses.
evaluation and unnecessary string formatting on successful builds.
This ensures that logging overhead and string interpolation are only
incurred during error states, rather than being evaluated on every
successful initialization.
Updates the documentation in config.rs for better accuracy and readability.
Changes:
- Corrected the description of HRN resolution_config from 'Enabled' to 'Disabled' to align with the actual default value of false.
- Realigned the Config defaults table to accommodate longer type names and improve Markdown rendering.
These changes are strictly documentation-focused and do not alter any runtime behavior.
Cleans up the set_test_offer method by removing the underscore from
the offer parameter name.
Changes:
- Renamed `_offer` to `offer` to reflect that the variable is
actively used within the method body.
- Ensures the code adheres to standard Rust naming conventions
for used variables.
This is a minor cleanup of the test-only API used for HRN
integration testing.
@chuksys
chuksysforce-pushed the add-support-for-hrn-resolution-follow-up branch from 7877e09 to e29ae44CompareApril 22, 2026 16:47
@ldk-reviews-bot

Copy link
Copy Markdown

🔔 1st Reminder

Hey @tnull! This PR has been waiting for your review.
Please take a look when you have a chance. If you're unable to review, please let us know so we can find another reviewer.

@ldk-reviews-bot

Copy link
Copy Markdown

🔔 2nd Reminder

Hey @tnull! This PR has been waiting for your review.
Please take a look when you have a chance. If you're unable to review, please let us know so we can find another reviewer.

@tnulltnull left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, LGTM!

@tnull
tnull merged commit 297ae84 into lightningdevkit:mainApr 27, 2026
21 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.

HRN Resolution Follow-ups

3 participants

@chuksys@ldk-reviews-bot@tnull
, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' HRN resolution refinement and architectural clean-up by chuksys · Pull Request #887 · lightningdevkit/ldk-node · GitHub
Skip to content

HRN resolution refinement and architectural clean-up - #887

Merged
tnull merged 5 commits into
lightningdevkit:mainfrom
chuksys:add-support-for-hrn-resolution-follow-up
Apr 27, 2026
Merged

HRN resolution refinement and architectural clean-up#887
tnull merged 5 commits into
lightningdevkit:mainfrom
chuksys:add-support-for-hrn-resolution-follow-up

Conversation

@chuksys

@chuksyschuksys commented Apr 22, 2026

Copy link
Copy Markdown
Contributor

Description

This is a follow-up to #630 to clean up the initial HRN resolution implementation. It focuses on improving initialization flow, reducing memory indirection, and fixing minor documentation bugs.

Changes

  • Initialization: Replaced the peer_manager_hook (Mutex/Option) with a deferred Weak pointer registration to resolve circular dependencies safely and efficiently.

  • Performance: Switched to ok_or_else in DNS Resolver setup to ensure error logging/string formatting only occurs on failure.

  • Type Cleanup: Removed redundant Arc wrapping around HRNResolver and implemented Clone for the enum to simplify passing it by value.

  • Docs: Corrected the default value description for resolution_config and realigned the configuration defaults table.

  • Tests: Cleaned up variable naming in the set_test_offer helper.

Fixes#883

Refactors the circular dependency between the HRNResolver and the
PeerManager during the Node initialization process.
Changes:
- Removed the `peer_manager_hook` Mutex/Option pattern used to
bridge the initialization gap.
- Replaced the global initialization hook with a local deferred
registration pattern using `Arc::downgrade` after the PeerManager
is constructed.
- Optimized `post_queue_action` by utilizing a Weak pointer upgrade
instead of locking a Mutex on every call.
This change improves performance for HRN resolution events and
simplifies the builder logic by making the circular dependency
resolution explicit and local to the builder function.
@ldk-reviews-bot

ldk-reviews-bot commented Apr 22, 2026

Copy link
Copy Markdown

I've assigned @tnull 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.

Streamlines the storage and passing of HRNResolver by holding it by
value in the Node and UnifiedPayment structs.
Changes:
- Removed the outer Arc wrapper around HRNResolver in Node and
UnifiedPayment.
- Implemented Clone for HRNResolver to facilitate easy sharing of
the internal Arcs.
- Updated UnifiedPayment method calls to pass HRNResolver by
reference instead of using .as_ref() on an outer Arc.
Since HRNResolver variants already contain internal Arcs, the outer
Arc was redundant and added unnecessary memory indirection.
Optimizes the DNS resolver setup by deferring log execution until an
actual failure occurs.
Changes:
- Replaced `ok_or` with `ok_or_else` when resolving DNS server
addresses.
evaluation and unnecessary string formatting on successful builds.
This ensures that logging overhead and string interpolation are only
incurred during error states, rather than being evaluated on every
successful initialization.
Updates the documentation in config.rs for better accuracy and readability.
Changes:
- Corrected the description of HRN resolution_config from 'Enabled' to 'Disabled' to align with the actual default value of false.
- Realigned the Config defaults table to accommodate longer type names and improve Markdown rendering.
These changes are strictly documentation-focused and do not alter any runtime behavior.
Cleans up the set_test_offer method by removing the underscore from
the offer parameter name.
Changes:
- Renamed `_offer` to `offer` to reflect that the variable is
actively used within the method body.
- Ensures the code adheres to standard Rust naming conventions
for used variables.
This is a minor cleanup of the test-only API used for HRN
integration testing.
@chuksys
chuksysforce-pushed the add-support-for-hrn-resolution-follow-up branch from 7877e09 to e29ae44CompareApril 22, 2026 16:47
@ldk-reviews-bot

Copy link
Copy Markdown

🔔 1st Reminder

Hey @tnull! This PR has been waiting for your review.
Please take a look when you have a chance. If you're unable to review, please let us know so we can find another reviewer.

@ldk-reviews-bot

Copy link
Copy Markdown

🔔 2nd Reminder

Hey @tnull! This PR has been waiting for your review.
Please take a look when you have a chance. If you're unable to review, please let us know so we can find another reviewer.

@tnulltnull left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, LGTM!

@tnull
tnull merged commit 297ae84 into lightningdevkit:mainApr 27, 2026
21 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.

HRN Resolution Follow-ups

3 participants

@chuksys@ldk-reviews-bot@tnull
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' HRN resolution refinement and architectural clean-up by chuksys · Pull Request #887 · lightningdevkit/ldk-node · GitHub
Skip to content

HRN resolution refinement and architectural clean-up - #887

Merged
tnull merged 5 commits into
lightningdevkit:mainfrom
chuksys:add-support-for-hrn-resolution-follow-up
Apr 27, 2026
Merged

HRN resolution refinement and architectural clean-up#887
tnull merged 5 commits into
lightningdevkit:mainfrom
chuksys:add-support-for-hrn-resolution-follow-up

Conversation

@chuksys

@chuksyschuksys commented Apr 22, 2026

Copy link
Copy Markdown
Contributor

Description

This is a follow-up to #630 to clean up the initial HRN resolution implementation. It focuses on improving initialization flow, reducing memory indirection, and fixing minor documentation bugs.

Changes

  • Initialization: Replaced the peer_manager_hook (Mutex/Option) with a deferred Weak pointer registration to resolve circular dependencies safely and efficiently.

  • Performance: Switched to ok_or_else in DNS Resolver setup to ensure error logging/string formatting only occurs on failure.

  • Type Cleanup: Removed redundant Arc wrapping around HRNResolver and implemented Clone for the enum to simplify passing it by value.

  • Docs: Corrected the default value description for resolution_config and realigned the configuration defaults table.

  • Tests: Cleaned up variable naming in the set_test_offer helper.

Fixes#883

Refactors the circular dependency between the HRNResolver and the
PeerManager during the Node initialization process.
Changes:
- Removed the `peer_manager_hook` Mutex/Option pattern used to
bridge the initialization gap.
- Replaced the global initialization hook with a local deferred
registration pattern using `Arc::downgrade` after the PeerManager
is constructed.
- Optimized `post_queue_action` by utilizing a Weak pointer upgrade
instead of locking a Mutex on every call.
This change improves performance for HRN resolution events and
simplifies the builder logic by making the circular dependency
resolution explicit and local to the builder function.
@ldk-reviews-bot

ldk-reviews-bot commented Apr 22, 2026

Copy link
Copy Markdown

I've assigned @tnull 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.

Streamlines the storage and passing of HRNResolver by holding it by
value in the Node and UnifiedPayment structs.
Changes:
- Removed the outer Arc wrapper around HRNResolver in Node and
UnifiedPayment.
- Implemented Clone for HRNResolver to facilitate easy sharing of
the internal Arcs.
- Updated UnifiedPayment method calls to pass HRNResolver by
reference instead of using .as_ref() on an outer Arc.
Since HRNResolver variants already contain internal Arcs, the outer
Arc was redundant and added unnecessary memory indirection.
Optimizes the DNS resolver setup by deferring log execution until an
actual failure occurs.
Changes:
- Replaced `ok_or` with `ok_or_else` when resolving DNS server
addresses.
evaluation and unnecessary string formatting on successful builds.
This ensures that logging overhead and string interpolation are only
incurred during error states, rather than being evaluated on every
successful initialization.
Updates the documentation in config.rs for better accuracy and readability.
Changes:
- Corrected the description of HRN resolution_config from 'Enabled' to 'Disabled' to align with the actual default value of false.
- Realigned the Config defaults table to accommodate longer type names and improve Markdown rendering.
These changes are strictly documentation-focused and do not alter any runtime behavior.
Cleans up the set_test_offer method by removing the underscore from
the offer parameter name.
Changes:
- Renamed `_offer` to `offer` to reflect that the variable is
actively used within the method body.
- Ensures the code adheres to standard Rust naming conventions
for used variables.
This is a minor cleanup of the test-only API used for HRN
integration testing.
@chuksys
chuksysforce-pushed the add-support-for-hrn-resolution-follow-up branch from 7877e09 to e29ae44CompareApril 22, 2026 16:47
@ldk-reviews-bot

Copy link
Copy Markdown

🔔 1st Reminder

Hey @tnull! This PR has been waiting for your review.
Please take a look when you have a chance. If you're unable to review, please let us know so we can find another reviewer.

@ldk-reviews-bot

Copy link
Copy Markdown

🔔 2nd Reminder

Hey @tnull! This PR has been waiting for your review.
Please take a look when you have a chance. If you're unable to review, please let us know so we can find another reviewer.

@tnulltnull left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, LGTM!

@tnull
tnull merged commit 297ae84 into lightningdevkit:mainApr 27, 2026
21 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.

HRN Resolution Follow-ups

3 participants

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

HRN resolution refinement and architectural clean-up - #887

Merged
tnull merged 5 commits into
lightningdevkit:mainfrom
chuksys:add-support-for-hrn-resolution-follow-up
Apr 27, 2026
Merged

HRN resolution refinement and architectural clean-up#887
tnull merged 5 commits into
lightningdevkit:mainfrom
chuksys:add-support-for-hrn-resolution-follow-up

Conversation

@chuksys

@chuksyschuksys commented Apr 22, 2026

Copy link
Copy Markdown
Contributor

Description

This is a follow-up to #630 to clean up the initial HRN resolution implementation. It focuses on improving initialization flow, reducing memory indirection, and fixing minor documentation bugs.

Changes

  • Initialization: Replaced the peer_manager_hook (Mutex/Option) with a deferred Weak pointer registration to resolve circular dependencies safely and efficiently.

  • Performance: Switched to ok_or_else in DNS Resolver setup to ensure error logging/string formatting only occurs on failure.

  • Type Cleanup: Removed redundant Arc wrapping around HRNResolver and implemented Clone for the enum to simplify passing it by value.

  • Docs: Corrected the default value description for resolution_config and realigned the configuration defaults table.

  • Tests: Cleaned up variable naming in the set_test_offer helper.

Fixes#883

Refactors the circular dependency between the HRNResolver and the
PeerManager during the Node initialization process.
Changes:
- Removed the `peer_manager_hook` Mutex/Option pattern used to
bridge the initialization gap.
- Replaced the global initialization hook with a local deferred
registration pattern using `Arc::downgrade` after the PeerManager
is constructed.
- Optimized `post_queue_action` by utilizing a Weak pointer upgrade
instead of locking a Mutex on every call.
This change improves performance for HRN resolution events and
simplifies the builder logic by making the circular dependency
resolution explicit and local to the builder function.
@ldk-reviews-bot

ldk-reviews-bot commented Apr 22, 2026

Copy link
Copy Markdown

I've assigned @tnull 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.

Streamlines the storage and passing of HRNResolver by holding it by
value in the Node and UnifiedPayment structs.
Changes:
- Removed the outer Arc wrapper around HRNResolver in Node and
UnifiedPayment.
- Implemented Clone for HRNResolver to facilitate easy sharing of
the internal Arcs.
- Updated UnifiedPayment method calls to pass HRNResolver by
reference instead of using .as_ref() on an outer Arc.
Since HRNResolver variants already contain internal Arcs, the outer
Arc was redundant and added unnecessary memory indirection.
Optimizes the DNS resolver setup by deferring log execution until an
actual failure occurs.
Changes:
- Replaced `ok_or` with `ok_or_else` when resolving DNS server
addresses.
evaluation and unnecessary string formatting on successful builds.
This ensures that logging overhead and string interpolation are only
incurred during error states, rather than being evaluated on every
successful initialization.
Updates the documentation in config.rs for better accuracy and readability.
Changes:
- Corrected the description of HRN resolution_config from 'Enabled' to 'Disabled' to align with the actual default value of false.
- Realigned the Config defaults table to accommodate longer type names and improve Markdown rendering.
These changes are strictly documentation-focused and do not alter any runtime behavior.
Cleans up the set_test_offer method by removing the underscore from
the offer parameter name.
Changes:
- Renamed `_offer` to `offer` to reflect that the variable is
actively used within the method body.
- Ensures the code adheres to standard Rust naming conventions
for used variables.
This is a minor cleanup of the test-only API used for HRN
integration testing.
@chuksys
chuksysforce-pushed the add-support-for-hrn-resolution-follow-up branch from 7877e09 to e29ae44CompareApril 22, 2026 16:47
@ldk-reviews-bot

Copy link
Copy Markdown

🔔 1st Reminder

Hey @tnull! This PR has been waiting for your review.
Please take a look when you have a chance. If you're unable to review, please let us know so we can find another reviewer.

@ldk-reviews-bot

Copy link
Copy Markdown

🔔 2nd Reminder

Hey @tnull! This PR has been waiting for your review.
Please take a look when you have a chance. If you're unable to review, please let us know so we can find another reviewer.

@tnulltnull left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, LGTM!

@tnull
tnull merged commit 297ae84 into lightningdevkit:mainApr 27, 2026
21 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.

HRN Resolution Follow-ups

3 participants

@chuksys@ldk-reviews-bot@tnull