{
  "_note": "The Table Tools app: a SECOND installed app on the same origin, not a shortcut. Chrome identifies an installed web app by its manifest `id` (falling back to `start_url`), so a distinct id here is a distinct launcher entry with its own icon, name, splash and shortcuts. Spec and the three decisions behind it: docs/proposal/UTILITIES_PROPOSAL.md 9.1. NB the MAIN manifest still declares no `id` on purpose — its identity is its start_url, `/`, and declaring anything else would re-identify an app people already installed.",
  "id": "/utilities",
  "start_url": "/utilities",
  "_scope_note": "`/utilities` rather than `/`, chosen by the owner 2026-08-26. Scoping both apps to the whole origin would leave no stated answer to which of them a link opens. The cost of this choice is the scorepad's play handoff, which navigates to /plays/new — outside the scope, so Chrome keeps it in the app window and adds an origin bar. That is the honest reading of what happened: you have left the tools and gone into Reroll proper.",
  "scope": "/utilities",
  "name": "Reroll Alat Main",
  "short_name": "Alat Main",
  "description": "Alat kecil untuk dipakai saat game sedang berjalan: pemilih pemain pertama, papan skor, dadu, penghitung. Tanpa perlu akun.",
  "display": "standalone",
  "background_color": "#ffffff",
  "theme_color": "#2563eb",
  "_icons_note": "A sibling of the main mark, not a distinct one: the same arrows and meeple, told apart by the board it stands on and the magnifier and pencil beside it. This reverses the plain die that shipped 2026-08-26, which was chosen so the two apps could not be confused — two launcher entries a reader cannot tell apart at 48px is the launcher version of the share-button problem, where somebody who learned the control in one place hunts for it in the next. The differentiating elements are what carries that now, so compare both icons at launcher size before changing either. Every PNG here is generated from tools-icon.svg by scripts/generate-icons.mjs; never hand-edit them.",
  "icons": [
    {
      "src": "/tools-icon.svg",
      "sizes": "any",
      "type": "image/svg+xml",
      "purpose": "any"
    },
    {
      "src": "/tools-icon-192.png",
      "sizes": "192x192",
      "type": "image/png",
      "purpose": "any"
    },
    {
      "src": "/tools-icon-512.png",
      "sizes": "512x512",
      "type": "image/png",
      "purpose": "any"
    },
    {
      "src": "/tools-icon-maskable-512.png",
      "sizes": "512x512",
      "type": "image/png",
      "purpose": "maskable"
    }
  ],
  "_shortcuts_note": "All four are tools, which is why a FIXED set is the right set here and per-user configuration was parked (9.3). Every one of them is public and paints with no session, so a cold start from the launcher has nothing to wait for.",
  "shortcuts": [
    {
      "name": "Pemilih pemain pertama",
      "short_name": "Pemain pertama",
      "url": "/utilities/first-player",
      "icons": [
        {
          "src": "/tools-icon-192.png",
          "sizes": "192x192",
          "type": "image/png"
        }
      ]
    },
    {
      "name": "Papan skor",
      "short_name": "Papan skor",
      "url": "/utilities/scorepad",
      "icons": [
        {
          "src": "/tools-icon-192.png",
          "sizes": "192x192",
          "type": "image/png"
        }
      ]
    },
    {
      "name": "Dadu & kartu",
      "short_name": "Dadu",
      "url": "/utilities/dice",
      "icons": [
        {
          "src": "/tools-icon-192.png",
          "sizes": "192x192",
          "type": "image/png"
        }
      ]
    },
    {
      "name": "Penghitung",
      "short_name": "Penghitung",
      "url": "/utilities/counters",
      "icons": [
        {
          "src": "/tools-icon-192.png",
          "sizes": "192x192",
          "type": "image/png"
        }
      ]
    }
  ]
}
