Skip to content

Dashboard UX round: standardized calculator metrics, mine cart train, panel cleanup#748

Merged
VijitSingh97 merged 1 commit into
developfrom
claude/calculator-metrics-standardize-64e342
Jul 23, 2026
Merged

Dashboard UX round: standardized calculator metrics, mine cart train, panel cleanup#748
VijitSingh97 merged 1 commit into
developfrom
claude/calculator-metrics-standardize-64e342

Conversation

@VijitSingh97

Copy link
Copy Markdown
Collaborator

What

Three coherent chunks, one visual round:

1. Calculator standardization. Every earnings tab presents its estimate in the same Day / Month / Year table: coin column in accent, a fiat column once that coin's price is known, one shared precision per triplet so the rows align. Tari gains its month/year spans (long computed, never rendered) under a "Long-run Average — not steady income" heading; XvB gains the published current-tier reward as the same table; Energy grows Revenue (est.) / Power Cost / Net columns — the gross the net starts from was previously computed but invisible. One judgment colour across the card: net green in profit, red in loss; estimates stay accent/plain.

2. Mine cart train. A pixel-art strip under the hero band on every view: the chart window split into one cart per interval, token coins marking what landed — an orange ɱ coin per share interval, a pair for a found block, a purple gem for a confirmed Tari payout, a blue X for an XvB raffle win. Tipple chute, sleeping cat, drifting clouds; coins bob. Fully static under prefers-reduced-motion, hidden while there is no history. Server side, build_payouts exposes confirmed payouts per chain as {x: ms, amount: atomic} timeline points, gated on the payout-confirmation flags — txids never ship. Purple coins light up only where Tari payout confirmation is on: real income, never a guess.

3. Panel UX round (from a 3-agent review pass): progressive disclosure on stat-heavy cards (headline stats up front, "Show all (N)" for the rest), value-ordered advanced grid with Your Stack / The Wider Pool section labels, workers table tabular numerics + row hover + offline-red scoped to the name cell, hero headline accent cue, chart active chips green→accent (green keeps meaning "healthy"), topology zone tints + marching-ants on live routes, Total Hashes (Node)/(Pool) disambiguation.

Review pass (pre-PR)

Three read-only agents swept the diff for coverage gaps, dead code, and doc drift, plus a ponytail over-engineering pass; everything found was fixed in this branch:

  • dead kind/CART_KINDS/KIND_RANK machinery deleted from minecart.mjs (renderer reads per-event counts); ponytail then also killed the orphaned fill/peak/xvb-folding chain left over from the ore-pile design — carts now carry event counts and bounds, nothing else
  • coin-slot collision fixed: a block's ɱ pair no longer squeezes out a same-interval Tari/XvB coin
  • build_state payouts wiring now tested end-to-end (incl. txid-never-ships assertion); cartTitle plurals, single-point history, all-gap history, gross-without-cost gating, topology ants class all covered
  • stale "≈-fiat rows" doc paragraph rewritten; Revenue-needs-cost_per_kwh gating stated in both docs
  • fixture generator un-rotted (get_xvb_standby pin — broken on develop since Warm the backup stack's XvB donation state so a failover doesn't cold-start the split #249) and the fixture regenerated to the current contract

Verification

  • make test-dashboard 1598 passed, 96.86% coverage; patch coverage 100%
  • frontend 259/259; stack 1622; selftest 132; fakes 23
  • lint (js/py/sh/md/yaml/docs-voice) clean — lint-proto not run locally (needs Docker; no proto changes)
  • Verified visually against a scrubbed real prod capture (267 kH/s Whale-tier fleet, light+dark, all four calculator tabs, train with real share/block/win cargo)

Not in scope: Tari-block chart series (no server event exists — the payouts payload is the honest source), Luck sign-colouring (value ships as an opaque formatted string; needs a server variant field), notification tray (needs an alerts payload — proposed as its own slice).

🤖 Generated with Claude Code

…el UX round

Calculator: every earnings tab now presents its estimate in one Day/Month/
Year table (EstTable) — coin column in accent, a ≈-fiat column once the price
is known, one shared precision per triplet so rows align. Tari gains its
month/year spans (computed but never shown), XvB gains the published current-
tier reward as the same table, Energy grows Revenue (est.) / Power Cost / Net
columns so the gross the net starts from is no longer implicit. One judgment
colour: net green in profit, red in loss.

Mine cart train: a pixel-art strip under the hero band retelling the chart
window as cargo — one cart per interval, token coins for what landed (orange
ɱ per share interval, a pair for a found block, purple gem for a confirmed
Tari payout, blue X for an XvB raffle win), tipple, sleeping cat, drifting
clouds. Decorative and quiet: bob/drip animation only, fully static under
prefers-reduced-motion, hidden with no history. Server side, build_payouts
exposes confirmed payouts per chain as {x: ms, amount: atomic} timeline
points (gated on the payout-confirmation flags; txids never ship).

Panel UX: progressive disclosure on the stat-heavy cards (headline stats
up front, "Show all" for the rest), value-ordered advanced grid with Your
Stack / The Wider Pool section labels, workers-table tabular numerics +
row hover + status colour scoped to the name cell, hero headline accent,
chart active-chips green→accent (green stays "healthy"), topology zone
tints + marching-ants on live routes, Total Hashes (Node)/(Pool)
disambiguation.

Also: fixture generator pinned get_xvb_standby (rotted at #249 — unpinned
MagicMock is not serializable) and the fixture regenerated to the current
build_state contract.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@VijitSingh97
VijitSingh97 force-pushed the claude/calculator-metrics-standardize-64e342 branch from 8e76c68 to 0738b7d Compare July 23, 2026 01:38
@VijitSingh97
VijitSingh97 merged commit f841755 into develop Jul 23, 2026
16 checks passed
VijitSingh97 added a commit that referenced this pull request Jul 23, 2026
Post-#748 gap sweep: confirmed-block coverage, doc contradictions, changelog
This was referenced Jul 23, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant