What's Changed
Features
- feat(track-data): corner marker data layer for corner-name callouts (#888) by @niklam in #889
- feat(race-engineer): corner-name callouts in Practice and Test sessions (#888) by @niklam in #890
- feat(pit-crew): add Corner Names toggle mode (#897) by @niklam in #906
- feat(audio-assets): add Race Engineer driver names Dustin, Peter, Robbie, Carter, and Alex (#913) by @niklam in #917
- feat(titles): resolve template variables in key titles across all actions (#899) by @niklam in #916
- feat(race-engineer): timed-race fuel coverage with an enough-fuel confirmation callout (#880) by @niklam in #924
Improvements
- improve(race-admin): penalty-aware default title for Black Flag keys (#792) by @niklam in #874
- improve(camera-controls): dial clockwise selects the car ahead by default, with a reverse-rotation option (#884) by @niklam in #893
- improve(elevation): log elevation-check outcome at the default log level (#902) by @niklam in #910
- improve(version-check): open the What's New page only for feature updates by default (#901) by @niklam in #914
Bug Fixes
- fix(template): treat blank driver string fields as empty strings in expressions (#869) by @niklam in #873
- fix(version-check): never open the changelog page while iRacing is running (#870) by @niklam in #875
- fix(pit-crew): spotter proximity calls always win the voice bus via a new PROXIMITY weight band (#867) by @niklam in #881
- fix(pit-crew): suppress laps-of-fuel-left callouts when the fuel covers the rest of the race (#866) by @niklam in #883
- fix(race-engineer): suppress intro briefs on mid-session fresh connect (#871) by @niklam in #894
- fix(global-settings): guard writes against stale-cache clobbers that lost key bindings (#896) by @niklam in #898
- fix(camera-controls): car cycling skips cars that left the world (#885) by @niklam in #907
- fix(logging): prune old Mirabox/Ulanzi plugin log files and exclude log dirs from packed plugins (#904) by @niklam in #909
- fix(sim-events-iracing): log the replay-only fresh-connect skip once per replay episode (#908) by @niklam in #911
- fix(pi): consolidate PI polling timers into a shared poller with page-lifecycle cleanup (#903) by @niklam in #918
- fix(ulanzi): persist global settings across restarts via plugin-scoped frames and a boot-time read bootstrap (#868) by @niklam in #895
Maintenance
- chore(build): ship project LICENSE and aggregated third-party notices in all plugin artifacts (#905) by @niklam in #915
Other Changes
- improve(session-info): show iRating estimate in qualifying and race pre-green,
--when unavailable (#872) by @niklam in #882
Full Changelog: v2.2.0...v2.3.0