W9-C5 Indexer unavailable banner contradicts itself — claims order book still uses chain but order book immediately shows unavailable #164

Closed
opened 2026-05-12 17:47:46 +00:00 by totdking · 15 comments
totdking commented 2026-05-12 17:47:46 +00:00 (Migrated from gitlab.com)
No description provided.
totdking commented 2026-05-12 17:51:15 +00:00 (Migrated from gitlab.com)

Issue Summary

When the indexer goes down, a yellow banner appears stating "Indexer unavailable at http://127.0.0.1:3001 — chart and tape may be limited. Order book and tickets still use chain where applicable." However, the ASKS and BIDS panels immediately display "Book unavailable (indexer or LCD)." The banner explicitly claims the order book still functions via chain, but the UI contradicts this claim in the same view.


Reproduction Steps

  1. Start the app with LocalTerra running and indexer running
  2. Connect wallet and navigate to the Trade tab
  3. Stop the indexer process
  4. Observe the yellow banner message and simultaneously observe the ASKS/BIDS panels

Expected Behavior

The banner should accurately describe what is and is not available. If the order book is unavailable, the banner should say so — not claim it still works via chain.


Actual Behavior

Banner states: "Order book and tickets still use chain where applicable." Order book panels state: "Book unavailable (indexer or LCD)."

These are contradictory messages shown simultaneously in the same view.


Screenshot

image.png{width=900 height=544}


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 Stopped to simulate outage

Wallet / Device Details

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

Severity / Impact

P2 Polish. No funds are at risk but the contradictory messaging undermines trader trust. A trader reading the banner expects the order book to still be functional — then sees it is not. This directly erodes confidence in the reliability of status messaging across the app. Found under W9-C5 (Empty and error rows — Display dimension).

cc: @PlasticDigits

### Issue Summary When the indexer goes down, a yellow banner appears stating "Indexer unavailable at [http://127.0.0.1:3001](http://127.0.0.1:3001) — chart and tape may be limited. Order book and tickets still use chain where applicable." However, the ASKS and BIDS panels immediately display "Book unavailable (indexer or LCD)." The banner explicitly claims the order book still functions via chain, but the UI contradicts this claim in the same view. --- ### Reproduction Steps 1. Start the app with LocalTerra running and indexer running 2. Connect wallet and navigate to the Trade tab 3. Stop the indexer process 4. Observe the yellow banner message and simultaneously observe the ASKS/BIDS panels --- ### Expected Behavior The banner should accurately describe what is and is not available. If the order book is unavailable, the banner should say so — not claim it still works via chain. --- ### Actual Behavior Banner states: "Order book and tickets still use chain where applicable." Order book panels state: "Book unavailable (indexer or LCD)." These are contradictory messages shown simultaneously in the same view. --- ## Screenshot ![image.png](/uploads/05b9785fdd71b6a1a933d13f6c95e879/image.png){width=900 height=544} --- ### 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 | Stopped to simulate outage | --- ### Wallet / Device Details - **Wallet:** Keplr browser extension - **Wallet state:** Connected — localterra --- ### Severity / Impact **P2 Polish.** No funds are at risk but the contradictory messaging undermines trader trust. A trader reading the banner expects the order book to still be functional — then sees it is not. This directly erodes confidence in the reliability of status messaging across the app. Found under **W9-C5** (Empty and error rows — Display dimension). 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 04:28:17 +00:00 (Migrated from gitlab.com)

mentioned in commit bf5a32b24d

mentioned in commit bf5a32b24d60ad21f1543b8cb8f729ad0e3a12f6
PlasticDigits commented 2026-05-13 04:28:30 +00:00 (Migrated from gitlab.com)

Fix shipped (main)

Problem: The Trade tab yellow banner claimed the order book and tickets still used the chain while ASKS/BIDS showed Book unavailable (indexer or LCD) — contradictory messaging (`TradePage.tsx`).

Change: Accurate outage copy is centralized in `frontend-dapp/src/utils/indexerTradeOutageCopy.ts`. The banner now states that chart, tape, order book depth, and most swap/limit ticket features need a reachable indexer, and that those surfaces stay unavailable or degraded until the indexer is back or `VITE_INDEXER_URL` is corrected. Added `data-testid="trade-indexer-outage-banner"` for tests.

Docs / agent playbooks: docs/frontend.md § Trade page — indexer outage banner (invariant: no false “chain fallback” claim). Crosslinks in `skills/AGENTS_FRONTEND_TRADE_PAGE_LAYOUT.md`, `AGENTS_FRONTEND_USER_ERRORS.md`, `AGENTS_LOCALNET_TRADING_SWARM.md`.

Verification checklist (please tick when done):

  • Local: indexer up → open `/trade` with a pair → no yellow indexer-outage banner.
  • Stop indexer → banner appears with Indexer unavailable and copy that mentions order book / chart / tape / swap or limit — no sentence like “still use chain where applicable”.
  • Same scenario: order book panels show Book unavailable — wording should feel consistent with the banner (both imply indexer-dependent trade UI).
  • `npm run test:run` in `frontend-dapp` (or CI green on main).

@totdking Could you verify on your LocalTerra setup and confirm the messaging matches what traders should expect when the indexer is down? Leaving the issue open until you sign off.

## Fix shipped (main) **Problem:** The Trade tab yellow banner claimed the order book and tickets still used the chain while ASKS/BIDS showed *Book unavailable (indexer or LCD)* — contradictory messaging ([\`TradePage.tsx\`](https://gitlab.com/PlasticDigits/cl8y-dex-terraclassic/-/blob/main/frontend-dapp/src/pages/TradePage.tsx)). **Change:** Accurate outage copy is centralized in [\`frontend-dapp/src/utils/indexerTradeOutageCopy.ts\`](https://gitlab.com/PlasticDigits/cl8y-dex-terraclassic/-/blob/main/frontend-dapp/src/utils/indexerTradeOutageCopy.ts). The banner now states that chart, tape, order book depth, and most swap/limit ticket features need a reachable indexer, and that those surfaces stay unavailable or degraded until the indexer is back or \`VITE_INDEXER_URL\` is corrected. Added \`data-testid=\"trade-indexer-outage-banner\"\` for tests. **Docs / agent playbooks:** [docs/frontend.md § Trade page — indexer outage banner](https://gitlab.com/PlasticDigits/cl8y-dex-terraclassic/-/blob/main/docs/frontend.md#trade-page-indexer-outage-banner) (invariant: no false “chain fallback” claim). Crosslinks in \`skills/AGENTS_FRONTEND_TRADE_PAGE_LAYOUT.md\`, \`AGENTS_FRONTEND_USER_ERRORS.md\`, \`AGENTS_LOCALNET_TRADING_SWARM.md\`. **Verification checklist** (please tick when done): - [ ] Local: indexer up → open \`/trade\` with a pair → **no** yellow indexer-outage banner. - [ ] Stop indexer → banner appears with **Indexer unavailable** and copy that mentions order book / chart / tape / swap or limit — **no** sentence like “still use chain where applicable”. - [ ] Same scenario: order book panels show *Book unavailable* — wording should **feel consistent** with the banner (both imply indexer-dependent trade UI). - [ ] \`npm run test:run\` in \`frontend-dapp\` (or CI green on main). @totdking Could you verify on your LocalTerra setup and confirm the messaging matches what traders should expect when the indexer is down? Leaving the issue **open** until you sign off.
PlasticDigits commented 2026-05-13 04:34:30 +00:00 (Migrated from gitlab.com)

mentioned in commit 534769b384

mentioned in commit 534769b3842ba98306b2ebfefe0cba8794925e52
PlasticDigits commented 2026-05-13 04:35:09 +00:00 (Migrated from gitlab.com)

mentioned in issue #166

mentioned in issue #166
PlasticDigits commented 2026-05-27 05:45:55 +00:00 (Migrated from gitlab.com)

mentioned in issue #165

mentioned in issue #165
PlasticDigits commented 2026-05-27 05:56:40 +00:00 (Migrated from gitlab.com)

mentioned in commit f4c8cbc656

mentioned in commit f4c8cbc6563ba5d3c984f986a8488c517df428a7
PlasticDigits commented 2026-05-27 05:56:40 +00:00 (Migrated from gitlab.com)

mentioned in commit 4f230d35cf

mentioned in commit 4f230d35cfe2d0d90c771711b866788562a78fcd
PlasticDigits commented 2026-05-27 05:56:59 +00:00 (Migrated from gitlab.com)

Verification complete (agent)

Verified GitLab #164 on LocalTerra + host Postgres + indexer + frontend (:3000) + bot swarm.

Checklist

  • Indexer up → /trade with pair: no trade-indexer-outage-banner (unit + infra check).
  • Indexer stopped → banner shows Market data service unavailable with lead copy naming chart / tape / order book / swap|limit — no “still use chain where applicable”.
  • Same scenario: order book / tape / chart panels use aligned market data service outage strings (#165); consistent with banner (#164).
  • npm run test:run — indexerTradeOutageCopy.test.ts, TradePage.test.tsx green.

Fix on merge

Main already had the #164 banner rewrite; verification found the banner tail still rendered raw [GitLab #166](url) markdown in the UI. Merged fix/issue-164-verify to strip markdown from retail copy while keeping #165 panel strings.

Playwright smoke captured banner + book copy with indexer down; cursor-ide-browser MCP is not enabled in this workspace — used Playwright instead.

Closing as verified.

## Verification complete (agent) Verified GitLab **#164** on LocalTerra + host Postgres + indexer + frontend (:3000) + bot swarm. ### Checklist - [x] Indexer up → `/trade` with pair: **no** `trade-indexer-outage-banner` (unit + infra check). - [x] Indexer stopped → banner shows **Market data service unavailable** with lead copy naming chart / tape / order book / swap|limit — **no** “still use chain where applicable”. - [x] Same scenario: order book / tape / chart panels use aligned **market data service** outage strings (#165); consistent with banner (#164). - [x] `npm run test:run` — `indexerTradeOutageCopy.test.ts`, `TradePage.test.tsx` green. ### Fix on merge Main already had the #164 banner rewrite; verification found the **banner tail** still rendered raw `[GitLab #166](url)` markdown in the UI. Merged `fix/issue-164-verify` to strip markdown from retail copy while keeping #165 panel strings. Playwright smoke captured banner + book copy with indexer down; cursor-ide-browser MCP is not enabled in this workspace — used Playwright instead. Closing as verified.
PlasticDigits (Migrated from gitlab.com) closed this issue 2026-05-27 05:57:00 +00:00
PlasticDigits commented 2026-05-29 03:17:54 +00:00 (Migrated from gitlab.com)

mentioned in issue #215

mentioned in issue #215
PlasticDigits commented 2026-05-29 03:17:54 +00:00 (Migrated from gitlab.com)

marked as related to #215

marked as related to #215
PlasticDigits commented 2026-05-29 05:35:41 +00:00 (Migrated from gitlab.com)

mentioned in issue #218

mentioned in issue #218
PlasticDigits commented 2026-08-18 12:08:53 +00:00 (Migrated from gitlab.com)

mentioned in issue #561

mentioned in issue #561
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#164
No description provided.