What's Changed
Features
- feat(claude): agent team, a PO session that works a release (#1520) by @niklam in #1522
- feat(claude): declined review findings go to a fresh judge (#1528) by @niklam in #1529
- feat(press-sounds): optional bleeps for taps and long presses (#269) by @niklam in #1539
- feat(sim-events-iracing): Session Info Gaps shows the cars ahead and behind on track outside a race (#1515) by @niklam in #1554
- feat(claude): file-issue skill, agents propose and Niklas approves (#1547) by @niklam in #1556
- feat(race-engineer): announce the fastest lap of the race and every lap time (#1571) by @niklam in #1581
- feat(audio-assets): add seven Race Engineer driver names (#1579) by @niklam in #1583
Bug Fixes
- fix(scripts): restart Stream Deck in build:with-restart without wmic (#1523) by @niklam in #1524
- fix(scripts): format and stage only the committed paths at pre-commit (#1402) by @niklam in #1533
- fix(sim-events-iracing): a new subsession is a session change (#1509) by @niklam in #1541
- fix(claude-hooks): move Roadmap cards for niklam/iracedeck only (#1527) by @niklam in #1535
- fix(iracing-actions): blink the Starter crank flash right after the press (#1516) by @niklam in #1543
- fix(iracing-actions): Fuel Service Target Amount follows the car's fuel step (#1483) by @niklam in #1538
- fix(scripts): make stop:stream-deck and start:stream-deck fail loudly (#1557) by @niklam in #1578
Refactoring
- refactor(plugin-runtime): split the settings and voice-pack phases into named steps (#1377) by @niklam in #1546
- refactor: remove dead code, an unused barrel, root devDependencies and applied migrations (#1494) by @niklam in #1545
- refactor(sim-events-iracing): pin the event order endsOn relies on (#1499) by @niklam in #1552
- refactor(replay-engine): finish the replay engine extraction (#1502) by @niklam in #1555
- refactor(deck-core): remove the keysender fallback and its native module (#1495) by @niklam in #1549
- refactor(race-engineer-wiring): route the callout catalog's sim reads through a declared SimRuntime (#1378) by @niklam in #1553
- refactor(sim-events-iracing): run the replay recorders as their own controller subscriber (#1468) by @niklam in #1562
- refactor(audio-scenarios): split the scenario engine into modules behind a thin facade (#1514) by @niklam in #1567
- refactor(plugin-runtime): hand the session kind to the Stream Deck extension through the sim seam (#1500) by @niklam in #1566
- refactor(race-engineer-wiring): close the settings and wiring drift the compiler cannot see (#1376) by @niklam in #1568
Documentation
- docs(rules): dev-tooling issues are manually tested by their QA agent (#1532) by @niklam in #1540
- docs(po): drop the fixed test-queue limit (#1569) by @niklam in #1570
- docs(po): keep the per-release test sheet, ordered test-first (#1564) by @niklam in #1565
CI/CD
- ci(release): skip node-gyp's Visual Studio search and mid-build downloads (#1513) by @niklam in #1517
Maintenance
- chore(audio-assets): refuse pause marks in clip text sent to ElevenLabs (#1518) by @niklam in #1521
- chore(claude-hooks): builds in a deck-linked tree need no go; only host restarts ask (#1526) by @niklam in #1531
- chore(claude-hooks): move milestoned cards to Planned and refuse raw board edits (#1574) by @niklam in #1575
Other Changes
- test(scripts): guard the Node pin and the turbo version the inputs test models (#1503) by @niklam in #1537
Full Changelog: v3.7.0...v3.8.0