Skip to content

v0.6.0 — Minesweeper joins the arcade

Choose a tag to compare

@Juliusolsson05 Juliusolsson05 released this 01 Aug 18:56
· 21 commits to main since this release

Adds Minesweeper — the Windows 95 game, reproduced — and fixes a latent sizing bug that affected all three games.

Minesweeper

The look is entirely bevels, drawn as real borders rather than box-shadows: a border participates in layout, which keeps every tile on exact pixel boundaries and stops the field seams shimmering. Raised = white top-left + grey bottom-right; sunken = swapped. Number colours are the exact Win95 values (1 blue, 2 green, 3 red, 4 navy, 5 maroon, 6 teal, 7 black, 8 grey).

Art is SVG rather than bitmaps — seven-segment LED counters, the four-state face (🙂 😮 😎 😵), and mine + flag glyphs. The mine's specular highlight is a square, a quirk of the original bitmap that reads as wrong the moment it's smoothed into a circle.

Three rules clones usually miss, all implemented:

  • First-click safety excludes the clicked cell and its eight neighbours, so the opening click always cascades. A deliberate deviation from Win95, which only spared the clicked cell and often left you guessing on move one.
  • Chording — both mouse buttons on a satisfied number opens all its neighbours.
  • Flood fill reveals numbered cells but does not expand through them. That boundary rule is what stops a single click clearing the entire board.

Beginner 9×9/10, Intermediate 16×16/40, Expert 30×16/99. Best times persist per level.

Sizing fix

.mg-root was a fixed 520px while the game stages are 860px, so a game overflowed its own root and the host — which measures #root.scrollWidth — sized the modal to 520px with the rest of the stage hanging outside it, clipped. Game screens now use max-content, and the max-width: 92vw is gone (vw resolves against the iframe viewport that the host sizes from our measurement, making our width depend on our own width).

Compatibility

apiVersion 1, Tier-0 only — no permissions requested, so updating triggers no consent dialog.