Candidate for triage: branch at d8b230a.
ServerBrowser now saves its resolved profile catalog and default to server-browser/reported-profiles.json, loads it at startup, validates it, writes atomically only when the catalog changes, and falls back to built-in profiles if saved state is unreadable. Saves serialize concurrent reports and persist the server's current catalog, keeping persistence separate from report-combination policy.
Verification on this commit:
ServerBrowser.test.tsandServerBrowserStream.test.ts: 49 tests passed, including restart-before-report, unchanged-write, and corrupt-file fallback.- The opt-in real-Chromium demo retained a persistent cookie across browser-process recreation in an isolated temporary profile. Run it from the checkout with
T3_RUN_SERVER_BROWSER_PROFILE_DEMO=1 ./node_modules/.bin/vp test run apps/server/src/preview/ServerBrowserProfiles.demo.test.ts --maxWorkers=2. vp run --filter t3 typecheck, changed-filevp lint, andgit diff --checkpassed.
The manual app/client flow with preview_open before any client reconnect has not been run. #19279 remains open with no fix in flight. I am keeping this as a proposal first, following CONTRIBUTING's guidance to discuss non-trivial changes before a PR.