Skip to content

feat(provider-dashboard): v2 corrective — preserve v1 top, replace events UI with 4 v2 zones#34

Merged
AquiGorka merged 2 commits into
mainfrom
feat/provider-dashboard-v2-corrective
May 18, 2026
Merged

feat(provider-dashboard): v2 corrective — preserve v1 top, replace events UI with 4 v2 zones#34
AquiGorka merged 2 commits into
mainfrom
feat/provider-dashboard-v2-corrective

Conversation

@AquiGorka
Copy link
Copy Markdown
Contributor

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 idlelowhigh 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

  • deno task check clean (type-check)
  • deno fmt --check clean
  • deno lint clean
  • deno task build (dev + production) succeeds
  • 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.

AquiGorka added 2 commits May 18, 2026 16:12
…ents UI with 4 v2 zones

PR-3 of the provider-dashboard v2 redesign. The v1 top section (header
chips, OpEx Balance card, 3-up Councils list) stays AS-IS. The v1 events
UI (5-column tx flow, tx-detail card, Live/Range toggle, Range Search,
date pickers, auto-flip-to-Range) is removed entirely. In the freed
space, four always-live zones land per the sketch's visual specs:

- Counter strip: 4 boxes — THROUGHPUT (last 15m mean of throughputPerMin),
  AVG LATENCY (weighted avg avgProcessingMs over last 100 bundles),
  QUEUE DEPTH (most recent snapshot), ERROR RATE (1h bundlesFailed /
  terminal-transitions; gracefully "—" until PR-104 lands).
- Topology: SVG edges + HTML nodes. MY PP yellow center, council ring,
  sibling-PP dots from POST /dashboard/council/discover (cached per
  render). Live edge pulses driven by 10-event-kind WS taxonomy, color
  per sketch. Council node palette transitions idle → low → high based on
  rolling-5-min pulse count (≥10 high, ≥3 low, else idle). No click
  handlers.
- Activity feed: right-rail card stack, ≤5 visible, ~8s fade, color-coded
  per event kind, deposit/withdraw amounts surfaced. No click handler.
- Sparklines: rolling 60-min trends for throughput / latency / queue from
  /dashboard/metrics?rangeMin=60, polled every 60s alongside the counter
  strip.

EventsClient handles WS reconnect on disconnect; no Range fallback,
no mode toggle anywhere on the page. Counter + sparkline poll cadence
matches the platform MetricsCollector's 60s snapshot interval.

api.ts: adds MetricsSnapshot / MetricsResponse / getMetrics. Removes the
now-unused listTransactions / getTransactionDetail / getUtxos and their
types (sole consumers were the removed 5-column / tx-detail surfaces).
@AquiGorka AquiGorka added the enhancement New feature or request label May 18, 2026
@AquiGorka AquiGorka merged commit 3920118 into main May 18, 2026
6 checks passed
@AquiGorka AquiGorka deleted the feat/provider-dashboard-v2-corrective branch May 18, 2026 20:47
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