ArrowGame: use ref for onSongEnd to avoid unstable deps causing the
audio effect to re-run and lose songStartRef. Reset arrows, combo,
and spawn index when the game starts. Log audio play failures instead
of swallowing them.
GestureOverlay: only show 'arms-out' label during calibration, not
step labels which are confusing before the game starts.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Score text pulses (scale 1.3→1) on each point gain. A +delta floater
appears at a random offset near the score and fades upward over 0.8s.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Display current score in top-left during gameplay. Scoring now uses
combo multiplier: base points (1000 perfect, 500 good) scaled by
1 + min(combo, 30) / 10, giving up to 4x at 30+ combo. Miss resets
combo and awards no points.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Pause menu now has Continue, Finish Early (goes to end-of-game with
current score), and Main Menu. Framing text uses sentence case.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Bigger font (44px, weight 900), white with magenta glow. Reword
framing message to 'YOUR WHOLE BODY SHOULD BE VISIBLE ON SCREEN'.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Pause menu with Continue/Main Menu, triggered by Esc key or pause
button in top-right. Game pauses ArrowGame while menu is open.
Restyle calibration status text to sit above the red framing line
using the arcade display font with magenta color and text shadow,
matching the visual style of other screens.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add drawMode option to usePoseLoop. Game page uses 'toes-only' to
show just landmarks 31/32 as bright cyan dots. Debug app keeps the
full skeleton by default.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Replace placeholder GamePage with full webcam + pose detection +
ArrowGame. Loads SSC chart for the selected song, runs pose loop
for step detection, tracks judgments in the store, and navigates
to end-of-game when the song finishes.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
After hovering on a song for 2 seconds, fade in playback from 0:30.
When switching songs, fade out the current preview and start the
delay timer for the new one. Cleans up on unmount.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Layer bg.png behind the color overlay on the song info bar using a
CSS pseudo-element. Also make difficulty dots white/dark like the
song cards for better readability.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Anchor artist text just above the BPM row so layout stays stable
regardless of title length. Long artist names get ellipsis truncation.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Display bn.png as a header across the top of each song card,
full-bleed into the card padding with object-fit cover.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Copy bg.png (1280x720 background), bn.png (512x160 banner), and
cdtitle.png (100x50 logo) for all 20 songs. Add bgUrl and bannerUrl
fields to Song type and data so they're available for UI use.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Use white for filled dots and dark overlay for empty dots instead of
lightened song color, which was hard to distinguish from the card bg.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Unify Song type to include id, chartUrl, audioUrl alongside display
fields. Replace 8 placeholder songs with all 20 real StepMania songs
(artist, BPM, duration from SSC/audio files). Get Lucky is first.
songIndex.ts now re-exports from the canonical song-data source.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>