highway: persistent "you missed this last time" gem markers - #69
Open
ahonnecke wants to merge 1 commit into
Open
highway: persistent "you missed this last time" gem markers#69ahonnecke wants to merge 1 commit into
ahonnecke wants to merge 1 commit into
Conversation
Today a miss only lights the gem for NOTE_MISS_GEM_TTL (~0.6s) after the
verdict — a sub-second wash a player can't act on mid-performance, and one that
never shows on the note that matters (the one you're about to replay). This
adds cross-play persistence so a missed note lights up as it APPROACHES on the
next play/loop, until you hit it — the readable, retrospective signal.
- _prevPlayMisses {filename, keys}: the notes missed on the last completed play,
kept across the per-play noteResults reset, filename-gated so song A's misses
never show on song B.
- _ndSnapshotPlayMisses(): captured in showSummary() at play end (noteResults
intact, filename still this song), guarded so a false-start doesn't wipe the
prior marks while a clean play correctly clears them.
- noteStateFor() checks it BEFORE the transient logic: an un-hit prev-play miss
returns {state:'miss', alpha:1, color} and STAYS lit the whole way down until
it's hit again this play (self-clears when j.hit flips). Drives both the 2D
and 3D renderers via the note-state provider; not suppressed during drills.
- Miss color is PURPLE (#c04bff), not red — red collides with the E string's
own color (#ff3c3c) and made a missed E unreadable. (Best paired with the
core PR that makes the miss gem honor the provider color; without it the
markers still persist, just in the core default hue.)
The pre-existing real-time transient miss is untouched. make test 353/353.
Version 1.32.0 → 1.32.1.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Contributor
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (3)
📝 WalkthroughWalkthroughThe diagnostic screen now preserves missed notes from the last judged play and marks them in purple during the next play for the same song. Package, plugin manifest, and diagnostic versions are updated to ChangesPersistent missed-note tracking
Estimated code review effort: 3 (Moderate) | ~20 minutes Suggested reviewers: Sequence Diagram(s)sequenceDiagram
participant PlayScoring
participant MissSnapshotStorage
participant MissedNoteRenderer
PlayScoring->>MissSnapshotStorage: snapshot completed-play misses
MissSnapshotStorage->>MissedNoteRenderer: provide same-song missed-note keys
MissedNoteRenderer->>PlayScoring: clear a persistent mark when the note is hit
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
A miss only lights the gem for
NOTE_MISS_GEM_TTL(~0.6s) after the verdict lands — a sub-second wash a player can't act on mid-performance, and one that never appears on the note that actually matters: the one you're about to replay. In practice, misses are effectively invisible.Change
Cross-play persistence, so a missed note lights up as it approaches on the next play/loop, until you hit it — the readable, retrospective signal.
_prevPlayMisses {filename, keys}— the notes missed on the last completed play, kept across the per-playnoteResultsreset, filename-gated so song A's misses never show on song B._ndSnapshotPlayMisses()— captured inshowSummary()at play end (noteResultsintact, filename still this song), guarded so a false-start doesn't wipe the prior marks while a clean play correctly clears them.noteStateFor()checks it before the transient logic: an un-hit prev-play miss returns{state:'miss', alpha:1, color}and stays lit the whole way down until it's hit again this play (self-clears whenj.hitflips). Drives both the 2D and 3D renderers via the note-state provider; not suppressed during drills.#c04bff), not red — red collides with the E string's own color (#ff3c3c) and made a missed E unreadable.The pre-existing real-time transient miss render is untouched.
Notes
color+ more visible. Without it the markers still persist — just drawn in core's default miss hue.make test353/353. Version 1.32.0 → 1.32.1.🤖 Generated with Claude Code
Summary by CodeRabbit