Features
Gantry Race Control (by @23Kev)
A new race-control view for spectating and replay review on a spare screen.
- Incident review: Follow a live incident feed, jump the replay directly to an incident, and switch the camera to any driver from the standings.
- Race-long lap graph: Review trace, position, or gap history that keeps recording while Gantry is closed and survives an app restart.
- Flexible workspace: Resize the standings and incident panes, browse drivers beside the lap graph, and use standings columns that remain aligned at different window sizes.
- Reliable detection: Crash detection is more accurate, works while spectating, and avoids duplicate reports during sustained incidents or replay rewinds.
Delta Speed (by @CtrlAltDale)
See how much faster or slower you are right now than your session-best clean lap at the same point on track.
- Choose automatic, km/h, or mph units and optionally show the numeric difference.
- The colour display fades from neutral toward green when faster or red when slower.
- A clear empty state explains when a clean reference lap is still needed.
Standings and Session Bar Enhancements (by @toba-k, @Foribald, and @tariknz)
- Resizable standings: Scale the Standings widget from 50% to 200% to suit your display.
- More session information: Add fuel, last and best laps, top speed, manufacturer position, and class rank to Standings and Relative session bars.
- Richer class headers: Use compact Strength of Field values and optional per-manufacturer car counts.
- Practice estimates: Optionally display hypothetical iRating changes during online practice sessions.
Input and Layout Improvements (by @Foribald)
- ABS bar style: Show ABS activity as a highlighted fill beneath the brake trace, with the original overlay style still available.
- Clearer gear display: Larger speed and unit text improves readability at smaller widget sizes.
- Layout alignment markers: Edge midpoint indicators make it easier to centre and align widgets in edit mode.
Performance Optimizations (by @tariknz and @23Kev)
- Reduced unnecessary background processing and display updates across normal dashboards.
- Improved efficiency when several widgets or displays use the same session information.
- Kept hidden overlays from consuming unnecessary processing until they become visible again.
- Smoothed Track Map movement and restored fast, stable Blind Spot Monitor updates.
Bug Fixes
- Settings window recovery: The settings window is moved back onto a connected display when a monitor is unplugged or rearranged (by @CtrlAltDale).
- AI class headers: Standings now show useful class headers and driver counts in AI races, even when iRacing omits class names or ratings (by @tariknz).
- Stable standings layout: Car numbers no longer shift adjacent columns as the displayed driver changes (by @tariknz).
- Accurate manufacturer totals: Class-header manufacturer counts now use the full field instead of only the visible standings rows (by @tariknz).
- Fuel label sizing: The
AVG 10consumption label no longer wraps or collapses at larger font sizes (by @tariknz). - Country flag columns: Empty flag columns are hidden automatically in AI and offline sessions (by @tariknz).
- Settings spacing: Nested settings and session-bar reorder controls now have consistent alignment (by @tariknz).
- Offline reference laps: Clean laps can now power live-position gaps and delta displays in offline sessions where iRacing reports class ID 0 (by @CtrlAltDale).
- Team-race pit timing: Driver swaps during a pit stop no longer restart the pit timer and shorten the reported stop (by @CtrlAltDale).
- Replay responsiveness: Track maps, standings, relative timing, and lap-time displays continue updating during paused and slow-motion replays (by @tariknz).
- Reliable quitting: A stalled save can no longer leave the app running indefinitely after Quit is selected (by @tariknz).
- Input trace visibility: The brake trace remains visible when ABS highlighting is turned off (by @Foribald).
- Speed-unit preferences: The steering dial now respects the configured speed-unit layout (by @Foribald).
- Browser dashboards: Restored session data and the animated live preview on the website (by @CtrlAltDale and @tariknz).
- Development replay: The telemetry replay tool can launch correctly on Windows (by @CtrlAltDale).
- Development reliability: Automated tests are more stable on heavily loaded build machines (by @tariknz).
Changelog
- feat: resize slider in standings widget by @toba-k in #487
- feat: add raw iRacing telemetry record and replay by @tariknz in #635
- feat: show edge midpoint markers in layout edit mode by @Foribald in #637
- feat: add ABS bar style to Input trace + gear display improvements by @Foribald in #638
- feat: add session bar items - fuel, laps, top speed, manufacturer position, class rank by @Foribald in #640
- feat: add compact SoF and per-manufacturer car counts to standings class header by @Foribald in #641
- feat: add native macOS telemetry replay by @tariknz in #642
- feat: add typed rate-aware channel bus by @tariknz in #650
- feat: add fuel projection processor by @tariknz in #651
- feat: migrate fuel renderer to channel snapshots by @tariknz in #652
- feat: add Gantry race control overlay by @23Kev in #654
- feat: move lap times to main-process channel by @tariknz in #659
- feat: move car speeds to main-process channel by @tariknz in #660
- feat: move reference laps to main-process channel by @tariknz in #661
- feat: move relative gaps to main-process channel by @tariknz in #662
- feat: migrate sector timing to channel processor by @tariknz in #663
- feat: move Standings driver state to typed channel by @tariknz in #664
- feat: move live positions to standings channel by @tariknz in #665
- feat: move radio state to channel by @tariknz in #666
- feat: move session bar data to channels by @tariknz in #667
- feat: move driver controls to channels by @tariknz in #668
- feat: move positional status to channels by @tariknz in #669
- feat: move remaining widgets to channels by @tariknz in #670
- feat: estimate iRating changes in practice by @tariknz in #689
- feat: add Delta Speed widget by @CtrlAltDale in #692
- feat: lap graph that survives a full race, and readable standings columns by @23Kev in #701
- feat: standings columns that stay aligned, resizable panes, and a driver list on the lap graph by @23Kev in #702
- fix: allow the telemetry replay runner to start on Windows by @CtrlAltDale in #653
- fix: keep the settings window reachable when displays change by @CtrlAltDale in #655
- fix: stabilize channel lifecycle contracts by @tariknz in #672
- fix: show class headers in AI races by @tariknz in #680
- fix: stabilize Phase 4 performance evidence by @tariknz in #681
- fix: stabilize car number column width by @tariknz in #682
- fix: count all manufacturers in standings by @tariknz in #683
- fix: prevent fuel average label collapse by @tariknz in #684
- fix: smooth blind spot monitor by @tariknz in #685
- fix: hide empty country flag column by @tariknz in #686
- fix: smooth track map marker movement by @tariknz in #688
- fix: tidy settings section spacing by @tariknz in #690
- fix: promote reference laps in CarClassID 0 sessions by @CtrlAltDale in #691
- fix: restore the site live preview after the channel migration by @CtrlAltDale in #693
- fix: initialize browser session bridge by @tariknz in #694
- fix: stabilize tests on loaded CI runners by @tariknz in #695
- fix: keep pit stop timer running across team race driver changes by @CtrlAltDale in #697
- fix: measure Gantry speed over a baseline so crash detection is usable by @23Kev in #699
- fix: keep replay overlays responsive by @tariknz in #700
- fix: prevent shutdown persistence from blocking quit by @tariknz in #704
- perf: parallelize CI validation and avoid duplicate packaging by @tariknz in #633
- perf: poll session data at 2Hz instead of every telemetry tick by @23Kev in #645
- perf: condition legacy telemetry by widget by @tariknz in #656
- perf: share channel snapshot selectors by @tariknz in #676
- perf: add evidence-aware channel benchmarks by @tariknz in #677
- perf: adopt channel snapshot selectors by @tariknz in #678
- chore: bump js-yaml from 5.2.1 to 5.2.2 by @dependabot in #636
- chore: add deterministic telemetry performance benchmarks by @tariknz in #639
- chore: update npm dependencies by @tariknz in #643
- chore: add curated replay state harness by @tariknz in #646
- chore: bump fast-uri from 3.1.4 to 3.1.5 by @dependabot in #647
- chore: bump undici from 6.27.0 to 6.28.0 by @dependabot in #648
- chore: extract deterministic fuel projection engine by @tariknz in #649
- chore: give speed conversion a single home by @CtrlAltDale in #657
- chore: record PR 656 Fuel performance A/B by @tariknz in #658
- chore: isolate Telemetry Inspector stream by @tariknz in #671
- chore: extract standings domain by @tariknz in #673
- chore: record Phase 4 Windows performance profile by @tariknz in #674
- chore: centralize processor runtime orchestration by @tariknz in #675
- chore: add Phase 4.1 performance evidence by @tariknz in #687
- chore: PRs follow repository publishing conventions by @tariknz in #696
- chore: remove orphaned frontend modules by @tariknz in #698
New Contributors
- @Foribald made their first contribution in #637
- @CtrlAltDale made their first contribution in #653
Full Changelog: v0.9.0...v1.0.0





