What's Changed
Features
- feat(events): add event-bus package (#397) by @niklam in #403
- feat(events): add sim-events-iracing translator and migrate pit-engineer handlers (#398) by @niklam in #404
- feat(audio-scenarios): add scenarios package and port pit-engineer scenarios (#400) by @niklam in #407
- feat(pit-crew): add Pit Crew action with Radar mode (#375) by @niklam in #430
- feat(audio): voice/ as primary asset source + first Race Engineer scenarios (#441) by @niklam in #443
- feat(audio-assets): scope generation via --group/--voice flags (#442) by @niklam in #444
- feat(audio-assets): resolve request_id chains by clip reference (#445) by @niklam in #446
- feat(scenario-harness): dev tool to play Race Engineer scenarios without iRacing (#448) by @niklam in #449
- feat(audio-scenarios): add compound switching + complete tire combination coverage (#450) by @niklam in #452
- feat(pit-crew): expand driver-name list + default to "Driver" (#453) by @niklam in #454
- feat(audio-scenarios): voice scenarios for flag events (#451) by @niklam in #455
- feat(pit-crew): add Background Volume control (#471) by @niklam in #472
- feat(audio-scenarios): per-callout opt-in/out controls (#467) by @niklam in #475
- feat(audio-scenarios): pit-entry / pit-exit service readback (#476) by @niklam in #478
- feat(pit-crew): "On startup" PI defaults for Race Engineer and Radar (#482) by @niklam in #483
- feat(audio-scenarios): windshield tearoff and fast-repair toggle confirmations (#468) by @niklam in #485
- feat(audio-engineer): pit-readback timing fix + voice production polish by @niklam in #488
- feat(actions): cycle Next/Prev Car via configurable keystroke (#492) by @niklam in #494
- feat(actions/race-admin): add "Type in Chat" driver-target mode (#491) by @niklam in #495
- feat(deck-core): global setting for flag-flash duration (#490) by @niklam in #496
- feat: damage callout and context-aware fast-repair readback (#489) by @niklam in #497
Improvements
- improve(pit-crew): replace raw HTML inputs with ird-* components (#417) by @niklam in #422
- improve(pit-crew): radar volume min 0 default 100 (#418) by @niklam in #423
- improve(audio-assets): tune voice generation for less monotone output (#469) by @niklam in #477
Bug Fixes
- fix(deck-core): update global-settings cache synchronously on local writes (#419) by @niklam in #424
- fix(pi-components): ird-range-input treats 0 as a valid value (not empty) (#426) by @niklam in #428
- fix(plugins): refresh audio device list on every PI open (#431) by @niklam in #432
- fix(release): forward pnpm args correctly + skip hook on dry-run by @niklam in #434
- fix(build): clear Win32 MAX_PATH on installed plugin by @niklam in #437
- fix(release): discover packages dynamically (#435) by @niklam in #438
- fix(audio-native): switch native addons to /Z7 to avoid LNK1318 in CI (#456) by @niklam in #458
- fix(pit-crew): silence Voice + Background buses on Race Engineer disable (#457) by @niklam in #459
- fix(pit-crew): default Race Engineer and Radar to off (#378) by @niklam in #462
- fix(audio-scenarios): readback replay reads fresh snapshot at fire time (#481) by @niklam in #486
- fix(sim-events-iracing): clear-tires no longer mis-fires compound callout (#484) by @niklam in #487
Refactoring
- refactor(audio): extract audio-native from iracing-native (#376) by @niklam in #391
- refactor(audio): extract audio-service package (#396) by @niklam in #402
- refactor(audio-assets): reorganize into pit-engineer/ namespace (#399) by @niklam in #406
- refactor(pit-engineer): shrink action to thin shell over audio-scenarios (#401) by @niklam in #409
- refactor(deck-core): remove engine-startup animation (#380) by @niklam in #411
- refactor(pit-crew): multi-mode restructure; rename Pit Engineer → Pit Crew; Spotter → Radar (#413) by @niklam in #414
- refactor(audio): persist Output Device by stable ma_device_id, not enumeration index (#427) by @niklam in #429
Maintenance
- chore(audio): add audio architecture design doc (#376) by @niklam in #390
- chore(pit-engineer): scope initial GA to spotter-only; hide non-spotter features (#410) by @niklam in #412
- chore(pit-crew): hide Race Engineer mode until voice scenarios return (#415) by @niklam in #420
- chore(pit-crew): remove redundant mode-selector paragraph (#416) by @niklam in #421
- chore(release): revert accidental v1.15.0 by @niklam in #433
- chore(audio-scenarios): delete dead Legacy* / PENDING_TOGGLE_SCENARIOS block (#460) by @niklam in #461
Other Changes
Full Changelog: v1.14.0...v1.15.1