Skip to content

feat(provider-dashboard): topology skeleton replaces v1 primary view (PR-B)#33

Closed
AquiGorka wants to merge 2 commits into
mainfrom
feat/provider-dashboard-v2-topology-skeleton
Closed

feat(provider-dashboard): topology skeleton replaces v1 primary view (PR-B)#33
AquiGorka wants to merge 2 commits into
mainfrom
feat/provider-dashboard-v2-topology-skeleton

Conversation

@AquiGorka
Copy link
Copy Markdown
Contributor

Summary

Vertical-slice PR-B of the provider-dashboard v2 redesign. /provider/:pk now renders the 4-zone layout from the locked design sketch:

  • Top counter strip — 4 placeholder boxes (THROUGHPUT, AVG LATENCY, QUEUE DEPTH, ERROR RATE), no live values yet.
  • Central topology — SVG layer for edges; HTML for nodes. MY PP rendered as a yellow ellipse at center, absorbing OpEx Balance + Fund / Copy PK / Copy URL action chips (v1 header actions, plural per sketch). Councils I'm in arranged on a fixed ring around MY PP; each council node shows name + jurisdiction flags + idle activity tag + asset count + up to 10 sibling-PP dots.
  • Right-rail activity feed — placeholder empty state.
  • Bottom sparkline strip — 3 placeholder boxes.

The v1 5-column tx-flow moves below the new zones as a "drill-down" section. The Live/Range mode toggle is wired into the new scaffold and continues to populate the 5-column end-to-end (v1 search + dedup behavior preserved). Click-to-drill from topology nodes / activity-feed cards stays in a later vertical-slice PR per the prompt.

What's not in this PR (per spec)

  • No pulses on topology edges (next vertical slice).
  • No live activity-feed cards (next vertical slice).
  • No counter / sparkline values wired (subsequent vertical slices).
  • No click-to-drill handlers on topology / activity nodes (later vertical slice).
  • No new backend endpoints; sibling-PP data comes from the existing POST /dashboard/council/discover (Phase 0 Q3 approval), called in parallel per membership at view load, best-effort.

Council node activity color

All council nodes render in the gray ("idle") palette per PM call — the green/amber palette comes alive when pulses ship and there are real edge-pulse counts to bucket on. Faking it from membership status would mislead and require unwinding later.

Test plan

  • deno task check (type-check) clean
  • deno fmt --check clean
  • deno lint clean
  • deno task build (dev + production) succeeds
  • deno task test green (7 passed)
  • PM verifies in browser per prompt §4 "Post-merge verification": new 4-zone layout shape, MY PP centered with councils in a ring + sibling dots inside, activity-feed placeholder right, sparkline placeholders bottom, v1 5-column reachable via existing Live/Range path, Live/Range toggle visibly present.

Part of the provider-dashboard v2 redesign (see pm-theahaco/prompts/redesign-provider-dashboard-2-prompt.md and the locked design sketch).

AquiGorka added 2 commits May 18, 2026 12:05
PR-B of the provider-dashboard v2 redesign. /provider/:pk now renders the
4-zone layout: counter-strip placeholders, central topology, right-rail
activity-feed placeholder, sparkline-strip placeholders. The 5-column
tx-flow moves below the new zones as a "drill-down" section that the
existing Live/Range mode toggle continues to populate end-to-end (v1
behavior preserved; click-to-drill wiring lands in a later vertical
slice).

Topology zone: SVG layer for edges, absolutely-positioned HTML for nodes.
MY PP center renders as a yellow ellipse absorbing OpEx Balance + Fund /
Copy PK / Copy URL action chips (the v1 header actions, plural per
sketch). Councils sit on a fixed ring around MY PP; each node shows
council name, jurisdiction flags, an "idle" gray activity tag, asset
count, and up to 10 sibling-PP dots fetched via
POST /dashboard/council/discover (best-effort, cached per render).

Per PM call: all council nodes render in the idle gray palette in PR-B.
The green/amber palette comes alive when the pulses PR ships and there
are real edge-pulse counts to bucket on.

No new backend endpoints. No mobile responsive. No drill-down click
wiring yet (next vertical-slice PR).
@AquiGorka AquiGorka added the enhancement New feature or request label May 18, 2026
@AquiGorka
Copy link
Copy Markdown
Contributor Author

Closed per redesign-provider-dashboard-3 prompt: PR-B implemented v1-replacement layout based on a misinterpretation of the sketch wording. PM clarified v2 actually preserves the v1 top section (header / OpEx card / 3-up Councils list) and replaces ONLY the events UI (5-column + tx detail / Live-Range toggle / Search). Fresh corrective PR coming on a new branch per the new prompt — do not re-use this branch or its diff.

@AquiGorka AquiGorka closed this May 18, 2026
AquiGorka added a commit that referenced this pull request May 18, 2026
…ents UI with 4 v2 zones (#34)

## Summary

Corrective v2 layout per `redesign-provider-dashboard-3-prompt.md`.
Closed PR #33 (wrong layout — v1 replacement based on a misread of the
sketch wording). This PR is fresh and:

**Preserves v1 (code paths unchanged)**
- Top header + copy URL / copy OpEx / Fund chips
- OpEx Balance card
- 3-up Councils list (asset-chip-copy dropped per `-3` §5)

**Removes the entire v1 events UI**
- 5-column tx flow (Deposit / Mempool / Submitted / Verified /
Withdrawn)
- `renderTxDetail` modal + `renderUtxoDetail` + `renderWithdrawDetail`
- Live/Range mode toggle, Range Search, date pickers, auto-flip-to-Range
- `setupDashboard` orchestration + `classifyTxIntoColumns`
- `api.ts` wrappers exclusively serving the removed surfaces:
`listTransactions`, `getTransactionDetail`, `getUtxos` + their types

**Adds 4 always-live v2 zones in the freed space**
- **Counter strip** (4 boxes; `#1971c2` outline / `#e7f5ff` fill):
THROUGHPUT (last-15m mean of `throughputPerMin`), AVG LATENCY (weighted
avg `avgProcessingMs` over the last 100 bundles), QUEUE DEPTH (most
recent snapshot), ERROR RATE (1h `bundlesFailed / (completed + failed +
expired)`; gracefully `—` until PR-104 lands and exposes
`bundlesFailed`).
- **Topology**: SVG edges + HTML nodes. MY PP yellow ellipse at center,
council ring, sibling-PP dots via `POST /dashboard/council/discover`
(cached per render, best-effort). Live edge pulses on every relevant WS
event with per-kind color per sketch. Council node palette transitions
`idle` → `low` → `high` based on rolling-5-min pulse count (`≥10` high,
`≥3` low). Passive — no click handlers anywhere.
- **Activity feed** (right rail): card stack, newest top, ≤5 visible,
`~8s` fade, border-color per event kind, deposit/withdraw amounts
surfaced. Passive — no click handler.
- **Sparklines** (3 charts, blue/purple/green): rolling 60-min trends
for throughput / latency / queue from `/dashboard/metrics?rangeMin=60`,
re-fetched every 60s alongside the counter strip.

WS reconnect handled by `EventsClient` (existing exponential-backoff
path). No Range fallback when WS drops, no mode toggle anywhere.

**ERROR RATE counter gracefully degrades** if the platform predates
PR-104: when the snapshots don't include `bundlesFailed`, the counter
shows `—`. Once PR-104 merges + deploys, the counter starts populating
without any further frontend change. `MetricsSnapshot.bundlesFailed` is
typed as optional for that reason.

## Out of scope (per `-3`)

- No click-wiring on new zones (drill-down destinations are gone with
the events UI; future click behavior is a separate change).
- No backend changes; no new endpoints. `provider-platform#104`
(`bundles_failed`) stays open as a separate PM-owned merge.
- No mobile / responsive redesign.
- No restoration of asset-chip-copy on the 3-up Councils list.

## Test plan

- [x] `deno task check` clean (type-check)
- [x] `deno fmt --check` clean
- [x] `deno lint` clean
- [x] `deno task build` (dev + production) succeeds
- [x] `deno task test` green (7 passed)
- [ ] PM verifies in browser per `-3` §6:
  - v1 top section unchanged (header chips + OpEx card + 3-up Councils)
  - No 5-column / no tx detail card / no Live/Range / no Search visible
  - 4 v2 zones render below the v1 top section
- Live WS events animate pulses + counter increments + feed cards +
sparkline ticks
- [ ] `provider-platform#104` separately verified end-to-end once merged
+ deployed; ERROR RATE counter then populates with real values.

Companion file: `PROVIDER_DASHBOARD_NOTES.md` not added — Phase 0 raw
audit dumps from `-1` still apply unchanged.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant