What's Changed
Features
- feat(iracing-sdk): add empty() to template expressions (#1348) by @niklam in #1355
- feat(iracing-actions): Camera Controls switch keys show the car they switch to (#1352) by @niklam in #1410
- feat(actions): add pit-stop tire temperatures to Session Info (#254) by @niklam in #1415
- feat(race-engineer): narrate the rolling-start formation and call an open gap under caution (#1167) by @niklam in #1420
- feat(pi-components): add a Support iRaceDeck tab to the Settings window (#1303) by @niklam in #1425
- feat(iracing-actions): replay jumps keep, start or stop playback (#1276) by @niklam in #1434
- feat(actions): add a dial to Replay Control with Speed Control and Frame Jog (#1316) by @niklam in #1433
- feat(actions): add Replay Control's Jump to Race Start mode (#1354) by @niklam in #1440
- feat(actions): Replay Control lap and session keys step from the replay record (#1426) by @niklam in #1445
- feat(actions): Replay Control dial Lap, Session, Incident and Track Order modes (#801) by @niklam in #1452
- feat(actions): show what became of a press on the replay keys and dials (#1437) by @niklam in #1446
Improvements
- improve(iracing-actions): record the plugin's own state in a Telemetry Snapshot (#1387) by @niklam in #1400
- improve(audio-service): keep the audio device open while iRacing runs (#1347) by @niklam in #1421
- improve(website): show the support section on the Download page and move it up on the homepage (#1299) by @niklam in #1423
Bug Fixes
- fix: format and lint every .mjs file, with check/fix parity (#1325) by @niklam in #1356
- fix(claude-hooks): read a worktree's issue off the path's last segment (#1358) by @niklam in #1361
- fix(release): stamp Ulanzi manifests with an x.y.z version the marketplace accepts (#1298) by @niklam in #1379
- fix(iracing-actions): take the replay cursor in the legacy replay actions (#1334) by @niklam in #1383
- fix(sim-events-iracing): gap horizon uses whichever limit ends the race first (#1311) by @niklam in #1384
- fix(iracing-sdk): one debounced replay state for every consumer (#1324) by @niklam in #1389
- fix(iracing-sdk): show hours in session.time_remaining past an hour (#1292) by @niklam in #1409
- fix(iracing-actions): Switch by Car Number keeps leading zeros (#1353) by @niklam in #1417
- fix(audio-native): plugin no longer freezes when the Windows default output device changes (#1411) by @niklam in #1416
- fix(audio-native): release the audio stream miniaudio abandons when the default output device changes (#1414) by @niklam in #1418
- fix(race-engineer): keep gap calls and the race status quiet under a full-course caution (#1171) by @niklam in #1422
- fix(actions): send every replay command through one gate (#1430) by @niklam in #1443
Performance
- perf(iracing-actions): resolve Session Info values inside the icon throttle (#1345) by @niklam in #1382
Refactoring
- refactor(plugin-runtime): one shared composition root for the three plugins (#1349) by @niklam in #1357
- refactor(scenario-harness): wire the Race Engineer through the plugins' shared wiring (#1349) by @niklam in #1359
- refactor(plugin-build): one shared Rollup config for the three plugins (#1349) by @niklam in #1360
- refactor(callout-settings): declare every Race Engineer callout opt-in once (#1350) by @niklam in #1362
- refactor(deck-iracing): put iRacing behind a sim-connection seam (#1363) by @niklam in #1368
- refactor(deck-core): extract the app-constants and fetch-utils leaf packages (#1364) by @niklam in #1369
- refactor(settings): move global settings out of deck-core into a settings package (#1365) by @niklam in #1370
- refactor(voice-packs): move the voice-pack stack out of deck-core (#1366) by @niklam in #1371
- refactor(deck-core): move replay store, diagnostics, update checks and settings window out (#1367) by @niklam in #1372
- refactor(iracing-actions): dial family hygiene: shared no-op preview, PI controller partial, no context re-creation (#1329) by @niklam in #1381
Maintenance
- chore(skills): add the second-read review step (#1396) by @niklam in #1397
- chore(scripts): changelog fragments and CodeRabbit summary reviews at the merge gate (#1386) by @niklam in #1399
Full Changelog: v3.5.0...v3.6.0