W11-C4: Non-terra1 garbage deep link shows silent empty state ;no error, no redirect, auto-navigate to first pair blocked #176
Labels
No labels
agent:fix_bugfix
agent:fix_conflicts
agent:fix_security
agent:gap_analysis
agent:implement
agent:implement
agent:implement
agent:open_issues
agent:ready
agent:research
agent:security_audit
agent:verify
architecture
backend
blocker:hybrid
blocker:launch
blocker:limit-orders
blocker:v2
block:log_only
block:security
bug
ci
contracts
correctness
deploy
dev
devops
docs
documentation
duplicate
e2e
enhancement
epic
feature
frontend
functional-completion
gas
good first issue
governance
help wanted
high-risk
hooks
hybrid
indexer
infra
infrastructure
integrators
invalid
launch-blocker
limit-orders
localnet
localterra
low priority
missing-implementation
needs-design
ops
performance
priority
high
priority
medium
product
qa
QA
question
ready
ready
research
scripts
security
security-hardening
smartcontracts
tech-debt
testing
ux
UX
v2
verification
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
code/cl8y-dex-terraclassic#176
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?
Issue Summary
Navigating to
/trade/<anything>where the value does not start withterra1renders a completely silent empty state. All three panels show "Select a pair" placeholders with no error or explanation. The garbage value in the URL state also blocks the normal auto-navigate fallback that would redirect the user to the first available pair.Reproduction Steps
VITE_NETWORK=local npm run dev) with LocalTerra runninghttp://localhost:3000/trade/lilwayne%20babyyy(any non-terra1string)Expected Behavior
Either:
/trade/<first-pair>with an optional brief notice ("Pair not found — showing default"), orIn neither case should the garbage string remain in the URL and the page silently show three "Select a pair" empty states.
Actual Behavior
/trade/:pairAddrmatches, so the catch-all does not trigger)"lilwayne babyyy"as the selected valueif (pairAddr || pairs.length === 0) returnguard in TradePage.tsxScreen record
Environment Details
localterra(local Docker)VITE_NETWORK=local npm run devatlocalhost:3000Wallet / Device Details
Severity / Impact
P2 Polish. No funds are at risk. A trader landing on a bad share link with a non-
terra1param sees what looks like a broken app — three empty panels, a garbage address shown in the selector, and no guidance on what happened or what to do. Found under W11-C4 (Wrong network deep link — Display, Updates, and Trader use dimensions).cc: @PlasticDigits t
mentioned in issue #116
mentioned in commit
fa74332671Fix shipped on
main(fa74332)Non-
terra1or malformed/trade/:pairAddrdeep links no longer produce a silent three-panel empty state.What changed
InvalidPairLinkNotice—role="alert"banner: Invalid pair link, quotes the bad segment, Select a trading pair CTA scrolls/focuses#trade-pair-select.replacenavigate to/tradeso garbage does not stay in the address bar.pairAddrstays empty until the user picks a pair (selector no longer shows the raw invalid segment).isTradePairRouteParam(isValidTerraAddress) instead of barestartsWith('terra1').Docs / agent playbooks
#trade-page-invalid-pair-link)Verification checklist
http://localhost:3000/trade/lilwayne%20babyyy— alert visible, URL becomes/trade.lilwayne babyyy./trade/<terra1-pair>still loads book, chart, and ticket.npm test -- --run src/pages/TradePage.test.tsx src/utils/__tests__/tradePairRoute.test.tspasses.@totdking — please verify on local (
VITE_NETWORK=local) when you have a moment. Leaving this issue open until sign-off.verified
fa743326on QA stack.source:
isTradePairRouteParaminfrontend-dapp/src/utils/tradePairRoute.tsrejects non-terra1 garbage viaisValidTerraAddressregex (/^terra1[a-z0-9]{38,}$/).tests:
tradePairRoute.test.ts4/4 PASS +TradePage.test.tsx10/10 PASS, the "lilwayne babyyy" case is explicitly covered.good to close on your side @PlasticDigits
mentioned in issue #175
mentioned in issue #357
mentioned in issue #358
mentioned in merge request !865
mentioned in issue #541
mentioned in merge request !1070
mentioned in issue #664
mentioned in issue #665