Skip to content

Remove final DashSync dependency tails - #907

Merged
llbartekll merged 5 commits into
swift-sdk-integration-2from
codex/dashsync-final-unlink
Jul 31, 2026
Merged

Remove final DashSync dependency tails#907
llbartekll merged 5 commits into
swift-sdk-integration-2from
codex/dashsync-final-unlink

Conversation

@llbartekll

Copy link
Copy Markdown

Summary

  • unlink DashSync from both app targets, CocoaPods, project configuration, startup and bridging surfaces
  • remove DWEnvironment, legacy wallet registry dual writes/wipe handling and the internal legacy identity registration path
  • migrate the iPhone-side Apple Watch bridge to active SwiftDashSDK wallet snapshots while preserving the existing Watch wire format
  • retain and re-embed the Watch app target
  • update the migration and teardown ledgers

Verification

  • CocoaPods 1.15.2 install succeeded
  • git diff --check passed
  • project and plist lint passed
  • no direct DashSync imports or project/linker/pod references remain
  • dashpay Debug arm64 iOS Simulator build succeeded
  • dashwallet build is blocked before source compilation because this machine does not have the required watchOS 26.5 runtime installed

Unit tests were intentionally not added or run for this unlink pass. Runtime smoke, especially upgrade/multi-wallet/wipe and paired Watch compatibility, is still required before release.

@coderabbitai

coderabbitai Bot commented Jul 30, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 745991ab-6c57-4075-8b98-37bc18cc14bd

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@llbartekll
llbartekll marked this pull request as ready for review July 30, 2026 21:01
@llbartekll
llbartekll requested a review from romchornyi July 30, 2026 21:02

@romchornyi romchornyi left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

There is a blocking risk in the wipe flow: the PIN is removed before wallet deletion completes. If SDK deletion fails, the wallet may remain on the device without its PIN. Additionally, all wallet IDs are deleted through the current network’s manager, which may result in a partial wipe for mainnet/testnet wallets, while the Watch migration causes regular .moved transactions to display a zero amount.

@llbartekll
llbartekll requested a review from romchornyi July 31, 2026 07:45
@llbartekll

Copy link
Copy Markdown
Author

@romchornyi Could you please re-review? I pushed 3f046de addressing all three findings:

  • wallet IDs are classified by mainnet/testnet and deleted through a manager bound to the matching network; success requires an empty SDK mnemonic inventory;
  • PIN and app-owned state are cleared only after every SDK deletion succeeds, and the lock/recovery/backup entry points now wait for the wipe result;
  • Apple Watch .moved payloads use the wallet-owned gross input amount while the phone UI keeps its existing net-change presentation.

dashpay arm64 Simulator build succeeds. dashwallet is still blocked before source compilation because this machine is missing the watchOS 26.5 runtime. Diff/audit/plutil checks are clean. Per the agreed scope, I did not add or run unit tests.

@romchornyi romchornyi left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

The network-specific deletion and Apple Watch amount fixes look good. One blocking issue remains: app-owned state is still cleared before the wipe succeeds. DWRootModel and DWRecoverModel call restoreToDefaults() immediately after enqueueing the wipe, while DWWillWipeWallet immediately triggers CrowdNode.reset() and clears its preferences. If SDK deletion fails, the wallet and PIN remain, but metadata and preferences have already been lost; these mutations should be moved into the successful wipe commit.

@llbartekll
llbartekll requested a review from romchornyi July 31, 2026 08:56
@llbartekll

Copy link
Copy Markdown
Author

@romchornyi Could you please re-review commit cba692a? The remaining wipe blocker is addressed:

  • DWGlobalOptions, DWAppGroupOptions, metadata/Coinbase, and CrowdNode cleanup now run only after all network-specific SDK deletions succeed and the mnemonic inventory is confirmed empty;
  • failed wipes preserve PIN and all global app-owned state for retry;
  • the pre-success cleanup calls and DWWillWipeWallet notification were removed;
  • every wipe entry point now shares the same success commit.

dashpay arm64 Simulator build succeeds; audits and plist/diff checks are clean. dashwallet remains blocked before compilation by the missing watchOS 26.5 runtime. No unit tests were added or run per the agreed scope.

@romchornyi romchornyi left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Looks good

@llbartekll
llbartekll merged commit e8f72c0 into swift-sdk-integration-2 Jul 31, 2026
1 of 2 checks passed
Sign up for free to 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.

2 participants