Skip to content

v0.6.10

Choose a tag to compare

@github-actions github-actions released this 26 May 12:12

RockSniffer_PJ v0.6.10 Release Notes

Hotfix release on top of v0.6.9. No C# changes; addon JavaScript only.

Bug fixed

Mode-1 (results comparison) wiped before user can read it in NSP

The 6 mode-1 addons (current_song_v2/v3/v3.1_LaS/v4, Arcade_v1_LaS/SA) display a post-song results view in mode 1, showing the prevNotes stats, the hasPreviousBest() comparison ("X% better than previous best"), and the cycled feedback strings ("Hit N more notes in section X", etc.). This is set by onSongEnded.

In Nonstop Play, when a song completes Rocksmith returns to nonstopplayhub (state IN_MENUS) and the in-memory songID immediately flips to the next-queued song's ID. This triggered onSongChanged in the same poll as onSongEnded, and the v3/v3.1_LaS/Arcade addons' existing onSongChanged handler flipped mode back to 0 before the comparison view was ever rendered to the user.

v2 and v4 didn't have an onSongChanged handler, so they worked better by accident — but still inconsistently, depending on getCurrentArrangement() timing relative to the songID flip.

Fix: per-addon minimum-hold for mode 1

Each of the 6 mode-1 addons now holds mode 1 for at least feedback.length × CYCLE_MS (where CYCLE_MS = 5000, matching the existing cycleFeedback rotation interval) before any subsequent onSongChanged/onSongStarted callback can flip back to mode 0. Songs with rich feedback (e.g. 5 strings → 25s hold) display longer; "YOU TRIED!"-only fallback songs hold for one cycle (5s).

State transitions to SONG_SELECTED, SONG_STARTING, or SONG_PLAYING override the min-hold immediately — once the user has clearly progressed past the hub/result screen into the next song, the comparison view is no longer useful and flips out without waiting for the timer.

Implementation: new flipToModeZero(force) helper plus modeOneSetAt / pendingModeFlipTimer module-level state in each addon. The existing 60-second hideTimeout in generateFeedback remains as the ultimate upper bound (mode 1 hides + addon goes invisible after 60s if nothing else fires).

v2 and v4 also gain an onSongChanged handler for behavioral consistency with v3/v3.1/Arcade.

Adjacent fix: song-name marquee matches stats in mode 1

The song computed property in all 6 addons now reads from prevData.songDetails when mode === 1, so the song name marquee, album art, and artist all reference the song that just ended — consistent with the prevNotes stats and hasPreviousBest comparison shown below.

Without this, the new extended hold window in NSP would have exposed a cosmetic mismatch: the marquee would show song B (the next-queued song) while the stats panel showed song A's data. In LaS this is a no-op (songID doesn't change until the user picks the next song, so songDetails and prevData.songDetails are already the same).

Files changed

  • addons/current_song_v2/script.js — min-hold helper + onSongChanged added + onStateChanged override + song computed prevData read
  • addons/current_song_v3/script.js — min-hold helper + lifecycle handlers + song computed
  • addons/current_song_v3.1_LaS/script.js — identical to v3 (byte-for-byte)
  • addons/current_song_v4/script.js — min-hold helper + onSongChanged added + lifecycle handlers + song computed
  • addons/Arcade_v1_LaS/script.js — min-hold helper + lifecycle handlers + song computed
  • addons/Arcade_v1_SA/script.js — same
  • RockSniffer/Program.cs — version bump 0.6.9 → 0.6.10

No submodule changes. No C# rebuild needed for the addon work itself; only Program.cs's version constant changed.