What's Changed
Features
- feat(actions): Replay Markers dial surface for stepping and setting markers (#1230) by @niklam in #1326
- feat(deck-core): built-in CPU profile capture, a resource self-report and a local debug switch (#1338) by @niklam in #1346
Improvements
- improve(audio-assets): rename the Terse voice pack label to "Default (Short callouts)" (#1289) by @niklam in #1291
Bug Fixes
- fix(iracing-sdk): pad snapshot lap-time seconds to two digits (#1287) by @niklam in #1290
- fix(audio-scenarios): queue incident and damage calls behind a held Voice bus (#1211) by @niklam in #1293
- fix(audio-scenarios): start briefs wait for the track conditions, then speak what is known (#1284) by @niklam in #1295
- fix(sim-events-iracing): stop re-announcing an opponent's pit stop as it leaves its box (#1212) by @niklam in #1296
- fix(sim-events-iracing): gap trend calls read the lap-over-lap gap (#1285) by @niklam in #1294
- fix(audio-scenarios): a bounded per-bus queue replaces the one deferred callout (#1185) by @niklam in #1300
- fix(audio-scenarios): Background Test plays the selected voice's radio frame (#1124) by @niklam in #1302
- fix(deck-adapter-ulanzi): write plugin-side setSettings through to the settings cache (#1236) by @niklam in #1304
- fix(deck-core): cap the feed clients' response bodies (#1101) by @niklam in #1306
- fix(deck-core): skip the implicit window focus under an elevation mismatch (#976) by @niklam in #1305
- fix(race-engineer): opponent flags only for nearby cars in your class, named by car number (#1274) by @niklam in #1308
- fix(iracing-actions): an Audio Controls control that cannot fire warns instead of passing for a working one (#1196) by @niklam in #1310
- fix(sim-events-iracing): release the driver from an empty pit stop (#1180) by @niklam in #1309
- fix(sim-events-iracing): drop the unlimited sentinels from lap.completed (#1220) by @niklam in #1312
- fix(deck-core): stream the voice-pack install and raise the size ceiling to 2 GB (#1102) by @niklam in #1319
- fix(build): move a locked native addon aside so the rebuild still runs (#1258) by @niklam in #1320
- fix(tooling): ignore only node-gyp's build/ roots in lint and format (#1125) by @niklam in #1323
- fix(scripts): run each package's tests through one shared runner (#1021) by @niklam in #1322
- fix(hooks): a trapped shape fires where the shell runs it, never on a mention (#1321) by @niklam in #1328
- fix(iracing-plugin-stream-deck): drop the manifest's Debug key (#1330) by @niklam in #1331
- fix(deck-core): a main-thread watchdog and an audio reroute log line to diagnose plugin freezes (#1330) by @niklam in #1332
- fix(iracing-actions): stop template Chat keys rebuilding the context every tick (#1337) by @niklam in #1340
- fix(audio-assets): speak non-English corner names in their own language (#1336) by @niklam in #1343
Performance
- perf(iracing-sdk): build the template context lazily and resolve live keys inside their throttle (#1339) by @niklam in #1344
Maintenance
- chore(hooks): accept a pure rebase of the CodeRabbit-reviewed head at merge (#1307) by @niklam in #1313
Other Changes
- fix(audio-scenarios): judge the caution lineup change against the car last named (#1286) by @niklam in #1297
- test(audio-scenarios): make the mid-clip gate-toggle tests assert nothing was cut (#990) by @niklam in #1318
- feat(audio-assets): add driver names Matthias, Brandon, Zoltán, Robin, Manfred, Liam, Ade, Chip, Elias, Andris, Yeray, and Jimmy (#1335) by @niklam in #1341
Full Changelog: v3.4.0...v3.5.0