Problem
After the user picks a session, the DRIVERS combobox is unusable for the ~2-15s it takes FastF1 to parse the session behind GET /api/v1/telemetry/drivers. PR #95 added a loading affordance (spinner + aria-busy + "Loading drivers…") so it reads as working rather than broken — but the underlying wait is still there.
Proposal
Serve the driver roster (and GP/session lists) from a static index committed to the repo, with a FastF1 fallback for anything not in the index:
backend/scripts/build_telemetry_index.py → backend/static/telemetry_index.json (2022-2025 rosters/GPs/sessions frozen).
get_available_gps / get_sessions / get_drivers become a dict lookup first, FastF1 fallback second.
- Turns a seconds-long list into a <5ms response; the session still parses lazily on the first telemetry request (prewarm already covers that).
Notes
Problem
After the user picks a session, the DRIVERS combobox is unusable for the ~2-15s it takes FastF1 to parse the session behind
GET /api/v1/telemetry/drivers. PR #95 added a loading affordance (spinner +aria-busy+ "Loading drivers…") so it reads as working rather than broken — but the underlying wait is still there.Proposal
Serve the driver roster (and GP/session lists) from a static index committed to the repo, with a FastF1 fallback for anything not in the index:
backend/scripts/build_telemetry_index.py→backend/static/telemetry_index.json(2022-2025 rosters/GPs/sessions frozen).get_available_gps/get_sessions/get_driversbecome a dict lookup first, FastF1 fallback second.Notes
/prewarmendpoint (PR perf(telemetry): reuse loaded FastF1 sessions + non-blocking endpoints #91) already warms the FastF1 session cache on session-select, so telemetry is fast; this issue is specifically about the roster list latency.docs/migration/design-specs/dashboard-round2.mditem 2).