Commit Graph
7 Commits
Author SHA1 Message Date
archipelago 9d02517ca8 style(cuprate-ui): improve mobile dashboard layout 2026-09-12 15:31:04 -04:00
archipelago bd36b6fb3d style(cuprate-ui): match bitcoin status cards 2026-09-12 15:27:44 -04:00
archipelago 8d6a2ba923 feat(cuprate-ui): add bitcoin-style dashboard tabs 2026-09-12 15:12:35 -04:00
archipelago 67e9b7d001 feat(cuprate-ui): use app icon and shared dashboard background 2026-09-12 15:08:33 -04:00
archipelago cb567056ff refactor(cuprate-ui): align dashboard with bitcoin UI style 2026-09-12 15:00:15 -04:00
ssmithx 10b11d29ae fix(cuprate-ui): target_height 0 means synced, not stuck (review)
Monero's get_info returns target_height == 0 when the node is FULLY
SYNCED — the field is the height being caught up to, not the chain tip.
The '??' fallback left 0 in place, so every healthy node rendered
"Syncing — 0.00%, 0 blocks behind" forever. Treat 0/absent as
target = own height, the same sentinel electrs_status.rs branches on.
2026-09-09 13:58:19 +00:00
ssmithx 37fde6cfa7 feat(cuprate-ui): companion dashboard for the Cuprate Monero node
Same companion shape as bitcoin-ui/electrs-ui: host-networked nginx
bound to 127.0.0.1:18091 (auth: gated + session_passthrough), serving
a dark glass status page that polls the node's restricted RPC via a
session-gated /cuprate-rpc/ proxy — sync height/target with progress
bar, peers, mempool, chain size and free disk (from get_info), plus a
wallet 'remote node' endpoint. The offline state explains the disk gate
so a refused node says why.

No secret rendering: the restricted RPC is Monero's safe-for-public
subset, so nginx.conf is baked into the image (no pre_start hook, no
bind mount). companion.rs auto-provisions archy-cuprate-ui alongside
cuprate and reaps it when cuprate goes.

Catalog regenerated (cuprate-ui entry + manifest embed, 18091 into the
mesh launch-port list). NOTE: releases/app-catalog.json is UNSIGNED as
committed — run scripts/sign-catalog.sh before publishing.
2026-09-09 07:49:18 +00:00