A tiny one-button mini-arcade for filling the void while a long task runs (LLMs, builds, uploads, you name it). Every game is monocolor, pure 1-bit pixel art, single canvas, zero runtime dependencies, and shares the same combo / power-up / high-score / achievement framework.
Pick a game with a single prop: <WaitingArcade game="runner" />
One button: keyboard, pointer, and touch all map to the same primary action
Tints to any colour via the color prop (defaults to currentColor )
prop (defaults to ) SSR-safe; auto-pauses when the tab is hidden
Optional localStorage -backed best score and achievements, namespaced per game
-backed best score and achievements, namespaced per game Same component still ships as <WaitingGame /> for backward compatibility
The games
Game id Mechanic Skins Jellyfish Drift jellyfish Hold to swim up, release to sink. Avoid coral & stalactites. jellyfish , octopus , paperBoat Pixel Runner runner Tap to jump, hold for higher jumps. Hop cacti, dodge birds. dino , ninja , frog Gravity Flip gravity Tap to invert gravity. Arc between floor and ceiling, dodge spikes. cube , triangle , diamond Invaders invaders Auto-fires bullets to the right. Tap to swap lane — be in the alien's lane to shoot it, out of it when it arrives. ship , fighter , saucer Rhythm Tap rhythm Notes scroll into a hit zone. Tap on the beat for short notes, hold for long ones. 3 lives. bar , dot , arrow
All five games share the same set of features: combo multiplier, near-miss bonus (or its game-specific equivalent), milestone flashes, tier ramp, screen shake, parallax background, three power-ups, and a five-achievement set. Death model varies: most games are one-hit, rhythm uses 3 lives.
... continue reading