Commit Graph

276 Commits (500a0373cede8fe2549621c5531cc8d759ef3457)
 

Author SHA1 Message Date
name 895b90c8bb increase score font size from 36px to 48px
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-11 21:31:22 -07:00
name 533aae182a thicken song progress bar from 6px to 14px
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-11 21:30:43 -07:00
name e8bb1afed4 fix pause/resume losing arrow timing and song progress
On resume, shift all existing arrow targetTimes forward by the
pause duration so they don't immediately register as misses.
Track pause timestamp to compute the exact offset.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-11 21:30:11 -07:00
name 412652b1ab add global fullscreen button when not in fullscreen mode
Shows a small button in the bottom-right corner on all screens.
Listens to fullscreenchange events and hides when already fullscreen.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-11 21:26:41 -07:00
name 3c5aee0ec9 fix score jitter, add progress bar, improve pause behavior
Score: move to bottom center above progress bar, remove key-based
remounting that caused layout shifts. Delta now fades in place.

Progress bar: magenta gradient bar at the very bottom showing song
progress via onProgress callback from ArrowGame.

Pause: decouple audio lifecycle from active prop so pausing doesn't
reset the song. Audio pauses/resumes cleanly with timing preserved.

Auto-pause: once game has started, show "I lost track of you" when
calibration pauses instead of the calibration overlay. Suppresses
"ARMS OUT" text during gameplay.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-11 21:24:40 -07:00
name e2042cd4ef fix end-of-game showing default score when finishing early with 0
Consider store results valid when a song is selected, not just when
score > 0. Prevents fallback to DEFAULT_SCORE on early finish.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-11 20:19:24 -07:00
name 812bc72450 stack camera hint below button, keep fullscreen/windowed side by side
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-11 20:18:38 -07:00
name 5fb6cd45c0 remove webcam background from intro page
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-11 20:17:49 -07:00
name 7b4c73f0a0 integrate camera permission into intro page flow
Show 'ENABLE CAMERA' button first with a hint explaining why. After
permission is granted, webcam shows as background and fullscreen/
windowed buttons appear. If denied, show error with retry option.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-11 20:17:20 -07:00
name 9d73756cfc show webcam feed as subtle background on intro page
Embed the camera stream into the page as a low-opacity mirrored
background. This makes the permission prompt feel integrated rather
than a random browser popup. Stream is cleaned up on unmount.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-11 20:15:59 -07:00
name f7d4834bb6 request camera permission on intro page load
Prompt for webcam access early so the permission dialog appears
before the user reaches the game. Stream is immediately stopped
after permission is granted.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-11 20:14:33 -07:00
name 55cde08790 merge main: resolve conflicts, add sound effects to pause menu
Keep our real game engine, score HUD, and viewport-fit layouts.
Incorporate main's sound effects (playSound) and dvh units. Add
sound effects to pause menu buttons.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-11 20:12:38 -07:00
name 4e039ad649 increase gap between carousel and info bar in fullscreen
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-11 20:09:53 -07:00
name bbd2f664a8 fit song select to viewport height, scale down for windowed mode
Use height: 100vh with overflow hidden. Add max-height: 820px media
query to shrink carousel cards, info bar, and header when the
viewport is short (windowed/non-fullscreen).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-11 20:09:26 -07:00
name 8f94e3f022 fit intro page to viewport height with no scrollbar
Use height: 100vh with overflow: hidden, tighten gaps and padding.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-11 20:07:43 -07:00
name 60b5c71031 reduce grayscale on sponsor logos for more color visibility
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-11 20:05:58 -07:00
name 9f55ac143e increase sponsor logo size from 32px to 48px
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-11 20:05:22 -07:00
name e72b350f73 remove border path from UNR logo to fix uneven white edge
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-11 20:01:53 -07:00
name d6e0aeb419 clean up UNR SVG to fix uneven border rendering
Remove fixed width/height attributes, duplicate rect, and class.
Let CSS control dimensions via viewBox only.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-11 20:00:43 -07:00
name b09d3291b7 make sponsor logos clickable with links to their websites
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-11 20:00:07 -07:00
name 32d70fb35c invert Type III logo so it's visible on dark background
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-11 19:57:33 -07:00
name 48066c8dc1 official intro page with hackathon branding and sponsor logos
Add Biggest Little Hackathon 2026 branding, UNR logo, and all five
sponsor logos (Bently Nevada, Microsoft, Ridgeline, Coffee n Comics,
Type III). Logos shown in grayscale with hover-to-color effect.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-11 19:56:25 -07:00
name 99975af037 redirect to intro when navigating directly to game or end-of-game
GamePage redirects if no song is selected. EndOfGamePage redirects
if no song and no score prop. Prevents broken state from direct URL
access or page refresh.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-11 19:51:13 -07:00
name 109bb84110 full screen loading overlay with spinner for pose detection
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-11 19:49:25 -07:00
name 184a24f425 fix arrow spawning and suppress step labels during calibration
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>
2026-04-11 19:47:55 -07:00
Ethan f6f56ab487 button sounds 2026-04-11 19:39:06 -07:00
name d2630b1b64 add score pulse and floating delta on each hit
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>
2026-04-11 19:36:14 -07:00
name 0b134d1dbe show live score with combo-scaled scoring
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>
2026-04-11 19:35:24 -07:00
name 876d344441 style Finish Early button red in pause menu
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-11 19:32:39 -07:00
name 705d667949 add Finish Early to pause menu, lowercase framing message
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>
2026-04-11 19:31:40 -07:00
name bfbd8ffc4d reword framing message to 'I CANNOT SEE YOUR FEET — STEP BACK!'
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-11 19:30:49 -07:00
name f2ee120d7e make calibration text larger and clearer
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>
2026-04-11 19:30:10 -07:00
name 088037e334 add pause menu and restyle calibration text
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>
2026-04-11 19:29:37 -07:00
name 6105ce33ca show only toe dots during gameplay, hide full skeleton
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>
2026-04-11 19:26:28 -07:00
name 73dfea963c hide perfect/good/miss counters during gameplay
Keep only the combo display in the score HUD.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-11 19:24:12 -07:00
name 6ae7edeb56 wire real game engine into GamePage
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>
2026-04-11 19:22:46 -07:00
name e82cc0a016 tune song preview timing: 300ms delay, 1s fade-in
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-11 19:20:03 -07:00
name eb5fdfa5da preview song audio in song select after 2s delay
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>
2026-04-11 19:17:09 -07:00
name 70393f00ac add song background image to info bar, improve dot contrast
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>
2026-04-11 19:15:41 -07:00
name 733e1977c3 pin artist and BPM to bottom of song cards
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>
2026-04-11 19:14:26 -07:00
name 0e5d8e52a0 show song banner image at top of carousel cards
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>
2026-04-11 19:11:43 -07:00
name 96c5867418 import song artwork from Fraxtil's Beast Beats
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>
2026-04-11 19:10:05 -07:00
name f76b628ed4 improve difficulty dot contrast on song cards
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>
2026-04-11 19:04:54 -07:00
name 1eb568c38b wire 20 StepMania songs into song picker with real metadata
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>
2026-04-11 19:02:56 -07:00
name a2695423e6 [auto] import all 20 StepMania songs, add song picker in settings
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-11 18:27:21 -07:00
name 063ec517f6 [auto] increase arrow size to 100px
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-11 18:24:22 -07:00
name f76de51dbe [auto] filter simultaneous notes: keep one per timestamp for body detection
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-11 18:23:44 -07:00
name b522af94da [auto] default to Beginner difficulty
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-11 18:18:16 -07:00
name ab03388afc [auto] raise settings z-index above calibration overlay
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-11 18:14:59 -07:00
name 315e9035e3 [auto] move difficulty selector into settings panel
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-11 18:12:09 -07:00