Changelog

Live map keeps working when the MQTT stream is down

2026-06-14

Car positions on the live map were fed exclusively by the MQTT stream, so if the stream delivered nothing (an OpenF1 broker outage, or an account without MQTT streaming entitlement), the map stayed empty even though REST data was available. The live view now also polls car locations over REST (every 2s) as a fallback, so the map paints and cars move whenever live REST data is accessible — independent of stream health. Added an /api/debug/mqtt-probe endpoint that authenticates with the access token and reports whether the broker delivers any messages, to diagnose stream issues quickly.

Fixed live MQTT stream delivering no data (empty map, frozen timings)

2026-06-14

The live race stream connected but received no messages, so the map stayed empty and timings froze on the snapshot from page load. OpenF1's MQTT broker authenticates with the OAuth2 access token as the password (the same token used for REST) — the stream was connecting with the raw account password instead, which the broker accepts as an unentitled session: the subscription is granted but no live data is ever pushed. The stream now authenticates with the access token, restoring real-time car positions and live timing updates.

Starting grid on the dashboard once qualifying is done

2026-06-13

Once qualifying has run for the upcoming race (but before the race itself), the dashboard's Next Race card now shows the starting grid beneath the weekend schedule — compact, team-coloured driver pills in grid order, with pole highlighted. The top five are shown by default; a chip expands to reveal the full grid.

Live view no longer drops to the replay picker when a session overruns

2026-06-13

Qualifying and practice frequently run past their scheduled end time (red flags, incidents). The race page was deciding live-vs-replay from a hard scheduled-end comparison, so an overrunning session would suddenly switch to the "choose a replay" screen even while it was still running. The live view now stays up through a grace window past the scheduled end, and the live/replay mode is set explicitly by how you entered the page rather than re-derived. (If the page still shows the replay picker during a live session, that points to an expired OpenF1 token — check Settings → API credentials.)

Fixed qualifying timing tower freezing during final hot laps

2026-06-13

The qualifying timing board no longer goes blank/frozen while drivers complete the flying laps they started just before the chequered flag — often the fastest laps of the segment. The segment reset was treating the chequered flag as the immediate start of the next segment, which filtered out those still-completing laps (they start before the flag) until the next segment actually began. The board now keeps the ending segment active until a new lap is started after the flag, so Best, Last Lap, sectors, and the order keep updating live as the final laps cross the line.

Circuit pages now show the all-time fastest lap

2026-06-06

Each circuit now displays two distinct records: the all-time Fastest Lap (the quickest lap ever set at the current layout, almost always a qualifying lap) alongside the official Race Lap Record (fastest lap set under race conditions). Previously only the race lap record was shown and labelled simply "Lap Record", which was misleading — e.g. Monaco listed Hamilton's 1:12.909 race record but not Norris's all-time 1:09.954 from 2025 qualifying. All 24 circuits have been updated with verified data.

Reliable Q1/Q2/Q3 reset in the timing tower

2026-06-06

The qualifying timing tower now resets Best, Last Lap, sectors, and the running order between segments based on the chequered flag that ends each segment, rather than a lap-timing gap. This fixes cases where previous-segment times carried into the next, and it no longer resets mid-segment after a red flag.

Timing board stays fresh during live sessions

2026-06-06

Lap times, sectors, gaps, and running order now keep updating live without needing a page refresh. Previously the board only updated from the realtime stream, so if that connection dropped the data would freeze; it is now backed by lightweight polling so the latest timing is always shown.

Live sector times in the qualifying timing tower

2026-06-06

During qualifying, S1/S2/S3 and the speed trap now tick over live as a driver runs their current lap, and each sector is coloured against the field — purple for the overall fastest sector, green for a personal best. Rows stay blank until a driver completes their first lap of the segment, so the board no longer shows scattered partial sectors at the start of Q1/Q2/Q3. Joining a session mid-way now reliably backfills the segment’s best laps and running order — the lap history is re-fetched with retries if the first attempt comes back empty.

Collapsible sidebar

2026-05-24

Collapse the sidebar to icon-only mode to reclaim screen space. State is persisted across page reloads.

Qualifying timing tower resets between segments

2026-05-22

Best Lap, Last Lap, and the sort order in the timing tower now reset between Q1/Q2/Q3. Lap times from a previous segment are no longer carried forward.

Qualifying segment shown in header

2026-05-22

During qualifying, the session header now shows Q1, Q2, or Q3 based on race control messages, instead of just "Qualifying".

Lap data persists while driver is in the pit

2026-05-22

Last Lap, sector times, and speed trap now stay visible when a driver is in the pit — the timing tower shows their most recently completed lap instead of going blank. Best Lap column is also unaffected.

Best lap column in timing tower

2026-05-22

The timing tower now shows each driver's personal best lap time in a dedicated "Best" column, always visible alongside their last lap. The overall fastest lap is highlighted in purple.

Live race: play, pause, and scrub

2026-05-03

The live race view now uses the same playback controls as replay — play/pause, drag the timeline back up to 3 minutes into the buffer, then resume from where you paused. The Settings catch-up delay just sets the initial cursor position; once you're in the page you can sync to TV by scrubbing.

Debug page for OpenF1 connectivity

2026-05-03

New /debug page surfaces tier/credential state, runs every authenticated REST endpoint with status/latency/sample, and shows live MQTT message counts per topic — so an empty race view is no longer a black box.

Sidebar reflects live session state

2026-04-29

The race nav item now reads "Live Telemetry" with a pulsing red dot when a session is in progress, and "Replay Telemetry" without the dot otherwise.

Support the project

2026-04-29

Added a "Buy me a coffee" link in the sidebar footer for anyone who wants to chip in toward keeping the site running.

Mobile scroll fix

2026-04-29

Switched the app layout to use the dynamic viewport height unit (dvh) so iOS Safari no longer hides the top or bottom of the page behind the URL bar — no more double-scrolling on iPhone.

New SVG logo

2026-04-28

Replaced the placeholder text logo with a professional SVG mark featuring custom geometric F1 letterforms. The logo respects the team accent colour system and can be used at any size.

Live Race preview screenshots

2026-04-28

The Live Race gate now shows thumbnail previews of the map and pit stop visualization. Click either thumbnail to view it full size.

Merged Results & Standings

2026-04-28

The separate Standings page has been merged into Results. The Results page now shows a Drivers/Constructors toggle that switches the championship battle graph and standings table between both championships. Standings expand from 5 to all entries on demand.

Circuits page

2026-04-17

New Circuits section shows all 24 F1 tracks with statistics: circuit length, corners, DRS zones, race laps, lap record and first GP year. Click any circuit to see its full race winners history fetched from the Jolpica API.

Cancelled race weekend indicator

2026-04-16

Race weekends cancelled mid-season (Bahrain & Saudi Arabia) now show a strikethrough overlay with a "Race Weekend Cancelled" badge in the replay picker, and cannot be selected.

Grid → Finish bump chart revamp

2026-04-14

Replaced the hand-rolled SVG slope chart with a Recharts LineChart. The chart now scales responsively, shows an interactive sorted tooltip per column, and uses dashed lines for DNF drivers.

Championship Battle chart revamp

2026-04-14

Replaced the hand-rolled SVG championship chart with a proper Recharts LineChart. The chart now scales responsively, shows an interactive tooltip with driver codes and points, and includes a colour-coded driver legend.

Replay session picker

2026-04-14

When there is no live race, the race page now shows a grid of all completed races from the current season. Pick any race to load its full replay.

Race view loading sequence

2026-04-14

Live race view now shows a staged initialisation overlay — session info, stream connection, weather, race control, track status, driver timings, and telemetry each confirm as data arrives, then fade away.

Pit stop exit window on gap map

2026-04-07

Clicking a driver in circular mode now shows a green-to-red gradient arc spanning the full pit exit window — quick stop (−1s), median, and slow (+2s) — plus an inset card with projected rejoin gaps.

Current season results and qualifying

2026-03-29

The history page now shows race results and qualifying data for the current season. Race detail pages render qualifying even before the race has happened.

Fix replay timing tower empty stats

2026-03-28

Fixed race replay showing empty stats and position 99 for all drivers. Added retry logic and request staggering for session data fetching, response validation, and proxy error resilience.

Circular gap map with pit stop projection

2026-03-27

New circular map mode in the live race view shows cars on a circle with correct time gaps. Select a driver to see a ghost marker showing where they'd rejoin after a pit stop — useful for spotting traffic vs clear air.

Responsive circuit map

2026-03-26

The live race circuit map now dynamically fills all available screen space instead of rendering at a fixed size.

Multi-user credential storage

2026-03-26

API credentials are now stored in encrypted browser cookies instead of server-side files, enabling multi-user support on hosted deployments.

Lap time analysis — delta mode & fullscreen

2026-03-26

Lap time analysis now has a delta mode, inline gap-to-fastest in the tooltip, fullscreen view that fills the entire screen, and smoother curves.

Lap time analysis

2026-03-25

Compare driver pace lap-by-lap on any race result page (2023+). Select up to 4 drivers to see their lap times charted with tire strategy overlays. Toggle pit lap filtering for cleaner analysis.

Navigation overhaul

2026-03-25

Unified navigation across the app with reusable NavLink, NavPill, and BackButton components. Sub-pages now show a back button in the header bar for a native app feel. Dashboard standings cards expand inline with 'Show all', and driver rows link directly to profiles.

Driver profile pages

2026-03-24

Browse all drivers in the grid and view detailed profiles with headshot, current season stats, race-by-race results, career history, and progression charts.

Race replay playback

2026-03-10

Completed sessions now auto-enter replay mode with full playback controls — play/pause, speed (0.5x–16x), timeline scrubbing, and jump-to-time. All race data (positions, timing, flags, weather) plays back in sync.

Multi-season Battles page

2026-03-10

The Battles page now supports switching between seasons with a tab selector. 2026 data with Audi and Cadillac teams is included. The Compare modal adapts to the selected season.

Team color bars on Standings page

2026-03-10

The full Standings page now shows team color bars next to each driver and constructor, matching the dashboard style. The championship leader row is highlighted with their team color.

Add 24/12-hour clock setting

2026-03-09

Choose between 24-hour and 12-hour time format in Settings. The preference is saved and applied to all schedule times across the app.

Track time for race schedules

2026-03-09

Toggle between your local time and the track's local time on the next race schedule pills. Covers 30+ circuits with correct IANA timezones.

Improved race schedule pills

2026-03-09

Session pills now have color-coded borders — red for Race and Quali, amber for Sprint and SQ, and a subtle style for practice sessions.

Redesigned podium display

2026-03-09

Podium results on the dashboard and race detail pages now use a stacked row layout with position badges, team color bars, and driver names highlighted in team colors.

Biggest gainer icon in results

2026-03-09

The driver who gained the most positions is now highlighted with a trending-up icon in the race results table.

Enriched dashboard

2026-03-09

The dashboard now shows a next race countdown card, last race podium results, team color bars in standings, and championship point gaps.

Better history page UX

2026-03-09

Past races are now clearly clickable with a chevron icon, while future races are visually dimmed and non-interactive.

About page and disclaimer

2026-03-09

Added an About page with project info and data source credits. The live race view now includes a disclaimer about this being a hobby project.