Improve trade CTA hierarchy, progressive disclosure, and onboarding IA (#417) #945
No reviewers
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!945
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "issue-417-trade-cta-onboarding-ia"
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
Implements GitLab #417 (parent #411): retail trade IA and calmer
/tradefirst paint.TradeOnboardingStrip) on/,/trade, and/limitsuntil dismissed — links to Swap and explains Trade vs Limits; persists inlocalStorage.TRADE_MONEY_CTA_CLASS(py-3 text-sm font-semibold); market slippage presets usemin-h-11(~44px) touch targets./trade— recent trades (tape) and wallet swap history default collapsed on first visit; expansion persisted viatradeWorkspacePanels.ts. Desktop tape uses a collapsible resizable panel with Expand/Collapse control.skills/AGENTS_FRONTEND_TRADE_ONBOARDING_IA.md.Acceptance checklist
/and Trade vs Limits guidancenpm test -- --run src/components/common/__tests__/TradeOnboardingStrip.test.tsx; manual: clearcl8y-dex-trade-onboarding-dismissed, open/tradeTRADE_MONEY_CTA_CLASSontrade-limit-submit,trade-market-submit,ladder-place-submit; screenshotdocs/screenshots/issue-417/trade-ticket-ctas.pngvsswap-cta-reference.png(capture:node frontend-dapp/scripts/capture-issue-417-screenshots.mjswithmake dev)TRADE_SLIPPAGE_PRESET_CLASS(min-h-11) +data-testid="trade-market-slippage-preset-*"/tradeTradePage.test.tsx(#417 cases); docs § trade-route-onboarding-ia/tradedefault first-visit layoutdocs/screenshots/issue-417/trade-first-visit.png(gitignored; regenerate via Playwright CLI or capture script)docs/screenshots/issue-417/trade-ticket-ctas.png+swap-cta-reference.pngdocs/screenshots/issue-417/onboarding-strip-trade.png/onboarding-strip-swap.pngVerification for third parties
Pause/blacklist banners remain visible when applicable (#388, #395). Onboarding dismiss does not block wallet connect or submit buttons.
Test plan
make test-frontend— 1077 tests passedmake lint-frontend— 0 errorsmake setup-cloud-localterra+make devSecurity review — MR !945
Commit reviewed:
d4b050456ed86d126272f151d592fe6e2d07951aScope: Frontend trade IA (#417) —
TradeOnboardingStrip,TradeWorkspaceDisclosure,tradeOnboarding.ts/tradeWorkspacePanels.ts/tradeMoneyCta.ts, progressive disclosure onTradePage, CTA class updates on trade tickets, docs/tests, dev screenshot script.Method: Diff review with attacker-controlled-input tracing (localStorage keys/values, disclosure props, navigation links, panel collapse behavior vs pause/blacklist/outage banners). Prior MR security threads: none found.
Outcome:
FINDINGS: 0medium+No medium, high, or critical vulnerabilities identified on this diff.
Notes (in scope, not escalated):
localStoragereads compare strictly to'1'; values are never interpolated into HTML or URLs. Keys are hardcoded at call sites (TRADE_*_KEYconstants).TradeOnboardingStripuses static copy and an internal<Link to="/">; nodangerouslySetInnerHTMLor external/open redirects.capture-issue-417-screenshots.mjsis a local dev helper (localhost Playwright); not shipped to production.Inline threads: none (no findings to anchor).
added 3 commits
main3974e8f8- Merge origin/main into issue-417-trade-cta-onboarding-iaCompare with previous version
Resolved merge conflict with
main(#419 retail limit order UX).TradeOrderTicket.tsx: Kept main’s layout — open limits panel inside the limit tab, cancel-by-ID in a collapsible<details>— and retained #417’sTRADE_MONEY_CTA_CLASSon the primary limit submit (sticky footer). Dropped duplicate cancel button and bottom placements block from the pre-merge branch.Sanity:
make lint-frontend(0 errors), TradePage + trade component tests (83 passed).Security review — MR !945
Commit reviewed:
3974e8f899a7fcbff37631be138bede0c8854869Scope: Frontend trade IA (#417) —
TradeOnboardingStrip,TradeWorkspaceDisclosure,tradeOnboarding.ts/tradeWorkspacePanels.ts/tradeMoneyCta.ts, progressive disclosure onTradePage, CTA class updates on trade tickets, docs/tests, dev screenshot script. Re-reviewed after merge oforigin/maininto branch.Method: Full MR diff review with attacker-controlled-input tracing (
localStoragekeys/values, disclosure props, navigation links, panel collapse vs pause/blacklist/outage banners). Prior MR security thread (commitd4b0504) re-checked; no new medium+ issues from the merge delta.Outcome:
FINDINGS: 0medium+Security review: no medium+ findings on this diff.
Notes (in scope, not escalated):
localStoragereads compare strictly to'1'; values are never interpolated into HTML or URLs. Keys are hardcoded at call sites (TRADE_*_KEYconstants).TradeOnboardingStripuses static copy and an internal<Link to="/">; nodangerouslySetInnerHTMLor external/open redirects.trade-indexer-outage-banner), invalid-pair notices, and pair selector remain visible; onboarding strip is in-flow (not fixed over wallet/submit).capture-issue-417-screenshots.mjsis a local dev helper (localhost Playwright); not shipped to production.Inline threads: none (no findings to anchor).
mentioned in commit
cb162874d8