feat: /ust1 window UI — route, nav, CW20 Send client, UST1/vFDUSD metadata #506
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#506
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
Ship a dedicated
/ust1page onhttps://dex.cl8y.comfor always-on oracle vFDUSD ↔ UST1 mint/redeem against the live mainnet window — route + nav distinct from the soft-launch faucet/mint, aust1Windowclient (CW20Send+effective_swapquotes/gates), and UST1/vFDUSD token metadata/logos.Parent track: #502 (Phase 4).
Upstream complete: ust1-window#19.
Published mainnet addresses (Phase 2)
terra1mnl9azefrqpmu888ar2u6zrcwr80hxlt3avf4300r576cw5ar7esvxsvj3terra1f0eqgy9w7e5e7up97vjudqwx38tesf8ylx75x2lv3nwm0clry0pqmgfy72terra1fmht0t6svq3n24zx03nkfja0m40zhfyyxkdcvlrkl6u7gfe6aagq4gch8n(code 11568)terra1zxwpzpzpleatqn39r00grau4yt29sld8pw78s7ktvjafnj5nsaxq0h3rh2(code 11566)Approved window params:
fee_bps=100, per-tx 1000 UST1, rolling 24h 10000 UST1.Current codebase
frontend-dapp/src/App.tsx—/mint→MintPage; no/ust1navItems.ts:MINT_NAV_ITEMlabel Mint, shown in More only whenVITE_FAUCET_ADDRESSset (Layout.tsxincludeMint)SOFT_LAUNCH_MINTABLE_TOKENS/ gemstones) — must not list UST1ust1Window.ts, noeffective_swapquery helpertokenRegistry.ts/tokenlist/— no UST1 or vFDUSD entries or logosIntegrators today must hand-craft CW20
Send+{"effective_swap":{}}. Retail users have no first-class mint/redeem surface on the DEX.Why this is needed
Phase 2 deployed the oracle window and tokens, but without
/ust1the economic base asset is operator-only. Soft-launch/mintis a faucet and must stay that way — overloading it would confuse users and risk mixing faucet mintables with oracle issuance. A dedicated route, execution-aligned quotes fromeffective_swap, and clear UST1/vFDUSD metadata are required before production smoke and Phase 5 monitoring can treat the UI as the user path.Constraints / guardrails
/mintfor UST1; add/ust1with nav label that cannot be confused with faucet Mint.Send— not the AMM router.effective_swap/ config (fee, limits, pause, oracle age/staleness) — never invent rates client-side.VITE_*must point at columbus-5 addresses above — never LocalTerra defaults on prod.tokenLogoAllowlist/ reviewed indexerlogo_url.Relevant files
Frontend (new + wire)
frontend-dapp/src/App.tsx— register/ust1frontend-dapp/src/components/common/navItems.ts,Layout.tsxfrontend-dapp/src/pages/Ust1Page.tsx(or equivalent)frontend-dapp/src/services/terraclassic/ust1Window.tsfrontend-dapp/src/utils/constants.ts—VITE_UST1_*/ window / token envsfrontend-dapp/src/utils/tokenRegistry.ts,tokenLogoAllowlist.tstokenlist/tokenlist.json,tokenlist/images/Docs / deploy
docker/frontendenv examplesdocs/frontend.mdroutes tabledocs/runbooks/mainnet-soft-launch.md(post-SL5 UST1 track note)Skills
skills/AGENTS_FRONTEND_SHELL_NAV.mdskills/AGENTS_SOFT_LAUNCH_FAUCET.md(anti-pattern: do not overload Mint)skills/AGENTS_FRONTEND_DESIGN_SYSTEM.md,AGENTS_FRONTEND_COPY_COGNITIVE_LOAD.mdRecommended direction
VITE_UST1_WINDOW_ADDRESS,VITE_UST1_TOKEN_ADDRESS,VITE_VFDUSD_TOKEN_ADDRESS(and oracle only if UI needs it); document Coolify values from the table above.ust1Window.ts): Queryeffective_swap/ config; build CW20Sendmsgs for deposit (vFDUSD→window) and withdraw (UST1→window); map pause/stale/limit errors to CTA copy./ust1with Deposit / Withdraw tabs; show fee_bps, per-tx + 24h remaining, oracle freshness; disable CTA when unsafe; copy that this is oracle mint/redeem not an AMM swap (link Trade/Swap when secondary pairs exist).logo_urlafter allowlist review.Acceptance criteria
https://dex.cl8y.com/ust1serves vFDUSD↔UST1 mint/redeem UI (not the faucet)./ust1without confusing it with/mint.effective_swap; CTA respects pause, stale oracle, per-tx and 24h limits.VITE_*documented/updated for window + tokens.make lint-frontend/make test-frontendgreen for changed code.Test plan (happy / functional paths)
ust1Windowquote formatting; limit remaining math; pause/stale/over-limit disable predicates./ust1loads; Deposit/Withdraw tabs; CTA disabled when mocked stale/paused/over-limit; enabled when healthy quote.effective_swap; confirm nav ≠ Mint./ust1loads (correct Node 24 — no Aw Snap).Test plan (attack / hack / abuse vectors)
/mintspoofing UST1Verification criteria
/ust1mint + redeem smoke tx hashes recorded.effective_swapvs UI quote for a probe amount.Related
marked as related to #502
mentioned in issue #502
mentioned in commit
962fe51512mentioned in merge request !1045
Implementation MR: https://gitlab.com/PlasticDigits/cl8y-dex-terraclassic/-/merge_requests/327
Acceptance criteria progress
/ust1without confusing it with/mint(label UST1, conditional More item)effective_swap+ INV-SWAP math; CTA gates pause / stale / per-tx / 24hVITE_*documented (docker/frontend/Dockerfiledefaults +.env.example+ runbook)make lint-frontend/ targeted frontend tests green (make verify-issue-506)https://dex.cl8y.com/ust1live after Coolify rebuildeffective_swapvs UI quote on prodDocs:
docs/runbooks/ust1-window-ui.md(U1–U8), skillskills/AGENTS_UST1_WINDOW_UI.md.mentioned in merge request !1046
mentioned in commit
cfd6f13d59Merge sanity check (MR !1045 → main)
Verdict: Code ACs for #506 look satisfied at tip
cfd6f13(logos, withdraw min-out disclosure, gate e2e).make verify-issue-506PASS locally.Remaining problems / open items
VITE_UST1_*→ prod/ust1→ small deposit + withdraw → record tx hashes + LCDeffective_swapvs UI quote; confirm nav UST1 ≠ Mint.effective_swap.pausedis true; CTA correctly shows window paused (Ust1Page).test-frontendred on branch, but failing suites (useTerraBroadcastMutation*,LcdQueryGate,WalletIndexerHistoryPanel,formatAmountCL8Y decimals 18 vs expected 6, etc.) are outside this MR’s diff / also fail on currentmainclass of drift. Not treated as a #506 regression.ust1SecondaryMarket.ts) are not yet mounted on/ust1— track as follow-up once both land.mentioned in issue #508
mentioned in commit
12be42cecdmentioned in commit
361cd8083cmentioned in commit
7d43b49356MR !1045 merged to
main(361cd80) after conflict resolution with !1044 (cLUNC/cUSTC + UST1/vFDUSD registry maps). Issue auto-closed viaCloses #506.Still needed for production AC: Coolify rebuild with
VITE_UST1_*, deposit/withdraw smoke txs, LCDeffective_swapvs UI quote. Optional follow-up: wire#508secondary-market blurb/CTAs onto/ust1.mentioned in issue #503
mentioned in merge request !1048
mentioned in issue #550
marked as related to #550
mentioned in issue #556
mentioned in issue #562
mentioned in issue #571
marked as related to #571
mentioned in issue #572
marked as related to #572
mentioned in issue #574
marked as related to #574
mentioned in issue #575
marked as related to #575
mentioned in issue #589
mentioned in issue #614
marked as related to #614
mentioned in issue #678
marked as related to #678