{
  "name": "minesweeper",
  "kind": "bundled",
  "title": "Minesweeper",
  "description": "The mine-clearing game in the panel, on its own page: the mouse as in the original (click, right-click, both buttons), or one hand on the keys (the arrows move, Enter opens, / flags, N starts over, D picks the level). The board, the clock and the best times persist.",
  "version": "0.2.0",
  "icon": {
    "tile": {
      "glyph": "󰚑",
      "bg": "slate"
    }
  },
  "author": "pal",
  "spec": "github:zcag/pal/extensions/minesweeper@v0.8.0",
  "source": "https://github.com/zcag/pal/tree/HEAD/extensions/minesweeper",
  "commit": "cf252bba7d9bcadcb5a57a035984f9302b0a9192",
  "manifest": {
    "name": "minesweeper",
    "title": "Minesweeper",
    "description": "The mine-clearing game in the panel, on its own page: the mouse as in the original (click, right-click, both buttons), or one hand on the keys (the arrows move, Enter opens, / flags, N starts over, D picks the level). The board, the clock and the best times persist.",
    "version": "0.2.0",
    "icon": {
      "tile": {
        "glyph": "󰚑",
        "bg": "slate"
      }
    },
    "author": "pal",
    "repo": "bundled",
    "license": "MIT",
    "settings": [
      {
        "kind": "select",
        "id": "difficulty",
        "label": "Difficulty",
        "description": "The board's size and mines, also picked on the board itself (D, or a click on the level). Applies to the next board, at once when nothing is open yet; a game in progress plays out first.",
        "options": [
          {
            "id": "beginner",
            "title": "Beginner: 9 by 9, 10 mines"
          },
          {
            "id": "intermediate",
            "title": "Intermediate: 16 by 16, 40 mines"
          },
          {
            "id": "expert",
            "title": "Expert: 30 by 16, 99 mines"
          }
        ],
        "default": "beginner"
      },
      {
        "kind": "boolean",
        "id": "clock",
        "label": "Clock",
        "text": "Show the time while you play",
        "description": "Off hides the time beside the face. Your times still count for best times and show when you clear a board. Also T or ⌘K in the game.",
        "default": true
      }
    ],
    "store": {
      "tagline": "Minesweeper in the panel: the classic board, by mouse or one hand on the arrows",
      "category": "fun",
      "features": [
        "The classic board redrawn: square raised cells that press flat, the numbers in their classic colours tuned for the light and dark panel, an LED mine counter and clock around the face",
        "Mouse as in the original: click opens, right-click flags, a click (or both buttons, or the middle one) on a satisfied number opens around it; a held button shows the cells it would open pressed",
        "One-handed: the arrows move the cursor, `Enter` opens, `/` (just above the arrows) flags; `hjkl`, `F` and `Space` do the same, `N` starts over, `D` picks the level",
        "The classic rules: the first open is always safe and opens an area, an empty cell floods open, a satisfied number opens around it",
        "An open ripples out from the cell as the caps lift; a mine goes off with a blast and the rest pop out from it; a cleared board plants its flags under confetti",
        "Beginner 9 by 9, intermediate 16 by 16, expert 30 by 16, each with a best time and a won count; the board scales to the panel, compact included",
        "The clock runs from the first open and only while the board is on screen; Escape leaves at any point and the game is there when you come back, across restarts",
        "T hides the clock if it rushes you; your times still count"
      ],
      "permissions": [],
      "platforms": [
        "macos",
        "linux"
      ],
      "screenshots": [
        {
          "file": "1-board.png",
          "caption": "Mid-game on beginner: the mine counter, the face and the clock, the best time and the won count, the keys under the board"
        },
        {
          "file": "2-won.png",
          "caption": "Cleared: the mines left are flagged, the time, a new best"
        },
        {
          "file": "3-lost.png",
          "caption": "A mine went off on intermediate: every mine shows, a wrong flag is crossed out"
        },
        {
          "file": "4-expert.png",
          "caption": "Expert, 30 by 16 with 99 mines, scaled to the panel; Enter on the satisfied 2 opens around it"
        }
      ],
      "actions": [
        {
          "title": "Up, Down, Left, Right",
          "description": "Move the cursor. `k`, `j`, `h`, `l` too.",
          "keys": "up, down, left, right"
        },
        {
          "title": "Open",
          "description": "On a number whose flags are all placed, opens the cells around it. A new game once the game is over.",
          "keys": "enter"
        },
        {
          "title": "Flag",
          "description": "Or unflag. `f` and `space` too.",
          "keys": "/"
        },
        {
          "title": "New game",
          "description": "A fresh board; asks first mid-game. A click on the face starts one at once.",
          "keys": "n"
        },
        {
          "title": "Difficulty",
          "description": "The level picker: left and right choose, Enter takes it (asking first mid-game), D again closes it.",
          "keys": "d"
        },
        {
          "title": "Hide the clock",
          "description": "No running time on screen; again to bring it back. Times still count.",
          "keys": "t"
        }
      ],
      "play": true
    },
    "palettes": {
      "minesweeper": {
        "title": "Minesweeper",
        "kind": "view",
        "description": "The board, the extension's own page. Escape leaves mid-game; the board and the clock wait for you.",
        "keys": [
          {
            "keys": "up",
            "title": "Move (also down, left, right, and hjkl)"
          },
          {
            "keys": "enter",
            "title": "Open; on a satisfied number, open around it; a new game once the game is over"
          },
          {
            "keys": "/",
            "title": "Flag or unflag (also f, space)"
          },
          {
            "keys": "n",
            "title": "New game, asking first mid-game"
          },
          {
            "keys": "d",
            "title": "Pick the level (left, right, Enter)"
          }
        ]
      }
    }
  },
  "playable": true,
  "updated_at": "2026-09-29T23:05:58Z",
  "url": "https://pal.cagdas.io/extensions/minesweeper",
  "tagline": "Minesweeper in the panel: the classic board, by mouse or one hand on the arrows",
  "category": "fun",
  "screenshots": [
    "https://pal.cagdas.io/extensions/minesweeper/screenshots/1-board-dark.png",
    "https://pal.cagdas.io/extensions/minesweeper/screenshots/1-board.png",
    "https://pal.cagdas.io/extensions/minesweeper/screenshots/2-won-dark.png",
    "https://pal.cagdas.io/extensions/minesweeper/screenshots/2-won.png",
    "https://pal.cagdas.io/extensions/minesweeper/screenshots/3-lost-dark.png",
    "https://pal.cagdas.io/extensions/minesweeper/screenshots/3-lost.png",
    "https://pal.cagdas.io/extensions/minesweeper/screenshots/4-expert-dark.png",
    "https://pal.cagdas.io/extensions/minesweeper/screenshots/4-expert.png"
  ],
  "panel_screenshots": [
    "https://pal.cagdas.io/extensions/minesweeper/screenshots/1-board.png",
    "https://pal.cagdas.io/extensions/minesweeper/screenshots/2-won.png",
    "https://pal.cagdas.io/extensions/minesweeper/screenshots/3-lost.png",
    "https://pal.cagdas.io/extensions/minesweeper/screenshots/4-expert.png"
  ],
  "bar_screenshots": [],
  "panel_screenshots_dark": [
    "https://pal.cagdas.io/extensions/minesweeper/screenshots/1-board-dark.png",
    "https://pal.cagdas.io/extensions/minesweeper/screenshots/2-won-dark.png",
    "https://pal.cagdas.io/extensions/minesweeper/screenshots/3-lost-dark.png",
    "https://pal.cagdas.io/extensions/minesweeper/screenshots/4-expert-dark.png"
  ],
  "bar_screenshots_dark": [],
  "has_bar": false,
  "bar_items": [],
  "has_links": false,
  "links": [],
  "multi": false,
  "has_readme": true
}
