UI: Swap route preview shows duplicate route labels with no explanation — "ROUTE (INDEXER)" and "ROUTE" shown simultaneously with identical paths #158
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#158
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
The swap route preview panel displays two route lines with the same token path but different labels:
ROUTE (INDEXER)andROUTE. No tooltip, label, or copy explains the difference between the two. A trader has no way to know which route is active, which one will execute, or what the distinction means.Developer confirmed the router selects the most optimal route — the dual display is the UX gap.
Reproduction Steps
/(Swap page)ROUTE (INDEXER): CORAL → EMBER → COBALT → SLATEROUTE: CORAL → EMBER → COBALT → SLATEExpected Behavior
Either show a single route with a clear label, or if both routes are intentionally shown (e.g. indexer-suggested vs on-chain simulated), label them with a brief explanation so a trader understands which one executes.
Screen shot
2. Ember -> Topaz (3 hops) with a different route
{width=900 height=509}
Environment Details
localterra(local Docker)VITE_NETWORK=local npm run devatlocalhost:3000Wallet / Device Details
terra1...sl7cvvSeverity / Impact
P2 Polish. No funds at risk, but the duplicate route display with no explanation is confusing for any trader trying to verify their execution path. Found on the Swap page (
/) during exploratory testing.cc : @PlasticDigits
mentioned in commit
2fb10a4b97mentioned in commit
e01e9a4a22Update (merged to `main`)
Implemented GitLab #158: the Swap page now shows a single Route row inside the same trade summary card as Price impact and Min received. Removed the separate Quote source strip and the duplicate Route (indexer) vs Route blocks. The path follows submit precedence (indexer `router_operations` when present, else client BFS / native / direct).
Code: `frontend-dapp/src/utils/swapRouteDisplay.ts` (`computeSwapRouteDisplay`), `SwapPage.tsx` (`data-testid="swap-route-summary"`).
Docs / agents: `docs/swap-max-spread-ux.md` (invariant #5), `docs/frontend.md`, `docs/indexer-invariants.md`, `skills/AGENTS_FRONTEND_SWAP_ROUTE_DISPLAY.md`.
@totdking — please verify when you have a moment.
Verification checklist
Issue left open pending your sign-off.
mentioned in commit
9c184b8fe9mentioned in commit
cd6e20648cmentioned in commit
cf167504efVerified and closed
Verified GitLab #158 against the acceptance checklist on local stack (LocalTerra, host Postgres :5432, indexer :3001, frontend :3000, bot swarm 30/30).
Verification checklist
/Swap, multi-hop CW20 pair (EMBER → TOPAZ, 3-hop via JADE) — indexer + client graph both resolve.data-testid="swap-route-summary") — no duplicate Route (indexer) row, no Quote source: strip.EMBER → JADE → TOPAZ, 0.00% price impact, SWAP enabled (on-chain submit not re-run in this pass; UI path matches submit precedence viacomputeSwapRouteDisplay).Fix already on main
Core UX fix was merged earlier (
computeSwapRouteDisplay, single route row inSwapPage.tsx).Additional fix in this pass
Updated stale E2E test
hybrid-swap.spec.tsthat still asserted removed Quote source: copy — now asserts singleswap-route-summaryrow per #158 invariant.Merged to
mainastest(e2e): align hybrid-swap route assertion with #158 single-route UX.mentioned in issue #245
mentioned in issue #302
mentioned in issue #321
marked as related to #321
mentioned in issue #329
mentioned in issue #337
mentioned in issue #418
mentioned in issue #562
mentioned in issue #595
mentioned in issue #690