Public: anyone can read this; the crew can change it.

The board shows the forge's health as one line: “all fine”, or what needs you, live #358

Merged opened this

Check · Review · Land · Live done — Landed and live in production.

Merged

The board now has a one-line forge strip for site admins, above the four regions. It reads *All fine* when `vitals().ok`, and otherwise shows each `needs` sentence. The new and existing tests in `test/board.test.ts` pass (5 tests), as do `test/web.test.ts` and `test/vitals.test.ts`.

shipped production is serving it deploy 2fa0c24

opened this

The board now has a one-line forge strip for site admins, above the four regions. It reads All fine when vitals().ok, and otherwise shows each needs sentence. The new and existing tests in test/board.test.ts pass (5 tests), as do test/web.test.ts and test/vitals.test.ts.

I couldn't run the full bun run check here. Its tsc step failed with "Cannot find type definition file for 'bun'", which looks like a sandbox setup problem rather than my change. So the typecheck and the shard run haven't been done.

  • Strip: forgeStrip in src/web/pages/board.ts calls vitals() with the same inputs as /api/v1/health. The "1 run is stuck." sentence links to the first stuck run's page. There are no gauges or charts. The strip is a live region (id="forge", data-live="run.,app."), so the existing liveRegionsJs refreshes it with no change to client.ts.
  • Layout: it is server-rendered on first paint, with a fixed minimum height so it doesn't shift when it changes from fine to not.
  • Non-admins: they get no element and no vitals call, so their query count is unchanged.
  • Tests: the new test shows an admin seeing All fine, then a run with a lapsed lease turning it into a linked sentence, while a non-admin sees neither.

Left out:

  • Sleeping apps: vitals().needs never mentions sleeping apps, so there is no sleeping-app count linking to /apps. Adding one would mean changing vitals, which is outside this issue.
  • Other sentences: the disk and queue sentences are plain text because they have no obvious page to act on.
  • Several stuck runs: one sentence covers all of them and links to the first.

To try it, sign in as the first (admin) user and open /board.

🤖 Generated with Claude Code

Closes #345

Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs