Commit Graph

17 Commits

Author SHA1 Message Date
Dorian
7b7685f0e8 Tidy chat drawer composer layout 2026-05-06 20:12:30 +01:00
Dorian
e74f33f971 Fix chat signer state and add stickers 2026-05-06 20:05:08 +01:00
Dorian
1e74719932 Add release notes and tidy mobile UI 2026-05-06 19:58:03 +01:00
Dorian
b715c3f27d Add Nostr chat drawer 2026-05-06 19:52:20 +01:00
Dorian
b2f81a1f8d Stabilize hero stat layout 2026-05-06 19:48:09 +01:00
Dorian
1f86bf9cff Make odds labels readable 2026-05-06 19:47:29 +01:00
Dorian
fa707e2464 Add network stats and rotating mining jokes 2026-05-06 19:43:28 +01:00
Dorian
7e1f7a1a4b Scale heat theme to real hashrate range 2026-05-06 19:30:36 +01:00
Dorian
243cd0daf3 Make Boomer Heater more dead 2026-05-06 19:28:51 +01:00
Dorian
d6f8fd7686 Add Boomer Heater to status 2026-05-06 19:24:56 +01:00
Dorian
0c8e26f597 Add PWA support and miner race 2026-05-06 19:21:06 +01:00
Dorian
c2c376f8b9 Add miner shameboard calculations 2026-05-06 18:47:51 +01:00
Dorian
c77c74612d Add graph telemetry and remote signer login 2026-05-06 18:09:58 +01:00
Dorian
83b3a60497 fix(api): reject datum proxy shell responses 2026-05-06 17:19:19 +01:00
Dorian
8f7aeb88b7 chore: serve everything on port 1337
User-facing port unified at 1337 — vibes-aligned and easier to remember
than 8080/8420. Updates: api default PORT, .env.example, docker-compose
mapping (1337:1337), healthcheck target, Dockerfile EXPOSE, Vite dev
proxy.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-06 16:33:01 +01:00
Dorian
c56a47e2c4 feat(web): cyberpunk vue 3 dashboard with primal/amber/extension login
Frontend in @gashboard/web (Vue 3 + Vite + Pinia + TS, ~1.2k LoC):

Auth flow:
  - Two signing paths: NIP-07 browser extension (Alby/nos2x/Primal
    extension via window.nostr) and NIP-46 remote signer (Primal
    app, Amber, nsecbunker via bunker:// URI).
  - applesauce-signers lazy-loaded only on bunker login so users
    with NIP-07 don't pay the cost.
  - NIP-98 event built client-side, posted to /api/auth/login,
    JWT persisted in localStorage. Pinia auth store handles
    login/logout/state restore on reload.

Dashboard (composes the live /api/datum/stats poll, 5s):
  - PoolHero — combined hashrate as the headline number,
    block height, subscribed count, accepted/rejected shares.
  - LotteryWidget — rotating self-deprecating odds copy
    ("you're 0.3× as likely to find a block as get hit by
    lightning today"). Uses ~720 EH/s as the network-hashrate
    constant (TODO: fetch live).
  - ShareTicker — SVG sparkline of the last 60 polls.
  - MinerCard ×N — nickname (QU4CK/P1XEL/N4N0/M1N1), live
    hashrate, last share, lifetime tickets, reject %, status
    glow (green hashing / amber stale / red idle), affectionate
    roast subtitle per ASIC type.
  - BlockCelebration — full-screen overlay with celebration
    copy. Dormant for now (Datum's lastBlockFoundAt isn't
    surfaced yet); preview via window.gashboardCelebrate().

Cyberpunk theme:
  - Pure CSS vars, no Tailwind. Dark bg, neon cyan/magenta
    accents, monospace, glow shadows.
  - Optional CRT scanlines toggle (persists to localStorage).
  - Mobile-aware grid breakpoints.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-06 15:59:00 +01:00
Dorian
2dc9be4678 chore: scaffold pnpm workspace, container, deploy docs
Two-app pnpm workspace for the gashboard (mining dashboard) project:
@gashboard/api (Express 5 + TS) and @gashboard/web (Vue 3 + Vite + TS).
Shared tsconfig.base.json. Multi-stage Dockerfile (node:22.12-alpine,
non-root, healthchecked) and docker-compose.yml ready to deploy as a
Portainer Stack on Umbrel — joins umbrel_main_network so it can reach
the Datum container directly. .env.example documents every var; README
covers the Portainer deploy flow and the security posture.

Note: Dockerfile has a TODO marker to SHA256-pin the base image before
shipping to production.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-06 15:57:57 +01:00