Skip to content
Closed

6.5.0 #1670

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
355 commits
Select commit Hold shift + click to select a range
fe61460
Merge branch 'develop' into autoswap-default
i5hi Dec 10, 2025
55a0693
Update settings router
i5hi Dec 10, 2025
db0d80b
refactor: rename label wallet use cases to address and transaction us…
ethicnology Dec 10, 2025
289c723
refactor: BitcoinTx and merge it with TransactionParsing
ethicnology Dec 10, 2025
ffa77b4
refactor: replace SystemLabel with LabelSystem and update related imp…
ethicnology Dec 10, 2025
beee85f
refactor: replace TransactionRepository with BitcoinTransactionReposi…
ethicnology Dec 10, 2025
08309b9
Added triggerBalanceSat field to autoSwap. Included in 10To11 migration
i5hi Dec 11, 2025
75bab7b
fix: migration transformer
i5hi Dec 11, 2025
9709c83
fix: revert check for default wallets usecase changes
i5hi Dec 11, 2025
4155c16
fix: dark mode in autoswap, transfer dropdown and send entrypoint
i5hi Dec 11, 2025
abbe0dc
add: bb_switch component
i5hi Dec 11, 2025
b659d5a
fix: exchange home colors for dark mode
i5hi Dec 11, 2025
c562c0a
add claude.yml
leesalminen Dec 11, 2025
57ebbcb
Update claude.yml
leesalminen Dec 11, 2025
0e1d269
feat: add LiquidTx class for handling Liquid transactions
ethicnology Dec 11, 2025
ba98173
feat: labels txid on sell
ethicnology Dec 11, 2025
8a07119
fix: typos in Finnish translations (#1659)
tlindi Dec 12, 2025
deff12c
refactor: Closes #1296 remove NetworkDisplay from SendAmountScreen
wired-pasteque Dec 14, 2025
fb578e7
refactor: Wallet.displayLabel returns the translated label for defaul…
wired-pasteque Dec 14, 2025
861de39
feat: Wallet Selection on receive and Send #1529
wired-pasteque Dec 14, 2025
106e1e1
feat: add isBitcoin to Wallet entity
wired-pasteque Dec 14, 2025
3b93733
refactor: add bitcoin wallet selection to receive
wired-pasteque Dec 14, 2025
3742e28
refactor: move the wallet on top of the QR section
ethicnology Dec 14, 2025
b2e79ad
Merge branch 'develop' into autoswap-default
i5hi Dec 15, 2025
86fa48a
fix: clean up autoswap cubit and unwanted classes
i5hi Dec 15, 2025
df1bda0
fix: hide fields if auto-swap is disabled
i5hi Dec 15, 2025
83718a5
Merge pull request #1644 from SatoshiPortal/autoswap-default
i5hi Dec 15, 2025
3494e2e
update: default electrum server to fulcrum
i5hi Dec 15, 2025
13dedb2
feat: add support chat
i5hi Dec 15, 2025
2bf0d5d
refactor: wallet selector use localized labels
ethicnology Dec 15, 2025
a518d7b
refactor: localized labels and remove duplicated translations
ethicnology Dec 15, 2025
e5d008b
refactor: move wallet selection to the top of the screen like in receive
ethicnology Dec 15, 2025
ffa5895
Merge pull request #1661 from wired-pasteque/refactor-send-screen
ethicnology Dec 15, 2025
81472e7
Merge branch 'develop' into add-wallet-selection-to-receive-bitcoin
ethicnology Dec 15, 2025
730a092
Merge pull request #1662 from wired-pasteque/add-wallet-selection-to-…
ethicnology Dec 15, 2025
c7bb3e9
refactor: update wallet display label to use context for localization
ethicnology Dec 15, 2025
b20edd4
Add claude_args for specific model version
leesalminen Dec 15, 2025
f8dd4e2
Change repository permissions from read to write
leesalminen Dec 15, 2025
19822d0
Enhance GitHub Actions workflow with checkout options
leesalminen Dec 15, 2025
275d2e9
feat: integrate label for addresses
ethicnology Dec 15, 2025
0fe3846
refactor: add LabelsLocator to BackgroundTaskLocator
ethicnology Dec 15, 2025
d9dafba
refactor: log the error when the user attempt to delete a System Label
ethicnology Dec 16, 2025
cd4b856
fix: consider addresses with a SystemLabel as used #1511
ethicnology Dec 16, 2025
bd7f35a
refactor: replace transaction notes custom UI with reusable LabelsWidget
ethicnology Dec 16, 2025
9622454
refactor: localize system labels and error messages
ethicnology Dec 16, 2025
f3d723a
feat: add LabelExchangeOrdersUsecase for labeling exchange orders
ethicnology Dec 16, 2025
ab4ee2e
refactor: protect system labels from deletion and standardize label d…
ethicnology Dec 16, 2025
64f4ca1
feat: enhance WalletUtxo with transaction labels
ethicnology Dec 16, 2025
28e6580
refactor: refactor exchange order labelling by batching the labels in…
ethicnology Dec 17, 2025
9225463
Add source field so support knows the message is from BULL Mobile
i5hi Dec 17, 2025
07dfc4d
Disable coinselection continue button if amount requested is less tha…
i5hi Dec 17, 2025
e138338
Add error message when amounts are not sufficient in coin selection
i5hi Dec 17, 2025
9b75b2c
refactor: enhance LabelText and LabelChip for better user experience
ethicnology Dec 17, 2025
3e0f089
refactor: optimize label handling in LabelsWidget to ensure uniqueness
ethicnology Dec 17, 2025
c0ee923
fix: related to claude review
ethicnology Dec 17, 2025
53ec9ce
Merge pull request #1669 from SatoshiPortal/1197-clean-up-labelling
ethicnology Dec 17, 2025
fd8c872
feat: add firmware update warning for Jade device in ImportQrDevicePage
ethicnology Dec 17, 2025
dd90779
fix: downgrade file_picker to 10.3.6
ethicnology Dec 17, 2025
30c7619
feat: remove BDK/LWK wallet DB files on wallet deletion #319
ethicnology Dec 17, 2025
3ed54f5
Fix null check for attachments
i5hi Dec 18, 2025
991e7c1
Merge branch 'develop' into exchange-support
i5hi Dec 18, 2025
83e1bc6
Merge pull request #1665 from SatoshiPortal/exchange-support
i5hi Dec 18, 2025
ddb09b7
fix: use orm methods instead of raw SQL
i5hi Dec 18, 2025
1c8cf59
feat: allow bitcoin-bitcoin internal transfer. allow coin selection i…
i5hi Dec 18, 2025
5775561
fix: Add missing files
i5hi Dec 18, 2025
42f3743
Fix new translations
tlindi Dec 18, 2025
cc36050
refactor: PR review
ethicnology Dec 18, 2025
bf50b25
Merge pull request #1678 from tlindi/fix-Finnish-localizations-layouts-
ethicnology Dec 18, 2025
b3bd21f
Update app_fi.arb
tlindi Dec 18, 2025
7ac2e4d
Merge remote-tracking branch 'upstream/develop' into fix-FI-translati…
tlindi Dec 18, 2025
e96b5ff
Merge pull request #1680 from tlindi/fix-FI-translation-UI-Review
ethicnology Dec 18, 2025
0a5f622
Update app_fi.arb
tlindi Dec 18, 2025
b5b9bc5
Merge pull request #1682 from tlindi/fix-translations-FI-developer-mode
ethicnology Dec 18, 2025
b83961b
refactor: replace xprvBase58 with entropy in BIP85 derivation widget …
ethicnology Dec 18, 2025
a7acbb4
refactor: settings buttons consistency
ethicnology Dec 18, 2025
a102bc4
ci: set fvm to 4.0.3
ethicnology Dec 18, 2025
8b19f41
fix: fvm install failure in CI by updating config key
ethicnology Dec 20, 2025
32255a6
Merge pull request #1686 from SatoshiPortal/fix-fvm-in-ci
ethicnology Dec 20, 2025
cc6c72d
Merge branch 'develop' into refactor-backup-settings-screen
ethicnology Dec 20, 2025
62c816e
fix: resolve type cast error when setting custom absolute fees
basantagoswami Dec 21, 2025
5624a4e
Merge pull request #1687 from SatoshiPortal/fix-absolute-fee-type-cast
i5hi Dec 22, 2025
d0a6675
Merge pull request #1683 from SatoshiPortal/refactor-backup-settings-…
i5hi Dec 22, 2025
d9c0411
Merge pull request #1668 from SatoshiPortal/enable-disable-coinselection
i5hi Dec 22, 2025
12001c9
Merge branch 'develop' into internal-transfer-same-chain
i5hi Dec 22, 2025
00c8b18
fix: use stateful widget and pass list of utxos to state. clear logs …
i5hi Dec 22, 2025
303c9e0
Merge pull request #1676 from SatoshiPortal/internal-transfer-same-chain
i5hi Dec 22, 2025
d4d241f
fix: use consts instead of hardcoded strings
i5hi Dec 22, 2025
80e7128
Merge pull request #1664 from SatoshiPortal/fulcrum-es-default
i5hi Dec 22, 2025
0dbe9e2
fix: receive flow
i5hi Dec 22, 2025
de986fd
fix: send amount screen bugs - continue button not responding to amou…
i5hi Dec 22, 2025
9437e00
fix: send flow theming
i5hi Dec 22, 2025
2857359
fix: home page theming
i5hi Dec 22, 2025
56071d5
fix: home page scroll collison between wallets and buttons
i5hi Dec 22, 2025
2ebf3ce
fix: coin selection in Transfer flow
i5hi Dec 22, 2025
ca45f3d
fix: send/receive wallet selection padding
i5hi Dec 22, 2025
12975ac
fix: support chat theming
i5hi Dec 22, 2025
1e8f9e0
fix: transaction page theming
i5hi Dec 22, 2025
8919670
Merge pull request #1672 from SatoshiPortal/319-delete-wallet-remove-…
ethicnology Dec 22, 2025
96ab843
Merge pull request #1671 from SatoshiPortal/add-jade-disclaimer
ethicnology Dec 22, 2025
9bf386e
Merge branch 'develop' into 1212-bip85-ux
ethicnology Dec 22, 2025
9347f23
refactor: remove Recoverbull button from App Settings
ethicnology Dec 22, 2025
edefb4b
fix: finnish translation #1679
ethicnology Dec 22, 2025
6ab480a
Merge pull request #1639 from SatoshiPortal/1212-bip85-ux
ethicnology Dec 22, 2025
291544d
fix: usage of raw colors in support chat
i5hi Dec 22, 2025
5f0f9ea
Merge pull request #1689 from SatoshiPortal/theme-fixes
i5hi Dec 22, 2025
353d0b0
fix: button does not fit translation #1681
ethicnology Dec 22, 2025
3034e2d
feat: custom mempool url
basantagoswami Dec 22, 2025
ad83c40
fix db seeding issue with mempool tables
basantagoswami Dec 22, 2025
0b85d53
fix: inline inserts in schema instead of using db seeds
basantagoswami Dec 22, 2025
860c2b3
fix: allow language selection during before onboarding #1677
ethicnology Dec 22, 2025
e522069
refactor: allow everyone to test localization
ethicnology Dec 22, 2025
16c5453
Merge pull request #1692 from SatoshiPortal/language-adjustments
ethicnology Dec 22, 2025
a208e3b
chore: revert Google Drive API upgrade
ethicnology Dec 22, 2025
4c619a0
Merge pull request #1693 from SatoshiPortal/revert-drive-api-upgrade
ethicnology Dec 22, 2025
cdca1d3
fix: prevent primary key conflict in custom mempool server and improv…
basantagoswami Dec 22, 2025
cc376fa
chore: freeze dependency
ethicnology Dec 22, 2025
c2653c3
fix: change ExchangeLandingScreen theme colors and logo visibility
wired-pasteque Dec 22, 2025
0061e34
fix: change CurrencySettingsScreen colors for text in dark mode
wired-pasteque Dec 22, 2025
f0745ff
fix: change DevModeSwitch dialog background and text colors for dark
wired-pasteque Dec 22, 2025
4bbcccf
fix: change SwapExternalAddressInput hint and icon colors for
wired-pasteque Dec 22, 2025
2d608f9
fix: change ServiceStatusPage semantic colors for status indicators in
wired-pasteque Dec 22, 2025
699deb4
fix: change AllSeedViewScreen dialog and card colors for dark mode
wired-pasteque Dec 22, 2025
32477ba
fix: change ChoosePinCodeScreen text colors and button styling in dark
wired-pasteque Dec 22, 2025
e4a8eaf
fix: change AddressCard snackbar contrast in dark mode
wired-pasteque Dec 22, 2025
f73f176
chore: upgrade flutter to latest 3.38.5
ethicnology Dec 22, 2025
8c25eba
fix: replace in PriceInput modal with BlurredBottomSheet and fix colors
wired-pasteque Dec 22, 2025
af98900
Merge pull request #1694 from SatoshiPortal/dependency-freeze
ethicnology Dec 22, 2025
bb3c70a
fix: change background colors in dark mode
wired-pasteque Dec 22, 2025
9de4e7b
Merge pull request #1695 from wired-pasteque/fix-theme
ethicnology Dec 22, 2025
d4d6c7a
Merge pull request #1688 from SatoshiPortal/custom-mempool-server
i5hi Dec 23, 2025
60c284f
fix: backup warning theme. delete wallet popup theme. swap warning th…
i5hi Dec 23, 2025
77c05b5
fix: physical backup flow theme
i5hi Dec 23, 2025
35813f1
fix: remove autoswap warning if turned off
i5hi Dec 23, 2025
e69ebee
make bottom nav use background
i5hi Dec 23, 2025
1fd1328
fix: send/transfer confirm page details
i5hi Dec 23, 2025
e7a6aa1
fix: recoverbull pin overflow error - wrapped in scrollable widget + …
i5hi Dec 23, 2025
fafe8b5
refactor: move currency, theme and pin into app settings + improve icons
ethicnology Dec 23, 2025
c58d4bc
refactor: Update icons for settings and backup screens
ethicnology Dec 23, 2025
278a086
refactor: Unify Background Task Locator with the AppLocator into a
ethicnology Dec 23, 2025
aa06978
Merge pull request #1698 from SatoshiPortal/refactor-locator
ethicnology Dec 23, 2025
3aa15c5
refactor: make start backup red and first button in the page
ethicnology Dec 23, 2025
e91b31e
Merge pull request #1696 from SatoshiPortal/theme-fixes-2
i5hi Dec 23, 2025
2d4fb1f
fix: PriceInput opens the system DialPad
ethicnology Dec 23, 2025
46334f1
Merge pull request #1699 from SatoshiPortal/fix-open-system-keyboard-…
ethicnology Dec 23, 2025
0573411
Merge pull request #1697 from SatoshiPortal/refactor-settings
ethicnology Dec 23, 2025
8dde432
fix: linter
ethicnology Dec 23, 2025
3af4300
fix: speed up send broadcast flow by awaiting on sync after moving to…
i5hi Dec 24, 2025
2a2d9d3
fix: sell theme issues+ routing back to exchange home on success
i5hi Dec 24, 2025
01c494d
fix: recipients theming
i5hi Dec 24, 2025
866876e
fix: pay and withdraw theming
i5hi Dec 24, 2025
379bba4
fix: account information key theme
i5hi Dec 24, 2025
70fcfec
use BLoC event transformer to ignore new confirmations while one is p…
kumulynja Dec 24, 2025
f903dcb
refactor: replace showModalBottomSheet with BlurredBottomSheet in var…
ethicnology Dec 24, 2025
7d81f44
Merge pull request #1702 from SatoshiPortal/theme-fix-coin-selection
ethicnology Dec 24, 2025
a13e508
fix: french translations display in recoverbull pin selection
ethicnology Dec 24, 2025
81218e1
Merge pull request #1703 from SatoshiPortal/adapt-french-translations
ethicnology Dec 24, 2025
6ae13e7
add label to recipient list tile and searchable fields + add bill pay…
kumulynja Dec 26, 2025
ba64a32
docs: Weblate is a community translation platform that host us for free
ethicnology Dec 29, 2025
77e37e5
Merge pull request #1713 from SatoshiPortal/add-weblate-to-readme
ethicnology Dec 29, 2025
0a5f466
docs: update README with direct links to replace outdated references
ethicnology Dec 29, 2025
f14ad6e
Merge pull request #1714 from SatoshiPortal/update-readme
ethicnology Dec 29, 2025
d6471c9
Added translation using Weblate (Ukrainian)
ethicnology Dec 22, 2025
f4ab450
Translated using Weblate (Ukrainian)
wired-pasteque Dec 22, 2025
2befab1
Added translation using Weblate (German)
ethicnology Dec 29, 2025
7e04ac5
Added translation using Weblate (Armenian)
ethicnology Dec 29, 2025
87f8894
Added translation using Weblate (Italian)
ethicnology Dec 29, 2025
188b60e
Added translation using Weblate (Russian)
ethicnology Dec 29, 2025
847bc9f
Added translation using Weblate (Portuguese)
ethicnology Dec 29, 2025
30e6c74
Translated using Weblate (German)
Dec 29, 2025
e77abbd
Translated using Weblate (German)
Dec 29, 2025
8ed7598
Translated using Weblate (Spanish)
BullishNode Dec 29, 2025
e4c283f
Translated using Weblate (Finnish)
tlindi Dec 29, 2025
f2f1c02
Translated using Weblate (Portuguese)
Dec 29, 2025
a80a5e1
Translated using Weblate (Italian)
Dec 29, 2025
cdd9569
Translated using Weblate (Italian)
Dec 29, 2025
7359317
Translated using Weblate (Russian)
Dec 30, 2025
e899df5
Translated using Weblate (Russian)
Dec 30, 2025
7b91fca
Translated using Weblate (Ukrainian)
Dec 29, 2025
a17c569
Translated using Weblate (Ukrainian)
Dec 29, 2025
c9eda20
Translated using Weblate (French)
BullishNode Dec 29, 2025
ee61f80
Merge pull request #1 from ethicnology/weblate-translations
ethicnology Dec 30, 2025
f0eba5a
Merge pull request #1715 from ethicnology/develop
ethicnology Dec 30, 2025
09ed8d6
fix: translations
ethicnology Dec 30, 2025
08c3859
feat: enable support for Ukrainian, Russian, German, Italian and
ethicnology Dec 30, 2025
3db8db7
Merge pull request #1716 from SatoshiPortal/language-support
ethicnology Dec 30, 2025
074f7f8
Merge branch 'develop' into bill-recipients-info
i5hi Dec 30, 2025
7b34a98
Merge pull request #1709 from SatoshiPortal/bill-recipients-info
i5hi Dec 30, 2025
b4c5f08
Merge branch 'develop' into minor-patches
i5hi Dec 30, 2025
7341c5f
fix: bottom QR modal
i5hi Dec 30, 2025
3d78ddb
Merge pull request #1700 from SatoshiPortal/minor-patches
i5hi Dec 30, 2025
fd4373e
feat: add announcements feature to exchange module
mocodesmo Dec 30, 2025
cc2d455
Merge pull request #1701 from SatoshiPortal/fix-double-tap-duplicate-…
i5hi Dec 30, 2025
04f7148
fix: theme in recoverbull
ethicnology Dec 30, 2025
68a1117
fix: theme in exchange buy
ethicnology Dec 30, 2025
cf64759
refactor: deposit the arrow goes towards the app, while withdrawal goes
ethicnology Dec 30, 2025
87b79c9
fix: theme for backup warning
ethicnology Dec 30, 2025
a7ea8b8
fix: view vault key theme
ethicnology Dec 30, 2025
2d22e3f
fix: button shouldn't be red
ethicnology Dec 30, 2025
7ed5348
fix: various theme and translations overflow issues
ethicnology Dec 30, 2025
308f1ec
Translated using Weblate (Spanish)
Dec 30, 2025
b7dff8e
Translated using Weblate (Finnish)
Dec 30, 2025
7437d11
Translated using Weblate (Finnish)
Dec 30, 2025
044e76d
Added translation using Weblate (Chinese (Simplified Han script))
ethicnology Dec 30, 2025
d98b0c9
Merge pull request #1718 from SatoshiPortal/patch
ethicnology Dec 30, 2025
8e969e2
Translated using Weblate (Chinese (Simplified Han script))
Dec 30, 2025
ae8ab2b
Translated using Weblate (Chinese (Simplified Han script))
Dec 30, 2025
3e43c57
Merge branch 'develop' into weblate-translations
ethicnology Dec 30, 2025
573f113
fix: Remove stray closing brace at end of app_es.arb
ethicnology Dec 30, 2025
abf566b
refactor: add simplified chinese
ethicnology Dec 30, 2025
4945a70
refactor: Use singular/plural localization because translation platform
ethicnology Dec 30, 2025
84f6756
feat: Add translation warning sheet on language change
ethicnology Dec 30, 2025
0f82d75
refactor: clean translations files to reduce their size (removing
ethicnology Dec 30, 2025
5a98f87
refactor: show the translation warning once per session
ethicnology Dec 30, 2025
cf08e49
Merge pull request #1719 from ethicnology/weblate-translations
ethicnology Dec 30, 2025
9b7f00b
fix: Support chat always accessible and warning message update
i5hi Dec 31, 2025
b950f7d
fix: remove support chat icon from exchange redirection screen
i5hi Dec 31, 2025
919f3bf
fix: suppot icon redirect to login if no api key found
i5hi Dec 31, 2025
dbf7792
fix: theme errors in buy and funding
i5hi Dec 31, 2025
63eb680
fix: exchange landing page theme fix
i5hi Dec 31, 2025
d1127d0
feat: share log via support chat
i5hi Dec 31, 2025
f3132fd
chore: clean log
i5hi Dec 31, 2025
cc13397
fix: support chat redirect ui
i5hi Dec 31, 2025
e0e52e7
fix: text and localization for support chat
i5hi Dec 31, 2025
ae5a860
fix: remove attach log from cubit and use usecase
i5hi Dec 31, 2025
f69a933
fix: added missing ui screen
i5hi Dec 31, 2025
5e063cb
Merge pull request #1721 from SatoshiPortal/minor-fixes-001
i5hi Dec 31, 2025
b2a257d
fix: migration fixes
i5hi Dec 31, 2025
c76d940
Merge pull request #1722 from SatoshiPortal/migration-fixes-6.5.0
i5hi Dec 31, 2025
c2a1dc3
fix: theme related issues on all QR codes
i5hi Dec 31, 2025
bf99e2a
feat: migration test 10to11
i5hi Dec 31, 2025
6a203bd
fix: qr images
i5hi Dec 31, 2025
fcaecc1
feat: import keystone
i5hi Dec 31, 2025
5818eab
Merge pull request #1723 from SatoshiPortal/theme-fixes-3
i5hi Dec 31, 2025
f0ad4a2
Merge branch 'develop' into exchange-announcements
mocodesmo Jan 2, 2026
26451b7
Minor UI edits on AutoSwap warning feature
FrancisPouliot Jan 5, 2026
6b28742
Merge pull request #1724 from BullishNode/autoswap-ui-improvements
i5hi Jan 5, 2026
fee08a6
fix: buy view details button theme fix
i5hi Jan 5, 2026
0da726b
Merge pull request #1717 from SatoshiPortal/exchange-announcements
i5hi Jan 5, 2026
fc8ca8d
fix: transfer amount validation error
i5hi Jan 5, 2026
8616226
Merge pull request #1725 from SatoshiPortal/theme-fixes-4
i5hi Jan 5, 2026
5f326bd
fix: keystone derivation path options + exchange user summary null issue
i5hi Jan 5, 2026
f6fe2a1
refactor: swap deposit and withdraw actions and arrows
ethicnology Jan 5, 2026
d6558cb
refactor: update keystone instructions #1730
ethicnology Jan 5, 2026
3c27cf2
fix: keystone regression to select derivation path before importing t…
ethicnology Jan 5, 2026
92718db
refactor: reduce delay because passport QR are very fast
ethicnology Jan 5, 2026
0965d47
Merge pull request #1729 from SatoshiPortal/switch-arrows
i5hi Jan 6, 2026
b08fc88
Merge pull request #1728 from SatoshiPortal/minor-fixes-5
i5hi Jan 6, 2026
f01e18d
Add logs to debug startup issue
i5hi Jan 6, 2026
26ef721
fix: wrap tor initilaization in try catch in app startup to ensure th…
i5hi Jan 6, 2026
783ee80
Merge pull request #1732 from SatoshiPortal/ios-ss-error
i5hi Jan 6, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion .fvmrc
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
{
"flutter": "3.29.3"
"flutter": "3.38.5"
}
6 changes: 3 additions & 3 deletions .github/workflows/analyze_and_test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,14 @@ jobs:

- name: Install FVM
run: |
curl -fsSL https://fvm.app/install.sh | bash
echo "$HOME/.pub-cache/bin" >> $GITHUB_PATH
curl -fsSL https://fvm.app/install.sh | bash -s -- 4.0.5
echo "$HOME/fvm/bin" >> $GITHUB_PATH

- run: make fvm-check
- run: make clean
- run: make deps
- run: make build-runner
- run: make l10n
- run: make translations

- name: Create .env file
run: |
Expand Down
28 changes: 28 additions & 0 deletions .github/workflows/claude.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
name: Claude Code

on:
issue_comment:
types: [created]
pull_request_review_comment:
types: [created]

permissions:
id-token: write # needed for OIDC
contents: write # so it can write the repo
issues: write # so it can comment on issues
pull-requests: write # so it can comment on PRs

jobs:
claude:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
token: ${{ secrets.GITHUB_TOKEN }}
fetch-depth: 0 # Fetch full history for branch operations
persist-credentials: true # Keep credentials for subsequent git commands

- uses: anthropics/claude-code-action@v1
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
claude_args: "--model claude-opus-4-5-20251101"
5 changes: 5 additions & 0 deletions ARCHITECTURE.md
Original file line number Diff line number Diff line change
Expand Up @@ -134,6 +134,11 @@ In this project, BLoCs/Cubits are used for state management, but other solutions
- The **domain and presentation layer should use entities**, not models.
- Only the **data layer should use models**, and transform them to entities.

### Rules for AI:
- Always follow the architecture of the project when developing features.
- Always use colors from the theme; never use raw colors. When the user explains something using raw color language; find the closest color in the theme and based on the application use a color from the theme that would make sense in dark mode too but do not try to change the color theme file by yourself ever.
-

### Further reading

You can read more about Clean Architecture principles applied to Flutter in the following articles:
Expand Down
56 changes: 12 additions & 44 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
[![Analyze](https://github.com/SatoshiPortal/bullbitcoin-mobile/actions/workflows/analyze.yml/badge.svg)](https://github.com/SatoshiPortal/bullbitcoin-mobile/actions/workflows/analyze.yml) [![Build](https://github.com/SatoshiPortal/bullbitcoin-mobile/actions/workflows/build.yml/badge.svg)](https://github.com/SatoshiPortal/bullbitcoin-mobile/actions/workflows/build.yml)
[![Analyze and Test](https://github.com/SatoshiPortal/bullbitcoin-mobile/actions/workflows/analyze_and_test.yml/badge.svg?branch=develop)](https://github.com/SatoshiPortal/bullbitcoin-mobile/actions/workflows/analyze_and_test.yml)

# About BULL Wallet

Expand All @@ -16,22 +16,13 @@ At launch, two wallets are generated: the Secure Bitcoin Wallet and the Instant

Both these wallets are able to send and receive Lightning Network payments via the swap provider.

## Core dependencies
### Translations

- [bdk](https://github.com/bitcoindevkit/bdk)
- [bdk-flutter](https://github.com/LtbLightning/bdk-flutter)
- [lwk](https://github.com/Blockstream/lwk)
- [lwk-dart](https://github.com/SatoshiPortal/lwk-dart)
- [boltz-rust](https://github.com/SatoshiPortal/boltz-rust)
- [boltz-dart](https://github.com/SatoshiPortal/boltz-dart)
[![Translation status](https://hosted.weblate.org/widget/bull/open-graph.png)](https://hosted.weblate.org/engage/bull/)

## Default external service providers
### [Dependencies](https://github.com/SatoshiPortal/bullbitcoin-mobile/blob/develop/pubspec.yaml#L9)

- mempool.space API for fee estimates
- mempool.bullbitcoin.com / mempool.space for transaction and address explorer
- bullbitcoin.com API for fiat prices
- bullbitcoin.com and blockstream.info electrum servers for blockchain data
- boltz.exchange for swap services
### [Default service providers](https://github.com/SatoshiPortal/bullbitcoin-mobile/blob/develop/lib/core/utils/constants.dart#L60)

### General features

Expand Down Expand Up @@ -68,8 +59,7 @@ We try to always use a wallet that is the same network as the recipient: if reci

Automated selection of the wallet can be overridden by the user at any time. This will most likely trigger a warning that the user can choose to ignore.

### Wallet security

## Wallet security
- An optional PIN from 4 to 8 digits can be set for access to the app.
- The PIN is optional to prevent users from being accidentally locked out of a wallet without having first performed a backup.
- Private keys are stored in secure storage and only accessed via the application when signing transactions, viewing the wallet’s private keys for back-up (mnemonic or xpriv). This prevents malicious applications from accessing the private keys.
Expand Down Expand Up @@ -106,42 +96,20 @@ When installing the BULL Wallet app, a self-custodial wallet will be created, re

When spending or selling Bitcoin, the exchange will create a payment invoice (BIP21) that will automatically be opened by the same application. All the user has to do is to confirm or reject that transaction. The experience will be functionally the same as that of a custodial exchange, with the exception that the user will have to do a backup of the Bitcoin wallet.

## Current roadmap

Suggestion to this roadmap can be proposed as Github issues.

- [x] Bumping replace-by-fee transactions
- [ ] Re-implement smarter coin selection and labelling
- [x] One mnemonic: new wallets are always created as a BIP39 passphrase
- [x] Good UX/UI for creating PSBTs from watch-only wallets
- [x] Good UX/UI for decoding and broadcasting PSBTs
- [x] Better UX/UI for importing watch-only wallets
- [x] Integration of Coinkite's BBQR library to export public keys, export PSBTs and import PSBTs
- [x] Bitcoin <> Liquid network swaps (depends on Boltz backend update)
- [ ] Integrate a client-side passphrase strength estimator
- [x] Encrypted cloud backups connected to a key server: RecoverBull
- [ ] Store persistent encrypted wallet backup on device
- [ ] Biometric authentication
- [ ] Show fiat value of transactions at the approximated time they were made
- [ ] Spanish and French translations
- [x] Payjoin integration
- [ ] Integrate Bull Bitcoin Fee multiple
- [x] Auto-consolidation mode for spend
- [ ] Small UTXO warning and consolidation suggestions
- [ ] Configurable mempool explorer URLs
- [ ] Configurable swap provider (similar to Electrum server)
## Roadmap

The roadmap is based on the Github issues. You can suggest your own ideas by creating a new issue. The issues are then prioritized by the maintainers according to their importance and feasibility.

## Acknowledgements

- The project is entirely financed by bullbitcoin.com
- The project is entirely financed by [bullbitcoin.com](https://bullbitcoin.com)
- Created by Francis Pouliot and Vishal Menon
- Main developers: Vishal, Morteza and Sai
- Maintainers: [i5hi](https://github.com/i5hi), [mocodesmo](https://github.com/mocodesmo), [ethicnology](https://github.com/ethicnology), [kumulynja](https://github.com/kumulynja), [basantagoswami](https://github.com/basantagoswami) and Q&A [kiranmetri](https://github.com/kiranmetri)
- Thanks to all [contributors](https://github.com/SatoshiPortal/bullbitcoin-mobile/graphs/contributors)
- Thanks to Raj for his work on Boltz-rust
- Thanks to the BDK team: BitcoinZavior and ThunderBiscuit
- Eternal gratitude to the Boltz team Michael and Killian
- Thanks to Riccardo and the LWK team
- Thanks to Blockstream for developing the Liquid Network

![image](https://github.com/BullishNode/bullbitcoin-mobile/assets/75800272/a61e4ccc-897d-410f-b97b-37a7c2b240cb)

This project is tested with BrowserStack
9 changes: 4 additions & 5 deletions analysis_options.yaml
Original file line number Diff line number Diff line change
@@ -1,18 +1,17 @@
include: package:lint/analysis_options.yaml
include: package:lints/recommended.yaml

linter:
rules:
avoid_classes_with_only_static_members: false
avoid_dynamic_calls: false
no_wildcard_variable_uses: false
unawaited_futures: true
avoid_redundant_argument_values: false
avoid_dynamic_calls: false


analyzer:
errors:
todo: ignore
exclude:
- lib/**/*.g.dart
- lib/**/*.freezed.dart
- maintainance/**
- pubspec.yaml

4 changes: 2 additions & 2 deletions android/app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ def flutterVersionName = localProperties.getProperty('flutter.versionName') ?: '


android {
compileSdk = 35
compileSdk = 36

ndkVersion = "29.0.13113456"
compileOptions {
Expand All @@ -43,7 +43,7 @@ android {
applicationId = 'com.bullbitcoin.mobile'
minSdkVersion 26
// TODO: targetSdkVersion flutter.targetSdkVersion
targetSdkVersion 35
targetSdkVersion 36
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName

Expand Down
3 changes: 3 additions & 0 deletions android/app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" android:maxSdkVersion="32"/>
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES"/>
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO"/>
<!-- <uses-permission android:name="android.permission.NFC"/> -->
<uses-feature android:name="android.hardware.bluetooth" android:required="false" />
<uses-feature android:name="android.hardware.bluetooth_le" android:required="false" />
Expand Down
2 changes: 1 addition & 1 deletion android/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ subprojects {
if (project.plugins.hasPlugin("com.android.application") ||
project.plugins.hasPlugin("com.android.library")) {
project.android {
compileSdk = 35
compileSdk = 36
buildToolsVersion "35.0.0"
}
}
Expand Down
57 changes: 9 additions & 48 deletions integration_test/sqlite_transactions_test.dart
Original file line number Diff line number Diff line change
@@ -1,11 +1,8 @@
import 'dart:convert';

import 'package:bb_mobile/core/electrum/domain/value_objects/electrum_server_network.dart';
import 'package:bb_mobile/core/electrum/frameworks/drift/datasources/electrum_remote_datasource.dart';
import 'package:bb_mobile/core/electrum/frameworks/drift/models/electrum_server_model.dart';
import 'package:bb_mobile/core/storage/sqlite_database.dart';
import 'package:bb_mobile/core/transaction/data/transaction_repository.dart';
import 'package:bb_mobile/core/transaction/domain/entities/tx.dart';
import 'package:bb_mobile/core/transactions/bitcoin_transaction_repository.dart';
import 'package:bb_mobile/core/utils/constants.dart';
import 'package:bb_mobile/locator.dart';
import 'package:bb_mobile/main.dart';
Expand All @@ -21,8 +18,9 @@ Future<void> main({bool isInitialized = false}) async {
url: ApiServiceConstants.bbElectrumUrl,
network: ElectrumServerNetwork.bitcoinMainnet,
),
sqlite: sqlite,
);
final transactionRepository = TransactionRepository(
final transactionRepository = BitcoinTransactionRepository(
electrumRemoteDatasource: electrumDatasource,
);

Expand All @@ -33,58 +31,21 @@ Future<void> main({bool isInitialized = false}) async {

tearDownAll(() {});
group('Sqlite Integration Tests', () {
test('Fetch tx bytes from Electrum and store it into Sqlite', () async {
// Ensure the tx does not exists in sqlite
final sqliteTx =
await sqlite.managers.transactions
.filter((e) => e.txid(txid))
.getSingleOrNull();
expect(sqliteTx, isNull);

// Fetch the transaction from electrum
final txBytes = await electrumDatasource.getTransaction(txid);
// Converts the bytes into entity
final txEntity = await RawBitcoinTxEntity.fromBytes(txBytes);

// Store the transaction into sqlite
await sqlite.managers.transactions.create(
(t) => t(
txid: txEntity.txid,
version: txEntity.version,
size: txEntity.size.toString(),
vsize: txEntity.vsize.toString(),
locktime: txEntity.locktime,
vin: json.encode(txEntity.vin.map((e) => e.toJson()).toList()),
vout: json.encode(txEntity.vout.map((e) => e.toJson()).toList()),
),
);

// Fetch the transaction locally from sqlite
final sqliteFetched =
await sqlite.managers.transactions
.filter((e) => e.txid(txid))
.getSingleOrNull();
expect(sqliteFetched, isNotNull);
expect(sqliteFetched!.txid, txid);
});

test('Ensure the repository works', () async {
// Ensure the tx does not exists in sqlite
var sqliteTx =
await sqlite.managers.transactions
.filter((e) => e.txid(txid))
.getSingleOrNull();
var sqliteTx = await sqlite.managers.transactions
.filter((e) => e.txid(txid))
.getSingleOrNull();
expect(sqliteTx, isNull);

// Fetch a transaction and cache it in sqlite if not present
final tx = await transactionRepository.fetch(txid: txid);
expect(tx.txid, txid);

// Ensure the tx is now stored in sqlite
sqliteTx =
await sqlite.managers.transactions
.filter((e) => e.txid(txid))
.getSingleOrNull();
sqliteTx = await sqlite.managers.transactions
.filter((e) => e.txid(tx.txid))
.getSingleOrNull();
expect(sqliteTx, isNotNull);
expect(tx.txid, sqliteTx!.txid);
});
Expand Down
2 changes: 1 addition & 1 deletion ios/Flutter/AppFrameworkInfo.plist
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,6 @@
<key>CFBundleVersion</key>
<string>1.0</string>
<key>MinimumOSVersion</key>
<string>12.0</string>
<string>14.0</string>
</dict>
</plist>
3 changes: 2 additions & 1 deletion ios/Podfile
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# Uncomment this line to define a global platform for your project
platform :ios, '13.0'
platform :ios, '14.0'

# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
ENV['COCOAPODS_DISABLE_STATS'] = 'true'
Expand Down Expand Up @@ -51,6 +51,7 @@ post_install do |installer|
config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] ||= [
'$(inherited)',
'PERMISSION_CAMERA=1',
'PERMISSION_PHOTOS=1',
]
end
end
Expand Down
Loading