chore(rn-cli-wallet): apply UX writing guidelines audit fixes#512
chore(rn-cli-wallet): apply UX writing guidelines audit fixes#512ignaciosantise wants to merge 2 commits into
Conversation
Aligns the React Native CLI sample wallet's user-facing copy with the
WalletConnect UX Writing Guidelines (v2.0). Per-product calls:
- Sign / Approve language kept (wallet surface is the signer)
- Dev-only labels left as-is (Client ID, Socket status, logs)
- All-caps chain headers replaced with proper-noun casing
Highlights:
- Gas → Network fee across the WalletConnect Pay review/explainer
- Payment-error states now say whether funds moved + give next steps
- Loading anti-patterns ("Loading...") replaced with specific copy
- Session modal failure toasts get specific titles + recovery hints
- Empty Connections state gets a "Scan QR code" CTA
- Sentence case across nav, settings, and modal headers
- Exclamation marks removed from CTAs and toasts
- "Token" → "Asset" on the payment picker
- "EVM/SUI/TON/TRON/CANTON/SOLANA" → "Ethereum/Sui/Ton/Tron/Canton/Solana"
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
Claude finished @ignaciosantise's task in 4m 17s —— View job PR Review
🚨 PR Too Large Found 2 issue(s)Issue 1: Generic error fallback body shown for all error types in ResultViewID: resultview-defaultmessage-errortypes-a3c1 Context:
Recommendation: Derive the default body from const defaultMessage = isSuccess
? 'Payment confirmed'
: errorType
? getErrorMessage(errorType)
: 'Payment didn't go through. No funds were moved. Try again, or pay with a different asset.';Issue 2: Redundant toast copy for Solana base58 secret key sectionID: secretphrase-solana-toast-redundant-b8f2 Context:
Recommendation: Shorten the title to // Option A: change title
// Option B: smarter toast
text1: title.toLowerCase().includes('secret') ? `${title} copied` : `${title} secret copied`License compliance: ✅ No issues — Breaking changes: ✅ No public API changes. The Data classification: ✅ No new sensitive data exposure. |
…llet-copy # Conflicts: # wallets/rn_cli_wallet/src/modals/LoadingModal.tsx
Summary
Aligns the React Native CLI sample wallet's user-facing copy with the WalletConnect UX Writing Guidelines (v2.0). Companion change to #507 (pos-app), scoped to
wallets/rn_cli_wallet.Per-product calls (out of scope, kept as-is):
What changed (33 src files + versionCode)
Payment flow (§5 / §4.8)
Gas fee→Network feeacrossReviewPaymentView,GasFeeView(title, body, label)"Transaction failed"→"Payment didn't go through. No funds were moved. Try again, or pay with a different asset.""Not enough funds"→"Not enough funds in your wallet"with asset-aware body"Select a token to pay with"→"Choose the asset you want to pay with"(list spans native + ERC-20-style assets)Loading anti-patterns (§4.6)
"Loading..."/"Loading balances..."→ specific copy with…ellipsis"Processing your payment..."→"Confirming your payment…"Errors with next steps (§4.8)
"Signature failed"/"Transaction failed"/"Authentication failed"/"Rejection failed"/"Validation failed"/"Send message failed"→"Couldn't sign message"/"Couldn't send transaction"/"Couldn't authenticate"/"Couldn't reject request"/"Couldn't validate request"/"Couldn't send message"(bodies still carryerror.message)"No URL found in clipboard"/"Failed to read clipboard"rewritten with recovery hints"Camera not available"→"Camera unavailable. Enable camera access in Settings.""Failed to load the form"→"Couldn't load the form. Check your connection, then try again."Empty states (§4.5)
Scan QR codeCTA so it matches the Headline → Body → CTA patternCapitalization & punctuation (§7)
Connected Apps→Connected apps), settings (Secret Keys & Phrases,Import Wallet), modal titles, Ton modal section headers (Sign with Address→Signing address,Transaction Details→ sentence case), and Scan instruction"Got it!"→"Got it","{Chain} wallet imported!"→"{Chain} wallet added"Misc
SessionSignCantonModalapproveLabel"Approve"→"Sign"(consistency with other chains)"Client ID copied"instead of generic"Value copied to clipboard")versionCodebumped 68 → 69 (perAGENTS.md)Things deliberately not touched
SignCTA +"Sign a message for…"modal titles (kept by design call)ExpiryWarningViewCTAComplete payment— leaving as-is because piping the amount into that view requires prop plumbing through the parent; can be a follow-upwallets/rn_cli_wallet/ios/Podfile.lock(unrelatedyarn installside-effect)Test plan
yarn tsc --noEmitclean (verified locally)yarn lintshows no new errors/warnings (pre-existing unused-_inSessionSignCantonModal:55and areact/no-unstable-nested-componentswarning inRootStackNavigator— both untouched by this PR)ScannerOptionsModalEthereum / Ton / Tron / Sui / Canton / Solana)🤖 Generated with Claude Code