{
  "name": "2048",
  "kind": "registry",
  "title": "2048",
  "description": "The sliding-tile game in the panel, played from the keyboard. The board and your best score are kept across restarts, and on every machine you sign in on.",
  "version": "0.1.0",
  "icon": {
    "tile": {
      "svg": "M2 2h5.5v5.5H2zM8.5 2H14v5.5H8.5zM2 8.5h5.5V14H2zM8.5 8.5H14V14H8.5z",
      "bg": "amber"
    }
  },
  "author": "pal",
  "spec": "github:zcag/pal/extensions/2048@v0.17.4",
  "source": "https://github.com/zcag/pal-games/tree/HEAD/2048",
  "commit": "16c5a9dde3d14b8761ba1bb6e500b65c262aeda6",
  "manifest": {
    "name": "2048",
    "title": "2048",
    "description": "The sliding-tile game in the panel, played from the keyboard. The board and your best score are kept across restarts, and on every machine you sign in on.",
    "version": "0.1.0",
    "icon": {
      "tile": {
        "svg": "M2 2h5.5v5.5H2zM8.5 2H14v5.5H8.5zM2 8.5h5.5V14H2zM8.5 8.5H14V14H8.5z",
        "bg": "amber"
      }
    },
    "author": "pal",
    "repo": "bundled",
    "license": "MIT",
    "settings": [
      {
        "kind": "boolean",
        "id": "undo",
        "label": "Undo",
        "text": "U takes the last move back",
        "description": "One move only; taking a win back restores the banner. Off, the key does nothing and the move is not listed.",
        "default": true
      }
    ],
    "sync": {
      "game": "latest",
      "best": "max",
      "top": "max",
      "games": "sum"
    },
    "leaderboards": [
      {
        "id": "score",
        "title": "Best score",
        "order": "desc",
        "format": "points",
        "min": 0,
        "max": 4000000
      },
      {
        "id": "tile",
        "title": "Highest tile",
        "order": "desc",
        "format": "points",
        "min": 2,
        "max": 131072
      }
    ],
    "store": {
      "tagline": "2048 in the panel, keyboard only; the board persists",
      "category": "fun",
      "features": [
        "Arrows or `hjkl` slide the tiles; the score leads above the board, the best and the move count beside it",
        "The classic rules: equal tiles merge once per move, a new 2 or 4 lands after every move",
        "Tiles slide, merge and pop in, coloured by value",
        "`U` takes a move back (a setting); `N` starts over, asking first mid-game",
        "Keep going past 2048, or start a new game",
        "Leave with `escape` any time; the board, score and best score are there when you come back",
        "Signed in to a pal account, the board and your best follow you to every machine; each finished game's score and highest tile go on the leaderboards"
      ],
      "permissions": [],
      "platforms": [
        "macos",
        "linux"
      ],
      "screenshots": [
        {
          "file": "1-board.png",
          "caption": "Mid-game: the score leads, the best and the move count beside it, the keys under the board",
          "cover": [
            438,
            252,
            560,
            275
          ]
        },
        {
          "file": "2-won.png",
          "caption": "The first 2048: keep going or start over"
        },
        {
          "file": "3-over.png",
          "caption": "Game over: no move left, the score, Enter for a new game"
        }
      ],
      "actions": [
        {
          "title": "Up, Down, Left, Right",
          "description": "Slide every tile that way; equal neighbours merge. `k`, `j`, `h`, `l` too.",
          "keys": "up, down, left, right"
        },
        {
          "title": "Undo the last move",
          "description": "One move back, when the `undo` setting is on.",
          "keys": "u"
        },
        {
          "title": "New game",
          "description": "A fresh board; asks first mid-game, where Enter is this too. The best score is kept.",
          "keys": "n"
        },
        {
          "title": "Keep going",
          "description": "After the first 2048, play on for a higher tile.",
          "keys": "enter"
        },
        {
          "title": "Sign in",
          "description": "At game over while signed out: opens Settings › Account, so your scores are kept with your account.",
          "keys": "s"
        }
      ]
    },
    "palettes": {
      "2048": {
        "title": "2048",
        "kind": "view",
        "description": "The board. Escape leaves mid-game; it is there when you come back.",
        "keys": [
          {
            "keys": "up",
            "title": "Move (also down, left, right, and hjkl)"
          },
          {
            "keys": "u",
            "title": "Undo the last move"
          },
          {
            "keys": "n",
            "title": "New game"
          },
          {
            "keys": "enter",
            "title": "New game (asks mid-game); Keep going after the first 2048"
          }
        ]
      }
    }
  },
  "playable": false,
  "updated_at": "2026-11-02T04:38:11Z",
  "url": "https://pal.cagdas.io/extensions/2048",
  "tagline": "2048 in the panel, keyboard only; the board persists",
  "category": "fun",
  "screenshots": [
    "https://pal.cagdas.io/extensions/2048/screenshots/1-board-dark.png",
    "https://pal.cagdas.io/extensions/2048/screenshots/1-board.png",
    "https://pal.cagdas.io/extensions/2048/screenshots/2-won-dark.png",
    "https://pal.cagdas.io/extensions/2048/screenshots/2-won.png",
    "https://pal.cagdas.io/extensions/2048/screenshots/3-over-dark.png",
    "https://pal.cagdas.io/extensions/2048/screenshots/3-over.png"
  ],
  "panel_screenshots": [
    "https://pal.cagdas.io/extensions/2048/screenshots/1-board.png",
    "https://pal.cagdas.io/extensions/2048/screenshots/2-won.png",
    "https://pal.cagdas.io/extensions/2048/screenshots/3-over.png"
  ],
  "bar_screenshots": [],
  "panel_screenshots_dark": [
    "https://pal.cagdas.io/extensions/2048/screenshots/1-board-dark.png",
    "https://pal.cagdas.io/extensions/2048/screenshots/2-won-dark.png",
    "https://pal.cagdas.io/extensions/2048/screenshots/3-over-dark.png"
  ],
  "bar_screenshots_dark": [],
  "has_bar": false,
  "bar_items": [],
  "has_links": false,
  "links": [],
  "multi": false,
  "has_readme": true
}
