fix(mobile): address v0.6.0-beta user-test feedback (ENG-511)#666
Conversation
In-the-wild user testing on v0.6.0-beta surfaced several first-impression issues. Bundles the quick wins with the blank Cash Wallet bug. - ENG-512: never render a blank Cash Wallet. formatBalance was overwriting the balance with ""/undefined when the price-conversion query lost a race on fresh login (or the Cash wallet was briefly missing mid USD->USDT cutover); the Cash card has no emptyText so it collapsed to an empty box. Now we only write a real value (keeping the cached/"0" balance otherwise) and recompute once price conversion resolves. - Remove the "Non-custodial wallets" and "Get a Flashcard" QuickStart cards. - Move the "Add Flashcard" action into Settings -> Ways to get paid. The home wallet-overview Flashcard row now only shows when a card is linked, so the "Add Flashcard" prompt no longer adds noise for users without one. - Auto-capitalize name/address fields (Full Name, bank name, account owner, street, city -> words; US state/country codes -> characters) in the account upgrade and Bridge external-account forms. Refs ENG-511, ENG-512 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…zation - wallet-overview: persist + guard the flashcard display balance the same way as Cash/BTC, so a linked card no longer blanks to the "Add Flashcard" empty state during the price-not-ready window on cold start (ENG-512, review #1). Adds cardDisplayBalance to persistent state; effect refires on balanceInSats. - BridgeAddExternalAccount: normalize at submit — state/country via trim().toUpperCase() (Bridge wants ISO codes), trim the free-text fields — rather than trusting the autoCapitalize keyboard hint (review #2). - add wallet-overview.spec.tsx: cached card balance survives an undefined converter and refreshes once it resolves (review #3, first test for this). - minor: standardize the flashcard sync button on readFlashcard(). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ned keys Review follow-up (ENG-511 minors): - the account-flashcard settings row now uses LL.SettingsScreen.flashcard() (new key) instead of borrowing LL.HomeScreen.flashcard() from the home-screen wallet card — settings rows use the SettingsScreen namespace. - remove the orphaned HomeScreen keys flashcardTitle / flashcardDesc / nonCustodialWalletTitle / nonCustodialWalletDesc (zero code references). - regenerate i18n-types.ts + raw-i18n/source/en.json via typesafe-i18n. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
Thanks for the thorough review — the diagnosis was right and the "one row short" framing was fair. Addressed the must-fixes, added the test, cleaned up the minors, and filed the staleness follow-up. ① Flashcard row race — fixed (
|
The translation-drift gate requires every en.json key to exist in each locale file. Propagate SettingsScreen.flashcard (English placeholder — it's a brand term) to all locale translation JSONs, and remove the now-orphaned HomeScreen keys (flashcardTitle/flashcardDesc/nonCustodialWalletTitle/ nonCustodialWalletDesc) from them too. Passes check:translation-drift. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
In-the-wild user testing on v0.6.0-beta surfaced several first-impression issues. This bundles the quick wins with the blank Cash Wallet bug. Tracked under ENG-511.
Changes
ENG-512 — never render a blank Cash Wallet (bug)
formatBalanceinwallet-overview.tsxoverwrote the Cash balance with""/undefinedwhen the price-conversion query lost a race on fresh login (or the Cash wallet was briefly missing mid USD→USDT cutover). The Cash<Balance>has noemptyText, so it collapsed to an empty box — looking broken on the very first screen after login. Now we only write a real value (keeping the cached/"0"balance otherwise) and recompute once price conversion resolves.Home-screen noise (#2, #3)
Auto-capitalize name/address fields (#8)
autoCapitalize="words"on Full Name, Bank Name, Account Owner, Street, City;"characters"on US State/Country codes — in the account-upgrade and Bridge external-account forms. Email/username/number fields left untouched.Verification
tsc -p .passes. No new eslint errors introduced (the touched files carry pre-existing lint debt unrelated to this change; eslint is not part of thecheck-codeCI gate).Refs ENG-511, ENG-512
🤖 Generated with Claude Code