Skip to content
Open

Qa #1505

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
248 commits
Select commit Hold shift + click to select a range
21c0334
Merge pull request #1855 from Solid-Money/feat/soETH
MayankMittal1 Apr 7, 2026
8e3659d
feat: show tokens from all vaults in Add funds modal
claude Apr 7, 2026
eb98746
fix: restore 2-min estimated speed for Fuse chain
claude Apr 7, 2026
ecfe6d2
fix: show 2-min Fuse estimate only when token is known
claude Apr 7, 2026
64295e7
Merge pull request #1859 from Solid-Money/claude/check-token-display-…
MusabShakeel576 Apr 7, 2026
fabc8d9
Merge pull request #1862 from Solid-Money/mayank/fix/soeth-deposit
MayankMittal1 Apr 7, 2026
c9d2b64
fix: handle native ETH and FUSE tokens in Add funds transfer
claude Apr 7, 2026
2cac6d1
refactor: use isNative field from bridge config for native token dete…
claude Apr 7, 2026
65ed13c
Merge pull request #1863 from Solid-Money/claude/check-token-display-…
MusabShakeel576 Apr 7, 2026
53952e6
Fix "Add {token} to wallet" activity category to show "Wallet transfe…
claude Apr 7, 2026
45cc30d
Add TransactionType.FUND for wallet transfers instead of overriding D…
claude Apr 7, 2026
3cc5e0d
Merge pull request #1865 from Solid-Money/claude/fix-token-wallet-cat…
MusabShakeel576 Apr 7, 2026
e765494
fix: remove newline characters in deposit option descriptions on mobile
claude Apr 7, 2026
044b338
Merge pull request #1867 from Solid-Money/claude/fix-mobile-deposit-n…
MusabShakeel576 Apr 7, 2026
17b9c8a
fix: use Solid address screen for native mobile Fund button instead o…
claude Apr 7, 2026
2105c14
Merge pull request #1869 from Solid-Money/claude/fix-fund-button-soli…
MusabShakeel576 Apr 7, 2026
8f73357
feat: display copyable TOTP secret for manual authenticator entry
claude Apr 7, 2026
e8413ff
Update card-onboard country selection page text
claude Apr 7, 2026
c254ec8
chore: update Expo SDK 55 patch packages
LiorAgnin Apr 7, 2026
db8deda
Merge pull request #1871 from Solid-Money/chore-expo-sdk-55-patch-upd…
LiorAgnin Apr 7, 2026
1669f00
Make "Learn more" link bold white without underline
claude Apr 7, 2026
280fad4
Merge pull request #1873 from Solid-Money/claude/update-card-onboard-…
MusabShakeel576 Apr 7, 2026
9b32c68
fix: patch iOS OpenSSL pod conflict
LiorAgnin Apr 7, 2026
09cdef8
Merge pull request #1875 from Solid-Money/fix-ios-openssl-conflict
LiorAgnin Apr 7, 2026
386d10a
Merge pull request #1878 from Solid-Money/claude/add-2fa-backup-code-…
MusabShakeel576 Apr 8, 2026
f66b35d
fix: add bottom padding to 2FA modal to prevent content cutoff
claude Apr 8, 2026
f9bc4b5
Merge pull request #1881 from Solid-Money/claude/add-2fa-backup-code-…
MusabShakeel576 Apr 8, 2026
ad9ea0c
Merge pull request #1884 from Solid-Money/mayank/feat/soeth_withdraw
MayankMittal1 Apr 8, 2026
259ec73
Make flag image fill the entire circle
claude Apr 9, 2026
5d2d54e
Update waitlist text to prompt users to click notify button
claude Apr 9, 2026
9f0f77b
Simplify 2FA status message to "Not registered"
claude Apr 9, 2026
34ef2ee
Fix flash of empty state on app startup
claude Apr 9, 2026
bfc3bcc
Add back button to Two-Factor Authentication modal
claude Apr 9, 2026
85f70af
Merge pull request #1885 from Solid-Money/claude/flag-fill-circle-Oim7S
MusabShakeel576 Apr 9, 2026
b957705
feat: style 2FA QR code to match Solid address QR code
claude Apr 9, 2026
038828f
Merge pull request #1886 from Solid-Money/claude/update-waitlist-text…
MusabShakeel576 Apr 9, 2026
8a8f704
Merge pull request #1888 from Solid-Money/claude/simplify-auth-error-…
MusabShakeel576 Apr 9, 2026
4184ec9
Merge pull request #1889 from Solid-Money/claude/fix-startup-loading-…
MusabShakeel576 Apr 9, 2026
6cc4f97
Merge pull request #1890 from Solid-Money/claude/add-back-button-8bQ3E
MusabShakeel576 Apr 9, 2026
4e10dac
Merge pull request #1892 from Solid-Money/claude/style-2fa-qr-code-YylBF
MusabShakeel576 Apr 9, 2026
3197d00
fix: country selection back button navigates to /card instead of /car…
claude Apr 9, 2026
5eb6ec2
Merge pull request #1898 from Solid-Money/claude/fix-country-selectio…
MusabShakeel576 Apr 9, 2026
a87f202
Fix native tab navigation flashing previous page
claude Apr 9, 2026
f28d079
Merge pull request #1901 from Solid-Money/claude/fix-startup-loading-…
MusabShakeel576 Apr 9, 2026
6ba2e79
Merge pull request #1903 from Solid-Money/mayank/fix/mercuryo_fix
MayankMittal1 Apr 9, 2026
f74c523
Fix vault/principal token sync in deposit modal
cursoragent Apr 12, 2026
0fa8ae6
Rename deposit outputToken to principalToken
cursoragent Apr 12, 2026
7c92f91
Merge pull request #1905 from Solid-Money/cursor/fix-vault-principal-…
MusabShakeel576 Apr 12, 2026
1cb1b32
fix: restore card access and layerzero helpers in qa
cursoragent Apr 12, 2026
d2e256e
Merge pull request #1911 from Solid-Money/cursor/restore-rain-helpers…
MusabShakeel576 Apr 12, 2026
3f766cd
feat: gate card country access behind test feature allowlist
cursoragent Apr 12, 2026
469885d
fix: redirect to /card/activate when Rain KYC is not approved after D…
claude Apr 13, 2026
16d6c13
Use platform-specific height overrides for toast close button
claude Apr 13, 2026
9229457
fix: migrate from deprecated Stargate API to LayerZero VT API for bri…
claude Apr 13, 2026
3b12529
Merge pull request #1914 from Solid-Money/claude/fix-kyc-redirect-log…
MusabShakeel576 Apr 13, 2026
e5fc30f
Merge pull request #1913 from Solid-Money/cursor/restore-rain-helpers…
MusabShakeel576 Apr 13, 2026
97f13f7
Merge pull request #1917 from Solid-Money/claude/fix-mobile-toast-h-f…
MusabShakeel576 Apr 13, 2026
b309f0c
Merge pull request #1918 from Solid-Money/claude/fix-deposit-card-err…
MusabShakeel576 Apr 13, 2026
ea01f34
Add mul53 to test features whitelist for Rain card testing
claude Apr 13, 2026
3ce42d9
Merge pull request #1920 from Solid-Money/claude/add-test-user-whitel…
MusabShakeel576 Apr 13, 2026
8a71e36
Remove whitelist gate from Rain card flows so all users can test
claude Apr 13, 2026
081a5aa
fix: use direct contract quoteSend call instead of deprecated Stargat…
claude Apr 13, 2026
20ee69c
fix: use config-driven destination chain for Rain card deposits inste…
claude Apr 13, 2026
dcf8e6e
refactor: move getStargateQuote from api.ts to stargate.ts and ABI to…
claude Apr 13, 2026
6df1e00
Merge pull request #1925 from Solid-Money/claude/enable-rain-card-tes…
MusabShakeel576 Apr 13, 2026
54e40f7
Remove unused useCardWithdrawAllowed hook
claude Apr 13, 2026
c36b682
Merge pull request #1924 from Solid-Money/claude/cherrypick-deposit-f…
MusabShakeel576 Apr 13, 2026
7e0bcf3
Merge pull request #1926 from Solid-Money/claude/enable-rain-card-tes…
MusabShakeel576 Apr 13, 2026
81e80f2
fix: use correct Stargate USDC pool address on Fuse for quoteSend
claude Apr 13, 2026
e7b3d77
fix: show KYC rejection message when Didit verification is declined
claude Apr 13, 2026
1bca188
fix: handle all Didit KYC states in card step display
claude Apr 13, 2026
fe5566b
Merge pull request #1929 from Solid-Money/claude/fix-kyc-error-messag…
MusabShakeel576 Apr 13, 2026
f271499
feat: display dynamic Didit KYC rejection reasons in card step
claude Apr 14, 2026
1456d1d
fix: remove undefined isWithdrawAllowed prop causing runtime error
claude Apr 14, 2026
da966bf
feat: add Order Physical Card button and modal to card details page
claude Apr 14, 2026
d88eefa
Merge pull request #1933 from Solid-Money/claude/remove-unused-iswith…
MusabShakeel576 Apr 14, 2026
585aff8
fix: handle unrecognized Rain status (didit_forward_failed) in step d…
claude Apr 14, 2026
adc3770
Merge pull request #1936 from Solid-Money/claude/fix-kyc-error-messag…
MusabShakeel576 Apr 14, 2026
ec89989
feat: update physical card modal to eligibility check flow
claude Apr 14, 2026
e3b968e
feat: add shipping form modal with KYC pre-fill and cancel flow
claude Apr 14, 2026
12a7e23
refactor: use TanStack Query, react-hook-form, zod, and TextInput
claude Apr 14, 2026
26192af
fix: remove unused isOrderPhysicalCardModalOpen prop from DesktopHeader
claude Apr 14, 2026
2259480
refactor: replace Alert.alert with Dialog for cancel confirmation
claude Apr 14, 2026
13edd52
refactor: split order and cancel physical card into separate modals
claude Apr 14, 2026
13e4cc9
Merge pull request #1939 from Solid-Money/claude/add-order-physical-c…
MusabShakeel576 Apr 14, 2026
e232614
fix: deploy Safe on card chain before Rain collateral withdrawal
claude Apr 14, 2026
11d3a33
Merge pull request #1941 from Solid-Money/claude/cherrypick-deposit-f…
MusabShakeel576 Apr 14, 2026
3871102
fix: recreate smart account client after Safe deployment
claude Apr 14, 2026
56c130c
Fix AES-GCM decryption: authTagLength should be in bytes, not bits
claude Apr 15, 2026
385b977
Merge pull request #1943 from Solid-Money/claude/cherrypick-deposit-f…
MusabShakeel576 Apr 15, 2026
1ce5e42
Merge pull request #1947 from Solid-Money/claude/fix-card-details-mob…
MusabShakeel576 Apr 15, 2026
a4447f2
Fix Didit widget blank screen when KYC completed on mobile
claude Apr 15, 2026
97e52c0
fix: remove Rain-specific cents-to-dollars division for card transact…
claude Apr 15, 2026
fcb1baa
Merge pull request #1948 from Solid-Money/claude/fix-rain-card-curren…
MusabShakeel576 Apr 15, 2026
2ed3530
Merge pull request #1950 from Solid-Money/claude/fix-didit-widget-bla…
MusabShakeel576 Apr 15, 2026
5b33890
fix: add missing return in getCardBalance API function
claude Apr 15, 2026
f1829c8
feat: display merchant city and country under merchant name in card a…
claude Apr 15, 2026
c8b5229
Merge pull request #1953 from Solid-Money/claude/override-mul53-rain-…
MusabShakeel576 Apr 15, 2026
73639bf
Merge pull request #1952 from Solid-Money/claude/rain-transaction-sou…
MusabShakeel576 Apr 15, 2026
8139fa9
fix: savings chart, redirect to strategy on click
MayankMittal1 Apr 16, 2026
60644c0
Merge branch 'qa' into mayank/fix/savings-analytics
MayankMittal1 Apr 16, 2026
f0f2a2c
Merge pull request #1957 from Solid-Money/mayank/fix/savings-analytics
MayankMittal1 Apr 16, 2026
1140c4b
feat: show cashback escrow status and time left in card activity
claude Apr 19, 2026
e814b01
fix: center merchant name/location and trim whitespace
claude Apr 19, 2026
4a9749b
Merge pull request #1958 from Solid-Money/claude/cashback-escrow-stat…
MusabShakeel576 Apr 19, 2026
9dcdf6e
Merge pull request #1959 from Solid-Money/claude/fix-merchant-card-di…
MusabShakeel576 Apr 19, 2026
9998a59
feat(card-deposit): wire CARD deposit category into connect-wallet wo…
claude Apr 20, 2026
8e88106
fix(card-deposit): use EXPO_PUBLIC_MINIMUM_SPONSOR_AMOUNT for minimum…
claude Apr 20, 2026
fe1f9ab
refactor(card-deposit): source card deposits from Solid Safe AA
claude Apr 20, 2026
0e9eaee
refactor(card-deposit): replace 'SAVINGS'|'CARD' literal with Deposit…
claude Apr 20, 2026
5b499da
Merge pull request #1962 from Solid-Money/claude/deposit-card-all-cha…
MusabShakeel576 Apr 20, 2026
78cf00b
fix(card-deposit): prevent silent no-op and add minimum-amount UI
claude Apr 20, 2026
c4b857d
Merge pull request #1964 from Solid-Money/claude/deposit-card-all-cha…
MusabShakeel576 Apr 20, 2026
4fed919
refactor(card-deposit): reuse savings wallet token selector screen
claude Apr 20, 2026
b13fe6d
Merge pull request #1966 from Solid-Money/claude/deposit-card-all-cha…
MusabShakeel576 Apr 20, 2026
1ee1e62
fix(card-deposit): render WalletTokenButton inline inside amount input
claude Apr 20, 2026
adb3f3f
fix(card-deposit): route token selection back to card modal, preserve…
claude Apr 20, 2026
d6b5d83
Merge pull request #1968 from Solid-Money/claude/deposit-card-all-cha…
MusabShakeel576 Apr 20, 2026
d733cc1
feat(card-deposit): add external wallet option to internal form dropdown
claude Apr 21, 2026
c3dd834
Merge pull request #1970 from Solid-Money/claude/add-external-wallet-…
MusabShakeel576 Apr 21, 2026
19ff621
fix(card-deposit): balance + symbol track the selected wallet chain
claude Apr 21, 2026
6ca6334
Merge pull request #1973 from Solid-Money/claude/deposit-card-all-cha…
MusabShakeel576 Apr 21, 2026
2d94ebb
fix(card-deposit): hide flex spacer when external wallet is selected
claude Apr 21, 2026
6d4ae90
Merge pull request #1974 from Solid-Money/claude/add-external-wallet-…
MusabShakeel576 Apr 21, 2026
34a2230
fix(modal): keyboard no longer covers OTP input on native
claude Apr 22, 2026
b5a7292
feat(settings): use rounded BackButton component in mobile header
claude Apr 22, 2026
5a13773
revert(back-button): keep ArrowLeft icon in shared BackButton
claude Apr 22, 2026
e7814b1
Merge pull request #1976 from Solid-Money/claude/update-back-button-c…
MusabShakeel576 Apr 22, 2026
8f7106b
fix(welcome): filter passkey prompt to selected user's credential
claude Apr 22, 2026
227b8ba
Merge pull request #1978 from Solid-Money/claude/fix-keyboard-otp-inp…
MusabShakeel576 Apr 22, 2026
98c3263
feat(welcome): pre-select user so passkey prompt filters to that cred…
claude Apr 22, 2026
6fe3256
style(toast): add info type matching success and error style
claude Apr 22, 2026
bab4de2
style(toast): default info badgeText to empty
claude Apr 22, 2026
e0a75ad
Merge pull request #1981 from Solid-Money/claude/style-info-toast-ERGr4
MusabShakeel576 Apr 22, 2026
93d8ace
Merge pull request #1980 from Solid-Money/claude/fix-passkey-selectio…
MusabShakeel576 Apr 22, 2026
a6e3caf
Reduce card desktop image file size
MusabShakeel576 Apr 22, 2026
ddad0e1
Update asset registry hash for cards-desktop.png
claude Apr 22, 2026
9b4ac2c
Merge pull request #1985 from Solid-Money/claude/update-cards-desktop…
MusabShakeel576 Apr 22, 2026
46dd139
fix(activity): show Declined status and reason on card transaction de…
claude Apr 23, 2026
0480cfd
feat(data-source): use Alchemy as primary on-chain data source
claude Apr 23, 2026
88bcf93
fix(activity): color declined card amounts red in activity list
claude Apr 23, 2026
d9fed80
Merge pull request #1987 from Solid-Money/claude/fix-declined-transac…
MusabShakeel576 Apr 23, 2026
7262a1b
fix(alchemy): paginate alchemy_getTokenBalances via pageKey
claude Apr 23, 2026
e3ba972
Merge pull request #1988 from Solid-Money/claude/alchemy-primary-data…
MusabShakeel576 Apr 23, 2026
d8ee20f
feat(card): move consents to /card/ready page
claude Apr 26, 2026
2f7760d
feat(settings): use rounded BackButton in desktop header
claude Apr 26, 2026
6eba11a
feat(card-ready): show consents based on US vs international
claude Apr 26, 2026
f3c2436
Merge pull request #1991 from Solid-Money/claude/update-back-button-c…
MusabShakeel576 Apr 26, 2026
2d05324
Merge pull request #1992 from Solid-Money/claude/move-consent-checkbo…
MusabShakeel576 Apr 26, 2026
910f78d
feat(settings/security): use rounded BackButton in headers
claude Apr 26, 2026
6aa6d4e
fix(kyc,card-activate): redirect to /card/pending after questionnaire…
claude Apr 26, 2026
6ae5e3d
Merge pull request #1994 from Solid-Money/claude/move-consent-checkbo…
MusabShakeel576 Apr 26, 2026
bc0a349
fix(kyc): also redirect on didit:status_updated for manual review
claude Apr 26, 2026
cb59826
fix(kyc): handle full Didit status_updated status set
claude Apr 26, 2026
015f185
Merge pull request #1996 from Solid-Money/claude/move-consent-checkbo…
MusabShakeel576 Apr 26, 2026
48ab7a9
fix(kyc): attach Didit handlers after reset, not before
claude Apr 26, 2026
e632f60
Merge pull request #1997 from Solid-Money/claude/move-consent-checkbo…
MusabShakeel576 Apr 26, 2026
ee345cc
fix(kyc): only redirect on didit:status_updated, not verification_sub…
claude Apr 26, 2026
77e73c4
Merge pull request #1999 from Solid-Money/claude/move-consent-checkbo…
MusabShakeel576 Apr 26, 2026
28d2d96
feat(card-pending): poll KYC status and redirect on transition
claude Apr 26, 2026
965a4f9
Merge pull request #2000 from Solid-Money/claude/move-consent-checkbo…
MusabShakeel576 Apr 27, 2026
a7b8ae8
fix: redirect to /card/pending when Rain KYC is in manual review
MusabShakeel576 Apr 27, 2026
720f9e6
Merge pull request #2003 from Solid-Money/claude/fix-kyc-redirect-56a…
MusabShakeel576 Apr 27, 2026
dfe7287
fix(card-pending): update title to reflect ID verification review
claude Apr 28, 2026
693628e
Merge pull request #2004 from Solid-Money/claude/update-card-pending-…
MusabShakeel576 Apr 28, 2026
2ab4142
feat: standardize back buttons via shared BackButton component
claude Apr 28, 2026
3e73cb7
Merge pull request #2006 from Solid-Money/claude/update-back-button-c…
MusabShakeel576 Apr 28, 2026
d574c9c
feat(card): remove order physical card button from details page
claude Apr 28, 2026
04cd7da
Merge pull request #2009 from Solid-Money/claude/remove-order-card-bu…
MusabShakeel576 Apr 28, 2026
99639c8
feat(agent): add Agent Wallet page, useAgent hooks, and API key integ…
claude Apr 28, 2026
32aed6b
feat(agent): track simplified MVP — drop caps and allowlist, fetch on…
claude Apr 28, 2026
2c09d65
chore(agent): match useBalances polling cadence (5s + skip when backg…
claude Apr 28, 2026
16a1e8e
fix(agent): escape JSX apostrophes for react/no-unescaped-entities
claude Apr 29, 2026
0f17a9b
fix(agent): act on UI code review
claude Apr 29, 2026
2c615ed
Merge pull request #2010 from Solid-Money/claude/agent-yield-payments…
MusabShakeel576 Apr 29, 2026
73f4f31
fix(agent): hide expo-router 'agent/index' header, restyle setup card
claude Apr 29, 2026
e2b3f86
style(agent): use brand-variant button on setup card to match /card/r…
claude Apr 29, 2026
df27724
Merge pull request #2011 from Solid-Money/claude/agent-yield-payments…
MusabShakeel576 Apr 29, 2026
c417daf
style(agent): match /card/pending layout for empty state
claude Apr 29, 2026
5c4a5d2
Merge pull request #2012 from Solid-Money/claude/agent-yield-payments…
MusabShakeel576 Apr 29, 2026
fb2f4e5
feat(agent): add ?status= debug override to force render-state
claude Apr 29, 2026
e969ebf
Merge pull request #2013 from Solid-Money/claude/agent-yield-payments…
MusabShakeel576 Apr 29, 2026
94bb265
feat(agent): restructure provisioned page to /card/details layout
claude Apr 29, 2026
e1b4f35
Merge pull request #2014 from Solid-Money/claude/agent-yield-payments…
MusabShakeel576 Apr 29, 2026
838d335
feat(agent): wire borrow-against-savings deposit, header actions + ba…
claude Apr 29, 2026
e22f4f5
Merge pull request #2015 from Solid-Money/claude/agent-yield-payments…
MusabShakeel576 Apr 29, 2026
69e69a4
feat(agent): ResponsiveModal deposit flow + centered header + blue ba…
claude Apr 29, 2026
b7b6fcd
Merge pull request #2016 from Solid-Money/claude/agent-yield-payments…
MusabShakeel576 Apr 29, 2026
fb607ef
style(agent): restore flex-row justify-between in desktop header
claude Apr 29, 2026
13ce51d
Merge pull request #2017 from Solid-Money/claude/agent-yield-payments…
MusabShakeel576 Apr 29, 2026
913b92d
style(agent): bump balance gradient first stop to rgb(0,117,255)
claude Apr 29, 2026
9a0440b
Merge pull request #2018 from Solid-Money/claude/agent-yield-payments…
MusabShakeel576 Apr 30, 2026
2fbc21d
feat(agent): clone CardDepositInternalForm BORROW source for agent de…
claude Apr 30, 2026
119c137
Merge pull request #2019 from Solid-Money/claude/agent-yield-payments…
MusabShakeel576 Apr 30, 2026
97a4901
refactor(agent): session-stamped provisioning flow
claude Apr 30, 2026
7111e38
refactor(agent): hoist provisioning types out of api.ts into types.ts
claude Apr 30, 2026
8212032
Merge pull request #2020 from Solid-Money/claude/agent-yield-payments…
MusabShakeel576 Apr 30, 2026
952e0f4
fix(agent): scope session to sub-org, skip step 2 on orphan adoption
claude Apr 30, 2026
f5c0787
Merge pull request #2021 from Solid-Money/claude/agent-yield-payments…
MusabShakeel576 Apr 30, 2026
467be61
style(agent): use ResponsiveModal + brand button for API key reveal
claude Apr 30, 2026
9c3c60d
feat(agent): rewrite prompt template + add external-wallet deposit
claude Apr 30, 2026
981c61c
Merge pull request #2022 from Solid-Money/claude/agent-yield-payments…
MusabShakeel576 May 3, 2026
500ee5e
feat(agent): QR-only external deposit, non-prod borrow warning, ask-f…
claude May 3, 2026
825d054
Merge pull request #2023 from Solid-Money/claude/agent-yield-payments…
MusabShakeel576 May 3, 2026
d2f9d2d
fix(card): prevent QR crash when external deposit address is empty
claude May 3, 2026
af637f4
fix(card): use max-uint repay when fully repaying card debt
claude May 3, 2026
ed05e86
fix(card-deposit): block bogus Arbitrum fallback for Rain cards
claude May 3, 2026
c79b4c1
Merge pull request #2026 from Solid-Money/claude/fix-card-repayment-m…
MusabShakeel576 May 3, 2026
3886252
Merge pull request #2027 from Solid-Money/claude/fix-borrow-savings-e…
MusabShakeel576 May 3, 2026
46c5072
feat(card): make Rain the only card provider
claude May 3, 2026
1b518ae
Merge pull request #2028 from Solid-Money/claude/fix-wallet-dropdown-…
MusabShakeel576 May 3, 2026
bb013c2
fix(card-deposit): keep deposit button enabled below gasless minimum
claude May 3, 2026
106e1ca
feat(agent): inline source dropdown in deposit modal, drop options sc…
claude May 3, 2026
68dcdcb
Merge pull request #2030 from Solid-Money/claude/agent-yield-payments…
MusabShakeel576 May 3, 2026
a4dcd98
chore(agent): drop 'See supported networks' link from external deposit
claude May 3, 2026
450d883
Merge pull request #2031 from Solid-Money/claude/deposit-card-minimum…
MusabShakeel576 May 3, 2026
335f71b
Merge pull request #2033 from Solid-Money/claude/agent-yield-payments…
MusabShakeel576 May 3, 2026
45c5b22
fix(card-deposit): keep gasless hint icon and text color in sync
claude May 3, 2026
7bd30de
Merge pull request #2034 from Solid-Money/claude/deposit-card-minimum…
MusabShakeel576 May 3, 2026
856cc4e
fix(card-deposit): surface zod v4 validation errors in deposit form
claude May 3, 2026
0c5f21b
Merge pull request #2036 from Solid-Money/claude/deposit-card-minimum…
MusabShakeel576 May 3, 2026
0c7e5b7
fix(card-deposit): drop Onchain badge from card-deposit error toasts
claude May 4, 2026
cc041bd
Merge pull request #2041 from Solid-Money/claude/fix-borrow-savings-e…
MusabShakeel576 May 4, 2026
c5db4ec
fix(card-deposit): remove gasless minimum deposit requirement
claude May 4, 2026
05be1a1
Merge pull request #2042 from Solid-Money/claude/remove-deposit-minim…
MusabShakeel576 May 4, 2026
f67df7f
fix(card/kyc): redirect to /card/activate on Didit Declined and rende…
claude May 4, 2026
2a1b5e3
Merge pull request #2044 from Solid-Money/claude/fix-rain-api-token-r…
MusabShakeel576 May 4, 2026
0099e51
fix(card): show cashback to two decimals on details
claude May 5, 2026
cc6974a
Merge pull request #2046 from Solid-Money/claude/fix-cashback-display…
MusabShakeel576 May 5, 2026
0a9ef5e
feat(card-onboard): redesign content and add fees and charges popup
claude May 6, 2026
0cccae6
Merge pull request #2048 from Solid-Money/claude/card-onboard-fees-po…
MusabShakeel576 May 6, 2026
3102c5b
fix(card-onboard): correct "Card" and "against" typos
claude May 6, 2026
c086b76
Merge pull request #2049 from Solid-Money/claude/card-onboard-fees-po…
MusabShakeel576 May 6, 2026
46eb625
refactor(card-onboard): adjust icon sizing and gradient height
claude May 6, 2026
6e925dc
Merge pull request #2050 from Solid-Money/claude/card-onboard-fees-po…
MusabShakeel576 May 6, 2026
3de84ab
style(card-fees-modal): enlarge card image and shift it ~50% off the …
claude May 6, 2026
6338191
Merge pull request #2051 from Solid-Money/claude/card-onboard-fees-po…
MusabShakeel576 May 6, 2026
40dad88
Update card fee modal icons
MusabShakeel576 May 6, 2026
b67d4ca
feat(card-onboard): split mobile and desktop into separate components
claude May 6, 2026
b159da8
Merge pull request #2053 from Solid-Money/claude/card-onboard-fees-po…
MusabShakeel576 May 7, 2026
0bfb2c3
fix(card-onboard): mobile bottom inset and close fees modal on Get-yo…
claude May 7, 2026
71d192b
Merge pull request #2054 from Solid-Money/claude/card-onboard-fees-po…
MusabShakeel576 May 7, 2026
6d6c4c9
fix(add-funds): mark reverted on-chain transfers as FAILED
claude May 7, 2026
67618de
Merge pull request #2055 from Solid-Money/claude/wallet-pending-activ…
MusabShakeel576 May 7, 2026
a466973
Update international card terms link to new consumer program article
claude May 7, 2026
3d84f57
Merge pull request #2057 from Solid-Money/claude/update-rain-card-doc…
MusabShakeel576 May 7, 2026
eb5c68b
fix(card-activate): show Rain KYC reasons on first step
claude May 10, 2026
efba7e9
Merge pull request #2059 from Solid-Money/claude/fallback-error-messa…
MusabShakeel576 May 10, 2026
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
96 changes: 78 additions & 18 deletions app/(protected)/(tabs)/activity/[clientTxId].tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ import { Linking, Pressable, View } from 'react-native';
import { useLocalSearchParams, useRouter } from 'expo-router';
import * as Sentry from '@sentry/react-native';
import { useQuery } from '@tanstack/react-query';
import { format, minutesToSeconds } from 'date-fns';
import { ArrowUpRight, ChevronLeft, X } from 'lucide-react-native';
import { format, formatDistanceStrict, minutesToSeconds } from 'date-fns';
import { ArrowUpRight, X } from 'lucide-react-native';
import { mainnet } from 'viem/chains';

import Diamond from '@/assets/images/diamond';
Expand All @@ -13,6 +13,7 @@ import CopyToClipboard from '@/components/CopyToClipboard';
import EstimatedTime from '@/components/EstimatedTime';
import PageLayout from '@/components/PageLayout';
import RenderTokenIcon from '@/components/RenderTokenIcon';
import { BackButton } from '@/components/ui/back-button';
import { Button } from '@/components/ui/button';
import { Text } from '@/components/ui/text';
import { Underline } from '@/components/ui/underline';
Expand Down Expand Up @@ -92,6 +93,21 @@ const Value = memo(function Value({ children, className }: ValueProps) {
return <Text className={cn('text-lg font-bold', className)}>{children}</Text>;
});

const EscrowTimeLeft = memo(function EscrowTimeLeft({ payoutAt }: { payoutAt: string }) {
const [now, setNow] = useState(() => Date.now());

useEffect(() => {
const interval = setInterval(() => setNow(Date.now()), 60_000);
return () => clearInterval(interval);
}, []);

const target = useMemo(() => new Date(payoutAt).getTime(), [payoutAt]);

if (target - now <= 0) return <Value>Releasing soon</Value>;

return <Value>{formatDistanceStrict(target, now)}</Value>;
});

const Back = memo(function Back({ title, className }: BackProps) {
const router = useRouter();
const params = useLocalSearchParams<{ tab?: string; from?: string }>();
Expand All @@ -106,12 +122,11 @@ const Back = memo(function Back({ title, className }: BackProps) {
}, [params.from, params.tab, router]);

return (
<View className="flex-row items-center justify-between">
<Pressable onPress={handleBackPress} className="web:hover:opacity-70">
<ChevronLeft color="white" />
</Pressable>
<View className="relative flex-row items-center justify-center">
<View className="absolute left-0">
<BackButton onPress={handleBackPress} />
</View>
<Text className={cn('text-center text-lg font-semibold text-white', className)}>{title}</Text>
<View className="w-10" />
</View>
);
});
Expand Down Expand Up @@ -162,7 +177,11 @@ const CardTransactionDetail = memo(function CardTransactionDetail({
activity,
cardProvider,
}: CardTransactionDetailProps) {
const merchantName = transaction.merchant_name || transaction.description || 'Unknown';
const merchantName = (
transaction.merchant_name?.trim() ||
transaction.description?.trim() ||
'Unknown'
);
const merchantLocation = [transaction.merchant_city, transaction.merchant_country]
.filter(Boolean)
.join(' ') || undefined;
Expand All @@ -171,6 +190,8 @@ const CardTransactionDetail = memo(function CardTransactionDetail({

const txHash = transaction.crypto_transaction_details?.tx_hash;
const isApproved = transaction.status === 'approved';
const isDeclined = transaction.status === 'declined';
const isReversed = transaction.status === 'reversed';
const postedDate = useMemo(() => {
const dateStr = isApproved
? transaction.authorized_at || transaction.posted_at
Expand All @@ -193,18 +214,37 @@ const CardTransactionDetail = memo(function CardTransactionDetail({

const cashbackInfo = getCashbackAmount(transaction.id, cashbacks);

const statusLabel = isApproved
? 'Pending'
: isDeclined
? 'Declined'
: isReversed
? 'Reversed'
: 'Confirmed';
const statusColor = isApproved
? 'text-yellow-500'
: isDeclined
? 'text-red-400'
: '';

const rows = useMemo(() => {
const allRows = [
{ key: 'from', label: <Label>Sent from</Label>, value: <Value>Card</Value> },
{
key: 'status',
label: <Label>Status</Label>,
value: (
<Value className={isApproved ? 'text-yellow-500' : ''}>
{isApproved ? 'Pending' : 'Confirmed'}
</Value>
),
value: <Value className={statusColor}>{statusLabel}</Value>,
},
isDeclined &&
transaction.declined_reason && {
key: 'reason',
label: <Label>Reason</Label>,
value: (
<Value className="max-w-[60%] text-right text-base">
{toTitleCase(transaction.declined_reason)}
</Value>
),
},
cashbackInfo && {
key: 'cashback',
label: (
Expand All @@ -217,12 +257,24 @@ const CardTransactionDetail = memo(function CardTransactionDetail({
<Value
className={cashbackInfo.amount === 'Pending' ? 'text-yellow-500' : 'text-[#34C759]'}
>
{cashbackInfo.isPending && cashbackInfo.amount !== 'Pending'
? `${cashbackInfo.amount} (Pending)`
: cashbackInfo.amount}
{cashbackInfo.amount === 'Pending'
? cashbackInfo.isEscrowed
? 'Escrowed'
: 'Pending'
: cashbackInfo.isEscrowed
? `${cashbackInfo.amount} (Escrowed)`
: cashbackInfo.isPending
? `${cashbackInfo.amount} (Pending)`
: cashbackInfo.amount}
</Value>
),
},
cashbackInfo?.isEscrowed &&
cashbackInfo.payoutAt && {
key: 'cashback-escrow-time-left',
label: <Label>Releases in</Label>,
value: <EscrowTimeLeft payoutAt={cashbackInfo.payoutAt} />,
},
txHash && {
key: 'explorer',
label: <Label>Explorer</Label>,
Expand All @@ -240,7 +292,15 @@ const CardTransactionDetail = memo(function CardTransactionDetail({
].filter(Boolean) as { key: string; label: React.ReactNode; value: React.ReactNode }[];

return allRows;
}, [cashbackInfo, txHash, handleExplorerPress, isApproved]);
}, [
cashbackInfo,
txHash,
handleExplorerPress,
statusLabel,
statusColor,
isDeclined,
transaction.declined_reason,
]);

const tokenIcon = useMemo(
() => getTokenIcon({ tokenSymbol: transaction.currency?.toUpperCase(), size: 75 }),
Expand All @@ -253,7 +313,7 @@ const CardTransactionDetail = memo(function CardTransactionDetail({
<View>
<Back title={merchantName} className="text-xl md:text-3xl" />
{merchantLocation && (
<Text className="ml-10 text-sm text-muted-foreground">{merchantLocation}</Text>
<Text className="text-center text-sm text-muted-foreground">{merchantLocation}</Text>
)}
</View>

Expand Down
8 changes: 3 additions & 5 deletions app/(protected)/(tabs)/add-referrer.tsx
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import React, { useEffect, useState } from 'react';
import { ActivityIndicator, Pressable, TextInput, View } from 'react-native';
import { ActivityIndicator, TextInput, View } from 'react-native';
import { router } from 'expo-router';
import { ArrowLeft } from 'lucide-react-native';

import InfoError from '@/assets/images/info-error';
import PageLayout from '@/components/PageLayout';
import { BackButton } from '@/components/ui/back-button';
import { Button } from '@/components/ui/button';
import { Text } from '@/components/ui/text';
import { path } from '@/constants/path';
Expand Down Expand Up @@ -68,9 +68,7 @@ export default function AddReferrer() {
<View className="mx-auto w-full max-w-lg flex-1 justify-center gap-10 px-4 py-8">
<View className="mx-auto w-full gap-5 md:gap-5">
<View className="flex-row items-center justify-between">
<Pressable onPress={() => router.back()} className="web:hover:opacity-70">
<ArrowLeft color="white" />
</Pressable>
<BackButton />
<Text className="text-center text-lg font-semibold text-white md:text-xl">
Enter your friend&apos;s referral code
</Text>
Expand Down
11 changes: 3 additions & 8 deletions app/(protected)/(tabs)/bridge-kyc.tsx
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import React, { useEffect, useRef, useState } from 'react';
import { Pressable, StyleSheet, View } from 'react-native';
import { StyleSheet, View } from 'react-native';
import { useLocalSearchParams, useRouter } from 'expo-router';
import { ArrowLeft } from 'lucide-react-native';

import PageLayout from '@/components/PageLayout';
import { BackButton } from '@/components/ui/back-button';
import { Text } from '@/components/ui/text';
import { TRACKING_EVENTS } from '@/constants/tracking-events';
import { track } from '@/lib/analytics';
Expand Down Expand Up @@ -246,12 +246,7 @@ export default function BridgeKyc({ onSuccess }: BridgeKycParams = {}) {
<PageLayout desktopOnly>
<View className="mx-auto w-full max-w-lg flex-1 pt-8">
<View className="flex-row items-center justify-between">
<Pressable
onPress={() => (router.canGoBack() ? router.back() : router.replace('/'))}
className="web:hover:opacity-70"
>
<ArrowLeft color="white" />
</Pressable>
<BackButton />
<Text className="text-center text-xl font-semibold text-white md:text-2xl">
Verify identity
</Text>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
import React from 'react';
import { Pressable, View } from 'react-native';
import { View } from 'react-native';
import { useRouter } from 'expo-router';
import { ArrowLeft, ShieldAlert } from 'lucide-react-native';
import { ShieldAlert } from 'lucide-react-native';

import PageLayout from '@/components/PageLayout';
import { BackButton } from '@/components/ui/back-button';
import { Button } from '@/components/ui/button';
import { Text } from '@/components/ui/text';
import { path } from '@/constants/path';
Expand Down Expand Up @@ -42,9 +43,7 @@ export default function CountryVerificationRequired() {
<View className="mx-auto w-full max-w-lg px-4 pt-12">
{/* Header */}
<View className="mb-10 flex-row items-center justify-between">
<Pressable onPress={goBack} className="web:hover:opacity-70">
<ArrowLeft color="white" />
</Pressable>
<BackButton onPress={goBack} />
<Text className="text-center text-xl font-semibold text-white md:text-2xl">
Verification Required
</Text>
Expand Down
7 changes: 3 additions & 4 deletions app/(protected)/(tabs)/card-onboard/country_selection.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,13 @@ import {
View,
} from 'react-native';
import { useRouter } from 'expo-router';
import { ArrowLeft, ChevronDown } from 'lucide-react-native';
import { ChevronDown } from 'lucide-react-native';
import { useShallow } from 'zustand/react/shallow';

import CountryFlagImage from '@/components/CountryFlagImage';
import { NotificationEmailModalDialog } from '@/components/NotificationEmailModal/NotificationEmailModalDialog';
import PageLayout from '@/components/PageLayout';
import { BackButton } from '@/components/ui/back-button';
import { Button } from '@/components/ui/button';
import { Text } from '@/components/ui/text';
import { COUNTRIES, Country } from '@/constants/countries';
Expand Down Expand Up @@ -330,9 +331,7 @@ export default function CountrySelection() {
/>
<View className="mx-auto w-full max-w-lg px-4 pt-12">
<View className="mb-10 flex-row items-center justify-between">
<Pressable onPress={goBack} className="web:hover:opacity-70">
<ArrowLeft color="white" />
</Pressable>
<BackButton onPress={goBack} />
<Text className="text-center text-xl font-semibold text-white md:text-2xl">
Solid card
</Text>
Expand Down
7 changes: 3 additions & 4 deletions app/(protected)/(tabs)/card/activate/country_selection.tsx
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
import React, { useEffect, useMemo, useState } from 'react';
import { ActivityIndicator, Modal, Pressable, ScrollView, TextInput, View } from 'react-native';
import { useRouter } from 'expo-router';
import { ArrowLeft, ChevronDown } from 'lucide-react-native';
import { ChevronDown } from 'lucide-react-native';
import { useShallow } from 'zustand/react/shallow';

import CountryFlagImage from '@/components/CountryFlagImage';
import PageLayout from '@/components/PageLayout';
import { BackButton } from '@/components/ui/back-button';
import { Button } from '@/components/ui/button';
import { Text } from '@/components/ui/text';
import { COUNTRIES, Country } from '@/constants/countries';
Expand All @@ -19,7 +20,7 @@

export default function ActivateCountrySelection() {
const router = useRouter();
const { user } = useUserStore(

Check warning on line 23 in app/(protected)/(tabs)/card/activate/country_selection.tsx

View workflow job for this annotation

GitHub Actions / lint

'user' is assigned a value but never used. Allowed unused vars must match /^_/u
useShallow(state => ({
user: state.users.find(user => user.selected),
})),
Expand Down Expand Up @@ -260,9 +261,7 @@
<PageLayout desktopOnly>
<View className="mx-auto w-full max-w-lg px-4 pt-12">
<View className="mb-10 flex-row items-center justify-between">
<Pressable onPress={goBack} className="web:hover:opacity-70">
<ArrowLeft color="white" />
</Pressable>
<BackButton onPress={goBack} />
<Text className="text-center text-xl font-semibold text-white md:text-2xl">
Solid card
</Text>
Expand Down
6 changes: 2 additions & 4 deletions app/(protected)/(tabs)/card/deposit.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,10 @@ import { ActivityIndicator, Pressable, View } from 'react-native';
import Toast from 'react-native-toast-message';
import { Image } from 'expo-image';
import { useRouter } from 'expo-router';
import { ArrowLeft } from 'lucide-react-native';
import { Address, formatUnits } from 'viem';

import PageLayout from '@/components/PageLayout';
import { BackButton } from '@/components/ui/back-button';
import { Button } from '@/components/ui/button';
import { Text } from '@/components/ui/text';
import { TRACKING_EVENTS } from '@/constants/tracking-events';
Expand Down Expand Up @@ -216,9 +216,7 @@ const DepositToCard = () => {
<PageLayout desktopOnly contentClassName="px-4 py-8">
<View className="mx-auto h-full w-full max-w-md">
<View className="mb-8 flex-row items-center justify-between">
<Pressable onPress={() => router.back()} className="web:hover:opacity-70">
<ArrowLeft color="white" />
</Pressable>
<BackButton />
<Text className="text-center text-xl font-semibold md:text-2xl">Deposit to card</Text>
<View className="w-6" />
</View>
Expand Down
Loading
Loading