Next
Drag pieces onto the board · Fill rows & columns to clear them

Game Over

No more moves left

0
0 best
MV
ARCADE
250th Anniversary Edition
v1.1.3-usa
🧩 Blockyard Drag & place pieces to clear lines
🕹️ Block Stacker Falling pieces, clear rows to survive
Best Score
Changelog
v1.1.3-usa 2026-07-04
Fixed
Leaderboard highlight based on name instead of Player ID(you) marker now matched by UID server-side; name changes and shared names no longer cause incorrect highlights. UIDs are never exposed in the public response
Block Stacker keyboard intercepting modal input and start menutetKeyHandler now skips when any modal is open, an input is focused, or the start menu is active; currentMode reset to blast on back to menu
v1.1.2 2026-07-03
Added
Unique Player ID — UUID v4 generated on first launch; visible in Settings with a Copy button
Leaderboard tied to Player ID — one entry per UID per mode; name is display-only, UID is authoritative
Score upsert — only improvements update your entry; lower or equal scores are rejected with your current best shown
Name enforced server-side — submitting without a display name set returns an error
v1.1.1 2026-07-02
Fixed
Game resumable after closing leaderboard from game over — 🏆 button was hiding the game over overlay; it now stays active behind the leaderboard so closing it returns to game over, not the live game. Applies to both modes
v1.1.0 2026-07-02
Fixed
Leaderboard submit never appeared — every Leaderboard.show() call passed score=0; submit row was permanently hidden
Added
Submit Score & Leaderboard button on game over — 🏆 button opens leaderboard pre-loaded with your score and a visible Submit button
v1.0.9 2026-07-02
Fixed
Block Stacker blocks floating above stack — stale lockDelay timer firing on newly spawned piece during line-clear animation; cleared in tetAnimClear and tetSpawn
Play button squished on small screensflex-shrink:0 and min-height:52px added
Feedback form keyboard on mobile — touch guards extended to all modal overlays
Added
Settings modal — player name, SFX & music toggles; from start menu and in-game menu
In-game menu sheet — ☰ opens bottom sheet with Resume, Settings, Leaderboard, Feedback, Back to Menu
v1.0.8 2026-07-02
Fixed
Start menu cut off on small screens — card scrolls internally; tighter layout on screens under 680px tall
Keyboard not appearing on mobile inputstouch-action:manipulation on inputs allows tap-to-focus
Blank name saves silently — Save now requires a name; flashes red if empty
v1.0.7 2026-07-02
Added
Back to menu — ☰ button in header stops the game and returns to the start menu
Leaderboard — top 10 per mode, fetched from server; submit score after a game with server-side signature verification
Player name — set on first launch, used on the leaderboard; 20-character max
Feedback form — category tags, optional email, 1000-char message, delivers to developer email via server
leaderboard.php — PHP/SQLite backend with rate limiting, CORS, and Cloudflare proxy support
v1.0.6 2026-07-02
Fixed
Block Stacker soft drop exploit — holding ↓ after a piece locked kept scoring and clearing lines on the next piece; blocked via softDropLocked flag cleared on keyup
Sound & music buttons unresponsive on mobile — 🔊 and 🎵 missing touchend handlers; added alongside click
Menu music bleeding into game — disconnected musicGain node on stop so pre-scheduled nodes go silent; game track start delayed 120ms
Block Stacker FX not renderingFX.drawFX() was commented out inside tetDraw(); all particles and screen shake were never drawn
Added
Tamper-resistant score storage — best scores signed with djb2(score+salt); direct localStorage edits without a valid signature are detected and rejected
Changelog scrollable on mobiletouch-action: pan-y on modal; global drag listeners skip the modal overlay
v1.0.5 2026-07-01
Added
Version number on start menu — badge under the logo subtitle and in the start menu footer
Changelog popup — in-app modal accessible from start menu and game footer; closes via ✕, Escape, or backdrop click
Fixed
Block Stacker effects not renderingFX.drawFX() commented out in tetDraw(); all Tetris particles were invisible
tet._clearRows stale state — not reset on new game, could cause incorrect flash on first frame
SEO meta tags cleaned up for accuracy
v1.0.4 2026-07-01
Fixed — Block Stacker lag
Competing animation loopstetAnimClear ran its own setInterval at 20ms while the FX tick ran at 60fps, causing double renders during line clears
Excessive shadowBlur — removed from dust, square, line, clearFlash, and clearColor where it wasn't visually meaningful; ~30% draw time reduction
Line-clear particle count — cut by ~60% while keeping the effect intact
v1.0.3 2026-07-01
Fixed
Block Stacker animations not rendering — FX tick called drawFX() only, never tetDraw(), so cell-space effects like clearFlash were invisible between game logic frames
v1.0.2 2026-07-01
Changed — Blockyard animations
Punchier placement — spring overshoot, impact flash, dual shockwave rings, star-burst rays, dust cloud, side dust, more sparks, screen shake scaling with piece size
Bigger line clear explosion — white blaze + colored afterglow, two blast rings, per-cell debris/sparks/dust, stronger screen shake
New particle types: dust, line, ring2, rotating square debris
v1.0.1 2026-07-01
Added
Particle & animation engine — unified FX system with pooled particles, cell-space animations, and screen shake
Blockyard — placement pop, shockwave ring, sparks; line-clear burst
Block Stacker — lock impact with screen shake, hard drop streak, line clear sweep
v1.0.0 2026-07-01
Initial Release
Block Blast mode — drag & drop pieces onto 8×8 grid, clear rows and columns
Block Stacker mode — all 7 tetrominoes, wall kicks, ghost piece, soft/hard drop, levels
Start menu with animated background, mode selector, best score, how-to-play
Synthesized audio — SFX engine and two background music tracks, no audio files
PWA — service worker, manifest, installable, full offline support
SEO & social — Open Graph, Twitter Card, meta description, favicon
Fully responsive, touch-friendly, keyboard controls for Block Stacker
Game Menu
Changelog
v1.1.3-usa 2026-07-04
Fixed
Leaderboard highlight based on name instead of Player ID(you) marker now matched by UID server-side; name changes and shared names no longer cause incorrect highlights. UIDs are never exposed in the public response
Block Stacker keyboard intercepting modal input and start menutetKeyHandler now skips when any modal is open, an input is focused, or the start menu is active; currentMode reset to blast on back to menu
v1.1.2 2026-07-03
Added
Unique Player ID — UUID v4 generated on first launch; visible in Settings with a Copy button
Leaderboard tied to Player ID — one entry per UID per mode; name is display-only, UID is authoritative
Score upsert — only improvements update your entry; lower or equal scores are rejected with your current best shown
Name enforced server-side — submitting without a display name set returns an error
v1.1.1 2026-07-02
Fixed
Game resumable after closing leaderboard from game over — 🏆 button was hiding the game over overlay; it now stays active behind the leaderboard so closing it returns to game over, not the live game. Applies to both modes
v1.1.0 2026-07-02
Fixed
Leaderboard submit never appeared — every Leaderboard.show() call passed score=0; submit row was permanently hidden
Added
Submit Score & Leaderboard button on game over — 🏆 button opens leaderboard pre-loaded with your score and a visible Submit button
v1.0.9 2026-07-02
Fixed
Block Stacker blocks floating above stack — stale lockDelay timer firing on newly spawned piece during line-clear animation; cleared in tetAnimClear and tetSpawn
Play button squished on small screensflex-shrink:0 and min-height:52px added
Feedback form keyboard on mobile — touch guards extended to all modal overlays
Added
Settings modal — player name, SFX & music toggles; from start menu and in-game menu
In-game menu sheet — ☰ opens bottom sheet with Resume, Settings, Leaderboard, Feedback, Back to Menu
v1.0.8 2026-07-02
Fixed
Start menu cut off on small screens — card scrolls internally; tighter layout on screens under 680px tall
Keyboard not appearing on mobile inputstouch-action:manipulation on inputs allows tap-to-focus
Blank name saves silently — Save now requires a name; flashes red if empty
v1.0.7 2026-07-02
Added
Back to menu — ☰ button in header stops the game and returns to the start menu
Leaderboard — top 10 per mode, fetched from server; submit score after a game with server-side signature verification
Player name — set on first launch, used on the leaderboard; 20-character max
Feedback form — category tags, optional email, 1000-char message, delivers to developer email via server
leaderboard.php — PHP/SQLite backend with rate limiting, CORS, and Cloudflare proxy support
v1.0.6 2026-07-02
Fixed
Block Stacker soft drop exploit — holding ↓ after a piece locked kept scoring and clearing lines on the next piece; blocked via softDropLocked flag cleared on keyup
Sound & music buttons unresponsive on mobile — 🔊 and 🎵 missing touchend handlers; added alongside click
Menu music bleeding into game — disconnected musicGain node on stop so pre-scheduled nodes go silent; game track start delayed 120ms
Block Stacker FX not renderingFX.drawFX() was commented out inside tetDraw(); all particles and screen shake were never drawn
Added
Tamper-resistant score storage — best scores signed with djb2(score+salt); direct localStorage edits without a valid signature are detected and rejected
Changelog scrollable on mobiletouch-action: pan-y on modal; global drag listeners skip the modal overlay
v1.0.5 2026-07-01
Added
Version number on start menu — badge under the logo subtitle and in the start menu footer
Changelog popup — in-app modal accessible from start menu and game footer; closes via ✕, Escape, or backdrop click
Fixed
Block Stacker effects not renderingFX.drawFX() commented out in tetDraw(); all Tetris particles were invisible
tet._clearRows stale state — not reset on new game, could cause incorrect flash on first frame
SEO meta tags cleaned up for accuracy
v1.0.4 2026-07-01
Fixed — Block Stacker lag
Competing animation loopstetAnimClear ran its own setInterval at 20ms while the FX tick ran at 60fps, causing double renders during line clears
Excessive shadowBlur — removed from dust, square, line, clearFlash, and clearColor where it wasn't visually meaningful; ~30% draw time reduction
Line-clear particle count — cut by ~60% while keeping the effect intact
v1.0.3 2026-07-01
Fixed
Block Stacker animations not rendering — FX tick called drawFX() only, never tetDraw(), so cell-space effects like clearFlash were invisible between game logic frames
v1.0.2 2026-07-01
Changed — Blockyard animations
Punchier placement — spring overshoot, impact flash, dual shockwave rings, star-burst rays, dust cloud, side dust, more sparks, screen shake scaling with piece size
Bigger line clear explosion — white blaze + colored afterglow, two blast rings, per-cell debris/sparks/dust, stronger screen shake
New particle types: dust, line, ring2, rotating square debris
v1.0.1 2026-07-01
Added
Particle & animation engine — unified FX system with pooled particles, cell-space animations, and screen shake
Blockyard — placement pop, shockwave ring, sparks; line-clear burst
Block Stacker — lock impact with screen shake, hard drop streak, line clear sweep
v1.0.0 2026-07-01
Initial Release
Block Blast mode — drag & drop pieces onto 8×8 grid, clear rows and columns
Block Stacker mode — all 7 tetrominoes, wall kicks, ghost piece, soft/hard drop, levels
Start menu with animated background, mode selector, best score, how-to-play
Synthesized audio — SFX engine and two background music tracks, no audio files
PWA — service worker, manifest, installable, full offline support
SEO & social — Open Graph, Twitter Card, meta description, favicon
Fully responsive, touch-friendly, keyboard controls for Block Stacker