Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
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
24 changes: 12 additions & 12 deletions Bitkit.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -702,7 +702,7 @@
ASSETCATALOG_COMPILER_WIDGET_BACKGROUND_COLOR_NAME = WidgetBackground;
CODE_SIGN_ENTITLEMENTS = BitkitWidgetExtension.entitlements;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 197;
CURRENT_PROJECT_VERSION = 199;
DEVELOPMENT_TEAM = KYH47R284B;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = BitkitWidget/Info.plist;
Expand All @@ -714,7 +714,7 @@
"@executable_path/Frameworks",
"@executable_path/../../Frameworks",
);
MARKETING_VERSION = 2.5.0;
MARKETING_VERSION = 2.6.0;
PRODUCT_BUNDLE_IDENTIFIER = to.bitkit.widget;
PRODUCT_NAME = "$(TARGET_NAME)";
SDKROOT = iphoneos;
Expand All @@ -735,7 +735,7 @@
ASSETCATALOG_COMPILER_WIDGET_BACKGROUND_COLOR_NAME = WidgetBackground;
CODE_SIGN_ENTITLEMENTS = BitkitWidgetExtension.entitlements;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 197;
CURRENT_PROJECT_VERSION = 199;
DEVELOPMENT_TEAM = KYH47R284B;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = BitkitWidget/Info.plist;
Expand All @@ -747,7 +747,7 @@
"@executable_path/Frameworks",
"@executable_path/../../Frameworks",
);
MARKETING_VERSION = 2.5.0;
MARKETING_VERSION = 2.6.0;
PRODUCT_BUNDLE_IDENTIFIER = to.bitkit.widget;
PRODUCT_NAME = "$(TARGET_NAME)";
SDKROOT = iphoneos;
Expand All @@ -767,7 +767,7 @@
buildSettings = {
CODE_SIGN_ENTITLEMENTS = BitkitNotification/BitkitNotification.entitlements;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 197;
CURRENT_PROJECT_VERSION = 199;
DEVELOPMENT_TEAM = KYH47R284B;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = BitkitNotification/Info.plist;
Expand All @@ -779,7 +779,7 @@
"@executable_path/Frameworks",
"@executable_path/../../Frameworks",
);
MARKETING_VERSION = 2.5.0;
MARKETING_VERSION = 2.6.0;
OTHER_LDFLAGS = (
"-framework",
CoreBluetooth,
Expand All @@ -800,7 +800,7 @@
buildSettings = {
CODE_SIGN_ENTITLEMENTS = BitkitNotification/BitkitNotification.entitlements;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 197;
CURRENT_PROJECT_VERSION = 199;
DEVELOPMENT_TEAM = KYH47R284B;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = BitkitNotification/Info.plist;
Expand All @@ -812,7 +812,7 @@
"@executable_path/Frameworks",
"@executable_path/../../Frameworks",
);
MARKETING_VERSION = 2.5.0;
MARKETING_VERSION = 2.6.0;
OTHER_LDFLAGS = (
"-framework",
CoreBluetooth,
Expand Down Expand Up @@ -951,7 +951,7 @@
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
CODE_SIGN_ENTITLEMENTS = Bitkit/Bitkit.entitlements;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 197;
CURRENT_PROJECT_VERSION = 199;
DEVELOPMENT_ASSET_PATHS = "\"Bitkit/Preview Content\"";
DEVELOPMENT_TEAM = KYH47R284B;
ENABLE_HARDENED_RUNTIME = YES;
Expand All @@ -978,7 +978,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.5.0;
MARKETING_VERSION = 2.6.0;
OTHER_LDFLAGS = (
"-framework",
CoreBluetooth,
Expand All @@ -1000,7 +1000,7 @@
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
CODE_SIGN_ENTITLEMENTS = Bitkit/Bitkit.entitlements;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 197;
CURRENT_PROJECT_VERSION = 199;
DEVELOPMENT_ASSET_PATHS = "\"Bitkit/Preview Content\"";
DEVELOPMENT_TEAM = KYH47R284B;
ENABLE_HARDENED_RUNTIME = YES;
Expand All @@ -1027,7 +1027,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.5.0;
MARKETING_VERSION = 2.6.0;
OTHER_LDFLAGS = (
"-framework",
CoreBluetooth,
Expand Down
86 changes: 85 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,88 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased]

## [2.6.0] - 2026-10-14

### Added
- Bitkit now opens Pubky marketplace setup links directly into explicit watch-only account consent. #722
- Added support for creating a Pubky identity from app-authorized and direct Pubky signup requests, with approval, a relay timeout and protection against overlapping signup attempts. #724
- Bitkit can now propose recurring subscriptions to Paykit contacts. #736
- Added support for restoring wallets from Standard and Compact SeedQR codes. #760
- Added support for pairing Blockstream Jade and Jade Plus hardware wallets over Bluetooth, including watch-only balances, address verification and on-device transaction signing. #765
- Open Pubky contact links directly in Bitkit to add a contact or view an existing one. #768
- Bitkit can now use a pubky you already keep in Pubky Ring, and shares its own pubky with Pubky Ring. #774
- Dev Settings can now move subscription renewals forward by a number of days, so the next billing period can be tested without waiting for it. #798
- Support Pubky grant signup links through the existing authorization and profile setup flows. #900

### Changed
- Incoming payment requests are checked every ten seconds while the app is open and online. #769
- Incoming Payment Requests now show who the request is from and what it is for under the amount. #789
- Paykit contacts, payment requests and subscriptions are now on by default. #802
- The Payment Request sheet now always shows what a request is for, reading "Not specified" when the request has no note. #817
- Share Paykit contacts and payment state with authorized apps while keeping wallet keys private, restore contacts when re-importing an identity, prepare incoming payments in the payment sheet, support one-time payment deadlines, prioritize payment submission over background synchronization, distinguish temporary restoration failures from expired sessions, preserve subscription reminders through retries, and label received payments with their Paykit contact. #856
- Jade hardware wallets now display device artwork that matches the app's hardware wallet design. #878
- Pubky authorization dialogs now name the requesting service, group permissions and details under clear headings, and show a compact profile card. #880
- Improved Home pull-to-refresh feedback and added on-demand exchange-rate updates. #532

### Fixed
- Incoming on-chain transactions that confirm before being seen in the mempool now show the received notification. #588
- Payment requests now provide safe failure diagnostics and show an error when requested payment details remain unavailable. #721
- Fixed the transfer to spending flow creating a Blocktank order every time you tapped Continue, so an order is now only created when you confirm the transfer. #738
- Incoming payment requests appear sooner while the app is open, without unnecessary wallet backup uploads. #748
- Improved Pubky identity discovery by periodically refreshing existing identity records while Bitkit is open. #753
- Subscriptions now match their designs: rows scroll under the tab bar and the floating buttons, the delete sheet carries the trash illustration, dates drop the year, and the amount step gains a unit switch for entering amounts in fiat. #754
- Fixed private payment connections reusing a previous wallet’s key after resetting the wallet. #761
- Hardware wallet send confirmation now uses the orange accent color instead of blue. #771
- Spending confirm now shows the amount of bitcoin that leaves the wallet when a transfer uses send-all funding, and the transfer record uses that same amount. #772
- Aligned the profile screens and the home header spacing with the latest designs. #781
- Transfer to spending no longer pays more than the confirmed amount: if fees rise before the swipe, it explains the increase and waits for another swipe. #783
- Preserve Paykit subscription and pending payment state in wallet backups, and retain saved data when it cannot be read or restored. #786
- Clipboard reading now runs after unlocking Bitkit with a PIN. #790
- Fixed a sheet closing right after it opened when it appeared just after another sheet was dismissed, such as a subscription proposal arriving after you tapped Later on the QuickPay intro. #793
- Payout authorization no longer fails when the initial wallet sync times out. #794
- Fixed Paykit recovery after connection loss or device clock changes to preserve profiles and contacts, retry saved sessions with visible loading feedback, and improve billing reminder timing, including preserving the previous identity when a switch fails. #796
- Paying a contact now reliably offers Request or Pay when the contact accepts requests, and opens the amount screen faster with a loading indicator. #809
- Fixed a paid Paykit payment request sometimes reappearing as pending after closing the send screen, which could lead to paying it twice. #820
- Keep Paykit requests with unsupported payment deadlines in history and explain why their subscriptions cannot be accepted. #823
- Fixed unpaid Payment Requests appearing as completed payments or getting stuck after a failed send or private-link recovery. #826
- Deleting a contact now stops private payment requests until you add that contact again, and background refreshes no longer restore deleted contacts. #830
- Fixed wallet setup getting stuck at 100% after retrying a failed startup. #831
- On-chain sends now keep uncertain broadcast attempts pending and show the transaction ID, preventing another payment while the outcome is unresolved. #844
- A canceled subscription now stays active until its paid period ends, then expires. #846
- Fixed swipe to pay being usable before the network fee rate had loaded, which made on-chain payments fail with "Fee rate not set". #847
- Fixed the wallet staying on "Connection issues" after a failed node start until the app was relaunched; it now retries when the app returns to the foreground. #848
- Fixed slow contact imports by saving prepared contacts locally, skipping your own profile and keeping failed imports available for retry. #851
- Activity metadata restored from a React Native wallet stays saved for later recovery without repeatedly rebuilding payment history or uploading unchanged backups. #852
- Pubky profiles and contacts load faster: Pubky Ring identities appear at once, adopting one no longer waits on other lookups, the profile screen shows your cached name and avatar while it loads, and Contacts shows your saved contacts straight away while their profiles load. A contact import that finishes after you leave it no longer takes you to Pay Contacts. #854
- Fixed Paykit failures after wiping a wallet and false profile errors when cancelled work finishes after signup. #855
- New incoming Payment Requests open automatically while Bitkit is unlocked, without waiting for the rest of the refresh to finish. #858
- Opening Contacts keeps your saved profile on loading or Retry while it reconnects instead of offering profile setup. #864
- Saving a profile edit with a new avatar no longer opens Create Profile, and a contact deleted while its profile loads keeps its new profile when added back. #869
- Bitkit now offers each clipboard copy only once and waits for confirmation before contacting payment endpoints. #870
- Leaving Contacts no longer shows an error for a cancelled contact load. #873
- Pay fixed-price Paykit requests using the quoted Bitcoin amount, show feedback for unavailable destinations, and prioritize linking for newly added or explicitly refreshed contacts. #887
- Pause automatic contact and payment-request refreshes in the background without delaying payment and wallet-sync completion, preserve pending work until resume, and avoid redundant startup endpoint publication. #888
- Fixed untranslated plural templates in transaction details and backup failure messages for affected languages. #897
- Keep your public profile visible after restarting while private payment data is still reconnecting. #898
- Fixed an incorrect send error appearing after closing a successful Lightning payment. #899
- Report identity-key access errors before enabling contact payments. #901
- Keep manual coin selection required after returning from the coin picker without choosing coins. #903
- Stopped unnecessary background retries for unavailable contacts while preserving queued message delivery. #911
- Payment requests below the minimum Bitcoin amount now show the minimum and close payment preparation. #913
- Verified hardware-wallet payments can finish locally while their payment proofs await delivery. #914
- Retain exact Bitcoin retry fees so accepted payments can finish local recovery while wallet history is still catching up. #915
- Bitcoin sends keep a single activity entry with their contact and fee when wallet synchronization overlaps payment completion. #916
- Fixed force-closed channels failing to claim pending payments on-chain. #930

### Security
- Paykit payment approvals remain tied to the reviewed proposal when private state changes. #921
- Updated the Lightning node with upstream security fixes. #928

## [2.5.1] - 2026-10-13

### Fixed
- Updated LDK Node to 0.7.0-rc.66.1 for the upstream Lightning security fixes. #924

## [2.5.0] - 2026-09-10

### Added
Expand Down Expand Up @@ -144,7 +226,9 @@ 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.5.0...HEAD
[Unreleased]: https://github.com/synonymdev/bitkit-ios/compare/v2.6.0...HEAD
[2.6.0]: https://github.com/synonymdev/bitkit-ios/compare/v2.5.1...v2.6.0
[2.5.1]: https://github.com/synonymdev/bitkit-ios/compare/v2.5.0...v2.5.1
[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
Expand Down
1 change: 0 additions & 1 deletion changelog.d/next/532.fixed.md

This file was deleted.

1 change: 0 additions & 1 deletion changelog.d/next/588.fixed.md

This file was deleted.

1 change: 0 additions & 1 deletion changelog.d/next/721.fixed.md

This file was deleted.

1 change: 0 additions & 1 deletion changelog.d/next/722.added.md

This file was deleted.

1 change: 0 additions & 1 deletion changelog.d/next/724.added.md

This file was deleted.

1 change: 0 additions & 1 deletion changelog.d/next/736.added.md

This file was deleted.

1 change: 0 additions & 1 deletion changelog.d/next/738.fixed.md

This file was deleted.

1 change: 0 additions & 1 deletion changelog.d/next/748.fixed.md

This file was deleted.

1 change: 0 additions & 1 deletion changelog.d/next/753.fixed.md

This file was deleted.

1 change: 0 additions & 1 deletion changelog.d/next/754.fixed.md

This file was deleted.

1 change: 0 additions & 1 deletion changelog.d/next/760.added.md

This file was deleted.

1 change: 0 additions & 1 deletion changelog.d/next/761.fixed.md

This file was deleted.

1 change: 0 additions & 1 deletion changelog.d/next/765.added.md

This file was deleted.

1 change: 0 additions & 1 deletion changelog.d/next/768.added.md

This file was deleted.

1 change: 0 additions & 1 deletion changelog.d/next/769.changed.md

This file was deleted.

1 change: 0 additions & 1 deletion changelog.d/next/771.fixed.md

This file was deleted.

1 change: 0 additions & 1 deletion changelog.d/next/772.fixed.md

This file was deleted.

1 change: 0 additions & 1 deletion changelog.d/next/774.added.md

This file was deleted.

1 change: 0 additions & 1 deletion changelog.d/next/781.fixed.md

This file was deleted.

1 change: 0 additions & 1 deletion changelog.d/next/783.fixed.md

This file was deleted.

1 change: 0 additions & 1 deletion changelog.d/next/786.fixed.md

This file was deleted.

1 change: 0 additions & 1 deletion changelog.d/next/789.changed.md

This file was deleted.

1 change: 0 additions & 1 deletion changelog.d/next/790.fixed.md

This file was deleted.

1 change: 0 additions & 1 deletion changelog.d/next/793.fixed.md

This file was deleted.

1 change: 0 additions & 1 deletion changelog.d/next/794.fixed.md

This file was deleted.

1 change: 0 additions & 1 deletion changelog.d/next/796.fixed.md

This file was deleted.

1 change: 0 additions & 1 deletion changelog.d/next/798.added.md

This file was deleted.

1 change: 0 additions & 1 deletion changelog.d/next/802.changed.md

This file was deleted.

1 change: 0 additions & 1 deletion changelog.d/next/809.fixed.md

This file was deleted.

1 change: 0 additions & 1 deletion changelog.d/next/817.changed.md

This file was deleted.

1 change: 0 additions & 1 deletion changelog.d/next/820.fixed.md

This file was deleted.

1 change: 0 additions & 1 deletion changelog.d/next/823.fixed.md

This file was deleted.

1 change: 0 additions & 1 deletion changelog.d/next/826.fixed.md

This file was deleted.

1 change: 0 additions & 1 deletion changelog.d/next/830.fixed.md

This file was deleted.

1 change: 0 additions & 1 deletion changelog.d/next/831.fixed.md

This file was deleted.

1 change: 0 additions & 1 deletion changelog.d/next/844.fixed.md

This file was deleted.

1 change: 0 additions & 1 deletion changelog.d/next/846.fixed.md

This file was deleted.

1 change: 0 additions & 1 deletion changelog.d/next/847.fixed.md

This file was deleted.

1 change: 0 additions & 1 deletion changelog.d/next/848.fixed.md

This file was deleted.

1 change: 0 additions & 1 deletion changelog.d/next/851.fixed.md

This file was deleted.

1 change: 0 additions & 1 deletion changelog.d/next/852.fixed.md

This file was deleted.

1 change: 0 additions & 1 deletion changelog.d/next/854.fixed.md

This file was deleted.

1 change: 0 additions & 1 deletion changelog.d/next/855.fixed.md

This file was deleted.

Loading
Loading