W9-C3 No order history — filled and cancelled orders disappear with no record in the UI #163
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#163
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
There is no order history section in the app. When a resting limit order is filled or cancelled, it is removed from the open orders table and no record is retained anywhere in the UI. There are no timestamps, no tx links, no fees paid, and no way to review past activity from within the app. The only way to reconcile trade activity is to go directly to a block explorer with the contract execution hash, which the UI does not provide.
Reproduction Steps
VITE_NETWORK=local npm run dev) with LocalTerra runningExpected Behavior
A history section should retain completed and cancelled orders with at minimum: timestamp, pair, side, fill price, size, fees paid, and a link to the transaction on the block explorer. This is standard on all CEX and DEX interfaces.
Actual Behavior
Filled and cancelled orders vanish from the UI with no trace. No history tab, no fills log, no fee summary, and no tx links are available anywhere in the app. A trader cannot reconcile their activity or verify fees paid without leaving the app entirely.
Environment Details
localterra(local Docker)VITE_NETWORK=local npm run devmake indexer-dev)make deploy-localWallet / Device Details
Severity / Impact
P2 Polish. No funds are at risk and order execution is functionally correct. However the absence of any history view is a meaningful gap for a CEX-migrant trader who expects to review fills, verify fees, and audit past activity. Post-trade trust and reconciliation are not possible from within the app in its current state. Found under W9-C3 (Order history / fills — Display, Updates, and Trader use dimensions).
@PlasticDigits
mentioned in issue #116
mentioned in commit
e83539ce6eUpdate (merged to
main)Implemented trader-scoped indexer history and CSV export for GitLab #163:
Indexer API
GET /api/v1/traders/{addr}/trades— optionalpair=(404 if unknown pair), optionalformat=csv(text/csvattachment). JSON adds optionalcommission_amount/spread_amounton swaps when indexed.GET /api/v1/traders/{addr}/limit-fills— fills where indexedmakermatches; optionalpair=,format=csv.GET /api/v1/traders/{addr}/limit-cancellations— cancellations where indexedownermatches; optionalpair=,format=csv.(owner, block_timestamp)for cancellation-by-owner queries.dApp
/limits:WalletIndexerHistoryPanel— swaps + limit fills + cancellations for the selected pair (with explorer tx links and per-section Download CSV). Query cachewallet-indexer-historyinvalidated after place/cancel./trade: same panel with swaps only for the active pair when a wallet is connected.Docs / agent skills
docs/indexer-invariants.md,docs/frontend.md(§ Wallet swap and limit history),docs/limit-orders.md, newskills/AGENTS_FRONTEND_ORDER_HISTORY.md, crosslinks inAGENTS_LOCALNET_TRADING_SWARM.mdandAGENTS_FRONTEND_TRADE_PAGE_LAYOUT.md.Verification checklist (for QA)
/api-docs/openapi.json).pair=scope matches UI (selected pair only)./trade: connected wallet sees swaps history for current pair; CSV downloads.pair=on trader routes returns 404; badformat=returns 400.cargo test --test api_traders --test securitywith Postgres (CI or localTEST_DATABASE_URL).@totdking — please verify on LocalTerra + deployed indexer when you have a moment. Leaving the issue open as requested.
mentioned in commit
97d3db5a5bmentioned in commit
67089d2fc2Verification complete (LocalTerra QA)
Verified GitLab #163 on the shared local stack (LocalTerra healthy, host Postgres :5432, indexer :3001, frontend :3000, bot swarm 30/30).
Checklist
/api/v1/traders/{addr}/trades,limit-fills,limit-cancellations;format=csvsupported).block_timestamp,tx_hash,commission_amount/effective_fee_bpsfor walletterra1x46…on pairterra10y4…; cancellations return indexedownerrows; limit-fills API works (no fills indexed yet on this localnet dataset — empty array, not a UI regression).trades?format=csv&pair=…returnstext/csvwith header row matching JSON columns./limits:WalletIndexerHistoryPanelshows swaps + limit fills + cancellations + per-section Download CSV (Playwrighte2e/wallet-history-163.spec.ts)./trade: same panel with swaps-only section (Playwright).pair=→ 404; badformat=→ 400 (live API).cargo test --test api_traders --test security -- --test-threads=1againstdex_indexer_test(all passed).Deliverable
frontend-dapp/e2e/wallet-history-163.spec.ts(merged tomain@97d3db5).Notes
limit_order_fillsrows; maker fill history UI/API are wired but will populate once the indexer ingests fill events.Closing as verified.
mentioned in issue #337
mentioned in issue #422
mentioned in issue #479