Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
8eee66d
fix: wait for on-chain broadcast results
ovitrif Sep 2, 2026
92486e5
fix: classify broadcast backend results
ovitrif Sep 2, 2026
6a7960c
fix: prioritize safety-critical broadcasts
ovitrif Sep 2, 2026
fb11f04
chore: refresh broadcast result artifacts
ovitrif Sep 2, 2026
b5df4e4
fix: refresh x86 JVM native library
ovitrif Sep 2, 2026
236969f
test: cover wire-level electrum rejection
ovitrif Sep 2, 2026
13a46a6
chore: refresh exact-head Swift artifact
ovitrif Sep 2, 2026
5b7f04d
docs: place broadcast fixes in current changelog
ovitrif Sep 2, 2026
c294415
fix: make explicit broadcast retries safe
ovitrif Sep 2, 2026
1a94f74
fix: persist unresolved broadcast intents
ovitrif Sep 2, 2026
b3fbf3e
fix: require backend evidence before reconciliation
ovitrif Sep 2, 2026
89a099e
fix: bound broadcast intent reconciliation
ovitrif Sep 2, 2026
7c2e204
fix: close unresolved broadcast lifecycles
ovitrif Sep 2, 2026
80a369b
fix: reconcile ordinary RBF predecessors
ovitrif Sep 2, 2026
4287b93
fix: persist canonical RBF payment state
ovitrif Sep 2, 2026
ea37b32
fix: retain accepted RBF ancestry
ovitrif Sep 2, 2026
252d67b
Make broadcast lineage recovery crash-safe
ovitrif Sep 2, 2026
d87532a
Persist canonical payment before lineage cleanup
ovitrif Sep 2, 2026
24b61f4
Require durable wallet confirmation before cleanup
ovitrif Sep 2, 2026
e75e88e
Regenerate UniFFI bindings
ovitrif Sep 2, 2026
431c6f9
Update eviction test for eager send indexing
ovitrif Sep 2, 2026
0c59f3f
Make transaction abandonment timestamp safe
ovitrif Sep 2, 2026
550b991
Refresh bindings after abandonment fix
ovitrif Sep 2, 2026
bf6e674
Merge remote-tracking branch 'origin/main' into codex/112-onchain-bro…
ovitrif Sep 2, 2026
e752f06
fix: address on-chain broadcast review
ovitrif Sep 2, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 15 additions & 1 deletion CHANGELOG.md
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,21 @@
# 0.7.0-rc.66 (Synonym Fork)
# 0.7.0-rc.67 (Synonym Fork)

## Bug Fixes

- `list_pending_broadcasts` now returns each unresolved spend's complete RBF lineage so callers can
independently reconcile every replacement before `abandon_pending_broadcast`.
- Explicit on-chain sends now return a transaction ID only after the configured backend accepts
the transaction. Transaction-keyed rejected, not-dispatched, acceptance-unknown failure, and
acceptance-unknown timeout outcomes are distinct. Uncertain signed transactions remain reserved
in a durable intent store for enumeration, exact-byte rebroadcast, sync reconciliation, and
recovery after restart. Callers can explicitly abandon an externally reconciled intent, and RBF
replacements use the same result-bearing, durable lifecycle while exposing only the canonical
transaction in payment history.
- `NodeError` is now a fielded mobile error type so broadcast failures can expose their transaction
ID. Swift error cases no longer contain the legacy generated `message` associated value, and
fieldless Kotlin exceptions have an empty generated `message`; callers should match the error
variant and use its typed fields.
- Electrum transaction rejections are now logged as failures instead of successful broadcasts.
- Prevent native SIGABRT crashes when stopping and rebuilding the node by making runtime teardown deterministic.
- Keep exported payment and liquidity handles from calling into a shutting-down runtime, refuse restart while detached work is still live, and stop Electrum confirm gating from blocking or panicking shutdown.
- Add keep consumer rules for JNA types UniFFI needs under R8.
Expand Down
2 changes: 1 addition & 1 deletion Cargo.toml
Original file line numberDiff line numberDiff line change
Expand Up@@ -4,7 +4,7 @@ exclude = ["bindings/uniffi-bindgen"]

[package]
name = "ldk-node"
version = "0.7.0-rc.66"
version = "0.7.0-rc.67"
authors = ["Elias Rohrer <dev@tnull.de>"]
homepage = "https://lightningdevkit.org/"
license = "MIT OR Apache-2.0"
Expand Down
4 changes: 2 additions & 2 deletions Package.swift
Original file line numberDiff line numberDiff line change
Expand Up@@ -3,8 +3,8 @@

import PackageDescription

let tag = "v0.7.0-rc.66"
let checksum = "21ac13bfdc9fdd3099a688bd0053f8b14c74b5957943b2f09624886e65556a8e"
let tag = "v0.7.0-rc.67"
let checksum = "d6ccac3a6a013fbb5313d49faf4d3373b14053ede91923e9a1cd4f3230c6848c"
let url = "https://github.com/synonymdev/ldk-node/releases/download/\(tag)/LDKNodeFFI.xcframework.zip"

let package = Package(
Expand Down
2 changes: 1 addition & 1 deletion bindings/kotlin/ldk-node-android/gradle.properties
Original file line numberDiff line numberDiff line change
Expand Up@@ -3,4 +3,4 @@ android.useAndroidX=true
android.enableJetifier=true
kotlin.code.style=official
group=com.synonym
version=0.7.0-rc.66
version=0.7.0-rc.67
Binary file not shown.
Binary file not shown.
Binary file not shown.

Large diffs are not rendered by default.

Loading
, '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
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
8eee66d
fix: wait for on-chain broadcast results
ovitrif Sep 2, 2026
92486e5
fix: classify broadcast backend results
ovitrif Sep 2, 2026
6a7960c
fix: prioritize safety-critical broadcasts
ovitrif Sep 2, 2026
fb11f04
chore: refresh broadcast result artifacts
ovitrif Sep 2, 2026
b5df4e4
fix: refresh x86 JVM native library
ovitrif Sep 2, 2026
236969f
test: cover wire-level electrum rejection
ovitrif Sep 2, 2026
13a46a6
chore: refresh exact-head Swift artifact
ovitrif Sep 2, 2026
5b7f04d
docs: place broadcast fixes in current changelog
ovitrif Sep 2, 2026
c294415
fix: make explicit broadcast retries safe
ovitrif Sep 2, 2026
1a94f74
fix: persist unresolved broadcast intents
ovitrif Sep 2, 2026
b3fbf3e
fix: require backend evidence before reconciliation
ovitrif Sep 2, 2026
89a099e
fix: bound broadcast intent reconciliation
ovitrif Sep 2, 2026
7c2e204
fix: close unresolved broadcast lifecycles
ovitrif Sep 2, 2026
80a369b
fix: reconcile ordinary RBF predecessors
ovitrif Sep 2, 2026
4287b93
fix: persist canonical RBF payment state
ovitrif Sep 2, 2026
ea37b32
fix: retain accepted RBF ancestry
ovitrif Sep 2, 2026
252d67b
Make broadcast lineage recovery crash-safe
ovitrif Sep 2, 2026
d87532a
Persist canonical payment before lineage cleanup
ovitrif Sep 2, 2026
24b61f4
Require durable wallet confirmation before cleanup
ovitrif Sep 2, 2026
e75e88e
Regenerate UniFFI bindings
ovitrif Sep 2, 2026
431c6f9
Update eviction test for eager send indexing
ovitrif Sep 2, 2026
0c59f3f
Make transaction abandonment timestamp safe
ovitrif Sep 2, 2026
550b991
Refresh bindings after abandonment fix
ovitrif Sep 2, 2026
bf6e674
Merge remote-tracking branch 'origin/main' into codex/112-onchain-bro…
ovitrif Sep 2, 2026
e752f06
fix: address on-chain broadcast review
ovitrif Sep 2, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 15 additions & 1 deletion CHANGELOG.md
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,21 @@
# 0.7.0-rc.66 (Synonym Fork)
# 0.7.0-rc.67 (Synonym Fork)

## Bug Fixes

- `list_pending_broadcasts` now returns each unresolved spend's complete RBF lineage so callers can
independently reconcile every replacement before `abandon_pending_broadcast`.
- Explicit on-chain sends now return a transaction ID only after the configured backend accepts
the transaction. Transaction-keyed rejected, not-dispatched, acceptance-unknown failure, and
acceptance-unknown timeout outcomes are distinct. Uncertain signed transactions remain reserved
in a durable intent store for enumeration, exact-byte rebroadcast, sync reconciliation, and
recovery after restart. Callers can explicitly abandon an externally reconciled intent, and RBF
replacements use the same result-bearing, durable lifecycle while exposing only the canonical
transaction in payment history.
- `NodeError` is now a fielded mobile error type so broadcast failures can expose their transaction
ID. Swift error cases no longer contain the legacy generated `message` associated value, and
fieldless Kotlin exceptions have an empty generated `message`; callers should match the error
variant and use its typed fields.
- Electrum transaction rejections are now logged as failures instead of successful broadcasts.
- Prevent native SIGABRT crashes when stopping and rebuilding the node by making runtime teardown deterministic.
- Keep exported payment and liquidity handles from calling into a shutting-down runtime, refuse restart while detached work is still live, and stop Electrum confirm gating from blocking or panicking shutdown.
- Add keep consumer rules for JNA types UniFFI needs under R8.
Expand Down
2 changes: 1 addition & 1 deletion Cargo.toml
Original file line numberDiff line numberDiff line change
Expand Up@@ -4,7 +4,7 @@ exclude = ["bindings/uniffi-bindgen"]

[package]
name = "ldk-node"
version = "0.7.0-rc.66"
version = "0.7.0-rc.67"
authors = ["Elias Rohrer <dev@tnull.de>"]
homepage = "https://lightningdevkit.org/"
license = "MIT OR Apache-2.0"
Expand Down
4 changes: 2 additions & 2 deletions Package.swift
Original file line numberDiff line numberDiff line change
Expand Up@@ -3,8 +3,8 @@

import PackageDescription

let tag = "v0.7.0-rc.66"
let checksum = "21ac13bfdc9fdd3099a688bd0053f8b14c74b5957943b2f09624886e65556a8e"
let tag = "v0.7.0-rc.67"
let checksum = "d6ccac3a6a013fbb5313d49faf4d3373b14053ede91923e9a1cd4f3230c6848c"
let url = "https://github.com/synonymdev/ldk-node/releases/download/\(tag)/LDKNodeFFI.xcframework.zip"

let package = Package(
Expand Down
2 changes: 1 addition & 1 deletion bindings/kotlin/ldk-node-android/gradle.properties
Original file line numberDiff line numberDiff line change
Expand Up@@ -3,4 +3,4 @@ android.useAndroidX=true
android.enableJetifier=true
kotlin.code.style=official
group=com.synonym
version=0.7.0-rc.66
version=0.7.0-rc.67
Binary file not shown.
Binary file not shown.
Binary file not shown.

Large diffs are not rendered by default.

Loading
, '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
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
8eee66d
fix: wait for on-chain broadcast results
ovitrif Sep 2, 2026
92486e5
fix: classify broadcast backend results
ovitrif Sep 2, 2026
6a7960c
fix: prioritize safety-critical broadcasts
ovitrif Sep 2, 2026
fb11f04
chore: refresh broadcast result artifacts
ovitrif Sep 2, 2026
b5df4e4
fix: refresh x86 JVM native library
ovitrif Sep 2, 2026
236969f
test: cover wire-level electrum rejection
ovitrif Sep 2, 2026
13a46a6
chore: refresh exact-head Swift artifact
ovitrif Sep 2, 2026
5b7f04d
docs: place broadcast fixes in current changelog
ovitrif Sep 2, 2026
c294415
fix: make explicit broadcast retries safe
ovitrif Sep 2, 2026
1a94f74
fix: persist unresolved broadcast intents
ovitrif Sep 2, 2026
b3fbf3e
fix: require backend evidence before reconciliation
ovitrif Sep 2, 2026
89a099e
fix: bound broadcast intent reconciliation
ovitrif Sep 2, 2026
7c2e204
fix: close unresolved broadcast lifecycles
ovitrif Sep 2, 2026
80a369b
fix: reconcile ordinary RBF predecessors
ovitrif Sep 2, 2026
4287b93
fix: persist canonical RBF payment state
ovitrif Sep 2, 2026
ea37b32
fix: retain accepted RBF ancestry
ovitrif Sep 2, 2026
252d67b
Make broadcast lineage recovery crash-safe
ovitrif Sep 2, 2026
d87532a
Persist canonical payment before lineage cleanup
ovitrif Sep 2, 2026
24b61f4
Require durable wallet confirmation before cleanup
ovitrif Sep 2, 2026
e75e88e
Regenerate UniFFI bindings
ovitrif Sep 2, 2026
431c6f9
Update eviction test for eager send indexing
ovitrif Sep 2, 2026
0c59f3f
Make transaction abandonment timestamp safe
ovitrif Sep 2, 2026
550b991
Refresh bindings after abandonment fix
ovitrif Sep 2, 2026
bf6e674
Merge remote-tracking branch 'origin/main' into codex/112-onchain-bro…
ovitrif Sep 2, 2026
e752f06
fix: address on-chain broadcast review
ovitrif Sep 2, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 15 additions & 1 deletion CHANGELOG.md
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,21 @@
# 0.7.0-rc.66 (Synonym Fork)
# 0.7.0-rc.67 (Synonym Fork)

## Bug Fixes

- `list_pending_broadcasts` now returns each unresolved spend's complete RBF lineage so callers can
independently reconcile every replacement before `abandon_pending_broadcast`.
- Explicit on-chain sends now return a transaction ID only after the configured backend accepts
the transaction. Transaction-keyed rejected, not-dispatched, acceptance-unknown failure, and
acceptance-unknown timeout outcomes are distinct. Uncertain signed transactions remain reserved
in a durable intent store for enumeration, exact-byte rebroadcast, sync reconciliation, and
recovery after restart. Callers can explicitly abandon an externally reconciled intent, and RBF
replacements use the same result-bearing, durable lifecycle while exposing only the canonical
transaction in payment history.
- `NodeError` is now a fielded mobile error type so broadcast failures can expose their transaction
ID. Swift error cases no longer contain the legacy generated `message` associated value, and
fieldless Kotlin exceptions have an empty generated `message`; callers should match the error
variant and use its typed fields.
- Electrum transaction rejections are now logged as failures instead of successful broadcasts.
- Prevent native SIGABRT crashes when stopping and rebuilding the node by making runtime teardown deterministic.
- Keep exported payment and liquidity handles from calling into a shutting-down runtime, refuse restart while detached work is still live, and stop Electrum confirm gating from blocking or panicking shutdown.
- Add keep consumer rules for JNA types UniFFI needs under R8.
Expand Down
2 changes: 1 addition & 1 deletion Cargo.toml
Original file line numberDiff line numberDiff line change
Expand Up@@ -4,7 +4,7 @@ exclude = ["bindings/uniffi-bindgen"]

[package]
name = "ldk-node"
version = "0.7.0-rc.66"
version = "0.7.0-rc.67"
authors = ["Elias Rohrer <dev@tnull.de>"]
homepage = "https://lightningdevkit.org/"
license = "MIT OR Apache-2.0"
Expand Down
4 changes: 2 additions & 2 deletions Package.swift
Original file line numberDiff line numberDiff line change
Expand Up@@ -3,8 +3,8 @@

import PackageDescription

let tag = "v0.7.0-rc.66"
let checksum = "21ac13bfdc9fdd3099a688bd0053f8b14c74b5957943b2f09624886e65556a8e"
let tag = "v0.7.0-rc.67"
let checksum = "d6ccac3a6a013fbb5313d49faf4d3373b14053ede91923e9a1cd4f3230c6848c"
let url = "https://github.com/synonymdev/ldk-node/releases/download/\(tag)/LDKNodeFFI.xcframework.zip"

let package = Package(
Expand Down
2 changes: 1 addition & 1 deletion bindings/kotlin/ldk-node-android/gradle.properties
Original file line numberDiff line numberDiff line change
Expand Up@@ -3,4 +3,4 @@ android.useAndroidX=true
android.enableJetifier=true
kotlin.code.style=official
group=com.synonym
version=0.7.0-rc.66
version=0.7.0-rc.67
Binary file not shown.
Binary file not shown.
Binary file not shown.

Large diffs are not rendered by default.

Loading
, '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
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
8eee66d
fix: wait for on-chain broadcast results
ovitrif Sep 2, 2026
92486e5
fix: classify broadcast backend results
ovitrif Sep 2, 2026
6a7960c
fix: prioritize safety-critical broadcasts
ovitrif Sep 2, 2026
fb11f04
chore: refresh broadcast result artifacts
ovitrif Sep 2, 2026
b5df4e4
fix: refresh x86 JVM native library
ovitrif Sep 2, 2026
236969f
test: cover wire-level electrum rejection
ovitrif Sep 2, 2026
13a46a6
chore: refresh exact-head Swift artifact
ovitrif Sep 2, 2026
5b7f04d
docs: place broadcast fixes in current changelog
ovitrif Sep 2, 2026
c294415
fix: make explicit broadcast retries safe
ovitrif Sep 2, 2026
1a94f74
fix: persist unresolved broadcast intents
ovitrif Sep 2, 2026
b3fbf3e
fix: require backend evidence before reconciliation
ovitrif Sep 2, 2026
89a099e
fix: bound broadcast intent reconciliation
ovitrif Sep 2, 2026
7c2e204
fix: close unresolved broadcast lifecycles
ovitrif Sep 2, 2026
80a369b
fix: reconcile ordinary RBF predecessors
ovitrif Sep 2, 2026
4287b93
fix: persist canonical RBF payment state
ovitrif Sep 2, 2026
ea37b32
fix: retain accepted RBF ancestry
ovitrif Sep 2, 2026
252d67b
Make broadcast lineage recovery crash-safe
ovitrif Sep 2, 2026
d87532a
Persist canonical payment before lineage cleanup
ovitrif Sep 2, 2026
24b61f4
Require durable wallet confirmation before cleanup
ovitrif Sep 2, 2026
e75e88e
Regenerate UniFFI bindings
ovitrif Sep 2, 2026
431c6f9
Update eviction test for eager send indexing
ovitrif Sep 2, 2026
0c59f3f
Make transaction abandonment timestamp safe
ovitrif Sep 2, 2026
550b991
Refresh bindings after abandonment fix
ovitrif Sep 2, 2026
bf6e674
Merge remote-tracking branch 'origin/main' into codex/112-onchain-bro…
ovitrif Sep 2, 2026
e752f06
fix: address on-chain broadcast review
ovitrif Sep 2, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 15 additions & 1 deletion CHANGELOG.md
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,21 @@
# 0.7.0-rc.66 (Synonym Fork)
# 0.7.0-rc.67 (Synonym Fork)

## Bug Fixes

- `list_pending_broadcasts` now returns each unresolved spend's complete RBF lineage so callers can
independently reconcile every replacement before `abandon_pending_broadcast`.
- Explicit on-chain sends now return a transaction ID only after the configured backend accepts
the transaction. Transaction-keyed rejected, not-dispatched, acceptance-unknown failure, and
acceptance-unknown timeout outcomes are distinct. Uncertain signed transactions remain reserved
in a durable intent store for enumeration, exact-byte rebroadcast, sync reconciliation, and
recovery after restart. Callers can explicitly abandon an externally reconciled intent, and RBF
replacements use the same result-bearing, durable lifecycle while exposing only the canonical
transaction in payment history.
- `NodeError` is now a fielded mobile error type so broadcast failures can expose their transaction
ID. Swift error cases no longer contain the legacy generated `message` associated value, and
fieldless Kotlin exceptions have an empty generated `message`; callers should match the error
variant and use its typed fields.
- Electrum transaction rejections are now logged as failures instead of successful broadcasts.
- Prevent native SIGABRT crashes when stopping and rebuilding the node by making runtime teardown deterministic.
- Keep exported payment and liquidity handles from calling into a shutting-down runtime, refuse restart while detached work is still live, and stop Electrum confirm gating from blocking or panicking shutdown.
- Add keep consumer rules for JNA types UniFFI needs under R8.
Expand Down
2 changes: 1 addition & 1 deletion Cargo.toml
Original file line numberDiff line numberDiff line change
Expand Up@@ -4,7 +4,7 @@ exclude = ["bindings/uniffi-bindgen"]

[package]
name = "ldk-node"
version = "0.7.0-rc.66"
version = "0.7.0-rc.67"
authors = ["Elias Rohrer <dev@tnull.de>"]
homepage = "https://lightningdevkit.org/"
license = "MIT OR Apache-2.0"
Expand Down
4 changes: 2 additions & 2 deletions Package.swift
Original file line numberDiff line numberDiff line change
Expand Up@@ -3,8 +3,8 @@

import PackageDescription

let tag = "v0.7.0-rc.66"
let checksum = "21ac13bfdc9fdd3099a688bd0053f8b14c74b5957943b2f09624886e65556a8e"
let tag = "v0.7.0-rc.67"
let checksum = "d6ccac3a6a013fbb5313d49faf4d3373b14053ede91923e9a1cd4f3230c6848c"
let url = "https://github.com/synonymdev/ldk-node/releases/download/\(tag)/LDKNodeFFI.xcframework.zip"

let package = Package(
Expand Down
2 changes: 1 addition & 1 deletion bindings/kotlin/ldk-node-android/gradle.properties
Original file line numberDiff line numberDiff line change
Expand Up@@ -3,4 +3,4 @@ android.useAndroidX=true
android.enableJetifier=true
kotlin.code.style=official
group=com.synonym
version=0.7.0-rc.66
version=0.7.0-rc.67
Binary file not shown.
Binary file not shown.
Binary file not shown.

Large diffs are not rendered by default.

Loading
, '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
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
8eee66d
fix: wait for on-chain broadcast results
ovitrif Sep 2, 2026
92486e5
fix: classify broadcast backend results
ovitrif Sep 2, 2026
6a7960c
fix: prioritize safety-critical broadcasts
ovitrif Sep 2, 2026
fb11f04
chore: refresh broadcast result artifacts
ovitrif Sep 2, 2026
b5df4e4
fix: refresh x86 JVM native library
ovitrif Sep 2, 2026
236969f
test: cover wire-level electrum rejection
ovitrif Sep 2, 2026
13a46a6
chore: refresh exact-head Swift artifact
ovitrif Sep 2, 2026
5b7f04d
docs: place broadcast fixes in current changelog
ovitrif Sep 2, 2026
c294415
fix: make explicit broadcast retries safe
ovitrif Sep 2, 2026
1a94f74
fix: persist unresolved broadcast intents
ovitrif Sep 2, 2026
b3fbf3e
fix: require backend evidence before reconciliation
ovitrif Sep 2, 2026
89a099e
fix: bound broadcast intent reconciliation
ovitrif Sep 2, 2026
7c2e204
fix: close unresolved broadcast lifecycles
ovitrif Sep 2, 2026
80a369b
fix: reconcile ordinary RBF predecessors
ovitrif Sep 2, 2026
4287b93
fix: persist canonical RBF payment state
ovitrif Sep 2, 2026
ea37b32
fix: retain accepted RBF ancestry
ovitrif Sep 2, 2026
252d67b
Make broadcast lineage recovery crash-safe
ovitrif Sep 2, 2026
d87532a
Persist canonical payment before lineage cleanup
ovitrif Sep 2, 2026
24b61f4
Require durable wallet confirmation before cleanup
ovitrif Sep 2, 2026
e75e88e
Regenerate UniFFI bindings
ovitrif Sep 2, 2026
431c6f9
Update eviction test for eager send indexing
ovitrif Sep 2, 2026
0c59f3f
Make transaction abandonment timestamp safe
ovitrif Sep 2, 2026
550b991
Refresh bindings after abandonment fix
ovitrif Sep 2, 2026
bf6e674
Merge remote-tracking branch 'origin/main' into codex/112-onchain-bro…
ovitrif Sep 2, 2026
e752f06
fix: address on-chain broadcast review
ovitrif Sep 2, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 15 additions & 1 deletion CHANGELOG.md
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,21 @@
# 0.7.0-rc.66 (Synonym Fork)
# 0.7.0-rc.67 (Synonym Fork)

## Bug Fixes

- `list_pending_broadcasts` now returns each unresolved spend's complete RBF lineage so callers can
independently reconcile every replacement before `abandon_pending_broadcast`.
- Explicit on-chain sends now return a transaction ID only after the configured backend accepts
the transaction. Transaction-keyed rejected, not-dispatched, acceptance-unknown failure, and
acceptance-unknown timeout outcomes are distinct. Uncertain signed transactions remain reserved
in a durable intent store for enumeration, exact-byte rebroadcast, sync reconciliation, and
recovery after restart. Callers can explicitly abandon an externally reconciled intent, and RBF
replacements use the same result-bearing, durable lifecycle while exposing only the canonical
transaction in payment history.
- `NodeError` is now a fielded mobile error type so broadcast failures can expose their transaction
ID. Swift error cases no longer contain the legacy generated `message` associated value, and
fieldless Kotlin exceptions have an empty generated `message`; callers should match the error
variant and use its typed fields.
- Electrum transaction rejections are now logged as failures instead of successful broadcasts.
- Prevent native SIGABRT crashes when stopping and rebuilding the node by making runtime teardown deterministic.
- Keep exported payment and liquidity handles from calling into a shutting-down runtime, refuse restart while detached work is still live, and stop Electrum confirm gating from blocking or panicking shutdown.
- Add keep consumer rules for JNA types UniFFI needs under R8.
Expand Down
2 changes: 1 addition & 1 deletion Cargo.toml
Original file line numberDiff line numberDiff line change
Expand Up@@ -4,7 +4,7 @@ exclude = ["bindings/uniffi-bindgen"]

[package]
name = "ldk-node"
version = "0.7.0-rc.66"
version = "0.7.0-rc.67"
authors = ["Elias Rohrer <dev@tnull.de>"]
homepage = "https://lightningdevkit.org/"
license = "MIT OR Apache-2.0"
Expand Down
4 changes: 2 additions & 2 deletions Package.swift
Original file line numberDiff line numberDiff line change
Expand Up@@ -3,8 +3,8 @@

import PackageDescription

let tag = "v0.7.0-rc.66"
let checksum = "21ac13bfdc9fdd3099a688bd0053f8b14c74b5957943b2f09624886e65556a8e"
let tag = "v0.7.0-rc.67"
let checksum = "d6ccac3a6a013fbb5313d49faf4d3373b14053ede91923e9a1cd4f3230c6848c"
let url = "https://github.com/synonymdev/ldk-node/releases/download/\(tag)/LDKNodeFFI.xcframework.zip"

let package = Package(
Expand Down
2 changes: 1 addition & 1 deletion bindings/kotlin/ldk-node-android/gradle.properties
Original file line numberDiff line numberDiff line change
Expand Up@@ -3,4 +3,4 @@ android.useAndroidX=true
android.enableJetifier=true
kotlin.code.style=official
group=com.synonym
version=0.7.0-rc.66
version=0.7.0-rc.67
Binary file not shown.
Binary file not shown.
Binary file not shown.

Large diffs are not rendered by default.

Loading
, '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
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
8eee66d
fix: wait for on-chain broadcast results
ovitrif Sep 2, 2026
92486e5
fix: classify broadcast backend results
ovitrif Sep 2, 2026
6a7960c
fix: prioritize safety-critical broadcasts
ovitrif Sep 2, 2026
fb11f04
chore: refresh broadcast result artifacts
ovitrif Sep 2, 2026
b5df4e4
fix: refresh x86 JVM native library
ovitrif Sep 2, 2026
236969f
test: cover wire-level electrum rejection
ovitrif Sep 2, 2026
13a46a6
chore: refresh exact-head Swift artifact
ovitrif Sep 2, 2026
5b7f04d
docs: place broadcast fixes in current changelog
ovitrif Sep 2, 2026
c294415
fix: make explicit broadcast retries safe
ovitrif Sep 2, 2026
1a94f74
fix: persist unresolved broadcast intents
ovitrif Sep 2, 2026
b3fbf3e
fix: require backend evidence before reconciliation
ovitrif Sep 2, 2026
89a099e
fix: bound broadcast intent reconciliation
ovitrif Sep 2, 2026
7c2e204
fix: close unresolved broadcast lifecycles
ovitrif Sep 2, 2026
80a369b
fix: reconcile ordinary RBF predecessors
ovitrif Sep 2, 2026
4287b93
fix: persist canonical RBF payment state
ovitrif Sep 2, 2026
ea37b32
fix: retain accepted RBF ancestry
ovitrif Sep 2, 2026
252d67b
Make broadcast lineage recovery crash-safe
ovitrif Sep 2, 2026
d87532a
Persist canonical payment before lineage cleanup
ovitrif Sep 2, 2026
24b61f4
Require durable wallet confirmation before cleanup
ovitrif Sep 2, 2026
e75e88e
Regenerate UniFFI bindings
ovitrif Sep 2, 2026
431c6f9
Update eviction test for eager send indexing
ovitrif Sep 2, 2026
0c59f3f
Make transaction abandonment timestamp safe
ovitrif Sep 2, 2026
550b991
Refresh bindings after abandonment fix
ovitrif Sep 2, 2026
bf6e674
Merge remote-tracking branch 'origin/main' into codex/112-onchain-bro…
ovitrif Sep 2, 2026
e752f06
fix: address on-chain broadcast review
ovitrif Sep 2, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 15 additions & 1 deletion CHANGELOG.md
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,21 @@
# 0.7.0-rc.66 (Synonym Fork)
# 0.7.0-rc.67 (Synonym Fork)

## Bug Fixes

- `list_pending_broadcasts` now returns each unresolved spend's complete RBF lineage so callers can
independently reconcile every replacement before `abandon_pending_broadcast`.
- Explicit on-chain sends now return a transaction ID only after the configured backend accepts
the transaction. Transaction-keyed rejected, not-dispatched, acceptance-unknown failure, and
acceptance-unknown timeout outcomes are distinct. Uncertain signed transactions remain reserved
in a durable intent store for enumeration, exact-byte rebroadcast, sync reconciliation, and
recovery after restart. Callers can explicitly abandon an externally reconciled intent, and RBF
replacements use the same result-bearing, durable lifecycle while exposing only the canonical
transaction in payment history.
- `NodeError` is now a fielded mobile error type so broadcast failures can expose their transaction
ID. Swift error cases no longer contain the legacy generated `message` associated value, and
fieldless Kotlin exceptions have an empty generated `message`; callers should match the error
variant and use its typed fields.
- Electrum transaction rejections are now logged as failures instead of successful broadcasts.
- Prevent native SIGABRT crashes when stopping and rebuilding the node by making runtime teardown deterministic.
- Keep exported payment and liquidity handles from calling into a shutting-down runtime, refuse restart while detached work is still live, and stop Electrum confirm gating from blocking or panicking shutdown.
- Add keep consumer rules for JNA types UniFFI needs under R8.
Expand Down
2 changes: 1 addition & 1 deletion Cargo.toml
Original file line numberDiff line numberDiff line change
Expand Up@@ -4,7 +4,7 @@ exclude = ["bindings/uniffi-bindgen"]

[package]
name = "ldk-node"
version = "0.7.0-rc.66"
version = "0.7.0-rc.67"
authors = ["Elias Rohrer <dev@tnull.de>"]
homepage = "https://lightningdevkit.org/"
license = "MIT OR Apache-2.0"
Expand Down
4 changes: 2 additions & 2 deletions Package.swift
Original file line numberDiff line numberDiff line change
Expand Up@@ -3,8 +3,8 @@

import PackageDescription

let tag = "v0.7.0-rc.66"
let checksum = "21ac13bfdc9fdd3099a688bd0053f8b14c74b5957943b2f09624886e65556a8e"
let tag = "v0.7.0-rc.67"
let checksum = "d6ccac3a6a013fbb5313d49faf4d3373b14053ede91923e9a1cd4f3230c6848c"
let url = "https://github.com/synonymdev/ldk-node/releases/download/\(tag)/LDKNodeFFI.xcframework.zip"

let package = Package(
Expand Down
2 changes: 1 addition & 1 deletion bindings/kotlin/ldk-node-android/gradle.properties
Original file line numberDiff line numberDiff line change
Expand Up@@ -3,4 +3,4 @@ android.useAndroidX=true
android.enableJetifier=true
kotlin.code.style=official
group=com.synonym
version=0.7.0-rc.66
version=0.7.0-rc.67
Binary file not shown.
Binary file not shown.
Binary file not shown.

Large diffs are not rendered by default.

Loading
, '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
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
8eee66d
fix: wait for on-chain broadcast results
ovitrif Sep 2, 2026
92486e5
fix: classify broadcast backend results
ovitrif Sep 2, 2026
6a7960c
fix: prioritize safety-critical broadcasts
ovitrif Sep 2, 2026
fb11f04
chore: refresh broadcast result artifacts
ovitrif Sep 2, 2026
b5df4e4
fix: refresh x86 JVM native library
ovitrif Sep 2, 2026
236969f
test: cover wire-level electrum rejection
ovitrif Sep 2, 2026
13a46a6
chore: refresh exact-head Swift artifact
ovitrif Sep 2, 2026
5b7f04d
docs: place broadcast fixes in current changelog
ovitrif Sep 2, 2026
c294415
fix: make explicit broadcast retries safe
ovitrif Sep 2, 2026
1a94f74
fix: persist unresolved broadcast intents
ovitrif Sep 2, 2026
b3fbf3e
fix: require backend evidence before reconciliation
ovitrif Sep 2, 2026
89a099e
fix: bound broadcast intent reconciliation
ovitrif Sep 2, 2026
7c2e204
fix: close unresolved broadcast lifecycles
ovitrif Sep 2, 2026
80a369b
fix: reconcile ordinary RBF predecessors
ovitrif Sep 2, 2026
4287b93
fix: persist canonical RBF payment state
ovitrif Sep 2, 2026
ea37b32
fix: retain accepted RBF ancestry
ovitrif Sep 2, 2026
252d67b
Make broadcast lineage recovery crash-safe
ovitrif Sep 2, 2026
d87532a
Persist canonical payment before lineage cleanup
ovitrif Sep 2, 2026
24b61f4
Require durable wallet confirmation before cleanup
ovitrif Sep 2, 2026
e75e88e
Regenerate UniFFI bindings
ovitrif Sep 2, 2026
431c6f9
Update eviction test for eager send indexing
ovitrif Sep 2, 2026
0c59f3f
Make transaction abandonment timestamp safe
ovitrif Sep 2, 2026
550b991
Refresh bindings after abandonment fix
ovitrif Sep 2, 2026
bf6e674
Merge remote-tracking branch 'origin/main' into codex/112-onchain-bro…
ovitrif Sep 2, 2026
e752f06
fix: address on-chain broadcast review
ovitrif Sep 2, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 15 additions & 1 deletion CHANGELOG.md
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,21 @@
# 0.7.0-rc.66 (Synonym Fork)
# 0.7.0-rc.67 (Synonym Fork)

## Bug Fixes

- `list_pending_broadcasts` now returns each unresolved spend's complete RBF lineage so callers can
independently reconcile every replacement before `abandon_pending_broadcast`.
- Explicit on-chain sends now return a transaction ID only after the configured backend accepts
the transaction. Transaction-keyed rejected, not-dispatched, acceptance-unknown failure, and
acceptance-unknown timeout outcomes are distinct. Uncertain signed transactions remain reserved
in a durable intent store for enumeration, exact-byte rebroadcast, sync reconciliation, and
recovery after restart. Callers can explicitly abandon an externally reconciled intent, and RBF
replacements use the same result-bearing, durable lifecycle while exposing only the canonical
transaction in payment history.
- `NodeError` is now a fielded mobile error type so broadcast failures can expose their transaction
ID. Swift error cases no longer contain the legacy generated `message` associated value, and
fieldless Kotlin exceptions have an empty generated `message`; callers should match the error
variant and use its typed fields.
- Electrum transaction rejections are now logged as failures instead of successful broadcasts.
- Prevent native SIGABRT crashes when stopping and rebuilding the node by making runtime teardown deterministic.
- Keep exported payment and liquidity handles from calling into a shutting-down runtime, refuse restart while detached work is still live, and stop Electrum confirm gating from blocking or panicking shutdown.
- Add keep consumer rules for JNA types UniFFI needs under R8.
Expand Down
2 changes: 1 addition & 1 deletion Cargo.toml
Original file line numberDiff line numberDiff line change
Expand Up@@ -4,7 +4,7 @@ exclude = ["bindings/uniffi-bindgen"]

[package]
name = "ldk-node"
version = "0.7.0-rc.66"
version = "0.7.0-rc.67"
authors = ["Elias Rohrer <dev@tnull.de>"]
homepage = "https://lightningdevkit.org/"
license = "MIT OR Apache-2.0"
Expand Down
4 changes: 2 additions & 2 deletions Package.swift
Original file line numberDiff line numberDiff line change
Expand Up@@ -3,8 +3,8 @@

import PackageDescription

let tag = "v0.7.0-rc.66"
let checksum = "21ac13bfdc9fdd3099a688bd0053f8b14c74b5957943b2f09624886e65556a8e"
let tag = "v0.7.0-rc.67"
let checksum = "d6ccac3a6a013fbb5313d49faf4d3373b14053ede91923e9a1cd4f3230c6848c"
let url = "https://github.com/synonymdev/ldk-node/releases/download/\(tag)/LDKNodeFFI.xcframework.zip"

let package = Package(
Expand Down
2 changes: 1 addition & 1 deletion bindings/kotlin/ldk-node-android/gradle.properties
Original file line numberDiff line numberDiff line change
Expand Up@@ -3,4 +3,4 @@ android.useAndroidX=true
android.enableJetifier=true
kotlin.code.style=official
group=com.synonym
version=0.7.0-rc.66
version=0.7.0-rc.67
Binary file not shown.
Binary file not shown.
Binary file not shown.

Large diffs are not rendered by default.

Loading
, '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
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
8eee66d
fix: wait for on-chain broadcast results
ovitrif Sep 2, 2026
92486e5
fix: classify broadcast backend results
ovitrif Sep 2, 2026
6a7960c
fix: prioritize safety-critical broadcasts
ovitrif Sep 2, 2026
fb11f04
chore: refresh broadcast result artifacts
ovitrif Sep 2, 2026
b5df4e4
fix: refresh x86 JVM native library
ovitrif Sep 2, 2026
236969f
test: cover wire-level electrum rejection
ovitrif Sep 2, 2026
13a46a6
chore: refresh exact-head Swift artifact
ovitrif Sep 2, 2026
5b7f04d
docs: place broadcast fixes in current changelog
ovitrif Sep 2, 2026
c294415
fix: make explicit broadcast retries safe
ovitrif Sep 2, 2026
1a94f74
fix: persist unresolved broadcast intents
ovitrif Sep 2, 2026
b3fbf3e
fix: require backend evidence before reconciliation
ovitrif Sep 2, 2026
89a099e
fix: bound broadcast intent reconciliation
ovitrif Sep 2, 2026
7c2e204
fix: close unresolved broadcast lifecycles
ovitrif Sep 2, 2026
80a369b
fix: reconcile ordinary RBF predecessors
ovitrif Sep 2, 2026
4287b93
fix: persist canonical RBF payment state
ovitrif Sep 2, 2026
ea37b32
fix: retain accepted RBF ancestry
ovitrif Sep 2, 2026
252d67b
Make broadcast lineage recovery crash-safe
ovitrif Sep 2, 2026
d87532a
Persist canonical payment before lineage cleanup
ovitrif Sep 2, 2026
24b61f4
Require durable wallet confirmation before cleanup
ovitrif Sep 2, 2026
e75e88e
Regenerate UniFFI bindings
ovitrif Sep 2, 2026
431c6f9
Update eviction test for eager send indexing
ovitrif Sep 2, 2026
0c59f3f
Make transaction abandonment timestamp safe
ovitrif Sep 2, 2026
550b991
Refresh bindings after abandonment fix
ovitrif Sep 2, 2026
bf6e674
Merge remote-tracking branch 'origin/main' into codex/112-onchain-bro…
ovitrif Sep 2, 2026
e752f06
fix: address on-chain broadcast review
ovitrif Sep 2, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 15 additions & 1 deletion CHANGELOG.md
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,21 @@
# 0.7.0-rc.66 (Synonym Fork)
# 0.7.0-rc.67 (Synonym Fork)

## Bug Fixes

- `list_pending_broadcasts` now returns each unresolved spend's complete RBF lineage so callers can
independently reconcile every replacement before `abandon_pending_broadcast`.
- Explicit on-chain sends now return a transaction ID only after the configured backend accepts
the transaction. Transaction-keyed rejected, not-dispatched, acceptance-unknown failure, and
acceptance-unknown timeout outcomes are distinct. Uncertain signed transactions remain reserved
in a durable intent store for enumeration, exact-byte rebroadcast, sync reconciliation, and
recovery after restart. Callers can explicitly abandon an externally reconciled intent, and RBF
replacements use the same result-bearing, durable lifecycle while exposing only the canonical
transaction in payment history.
- `NodeError` is now a fielded mobile error type so broadcast failures can expose their transaction
ID. Swift error cases no longer contain the legacy generated `message` associated value, and
fieldless Kotlin exceptions have an empty generated `message`; callers should match the error
variant and use its typed fields.
- Electrum transaction rejections are now logged as failures instead of successful broadcasts.
- Prevent native SIGABRT crashes when stopping and rebuilding the node by making runtime teardown deterministic.
- Keep exported payment and liquidity handles from calling into a shutting-down runtime, refuse restart while detached work is still live, and stop Electrum confirm gating from blocking or panicking shutdown.
- Add keep consumer rules for JNA types UniFFI needs under R8.
Expand Down
2 changes: 1 addition & 1 deletion Cargo.toml
Original file line numberDiff line numberDiff line change
Expand Up@@ -4,7 +4,7 @@ exclude = ["bindings/uniffi-bindgen"]

[package]
name = "ldk-node"
version = "0.7.0-rc.66"
version = "0.7.0-rc.67"
authors = ["Elias Rohrer <dev@tnull.de>"]
homepage = "https://lightningdevkit.org/"
license = "MIT OR Apache-2.0"
Expand Down
4 changes: 2 additions & 2 deletions Package.swift
Original file line numberDiff line numberDiff line change
Expand Up@@ -3,8 +3,8 @@

import PackageDescription

let tag = "v0.7.0-rc.66"
let checksum = "21ac13bfdc9fdd3099a688bd0053f8b14c74b5957943b2f09624886e65556a8e"
let tag = "v0.7.0-rc.67"
let checksum = "d6ccac3a6a013fbb5313d49faf4d3373b14053ede91923e9a1cd4f3230c6848c"
let url = "https://github.com/synonymdev/ldk-node/releases/download/\(tag)/LDKNodeFFI.xcframework.zip"

let package = Package(
Expand Down
2 changes: 1 addition & 1 deletion bindings/kotlin/ldk-node-android/gradle.properties
Original file line numberDiff line numberDiff line change
Expand Up@@ -3,4 +3,4 @@ android.useAndroidX=true
android.enableJetifier=true
kotlin.code.style=official
group=com.synonym
version=0.7.0-rc.66
version=0.7.0-rc.67
Binary file not shown.
Binary file not shown.
Binary file not shown.

Large diffs are not rendered by default.

Loading