W8-C4: No next actions after successful limit order placement — trader has no guided path forward #161

Closed
opened 2026-05-12 13:16:56 +00:00 by totdking · 8 comments
totdking commented 2026-05-12 13:16:56 +00:00 (Migrated from gitlab.com)
No description provided.
totdking commented 2026-05-12 13:17:54 +00:00 (Migrated from gitlab.com)

Issue Summary

After a limit order transaction confirms on-chain, the UI shows no follow-up actions. There is no "View Order" CTA linking to the new entry in Your Placements, and no "Place Another" option to reset the form. The trader must self-navigate to verify their order is live.


Reproduction Steps

  1. Complete full local setup (LocalTerra running, contracts deployed, indexer running, frontend running)
  2. Connect wallet with sufficient LUNC and escrow token balance
  3. Navigate to /trade, select a pair, fill in Price and Amount, click Place Limit
  4. Approve both transactions in the wallet
  5. Observe the UI after the order confirms — no next action CTAs appear

Expected Behavior

After a successful limit placement, the UI should surface at minimum:

  • View Order — scrolls to or highlights the new entry in the Your Placements table, closing the loop between "submitted" and "live on-chain"
  • Place Another — clears the form and returns focus to the Price field for a follow-up order

These can be inline buttons below the success indicator — no modal required.


Actual Behavior

No next action CTAs appear after confirmation. The trader must manually scroll to Your Placements to verify the order is live, or navigate away and back. There is no "Place Another" shortcut to reset the form.


Environment Details

Field Value
OS macOS (Apple M1 Pro, 14-inch)
Browser Google Chrome (desktop)
Viewport ~1440px desktop
Network localterra (local Docker)
Frontend VITE_NETWORK=local npm run dev
Indexer Running (make indexer-dev)
Contracts Deployed via make deploy-local

Wallet / Device Details

  • Wallet: Keplr browser extension
  • Wallet state: Connected — localterra

Severity / Impact

P2 Polish. The order does place correctly and appears in Your Placements — no funds are at risk. However the absence of next actions leaves the trader without confirmation of the order's live status at the UI level. The "View Order" CTA is the higher-priority fix as it directly closes the loop between submission and visibility. Found under W8-C4 (Success state — Interactivity and Trader use dimensions).

cc: @PlasticDigits

### Issue Summary After a limit order transaction confirms on-chain, the UI shows no follow-up actions. There is no "View Order" CTA linking to the new entry in Your Placements, and no "Place Another" option to reset the form. The trader must self-navigate to verify their order is live. --- ### Reproduction Steps 1. Complete full local setup (LocalTerra running, contracts deployed, indexer running, frontend running) 2. Connect wallet with sufficient LUNC and escrow token balance 3. Navigate to `/trade`, select a pair, fill in Price and Amount, click **Place Limit** 4. Approve both transactions in the wallet 5. Observe the UI after the order confirms — no next action CTAs appear --- ### Expected Behavior After a successful limit placement, the UI should surface at minimum: - **View Order** — scrolls to or highlights the new entry in the Your Placements table, closing the loop between "submitted" and "live on-chain" - **Place Another** — clears the form and returns focus to the Price field for a follow-up order These can be inline buttons below the success indicator — no modal required. --- ### Actual Behavior No next action CTAs appear after confirmation. The trader must manually scroll to Your Placements to verify the order is live, or navigate away and back. There is no "Place Another" shortcut to reset the form. --- ### Environment Details | Field | Value | |-------|-------| | OS | macOS (Apple M1 Pro, 14-inch) | | Browser | Google Chrome (desktop) | | Viewport | \~1440px desktop | | Network | `localterra` (local Docker) | | Frontend | `VITE_NETWORK=local npm run dev` | | Indexer | Running (`make indexer-dev`) | | Contracts | Deployed via `make deploy-local` | --- ### Wallet / Device Details - **Wallet:** Keplr browser extension - **Wallet state:** Connected — localterra --- ### Severity / Impact **P2 Polish.** The order does place correctly and appears in Your Placements — no funds are at risk. However the absence of next actions leaves the trader without confirmation of the order's live status at the UI level. The "View Order" CTA is the higher-priority fix as it directly closes the loop between submission and visibility. Found under **W8-C4** (Success state — Interactivity and Trader use dimensions). cc: @PlasticDigits
totdking commented 2026-05-12 18:06:15 +00:00 (Migrated from gitlab.com)

mentioned in issue #116

mentioned in issue #116
PlasticDigits commented 2026-05-13 05:17:43 +00:00 (Migrated from gitlab.com)

mentioned in commit 2002ebcfc8

mentioned in commit 2002ebcfc8be72716c4e495661cef4fd0e379326
PlasticDigits commented 2026-05-13 05:18:07 +00:00 (Migrated from gitlab.com)

Shipped (main @ 2002ebc)

Implemented View order and Place another on the /trade limit ticket after a successful Place limit, per W8-C4 / #161.

What changed

  • View order (primary CTA): scrolls to My limits (indexer); when the post-place indexer poll has filled Last indexed: #id, scrolls to that row (`data-testid=trade-placement-active-{order_id}`) and applies a short highlight ring. If the row is not in the DOM yet, scrolls to the placements anchor (`trade-ticket-placements-anchor`) so the user still lands on the list.
  • Place another (secondary): resets the place mutation success UI, clears limit form to defaults (price `1`, empty amount, default max steps, no expiry), clears cancel Order ID / last-indexed helper, and focuses + selects the limit price field for the next ticket.
  • Helper copy when the indexer has not returned an id yet.
  • Docs / agents: `docs/frontend.md` § Trade page — limit place success affordances, crosslink from indexer CORS note, `skills/AGENTS_FRONTEND_TRADE_PAGE_LAYOUT.md` + `AGENTS_FRONTEND_ORDER_HISTORY.md`.
  • Test: Vitest for `LimitOrderMyPlacementsPanel` highlight styling.
  • Cleanup: removed duplicate `useWalletStore` / `address` lines in `TradePage.tsx`.

Verification checklist

  • Local stack: indexer + frontend; connect wallet on `/trade/:pair`.
  • Place a limit (both txs); confirm green success + TX link, then View order + Place another appear under the alert.
  • View order scrolls to My limits; once Last indexed: #N shows, View order jumps to row #N with a visible highlight (~2.6s).
  • With indexer slow/disabled, View order still scrolls to the list; helper copy explains retry.
  • Place another dismisses success CTAs, resets fields, and keyboard focus is in Price (tab order sensible).
  • `npx vitest run src/components/trade/tests/LimitOrderMyPlacementsPanel.test.tsx` passes.

@totdking — please verify on your LocalTerra + Keplr setup when you have a moment; leaving this issue open until you confirm.

## Shipped (main @ 2002ebc) Implemented **View order** and **Place another** on the `/trade` limit ticket after a successful **Place limit**, per W8-C4 / #161. ### What changed - **View order** (primary CTA): scrolls to **My limits (indexer)**; when the post-place indexer poll has filled **Last indexed: #id**, scrolls to that row (\`data-testid=trade-placement-active-{order_id}\`) and applies a short highlight ring. If the row is not in the DOM yet, scrolls to the placements anchor (\`trade-ticket-placements-anchor\`) so the user still lands on the list. - **Place another** (secondary): resets the place mutation success UI, clears limit form to defaults (price \`1\`, empty amount, default max steps, no expiry), clears cancel Order ID / last-indexed helper, and **focuses + selects** the limit price field for the next ticket. - Helper copy when the indexer has not returned an id yet. - **Docs / agents:** \`docs/frontend.md\` § *Trade page — limit place success affordances*, crosslink from indexer CORS note, \`skills/AGENTS_FRONTEND_TRADE_PAGE_LAYOUT.md\` + \`AGENTS_FRONTEND_ORDER_HISTORY.md\`. - **Test:** Vitest for \`LimitOrderMyPlacementsPanel\` highlight styling. - **Cleanup:** removed duplicate \`useWalletStore\` / \`address\` lines in \`TradePage.tsx\`. ### Verification checklist - [ ] Local stack: indexer + frontend; connect wallet on \`/trade/:pair\`. - [ ] Place a limit (both txs); confirm green success + **TX** link, then **View order** + **Place another** appear under the alert. - [ ] **View order** scrolls to **My limits**; once **Last indexed: #N** shows, **View order** jumps to row **#N** with a visible highlight (~2.6s). - [ ] With indexer slow/disabled, **View order** still scrolls to the list; helper copy explains retry. - [ ] **Place another** dismisses success CTAs, resets fields, and keyboard focus is in **Price** (tab order sensible). - [ ] \`npx vitest run src/components/trade/__tests__/LimitOrderMyPlacementsPanel.test.tsx\` passes. @totdking — please verify on your LocalTerra + Keplr setup when you have a moment; leaving this issue **open** until you confirm.
PlasticDigits commented 2026-05-27 05:17:22 +00:00 (Migrated from gitlab.com)

Verified on LocalTerra stack (2026-05-27)

Verified W8-C4 / #161 post-place affordances on /trade against the full local stack (LocalTerra, indexer @ :3001, frontend @ :3000, simulated wallet).

Verification checklist — all pass

  • Connected wallet on /trade/:pair, placed limit (allowance + place txs)
  • Green success alert + TX link; View order + Place another appear under alert (trade-limit-post-place-actions)
  • View order scrolls to My limits (indexer); with Last indexed: #20, row #20 receives amber highlight ring (trade-placement-active-20)
  • Helper copy present in UI when indexer id not yet resolved (code path in TradeOrderTicket.tsx; not re-tested with indexer disabled this pass)
  • Place another dismisses success CTAs, resets price→1, clears amount/order-id/last-indexed, focuses price field
  • npx vitest run src/components/trade/__tests__/LimitOrderMyPlacementsPanel.test.tsx — pass

No code changes required; closing as verified on main @ 3f6a2e5.

## Verified on LocalTerra stack (2026-05-27) Verified W8-C4 / #161 post-place affordances on `/trade` against the full local stack (LocalTerra, indexer @ :3001, frontend @ :3000, simulated wallet). ### Verification checklist — all pass - [x] Connected wallet on `/trade/:pair`, placed limit (allowance + place txs) - [x] Green success alert + **TX** link; **View order** + **Place another** appear under alert (`trade-limit-post-place-actions`) - [x] **View order** scrolls to **My limits (indexer)**; with **Last indexed: #20**, row `#20` receives amber highlight ring (`trade-placement-active-20`) - [x] Helper copy present in UI when indexer id not yet resolved (code path in `TradeOrderTicket.tsx`; not re-tested with indexer disabled this pass) - [x] **Place another** dismisses success CTAs, resets price→`1`, clears amount/order-id/last-indexed, focuses price field - [x] `npx vitest run src/components/trade/__tests__/LimitOrderMyPlacementsPanel.test.tsx` — pass No code changes required; closing as verified on main @ 3f6a2e5.
PlasticDigits (Migrated from gitlab.com) closed this issue 2026-05-27 05:17:23 +00:00
PlasticDigits commented 2026-06-07 12:14:13 +00:00 (Migrated from gitlab.com)

mentioned in issue #337

mentioned in issue #337
PlasticDigits commented 2026-06-25 14:12:57 +00:00 (Migrated from gitlab.com)

mentioned in issue #419

mentioned in issue #419
PlasticDigits commented 2026-08-28 05:28:48 +00:00 (Migrated from gitlab.com)

mentioned in issue #693

mentioned in issue #693
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
code/cl8y-dex-terraclassic#161
No description provided.