Conversation
This comment has been minimized.
This comment has been minimized.
919e450 to
8c8e243
Compare
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
|
@claude create a checklist of manual test flows |
This comment has been minimized.
This comment has been minimized.
21fca73 to
dc1ab2a
Compare
This comment was marked as outdated.
This comment was marked as outdated.
Co-authored-by: João Victor Sena <jvsena42@users.noreply.github.com>
|
I didn't know that Claude would automatically commit 😶🌫️ |
This comment was marked as outdated.
This comment was marked as outdated.
d436239 to
8956313
Compare
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
…ase LDK retries (#450) * Fix activity not created on send: create immediately from txid, increase LDK retries * Update CoreService.swift * Update CoreService.swift * Improve address search * Update ldk-node version
* Replace node restart with dynamic address type APIs * fix tests * update ldk-node version
| let selectedAddressType = LDKNode.AddressType.fromStorage(UserDefaults.standard.string(forKey: "selectedAddressType")) | ||
| config.addressType = selectedAddressType | ||
|
|
||
| let monitoredTypesString = UserDefaults.standard.string(forKey: "addressTypesToMonitor") ?? "nativeSegwit" | ||
| let monitoredTypes = LDKNode.AddressType.parseCommaSeparated(monitoredTypesString) | ||
| config.addressTypesToMonitor = monitoredTypes.filter { $0 != selectedAddressType } |
There was a problem hiding this comment.
Can reuse addressTypeStateFromUserDefaults helper to avoid duplication.
| let selectedAddressType = LDKNode.AddressType.fromStorage(UserDefaults.standard.string(forKey: "selectedAddressType")) | |
| config.addressType = selectedAddressType | |
| let monitoredTypesString = UserDefaults.standard.string(forKey: "addressTypesToMonitor") ?? "nativeSegwit" | |
| let monitoredTypes = LDKNode.AddressType.parseCommaSeparated(monitoredTypesString) | |
| config.addressTypesToMonitor = monitoredTypes.filter { $0 != selectedAddressType } | |
| let (selectedAddressType, monitoredTypes) = Self.addressTypeStateFromUserDefaults() | |
| config.addressType = selectedAddressType | |
| config.addressTypesToMonitor = monitoredTypes.filter { $0 != selectedAddressType } |
| /// Short label for compact UI (e.g. "Native"). | ||
| var shortLabel: String { | ||
| switch self { | ||
| case .legacy: return "Legacy" | ||
| case .nestedSegwit: return "Nested" | ||
| case .nativeSegwit: return "Native" | ||
| case .taproot: return "Taproot" | ||
| } | ||
| } |
There was a problem hiding this comment.
Prefer to only use the full name for the different address types. Never heard them being abbreviated like this. Doesn't seem to break the UI in the address viewer as far as I can see.
| } | ||
| } | ||
|
|
||
| if showDevSettings { |
There was a problem hiding this comment.
I assume we don't watch all address types by default for performance reasons? It is a bit problematic because for example on the address viewer all addresses are exposed and the user might send to an address that is not monitored, wondering why they didn't receive anything. Maybe we should monitor all by default, and show this section always with a note to disable address types for faster syncs?
There was a problem hiding this comment.
Or alternatively don't show address types in the address viewer that have not yet been used. But then users may send to unmonitored address in another wallet using same seed that has these addresses exposed.
There was a problem hiding this comment.
I think monitoring all by default will just be unnecessary performance downgrade for most users. Maybe better if you either hide in address viewer the address types which are not monitored, or we don't hide this section in dev mode
| amountViewModel.handleNumberPadInput(key, currency: currency) | ||
| } | ||
|
|
||
| CustomButton(title: t("common__continue"), isDisabled: amountSats == 0) { |
There was a problem hiding this comment.
Not related to this PR but this button should be disabled if amount exceeds available balance.
Simulator.Screen.Recording.-.iPhone.16.-.2026-02-20.at.10.41.25.mp4bitkit_foreground_2026-02-20_12-20-21.log |
Simulator.Screen.Recording.-.iPhone.16.-.2026-02-20.at.10.53.34.mp4 |
This PR adds support for multiple Bitcoin address types in the iOS app, allowing users to select and monitor different address formats. Users can select their preferred address type from: Legacy (P2PKH), Nested SegWit (P2SH-P2WPKH), Native SegWit (P2WPKH), and Taproot (P2TR).
This requires extensive testing across all functionalities, send, receive, channel open, channel close (funds should always go to native segwit address except when selected address when channel opened was Taproot, in which case it should be a Taproot address), cpfp, rbf. All should be checked for each address type, and for multiple address types combined (ie. send with utxos of different address types, open channel with inputs of different address types, boost txs with inputs of different address types, etc.)