3 ms·
Show HN: ZSweep – A keyboard-first Minesweeper inspired by Vim
- oug-t 9mo agoI built ZSweep because I wanted a Minesweeper experience that actually respects Vim grammar, not just a remapping of arrow keys to HJKL. Using a mouse for grid navigation kept breaking my flow during short breaks, so I set out to design a game that is 100% keyboard-centric, where movement and actions feel composable in the same way Vim motions do. Technical highlights: Vim grammar engine: A custom state machine handles real Vim-like motions, including numeric prefixes (5j), search (/ + digit to jump to that number), and context-aware word motions (w / b) that skip revealed safe cells and land on unrevealed ones. Svelte 5 & performance: Built with SvelteKit using the new Svelte 5 runes. Input latency was a hard constraint—if movement doesn’t feel as immediate as a terminal editor, the Vim feel completely falls apart. Backend & stats: Powered by Supabase. I recently refactored the global stats dashboard from client-side counting to server-side aggregation (RPC) after hitting the classic 1,000-row select cap, which caused total time-swept stats to drift. Aggregates now reflect the full dataset correctly. Security: Uses Row Level Security (RLS) so users can only modify their own game results, while keeping the global leaderboard public. Why I’m sharing now: The project has crossed 1,000+ started games, and I’m looking for technical contributors to help polish the experience. I’ve opened GitHub issues around sound system customization and performance optimizations for larger boards (e.g. 30×16). Play: https://zsweep.com https://zsweep.com Source: https://github.com/oug-t/zsweep https://github.com/oug-t/zsweep