Hall of Claws: local leaderboard + personal-best burst - #12
Merged
Conversation
- store.ts: RunRecord API (getRuns/addRun/topRuns/clearRuns), 100-run cap - input.ts: 'hall' key (L) - audio.ts: 'personalBest' arpeggio SFX - game.ts: hall menu screen (top-10 with medals, score bars, two-tap clear), run recorded on victory, "Hall of Claws #N of M" line on the victory panel, one-time NEW PERSONAL BEST burst when the run overtakes the run-start best (baseline captured at run start so the victory frame's bonus-driven overtake still fires) - tests/leaderboard.test.ts: 17 tests (store, menu, PB burst incl. victory-frame regression, two-tap clear)
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.
Closes out the enhancement program (feature 10 of 10).
Hall of Claws — a local leaderboard screen (menu button or press L):
Personal-best burst — when your score overtakes the best from the start of the run, a one-time "NEW PERSONAL BEST!" celebration fires: floating text, status toast, confetti burst, and a rising arpeggio. The baseline is captured at run start so an overtake that only happens via the end-of-run time/heart bonuses still triggers it on the victory frame.
Validation (local gate — CI has pre-existing unrelated failures):
npm run typecheck✓npm test— 256/256 (17 new leaderboard tests, incl. a victory-frame PB regression)npm run build— 147.68 kB / 45.46 kB gzipnpm run lint✓