diff --git a/Bitkit.xcodeproj/project.pbxproj b/Bitkit.xcodeproj/project.pbxproj index 0133251f0..60702d0aa 100644 --- a/Bitkit.xcodeproj/project.pbxproj +++ b/Bitkit.xcodeproj/project.pbxproj @@ -690,7 +690,7 @@ ASSETCATALOG_COMPILER_WIDGET_BACKGROUND_COLOR_NAME = WidgetBackground; CODE_SIGN_ENTITLEMENTS = BitkitWidgetExtension.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 196; + CURRENT_PROJECT_VERSION = 197; DEVELOPMENT_TEAM = KYH47R284B; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = BitkitWidget/Info.plist; @@ -702,7 +702,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 2.4.1; + MARKETING_VERSION = 2.5.0; PRODUCT_BUNDLE_IDENTIFIER = to.bitkit.widget; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = iphoneos; @@ -723,7 +723,7 @@ ASSETCATALOG_COMPILER_WIDGET_BACKGROUND_COLOR_NAME = WidgetBackground; CODE_SIGN_ENTITLEMENTS = BitkitWidgetExtension.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 196; + CURRENT_PROJECT_VERSION = 197; DEVELOPMENT_TEAM = KYH47R284B; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = BitkitWidget/Info.plist; @@ -735,7 +735,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 2.4.1; + MARKETING_VERSION = 2.5.0; PRODUCT_BUNDLE_IDENTIFIER = to.bitkit.widget; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = iphoneos; @@ -755,7 +755,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = BitkitNotification/BitkitNotification.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 196; + CURRENT_PROJECT_VERSION = 197; DEVELOPMENT_TEAM = KYH47R284B; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = BitkitNotification/Info.plist; @@ -767,7 +767,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 2.4.1; + MARKETING_VERSION = 2.5.0; OTHER_LDFLAGS = ( "-framework", CoreBluetooth, @@ -788,7 +788,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = BitkitNotification/BitkitNotification.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 196; + CURRENT_PROJECT_VERSION = 197; DEVELOPMENT_TEAM = KYH47R284B; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = BitkitNotification/Info.plist; @@ -800,7 +800,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 2.4.1; + MARKETING_VERSION = 2.5.0; OTHER_LDFLAGS = ( "-framework", CoreBluetooth, @@ -939,7 +939,7 @@ ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CODE_SIGN_ENTITLEMENTS = Bitkit/Bitkit.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 196; + CURRENT_PROJECT_VERSION = 197; DEVELOPMENT_ASSET_PATHS = "\"Bitkit/Preview Content\""; DEVELOPMENT_TEAM = KYH47R284B; ENABLE_HARDENED_RUNTIME = YES; @@ -966,7 +966,7 @@ LD_RUNPATH_SEARCH_PATHS = "@executable_path/Frameworks"; "LD_RUNPATH_SEARCH_PATHS[sdk=macosx*]" = "@executable_path/../Frameworks"; MACOSX_DEPLOYMENT_TARGET = 14.0; - MARKETING_VERSION = 2.4.1; + MARKETING_VERSION = 2.5.0; OTHER_LDFLAGS = ( "-framework", CoreBluetooth, @@ -988,7 +988,7 @@ ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CODE_SIGN_ENTITLEMENTS = Bitkit/Bitkit.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 196; + CURRENT_PROJECT_VERSION = 197; DEVELOPMENT_ASSET_PATHS = "\"Bitkit/Preview Content\""; DEVELOPMENT_TEAM = KYH47R284B; ENABLE_HARDENED_RUNTIME = YES; @@ -1015,7 +1015,7 @@ LD_RUNPATH_SEARCH_PATHS = "@executable_path/Frameworks"; "LD_RUNPATH_SEARCH_PATHS[sdk=macosx*]" = "@executable_path/../Frameworks"; MACOSX_DEPLOYMENT_TARGET = 14.0; - MARKETING_VERSION = 2.4.1; + MARKETING_VERSION = 2.5.0; OTHER_LDFLAGS = ( "-framework", CoreBluetooth, diff --git a/CHANGELOG.md b/CHANGELOG.md index d30f7b402..f71896055 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,43 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [2.5.0] - 2026-09-10 + +### Added +- Added receiver-specific Paykit contact support for Bitkit wallet and server integrations. #620 +- Bitkit now creates, names, backs up, and manages separate watch-only Bitcoin accounts and securely delivers signed setup claims to Paykit servers. #630 +- Incoming Paykit payment requests can now be reviewed and approved through the existing payment flow. #637 +- Improved Lightning send failures with clearer localized messages and a retry action that refreshes payment routing before trying again. #652 +- Passphrase-protected (hidden) Trezor wallets can now be paired from the connect flow, each appearing as its own watch-only balance with its own label, activity and removal, and asking for its passphrase again when a transfer needs signing. #662 +- Incoming Paykit payment requests now stay discoverable until handled, and connected contacts can send new private requests from the invoice flow. #676 +- The name you give a hardware wallet is now included in your backup and comes back when you pair the device again, and removing a hardware wallet asks first whether to keep its name and tags in your backup. #681 +- Payments made from incoming private payment requests now send a payment proof back to the requester. #683 +- Bitkit can now review, manage, and pay recurring payment requests from Paykit contacts, with on-chain fees shown before confirming the first payment and unresolved payments protected from accidental retries. #685 +- Added on-chain send support for paired Trezor wallets, including transaction approval on the device. #688 +- Added a Trezor Receive tab with fast watch-only addresses and on-device verification. #693 + +### Changed +- Hardware wallet transactions are now stored with the rest of your activity, so they keep their tags, contacts and transaction details, show inputs and outputs under Explore, disappear when a transaction is replaced, and a transfer to spending funded from a hardware wallet shows as a single transfer. #648 + +### Fixed +- Updated the Receive screen's QR and details toggle to match the intended design, so "Show Details" is now a tertiary button and "Show QR Code" a primary button with a QR icon. #635 +- Improved Pubky profiles, contacts, imports, and contact payments with unified payment settings and updated layouts. #636 +- Fixed profile deletion being blocked when private Paykit contact cleanup could not complete. #640 +- Fixed Paykit Server authorization, removed duplicate service names from permission summaries, and made private payment request connections establish promptly after contact discovery. #653 +- Fixed address type monitoring and primary address type changes getting permanently stuck after a temporary wallet sync timeout. #667 +- Tags you add to hardware wallet activity are now included in your backup, and older backups are upgraded automatically the first time you restore them. #674 +- Contact payments now isolate malformed receiver markers, validate request amounts and available capacity before payment, and retain cleanup of private details when switching to public-only sharing. #684 +- Transfers to spending now offer a maximum amount and receiving capacity your savings can actually cover the fees for, so transferring your full balance no longer fails with an insufficient funds error, and the hardware wallet transfer amount is held to that maximum instead of accepting any amount you type. #686 +- Swipe To Transfer now stays on the spinner after you confirm a transfer to spending. #690 +- Hardware-wallet send now clearly shows fee and funding-source preparation and prevents confirmation until the selected fee is ready. #708 +- Improved receive invoice routing so Lightning and additional spending capacity flows respect ready inbound liquidity and show clearer capacity errors. #711 +- A hardware-wallet payment that fails to broadcast now tells you the payment was not confirmed and lets you retry or leave, instead of locking the send screen. #729 +- Paid Blocktank channel orders now include a wallet-owned address for refunds if they expire before being claimed. #732 + +### Security +- QuickPay stays PIN-free under a configurable daily spend limit; once that limit is reached, payments open Confirm instead. #672 +- Added app-scoped Pubky authorization and secure sign-out, preserved contact payments during node startup, and fixed missing payment requests in history. #697 + ## [2.4.1] - 2026-08-21 ### Security @@ -107,7 +144,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Fix keyboard and UI issues in the calculator widget #513 - Preserve msat precision for LNURL pay, withdraw callbacks and bolt11 #512 -[Unreleased]: https://github.com/synonymdev/bitkit-ios/compare/v2.4.1...HEAD +[Unreleased]: https://github.com/synonymdev/bitkit-ios/compare/v2.5.0...HEAD +[2.5.0]: https://github.com/synonymdev/bitkit-ios/compare/v2.4.1...v2.5.0 [2.4.1]: https://github.com/synonymdev/bitkit-ios/compare/v2.4.0...v2.4.1 [2.4.0]: https://github.com/synonymdev/bitkit-ios/compare/v2.3.2...v2.4.0 [2.3.2]: https://github.com/synonymdev/bitkit-ios/compare/v2.3.1...v2.3.2 diff --git a/changelog.d/next/620.added.md b/changelog.d/next/620.added.md deleted file mode 100644 index ccbf4efab..000000000 --- a/changelog.d/next/620.added.md +++ /dev/null @@ -1 +0,0 @@ -Added receiver-specific Paykit contact support for Bitkit wallet and server integrations. diff --git a/changelog.d/next/630.added.md b/changelog.d/next/630.added.md deleted file mode 100644 index 6f6831858..000000000 --- a/changelog.d/next/630.added.md +++ /dev/null @@ -1 +0,0 @@ -Bitkit now creates, names, backs up, and manages separate watch-only Bitcoin accounts and securely delivers signed setup claims to Paykit servers. diff --git a/changelog.d/next/635.fixed.md b/changelog.d/next/635.fixed.md deleted file mode 100644 index 178b287ea..000000000 --- a/changelog.d/next/635.fixed.md +++ /dev/null @@ -1 +0,0 @@ -Updated the Receive screen's QR and details toggle to match the intended design, so "Show Details" is now a tertiary button and "Show QR Code" a primary button with a QR icon. diff --git a/changelog.d/next/636.fixed.md b/changelog.d/next/636.fixed.md deleted file mode 100644 index 810b799de..000000000 --- a/changelog.d/next/636.fixed.md +++ /dev/null @@ -1 +0,0 @@ -Improved Pubky profiles, contacts, imports, and contact payments with unified payment settings and updated layouts. diff --git a/changelog.d/next/637.added.md b/changelog.d/next/637.added.md deleted file mode 100644 index 94f414e75..000000000 --- a/changelog.d/next/637.added.md +++ /dev/null @@ -1 +0,0 @@ -Incoming Paykit payment requests can now be reviewed and approved through the existing payment flow. diff --git a/changelog.d/next/640.fixed.md b/changelog.d/next/640.fixed.md deleted file mode 100644 index 13b1beb5d..000000000 --- a/changelog.d/next/640.fixed.md +++ /dev/null @@ -1 +0,0 @@ -Fixed profile deletion being blocked when private Paykit contact cleanup could not complete. diff --git a/changelog.d/next/648.changed.md b/changelog.d/next/648.changed.md deleted file mode 100644 index 1ecf8608d..000000000 --- a/changelog.d/next/648.changed.md +++ /dev/null @@ -1 +0,0 @@ -Hardware wallet transactions are now stored with the rest of your activity, so they keep their tags, contacts and transaction details, show inputs and outputs under Explore, disappear when a transaction is replaced, and a transfer to spending funded from a hardware wallet shows as a single transfer. diff --git a/changelog.d/next/652.added.md b/changelog.d/next/652.added.md deleted file mode 100644 index 704b7a84d..000000000 --- a/changelog.d/next/652.added.md +++ /dev/null @@ -1 +0,0 @@ -Improved Lightning send failures with clearer localized messages and a retry action that refreshes payment routing before trying again. diff --git a/changelog.d/next/653.fixed.md b/changelog.d/next/653.fixed.md deleted file mode 100644 index 70ddd2261..000000000 --- a/changelog.d/next/653.fixed.md +++ /dev/null @@ -1 +0,0 @@ -Fixed Paykit Server authorization, removed duplicate service names from permission summaries, and made private payment request connections establish promptly after contact discovery. diff --git a/changelog.d/next/662.added.md b/changelog.d/next/662.added.md deleted file mode 100644 index 54ed99bef..000000000 --- a/changelog.d/next/662.added.md +++ /dev/null @@ -1 +0,0 @@ -Passphrase-protected (hidden) Trezor wallets can now be paired from the connect flow, each appearing as its own watch-only balance with its own label, activity and removal, and asking for its passphrase again when a transfer needs signing. diff --git a/changelog.d/next/667.fixed.md b/changelog.d/next/667.fixed.md deleted file mode 100644 index fa333ed13..000000000 --- a/changelog.d/next/667.fixed.md +++ /dev/null @@ -1 +0,0 @@ -Fixed address type monitoring and primary address type changes getting permanently stuck after a temporary wallet sync timeout. diff --git a/changelog.d/next/672.security.md b/changelog.d/next/672.security.md deleted file mode 100644 index 3a5339f9f..000000000 --- a/changelog.d/next/672.security.md +++ /dev/null @@ -1 +0,0 @@ -QuickPay stays PIN-free under a configurable daily spend limit; once that limit is reached, payments open Confirm instead. diff --git a/changelog.d/next/674.fixed.md b/changelog.d/next/674.fixed.md deleted file mode 100644 index 6af14dc8e..000000000 --- a/changelog.d/next/674.fixed.md +++ /dev/null @@ -1 +0,0 @@ -Tags you add to hardware wallet activity are now included in your backup, and older backups are upgraded automatically the first time you restore them. diff --git a/changelog.d/next/676.added.md b/changelog.d/next/676.added.md deleted file mode 100644 index 6ed8f71b4..000000000 --- a/changelog.d/next/676.added.md +++ /dev/null @@ -1 +0,0 @@ -Incoming Paykit payment requests now stay discoverable until handled, and connected contacts can send new private requests from the invoice flow. diff --git a/changelog.d/next/681.added.md b/changelog.d/next/681.added.md deleted file mode 100644 index 451e94270..000000000 --- a/changelog.d/next/681.added.md +++ /dev/null @@ -1 +0,0 @@ -The name you give a hardware wallet is now included in your backup and comes back when you pair the device again, and removing a hardware wallet asks first whether to keep its name and tags in your backup. diff --git a/changelog.d/next/683.added.md b/changelog.d/next/683.added.md deleted file mode 100644 index 2a91491ee..000000000 --- a/changelog.d/next/683.added.md +++ /dev/null @@ -1 +0,0 @@ -Payments made from incoming private payment requests now send a payment proof back to the requester. diff --git a/changelog.d/next/684.fixed.md b/changelog.d/next/684.fixed.md deleted file mode 100644 index b7aad3ce7..000000000 --- a/changelog.d/next/684.fixed.md +++ /dev/null @@ -1 +0,0 @@ -Contact payments now isolate malformed receiver markers, validate request amounts and available capacity before payment, and retain cleanup of private details when switching to public-only sharing. diff --git a/changelog.d/next/685.added.md b/changelog.d/next/685.added.md deleted file mode 100644 index 92fef450f..000000000 --- a/changelog.d/next/685.added.md +++ /dev/null @@ -1 +0,0 @@ -Bitkit can now review, manage, and pay recurring payment requests from Paykit contacts, with on-chain fees shown before confirming the first payment and unresolved payments protected from accidental retries. diff --git a/changelog.d/next/686.fixed.md b/changelog.d/next/686.fixed.md deleted file mode 100644 index 0f642409d..000000000 --- a/changelog.d/next/686.fixed.md +++ /dev/null @@ -1 +0,0 @@ -Transfers to spending now offer a maximum amount and receiving capacity your savings can actually cover the fees for, so transferring your full balance no longer fails with an insufficient funds error, and the hardware wallet transfer amount is held to that maximum instead of accepting any amount you type. diff --git a/changelog.d/next/688.added.md b/changelog.d/next/688.added.md deleted file mode 100644 index 07e0e0dc6..000000000 --- a/changelog.d/next/688.added.md +++ /dev/null @@ -1 +0,0 @@ -Added on-chain send support for paired Trezor wallets, including transaction approval on the device. diff --git a/changelog.d/next/690.fixed.md b/changelog.d/next/690.fixed.md deleted file mode 100644 index bd4ab2869..000000000 --- a/changelog.d/next/690.fixed.md +++ /dev/null @@ -1 +0,0 @@ -Swipe To Transfer now stays on the spinner after you confirm a transfer to spending. diff --git a/changelog.d/next/693.added.md b/changelog.d/next/693.added.md deleted file mode 100644 index f242f0c0c..000000000 --- a/changelog.d/next/693.added.md +++ /dev/null @@ -1 +0,0 @@ -Added a Trezor Receive tab with fast watch-only addresses and on-device verification. diff --git a/changelog.d/next/697.security.md b/changelog.d/next/697.security.md deleted file mode 100644 index 15fbba970..000000000 --- a/changelog.d/next/697.security.md +++ /dev/null @@ -1 +0,0 @@ -Added app-scoped Pubky authorization and secure sign-out, preserved contact payments during node startup, and fixed missing payment requests in history. diff --git a/changelog.d/next/708.fixed.md b/changelog.d/next/708.fixed.md deleted file mode 100644 index 81b010825..000000000 --- a/changelog.d/next/708.fixed.md +++ /dev/null @@ -1 +0,0 @@ -Hardware-wallet send now clearly shows fee and funding-source preparation and prevents confirmation until the selected fee is ready. diff --git a/changelog.d/next/711.fixed.md b/changelog.d/next/711.fixed.md deleted file mode 100644 index 69b1e5913..000000000 --- a/changelog.d/next/711.fixed.md +++ /dev/null @@ -1 +0,0 @@ -Improved receive invoice routing so Lightning and additional spending capacity flows respect ready inbound liquidity and show clearer capacity errors. diff --git a/changelog.d/next/729.fixed.md b/changelog.d/next/729.fixed.md deleted file mode 100644 index d3c0ba9e2..000000000 --- a/changelog.d/next/729.fixed.md +++ /dev/null @@ -1 +0,0 @@ -A hardware-wallet payment that fails to broadcast now tells you the payment was not confirmed and lets you retry or leave, instead of locking the send screen. diff --git a/changelog.d/next/732.fixed.md b/changelog.d/next/732.fixed.md deleted file mode 100644 index ef36ac717..000000000 --- a/changelog.d/next/732.fixed.md +++ /dev/null @@ -1 +0,0 @@ -Paid Blocktank channel orders now include a wallet-owned address for refunds if they expire before being claimed.