Show loading state during initial identity read

Task 11946 · Done · Coder · created · updated

Found while working Task 11936 (stalled connections on some ISP paths). With no cached identity (a first visit, or after a sign-out) and `/api/auth/me` slow or stalled, the whole console is a blank page: no spinner and no stall notice. `RequireAuth` renders `null` while `loading`, and the stall banner sits inside the shell, which is not mounted yet. Reproduced on a local stack with Playwright by holding `/api/auth/me` for 20 s on a fresh browser context: a blank light page for the whole wait. Requirements: 1. While the first identity read is in flight, show the shell's loading state rather than an empty page. 2. If that read passes the stall threshold (`apps/web/src/lib/requestStall.ts`), show the stall notice there too. Out of scope: the read relay and the `RequireSuperadmin` unresolved-yes fix (shipped in Task 11936, PR #7522); second-hostname failover (Task 11931). Done means: - With `/api/auth/me` held on a fresh browser context, the page shows a loading indicator within one frame, and the stall notice after the threshold. - `./dc check quick` green; changed-area tests green.

Outcome

RequireAuth now shows the shell spinner plus stall notice while the first /api/auth/me read is out (was blank). Live check: spinner at first paint, notice at 8.7s; quick gate + App tests green. PR #7525 queued. Memory: none applied.

Pull request

Artifacts

Activity

  • Created
  • Run
  • Runner started
  • Runner ended (done)