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

The terminal's palette offers "Forges you sent" to an admin: each forge with its claim state and the same apps-running note as /forges #2211

shipped production is serving it opened this has it
opened this

For the owner who sent a client a forge and is in the terminal, not the browser: they see how each forge they sent is doing without opening /forges. Replaces #1518, which was written before the summary existed. That summary now lives in src/spawn/clients.ts (clientRows, ClientRow.running from hostedChildApps), and /forges renders it in runningNote (src/web/pages/forges.ts).

Done looks like:

  • [ ] Lift the wording of runningNote into one plain-text function beside clientRows in src/spawn/clients.ts, e.g. runningWords(row): string | null, giving "3 apps running" or "2 apps running · notes: build failed". /forges uses it, so the page and the terminal cannot drift. The page's markup and data-apps attributes stay as they are.
  • [ ] A new screen src/tui/screens/forges.ts shows one row per clientRows(app) entry: the name, who it is for, its claim state in the same words as the page's STATE (Claimed / Not claimed yet / Unknown / Still being made), and runningWords. It has an empty line when nothing was sent. It never shows a claim link.
  • [ ] src/tui/forge.ts pushes a palette command id: "forges", title "Forges you sent", only when session.user?.isAdmin === true, the same rule as /forges. A member and a guest do not get the command at all. This is the test pull #1544 failed; make it pass, and do not weaken it.
  • [ ] Tests in test/ (beside the other tui screen tests): an admin is offered the command and a member and a guest are not; the screen renders a child with all apps up, one with an app down and its reason, and the empty case; /forges still renders the same note for the same row.
  • [ ] bun x tsc --noEmit and the tui and forges tests pass.

Files: src/spawn/clients.ts, src/web/pages/forges.ts, src/tui/forge.ts, src/tui/screens/forges.ts (new), a test file. Risks: clientRows asks each child for its claim state, so run it inside runAsync the way the Family command does. Do not touch the chart or the release workflow. Suggested: scout.

Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs