feat(web): Terra Classic T&C must support every ustr-cmm wallet, not Keplr-only #11
Labels
No labels
agent:implement
agent:ready
api
bot
bug
ci
enhancement
ready
security
terra-classic
testing
ux
web
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
code/cl8y-ecosystem-legal#11
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
After !29 / #9,
/sign/terra-classiccan complete T&C only via injectedwindow.keplr.signArbitrary(desktop Keplr extension or Keplr in-app browser). Missing Keplr shows Open in Keplr + copy-link — it does not sign with the wallet the user already connected on the integrator.That is a product gap. Integrators (starting with ustr-cmm on
ust1cmm.com) connect Station, Leap, Cosmostation, LUNC Dash, and Galaxy Station, then redirect unsigned wallets here. Those users still cannot finish T&C in the same wallet.Source of truth for the wallet set:
PlasticDigits2/ustr-cmmfrontend/src/services/wallet.ts+frontend/src/components/common/WalletButton.tsx(@goblinhunt/cosmes). ustr-cmm must not reimplement ADR-036 (ustr-cmm#12 /skills/frontend-legal-clickwrap); signing stays on this portal.Related leftover from !29: #10 (Keplr stay-in-Chrome WC +
busyflag). This issue is the full wallet matrix, not Keplr-only.DEX/bridge connect bugs remain on those repos (dex#554, bridge#137). Do not treat this issue as “fix DEX connect.”
Wallet matrix (must match ustr-cmm)
From ustr-cmm
WalletButton/wallet.ts(WalletName+WalletType):window.station)window.keplr.window.keplr); Trust Wallet if it injects Keplr-compatwindow.leap)window.keplr.window.cosmostation)If ustr-cmm adds/removes a Terra Classic wallet in that file, this issue’s matrix must be updated to stay in lockstep.
Why this is needed
ust1cmm.com,dex.cl8y.com,bridge.cl8y.com, …) inherits this. Every integrator that redirects tosign_urls.terra/terra_classicstrands non-Keplr wallets.Constraints / guardrails
Same as #9 /
skills/terra-classic-adr036/SKILL.md— do not weaken them:api/src/verify/terra.rs. Every wallet (extension or WC) must produce a signature the existing verifier accepts, or an explicitly versioned new scheme with tests. Prefer CosmJS/Keplr-compatiblesignArbitrary/sign/MsgSignData.columbus-5/TERRA_CLASSIC. No Terra 2.0 (phoenix-1).terra1….redirect_urias the wallet target.Reference implementation for connect (not copy-paste into Legal without review): ustr-cmm
frontend/+@goblinhunt/cosmes(StationController,KeplrController,LeapController,CosmostationController,LUNCDashController,GalaxyStationController). Legal needssignArbitrary-equivalent, notMsgExecuteContract.Recommended direction
window.station,window.keplr,window.leap,window.cosmostation) and call that wallet’s ADR-036signArbitrary(or documented Keplr-compat provider, e.g. Station/Cosmostationkeplrprovider). Do not require the user to also have Keplr./sign/terra-classicso Android Chrome can approvesignArbitraryin the already-used app without switching to Keplr’s in-app browser. Keep the existing Open in Keplr CTA as a fallback, not the only path.terra1…, the portal should sign that account (or clearly fail if the chosen wallet account differs). A signature for a different address must not satisfy the connected wallet’ssignatures/statuscheck.Acceptance criteria
signed_latest: truefor(property, TERRA_CLASSIC, terra1…)from the portal, on the same class of device ustr-cmm uses for that wallet (extension vs Android Chrome WC).ust1cmm.comand is redirected here can finish T&C in that wallet without installing Keplr.skills/terra-classic-adr036/SKILL.md) and named as tracking ustr-cmm’s set.Test plan
signed_latest: true.signed_latest: true(no Keplr required).window.keplrstill shows Open in Keplr; mock Keplr e2e still green.terra1canonicalization still hold.workers: 5.cd api && cargo testTerra ADR-036 unit + abuse integration stay green.Test plan (attack / abuse)
property/version_label/ accountaccount_idwindow.leap/window.stationin pageRelevant files
web/src/pages/terra.tsweb/src/keplrMobile.ts,web/src/keplrMobileUi.tsweb/src/signShell.tsapi/src/verify/terra.rs(keep)skills/terra-classic-adr036/SKILL.mdfrontend/src/services/wallet.ts,frontend/src/components/common/WalletButton.tsxmarked as related to #9
marked as related to #10
mentioned in commit
809f94f413mentioned in merge request !30
mentioned in merge request !31
Implemented on !31 (
feat/11-terra-wallet-matrix).Completed from the issue criteria:
window.keplr), mock LUNC Dash WC, claimed-account mismatch.skills/terra-classic-adr036/SKILL.mdas tracking ustr-cmm.Not done here (manual / ops / other repos):
VITE_WC_PROJECT_IDon the portal host (Galaxy Station WC v2). Do not copy integrator Cloud ids.accountintobuildSignUrl(SDK now accepts it; integrator follow-up).busyflag) — out of scope.Merge review of !31 (no automerge, did not wait for CI)
Conflicts: none. GitLab
detailed_merge_status: mergeable. Localgit merge --no-ff origin/feat/11-terra-wallet-matrixintomainapplied cleanly (then aborted; merge is via !31).CI: pipeline #2790911930 failed every job with
ci_quota_exceeded(same GitLab minutes/quota issue noted on #10). Not a code defect. Did not wait for a green pipeline.Local sanity (worktree
feat/11-terra-wallet-matrix@809f94f):npm test: clickwrap 22 + web 60 = 82 passedcd api && cargo test: 58 passed (unit + integration)window.keplr, LUNC Dash WC mock, claimed-account mismatch, EVM/Telegram/Solana/home/redirect unchangedAcceptance criteria vs !31
signed_latestVITE_WC_PROJECT_IDis set on the portal host. Real Android Chrome still manual.signArbitrarywired; no real-extension pass.cargo testgreen.terra.rscomments only for #11 wallet set.account+ sign-shell extras comment. Other sign pages not modified. e2e still green.skills/terra-classic-adr036/SKILL.md+web/src/terra/matrix.ts.Problems / leftovers (not blocking merge)
ci_quota_exceeded. Same ops issue as #10.VITE_WC_PROJECT_IDon the portal. Galaxy Station WC is not offered until then. Do not copy integrator Cloud ids.accountintobuildSignUrlso the portal binds the already-connectedterra1…. SDK accepts it; callers not updated here.busyflag still present —web/src/signShell.tsstill setsbusy = trueand only clears it incatch. TerraonSignstill returns early (no wallet selected / missing extension) without throwing, so Connect & sign can stay disabled. Out of scope for !31; still tracked on #10.busyfix is still needed.Merging !31 now. Follow-up issue will track post-merge tasks that are not already on #10.
mentioned in commit
fd3f6b6fcemarked as related to #13
mentioned in issue #13
!31 is merged (
fd3f6b6onmain). Post-merge leftovers (real-device QA,VITE_WC_PROJECT_ID, ustr-cmmaccountparam) tracked on #13. ThesignShellbusyflag remains on #10.mentioned in issue cl8y-dex-terraclassic#658
mentioned in issue #15