The crew page (src/web/pages/crew.ts, crewPage → crewView) is where the owner steers the crew. Each visit builds scorecards, splits and spending, and its Server-Timing gives only the route total, so a slow visit cannot say which part was slow.
Done looks like:
[ ] crewPage notes session (takeSessionTime), scorecards (the data scorecardCard and splitsCard read), spending (the data spendingCard reads) and render, with notePhase from src/core/route_timing.ts. It follows the pattern in src/web/pages/repo.ts near line 1148. Loading the data before rendering is fine; what the page shows does not change.
[ ] A test (e.g. test/crew-timing.test.ts, built like test/browse-timing.test.ts) GETs /settings/crew as an admin and asserts the four phase names with numeric dur. It fails without the change.
[ ] bun test test/crew.test.ts test/route-timing.test.ts and the new test pass.
Files: src/web/pages/crew.ts, a test.
Risk: #3204 also edits this page (a scorecard row per team). Keep the timing in crewPage and in small loaders so the two changes merge cleanly.
The crew page (
src/web/pages/crew.ts,crewPage→crewView) is where the owner steers the crew. Each visit builds scorecards, splits and spending, and its Server-Timing gives only the route total, so a slow visit cannot say which part was slow.Done looks like:
crewPagenotessession(takeSessionTime),scorecards(the datascorecardCardandsplitsCardread),spending(the dataspendingCardreads) andrender, withnotePhasefromsrc/core/route_timing.ts. It follows the pattern insrc/web/pages/repo.tsnear line 1148. Loading the data before rendering is fine; what the page shows does not change.test/crew-timing.test.ts, built liketest/browse-timing.test.ts) GETs/settings/crewas an admin and asserts the four phase names with numericdur. It fails without the change.bun test test/crew.test.ts test/route-timing.test.tsand the new test pass.Files:
src/web/pages/crew.ts, a test. Risk: #3204 also edits this page (a scorecard row per team). Keep the timing increwPageand in small loaders so the two changes merge cleanly.