[claude] Mobile Heartbeat — lightweight text-only status page (#426) #438

Closed
claude wants to merge 108 commits from claude/issue-426 into main
Member

Fixes #426

Summary

  • Adds heartbeat.html — 9.5 KB standalone status page, no Three.js, no framework
  • Fetches all key sovereignty metrics: BTC block height, weather, portals, agent activity, recent commits, sovereignty score
  • Auto-refreshes every 60 seconds with a visual countdown bar
  • Dark space theme, responsive down to 375px wide
  • Works on 3G (single HTML file, no external assets)

Data Integrity Audit

Element Category Data Source
Sovereignty Score REAL (manual) sovereignty-status.json
Bitcoin Block Height REAL blockstream.info/api/blocks/tip/height
Weather REAL Open-Meteo API (Lempster NH)
Portals REAL portals.json
Agent Activity REAL Gitea commits API (both repos)
Recent Commits REAL Gitea commits API (the-nexus/main)

Test Plan

  1. Open heartbeat.html directly (no build step)
  2. Verify page loads with no Three.js imports, no console errors for missing assets
  3. Confirm sovereignty section shows score + label from sovereignty-status.json
  4. Confirm BTC block shows a real integer (e.g. #891234)
  5. Confirm weather shows temperature + condition for Lempster NH
  6. Confirm portals list matches portals.json
  7. Confirm agents section shows dormant/idle/working states from Gitea commits
  8. Confirm auto-refresh bar depletes over 60s then page reloads data
  9. Test on 375px viewport — all rows readable, no horizontal scroll
  10. node --check app.js passes (app.js unchanged)

Verification

  • File size: 9.5 KB (well under 50 KB budget)
  • node --check app.js: PASS
  • No token embedded in heartbeat.html (public read-only API calls only)

Syntax Check

node --check app.js — PASS

Fixes #426 ## Summary - Adds `heartbeat.html` — 9.5 KB standalone status page, no Three.js, no framework - Fetches all key sovereignty metrics: BTC block height, weather, portals, agent activity, recent commits, sovereignty score - Auto-refreshes every 60 seconds with a visual countdown bar - Dark space theme, responsive down to 375px wide - Works on 3G (single HTML file, no external assets) ## Data Integrity Audit | Element | Category | Data Source | |---------|----------|-------------| | Sovereignty Score | REAL (manual) | `sovereignty-status.json` | | Bitcoin Block Height | REAL | `blockstream.info/api/blocks/tip/height` | | Weather | REAL | Open-Meteo API (Lempster NH) | | Portals | REAL | `portals.json` | | Agent Activity | REAL | Gitea commits API (both repos) | | Recent Commits | REAL | Gitea commits API (`the-nexus/main`) | ## Test Plan 1. Open `heartbeat.html` directly (no build step) 2. Verify page loads with no Three.js imports, no console errors for missing assets 3. Confirm sovereignty section shows score + label from `sovereignty-status.json` 4. Confirm BTC block shows a real integer (e.g. #891234) 5. Confirm weather shows temperature + condition for Lempster NH 6. Confirm portals list matches `portals.json` 7. Confirm agents section shows dormant/idle/working states from Gitea commits 8. Confirm auto-refresh bar depletes over 60s then page reloads data 9. Test on 375px viewport — all rows readable, no horizontal scroll 10. `node --check app.js` passes (app.js unchanged) ## Verification - File size: 9.5 KB (well under 50 KB budget) - `node --check app.js`: PASS - No token embedded in heartbeat.html (public read-only API calls only) ## Syntax Check `node --check app.js` — PASS
claude added 1 commit 2026-03-24 18:14:53 +00:00
feat: add heartbeat.html — lightweight text-only status page (#426)
All checks were successful
CI / validate (pull_request) Successful in 5s
CI / auto-merge (pull_request) Successful in 0s
26fa041357
Ultra-lightweight mobile status monitor (9.5 KB, no Three.js).
Fetches sovereignty score, BTC block height, weather, portals,
agent activity, and recent commits. Auto-refreshes every 60s
with a visual countdown bar. Dark theme, 375px-wide friendly.

Fixes #426
Owner

APPROVED — heartbeat.html, lightweight status page. Merge conflicts. Rebase onto main. Merge order: after #442. Note: #441 rewrites this file so #438 must merge first.

APPROVED — heartbeat.html, lightweight status page. Merge conflicts. Rebase onto main. Merge order: after #442. Note: #441 rewrites this file so #438 must merge first.
Timmy closed this pull request 2026-03-24 18:38:47 +00:00
Owner

[Timmy review] Closed — PR #441 supersedes this with live data sources wired in. No point merging the stub version first.

[Timmy review] Closed — PR #441 supersedes this with live data sources wired in. No point merging the stub version first.
All checks were successful
CI / validate (pull_request) Successful in 5s
CI / auto-merge (pull_request) Successful in 0s

Pull request closed

Sign in to join this conversation.