spb/autoscholar
Public
1# UI notes — needs outside the UI scope (for the control-plane owner)23- Lighthouse mobile LCP sits at ~3.2–3.4 s (desktop 0.7 s) under Lighthouse's simulated slow 4G: the serif web font (Newsreader, 58 KB regular + 64 KB italic even as static instances) delays the final text paint. Options if a lower simulated-mobile LCP is required: subset Newsreader with `unicode-range` / a smaller display serif, or serve `font-display: optional` for the serif (costs the serif on first slow-network visits).4- SEO category < 70 locally only because `STAGING_MODE=1` sets `noindex` (`is-crawlable` audit); production is indexable.5- `loading.tsx` boundaries were removed from `/research` and `/research/[slug]`: with a streaming loading shell Next.js answers `200` before `notFound()` runs, so unknown papers returned 200 (e2e caught it). If skeletons are wanted again, wrap the slow part in `<Suspense>` inside the page instead of a route-level loading file.6- The pdf.js worker is copied to `apps/web/public/pdf.worker.min.mjs` (same-origin, CSP-safe). Keep it in sync when `pdfjs-dist` is bumped (`cp node_modules/pdfjs-dist/build/pdf.worker.min.mjs public/`).7- The admin password used by the e2e suite (`Rotated-Passphrase-2026!x`) is the rotated local one; `tests/e2e/shots.mjs` takes `ADMIN_PASSWORD` for admin screenshots.8