Dashboard UX round: standardized calculator metrics, mine cart train, panel cleanup#748
Merged
VijitSingh97 merged 1 commit intoJul 23, 2026
Conversation
…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
force-pushed
the
claude/calculator-metrics-standardize-64e342
branch
from
July 23, 2026 01:38
8e76c68 to
0738b7d
Compare
VijitSingh97
added a commit
that referenced
this pull request
Jul 23, 2026
Post-#748 gap sweep: confirmed-block coverage, doc contradictions, changelog
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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_payoutsexposes 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:
kind/CART_KINDS/KIND_RANKmachinery deleted from minecart.mjs (renderer reads per-event counts); ponytail then also killed the orphanedfill/peak/xvb-folding chain left over from the ore-pile design — carts now carry event counts and bounds, nothing elsebuild_statepayouts wiring now tested end-to-end (incl. txid-never-ships assertion);cartTitleplurals, single-point history, all-gap history, gross-without-cost gating, topology ants class all coveredcost_per_kwhgating stated in both docsget_xvb_standbypin — 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 contractVerification
make test-dashboard1598 passed, 96.86% coverage; patch coverage 100%lint-protonot run locally (needs Docker; no proto changes)Not in scope: Tari-block chart series (no server event exists — the
payoutspayload 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