No more moves left
tetKeyHandler now skips when any modal is open, an input is focused, or the start menu is active; currentMode reset to blast on back to menuLeaderboard.show() call passed score=0; submit row was permanently hiddenlockDelay timer firing on newly spawned piece during line-clear animation; cleared in tetAnimClear and tetSpawnflex-shrink:0 and min-height:52px addedtouch-action:manipulation on inputs allows tap-to-focusleaderboard.php — PHP/SQLite backend with rate limiting, CORS, and Cloudflare proxy supportsoftDropLocked flag cleared on keyuptouchend handlers; added alongside clickmusicGain node on stop so pre-scheduled nodes go silent; game track start delayed 120msFX.drawFX() was commented out inside tetDraw(); all particles and screen shake were never drawndjb2(score+salt); direct localStorage edits without a valid signature are detected and rejectedtouch-action: pan-y on modal; global drag listeners skip the modal overlayFX.drawFX() commented out in tetDraw(); all Tetris particles were invisibletet._clearRows stale state — not reset on new game, could cause incorrect flash on first frametetAnimClear ran its own setInterval at 20ms while the FX tick ran at 60fps, causing double renders during line clearsshadowBlur — removed from dust, square, line, clearFlash, and clearColor where it wasn't visually meaningful; ~30% draw time reductiondrawFX() only, never tetDraw(), so cell-space effects like clearFlash were invisible between game logic framesdust, line, ring2, rotating square debristetKeyHandler now skips when any modal is open, an input is focused, or the start menu is active; currentMode reset to blast on back to menuLeaderboard.show() call passed score=0; submit row was permanently hiddenlockDelay timer firing on newly spawned piece during line-clear animation; cleared in tetAnimClear and tetSpawnflex-shrink:0 and min-height:52px addedtouch-action:manipulation on inputs allows tap-to-focusleaderboard.php — PHP/SQLite backend with rate limiting, CORS, and Cloudflare proxy supportsoftDropLocked flag cleared on keyuptouchend handlers; added alongside clickmusicGain node on stop so pre-scheduled nodes go silent; game track start delayed 120msFX.drawFX() was commented out inside tetDraw(); all particles and screen shake were never drawndjb2(score+salt); direct localStorage edits without a valid signature are detected and rejectedtouch-action: pan-y on modal; global drag listeners skip the modal overlayFX.drawFX() commented out in tetDraw(); all Tetris particles were invisibletet._clearRows stale state — not reset on new game, could cause incorrect flash on first frametetAnimClear ran its own setInterval at 20ms while the FX tick ran at 60fps, causing double renders during line clearsshadowBlur — removed from dust, square, line, clearFlash, and clearColor where it wasn't visually meaningful; ~30% draw time reductiondrawFX() only, never tetDraw(), so cell-space effects like clearFlash were invisible between game logic framesdust, line, ring2, rotating square debris