Found in review of #657.
P3. On every song:ready, both the tuner auto-open path (_coveredByPlayerInstrument) and the new badge cue (coverageReport) call _playerTuning(), each fetching /api/settings. Avoidable churn, and the two reads can disagree if settings change between them.
Fix: memoize _playerTuning() with a short-lived / in-flight-promise cache invalidated on instrument:changed, or compute one coverage report per song-ready and share it.
Found in review of #657.
P3. On every
song:ready, both the tuner auto-open path (_coveredByPlayerInstrument) and the new badge cue (coverageReport) call_playerTuning(), each fetching/api/settings. Avoidable churn, and the two reads can disagree if settings change between them.Fix: memoize
_playerTuning()with a short-lived / in-flight-promise cache invalidated oninstrument:changed, or compute one coverage report per song-ready and share it.