UX: Connect page unclear for Trust Wallet users; Keplr path works #4

Closed
opened 2026-03-29 07:17:17 +00:00 by PlasticDigits · 13 comments
PlasticDigits commented 2026-03-29 07:17:17 +00:00 (Migrated from gitlab.com)

Summary

A user reported they could not see how to connect Trust Wallet on the CMM connect page (UI did not seem to match their wallet). They eventually succeeded by using the Keplr option from inside Trust Wallet’s dApp browser.

Why the Keplr option works (technical)

The frontend treats Keplr as “whatever implements the Keplr-injected API”:

  • Availability is !!window.keplr (isKeplrInstalled in frontend/src/services/wallet.ts).
  • Connection uses KeplrController from cosmes with WalletName.KEPLR.

Trust Wallet (and several other mobile wallets) inject a Keplr-compatible provider for Cosmos chains, including Terra Classic. There is no separate Trust integration—the same code path as Keplr is correct.

Problem

Discoverability: the modal only shows “Keplr” with no hint that Trust Wallet (and similar wallets) should use that row in the in-app browser. Users assume they need a literal Keplr install or get stuck if the page looks EVM/BSC-oriented elsewhere in the product ecosystem.

Possible directions

  1. Copy / helper text under the Keplr row, e.g. that Keplr-compatible / in-app browsers (Trust, etc.) can use this option.
  2. Optional second button with Trust branding that calls the same connect(WalletName.KEPLR, WalletType.EXTENSION) when window.keplr is present (or always, with clear copy), to match user mental models.
  3. Docs / footer link on the connect modal for “mobile multi-chain wallets” and Terra Classic.

Scope

  • frontend/src/components/common/WalletButton.tsx (labels, descriptions, optional duplicate action).
  • Possibly frontend/src/services/wallet.ts only if we need distinct detection (usually unnecessary if Trust already sets window.keplr).

Labels

Consider: frontend, ux, wallet (if they exist in the project).

## Summary A user reported they could not see how to connect **Trust Wallet** on the CMM connect page (UI did not seem to match their wallet). They eventually succeeded by using the **Keplr** option from inside Trust Wallet’s dApp browser. ## Why the Keplr option works (technical) The frontend treats **Keplr** as “whatever implements the Keplr-injected API”: - Availability is `!!window.keplr` (`isKeplrInstalled` in `frontend/src/services/wallet.ts`). - Connection uses `KeplrController` from cosmes with `WalletName.KEPLR`. Trust Wallet (and several other mobile wallets) inject a **Keplr-compatible** provider for Cosmos chains, including Terra Classic. There is no separate Trust integration—the same code path as Keplr is correct. ## Problem Discoverability: the modal only shows **“Keplr”** with no hint that **Trust Wallet** (and similar wallets) should use that row in the in-app browser. Users assume they need a literal Keplr install or get stuck if the page looks EVM/BSC-oriented elsewhere in the product ecosystem. ## Possible directions 1. **Copy / helper text** under the Keplr row, e.g. that Keplr-compatible / in-app browsers (Trust, etc.) can use this option. 2. **Optional second button** with Trust branding that calls the same `connect(WalletName.KEPLR, WalletType.EXTENSION)` when `window.keplr` is present (or always, with clear copy), to match user mental models. 3. **Docs / footer link** on the connect modal for “mobile multi-chain wallets” and Terra Classic. ## Scope - `frontend/src/components/common/WalletButton.tsx` (labels, descriptions, optional duplicate action). - Possibly `frontend/src/services/wallet.ts` only if we need distinct detection (usually unnecessary if Trust already sets `window.keplr`). ## Labels Consider: `frontend`, `ux`, `wallet` (if they exist in the project).
Brouie commented 2026-03-30 03:36:55 +00:00 (Migrated from gitlab.com)

Investigated the connect modal in WalletButton.tsx. No Trust Wallet detection exists — relies entirely on Trust injecting window.keplr. Simplest fix: update Keplr description from 'Cosmos ecosystem' to 'Keplr, Trust Wallet & compatible'. No code path changes needed. Submitting MR.

Investigated the connect modal in WalletButton.tsx. No Trust Wallet detection exists — relies entirely on Trust injecting window.keplr. Simplest fix: update Keplr description from 'Cosmos ecosystem' to 'Keplr, Trust Wallet & compatible'. No code path changes needed. Submitting MR.
Brouie commented 2026-03-30 03:39:24 +00:00 (Migrated from gitlab.com)

mentioned in commit cb378044c8

mentioned in commit cb378044c873cdbeaadce2e96dfa3163e2360d78
Brouie commented 2026-03-30 03:39:45 +00:00 (Migrated from gitlab.com)

mentioned in merge request !26

mentioned in merge request !26
PlasticDigits commented 2026-03-30 04:03:08 +00:00 (Migrated from gitlab.com)

mentioned in commit 2da12f6c5b

mentioned in commit 2da12f6c5b90936626e97273f9a20e3ff86ebd49
PlasticDigits commented 2026-03-30 04:03:43 +00:00 (Migrated from gitlab.com)

Low priority, but need to verify TW actually injects window.keplr, otherwise figure out whats going on if it doesnt

Low priority, but need to verify TW actually injects window.keplr, otherwise figure out whats going on if it doesnt
PlasticDigits commented 2026-07-31 02:44:32 +00:00 (Migrated from gitlab.com)

mentioned in issue #7

mentioned in issue #7
PlasticDigits commented 2026-08-24 00:19:50 +00:00 (Migrated from gitlab.com)

mentioned in merge request !36

mentioned in merge request !36
PlasticDigits commented 2026-08-24 00:20:15 +00:00 (Migrated from gitlab.com)

Follow-up to the merged label-only !26 and the note about verifying window.keplr:

Trust’s own docs prefer window.trustwallet.cosmos (Keplr-shaped) over window.keplr. Some Trust in-app sessions also alias window.keplr (the original report). MR !36 handles both: detect either inject, alias Trust cosmos onto window.keplr only when it is missing, and show a Trust-labeled row that still calls connect(WalletName.KEPLR).

Docs/invariants: docs/WALLETS.md + skills/frontend-keplr-compatible-wallets.

Still needs a real Trust Wallet dApp-browser smoke test after deploy — not done in this MR.

Follow-up to the merged label-only !26 and the note about verifying `window.keplr`: Trust’s own docs prefer `window.trustwallet.cosmos` (Keplr-shaped) over `window.keplr`. Some Trust in-app sessions also alias `window.keplr` (the original report). MR !36 handles both: detect either inject, alias Trust cosmos onto `window.keplr` only when it is missing, and show a Trust-labeled row that still calls `connect(WalletName.KEPLR)`. Docs/invariants: `docs/WALLETS.md` + `skills/frontend-keplr-compatible-wallets`. Still needs a real Trust Wallet dApp-browser smoke test after deploy — not done in this MR.
PlasticDigits (Migrated from gitlab.com) closed this issue 2026-08-24 00:33:22 +00:00
PlasticDigits commented 2026-08-24 00:33:23 +00:00 (Migrated from gitlab.com)

mentioned in commit 59ae11c8f4

mentioned in commit 59ae11c8f40677282270100af3a4b0c84636e9f8
PlasticDigits commented 2026-08-24 00:33:53 +00:00 (Migrated from gitlab.com)

Merge verification for !36 (merged into master as 59ae11c, after resolving a docs/README.md conflict with !35).

Issue / MR test-plan items (code + unit tests): PASS. keplrCompatible.test.ts 10/10; combined frontend suite 80/80. Trust is a first-class row; window.trustwallet.cosmos is detected and aliased onto window.keplr only when Keplr is absent; docs/footer/skills/frontend-keplr-compatible-wallets are in place.

Problems / leftover (not merge-blocking):

  1. Real Trust Wallet dApp-browser smoke test is still outstanding (already noted). Need an on-device check after deploy: inject shape, both rows enabled, connect + chain suggest + a sign on Terra Classic. Not done in this merge.
  2. No component/E2E test for the connect-modal disabled/enabled row states — covered by unit tests of detection/alias only.

Tracked as a follow-up issue so this closed ticket does not hide the device QA.

Merge verification for !36 (merged into `master` as `59ae11c`, after resolving a `docs/README.md` conflict with !35). **Issue / MR test-plan items (code + unit tests): PASS.** `keplrCompatible.test.ts` 10/10; combined frontend suite 80/80. Trust is a first-class row; `window.trustwallet.cosmos` is detected and aliased onto `window.keplr` only when Keplr is absent; docs/footer/`skills/frontend-keplr-compatible-wallets` are in place. **Problems / leftover (not merge-blocking):** 1. **Real Trust Wallet dApp-browser smoke test is still outstanding** (already noted). Need an on-device check after deploy: inject shape, both rows enabled, connect + chain suggest + a sign on Terra Classic. Not done in this merge. 2. **No component/E2E test** for the connect-modal disabled/enabled row states — covered by unit tests of detection/alias only. Tracked as a follow-up issue so this closed ticket does not hide the device QA.
PlasticDigits commented 2026-08-24 00:34:02 +00:00 (Migrated from gitlab.com)

mentioned in issue #18

mentioned in issue #18
PlasticDigits commented 2026-08-24 00:34:04 +00:00 (Migrated from gitlab.com)

marked as related to #18

marked as related to #18
PlasticDigits commented 2026-08-24 00:34:10 +00:00 (Migrated from gitlab.com)

Post-merge Trust Wallet device smoke test tracked in #18.

Post-merge Trust Wallet device smoke test tracked in #18.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
code/ustr-cmm#4
No description provided.