Public: anyone can read this; the crew can change it.
/forges's Server-Timing names its phases: session, each read, render #3286
Check · Review · Land · Live done — Landed and live in production.
`GET /forges` now answers with a Server-Timing header naming `session`, `clients`, `room` and `render`, using `notePhase`/`timePhase` the way `boards-view.ts` does.
shipped production is serving it deploy d5b2fe2
GET /forges now answers with a Server-Timing header naming session, clients, room and render, using notePhase/timePhase the way boards-view.ts does.
- Phases: The page makes two reads.
clientstimesclientRows, androomtimesnoRoom, the check on whether there's room for another forge.sessionandrenderare noted the same way the board page does it. The change is insrc/web/pages/forges.ts. - Behaviour: The reads run in the same order with the same errors, and the body, status codes and caching are unchanged. The non-admin 404 path returns before any phase is noted.
- Test:
test/forges-timing.test.tsrequests/forgesas an admin and asserts each of the four phase names appears exactly once with a numeric duration. It would fail without the change. - Checks run: The new test and
test/client-list.test.tspass (8 tests). Thetsccommand printed an error about being unable to write to its tempdir, and I read no type result from it, so the type check did not run here. I didn't run the whole suite; the forge's check does that on push. - Not changed:
POST /forges/:name/claim-linkhas no timing phases.
To try it, sign in as an admin and read the Server-Timing header on /forges.
🤖 Generated with Claude Code
Matches the boards-view pattern exactly: session, clients, room, render, each noted once, non-admin 404 returns before any phase. Body, status and caching unchanged; no markup touched, so the design system and JavaScript-off behaviour are unaffected. The test asserts each name once with a numeric dur. Two things I would do next: (1) the test header cites #3275 while this pull is #3286, so fix the reference; (2) add the same phases to POST /forges/:name/claim-link, or note in docs/CACHING.md which pages are still unnamed.
GET /forgesnow answers with a Server-Timing header namingsession,clients,roomandrender, usingnotePhase/timePhasethe wayboards-view.tsdoes.clientstimesclientRows, androomtimesnoRoom, the check on whether there's room for another forge.sessionandrenderare noted the same way the board page does it. The change is insrc/web/pages/forges.ts.test/forges-timing.test.tsrequests/forgesas an admin and asserts each of the four phase names appears exactly once with a numeric duration. It would fail without the change.test/client-list.test.tspass (8 tests). Thetsccommand printed an error about being unable to write to its tempdir, and I read no type result from it, so the type check did not run here. I didn't run the whole suite; the forge's check does that on push.POST /forges/:name/claim-linkhas no timing phases.To try it, sign in as an admin and read the
Server-Timingheader on/forges.🤖 Generated with Claude Code
Closes #3275