Settings

Theme

Show HN: ZSweep – A keyboard-first Minesweeper inspired by Vim

zsweep.com

4 points by oug-t 13 days ago · 1 comment

Reader

oug-tOP 13 days ago

I 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

Source: https://github.com/oug-t/zsweep

Keyboard Shortcuts

j
Next item
k
Previous item
o / Enter
Open selected item
?
Show this help
Esc
Close modal / clear selection