Backend now returns 202 immediately. Frontend polls every 5s for up to 2 minutes until new results appear, then shows success toast.
PSI checks run mobile + desktop sequentially (up to 60s total). The default 30s client timeout was causing false network errors.
- PageSpeed API client with types for config, checks, and audits - SWR hooks: usePageSpeedConfig, usePageSpeedLatest, usePageSpeedHistory - GaugeIcon added to sidebar under Infrastructure group