You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This PR adds automatic one-time recovery for users affected by stale channel monitors caused by the RN migration overwrite bug (#462, #495).
On BuildError.ReadFailed, the app automatically retries the LDK node build once with accept_stale_channel_monitors enabled. A persisted staleMonitorRecoveryAttempted UserDefaults flag ensures this only happens once — the flag is set on any successful build, so unaffected users see zero impact.
This is a clean cherry-pick of the recovery logic from #500 onto release-2.1.1, without the unrelated pubky work that was in the original branch.
On BuildError.ReadFailed (likely stale ChannelMonitor from migration
overwrite), automatically retry once with accept_stale_channel_monitors
enabled. The ldk-node recovery flag force-syncs the monitor's update_id
and heals commitment state via a delayed chain sync + keysend round-trip.
A persisted UserDefaults flag ensures this only triggers once — set on
any successful build (affected or not), preventing future retries.
Depends on: synonymdev/ldk-node#76
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The reason will be displayed to describe this comment to others. Learn more.
Missing dependency: setAcceptStaleChannelMonitors not in pinned ldk-node revision
This call references builder.setAcceptStaleChannelMonitors(accept: true), but the method does not exist in the currently pinned synonymdev/ldk-node revision (c5698d0, set in Bitkit.xcodeproj). As a result, this branch will not compile until the project.pbxproj is updated to a commit that includes synonymdev/ldk-node#76 (which the PR description already calls out as a requirement).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
This PR adds automatic one-time recovery for users affected by stale channel monitors caused by the RN migration overwrite bug (#462, #495).
On
BuildError.ReadFailed, the app automatically retries the LDK node build once withaccept_stale_channel_monitorsenabled. A persistedstaleMonitorRecoveryAttemptedUserDefaults flag ensures this only happens once — the flag is set on any successful build, so unaffected users see zero impact.This is a clean cherry-pick of the recovery logic from #500 onto
release-2.1.1, without the unrelated pubky work that was in the original branch.Linked Issues/Tasks
Screenshot / Video
N/A - backend logic change
QA Notes
🤖 Generated with Claude Code