Context
apps/loopover-miner-ui/src/lib/portfolio-queue.ts:25,50,58 computes and validates oldestQueuedAgeMs. Its own header comment (lines 1-5) states the miner-ui now serves "the SAME per-repo dashboard shape the CLI's queue dashboard command computes ... so the miner-ui and the CLI share one data path." The CLI does render this field (packages/loopover-miner/lib/portfolio-dashboard.js:62, "oldest-queued: Xm"), but neither apps/loopover-miner-ui/src/routes/portfolio.tsx nor routes/index.tsx's OverviewPortfolioCard (lines 71-88) ever reads it — the stated parity claim isn't actually delivered in the web UI.
Requirements
- Render
oldestQueuedAgeMs (formatted the same way the CLI does, e.g. "oldest queued: Xm") in either portfolio.tsx or OverviewPortfolioCard (whichever is the more appropriate summary location — check which one already shows the sibling queue-depth/age-adjacent stats).
- Do not change the CLI's own rendering (
portfolio-dashboard.js) — it's already correct and is the reference for formatting.
- This is a UI-only change under
apps/**.
Deliverables
Expected Outcome
The web dashboard actually delivers the "shares one data path with the CLI" parity its own code comment claims.
Links & Resources
apps/loopover-miner-ui/src/lib/portfolio-queue.ts:1-5,25,50,58
packages/loopover-miner/lib/portfolio-dashboard.js:62 (CLI reference rendering)
apps/loopover-miner-ui/src/routes/portfolio.tsx, routes/index.tsx:71-88
Context
apps/loopover-miner-ui/src/lib/portfolio-queue.ts:25,50,58computes and validatesoldestQueuedAgeMs. Its own header comment (lines 1-5) states the miner-ui now serves "the SAME per-repo dashboard shape the CLI'squeue dashboardcommand computes ... so the miner-ui and the CLI share one data path." The CLI does render this field (packages/loopover-miner/lib/portfolio-dashboard.js:62, "oldest-queued: Xm"), but neitherapps/loopover-miner-ui/src/routes/portfolio.tsxnorroutes/index.tsx'sOverviewPortfolioCard(lines 71-88) ever reads it — the stated parity claim isn't actually delivered in the web UI.Requirements
oldestQueuedAgeMs(formatted the same way the CLI does, e.g. "oldest queued: Xm") in eitherportfolio.tsxorOverviewPortfolioCard(whichever is the more appropriate summary location — check which one already shows the sibling queue-depth/age-adjacent stats).portfolio-dashboard.js) — it's already correct and is the reference for formatting.apps/**.Deliverables
oldestQueuedAgeMsis visibly rendered somewhere in the miner-ui portfolio view, matching the CLI's formatting.Expected Outcome
The web dashboard actually delivers the "shares one data path with the CLI" parity its own code comment claims.
Links & Resources
apps/loopover-miner-ui/src/lib/portfolio-queue.ts:1-5,25,50,58packages/loopover-miner/lib/portfolio-dashboard.js:62(CLI reference rendering)apps/loopover-miner-ui/src/routes/portfolio.tsx,routes/index.tsx:71-88