- LCP/TTFB/TBT: read from statistics.googleWebVitals (flat median values)
- FCP: statistics.timings.paintTiming['first-contentful-paint']
- pageTimings: nested under statistics.timings.pageTimings, not at root
- Remove PerceptualSpeedIndex (not present in this sitespeed version)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- runner.js: auto-detects sitespeed.io via which/candidates instead of
hardcoded path; collects all stderr and appends last 20 lines to the
error so the real failure is visible in the UI log
- running.pug: render multi-line error messages line-by-line
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
sitespeed.io web UI with Express/Pug/SQLite — port 3132.
Includes job queue, SSE live log, full metrics dashboard,
site history, CO2/axe/CWV sections, and Docker support.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>