{
  "catalog": "1.0",
  "categories": [
    "Games",
    "Learning",
    "Productivity",
    "Creativity",
    "Media",
    "Social",
    "Utilities",
    "Developer",
    "Health"
  ],
  "apps": [
    {
      "slug": "2048",
      "appId": "2048",
      "name": "2048",
      "shortName": "2048",
      "version": "1.2",
      "tagline": "Race a friend to 2048 — and come back to the board you left.",
      "author": {
        "name": "Gabriele Cirulli",
        "url": "https://github.com/gabrielecirulli/2048"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "2048",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-23",
      "updated": "2026-08-23",
      "categories": [
        "Games"
      ],
      "tags": [
        "2048",
        "puzzle",
        "arcade",
        "multiplayer",
        "history"
      ],
      "accent": [
        237,
        194,
        46
      ],
      "cover": "/apps/2048/cover.jpg",
      "bytes": 320331,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-26"
      },
      "sha256": "4942aa92b36a6ded5a0393836389f51dd8fe365788f175c3c896a3198541b501"
    },
    {
      "slug": "a-dark-room",
      "appId": "a-dark-room",
      "name": "A Dark Room",
      "shortName": "Dark Room",
      "version": "1.4.0",
      "tagline": "The fire lives in the file. Close the tab — still stoking. Invite someone to the same fire.",
      "author": {
        "name": "Michael Townsend / doublespeak games",
        "url": "https://github.com/doublespeakgames/adarkroom"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "A Dark Room",
        "blessed": false
      },
      "minBuild": 1206,
      "offline": true,
      "releaseDate": "2026-08-30",
      "updated": "2026-08-31",
      "categories": [
        "Games"
      ],
      "tags": [
        "incremental",
        "text",
        "survival",
        "adventure",
        "offline",
        "multiplayer"
      ],
      "accent": [
        232,
        168,
        72
      ],
      "cover": "/apps/a-dark-room/cover.jpg",
      "bytes": 5307861,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-31"
      },
      "sha256": "7c6c76eeae276fb3b7ca9fbebf5d5ff9fd7d7ceeb8823c80107d0739f9aafbc2"
    },
    {
      "slug": "aim-and-shoot",
      "appId": "aim-and-shoot",
      "name": "Aim and Shoot",
      "shortName": "Aim",
      "version": "1.2.1",
      "tagline": "You aim. The robots learn. One arena, with your friends.",
      "author": {
        "name": "Victor Ribeiro",
        "url": "https://github.com/victorqribeiro/aimAndShoot"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "Aim and Shoot",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-24",
      "updated": "2026-08-24",
      "categories": [
        "Games"
      ],
      "tags": [
        "arcade",
        "shooter",
        "ai",
        "offline"
      ],
      "accent": [
        40,
        40,
        40
      ],
      "cover": "/apps/aim-and-shoot/cover.jpg",
      "bytes": 259794,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-30"
      },
      "sha256": "35ce5f5def9d0b7499895bfbb2940c99d949eb945dd93c36a456cefa888a2c42"
    },
    {
      "slug": "air-hockey",
      "appId": "air-hockey",
      "name": "Air Hockey",
      "shortName": "Air Hockey",
      "version": "1.0.0",
      "tagline": "Two paddles on the ice. Drag yours. A friend takes the other end.",
      "author": {
        "name": "MortimerGoro",
        "url": "https://github.com/MortimerGoro/AirHockeyWebGL"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "AirHockeyWebGL",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-23",
      "updated": "2026-08-23",
      "categories": [
        "Games"
      ],
      "tags": [
        "air-hockey",
        "hockey",
        "arcade",
        "multiplayer",
        "table"
      ],
      "accent": [
        32,
        168,
        196
      ],
      "cover": "/apps/air-hockey/cover.jpg",
      "bytes": 1469369,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-24"
      },
      "sha256": "6dcee6462ebd4c2c3910f46b3e86f18432b2eb16bbd218a7b356a1483f460791"
    },
    {
      "slug": "algorithm-visualizer",
      "appId": "algorithm-visualizer",
      "name": "Algorithm Visualizer",
      "shortName": "Algos",
      "version": "1.0.0",
      "tagline": "Watch the swaps on a plane — close it, the last algorithm is still there.",
      "author": {
        "name": "Jinseo Jason Park",
        "url": "https://github.com/algorithm-visualizer/algorithm-visualizer"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "Algorithm Visualizer",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-30",
      "updated": "2026-08-30",
      "categories": [
        "Learning",
        "Developer"
      ],
      "tags": [
        "algorithms",
        "visualization",
        "sorting",
        "graphs",
        "offline",
        "multiplayer"
      ],
      "accent": [
        61,
        139,
        253
      ],
      "cover": "/apps/algorithm-visualizer/cover.jpg",
      "bytes": 212060,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-31"
      },
      "sha256": "03343050530a2558e310eb70820f05d94787d925693313e06cb4fede40622f99"
    },
    {
      "slug": "alphatab",
      "appId": "alphatab",
      "name": "alphaTab",
      "shortName": "alphaTab",
      "version": "1.0.0",
      "tagline": "The tab lives in the GIF. Invite, and a friend follows the playhead.",
      "author": {
        "name": "Daniel Kuschny",
        "url": "https://github.com/CoderLine/alphaTab"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "alphaTab",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-30",
      "updated": "2026-08-30",
      "categories": [
        "Creativity",
        "Media"
      ],
      "tags": [
        "guitar",
        "tablature",
        "tab",
        "notation",
        "player",
        "offline",
        "multiplayer"
      ],
      "accent": [
        196,
        140,
        48
      ],
      "cover": "/apps/alphatab/cover.jpg",
      "bytes": 1367056,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-31"
      },
      "sha256": "3ea9774accf0faa121e23be4ea13aa709713e24ba672176ff2621ddfa52cc39e"
    },
    {
      "slug": "anyroad",
      "appId": "anyroad",
      "name": "Anyroad",
      "shortName": "Anyroad",
      "version": "1.0.0",
      "tagline": "Drive any road on Earth, built from live map data.",
      "author": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "inspiredBy": {
        "name": "Hop.Earth",
        "by": "Pawel Misiurski / DVLP"
      },
      "minBuild": 1089,
      "offline": false,
      "releaseDate": "2026-08-06",
      "updated": "2026-08-07",
      "categories": [
        "Games"
      ],
      "tags": [
        "driving",
        "map",
        "openstreetmap",
        "3d",
        "multiplayer",
        "racing",
        "wildlife",
        "traffic"
      ],
      "accent": [
        92,
        178,
        255
      ],
      "cover": "/apps/anyroad/cover.jpg",
      "bytes": 411399,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-24"
      },
      "sha256": "b96c0ff3ef50e60d83551481f34eecc903c0a2ae11c2e235597f6e865b172643"
    },
    {
      "slug": "asteroids",
      "appId": "asteroids",
      "name": "Asteroids",
      "shortName": "Asteroids",
      "version": "1.0.0",
      "tagline": "Asteroids with friends — everyone who opens your invite flies another ship.",
      "author": {
        "name": "dmcinnes",
        "url": "https://github.com/dmcinnes/HTML5-Asteroids"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "HTML5 Asteroids",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-23",
      "updated": "2026-08-23",
      "categories": [
        "Games"
      ],
      "tags": [
        "asteroids",
        "arcade",
        "vector",
        "multiplayer",
        "space",
        "offline"
      ],
      "accent": [
        196,
        220,
        255
      ],
      "cover": "/apps/asteroids/cover.jpg",
      "bytes": 263361,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-25"
      },
      "sha256": "034beb33b60ad891c2dd62af7da519b6fe1be8108b022ab60d0d7fe2b7694e38"
    },
    {
      "slug": "backdooms",
      "appId": "backdooms",
      "name": "Backdooms",
      "shortName": "Backdooms",
      "version": "1.2",
      "tagline": "DOOM in the Backrooms, running inside a single GIF file.",
      "author": {
        "name": "Kuberwastaken",
        "url": "https://github.com/Kuberwastaken/backdooms"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "Backdooms",
        "blessed": false
      },
      "minBuild": 1314,
      "offline": true,
      "releaseDate": "2026-08-24",
      "updated": "2026-08-24",
      "categories": [
        "Games"
      ],
      "tags": [
        "doom",
        "backrooms",
        "fps",
        "shooter",
        "raycaster",
        "offline",
        "multiplayer"
      ],
      "accent": [
        196,
        156,
        36
      ],
      "cover": "/apps/backdooms/cover.jpg",
      "bytes": 268576,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-27"
      },
      "sha256": "d39049c297dc2e0651d7b3166efe164798c5a9f6e139af12670f4b1751747281"
    },
    {
      "slug": "backgammon",
      "appId": "backgammon",
      "name": "Backgammon",
      "shortName": "Backgammon",
      "version": "1.0",
      "tagline": "Play the computer, or send a link and a friend sits across the board.",
      "author": {
        "name": "quasoft",
        "url": "https://github.com/quasoft/backgammonjs"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "backgammonjs",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-23",
      "updated": "2026-08-23",
      "categories": [
        "Games"
      ],
      "tags": [
        "backgammon",
        "board",
        "dice",
        "multiplayer",
        "offline"
      ],
      "accent": [
        139,
        58,
        42
      ],
      "cover": "/apps/backgammon/cover.jpg",
      "bytes": 228125,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-25"
      },
      "sha256": "59f744e47e50af8addbe7e14b4361d3e3c1c1d1f5f39db86f3d793566a5b19c8"
    },
    {
      "slug": "background-removal",
      "appId": "background-removal",
      "name": "Background Removal",
      "shortName": "Cut BG",
      "version": "1.0.0",
      "tagline": "Cut a photo's background on your device. No upload, no account, no watermark.",
      "author": {
        "name": "IMG.LY GmbH",
        "url": "https://github.com/imgly/background-removal-js"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "@imgly/background-removal",
        "blessed": false
      },
      "minBuild": 1381,
      "offline": true,
      "releaseDate": "2026-08-30",
      "updated": "2026-08-30",
      "categories": [
        "Creativity",
        "Media"
      ],
      "tags": [
        "photo",
        "background",
        "remove",
        "cutout",
        "png",
        "offline",
        "gpu"
      ],
      "accent": [
        56,
        196,
        168
      ],
      "cover": "/apps/background-removal/cover.jpg",
      "bytes": 12453691,
      "download": 0,
      "optionalCount": 3,
      "optionalDownload": 308651454,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-31"
      },
      "sha256": "c0d9038eba821544295940cc50fac16c7625fbdc5bf22f3aaa98d2ccb07077ba"
    },
    {
      "slug": "battle-city",
      "appId": "battle-city",
      "name": "Eagle Defense",
      "shortName": "Eagle",
      "version": "1.1.0",
      "tagline": "Tanks, bricks, and the eagle. A friend on the other pad.",
      "author": {
        "name": "feichao93",
        "url": "https://github.com/feichao93/battle-city"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "feichao93/battle-city",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-23",
      "updated": "2026-08-23",
      "categories": [
        "Games"
      ],
      "tags": [
        "tanks",
        "arcade",
        "multiplayer",
        "retro",
        "offline"
      ],
      "accent": [
        231,
        156,
        33
      ],
      "cover": "/apps/battle-city/cover.jpg",
      "bytes": 282728,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-25"
      },
      "sha256": "4e55b04402f7727f108fe062c031818a01ec813f1eb0fb61bb66b969ef4648e8"
    },
    {
      "slug": "battleboat",
      "appId": "battleboat",
      "name": "Battleboat",
      "shortName": "Battleboat",
      "version": "1.0",
      "tagline": "Hide a fleet on your phone, send the link, sink theirs.",
      "author": {
        "name": "billmei",
        "url": "https://github.com/billmei/battleboat"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "Battleboat",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-23",
      "updated": "2026-08-23",
      "categories": [
        "Games"
      ],
      "tags": [
        "battleboat",
        "board",
        "multiplayer",
        "offline"
      ],
      "accent": [
        255,
        146,
        0
      ],
      "cover": "/apps/battleboat/cover.jpg",
      "bytes": 230755,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-26"
      },
      "sha256": "4e47a90cf122138e8375cac307751a94877d42055274b967db922b0ab1ada3a6"
    },
    {
      "slug": "beepbox",
      "appId": "beepbox",
      "name": "BeepBox",
      "shortName": "BeepBox",
      "version": "4.2.2",
      "tagline": "The chiptune song lives in the GIF. Invite, and you jam the same track.",
      "author": {
        "name": "John Nesky",
        "url": "https://github.com/johnnesky/beepbox"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "BeepBox",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-30",
      "updated": "2026-08-30",
      "categories": [
        "Creativity",
        "Media"
      ],
      "tags": [
        "beepbox",
        "chiptune",
        "tracker",
        "sequencer",
        "music",
        "multiplayer",
        "offline"
      ],
      "accent": [
        37,
        243,
        255
      ],
      "cover": "/apps/beepbox/cover.jpg",
      "bytes": 428152,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-09-02"
      },
      "sha256": "782e444ded1358b01b8e385e743658d1b8e081b4931e15b64eb584e4464aeb80"
    },
    {
      "slug": "besogo",
      "appId": "besogo",
      "name": "BesoGo",
      "shortName": "BesoGo",
      "version": "1.0",
      "tagline": "A Go board. Two seats. Tap to place a stone.",
      "author": {
        "name": "yewang",
        "url": "https://github.com/yewang/besogo"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "BesoGo",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-23",
      "updated": "2026-08-23",
      "categories": [
        "Games"
      ],
      "tags": [
        "go",
        "weiqi",
        "baduk",
        "board",
        "multiplayer",
        "offline"
      ],
      "accent": [
        196,
        140,
        70
      ],
      "cover": "/apps/besogo/cover.jpg",
      "bytes": 220526,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-25"
      },
      "sha256": "a15bb6dca209ffeabdc0c927f995e45c97d07af5bffac91633c6fe8d0048d116"
    },
    {
      "slug": "bible",
      "appId": "offline-bible",
      "name": "Bible",
      "shortName": "Bible",
      "version": "1.2.0",
      "tagline": "139 public-domain Bibles, offline from the first verse. No account.",
      "author": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "minBuild": 1381,
      "offline": true,
      "releaseDate": "2026-08-27",
      "updated": "2026-08-27",
      "categories": [
        "Learning"
      ],
      "tags": [
        "bible",
        "scripture",
        "offline",
        "reading",
        "study"
      ],
      "accent": [
        201,
        162,
        39
      ],
      "cover": "/apps/bible/cover.jpg",
      "bytes": 4069035,
      "download": 0,
      "optionalCount": 148,
      "optionalDownload": 155743007,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-30"
      },
      "sha256": "5ebb0d35a93c08982a82522c841dc3bdc79d9411b1a41456fff7a471174a1d0f"
    },
    {
      "slug": "bingo",
      "appId": "bingo",
      "name": "Bingo",
      "shortName": "Bingo",
      "version": "1.1.0",
      "tagline": "Call bingo over a meeting. Everyone who opens the invite gets a card.",
      "author": {
        "name": "mihailgaberov",
        "url": "https://github.com/mihailgaberov/bingo"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "bingo",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-23",
      "updated": "2026-08-23",
      "categories": [
        "Games"
      ],
      "tags": [
        "bingo",
        "party",
        "hall",
        "multiplayer",
        "offline"
      ],
      "accent": [
        196,
        40,
        48
      ],
      "cover": "/apps/bingo/cover.jpg",
      "bytes": 204434,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-25"
      },
      "sha256": "61ecd8044c0f60e0f6c6c909ad422b99dcfa8280400b54c6b8a5f951a5db53f2"
    },
    {
      "slug": "bip39",
      "appId": "bip39",
      "name": "BIP39",
      "shortName": "BIP39",
      "version": "1.0",
      "tagline": "Recovery words stay on this device — nothing is sent anywhere.",
      "author": {
        "name": "iancoleman",
        "url": "https://github.com/iancoleman/bip39"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "bip39",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-23",
      "updated": "2026-08-23",
      "categories": [
        "Utilities"
      ],
      "tags": [
        "recovery",
        "words",
        "wallet",
        "offline",
        "privacy",
        "bip39"
      ],
      "accent": [
        196,
        148,
        48
      ],
      "cover": "/apps/bip39/cover.jpg",
      "bytes": 2144020,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-26"
      },
      "sha256": "a6d8f2c42dadee1b6a102f665069a07f1e6a2f07282102d6c10a76949e21aab5"
    },
    {
      "slug": "bitsy",
      "appId": "bitsy",
      "name": "Bitsy",
      "shortName": "Bitsy",
      "version": "1.0",
      "tagline": "A tiny world. Walk around. Make one. Share it.",
      "author": {
        "name": "le-doux",
        "url": "https://github.com/le-doux/bitsy"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "Bitsy",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-23",
      "updated": "2026-08-23",
      "categories": [
        "Games",
        "Creativity"
      ],
      "tags": [
        "bitsy",
        "world",
        "story",
        "pixel",
        "editor",
        "multiplayer",
        "offline"
      ],
      "accent": [
        0,
        82,
        204
      ],
      "cover": "/apps/bitsy/cover.jpg",
      "bytes": 296007,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-29"
      },
      "sha256": "a9bc22788bc1f33583a0b19d4e945bea3b7302cf4f2ca3d5ebf2626f43f31ffb"
    },
    {
      "slug": "blackjack",
      "appId": "blackjack",
      "name": "Blackjack",
      "shortName": "Blackjack",
      "version": "1.1.0",
      "tagline": "Beat the dealer to 21. Friends who open your invite play their own hands.",
      "author": {
        "name": "hanhaechi",
        "url": "https://github.com/hanhaechi/blackjack"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "blackjack",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-24",
      "updated": "2026-08-24",
      "categories": [
        "Games"
      ],
      "tags": [
        "blackjack",
        "cards",
        "party",
        "multiplayer",
        "offline"
      ],
      "accent": [
        26,
        122,
        58
      ],
      "cover": "/apps/blackjack/cover.jpg",
      "bytes": 192959,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-25"
      },
      "sha256": "bac0ec66717f59a3417f58967c8bab051092a93b6ff111b63a2cd789bf80265f"
    },
    {
      "slug": "blockly-games",
      "appId": "blockly-games",
      "name": "Blockly Games",
      "shortName": "Blockly",
      "version": "1.0.0",
      "tagline": "Puzzle, Maze, Turtle — offline, your stars live in the file, an invite opens the same level.",
      "author": {
        "name": "Google",
        "url": "https://github.com/google/blockly-games"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "Blockly Games",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-30",
      "updated": "2026-08-30",
      "categories": [
        "Games",
        "Learning"
      ],
      "tags": [
        "blockly",
        "puzzle",
        "maze",
        "turtle",
        "coding",
        "blocks",
        "offline",
        "multiplayer"
      ],
      "accent": [
        92,
        184,
        92
      ],
      "cover": "/apps/blockly-games/cover.jpg",
      "bytes": 559791,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-09-02"
      },
      "sha256": "f2a383a99144996e9d14e97c99ffcfe1d1a45ff2de0456c0ce9e888321f18675"
    },
    {
      "slug": "bowling",
      "appId": "bowling",
      "name": "Bowling",
      "shortName": "Bowl",
      "version": "1.0.0",
      "tagline": "Ten pins at the end of the lane. Aim, flick, take turns.",
      "author": {
        "name": "tincoats",
        "url": "https://github.com/tincoats/bowling"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "bowling",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-23",
      "updated": "2026-08-23",
      "categories": [
        "Games"
      ],
      "tags": [
        "bowling",
        "alley",
        "sports",
        "multiplayer",
        "classic"
      ],
      "accent": [
        196,
        56,
        40
      ],
      "cover": "/apps/bowling/cover.jpg",
      "bytes": 201041,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-29"
      },
      "sha256": "bb7a55a2022c8e2bc2fc922cee99d48b065f8573fac6459480e42a0f95c5e8f4"
    },
    {
      "slug": "breaklock",
      "appId": "breaklock",
      "name": "BreakLock",
      "shortName": "BreakLock",
      "version": "1.0.0",
      "tagline": "You draw the secret. They have to crack it. Your streak lives in the file.",
      "author": {
        "name": "maxwellito",
        "url": "https://github.com/maxwellito/breaklock"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "BreakLock",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-30",
      "updated": "2026-08-30",
      "categories": [
        "Games"
      ],
      "tags": [
        "puzzle",
        "lock",
        "mastermind",
        "pattern",
        "multiplayer",
        "offline"
      ],
      "accent": [
        17,
        102,
        153
      ],
      "cover": "/apps/breaklock/cover.jpg",
      "bytes": 264003,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-31"
      },
      "sha256": "d0053de98ae54a3dbee343a44e8269ee1e6319cfa207a211babe3da218e22ffa"
    },
    {
      "slug": "breakout",
      "appId": "breakout",
      "name": "Breakout",
      "shortName": "Breakout",
      "version": "1.0.0",
      "tagline": "High score lives in the file. Invite a friend: two paddles, one wall.",
      "author": {
        "name": "Jake Gordon",
        "url": "https://github.com/jakesgordon/javascript-breakout"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "JavaScript Breakout",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-30",
      "updated": "2026-08-30",
      "categories": [
        "Games"
      ],
      "tags": [
        "breakout",
        "arkanoid",
        "arcade",
        "bricks",
        "multiplayer",
        "offline"
      ],
      "accent": [
        245,
        111,
        37
      ],
      "cover": "/apps/breakout/cover.jpg",
      "bytes": 273052,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-31"
      },
      "sha256": "4e63a5770c73d8460e0904358a684f19ad140b0471f54480ac97b9ad715ce085"
    },
    {
      "slug": "carbon",
      "appId": "carbon",
      "name": "Carbon",
      "shortName": "Carbon",
      "version": "1.0.0",
      "tagline": "Pretty code images, no account — the snippet lives in this file.",
      "author": {
        "name": "Carbon",
        "url": "https://github.com/carbon-app/carbon"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "Carbon",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-30",
      "updated": "2026-08-30",
      "categories": [
        "Developer",
        "Creativity"
      ],
      "tags": [
        "carbon",
        "code",
        "screenshot",
        "syntax",
        "theme",
        "png",
        "offline",
        "multiplayer"
      ],
      "accent": [
        171,
        184,
        195
      ],
      "cover": "/apps/carbon/cover.jpg",
      "bytes": 287499,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-31"
      },
      "sha256": "d5fd9325313154929de9837701b6669a312d1ca553d57f60539c4794534d10d0"
    },
    {
      "slug": "cascade-studio",
      "appId": "cascade-studio",
      "name": "CascadeStudio",
      "shortName": "Cascade",
      "version": "1.0.0",
      "tagline": "Sketch a profile, pull it into a solid. The model lives in the file — works offline.",
      "author": {
        "name": "Johnathon Selstad",
        "url": "https://github.com/zalo/CascadeStudio"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "CascadeStudio",
        "blessed": false
      },
      "minBuild": 1178,
      "offline": true,
      "releaseDate": "2026-08-30",
      "updated": "2026-08-30",
      "categories": [
        "Utilities",
        "Creativity"
      ],
      "tags": [
        "cad",
        "3d",
        "opencascade",
        "sketch",
        "solid",
        "brep",
        "offline"
      ],
      "accent": [
        56,
        168,
        214
      ],
      "cover": "/apps/cascade-studio/cover.jpg",
      "bytes": 9301900,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-09-01"
      },
      "sha256": "c1faacf6b47173aa508495bf84e2025f31efd05358575f3f9aca342dba12fb1b"
    },
    {
      "slug": "catch-the-cat",
      "appId": "catch-the-cat",
      "name": "Catch the Cat",
      "shortName": "Cat",
      "version": "1.2.0",
      "tagline": "Tap the dots. Wall the cat in — alone, against a friend, or together.",
      "author": {
        "name": "ganlvtech",
        "url": "https://github.com/ganlvtech/phaser-catch-the-cat"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "Catch The Cat",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-23",
      "updated": "2026-08-25",
      "categories": [
        "Games"
      ],
      "tags": [
        "puzzle",
        "cat",
        "hex",
        "multiplayer",
        "co-op",
        "3d",
        "offline"
      ],
      "accent": [
        232,
        176,
        90
      ],
      "cover": "/apps/catch-the-cat/cover.jpg",
      "bytes": 618959,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-26"
      },
      "sha256": "9f4888595aa4e53d87bf5a66f97515e9823476615c98d3b337a0bc3ce5dfefa4"
    },
    {
      "slug": "checkers",
      "appId": "checkers",
      "name": "Checkers",
      "shortName": "Checkers",
      "version": "1.0",
      "tagline": "Play the computer, or send a link and a friend takes the other colour.",
      "author": {
        "name": "stroibot",
        "url": "https://github.com/stroibot/Checkers"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "Checkers",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-23",
      "updated": "2026-08-23",
      "categories": [
        "Games"
      ],
      "tags": [
        "checkers",
        "draughts",
        "board",
        "multiplayer",
        "offline"
      ],
      "accent": [
        166,
        48,
        42
      ],
      "cover": "/apps/checkers/cover.jpg",
      "bytes": 198533,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-25"
      },
      "sha256": "6d1e6512f8cca8ab448a20832b30b49af45ebf3f37a94ca02e2a114c97cf2d41"
    },
    {
      "slug": "chess-grandmaster",
      "appId": "chess-grandmaster",
      "name": "Chess Grandmaster",
      "shortName": "Chess",
      "version": "1.0.1",
      "tagline": "The real Stockfish engine, running on your device — no internet needed.",
      "author": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-07-09",
      "updated": "2026-08-12",
      "categories": [
        "Games",
        "Learning"
      ],
      "tags": [
        "chess",
        "stockfish",
        "offline",
        "multiplayer"
      ],
      "accent": [
        201,
        162,
        75
      ],
      "cover": "/apps/chess-grandmaster/cover.jpg",
      "bytes": 8322477,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-26"
      },
      "sha256": "9b1de2ac680d95520b7d5d073a18f8ca4dfb045fdd2740025126bf2a6057a8cf"
    },
    {
      "slug": "chrome-dino",
      "appId": "chrome-dino",
      "name": "Chrome Dino",
      "shortName": "Dino",
      "version": "1.0.0",
      "tagline": "chrome://dino, always offline — high score in the file, Invite is a side-by-side run.",
      "author": {
        "name": "The Chromium Authors",
        "url": "https://chromium.googlesource.com/chromium/src"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "T-Rex Runner",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-30",
      "updated": "2026-08-30",
      "categories": [
        "Games"
      ],
      "tags": [
        "dino",
        "arcade",
        "runner",
        "offline",
        "multiplayer",
        "chrome"
      ],
      "accent": [
        83,
        83,
        83
      ],
      "cover": "/apps/chrome-dino/cover.jpg",
      "bytes": 180708,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-31"
      },
      "sha256": "0d2ab21f617c4a66d4fe1b3c0091e34f6d33e55accdae611cd075be805b0e20b"
    },
    {
      "slug": "civiclock",
      "appId": "civiclock",
      "name": "Civiclock",
      "shortName": "Civiclock",
      "version": "1.0.0",
      "tagline": "Paint a little city and watch it grow month by month. Invite a co-mayor.",
      "author": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "inspiredBy": {
        "name": "SimCity",
        "by": "Maxis / Electronic Arts"
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-23",
      "updated": "2026-08-23",
      "categories": [
        "Games"
      ],
      "tags": [
        "city",
        "simulation",
        "builder",
        "mayor",
        "multiplayer",
        "offline"
      ],
      "accent": [
        240,
        186,
        72
      ],
      "cover": "/apps/civiclock/cover.jpg",
      "bytes": 237153,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-25"
      },
      "sha256": "c5f14805c7e44108fefe785b400f8133851562d8a272d943e61f2b395de39cf9"
    },
    {
      "slug": "coil",
      "appId": "coil",
      "name": "Coil",
      "shortName": "Coil",
      "version": "1.1.0",
      "tagline": "Loop a trail around the orbs. Your best score is saved.",
      "author": {
        "name": "Hakim El Hattab",
        "url": "https://github.com/leereilly/Coil"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "Coil",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-24",
      "updated": "2026-08-24",
      "categories": [
        "Games"
      ],
      "tags": [
        "arcade",
        "trail",
        "reflex",
        "offline"
      ],
      "accent": [
        0,
        200,
        220
      ],
      "cover": "/apps/coil/cover.jpg",
      "bytes": 367824,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-29"
      },
      "sha256": "ff1662f03be68f3f7998b5d8d6685f826c7aa3fe4349a9683cae3d63d20ae025"
    },
    {
      "slug": "connect-four",
      "appId": "connect-four",
      "name": "Connect Four",
      "shortName": "C4",
      "version": "1.0",
      "tagline": "Play the computer, or send a link and a friend drops the other colour.",
      "author": {
        "name": "kenrick95",
        "url": "https://github.com/kenrick95/c4"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "c4",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-23",
      "updated": "2026-08-23",
      "categories": [
        "Games"
      ],
      "tags": [
        "connect-four",
        "board",
        "multiplayer",
        "offline"
      ],
      "accent": [
        239,
        69,
        59
      ],
      "cover": "/apps/connect-four/cover.jpg",
      "bytes": 258037,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-25"
      },
      "sha256": "10990c31a7930ddb6110a6619ba822c5c55a4dff90dbd18d386b1bd088657646"
    },
    {
      "slug": "contrast-ratio",
      "appId": "contrast-ratio",
      "name": "Contrast Ratio",
      "shortName": "Contrast",
      "version": "1.0",
      "tagline": "Pick two colours, see the contrast ratio and the WCAG verdict.",
      "author": {
        "name": "siege-media",
        "url": "https://github.com/siege-media/contrast-ratio"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "contrast-ratio",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-23",
      "updated": "2026-08-23",
      "categories": [
        "Utilities"
      ],
      "tags": [
        "contrast",
        "text",
        "colour",
        "color",
        "readable",
        "offline"
      ],
      "accent": [
        94,
        167,
        42
      ],
      "cover": "/apps/contrast-ratio/cover.jpg",
      "bytes": 192053,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-25"
      },
      "sha256": "7ad4b10f227b69a8a41262c5a6705baca563fff4b1526061f6a6e62eb79c10ec"
    },
    {
      "slug": "cron-speak",
      "appId": "cron-speak",
      "name": "Cron Speak",
      "shortName": "Cron",
      "version": "1.1.0",
      "tagline": "Paste a cron expression, read it back in plain English.",
      "author": {
        "name": "bradymholt",
        "url": "https://github.com/bradymholt/cRonstrue"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "cRonstrue",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-24",
      "updated": "2026-08-24",
      "categories": [
        "Developer",
        "Utilities"
      ],
      "tags": [
        "cron",
        "schedule",
        "english",
        "offline"
      ],
      "accent": [
        90,
        160,
        220
      ],
      "cover": "/apps/cron-speak/cover.jpg",
      "bytes": 207954,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-29"
      },
      "sha256": "b98f6f2a651003f8f73149965a27ede7089f51f87cd001ea1a937252386a5fd9"
    },
    {
      "slug": "crossword",
      "appId": "crossword",
      "name": "Crossword",
      "shortName": "Crossword",
      "version": "1.1.0",
      "tagline": "A crossword that saves itself. Close it mid-puzzle — the letters stay.",
      "author": {
        "name": "Dave Kerr",
        "url": "https://github.com/dwmkerr/crosswords-js"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "crosswords-js",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-24",
      "updated": "2026-08-24",
      "categories": [
        "Games"
      ],
      "tags": [
        "crossword",
        "puzzle",
        "words",
        "offline"
      ],
      "accent": [
        40,
        80,
        160
      ],
      "cover": "/apps/crossword/cover.jpg",
      "bytes": 166462,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-25"
      },
      "sha256": "37623e0f44adbe8e9456b1cd585d9796495b981ac4b9b112fda8936ec6f96a15"
    },
    {
      "slug": "css-doodle",
      "appId": "css-doodle",
      "name": "CSS Doodle",
      "shortName": "Doodle",
      "version": "1.0.0",
      "tagline": "A little pattern toy. Remix a snippet. Share it with a friend.",
      "author": {
        "name": "css-doodle",
        "url": "https://github.com/css-doodle/css-doodle"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "css-doodle",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-23",
      "updated": "2026-08-23",
      "categories": [
        "Creativity"
      ],
      "tags": [
        "pattern",
        "doodle",
        "remix",
        "toy",
        "art",
        "colours",
        "multiplayer",
        "offline"
      ],
      "accent": [
        96,
        86,
        158
      ],
      "cover": "/apps/css-doodle/cover.jpg",
      "bytes": 243755,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-29"
      },
      "sha256": "d74d94117969398090863230624d93bb85d54f870b4d6e0495d675af5fa385bd"
    },
    {
      "slug": "cube-composer",
      "appId": "cube-composer",
      "name": "Cube Composer",
      "shortName": "Cubes",
      "version": "1.0",
      "tagline": "Stack and transform the cubes. Race a friend on the same puzzles.",
      "author": {
        "name": "sharkdp",
        "url": "https://github.com/sharkdp/cube-composer"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "Cube Composer",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-23",
      "updated": "2026-08-23",
      "categories": [
        "Games",
        "Learning"
      ],
      "tags": [
        "puzzle",
        "cubes",
        "functions",
        "multiplayer",
        "offline"
      ],
      "accent": [
        235,
        104,
        65
      ],
      "cover": "/apps/cube-composer/cover.jpg",
      "bytes": 172186,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-27"
      },
      "sha256": "501c3947827b0326eb724083715f1034c001cc59d0d54d17d4d5e10dd4450aa9"
    },
    {
      "slug": "cyberchef",
      "appId": "cyberchef",
      "name": "CyberChef",
      "shortName": "CyberChef",
      "version": "11.4.0",
      "tagline": "Encode, decode, encrypt, hash, compress — hundreds of operations, all on this device.",
      "author": {
        "name": "GCHQ",
        "url": "https://github.com/gchq/CyberChef"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "CyberChef",
        "blessed": false
      },
      "minBuild": 1178,
      "offline": true,
      "releaseDate": "2026-08-22",
      "updated": "2026-08-22",
      "categories": [
        "Utilities",
        "Developer"
      ],
      "tags": [
        "converter",
        "encoder",
        "decoder",
        "crypto",
        "hash",
        "base64",
        "hex",
        "offline",
        "cyberchef"
      ],
      "accent": [
        244,
        67,
        54
      ],
      "cover": "/apps/cyberchef/cover.jpg",
      "bytes": 11835382,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-25"
      },
      "sha256": "059f44c8011231acca71b02b73abf1159478d4193edf619f5ebd469587ab773b"
    },
    {
      "slug": "delta",
      "appId": "delta",
      "name": "Delta",
      "shortName": "Delta",
      "version": "1.1.0",
      "tagline": "A C64-style shmup. Your best score is saved.",
      "author": {
        "name": "Jake Gordon",
        "url": "https://github.com/jakesgordon/javascript-delta"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "HTML5 Delta",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-24",
      "updated": "2026-08-24",
      "categories": [
        "Games"
      ],
      "tags": [
        "shmup",
        "arcade",
        "c64",
        "delta",
        "offline"
      ],
      "accent": [
        160,
        160,
        255
      ],
      "cover": "/apps/delta/cover.jpg",
      "bytes": 321767,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-25"
      },
      "sha256": "898ebb19b362545ab519157071d48f0b2a4a74d66fdabd003c2fee89957682de"
    },
    {
      "slug": "digitaljs",
      "appId": "digitaljs",
      "name": "DigitalJS",
      "shortName": "DigitalJS",
      "version": "0.14.2",
      "tagline": "The circuit lives in the GIF. Invite shares the bench. It works on a plane.",
      "author": {
        "name": "Marek Materzok",
        "url": "https://github.com/tilk/digitaljs"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "DigitalJS",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-30",
      "updated": "2026-08-30",
      "categories": [
        "Learning",
        "Developer"
      ],
      "tags": [
        "circuit",
        "logic",
        "simulator",
        "verilog",
        "gates",
        "offline",
        "multiplayer"
      ],
      "accent": [
        46,
        196,
        138
      ],
      "cover": "/apps/digitaljs/cover.jpg",
      "bytes": 625344,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-31"
      },
      "sha256": "4755370debc5ad49acfb341e0aea1a29bcff289336b41274f8da72a7e0b0144c"
    },
    {
      "slug": "drawnix",
      "appId": "drawnix",
      "name": "Drawnix",
      "shortName": "Drawnix",
      "version": "0.4.0",
      "tagline": "Freehand, mind maps and flowcharts on one infinite canvas — saved on this device.",
      "author": {
        "name": "plait-board",
        "url": "https://github.com/plait-board/drawnix"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "Drawnix",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-22",
      "updated": "2026-08-22",
      "categories": [
        "Creativity",
        "Productivity"
      ],
      "tags": [
        "whiteboard",
        "mindmap",
        "flowchart",
        "freehand",
        "drawing",
        "offline",
        "canvas"
      ],
      "accent": [
        70,
        120,
        230
      ],
      "cover": "/apps/drawnix/cover.jpg",
      "bytes": 2234094,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-26"
      },
      "sha256": "32fdc7c3b0bd96332f4fa9f7ae243bb39d4d381ab3b276226a868cd054b39ffc"
    },
    {
      "slug": "drawphone",
      "appId": "drawphone",
      "name": "Drawphone",
      "shortName": "Drawphone",
      "version": "1.0",
      "tagline": "Telephone with pictures: draw, pass, guess. One link deals everyone in.",
      "author": {
        "name": "tannerkrewson",
        "url": "https://github.com/tannerkrewson/drawphone"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "Drawphone",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-23",
      "updated": "2026-08-23",
      "categories": [
        "Games"
      ],
      "tags": [
        "telephone",
        "drawing",
        "party",
        "multiplayer",
        "pictionary"
      ],
      "accent": [
        232,
        92,
        64
      ],
      "cover": "/apps/drawphone/cover.jpg",
      "bytes": 204760,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-25"
      },
      "sha256": "a51520d6fa4ce4a6939b2e5b2a0886dd759638321078bcd61a2c1ce4e40aed0a"
    },
    {
      "slug": "duck-hunt",
      "appId": "duck-hunt",
      "name": "Pond Hunt",
      "shortName": "Pond Hunt",
      "version": "1.2",
      "tagline": "Click the ducks. The dog laughs.",
      "author": {
        "name": "MattSurabian",
        "url": "https://github.com/MattSurabian/DuckHunt-JS"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "DuckHunt JS",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-24",
      "updated": "2026-08-24",
      "categories": [
        "Games"
      ],
      "tags": [
        "arcade",
        "shooter",
        "tap",
        "offline",
        "multiplayer"
      ],
      "accent": [
        100,
        176,
        255
      ],
      "cover": "/apps/duck-hunt/cover.jpg",
      "bytes": 1542091,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-29"
      },
      "sha256": "cc782db04756336fc168f0ee65a27f2800df7cc2a1d4e32fc95acfe947a191b3"
    },
    {
      "slug": "emoji-minesweeper",
      "appId": "emoji-minesweeper",
      "name": "Emoji Minesweeper",
      "shortName": "Minesweeper",
      "version": "1.0",
      "tagline": "Minesweeper with emoji. Race a friend on the same board.",
      "author": {
        "name": "muan",
        "url": "https://github.com/muan/emoji-minesweeper"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "emoji-minesweeper",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-23",
      "updated": "2026-08-23",
      "categories": [
        "Games"
      ],
      "tags": [
        "minesweeper",
        "emoji",
        "puzzle",
        "multiplayer",
        "race",
        "offline"
      ],
      "accent": [
        255,
        184,
        48
      ],
      "cover": "/apps/emoji-minesweeper/cover.jpg",
      "bytes": 195470,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-24"
      },
      "sha256": "4044b52eb01b566bc8e8014be0ea0be21df0b0a2978360f415b57f40202f6841"
    },
    {
      "slug": "epub-reader",
      "appId": "epub-reader",
      "name": "EPUB Reader",
      "shortName": "EPUB",
      "version": "1.0.0",
      "tagline": "The book lives in the app. Invite a friend onto the same page — nothing is uploaded.",
      "author": {
        "name": "FuturePress",
        "url": "https://github.com/futurepress/epub.js"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "epub.js",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-30",
      "updated": "2026-08-30",
      "categories": [
        "Utilities"
      ],
      "tags": [
        "epub",
        "ebook",
        "reader",
        "book",
        "offline",
        "multiplayer"
      ],
      "accent": [
        196,
        122,
        48
      ],
      "cover": "/apps/epub-reader/cover.jpg",
      "bytes": 355554,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-09-01"
      },
      "sha256": "d8cbb6a8d6b82563ce6507d313cf81fdb8b58f0a45e434421a2dca20fedbcb96"
    },
    {
      "slug": "evolution-of-trust",
      "appId": "evolution-of-trust",
      "name": "The Evolution of Trust",
      "shortName": "Trust",
      "version": "1.0.0",
      "tagline": "Close it mid-essay and you are still on that chapter. Send the invite and a friend watches the same tournament.",
      "author": {
        "name": "Nicky Case",
        "url": "https://ncase.me/trust/"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "The Evolution of Trust",
        "blessed": false
      },
      "minBuild": 2154,
      "offline": true,
      "releaseDate": "2026-08-30",
      "updated": "2026-08-30",
      "categories": [
        "Games",
        "Learning"
      ],
      "tags": [
        "trust",
        "game-theory",
        "explorable",
        "prisoners-dilemma",
        "offline",
        "multiplayer"
      ],
      "accent": [
        64,
        137,
        221
      ],
      "cover": "/apps/evolution-of-trust/cover.jpg",
      "bytes": 4785786,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-31"
      },
      "sha256": "fffacce13984da9676465daf6fa5068049146284d6414cf4b926dd49a0fbb925"
    },
    {
      "slug": "excalidraw",
      "appId": "excalidraw",
      "name": "Excalidraw",
      "shortName": "Draw",
      "version": "0.18.1",
      "tagline": "The hand-drawn whiteboard. Drawings save into the app's own file.",
      "author": {
        "name": "Excalidraw",
        "url": "https://github.com/excalidraw/excalidraw"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "Excalidraw",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-22",
      "updated": "2026-08-22",
      "categories": [
        "Creativity",
        "Productivity"
      ],
      "tags": [
        "whiteboard",
        "drawing",
        "diagram",
        "sketch",
        "offline",
        "excalidraw"
      ],
      "accent": [
        105,
        101,
        219
      ],
      "cover": "/apps/excalidraw/cover.jpg",
      "bytes": 4597466,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-29"
      },
      "sha256": "4432a1ff2c2e801f97accc406b6bca45131fab12b18065e13734df4a6c857605"
    },
    {
      "slug": "falling-blocks",
      "appId": "falling-blocks",
      "name": "Falling Blocks",
      "shortName": "Blocks",
      "version": "1.0.0",
      "tagline": "Race a friend: same falling shapes, two boards, first to top out loses.",
      "author": {
        "name": "dionyziz",
        "url": "https://github.com/dionyziz/canvas-tetris"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "canvas-tetris",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-23",
      "updated": "2026-08-23",
      "categories": [
        "Games"
      ],
      "tags": [
        "falling",
        "blocks",
        "puzzle",
        "arcade",
        "multiplayer",
        "offline"
      ],
      "accent": [
        0,
        196,
        204
      ],
      "cover": "/apps/falling-blocks/cover.jpg",
      "bytes": 256160,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-25"
      },
      "sha256": "6ce512981e62f92c2f2186764ab284409c52fdb6e1385301266582553694f600"
    },
    {
      "slug": "fend",
      "appId": "fend",
      "name": "fend",
      "shortName": "fend",
      "version": "1.1",
      "tagline": "A calculator that speaks units: type 1 ft to cm, get the answer.",
      "author": {
        "name": "printfn",
        "url": "https://github.com/printfn/fend"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "fend",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-24",
      "updated": "2026-08-24",
      "categories": [
        "Utilities"
      ],
      "tags": [
        "calculator",
        "units",
        "math",
        "notepad",
        "offline"
      ],
      "accent": [
        200,
        80,
        40
      ],
      "cover": "/apps/fend/cover.jpg",
      "bytes": 594059,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-30"
      },
      "sha256": "00ffe3ad17a7a6c0ec07084d06e3ee8be69c3dc818c3b638260a7cb53e059bc3"
    },
    {
      "slug": "ffmpeg-studio",
      "appId": "ffmpeg-studio",
      "name": "ffmpeg.wasm Studio",
      "shortName": "ffmpeg",
      "version": "1.0.0",
      "tagline": "Trim, MP3, GIF — ffmpeg one-liners on this device. Nothing is uploaded.",
      "author": {
        "name": "Jerome Wu",
        "url": "https://github.com/ffmpegwasm/ffmpeg.wasm"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "ffmpeg.wasm",
        "blessed": false
      },
      "minBuild": 1178,
      "offline": true,
      "releaseDate": "2026-08-30",
      "updated": "2026-08-30",
      "categories": [
        "Media",
        "Utilities"
      ],
      "tags": [
        "ffmpeg",
        "convert",
        "trim",
        "mp3",
        "gif",
        "video",
        "audio",
        "offline"
      ],
      "accent": [
        16,
        185,
        160
      ],
      "cover": "/apps/ffmpeg-studio/cover.jpg",
      "bytes": 253527,
      "download": 32232419,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-31"
      },
      "sha256": "a26e74a075a5f32f36cfff11986ecb41cd0b4872fa3f3ce8b84851a557feac7f"
    },
    {
      "slug": "fieldplay",
      "appId": "fieldplay",
      "name": "Field Play",
      "shortName": "Field",
      "version": "1.0.0",
      "tagline": "A plane of arrows. Pour particles with a finger and watch them flow.",
      "author": {
        "name": "anvaka",
        "url": "https://github.com/anvaka/fieldplay"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "Field Play",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-24",
      "updated": "2026-08-24",
      "categories": [
        "Creativity"
      ],
      "tags": [
        "particles",
        "field",
        "flow",
        "toy",
        "math",
        "art",
        "multiplayer",
        "offline"
      ],
      "accent": [
        57,
        208,
        197
      ],
      "cover": "/apps/fieldplay/cover.jpg",
      "bytes": 206310,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-25"
      },
      "sha256": "9293b54a63128058bf6704cb769da50da050143a020015a46e88f330dfab9c40"
    },
    {
      "slug": "finance",
      "appId": "finance",
      "name": "Financial Tracker",
      "shortName": "Finance",
      "version": "1.0",
      "tagline": "Every account you have, in one place, on your own computer.",
      "author": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "minBuild": 2087,
      "offline": true,
      "releaseDate": "2026-08-25",
      "updated": "2026-08-25",
      "categories": [
        "Productivity",
        "Utilities"
      ],
      "tags": [
        "money",
        "finance",
        "budget",
        "net worth",
        "banking",
        "csv",
        "simplefin",
        "mint"
      ],
      "accent": [
        26,
        160,
        120
      ],
      "cover": "/apps/finance/cover.jpg",
      "bytes": 347122,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-26"
      },
      "sha256": "23e1d4fe728766b48077b0202115869d5b851a72a894f61c9e2a8c8cb5e5084b"
    },
    {
      "slug": "finger-pool",
      "appId": "finger-pool",
      "name": "Finger Pool",
      "shortName": "Flick",
      "version": "1.0.0",
      "tagline": "Flick a ball with your finger. Colours fly into the pockets. Take turns.",
      "author": {
        "name": "victorqribeiro",
        "url": "https://github.com/victorqribeiro/fingerPool"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "fingerPool",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-23",
      "updated": "2026-08-23",
      "categories": [
        "Games"
      ],
      "tags": [
        "pool",
        "flick",
        "billiards",
        "multiplayer",
        "classic",
        "touch"
      ],
      "accent": [
        17,
        99,
        54
      ],
      "cover": "/apps/finger-pool/cover.jpg",
      "bytes": 220384,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-29"
      },
      "sha256": "824309e323e127fed7c6829a8bd1c6a9930fe2992b251385fae58ad06380edd2"
    },
    {
      "slug": "flexbox-froggy",
      "appId": "flexbox-froggy",
      "name": "Flexbox Froggy",
      "shortName": "Froggy",
      "version": "1.0.0",
      "tagline": "Write CSS. The frogs hop. Close it, come back still on the same pad — or invite a friend into this pond.",
      "author": {
        "name": "Thomas Park",
        "url": "https://github.com/thomaspark/flexboxfroggy"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "Flexbox Froggy",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-30",
      "updated": "2026-08-30",
      "categories": [
        "Games",
        "Learning"
      ],
      "tags": [
        "css",
        "flexbox",
        "puzzle",
        "frogs",
        "tutorial",
        "multiplayer",
        "offline"
      ],
      "accent": [
        67,
        160,
        71
      ],
      "cover": "/apps/flexbox-froggy/cover.jpg",
      "bytes": 254175,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-31"
      },
      "sha256": "fb36bb869c50fef31fed31ef8d570337574a9579a4e18cd1e9dac2ebb566bcdf"
    },
    {
      "slug": "floppy-bird",
      "appId": "floppy-bird",
      "name": "Floppy Bird",
      "shortName": "Floppy",
      "version": "1.0",
      "tagline": "Flappy Bird, plus a race mode — a friend flies beside you from one link.",
      "author": {
        "name": "nebez",
        "url": "https://github.com/nebez/floppybird"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "Floppy Bird",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-23",
      "updated": "2026-08-23",
      "categories": [
        "Games"
      ],
      "tags": [
        "arcade",
        "tap",
        "multiplayer",
        "race",
        "offline"
      ],
      "accent": [
        78,
        192,
        202
      ],
      "cover": "/apps/floppy-bird/cover.jpg",
      "bytes": 303309,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-25"
      },
      "sha256": "f25e3e6272a4fad840d6c59d3ae141bdd8548971295a64023ce70df6a2099481"
    },
    {
      "slug": "fluence",
      "appId": "fluence",
      "name": "Fluence",
      "shortName": "Fluence",
      "version": "1.0.0",
      "tagline": "Speak off the cuff, get honest coaching on how you actually spoke.",
      "author": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-07-09",
      "updated": "2026-07-20",
      "categories": [
        "Learning",
        "Productivity"
      ],
      "tags": [
        "speech",
        "coaching",
        "practice",
        "ai",
        "transcription"
      ],
      "accent": [
        123,
        92,
        255
      ],
      "cover": "/apps/fluence/cover.jpg",
      "bytes": 160530,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-26"
      },
      "sha256": "b2de4bb3ffeb3c427567632aa5e5537074e89a941646ba04d6bebb29b2992d31"
    },
    {
      "slug": "fluid",
      "appId": "fluid",
      "name": "Fluid",
      "shortName": "Fluid",
      "version": "1.1",
      "tagline": "Drag a finger through ink and watch it swirl.",
      "author": {
        "name": "Pavel Dobryakov",
        "url": "https://github.com/PavelDoGreat/WebGL-Fluid-Simulation"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "WebGL Fluid Simulation",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-24",
      "updated": "2026-08-24",
      "categories": [
        "Creativity"
      ],
      "tags": [
        "fluid",
        "ink",
        "webgl",
        "toy",
        "touch",
        "offline"
      ],
      "accent": [
        0,
        180,
        220
      ],
      "cover": "/apps/fluid/cover.jpg",
      "bytes": 240937,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-29"
      },
      "sha256": "4ba7ee9dc58a3f965616148f23d7ae3f1a0b5b868129a30e02b5cbd5b2e2502e"
    },
    {
      "slug": "fortune-sheet",
      "appId": "fortune-sheet",
      "name": "Fortune Sheet",
      "shortName": "Sheets",
      "version": "1.0",
      "tagline": "An Excel-like spreadsheet. Your workbook is saved on your device, not a cloud.",
      "author": {
        "name": "ruilisi",
        "url": "https://github.com/ruilisi/fortune-sheet"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "FortuneSheet",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-22",
      "updated": "2026-08-22",
      "categories": [
        "Productivity"
      ],
      "tags": [
        "spreadsheet",
        "excel",
        "sheets",
        "formulas",
        "offline",
        "workbook"
      ],
      "accent": [
        1,
        136,
        251
      ],
      "cover": "/apps/fortune-sheet/cover.jpg",
      "bytes": 1268204,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-29"
      },
      "sha256": "ad66e19e399db824a91565a4745f41c5f4e802f9b9c2014e3f011692c32b117b"
    },
    {
      "slug": "fps-simple",
      "appId": "fps-simple",
      "name": "FPS Simple",
      "shortName": "FPS",
      "version": "0.9.1",
      "tagline": "A sunlit market street, a rifle, and whoever you send the link to.",
      "author": {
        "name": "mshumer",
        "url": "https://github.com/mshumer/Claude-of-Duty"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "Claude of Duty",
        "blessed": false
      },
      "minBuild": 1314,
      "offline": true,
      "releaseDate": "2026-08-15",
      "updated": "2026-08-15",
      "categories": [
        "Games"
      ],
      "tags": [
        "fps",
        "shooter",
        "3d",
        "multiplayer",
        "deathmatch",
        "offline"
      ],
      "accent": [
        214,
        172,
        78
      ],
      "cover": "/apps/fps-simple/cover.jpg",
      "bytes": 1112191,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-27"
      },
      "sha256": "819c77189666245607ff113baee347409046ad644236c91468ec53114d007f20"
    },
    {
      "slug": "gltf-viewer",
      "appId": "gltf-viewer",
      "name": "glTF Viewer",
      "shortName": "glTF",
      "version": "1.1.0",
      "tagline": "Open a 3D model. Orbit it, inspect the scene.",
      "author": {
        "name": "Don McCurdy",
        "url": "https://github.com/donmccurdy/three-gltf-viewer"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "glTF Viewer",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-24",
      "updated": "2026-08-24",
      "categories": [
        "Utilities",
        "Developer"
      ],
      "tags": [
        "3d",
        "gltf",
        "glb",
        "viewer",
        "inspect",
        "offline"
      ],
      "accent": [
        88,
        166,
        255
      ],
      "cover": "/apps/gltf-viewer/cover.jpg",
      "bytes": 504805,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-27"
      },
      "sha256": "b195de0df6f11dcbf070501d1ec20588a52ca8e5fc0fa99589577a8e2decdb9a"
    },
    {
      "slug": "gomoku",
      "appId": "gomoku",
      "name": "Gomoku",
      "shortName": "Gomoku",
      "version": "1.0",
      "tagline": "Five in a row. Play the computer, or a friend from one invite.",
      "author": {
        "name": "yyjhao",
        "url": "https://github.com/yyjhao/HTML5-Gomoku"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "HTML5 Gomoku",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-23",
      "updated": "2026-08-23",
      "categories": [
        "Games"
      ],
      "tags": [
        "gomoku",
        "five-in-a-row",
        "board",
        "multiplayer",
        "offline"
      ],
      "accent": [
        196,
        140,
        70
      ],
      "cover": "/apps/gomoku/cover.jpg",
      "bytes": 264218,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-29"
      },
      "sha256": "98b313b50267250b4ef8671e6f6d62bc570912d1935a0a4d6c7d27631093c831"
    },
    {
      "slug": "grid-garden",
      "appId": "grid-garden",
      "name": "Grid Garden",
      "shortName": "Garden",
      "version": "1.0.0",
      "tagline": "Write CSS grid, grow carrots — offline, and one invite shares the garden.",
      "author": {
        "name": "Thomas Park",
        "url": "https://github.com/thomaspark/gridgarden"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "Grid Garden",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-30",
      "updated": "2026-08-30",
      "categories": [
        "Games",
        "Learning"
      ],
      "tags": [
        "css",
        "grid",
        "garden",
        "carrots",
        "puzzle",
        "multiplayer",
        "offline"
      ],
      "accent": [
        93,
        164,
        73
      ],
      "cover": "/apps/grid-garden/cover.jpg",
      "bytes": 422980,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-31"
      },
      "sha256": "e5bc22973f902a459cced7660fc87c3c62598a6763ce63234ae648f6da92f27d"
    },
    {
      "slug": "guitar-bro",
      "appId": "guitar-bro",
      "name": "Guitar Bro",
      "shortName": "Guitar",
      "version": "1.0",
      "tagline": "Notes fall down the neck. Play them on your guitar, or tap the fret.",
      "author": {
        "name": "makaroni4",
        "url": "https://github.com/makaroni4/guitar_bro"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "Guitar Bro",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-23",
      "updated": "2026-08-23",
      "categories": [
        "Learning",
        "Games"
      ],
      "tags": [
        "guitar",
        "fretboard",
        "notes",
        "trainer",
        "multiplayer",
        "offline"
      ],
      "accent": [
        124,
        105,
        244
      ],
      "cover": "/apps/guitar-bro/cover.jpg",
      "bytes": 173532,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-25"
      },
      "sha256": "a3a46cef4bf607e104d1b19408a5aed5f3f2cf2230d26f95a0ef080f460f4b0c"
    },
    {
      "slug": "hangman",
      "appId": "hangman",
      "name": "Hangman",
      "shortName": "Hangman",
      "version": "1.0.0",
      "tagline": "Hangman for two: race a friend, or share the rope on one phone.",
      "author": {
        "name": "simonjsuh",
        "url": "https://github.com/simonjsuh/Vanilla-Javascript-Hangman-Game"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "Vanilla Javascript Hangman Game",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-23",
      "updated": "2026-08-23",
      "categories": [
        "Games"
      ],
      "tags": [
        "hangman",
        "word",
        "gallows",
        "multiplayer",
        "offline"
      ],
      "accent": [
        156,
        162,
        176
      ],
      "cover": "/apps/hangman/cover.jpg",
      "bytes": 172123,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-25"
      },
      "sha256": "c02a8b748804fb0988855a614518f2f0d98cbfaed0e0ce9977b611e2855fcb39"
    },
    {
      "slug": "hanzi-writer",
      "appId": "hanzi-writer",
      "name": "Hanzi Writer",
      "shortName": "Hanzi",
      "version": "1.0.0",
      "tagline": "Trace the stroke order. Close it — your progress is still in the file. One invite, the same character.",
      "author": {
        "name": "David Chanin",
        "url": "https://github.com/chanind/hanzi-writer"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "Hanzi Writer",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-30",
      "updated": "2026-08-30",
      "categories": [
        "Learning"
      ],
      "tags": [
        "chinese",
        "hanzi",
        "stroke-order",
        "quiz",
        "offline",
        "multiplayer",
        "hsk"
      ],
      "accent": [
        196,
        74,
        58
      ],
      "cover": "/apps/hanzi-writer/cover.jpg",
      "bytes": 1014332,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-31"
      },
      "sha256": "a4f513adf8e0ef0ab21201ec0d5ca26f33e271ed9d8e29e3a8cb3e2f33f7c9ca"
    },
    {
      "slug": "hat-sh",
      "appId": "hat-sh",
      "name": "hat.sh",
      "shortName": "hat.sh",
      "version": "1.0",
      "tagline": "Encrypt and decrypt files in this tab. Nothing leaves this device.",
      "author": {
        "name": "sh-dv",
        "url": "https://github.com/sh-dv/hat.sh"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "hat.sh",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-22",
      "updated": "2026-08-22",
      "categories": [
        "Utilities"
      ],
      "tags": [
        "encryption",
        "decryption",
        "privacy",
        "offline",
        "password"
      ],
      "accent": [
        107,
        140,
        255
      ],
      "cover": "/apps/hat-sh/cover.jpg",
      "bytes": 661317,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-29"
      },
      "sha256": "8625338d2f5327f2475ea4b19d619a95a0623a3c87361b52cd580c981acde03d"
    },
    {
      "slug": "hex-chess",
      "appId": "hex-chess",
      "name": "Hex Chess",
      "shortName": "HexChess",
      "version": "1.0",
      "tagline": "Chess on hexagons, with three bishops. Play the computer or a friend.",
      "author": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-23",
      "updated": "2026-08-23",
      "categories": [
        "Games"
      ],
      "tags": [
        "chess",
        "hex",
        "board",
        "multiplayer",
        "offline"
      ],
      "accent": [
        201,
        162,
        39
      ],
      "cover": "/apps/hex-chess/cover.jpg",
      "bytes": 204421,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-25"
      },
      "sha256": "d219ec4e59cb796b26d6bfa3faa5281faca044e6fec775a90a7fdc83028f42d3"
    },
    {
      "slug": "hexahedral",
      "appId": "hexahedral",
      "name": "Hexahedral",
      "shortName": "Hexahedral",
      "version": "1.1",
      "tagline": "Drag the green cube through thirty puzzle levels.",
      "author": {
        "name": "mminer",
        "url": "https://github.com/mminer/hexahedral"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "Hexahedral",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-24",
      "updated": "2026-08-24",
      "categories": [
        "Games"
      ],
      "tags": [
        "puzzle",
        "hex",
        "jam",
        "blocks",
        "offline"
      ],
      "accent": [
        211,
        45,
        143
      ],
      "cover": "/apps/hexahedral/cover.jpg",
      "bytes": 192496,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-25"
      },
      "sha256": "0bb81efc53910ceacc51bb140c60779dfc2ad51c199e2de3c31bba41020c9b34"
    },
    {
      "slug": "hexgl",
      "appId": "hexgl",
      "name": "HexGL",
      "shortName": "HexGL",
      "version": "1.0.0",
      "tagline": "The original futuristic racer, offline — your best lap lives in the GIF, and Invite is a ghost race.",
      "author": {
        "name": "Thibaut Despoulain",
        "url": "https://github.com/BKcore/HexGL"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "HexGL",
        "blessed": false
      },
      "minBuild": 1314,
      "offline": true,
      "releaseDate": "2026-08-30",
      "updated": "2026-08-30",
      "categories": [
        "Games"
      ],
      "tags": [
        "racing",
        "webgl",
        "futuristic",
        "offline",
        "multiplayer",
        "touch"
      ],
      "accent": [
        65,
        144,
        187
      ],
      "cover": "/apps/hexgl/cover.jpg",
      "bytes": 4191260,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-31"
      },
      "sha256": "32ac5443f6cd59947f322b0c2260bfe2c6b081aabd86bd06a96b92546a7eecd8"
    },
    {
      "slug": "hextris",
      "appId": "hextris",
      "name": "Hextris",
      "shortName": "Hextris",
      "version": "1.0.0",
      "tagline": "Race a friend from the same falling hexes — your high score lives in the GIF.",
      "author": {
        "name": "Logan Engstrom, Garrett Finucane, Noah Moroze, Michael Yang",
        "url": "https://github.com/Hextris/hextris"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "Hextris",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-30",
      "updated": "2026-08-30",
      "categories": [
        "Games"
      ],
      "tags": [
        "hextris",
        "hexagon",
        "puzzle",
        "arcade",
        "multiplayer",
        "offline"
      ],
      "accent": [
        231,
        76,
        60
      ],
      "cover": "/apps/hextris/cover.jpg",
      "bytes": 336292,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-31"
      },
      "sha256": "579280a3438c4a8e3387c4123c4fdb8883563cc7566938e0d221b0c2eb46b03e"
    },
    {
      "slug": "hydra",
      "appId": "hydra",
      "name": "Hydra",
      "shortName": "Hydra",
      "version": "1.0.0",
      "tagline": "The patch lives in the GIF. Invite jams the same synth — no account, no server.",
      "author": {
        "name": "Olivia Jack",
        "url": "https://github.com/ojack"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "Hydra",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-30",
      "updated": "2026-08-30",
      "categories": [
        "Creativity"
      ],
      "tags": [
        "hydra",
        "synth",
        "livecoding",
        "video",
        "visuals",
        "multiplayer",
        "offline"
      ],
      "accent": [
        196,
        61,
        122
      ],
      "cover": "/apps/hydra/cover.jpg",
      "bytes": 229737,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-09-01"
      },
      "sha256": "15558daef176207367d7bafd428307619801a27cdae9084f855003a125a0a330"
    },
    {
      "slug": "invaderz",
      "appId": "invaderz",
      "name": "InvaderZ",
      "shortName": "InvaderZ",
      "version": "1.0.0",
      "tagline": "Space Invaders where every friend who joins gets another cannon.",
      "author": {
        "name": "victorqribeiro",
        "url": "https://github.com/victorqribeiro/invaderz"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "InvaderZ",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-23",
      "updated": "2026-08-23",
      "categories": [
        "Games"
      ],
      "tags": [
        "invaders",
        "arcade",
        "space",
        "multiplayer",
        "offline"
      ],
      "accent": [
        0,
        140,
        186
      ],
      "cover": "/apps/invaderz/cover.jpg",
      "bytes": 196458,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-25"
      },
      "sha256": "8ef6f9e8d5fbe603be804f409ce48fea1796c5a9238b312e7c72ae19b6b6b133"
    },
    {
      "slug": "io-808",
      "appId": "io-808",
      "name": "iO-808",
      "shortName": "808",
      "version": "1.0.0",
      "tagline": "A silver 808 on the table. Tap the steps. Share a beat.",
      "author": {
        "name": "vincentriemer",
        "url": "https://github.com/vincentriemer/io-808"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "io-808",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-23",
      "updated": "2026-08-23",
      "categories": [
        "Creativity",
        "Media"
      ],
      "tags": [
        "drum",
        "808",
        "rhythm",
        "sequencer",
        "multiplayer",
        "offline"
      ],
      "accent": [
        255,
        90,
        0
      ],
      "cover": "/apps/io-808/cover.jpg",
      "bytes": 203553,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-24"
      },
      "sha256": "99012b49b21a6a89e5002084c24ac0207f65b63f891a30ff7b6a1adfa5d958ff"
    },
    {
      "slug": "io-blobs",
      "appId": "io-blobs",
      "name": "IO Blobs",
      "shortName": "Blobs",
      "version": "1.1",
      "tagline": "An agar-style arena. Everyone who opens your link swims in it with you.",
      "author": {
        "name": "vzhou842",
        "url": "https://github.com/vzhou842/example-.io-game"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "example-.io-game",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-23",
      "updated": "2026-08-23",
      "categories": [
        "Games"
      ],
      "tags": [
        "io",
        "arena",
        "blobs",
        "multiplayer",
        "eat"
      ],
      "accent": [
        48,
        196,
        168
      ],
      "cover": "/apps/io-blobs/cover.jpg",
      "bytes": 202749,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-25"
      },
      "sha256": "9dc9a73270d520c3d6b4464106a3d206b1f6beba3f5ffa0094a4fe0ad53dae83"
    },
    {
      "slug": "isocity",
      "appId": "isocity",
      "name": "IsoCity",
      "shortName": "IsoCity",
      "version": "1.1",
      "tagline": "Build an isometric city, and invite a friend to build on the same map.",
      "author": {
        "name": "victorqribeiro",
        "url": "https://github.com/victorqribeiro/isocity"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "IsoCity",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-23",
      "updated": "2026-08-23",
      "categories": [
        "Games"
      ],
      "tags": [
        "city",
        "isometric",
        "builder",
        "tiles",
        "multiplayer",
        "offline"
      ],
      "accent": [
        176,
        83,
        85
      ],
      "cover": "/apps/isocity/cover.jpg",
      "bytes": 649111,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-27"
      },
      "sha256": "928061536a93ce84fb2f3bd1214b9b9a71caa1499a7978b812e4bde203e8ec97"
    },
    {
      "slug": "jpg-glitch",
      "appId": "jpg-glitch",
      "name": "JPG Glitch",
      "shortName": "Glitch",
      "version": "1.1",
      "tagline": "Glitch a photo on your device and save the result.",
      "author": {
        "name": "snorpey",
        "url": "https://github.com/snorpey/jpg-glitch"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "jpg-glitch",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-24",
      "updated": "2026-08-24",
      "categories": [
        "Creativity"
      ],
      "tags": [
        "glitch",
        "jpeg",
        "photo",
        "databend",
        "art",
        "offline"
      ],
      "accent": [
        255,
        70,
        160
      ],
      "cover": "/apps/jpg-glitch/cover.jpg",
      "bytes": 190593,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-26"
      },
      "sha256": "cbf9ae52a384d5aa73a575ee19fcb668ef13425373b59700808453174291d4e0"
    },
    {
      "slug": "js-gauntlet",
      "appId": "js-gauntlet",
      "name": "Dungeon Party",
      "shortName": "Dungeon",
      "version": "1.0.1",
      "tagline": "Gauntlet: four classes, one dungeon, friends join from one invite.",
      "author": {
        "name": "Jake Gordon",
        "url": "https://github.com/jakesgordon/javascript-gauntlet"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "HTML5 Gauntlet",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-24",
      "updated": "2026-08-24",
      "categories": [
        "Games"
      ],
      "tags": [
        "dungeon",
        "arcade",
        "co-op",
        "offline"
      ],
      "accent": [
        249,
        5,
        3
      ],
      "cover": "/apps/js-gauntlet/cover.jpg",
      "bytes": 1144624,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-25"
      },
      "sha256": "96b438281967ce71cb0507ffbff63791d2b56e94a5baa24cf5f83c3bc66f0468"
    },
    {
      "slug": "jsnes",
      "appId": "jsnes",
      "name": "jsnes",
      "shortName": "jsnes",
      "version": "1.0.0",
      "tagline": "The ROM and the save live in this file. Invite is player two.",
      "author": {
        "name": "Ben Firshman",
        "url": "https://github.com/bfirsh/jsnes"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "JSNES",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-30",
      "updated": "2026-08-30",
      "categories": [
        "Games"
      ],
      "tags": [
        "nes",
        "emulator",
        "retro",
        "offline",
        "multiplayer",
        "homebrew"
      ],
      "accent": [
        228,
        56,
        56
      ],
      "cover": "/apps/jsnes/cover.jpg",
      "bytes": 315475,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-31"
      },
      "sha256": "bf85c331f08cb958b8a754f6d3e4665d0f9e18f3484c7ad9b70a5f3a757f15de"
    },
    {
      "slug": "json-crack",
      "appId": "json-crack",
      "name": "JSON Crack",
      "shortName": "JSON",
      "version": "1.0",
      "tagline": "Paste JSON, see it as a graph. Your data stays on your device.",
      "author": {
        "name": "Aykut Saraç",
        "url": "https://github.com/AykutSarac/jsoncrack.com"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "JSON Crack",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-24",
      "updated": "2026-08-24",
      "categories": [
        "Developer",
        "Utilities"
      ],
      "tags": [
        "json",
        "graph",
        "tree",
        "viewer",
        "editor",
        "offline"
      ],
      "accent": [
        99,
        102,
        241
      ],
      "cover": "/apps/json-crack/cover.jpg",
      "bytes": 198832,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-27"
      },
      "sha256": "a3efadc23f9fb02047e8bc0e798b9b89b1858041a94e2a233dbdbf7fe0bbd183"
    },
    {
      "slug": "json-diff",
      "appId": "json-diff",
      "name": "JSON Diff",
      "shortName": "Diff",
      "version": "1.1",
      "tagline": "Paste two JSON documents, see exactly what changed.",
      "author": {
        "name": "benjamine",
        "url": "https://github.com/benjamine/jsondiffpatch"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "jsondiffpatch",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-24",
      "updated": "2026-08-24",
      "categories": [
        "Developer"
      ],
      "tags": [
        "diff",
        "compare",
        "json",
        "offline",
        "developer"
      ],
      "accent": [
        80,
        170,
        90
      ],
      "cover": "/apps/json-diff/cover.jpg",
      "bytes": 245438,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-29"
      },
      "sha256": "468e43d94621f7d6886519ad27896c767d85586a39c8cac609e79e8c42b6cd0a"
    },
    {
      "slug": "json-editor",
      "appId": "json-editor",
      "name": "JSON Editor",
      "shortName": "JSON",
      "version": "1.1",
      "tagline": "Edit JSON as a tree or as code, side by side.",
      "author": {
        "name": "Jos de Jong",
        "url": "https://github.com/josdejong/jsoneditor"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "JSONEditor",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-24",
      "updated": "2026-08-24",
      "categories": [
        "Developer",
        "Utilities"
      ],
      "tags": [
        "editor",
        "tree",
        "code",
        "document",
        "offline"
      ],
      "accent": [
        255,
        165,
        0
      ],
      "cover": "/apps/json-editor/cover.jpg",
      "bytes": 802574,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-27"
      },
      "sha256": "4bf7d7b86346dadf842a1093283000cff5f47340c80b8fb6fcf166ee74e272a6"
    },
    {
      "slug": "jspaint",
      "appId": "jspaint",
      "name": "JS Paint",
      "shortName": "Paint",
      "version": "1.1.0",
      "tagline": "Classic MS Paint, faithfully remade.",
      "author": {
        "name": "Isaiah Odhner",
        "url": "https://github.com/1j01/jspaint"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "JS Paint",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-22",
      "updated": "2026-08-22",
      "categories": [
        "Creativity"
      ],
      "tags": [
        "paint",
        "drawing",
        "mspaint",
        "pixel",
        "canvas",
        "offline",
        "bitmap"
      ],
      "accent": [
        0,
        128,
        128
      ],
      "cover": "/apps/jspaint/cover.jpg",
      "bytes": 1211438,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-25"
      },
      "sha256": "660fc366fb254041e6fb1add14603f7192e40be7426faa8ab7da13c6d1fc741f"
    },
    {
      "slug": "jungle",
      "appId": "jungle",
      "name": "Jungle",
      "shortName": "Jungle",
      "version": "1.0",
      "tagline": "Jungle chess. Play the computer, or a friend from one link.",
      "author": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-23",
      "updated": "2026-08-23",
      "categories": [
        "Games"
      ],
      "tags": [
        "jungle",
        "board",
        "animals",
        "multiplayer",
        "offline"
      ],
      "accent": [
        46,
        140,
        70
      ],
      "cover": "/apps/jungle/cover.jpg",
      "bytes": 201405,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-25"
      },
      "sha256": "e51f13488146bb2d924d7468566586a496e0208706666fdc1c6dc90800e4c56a"
    },
    {
      "slug": "jupyterlite",
      "appId": "jupyterlite",
      "name": "JupyterLite",
      "shortName": "Jupyter",
      "version": "1.0.0",
      "tagline": "A Python notebook that lives in this file. Invite shares the cells.",
      "author": {
        "name": "JupyterLite Contributors",
        "url": "https://github.com/jupyterlite/jupyterlite"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "JupyterLite",
        "blessed": false
      },
      "minBuild": 1381,
      "offline": true,
      "releaseDate": "2026-08-30",
      "updated": "2026-08-30",
      "categories": [
        "Developer",
        "Learning"
      ],
      "tags": [
        "jupyter",
        "python",
        "notebook",
        "repl",
        "offline"
      ],
      "accent": [
        243,
        118,
        38
      ],
      "cover": "/apps/jupyterlite/cover.jpg",
      "bytes": 2996025,
      "download": 0,
      "optionalCount": 1,
      "optionalDownload": 10105545,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-09-02"
      },
      "sha256": "a5ede44aa9a7dec466a62e46ab3dd1ec28d8af2312ae904a70c94385f9325ec6"
    },
    {
      "slug": "kana-quiz",
      "appId": "kana-quiz",
      "name": "Kana Quiz",
      "shortName": "Kana",
      "version": "1.0.0",
      "tagline": "Learn hiragana and katakana. Quiz yourself, or race a friend.",
      "author": {
        "name": "anzzstuff",
        "url": "https://github.com/anzzstuff/kanaquiz"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "Kana Quiz",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-23",
      "updated": "2026-08-23",
      "categories": [
        "Learning"
      ],
      "tags": [
        "japanese",
        "kana",
        "hiragana",
        "katakana",
        "quiz",
        "offline",
        "multiplayer"
      ],
      "accent": [
        232,
        72,
        88
      ],
      "cover": "/apps/kana-quiz/cover.jpg",
      "bytes": 202414,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-25"
      },
      "sha256": "760b1dbc55a6218e6b61ed47484fe6fc20d704914479aed98c137326b46420ff"
    },
    {
      "slug": "keeweb",
      "appId": "keeweb",
      "name": "KeeWeb",
      "shortName": "KeeWeb",
      "version": "1.0",
      "tagline": "A KeePass vault on this device. Copy a password; it does not fill other sites.",
      "author": {
        "name": "Antelle",
        "url": "https://github.com/keeweb/keeweb"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "KeeWeb",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-22",
      "updated": "2026-08-22",
      "categories": [
        "Utilities"
      ],
      "tags": [
        "password",
        "keepass",
        "kdbx",
        "vault",
        "offline",
        "totp",
        "keeweb"
      ],
      "accent": [
        107,
        189,
        88
      ],
      "cover": "/apps/keeweb/cover.jpg",
      "bytes": 264956,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-29"
      },
      "sha256": "bb1fc77fcefe740b5fbe45123f7c09b05cfe0cf16d5af9688a5759759018a0b3"
    },
    {
      "slug": "koil",
      "appId": "koil",
      "name": "Koil",
      "shortName": "Koil",
      "version": "1.0.0",
      "tagline": "A mint-green corridor, a handful of keys, and whoever walks in with you.",
      "author": {
        "name": "tsoding",
        "url": "https://github.com/tsoding/koil"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "Koil",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-23",
      "updated": "2026-08-23",
      "categories": [
        "Games"
      ],
      "tags": [
        "raycasting",
        "fps",
        "multiplayer",
        "retro",
        "offline"
      ],
      "accent": [
        140,
        196,
        176
      ],
      "cover": "/apps/koil/cover.jpg",
      "bytes": 274833,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-25"
      },
      "sha256": "3ab5133931ce00beff62b03ed8d4f12d994610aac7cab504b74c86f65938e93e"
    },
    {
      "slug": "learn-git-branching",
      "appId": "learn-git-branching",
      "name": "Learn Git Branching",
      "shortName": "Git",
      "version": "1.0.0",
      "tagline": "The git trainer that lives in a GIF — close it, come back, still on the same commit.",
      "author": {
        "name": "pcottle",
        "url": "https://github.com/pcottle/learnGitBranching"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "Learn Git Branching",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-30",
      "updated": "2026-08-30",
      "categories": [
        "Learning",
        "Developer"
      ],
      "tags": [
        "git",
        "branching",
        "tutorial",
        "offline",
        "multiplayer"
      ],
      "accent": [
        61,
        159,
        216
      ],
      "cover": "/apps/learn-git-branching/cover.jpg",
      "bytes": 207646,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-31"
      },
      "sha256": "e0b85ceb730c93b3dd4e5a7b5d59da576a9ab55be8298bc142bac7f167f566e0"
    },
    {
      "slug": "longwave",
      "appId": "longwave",
      "name": "Longwave",
      "shortName": "Longwave",
      "version": "1.1",
      "tagline": "One of you is the psychic. Read their clue, find the mark on the dial.",
      "author": {
        "name": "cynicaloptimist",
        "url": "https://github.com/cynicaloptimist/longwave"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "Longwave",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-23",
      "updated": "2026-08-23",
      "categories": [
        "Games"
      ],
      "tags": [
        "spectrum",
        "party",
        "clue",
        "needle",
        "multiplayer"
      ],
      "accent": [
        118,
        86,
        214
      ],
      "cover": "/apps/longwave/cover.jpg",
      "bytes": 202949,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-26"
      },
      "sha256": "0d900fe9e1cff7569f6ecba9ba323c93261d54cbdec700fb38269f3e1e6ab20d"
    },
    {
      "slug": "lost-in-cyberspace",
      "appId": "lost-in-cyberspace",
      "name": "Lost in Cyberspace",
      "shortName": "Cyberspace",
      "version": "1.1",
      "tagline": "One of you is lost in the network; the other reads the codes. Talk fast.",
      "author": {
        "name": "Bartek Szopka & Zofia Korcz",
        "url": "https://github.com/bartaz/lost-in-cyberspace"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "Lost in CYBERSPACE",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-24",
      "updated": "2026-08-24",
      "categories": [
        "Games"
      ],
      "tags": [
        "coop",
        "maze",
        "terminal",
        "js13k",
        "multiplayer",
        "offline"
      ],
      "accent": [
        17,
        255,
        204
      ],
      "cover": "/apps/lost-in-cyberspace/cover.jpg",
      "bytes": 209702,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-25"
      },
      "sha256": "f5b5abf928588e43b8dda5425a99ac308e1ca5e3bf3355f166ec8f03267fa03c"
    },
    {
      "slug": "lrc-maker",
      "appId": "lrc-maker",
      "name": "LRC Maker",
      "shortName": "LRC",
      "version": "1.1.0",
      "tagline": "Tap lyric timings along to a song, export the LRC file.",
      "author": {
        "name": "magic-akari",
        "url": "https://github.com/magic-akari/lrc-maker"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "lrc-maker",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-24",
      "updated": "2026-08-24",
      "categories": [
        "Creativity"
      ],
      "tags": [
        "lyrics",
        "lrc",
        "audio",
        "karaoke",
        "timing",
        "offline"
      ],
      "accent": [
        57,
        208,
        197
      ],
      "cover": "/apps/lrc-maker/cover.jpg",
      "bytes": 193015,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-26"
      },
      "sha256": "450260f4ff4be5351fff01c1345b149d50c96f6ec1fbfa899c6519b14f99648d"
    },
    {
      "slug": "ludo",
      "appId": "ludo",
      "name": "Ludo",
      "shortName": "Ludo",
      "version": "1.1",
      "tagline": "Ludo. Four seats fill as friends open your invite.",
      "author": {
        "name": "chukwumaijem",
        "url": "https://github.com/chukwumaijem/ludo-game"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "Ludo",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-24",
      "updated": "2026-08-24",
      "categories": [
        "Games"
      ],
      "tags": [
        "ludo",
        "board",
        "multiplayer",
        "offline"
      ],
      "accent": [
        42,
        138,
        74
      ],
      "cover": "/apps/ludo/cover.jpg",
      "bytes": 192040,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-25"
      },
      "sha256": "511c9bb7271b841b132a1bb7e160b032c164209e444ae6c9731143e97b905e5b"
    },
    {
      "slug": "math-race",
      "appId": "math-race",
      "name": "Math Race",
      "shortName": "Math Race",
      "version": "1.0.0",
      "tagline": "Same equation on every phone — first correct answer scores.",
      "author": {
        "name": "iloire",
        "url": "https://github.com/iloire/math-race"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "math-race",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-23",
      "updated": "2026-08-23",
      "categories": [
        "Games",
        "Learning"
      ],
      "tags": [
        "math",
        "race",
        "multiplayer",
        "offline",
        "quiz"
      ],
      "accent": [
        125,
        255,
        154
      ],
      "cover": "/apps/math-race/cover.jpg",
      "bytes": 197987,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-27"
      },
      "sha256": "a0e4e4f639788d69dd481ee686fa7c942f9b451d8b6e26e42fbb5654ac02c22f"
    },
    {
      "slug": "matter-sandbox",
      "appId": "matter-sandbox",
      "name": "Matter Sandbox",
      "shortName": "Matter",
      "version": "1.0.0",
      "tagline": "A 2D physics toy box. The pile lives in the GIF; one invite is the same room.",
      "author": {
        "name": "Liam Brummitt",
        "url": "https://github.com/liabru/matter-js"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "matter.js",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-30",
      "updated": "2026-08-30",
      "categories": [
        "Creativity",
        "Games"
      ],
      "tags": [
        "physics",
        "sandbox",
        "ragdoll",
        "slingshot",
        "matter",
        "toy",
        "multiplayer",
        "offline"
      ],
      "accent": [
        241,
        150,
        72
      ],
      "cover": "/apps/matter-sandbox/cover.jpg",
      "bytes": 269700,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-31"
      },
      "sha256": "9d9c7adcc435148a6216dca430ea6861c2d9769774ccb5a5d578c47c5274907b"
    },
    {
      "slug": "memory",
      "appId": "memory",
      "name": "Memory",
      "shortName": "Memory",
      "version": "1.1.0",
      "tagline": "Watch the pads light up, tap them back. Each round adds one more.",
      "author": {
        "name": "Sepand Haghighi",
        "url": "https://github.com/sepandhaghighi/mnimi"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "Mnimi",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-24",
      "updated": "2026-08-24",
      "categories": [
        "Games"
      ],
      "tags": [
        "memory",
        "simon",
        "puzzle",
        "offline"
      ],
      "accent": [
        80,
        180,
        220
      ],
      "cover": "/apps/memory/cover.jpg",
      "bytes": 128530,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-25"
      },
      "sha256": "34ab2d4f013be353d7e11c7ea04a259dfc2536ab44955f1e46ac8d4dadbecd23"
    },
    {
      "slug": "mermaid",
      "appId": "mermaid",
      "name": "Mermaid",
      "shortName": "Mermaid",
      "version": "1.0.0",
      "tagline": "Type a Mermaid diagram, see it render live.",
      "author": {
        "name": "mermaid-js",
        "url": "https://github.com/mermaid-js/mermaid"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "mermaid",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-24",
      "updated": "2026-08-24",
      "categories": [
        "Productivity"
      ],
      "tags": [
        "diagram",
        "flowchart",
        "sequence",
        "markdown",
        "offline"
      ],
      "accent": [
        255,
        91,
        135
      ],
      "cover": "/apps/mermaid/cover.jpg",
      "bytes": 1691665,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-27"
      },
      "sha256": "c49d9e134c1248d45be146a2e9a3a89edb9266da45599191cc7e06fa501dbb14"
    },
    {
      "slug": "metronome",
      "appId": "metronome",
      "name": "Metronome",
      "shortName": "Metro",
      "version": "1.1",
      "tagline": "A metronome. Set the tempo, it keeps the click.",
      "author": {
        "name": "cwilso",
        "url": "https://github.com/cwilso/metronome"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "metronome",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-24",
      "updated": "2026-08-24",
      "categories": [
        "Creativity",
        "Media"
      ],
      "tags": [
        "metronome",
        "tempo",
        "click",
        "audio",
        "offline"
      ],
      "accent": [
        232,
        80,
        64
      ],
      "cover": "/apps/metronome/cover.jpg",
      "bytes": 195488,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-25"
      },
      "sha256": "7e04a30dc63d1cfdf38143d0666882ee34767458759b43cc7778a0a089187678"
    },
    {
      "slug": "milkdown",
      "appId": "milkdown",
      "name": "Milkdown",
      "shortName": "Milkdown",
      "version": "1.0.0",
      "tagline": "WYSIWYG markdown that lives in this file — Invite is the same document.",
      "author": {
        "name": "Mirone",
        "url": "https://github.com/Milkdown/milkdown"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "Milkdown",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-30",
      "updated": "2026-08-30",
      "categories": [
        "Productivity",
        "Utilities"
      ],
      "tags": [
        "markdown",
        "editor",
        "wysiwyg",
        "notes",
        "typora",
        "offline",
        "multiplayer"
      ],
      "accent": [
        136,
        192,
        208
      ],
      "cover": "/apps/milkdown/cover.jpg",
      "bytes": 351201,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-31"
      },
      "sha256": "e3ae8ba759f598de04a561e3de1e244f555878c97dcb630b11fb2dd3dc61e8a3"
    },
    {
      "slug": "mini-photo-editor",
      "appId": "mini-photo-editor",
      "name": "Mini Photo Editor",
      "shortName": "Photo",
      "version": "1.1.0",
      "tagline": "Crop, rotate and filter a photo — right on your device.",
      "author": {
        "name": "xdadda",
        "url": "https://github.com/xdadda/mini-photo-editor"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "mini-photo-editor",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-24",
      "updated": "2026-08-24",
      "categories": [
        "Creativity"
      ],
      "tags": [
        "photo",
        "crop",
        "rotate",
        "filter",
        "edit",
        "offline"
      ],
      "accent": [
        196,
        92,
        38
      ],
      "cover": "/apps/mini-photo-editor/cover.jpg",
      "bytes": 194860,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-25"
      },
      "sha256": "4ead60d891945a49f48ae55465caea3391618848a26e248dc304a95817db4ac8"
    },
    {
      "slug": "monaco-code",
      "appId": "monaco-code",
      "name": "Monaco Code",
      "shortName": "Monaco",
      "version": "1.0.0",
      "tagline": "VS Code’s editor, in a file. One invite is a pair session.",
      "author": {
        "name": "Microsoft",
        "url": "https://github.com/microsoft/monaco-editor"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "Monaco Editor",
        "blessed": false
      },
      "minBuild": 1178,
      "offline": true,
      "releaseDate": "2026-08-30",
      "updated": "2026-08-30",
      "categories": [
        "Developer",
        "Utilities"
      ],
      "tags": [
        "monaco",
        "vscode",
        "editor",
        "typescript",
        "javascript",
        "json",
        "markdown",
        "offline",
        "multiplayer"
      ],
      "accent": [
        0,
        122,
        204
      ],
      "cover": "/apps/monaco-code/cover.jpg",
      "bytes": 4321220,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-31"
      },
      "sha256": "f36197bce20eed064994d0f8aa1c179068cb9db0831915e4efabdb6b451a1116"
    },
    {
      "slug": "monkeytype",
      "appId": "monkeytype",
      "name": "Monkeytype",
      "shortName": "Monkeytype",
      "version": "1.0.0",
      "tagline": "The typing test, offline — personal bests live in the file, one invite is a live race.",
      "author": {
        "name": "Miodec",
        "url": "https://github.com/monkeytypegame/monkeytype"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "Monkeytype",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-30",
      "updated": "2026-08-30",
      "categories": [
        "Learning"
      ],
      "tags": [
        "typing",
        "wpm",
        "keyboard",
        "offline",
        "multiplayer",
        "race"
      ],
      "accent": [
        226,
        183,
        20
      ],
      "cover": "/apps/monkeytype/cover.jpg",
      "bytes": 238302,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-31"
      },
      "sha256": "70bb28857ff0fb07dd5e1ec60a62d290d25b2d6f3c0e8641dbf51ae937906780"
    },
    {
      "slug": "my-mind",
      "appId": "my-mind",
      "name": "My Mind",
      "shortName": "Mind",
      "version": "1.1",
      "tagline": "Mind maps at typing speed: Tab for a child, Enter for a sibling.",
      "author": {
        "name": "Ondřej Žára",
        "url": "https://github.com/ondras/my-mind"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "My Mind",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-24",
      "updated": "2026-08-24",
      "categories": [
        "Productivity"
      ],
      "tags": [
        "mindmap",
        "outline",
        "notes",
        "ideas",
        "offline"
      ],
      "accent": [
        68,
        136,
        221
      ],
      "cover": "/apps/my-mind/cover.jpg",
      "bytes": 394625,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-29"
      },
      "sha256": "5335e283f1d263ec60581e177fc3da07c8cbd0cacbcd03df5e2f36aba7edac3f"
    },
    {
      "slug": "mykonos",
      "appId": "mykonos",
      "name": "Mykonos",
      "shortName": "Mykonos",
      "version": "1.0.0",
      "tagline": "White houses, a blue dome, and a little island to walk.",
      "author": {
        "name": "boona13",
        "url": "https://github.com/boona13"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "Mykonos Island Voxels",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-23",
      "updated": "2026-08-23",
      "categories": [
        "Games"
      ],
      "tags": [
        "island",
        "walk",
        "mykonos",
        "mediterranean",
        "multiplayer",
        "offline"
      ],
      "accent": [
        27,
        91,
        168
      ],
      "cover": "/apps/mykonos/cover.jpg",
      "bytes": 198650,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-25"
      },
      "sha256": "6fb6eef2b2120fa2fe2b333e43bb0595b2074164cfc65ae293b0ac2c019edee6"
    },
    {
      "slug": "nonogram",
      "appId": "nonogram",
      "name": "Nonogram",
      "shortName": "Picross",
      "version": "1.0.0",
      "tagline": "Picross. Paint the squares from the numbers. Race a friend on the same puzzle.",
      "author": {
        "name": "HandsomeOne",
        "url": "https://github.com/HandsomeOne/Nonogram"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "Nonogram",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-23",
      "updated": "2026-08-23",
      "categories": [
        "Games"
      ],
      "tags": [
        "picross",
        "nonogram",
        "puzzle",
        "multiplayer",
        "race",
        "offline"
      ],
      "accent": [
        14,
        190,
        255
      ],
      "cover": "/apps/nonogram/cover.jpg",
      "bytes": 199866,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-24"
      },
      "sha256": "9a5e900cf311c4262e5676d30e65c02de30f887488393a254c3f83f092fcbe21"
    },
    {
      "slug": "nullboard",
      "appId": "nullboard",
      "name": "Nullboard",
      "shortName": "Nullboard",
      "version": "1.0.0",
      "tagline": "The board is the file. One invite is the room — no Trello account.",
      "author": {
        "name": "Alexander Pankratov",
        "url": "https://github.com/apankrat/nullboard"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "Nullboard",
        "blessed": false
      },
      "minBuild": 2154,
      "offline": true,
      "releaseDate": "2026-08-30",
      "updated": "2026-08-30",
      "categories": [
        "Productivity"
      ],
      "tags": [
        "kanban",
        "notes",
        "lists",
        "tasks",
        "offline",
        "board"
      ],
      "accent": [
        20,
        137,
        219
      ],
      "cover": "/apps/nullboard/cover.jpg",
      "bytes": 400342,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-31"
      },
      "sha256": "9f19c8049c88335f0b11586cc63f3e118d6a269961a05456ce940e59138e95f9"
    },
    {
      "slug": "nxn-cube",
      "appId": "nxn-cube",
      "name": "NxN Cube",
      "shortName": "NxN Cube",
      "version": "1.0",
      "tagline": "A colourful cube. Drag a face to turn it. Race the same scramble.",
      "author": {
        "name": "pengfeiw",
        "url": "https://github.com/pengfeiw/rubiks-cube"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "rubiks-cube",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-23",
      "updated": "2026-08-23",
      "categories": [
        "Games"
      ],
      "tags": [
        "cube",
        "puzzle",
        "3d",
        "scramble",
        "multiplayer",
        "offline"
      ],
      "accent": [
        251,
        54,
        54
      ],
      "cover": "/apps/nxn-cube/cover.jpg",
      "bytes": 405455,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-24"
      },
      "sha256": "482ce1c3ecb6a9e1dc08bf39cc460f76d8f297069948b2ce9bd8804d2029ecbf"
    },
    {
      "slug": "offline-llm-bitnet",
      "appId": "offline-llm-bitnet",
      "name": "Offline Cheap Text LLM BitNet",
      "shortName": "BitNet LLM",
      "version": "0.9",
      "tagline": "EXPERIMENTAL, and SLOW — minutes per answer, not seconds. Microsoft's BitNet, running entirely on your device.",
      "author": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "minBuild": 1205,
      "offline": true,
      "releaseDate": "2026-08-09",
      "updated": "2026-08-09",
      "categories": [
        "Utilities"
      ],
      "tags": [
        "experimental",
        "slow",
        "provider",
        "llm",
        "bitnet",
        "chat",
        "offline",
        "ai"
      ],
      "accent": [
        92,
        220,
        180
      ],
      "cover": "/apps/offline-llm-bitnet/cover.jpg",
      "bytes": 10227608,
      "download": 1105874048,
      "provides": {
        "ai": [
          "cheapest"
        ]
      },
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-26"
      },
      "sha256": "8ae983386d9bc5b756e6b2dfc3b811cf5c4a3c57537f69b38cd5e4f767a0c027"
    },
    {
      "slug": "offline-llm-gemma",
      "appId": "offline-llm-gemma",
      "name": "Offline Cheap Text LLM Gemma 3",
      "shortName": "Gemma 3 LLM",
      "version": "1.0",
      "tagline": "EXPERIMENTAL, and SLOW — minutes per answer, not seconds. Google's Gemma 3, running entirely on your device.",
      "author": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "minBuild": 1205,
      "offline": true,
      "releaseDate": "2026-08-09",
      "updated": "2026-08-09",
      "categories": [
        "Utilities"
      ],
      "tags": [
        "experimental",
        "slow",
        "provider",
        "llm",
        "gemma",
        "google",
        "chat",
        "offline",
        "ai"
      ],
      "accent": [
        122,
        162,
        247
      ],
      "cover": "/apps/offline-llm-gemma/cover.jpg",
      "bytes": 10227843,
      "download": 806058240,
      "provides": {
        "ai": [
          "cheapest"
        ]
      },
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-26"
      },
      "sha256": "0e48cb459a3cb711c96bea49f8a8e01b7d22514aaf9a30f8ba427d86272af4ef"
    },
    {
      "slug": "offline-llm-gemma4",
      "appId": "offline-llm-gemma4",
      "name": "Offline Cheap Text LLM Gemma 4",
      "shortName": "Gemma 4 LLM",
      "version": "1.0",
      "tagline": "EXPERIMENTAL, and the SLOWEST of the three — many minutes per answer. Google's Gemma 4, entirely on your device.",
      "author": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "minBuild": 1205,
      "offline": true,
      "releaseDate": "2026-08-09",
      "updated": "2026-08-09",
      "categories": [
        "Utilities"
      ],
      "tags": [
        "experimental",
        "slow",
        "provider",
        "llm",
        "gemma",
        "gemma4",
        "google",
        "apache-2.0",
        "chat",
        "offline",
        "ai"
      ],
      "accent": [
        167,
        139,
        250
      ],
      "cover": "/apps/offline-llm-gemma4/cover.jpg",
      "bytes": 10228652,
      "download": 1875742368,
      "provides": {
        "ai": [
          "cheapest"
        ]
      },
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-26"
      },
      "sha256": "fab082a41a4cd8049434d11d88c6c0af0593c769e016ab59fb0b0250b9c45ea5"
    },
    {
      "slug": "offline-tts",
      "appId": "offline-tts",
      "name": "Offline Text to Speech",
      "shortName": "Offline TTS",
      "version": "1.0",
      "tagline": "Give your computer a voice — offline text-to-speech that serves every app, no key, no cloud.",
      "author": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "minBuild": 1177,
      "offline": true,
      "releaseDate": "2026-08-09",
      "updated": "2026-08-09",
      "categories": [
        "Utilities"
      ],
      "tags": [
        "provider",
        "tts",
        "text-to-speech",
        "offline",
        "accessibility",
        "ai"
      ],
      "accent": [
        123,
        92,
        255
      ],
      "cover": "/apps/offline-tts/cover.jpg",
      "bytes": 1632028,
      "download": 0,
      "provides": {
        "ai": [
          "tts"
        ]
      },
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-24"
      },
      "sha256": "1b9722326735d6cc0f7a8cb0b8629608b333c57e0d2ab9d34cc4e778dd965b1c"
    },
    {
      "slug": "offline-tts-kokoro",
      "appId": "offline-tts-kokoro",
      "name": "Offline Neural TTS (Kokoro, GPU)",
      "shortName": "Kokoro TTS",
      "version": "1.0",
      "tagline": "A higher-quality natural voice for every app — faster on a graphics chip, no key, no cloud.",
      "author": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "minBuild": 1250,
      "offline": true,
      "releaseDate": "2026-08-11",
      "updated": "2026-08-11",
      "categories": [
        "Utilities"
      ],
      "tags": [
        "provider",
        "tts",
        "text-to-speech",
        "neural",
        "kokoro",
        "gpu",
        "offline",
        "accessibility",
        "ai"
      ],
      "accent": [
        124,
        92,
        255
      ],
      "cover": "/apps/offline-tts-kokoro/cover.jpg",
      "bytes": 18537460,
      "download": 163234740,
      "provides": {
        "ai": [
          "tts"
        ]
      },
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-26"
      },
      "sha256": "dbad5f88fe3fe693d71af610625ece8321508969b6ec41d09db0c3804025dab8"
    },
    {
      "slug": "offline-tts-neural",
      "appId": "offline-tts-neural",
      "name": "Offline Neural Text to Speech",
      "shortName": "Neural TTS",
      "version": "1.0",
      "tagline": "A natural-sounding voice for every app on your computer — offline, no key, no cloud.",
      "author": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "minBuild": 1205,
      "offline": true,
      "releaseDate": "2026-08-11",
      "updated": "2026-08-11",
      "categories": [
        "Utilities"
      ],
      "tags": [
        "provider",
        "tts",
        "text-to-speech",
        "neural",
        "offline",
        "accessibility",
        "ai"
      ],
      "accent": [
        255,
        138,
        76
      ],
      "cover": "/apps/offline-tts-neural/cover.jpg",
      "bytes": 12423420,
      "download": 24369971,
      "provides": {
        "ai": [
          "tts"
        ]
      },
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-26"
      },
      "sha256": "110855c5e5f3a6eb1720fab95e8fac3c9f1282ba96b9390862352a6348db32ba"
    },
    {
      "slug": "one-stroke",
      "appId": "one-stroke",
      "name": "One Stroke",
      "shortName": "OneStroke",
      "version": "1.0",
      "tagline": "A drawing game: one stroke each, then watch the picture replay.",
      "author": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-23",
      "updated": "2026-08-23",
      "categories": [
        "Games",
        "Creativity"
      ],
      "tags": [
        "drawing",
        "party",
        "multiplayer",
        "doodle",
        "offline"
      ],
      "accent": [
        244,
        201,
        93
      ],
      "cover": "/apps/one-stroke/cover.jpg",
      "bytes": 199613,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-25"
      },
      "sha256": "831a21aec18bc38e0245614ca580ef6c8792af8ba6340c32b5e4abfe8dfb0fb9"
    },
    {
      "slug": "onoff",
      "appId": "onoff",
      "name": "OnOff",
      "shortName": "OnOff",
      "version": "1.1.0",
      "tagline": "Twenty-five puzzle rooms where flipping a switch flips the world.",
      "author": {
        "name": "Daniel Marino and Brad Dunbar",
        "url": "https://github.com/starzonmyarmz/js13k-2018"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "OnOff",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-24",
      "updated": "2026-08-24",
      "categories": [
        "Games"
      ],
      "tags": [
        "platformer",
        "js13k",
        "puzzle",
        "offline"
      ],
      "accent": [
        232,
        232,
        232
      ],
      "cover": "/apps/onoff/cover.jpg",
      "bytes": 208833,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-25"
      },
      "sha256": "230af62d8d96c961b785d35743a404ed257d35c60e13188982250d88d7e11a1e"
    },
    {
      "slug": "openjscad",
      "appId": "openjscad",
      "name": "OpenJSCAD",
      "shortName": "JSCAD",
      "version": "1.0.0",
      "tagline": "Write JavaScript, get a 3D solid — the script lives in the file.",
      "author": {
        "name": "JSCAD Organization",
        "url": "https://github.com/jscad/OpenJSCAD.org"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "OpenJSCAD",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-30",
      "updated": "2026-08-30",
      "categories": [
        "Utilities",
        "Developer"
      ],
      "tags": [
        "cad",
        "3d",
        "jscad",
        "openscad",
        "editor",
        "offline"
      ],
      "accent": [
        242,
        180,
        52
      ],
      "cover": "/apps/openjscad/cover.jpg",
      "bytes": 292877,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-31"
      },
      "sha256": "178d14b9be35289955220f3cc663da693f04069ca181f22694275b34dd5837aa"
    },
    {
      "slug": "orca",
      "appId": "orca",
      "name": "Orca",
      "shortName": "Orca",
      "version": "1.0",
      "tagline": "Type letters on a grid; they become a music sequencer.",
      "author": {
        "name": "Hundredrabbits",
        "url": "https://github.com/hundredrabbits/Orca"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "Orca",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-24",
      "updated": "2026-08-24",
      "categories": [
        "Creativity",
        "Media"
      ],
      "tags": [
        "livecoding",
        "sequencer",
        "midi",
        "grid",
        "orca",
        "offline"
      ],
      "accent": [
        114,
        222,
        194
      ],
      "cover": "/apps/orca/cover.jpg",
      "bytes": 269078,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-29"
      },
      "sha256": "e65d15e09b6e83fb36d2802db3169dcaf04da3b93fc489ab562d487c0fa238be"
    },
    {
      "slug": "otpauth",
      "appId": "otpauth",
      "name": "OTP Auth",
      "shortName": "OTP",
      "version": "1.0.0",
      "tagline": "Authenticator codes that live in this file. Works on a plane. Nothing is uploaded.",
      "author": {
        "name": "Héctor Molinero Fernández",
        "url": "https://github.com/hectorm/otpauth"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "OTPAuth",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-30",
      "updated": "2026-08-30",
      "categories": [
        "Utilities"
      ],
      "tags": [
        "totp",
        "hotp",
        "authenticator",
        "2fa",
        "otp",
        "offline",
        "privacy"
      ],
      "accent": [
        64,
        210,
        180
      ],
      "cover": "/apps/otpauth/cover.jpg",
      "bytes": 231802,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-31"
      },
      "sha256": "e708ee60acc020e2b82dd1d45cdf6f1f4e0f9e1175a436a4647408937e695819"
    },
    {
      "slug": "pacman",
      "appId": "pacman",
      "name": "Pellets",
      "shortName": "Pellets",
      "version": "1.2.0",
      "tagline": "Twelve mazes and a thumb pad. Your high score is saved.",
      "author": {
        "name": "Haole Zheng",
        "url": "https://github.com/mumuy/pacman"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "Pacman",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-24",
      "updated": "2026-08-24",
      "categories": [
        "Games"
      ],
      "tags": [
        "maze",
        "arcade",
        "retro",
        "offline"
      ],
      "accent": [
        255,
        230,
        0
      ],
      "cover": "/apps/pacman/cover.jpg",
      "bytes": 174111,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-25"
      },
      "sha256": "1a787f9eb41c03d6a9f2557427990296bdedae4f2b36efea9cc9d51a36caf43f"
    },
    {
      "slug": "paint-board",
      "appId": "paint-board",
      "name": "Paint Board",
      "shortName": "Paint Board",
      "version": "1.0",
      "tagline": "A freehand board with wild brushes. Draw together.",
      "author": {
        "name": "LHRUN",
        "url": "https://github.com/LHRUN/paint-board"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "paint-board",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-23",
      "updated": "2026-08-23",
      "categories": [
        "Creativity"
      ],
      "tags": [
        "paint",
        "drawing",
        "freehand",
        "brushes",
        "canvas",
        "multiplayer",
        "offline"
      ],
      "accent": [
        255,
        99,
        99
      ],
      "cover": "/apps/paint-board/cover.jpg",
      "bytes": 193996,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-24"
      },
      "sha256": "26a958b5d4285e83fb9c23ff4906c1c9efef0790fe706f615356b21271abdb3a"
    },
    {
      "slug": "parable-of-polygons",
      "appId": "parable-of-polygons",
      "name": "Parable of the Polygons",
      "shortName": "Polygons",
      "version": "1.0.0",
      "tagline": "Nicky Case’s Schelling explorable, offline — last sliders stay, one invite shares the town.",
      "author": {
        "name": "Vi Hart & Nicky Case",
        "url": "https://ncase.me/polygons/"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "Parable of the Polygons",
        "blessed": false
      },
      "minBuild": 2154,
      "offline": true,
      "releaseDate": "2026-08-31",
      "updated": "2026-08-31",
      "categories": [
        "Learning"
      ],
      "tags": [
        "polygons",
        "schelling",
        "segregation",
        "explorable",
        "offline",
        "multiplayer"
      ],
      "accent": [
        245,
        195,
        24
      ],
      "cover": "/apps/parable-of-polygons/cover.jpg",
      "bytes": 240118,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-31"
      },
      "sha256": "b9be8785054c816e5d841d4532da6d18f5ac6c708a1c8a05de01136c85d467f4"
    },
    {
      "slug": "particle-life",
      "appId": "particle-life",
      "name": "Particle Life",
      "shortName": "Life",
      "version": "1.0.0",
      "tagline": "Watch particles form little creatures. Share the jar with a friend.",
      "author": {
        "name": "hunar4321",
        "url": "https://github.com/hunar4321/particle-life"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "Particle Life",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-23",
      "updated": "2026-08-23",
      "categories": [
        "Creativity",
        "Games"
      ],
      "tags": [
        "particles",
        "life",
        "colours",
        "toy",
        "multiplayer",
        "offline"
      ],
      "accent": [
        0,
        196,
        204
      ],
      "cover": "/apps/particle-life/cover.jpg",
      "bytes": 193588,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-25"
      },
      "sha256": "f78285702495fbc548b6d0db5cb619e13d2bc373090236c771e3a88cccfa133d"
    },
    {
      "slug": "pdf-reader",
      "appId": "pdf-reader",
      "name": "PDF Reader",
      "shortName": "PDF",
      "version": "1.0.0",
      "tagline": "The PDF stays in the app. Invite a friend onto the same page — nothing is uploaded.",
      "author": {
        "name": "Mozilla",
        "url": "https://github.com/mozilla/pdf.js"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "PDF.js",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-30",
      "updated": "2026-08-30",
      "categories": [
        "Utilities"
      ],
      "tags": [
        "pdf",
        "reader",
        "viewer",
        "document",
        "offline",
        "multiplayer"
      ],
      "accent": [
        220,
        50,
        47
      ],
      "cover": "/apps/pdf-reader/cover.jpg",
      "bytes": 832299,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-31"
      },
      "sha256": "914082028f47e51a09a8789e398e3861a5eac21c93045ade6dd6b08eab180e8a"
    },
    {
      "slug": "pdf-tables",
      "appId": "pdf-tables",
      "name": "PDF Tables → Excel",
      "shortName": "PDF Tables",
      "version": "1.1",
      "tagline": "Turn a PDF's tables into an Excel workbook, without the PDF leaving your device.",
      "author": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "minBuild": 1205,
      "offline": true,
      "releaseDate": "2026-08-12",
      "updated": "2026-08-12",
      "categories": [
        "Utilities"
      ],
      "tags": [
        "pdf",
        "excel",
        "xlsx",
        "tables",
        "spreadsheet",
        "converter",
        "offline",
        "serff",
        "insurance"
      ],
      "accent": [
        46,
        160,
        112
      ],
      "cover": "/apps/pdf-tables/cover.jpg",
      "bytes": 1248770,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-26"
      },
      "sha256": "6ebcb51ba79dcaf9a0706ecdf340cf7c733ecd8c5086a969a3b3afd7860c16dc"
    },
    {
      "slug": "pdf-tables-ocr",
      "appId": "pdf-tables-ocr",
      "name": "Scanned PDF Tables → Excel",
      "shortName": "Scanned PDF Tables",
      "version": "1.0",
      "tagline": "Scanned or text, a PDF's tables come out as Excel — OCR runs on your device.",
      "author": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "minBuild": 1250,
      "offline": true,
      "releaseDate": "2026-08-12",
      "updated": "2026-08-12",
      "categories": [
        "Utilities"
      ],
      "tags": [
        "pdf",
        "ocr",
        "excel",
        "xlsx",
        "tables",
        "spreadsheet",
        "scanned",
        "gpu",
        "offline",
        "serff",
        "insurance"
      ],
      "accent": [
        58,
        134,
        235
      ],
      "cover": "/apps/pdf-tables-ocr/cover.jpg",
      "bytes": 27920804,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-26"
      },
      "sha256": "7ea0ed99395a393eee65d360d0a7dcb249bedf98d4ec2b5bf4cb2ddd00e92587"
    },
    {
      "slug": "periodic-table",
      "appId": "periodic-table",
      "name": "Periodic Table",
      "shortName": "Table",
      "version": "1.0",
      "tagline": "All 118 elements, and a quiz you can race a friend on.",
      "author": {
        "name": "calebephrem",
        "url": "https://github.com/calebephrem/periodic-table"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "Periodic Table",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-23",
      "updated": "2026-08-23",
      "categories": [
        "Learning"
      ],
      "tags": [
        "chemistry",
        "periodic-table",
        "quiz",
        "science",
        "offline",
        "multiplayer"
      ],
      "accent": [
        232,
        180,
        60
      ],
      "cover": "/apps/periodic-table/cover.jpg",
      "bytes": 176924,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-25"
      },
      "sha256": "5bacdf0f41780a31d3ef24a035ac1c9244aeee53cbb2aa82dc3d12658b5f4f6b"
    },
    {
      "slug": "piano-trainer",
      "appId": "piano-trainer",
      "name": "Piano Trainer",
      "shortName": "Piano",
      "version": "1.1",
      "tagline": "Scales, chords, the circle of fifths, and a quiz to drill them.",
      "author": {
        "name": "Zane Helton",
        "url": "https://github.com/ZaneH/piano-trainer"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "Piano Trainer",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-24",
      "updated": "2026-08-24",
      "categories": [
        "Learning"
      ],
      "tags": [
        "piano",
        "scales",
        "chords",
        "quiz",
        "music",
        "offline"
      ],
      "accent": [
        232,
        196,
        96
      ],
      "cover": "/apps/piano-trainer/cover.jpg",
      "bytes": 199581,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-25"
      },
      "sha256": "fe2093500ca262d79d3c66e0d3a7b0793cc2f9bbc21d37749d74bb0f367bb85e"
    },
    {
      "slug": "pickr",
      "appId": "pickr",
      "name": "Pickr",
      "shortName": "Pickr",
      "version": "1.0",
      "tagline": "A color picker you can actually use. Copy the code.",
      "author": {
        "name": "simonwep",
        "url": "https://github.com/simonwep/pickr"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "Pickr",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-23",
      "updated": "2026-08-23",
      "categories": [
        "Utilities"
      ],
      "tags": [
        "color",
        "picker",
        "hex",
        "rgb",
        "palette",
        "offline"
      ],
      "accent": [
        232,
        65,
        108
      ],
      "cover": "/apps/pickr/cover.jpg",
      "bytes": 200868,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-25"
      },
      "sha256": "cc9cecb9ee54f02ad7533903eb2bb66362f7c0c65ec2660622ec6578d29236d0"
    },
    {
      "slug": "piskel",
      "appId": "piskel",
      "name": "Piskel",
      "shortName": "Piskel",
      "version": "0.15.2",
      "tagline": "A pixel art and sprite editor that exports animated GIFs.",
      "author": {
        "name": "Julian Descottes",
        "url": "https://github.com/piskelapp/piskel"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "Piskel",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-22",
      "updated": "2026-08-22",
      "categories": [
        "Creativity"
      ],
      "tags": [
        "pixel",
        "sprite",
        "animation",
        "gif",
        "pixel-art",
        "editor",
        "offline",
        "piskel"
      ],
      "accent": [
        255,
        215,
        0
      ],
      "cover": "/apps/piskel/cover.jpg",
      "bytes": 2462900,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-29"
      },
      "sha256": "149b0e959b134b1414347ca2b434d966ce095081dbd7213aad759d925b62e6e7"
    },
    {
      "slug": "pivot",
      "appId": "pivot",
      "name": "Pivot",
      "shortName": "Pivot",
      "version": "1.1",
      "tagline": "Drop in a CSV, drag fields, get a pivot table.",
      "author": {
        "name": "Nicolas Kruchten",
        "url": "https://github.com/nicolaskruchten/pivottable"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "PivotTable.js",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-24",
      "updated": "2026-08-24",
      "categories": [
        "Productivity",
        "Utilities"
      ],
      "tags": [
        "pivot",
        "table",
        "spreadsheet",
        "csv",
        "grid",
        "offline"
      ],
      "accent": [
        26,
        115,
        232
      ],
      "cover": "/apps/pivot/cover.jpg",
      "bytes": 382569,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-27"
      },
      "sha256": "09968b57304748ac7426b61a9ea70f11e60c296686081cd2e512d8e29bc61063"
    },
    {
      "slug": "pixel-paint",
      "appId": "pixel-paint",
      "name": "Pixel Paint",
      "shortName": "Pixel Paint",
      "version": "1.0",
      "tagline": "A tiny 32×32 pixel canvas. Draw a sprite. Draw together.",
      "author": {
        "name": "Kully",
        "url": "https://github.com/Kully/pixel-paint"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "Pixel Paint",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-23",
      "updated": "2026-08-23",
      "categories": [
        "Creativity"
      ],
      "tags": [
        "pixel",
        "paint",
        "sprite",
        "pixel-art",
        "canvas",
        "drawing",
        "multiplayer",
        "offline"
      ],
      "accent": [
        60,
        188,
        252
      ],
      "cover": "/apps/pixel-paint/cover.jpg",
      "bytes": 213722,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-29"
      },
      "sha256": "66a0e6efd33fa43ba2260678c315d15af6edb02f77fcb9a01fe7cec6a5d795d3"
    },
    {
      "slug": "pixelit",
      "appId": "pixelit",
      "name": "Pixel It",
      "shortName": "PixelIt",
      "version": "1.1",
      "tagline": "Turn a photo into pixel art, right on your device.",
      "author": {
        "name": "giventofly",
        "url": "https://github.com/giventofly/pixelit"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "Pixel It",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-24",
      "updated": "2026-08-24",
      "categories": [
        "Creativity"
      ],
      "tags": [
        "pixel",
        "pixel-art",
        "photo",
        "palette",
        "convert",
        "offline"
      ],
      "accent": [
        228,
        148,
        58
      ],
      "cover": "/apps/pixelit/cover.jpg",
      "bytes": 193893,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-26"
      },
      "sha256": "edad932c949fbb595e5891d976137eb74f74725fb635d1f65dd1d3f8aad6fa28"
    },
    {
      "slug": "polygon-shredder",
      "appId": "polygon-shredder",
      "name": "Polygon Shredder",
      "shortName": "Shredder",
      "version": "1.0.0",
      "tagline": "Cubes shred into confetti. Twiddle the knobs, save the look.",
      "author": {
        "name": "spite",
        "url": "https://github.com/spite/polygon-shredder"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "The Polygon Shredder",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-24",
      "updated": "2026-08-24",
      "categories": [
        "Creativity"
      ],
      "tags": [
        "confetti",
        "cubes",
        "toy",
        "particles",
        "art",
        "multiplayer",
        "offline"
      ],
      "accent": [
        237,
        106,
        90
      ],
      "cover": "/apps/polygon-shredder/cover.jpg",
      "bytes": 409939,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-25"
      },
      "sha256": "a5b4c55bb54c755b42e2fe7ccfbd068529f6c13014fdd8c13402c87c326cf829"
    },
    {
      "slug": "pong",
      "appId": "pong",
      "name": "Pong",
      "shortName": "Pong",
      "version": "1.1.0",
      "tagline": "Pong across two phones. Send the link, first to nine.",
      "author": {
        "name": "Jake Gordon",
        "url": "https://github.com/jakesgordon/javascript-pong"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "JavaScript Pong",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-23",
      "updated": "2026-08-23",
      "categories": [
        "Games"
      ],
      "tags": [
        "pong",
        "arcade",
        "classic",
        "multiplayer",
        "table-tennis"
      ],
      "accent": [
        90,
        220,
        110
      ],
      "cover": "/apps/pong/cover.jpg",
      "bytes": 260311,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-25"
      },
      "sha256": "f65092bc05344e2417fd4dc12d1116dd4c244f2601e7dad8d0607a4548d4f3b5"
    },
    {
      "slug": "pool",
      "appId": "pool",
      "name": "Pool",
      "shortName": "Pool",
      "version": "1.0.0",
      "tagline": "Pool across two phones. Red against yellow, then the black.",
      "author": {
        "name": "henshmi",
        "url": "https://github.com/henshmi/Classic-Pool-Game"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "Classic Pool Game",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-23",
      "updated": "2026-08-23",
      "categories": [
        "Games"
      ],
      "tags": [
        "pool",
        "8-ball",
        "billiards",
        "multiplayer",
        "classic"
      ],
      "accent": [
        46,
        150,
        78
      ],
      "cover": "/apps/pool/cover.jpg",
      "bytes": 401180,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-25"
      },
      "sha256": "2dff3a43d0f079fb202b51a1df228f54f74da12eedb3c072eaafd248de0767df"
    },
    {
      "slug": "primitive",
      "appId": "primitive",
      "name": "Primitive",
      "shortName": "Primitive",
      "version": "1.0.0",
      "tagline": "Redraw a photo as triangles — on this device, saved in the file.",
      "author": {
        "name": "Ondřej Žára",
        "url": "https://github.com/ondras/primitive.js"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "primitive.js",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-30",
      "updated": "2026-08-30",
      "categories": [
        "Creativity"
      ],
      "tags": [
        "primitive",
        "triangles",
        "photo",
        "geometric",
        "art",
        "offline"
      ],
      "accent": [
        236,
        92,
        64
      ],
      "cover": "/apps/primitive/cover.jpg",
      "bytes": 204326,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-31"
      },
      "sha256": "3d36c19af78da363e6151764a861b7183ca19693a0662d8564449b403a0ec69f"
    },
    {
      "slug": "q1k3",
      "appId": "q1k3",
      "name": "Q1K3",
      "shortName": "Q1K3",
      "version": "1.0.1",
      "tagline": "Quake in 13 kB: a shotgun and two torch-lit halls.",
      "author": {
        "name": "phoboslab",
        "url": "https://github.com/phoboslab"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "Q1K3",
        "blessed": false
      },
      "minBuild": 1314,
      "offline": true,
      "releaseDate": "2026-08-23",
      "updated": "2026-08-23",
      "categories": [
        "Games"
      ],
      "tags": [
        "quake",
        "fps",
        "shooter",
        "3d",
        "offline",
        "multiplayer"
      ],
      "accent": [
        196,
        92,
        36
      ],
      "cover": "/apps/q1k3/cover.jpg",
      "bytes": 234634,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-25"
      },
      "sha256": "16c75cf083282875b4928de13cc9988fa9e0d7ed402b946781d53a59273c1ec5"
    },
    {
      "slug": "qr-code",
      "appId": "qr-code",
      "name": "QR Code",
      "shortName": "QR",
      "version": "1.1",
      "tagline": "Type a link or any text. A QR code appears.",
      "author": {
        "name": "davidshimjs",
        "url": "https://github.com/davidshimjs/qrcodejs"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "qrcodejs",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-24",
      "updated": "2026-08-24",
      "categories": [
        "Utilities"
      ],
      "tags": [
        "qr",
        "code",
        "url",
        "text",
        "offline",
        "print",
        "contact"
      ],
      "accent": [
        240,
        196,
        32
      ],
      "cover": "/apps/qr-code/cover.jpg",
      "bytes": 211053,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-25"
      },
      "sha256": "f6787bd598a5b15627f49058873fb7d9f98029bbdea375154fd01fda0cc4c6e9"
    },
    {
      "slug": "qr-scan",
      "appId": "qr-scan",
      "name": "QR Scan",
      "shortName": "Scan",
      "version": "1.1",
      "tagline": "Read a QR code from a photo.",
      "author": {
        "name": "cozmo",
        "url": "https://github.com/cozmo/jsQR"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "jsQR",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-24",
      "updated": "2026-08-24",
      "categories": [
        "Utilities"
      ],
      "tags": [
        "qr",
        "scan",
        "photo",
        "decode",
        "offline"
      ],
      "accent": [
        64,
        180,
        140
      ],
      "cover": "/apps/qr-scan/cover.jpg",
      "bytes": 271991,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-25"
      },
      "sha256": "6a4ea5a2a895a20a5f4598b409cb9d9a0be3c9ad936020c502308105cd7bbaad"
    },
    {
      "slug": "queens",
      "appId": "queens",
      "name": "Queens",
      "shortName": "Queens",
      "version": "1.1",
      "tagline": "768 tap puzzles. Close it, come back, you're still on the board.",
      "author": {
        "name": "samimsu",
        "url": "https://github.com/samimsu/queens-game"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "Queens",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-24",
      "updated": "2026-08-24",
      "categories": [
        "Games"
      ],
      "tags": [
        "puzzle",
        "queens",
        "logic",
        "offline",
        "multiplayer"
      ],
      "accent": [
        94,
        79,
        162
      ],
      "cover": "/apps/queens/cover.jpg",
      "bytes": 246188,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-27"
      },
      "sha256": "f4e61b561465b82e7e053f15e1cc1a82d4f4690dde2a2b70ac8c1abf7129b31a"
    },
    {
      "slug": "quiz-buzzer",
      "appId": "quiz-buzzer",
      "name": "Quiz Buzzer",
      "shortName": "Buzzer",
      "version": "1.0",
      "tagline": "Send one link and every phone in the room becomes a buzzer.",
      "author": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "inspiredBy": {
        "name": "Kahoot!",
        "by": "Kahoot!"
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-23",
      "updated": "2026-08-23",
      "categories": [
        "Games",
        "Learning"
      ],
      "tags": [
        "quiz",
        "buzzer",
        "party",
        "multiplayer",
        "offline"
      ],
      "accent": [
        232,
        64,
        72
      ],
      "cover": "/apps/quiz-buzzer/cover.jpg",
      "bytes": 204481,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-25"
      },
      "sha256": "0aefee16374ad3c2ea3836f022208495faaa07fdd9294201537ea5c002d13078"
    },
    {
      "slug": "racer",
      "appId": "racer",
      "name": "Racer",
      "shortName": "Racer",
      "version": "1.0.0",
      "tagline": "A sunset highway, a red car, and whoever you send the link to.",
      "author": {
        "name": "Jake Gordon",
        "url": "https://github.com/jakesgordon/javascript-racer"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "JavaScript Racer",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-23",
      "updated": "2026-08-23",
      "categories": [
        "Games"
      ],
      "tags": [
        "racing",
        "driving",
        "outrun",
        "multiplayer",
        "offline",
        "touch"
      ],
      "accent": [
        255,
        92,
        64
      ],
      "cover": "/apps/racer/cover.jpg",
      "bytes": 514272,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-25"
      },
      "sha256": "b57e6c5d570ed3ca9edfc0916fbe22372e5b390cbb044db05809546d42c7bee7"
    },
    {
      "slug": "radius-raid",
      "appId": "radius-raid",
      "name": "Radius Raid",
      "shortName": "Raid",
      "version": "1.0.0",
      "tagline": "A tiny ship, a swarm of enemies, and a friend on the other stick.",
      "author": {
        "name": "jackrugile",
        "url": "https://github.com/jackrugile/radius-raid-js13k"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "Radius Raid",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-23",
      "updated": "2026-08-23",
      "categories": [
        "Games"
      ],
      "tags": [
        "shooter",
        "twin-stick",
        "arcade",
        "multiplayer",
        "coop",
        "js13k"
      ],
      "accent": [
        0,
        220,
        255
      ],
      "cover": "/apps/radius-raid/cover.jpg",
      "bytes": 225635,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-25"
      },
      "sha256": "c8f26ea37d894b950fab244c54997d229541634b478a1e1449c165129f11f75d"
    },
    {
      "slug": "rawgraphs",
      "appId": "rawgraphs",
      "name": "RAWGraphs",
      "shortName": "RAWGraphs",
      "version": "1.0.0",
      "tagline": "Paste a CSV, map columns onto a chart — the dataset lives in the GIF.",
      "author": {
        "name": "DensityDesign Lab, Calibro, INMAGIK",
        "url": "https://github.com/rawgraphs/rawgraphs-app"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "RAWGraphs",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-30",
      "updated": "2026-08-30",
      "categories": [
        "Productivity",
        "Utilities"
      ],
      "tags": [
        "charts",
        "visualization",
        "csv",
        "alluvial",
        "treemap",
        "offline"
      ],
      "accent": [
        247,
        96,
        0
      ],
      "cover": "/apps/rawgraphs/cover.jpg",
      "bytes": 214751,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-31"
      },
      "sha256": "979b80d4639485c5dc589b65ada1d051bbe3e1f46e64143f73d6e67a242a7370"
    },
    {
      "slug": "regexper",
      "appId": "regexper",
      "name": "Regexper",
      "shortName": "Regexper",
      "version": "1.0.0",
      "tagline": "Type a regular expression, see it as a railroad diagram.",
      "author": {
        "name": "javallone",
        "url": "https://github.com/javallone/regexper-static"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "Regexper",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-23",
      "updated": "2026-08-23",
      "categories": [
        "Developer",
        "Utilities"
      ],
      "tags": [
        "regex",
        "regexp",
        "railroad",
        "diagram",
        "offline",
        "regexper"
      ],
      "accent": [
        186,
        218,
        85
      ],
      "cover": "/apps/regexper/cover.jpg",
      "bytes": 297555,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-25"
      },
      "sha256": "482185f9f27b95353ecc95bca88924af280f35ff8f38852a533aaf57dc2cfb42"
    },
    {
      "slug": "regexr",
      "appId": "regexr",
      "name": "RegExr",
      "shortName": "RegExr",
      "version": "1.0.0",
      "tagline": "The pattern and the test text live in this file — works on a plane, one Invite shares it.",
      "author": {
        "name": "Grant Skinner",
        "url": "https://github.com/gskinner/regexr"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "RegExr",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-30",
      "updated": "2026-08-30",
      "categories": [
        "Developer",
        "Learning"
      ],
      "tags": [
        "regex",
        "regexp",
        "tester",
        "cheatsheet",
        "offline",
        "multiplayer"
      ],
      "accent": [
        112,
        176,
        224
      ],
      "cover": "/apps/regexr/cover.jpg",
      "bytes": 192428,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-09-01"
      },
      "sha256": "c0548e2ca4b2554b1bee6d231e9693c356b3988fd17e5b77d0a6c0bc85386043"
    },
    {
      "slug": "restfox",
      "appId": "restfox",
      "name": "Restfox",
      "shortName": "Restfox",
      "version": "1.0.0",
      "tagline": "An HTTP client. Collections stay here. Requests leave when you send them.",
      "author": {
        "name": "Flawid D'Souza",
        "url": "https://github.com/flawiddsouza/Restfox"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "Restfox",
        "blessed": false
      },
      "minBuild": 947,
      "offline": false,
      "releaseDate": "2026-08-22",
      "updated": "2026-08-22",
      "categories": [
        "Developer",
        "Utilities"
      ],
      "tags": [
        "http",
        "rest",
        "api",
        "client",
        "restfox",
        "collections",
        "json",
        "headers"
      ],
      "accent": [
        127,
        79,
        213
      ],
      "cover": "/apps/restfox/cover.jpg",
      "bytes": 201283,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-29"
      },
      "sha256": "b0781af90a1886cdc553f988a656151e497dc0d82760ce5b6c958a80568d3983"
    },
    {
      "slug": "retirement",
      "appId": "retirement",
      "name": "Retirement Calculator",
      "shortName": "Retirement",
      "version": "1.0",
      "tagline": "Will your money last? Tested against every real retirement since 1871.",
      "author": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-25",
      "updated": "2026-08-25",
      "categories": [
        "Productivity",
        "Utilities"
      ],
      "tags": [
        "retirement",
        "money",
        "savings",
        "pension",
        "fire",
        "planning",
        "investing",
        "offline"
      ],
      "accent": [
        57,
        135,
        229
      ],
      "cover": "/apps/retirement/cover.jpg",
      "bytes": 395240,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-26"
      },
      "sha256": "b84f372877a48aa67aa0520d38752a19fd16cf2e45a5a7a152e1386c6b61eeea"
    },
    {
      "slug": "reversi",
      "appId": "reversi",
      "name": "Reversi",
      "shortName": "Reversi",
      "version": "1.0",
      "tagline": "Othello. The computer plays here, or a friend joins from one link.",
      "author": {
        "name": "alex-berson",
        "url": "https://github.com/alex-berson/reversi"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "Reversi",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-23",
      "updated": "2026-08-23",
      "categories": [
        "Games"
      ],
      "tags": [
        "reversi",
        "othello",
        "board",
        "multiplayer",
        "offline"
      ],
      "accent": [
        58,
        134,
        100
      ],
      "cover": "/apps/reversi/cover.jpg",
      "bytes": 256798,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-25"
      },
      "sha256": "32137af24491141cb0ad473cd5a13c7f2710a24df43596d56ef41583c8b80136"
    },
    {
      "slug": "rockets",
      "appId": "rockets",
      "name": "Rockets",
      "shortName": "Rockets",
      "version": "1.0",
      "tagline": "Catch stars in a dark sky. One link puts a friend in it with you.",
      "author": {
        "name": "lauthieb",
        "url": "https://github.com/lauthieb/rocket-universe"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "Rocket Universe",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-23",
      "updated": "2026-08-23",
      "categories": [
        "Games"
      ],
      "tags": [
        "arcade",
        "rockets",
        "multiplayer",
        "offline"
      ],
      "accent": [
        255,
        140,
        64
      ],
      "cover": "/apps/rockets/cover.jpg",
      "bytes": 204822,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-25"
      },
      "sha256": "2a3a6bc444b3c383fd97dbe314f8743fb132af6d6998fb3108deed27471768c1"
    },
    {
      "slug": "sandspiel",
      "appId": "sandspiel",
      "name": "Sandspiel",
      "shortName": "Sand",
      "version": "1.1.0",
      "tagline": "Pour sand, water, fire and plants. Watch them react.",
      "author": {
        "name": "Max Bittker",
        "url": "https://github.com/MaxBittker/sandspiel"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "Sandspiel",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-24",
      "updated": "2026-08-24",
      "categories": [
        "Creativity",
        "Games"
      ],
      "tags": [
        "sand",
        "falling-sand",
        "elements",
        "paint",
        "toy",
        "multiplayer",
        "offline"
      ],
      "accent": [
        230,
        196,
        110
      ],
      "cover": "/apps/sandspiel/cover.jpg",
      "bytes": 283727,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-25"
      },
      "sha256": "3b452b0c67ae40dfd6ce28a3759c08070fbd0cf660be5817e7d33b67c434f531"
    },
    {
      "slug": "server-survival",
      "appId": "server-survival",
      "name": "Server Survival",
      "shortName": "Servers",
      "version": "1.0",
      "tagline": "You are the cloud architect. Packets are coming — survive the traffic.",
      "author": {
        "name": "Kostyantyn Pshenychnyy",
        "url": "https://github.com/pshenok/server-survival"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "Server Survival",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-24",
      "updated": "2026-08-24",
      "categories": [
        "Games",
        "Learning"
      ],
      "tags": [
        "tower-defense",
        "cloud",
        "infrastructure",
        "campaign",
        "offline"
      ],
      "accent": [
        0,
        255,
        133
      ],
      "cover": "/apps/server-survival/cover.jpg",
      "bytes": 13173568,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-27"
      },
      "sha256": "78312e315c9215bf6142d6931e3bb75c258e3cde8fff33a26e84a29db9d4d1c4"
    },
    {
      "slug": "shapez",
      "appId": "shapez",
      "name": "shapez.io",
      "shortName": "shapez",
      "version": "1.0.0",
      "tagline": "The factory lives in the GIF. One invite, and a friend is on the same belts.",
      "author": {
        "name": "tobspr Games",
        "url": "https://github.com/tobspr-games/shapez.io"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "shapez.io",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-30",
      "updated": "2026-08-30",
      "categories": [
        "Games"
      ],
      "tags": [
        "shapez",
        "factory",
        "automation",
        "belts",
        "puzzle",
        "multiplayer",
        "offline",
        "coop"
      ],
      "accent": [
        102,
        167,
        255
      ],
      "cover": "/apps/shapez/cover.jpg",
      "bytes": 253010,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-09-01"
      },
      "sha256": "a921b36d9875906490355bd343fe200ecd4d62623500851bb54d3d9628f7cb6c"
    },
    {
      "slug": "signature-pad",
      "appId": "signature-pad",
      "name": "Signature Pad",
      "shortName": "Sign",
      "version": "1.0",
      "tagline": "Sign with a finger, save the picture. Your signature stays on your device.",
      "author": {
        "name": "szimek",
        "url": "https://github.com/szimek/signature_pad"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "signature_pad",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-23",
      "updated": "2026-08-23",
      "categories": [
        "Utilities"
      ],
      "tags": [
        "signature",
        "sign",
        "pad",
        "png",
        "offline",
        "multiplayer"
      ],
      "accent": [
        36,
        72,
        156
      ],
      "cover": "/apps/signature-pad/cover.jpg",
      "bytes": 201037,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-26"
      },
      "sha256": "8a42b72dd5c3113cf1ecd7779adcc99aa9bde2ab93a53bdc4d4a729dc92fdef4"
    },
    {
      "slug": "skifree",
      "appId": "skifree",
      "name": "SkiFree",
      "shortName": "Ski",
      "version": "1.0",
      "tagline": "SkiFree on a phone: tilt to steer, race a friend's ghost.",
      "author": {
        "name": "basicallydan",
        "url": "https://github.com/basicallydan/skifree.js"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "SkiFree.js",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-23",
      "updated": "2026-08-23",
      "categories": [
        "Games"
      ],
      "tags": [
        "ski",
        "arcade",
        "yeti",
        "multiplayer",
        "touch",
        "tilt",
        "offline"
      ],
      "accent": [
        40,
        132,
        196
      ],
      "cover": "/apps/skifree/cover.jpg",
      "bytes": 215228,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-25"
      },
      "sha256": "d4b641fd73d86c93d6abacabd1c0df7b91128d08de441a3f393e85df42babd94"
    },
    {
      "slug": "slots",
      "appId": "slots",
      "name": "Slots",
      "shortName": "Slots",
      "version": "1.1",
      "tagline": "Five fruit reels and a lever. Friends watch the same spin from one link.",
      "author": {
        "name": "johakr",
        "url": "https://github.com/johakr/html5-slot-machine"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "html5-slot-machine",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-24",
      "updated": "2026-08-24",
      "categories": [
        "Games"
      ],
      "tags": [
        "slots",
        "party",
        "reels",
        "arcade",
        "multiplayer",
        "offline"
      ],
      "accent": [
        212,
        160,
        48
      ],
      "cover": "/apps/slots/cover.jpg",
      "bytes": 194567,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-25"
      },
      "sha256": "cf7b3ff46fab5dbf2ff10d26052eeb6ac1046b9df489b9ce44545e15bd342670"
    },
    {
      "slug": "smartcrop",
      "appId": "smartcrop",
      "name": "Smartcrop",
      "shortName": "Smartcrop",
      "version": "1.0.0",
      "tagline": "Content-aware crop on this device — faces stay in the frame.",
      "author": {
        "name": "Jonas Wagner",
        "url": "https://github.com/jwagner/smartcrop.js"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "smartcrop.js",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-30",
      "updated": "2026-08-30",
      "categories": [
        "Creativity"
      ],
      "tags": [
        "crop",
        "photo",
        "faces",
        "twitter",
        "offline",
        "smartcrop"
      ],
      "accent": [
        232,
        184,
        72
      ],
      "cover": "/apps/smartcrop/cover.jpg",
      "bytes": 201560,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-31"
      },
      "sha256": "56263b301d4ebcde1e4bbbe13ec1b2699b11d1f8fb24f8cdaf8397efe45af291"
    },
    {
      "slug": "snake",
      "appId": "snake",
      "name": "Snake",
      "shortName": "Snake",
      "version": "1.0.0",
      "tagline": "Two snakes on one grid. Send a friend the link.",
      "author": {
        "name": "patorjk",
        "url": "https://github.com/patorjk/JavaScript-Snake"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "JavaScript Snake",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-23",
      "updated": "2026-08-23",
      "categories": [
        "Games"
      ],
      "tags": [
        "snake",
        "arcade",
        "classic",
        "multiplayer",
        "offline"
      ],
      "accent": [
        56,
        176,
        72
      ],
      "cover": "/apps/snake/cover.jpg",
      "bytes": 198540,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-25"
      },
      "sha256": "83f8ec72a47e77d56b734a9b6ec8fac7aeb057aed2f6ec7d24c8b94de1db9cfc"
    },
    {
      "slug": "sokoban",
      "appId": "sokoban",
      "name": "Sokoban",
      "shortName": "Sokoban",
      "version": "1.0",
      "tagline": "Push the boxes onto the spots. Race a friend on the same warehouse.",
      "author": {
        "name": "klevze",
        "url": "https://github.com/klevze/sokoban"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "sokoban",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-23",
      "updated": "2026-08-23",
      "categories": [
        "Games"
      ],
      "tags": [
        "sokoban",
        "puzzle",
        "boxes",
        "multiplayer",
        "race",
        "offline"
      ],
      "accent": [
        201,
        148,
        58
      ],
      "cover": "/apps/sokoban/cover.jpg",
      "bytes": 200764,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-24"
      },
      "sha256": "784e5ad59f221488a21fc0110e7e322c2f1a2d648bbb572304afa62cff4641a3"
    },
    {
      "slug": "solitaire",
      "appId": "solitaire",
      "name": "Solitaire",
      "shortName": "Solitaire",
      "version": "1.1",
      "tagline": "Klondike with undo, sized for a phone. Close it mid-deal — it keeps.",
      "author": {
        "name": "rjanjic",
        "url": "https://github.com/rjanjic/js-solitaire"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "js-solitaire",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-24",
      "updated": "2026-08-24",
      "categories": [
        "Games"
      ],
      "tags": [
        "solitaire",
        "klondike",
        "cards",
        "patience",
        "offline"
      ],
      "accent": [
        26,
        122,
        58
      ],
      "cover": "/apps/solitaire/cover.jpg",
      "bytes": 193527,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-30"
      },
      "sha256": "c07a466927ce536fde68cc84924559acee7310ffbd0692d6d4842c6dd028948a"
    },
    {
      "slug": "sound-it-out",
      "appId": "sound-it-out",
      "name": "Sound It Out",
      "shortName": "SoundItOut",
      "version": "1.6.0",
      "tagline": "Any sentence they love, built up from its sounds — in your own voice.",
      "author": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-08",
      "updated": "2026-08-09",
      "categories": [
        "Learning"
      ],
      "tags": [
        "phonics",
        "reading",
        "down-syndrome",
        "literacy",
        "sight-words",
        "kids",
        "speech",
        "accessibility"
      ],
      "accent": [
        255,
        209,
        102
      ],
      "cover": "/apps/sound-it-out/cover.jpg",
      "bytes": 3887335,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-29"
      },
      "sha256": "1bc2426b0a98107389fab2ced6641c1bb51ead0e09fd89d7c7ebe824a697c795"
    },
    {
      "slug": "spider",
      "appId": "spider",
      "name": "Spider",
      "shortName": "Spider",
      "version": "1.1",
      "tagline": "Spider solitaire with 1, 2 or 4 suits. Your deal is saved.",
      "author": {
        "name": "lklynet",
        "url": "https://github.com/lklynet/spider-solitaire"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "spider-solitaire",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-24",
      "updated": "2026-08-24",
      "categories": [
        "Games"
      ],
      "tags": [
        "spider",
        "solitaire",
        "cards",
        "patience",
        "offline"
      ],
      "accent": [
        48,
        90,
        48
      ],
      "cover": "/apps/spider/cover.jpg",
      "bytes": 194196,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-30"
      },
      "sha256": "f3647cefea5df5bddb892fb6167fe3527df9c1fd6e19b437080c0d8c46925457"
    },
    {
      "slug": "splat",
      "appId": "splat",
      "name": "Splat",
      "shortName": "Splat",
      "version": "1.0.0",
      "tagline": "A small 3D scene you can walk around, packed whole into the app.",
      "author": {
        "name": "antimatter15",
        "url": "https://github.com/antimatter15/splat"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "splat",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-23",
      "updated": "2026-08-23",
      "categories": [
        "Media",
        "Creativity"
      ],
      "tags": [
        "3d",
        "splat",
        "viewer",
        "scene",
        "orbit",
        "offline"
      ],
      "accent": [
        70,
        110,
        255
      ],
      "cover": "/apps/splat/cover.jpg",
      "bytes": 200470,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-29"
      },
      "sha256": "f7381ac883a3f7d4ab66527ddeaa8ddb5bb4d4b80b83697de91385b8a84d8b97"
    },
    {
      "slug": "spyfall",
      "appId": "spyfall",
      "name": "Spyfall",
      "shortName": "Spyfall",
      "version": "1.0",
      "tagline": "One link deals everyone a role. One of you is the spy.",
      "author": {
        "name": "tannerkrewson",
        "url": "https://github.com/tannerkrewson/spyfall"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "Spyfall",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-23",
      "updated": "2026-08-23",
      "categories": [
        "Games"
      ],
      "tags": [
        "spyfall",
        "party",
        "spy",
        "multiplayer",
        "offline"
      ],
      "accent": [
        196,
        40,
        48
      ],
      "cover": "/apps/spyfall/cover.jpg",
      "bytes": 198513,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-25"
      },
      "sha256": "19f805812973672881cf809ea261e4d883a4546a5f17e198954db357cd6719f2"
    },
    {
      "slug": "sql-playground",
      "appId": "sql-playground",
      "name": "SQL Playground",
      "shortName": "SQL",
      "version": "1.0.0",
      "tagline": "A SQLite database that lives in this file. Invite shares it.",
      "author": {
        "name": "sql.js authors",
        "url": "https://github.com/sql-js/sql.js"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "sql.js",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-30",
      "updated": "2026-08-30",
      "categories": [
        "Developer",
        "Utilities"
      ],
      "tags": [
        "sql",
        "sqlite",
        "database",
        "query",
        "offline"
      ],
      "accent": [
        61,
        190,
        160
      ],
      "cover": "/apps/sql-playground/cover.jpg",
      "bytes": 751808,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-31"
      },
      "sha256": "96ef76c1463d2768702fe3e0c3aea945664b8296157bfe07f77e1e37ba69630f"
    },
    {
      "slug": "squoosh",
      "appId": "squoosh",
      "name": "Squoosh",
      "shortName": "Squoosh",
      "version": "1.0",
      "tagline": "Make images smaller, on this device. Nothing is uploaded.",
      "author": {
        "name": "GoogleChromeLabs",
        "url": "https://github.com/GoogleChromeLabs/squoosh"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "Squoosh",
        "blessed": false
      },
      "minBuild": 1178,
      "offline": true,
      "releaseDate": "2026-08-22",
      "updated": "2026-08-22",
      "categories": [
        "Media",
        "Utilities",
        "Creativity"
      ],
      "tags": [
        "image",
        "compression",
        "jpeg",
        "webp",
        "avif",
        "jxl",
        "png",
        "qoi",
        "offline",
        "squoosh"
      ],
      "accent": [
        0,
        149,
        255
      ],
      "cover": "/apps/squoosh/cover.jpg",
      "bytes": 2632832,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-29"
      },
      "sha256": "c53240beb48301e638c910715dce9f3d878c3737e2486de19f1763f733db4bcb"
    },
    {
      "slug": "star-battle",
      "appId": "star-battle",
      "name": "Star Battle",
      "shortName": "Star Battle",
      "version": "1.0.1",
      "tagline": "Friends who open your link fly extra ships in the same sky.",
      "author": {
        "name": "gd4Ark",
        "url": "https://github.com/gd4Ark/star-battle"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "Star Battle",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-23",
      "updated": "2026-08-23",
      "categories": [
        "Games"
      ],
      "tags": [
        "shmup",
        "arcade",
        "space",
        "multiplayer",
        "offline"
      ],
      "accent": [
        232,
        176,
        48
      ],
      "cover": "/apps/star-battle/cover.jpg",
      "bytes": 789403,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-25"
      },
      "sha256": "f6958af63fe7c79bf602fdf0cc1f32dc84ecd1b4cc1b965f6f34b2bcf42eda63"
    },
    {
      "slug": "stolen-sword",
      "appId": "stolen-sword",
      "name": "Stolen Sword",
      "shortName": "Sword",
      "version": "1.0.0",
      "tagline": "One finger, a stolen blade, and a thief who will not stop running.",
      "author": {
        "name": "chiaogu",
        "url": "https://github.com/chiaogu"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "Stolen Sword",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-23",
      "updated": "2026-08-23",
      "categories": [
        "Games"
      ],
      "tags": [
        "action",
        "sword",
        "platformer",
        "js13k",
        "touch",
        "multiplayer",
        "offline"
      ],
      "accent": [
        104,
        158,
        131
      ],
      "cover": "/apps/stolen-sword/cover.jpg",
      "bytes": 196766,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-29"
      },
      "sha256": "51da4bfe30f7ce5bb13e3ab3107349978bc25ff3cd535e884ed3024f3aa7fe1a"
    },
    {
      "slug": "super-sudoku",
      "appId": "super-sudoku",
      "name": "Super Sudoku",
      "shortName": "Sudoku",
      "version": "1.0",
      "tagline": "A full sudoku. Race a friend on the same puzzle.",
      "author": {
        "name": "TN1ck",
        "url": "https://github.com/TN1ck/super-sudoku"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "Super Sudoku",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-23",
      "updated": "2026-08-23",
      "categories": [
        "Games"
      ],
      "tags": [
        "sudoku",
        "puzzle",
        "numbers",
        "multiplayer",
        "race",
        "offline"
      ],
      "accent": [
        13,
        148,
        136
      ],
      "cover": "/apps/super-sudoku/cover.jpg",
      "bytes": 297837,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-25"
      },
      "sha256": "c41213dfb60ad125e3350ae409ff6243f9e097a636a7f72a66a62a121aa07420"
    },
    {
      "slug": "svg-edit",
      "appId": "svg-edit",
      "name": "SVG-Edit",
      "shortName": "SVG-Edit",
      "version": "7.4.2",
      "tagline": "Draw SVG on this device — the file is the save, and one invite is a shared canvas.",
      "author": {
        "name": "SVG-Edit authors",
        "url": "https://github.com/SVG-Edit/svgedit"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "SVG-Edit",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-30",
      "updated": "2026-08-30",
      "categories": [
        "Creativity"
      ],
      "tags": [
        "svg",
        "vector",
        "drawing",
        "editor",
        "offline",
        "multiplayer"
      ],
      "accent": [
        249,
        188,
        1
      ],
      "cover": "/apps/svg-edit/cover.jpg",
      "bytes": 1434566,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-09-02"
      },
      "sha256": "642f304592fd51a6b637195f922acd2f30dde1bd7571eab46187e0df90fdc413"
    },
    {
      "slug": "svgomg",
      "appId": "svgomg",
      "name": "SVGOMG",
      "shortName": "SVGOMG",
      "version": "1.0",
      "tagline": "Make SVG files smaller. Watch the bytes fall as you tune.",
      "author": {
        "name": "jakearchibald",
        "url": "https://github.com/jakearchibald/svgomg"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "SVGOMG",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-23",
      "updated": "2026-08-23",
      "categories": [
        "Utilities"
      ],
      "tags": [
        "svg",
        "optimize",
        "minify",
        "vector",
        "image",
        "offline",
        "svgomg"
      ],
      "accent": [
        63,
        81,
        181
      ],
      "cover": "/apps/svgomg/cover.jpg",
      "bytes": 508977,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-26"
      },
      "sha256": "4175c191716c45e6119f32cb18e4767c95c7764aa2026fd3c3074e2e14e5dc4b"
    },
    {
      "slug": "tanks",
      "appId": "tanks",
      "name": "Tanks",
      "shortName": "Tanks",
      "version": "1.1",
      "tagline": "Drive a tank. Friends who open your link drive the rest.",
      "author": {
        "name": "Sven Bergström",
        "url": "https://github.com/ruby0x1/realtime-multiplayer-in-html5"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "Realtime Multiplayer in HTML5",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-24",
      "updated": "2026-08-24",
      "categories": [
        "Games"
      ],
      "tags": [
        "tanks",
        "shooter",
        "multiplayer",
        "canvas",
        "arena"
      ],
      "accent": [
        200,
        140,
        40
      ],
      "cover": "/apps/tanks/cover.jpg",
      "bytes": 195506,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-25"
      },
      "sha256": "5aa118677ca49bd06764ae3e990748e32e90da99a47cb5ef097014b70e25a2cb"
    },
    {
      "slug": "tesseract",
      "appId": "tesseract",
      "name": "Tesseract OCR",
      "shortName": "OCR",
      "version": "1.0",
      "tagline": "Point it at a photo or a page; the words come out. OCR runs on your device.",
      "author": {
        "name": "naptha",
        "url": "https://github.com/naptha/tesseract.js"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "Tesseract.js",
        "blessed": false
      },
      "minBuild": 1381,
      "offline": true,
      "releaseDate": "2026-08-22",
      "updated": "2026-08-22",
      "categories": [
        "Utilities"
      ],
      "tags": [
        "ocr",
        "tesseract",
        "photo",
        "scan",
        "text",
        "english",
        "offline"
      ],
      "accent": [
        224,
        152,
        48
      ],
      "cover": "/apps/tesseract/cover.jpg",
      "bytes": 1699712,
      "download": 0,
      "optionalCount": 1,
      "optionalDownload": 15400601,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-26"
      },
      "sha256": "6c5b5080fb8e4d323a15522383c667a3bbfed794a3a59238a262d785622c3cc0"
    },
    {
      "slug": "texgen",
      "appId": "texgen",
      "name": "TexGen",
      "shortName": "TexGen",
      "version": "1.1",
      "tagline": "Procedural textures, live — tweak the recipe, watch it redraw.",
      "author": {
        "name": "mrdoob",
        "url": "https://github.com/mrdoob/texgen.js"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "texgen.js",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-24",
      "updated": "2026-08-24",
      "categories": [
        "Creativity"
      ],
      "tags": [
        "texture",
        "procedural",
        "png",
        "noise",
        "generator",
        "offline"
      ],
      "accent": [
        80,
        180,
        220
      ],
      "cover": "/apps/texgen/cover.jpg",
      "bytes": 197753,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-25"
      },
      "sha256": "0dab2e65127091bf0a0d31720094686701d7ff9685211124c5526f05e044dd66"
    },
    {
      "slug": "the-house",
      "appId": "the-house",
      "name": "The House",
      "shortName": "House",
      "version": "1.1.0",
      "tagline": "You wake in a room you do not know. Find the way out.",
      "author": {
        "name": "Artur Kot",
        "url": "https://github.com/arturkot"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "The House",
        "blessed": false
      },
      "minBuild": 1206,
      "offline": true,
      "releaseDate": "2026-08-24",
      "updated": "2026-08-24",
      "categories": [
        "Games"
      ],
      "tags": [
        "adventure",
        "point-and-click",
        "walking-sim",
        "escape",
        "offline"
      ],
      "accent": [
        176,
        110,
        48
      ],
      "cover": "/apps/the-house/cover.jpg",
      "bytes": 18350507,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-25"
      },
      "sha256": "e8684c754aefe6280ccefe82ee896b6a38c8ef1b50e62a5182e0073921544fe9"
    },
    {
      "slug": "thinktank",
      "appId": "thinktank",
      "name": "Thinktank",
      "shortName": "Thinktank",
      "version": "1.0",
      "tagline": "Destroy the other base — against the computer, or a friend from one link.",
      "author": {
        "name": "averycrespi",
        "url": "https://github.com/averycrespi"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "Thinktank",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-23",
      "updated": "2026-08-23",
      "categories": [
        "Games"
      ],
      "tags": [
        "abstract",
        "strategy",
        "board",
        "multiplayer",
        "offline"
      ],
      "accent": [
        226,
        74,
        74
      ],
      "cover": "/apps/thinktank/cover.jpg",
      "bytes": 208722,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-25"
      },
      "sha256": "3f06814aec452ec169dc6a1f6e12effe156d0a4786fda65644585b1673999048"
    },
    {
      "slug": "thumb-sprint",
      "appId": "thumb-sprint",
      "name": "Thumb Sprint",
      "shortName": "Sprint",
      "version": "1.0.0",
      "tagline": "Mash your thumb to sprint. A friend races the next lane from one link.",
      "author": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-23",
      "updated": "2026-08-23",
      "categories": [
        "Games"
      ],
      "tags": [
        "race",
        "party",
        "multiplayer",
        "touch",
        "offline"
      ],
      "accent": [
        255,
        92,
        74
      ],
      "cover": "/apps/thumb-sprint/cover.jpg",
      "bytes": 225768,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-25"
      },
      "sha256": "8d1a776c193bf55de28f1b159aad238aa531b95079f46cd7cbc2d43b402b8a99"
    },
    {
      "slug": "tic-tac-toe",
      "appId": "tic-tac-toe",
      "name": "Tic-Tac-Toe",
      "shortName": "TicTacToe",
      "version": "1.0",
      "tagline": "The computer plays perfectly. Bring a friend if you want to win.",
      "author": {
        "name": "Colyseus",
        "url": "https://github.com/colyseus/demo-tic-tac-toe"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "Colyseus Tic-Tac-Toe",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-23",
      "updated": "2026-08-23",
      "categories": [
        "Games"
      ],
      "tags": [
        "tic-tac-toe",
        "noughts-and-crosses",
        "board",
        "multiplayer",
        "offline"
      ],
      "accent": [
        232,
        208,
        148
      ],
      "cover": "/apps/tic-tac-toe/cover.jpg",
      "bytes": 253861,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-25"
      },
      "sha256": "e59a1b1be54ad754b27d258a05485357d3f3a8c2e86ea94ad559763d156ae6bb"
    },
    {
      "slug": "tic80",
      "appId": "tic80",
      "name": "TIC-80",
      "shortName": "TIC-80",
      "version": "1.1.2837",
      "tagline": "The cart lives in this GIF. Close it, the game is still in there. Invite, and they play the one you just made.",
      "author": {
        "name": "Vadim Grigoruk",
        "url": "https://github.com/nesbox/TIC-80"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "TIC-80",
        "blessed": false
      },
      "minBuild": 1314,
      "offline": true,
      "releaseDate": "2026-08-30",
      "updated": "2026-08-30",
      "categories": [
        "Games",
        "Creativity"
      ],
      "tags": [
        "tic-80",
        "pico-8",
        "fantasy-computer",
        "lua",
        "pixel",
        "offline",
        "multiplayer",
        "cart"
      ],
      "accent": [
        65,
        166,
        246
      ],
      "cover": "/apps/tic80/cover.jpg",
      "bytes": 2940330,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-09-01"
      },
      "sha256": "985c52c9e75dc3140ddb360055a57f4b789dc73786f75b865933be8a00ee65fd"
    },
    {
      "slug": "tiddlywiki",
      "appId": "tiddlywiki",
      "name": "TiddlyWiki",
      "shortName": "Wiki",
      "version": "5.4.1",
      "tagline": "The wiki is the GIF — close it, hand it over, or invite someone in.",
      "author": {
        "name": "Jeremy Ruston & UnaMesa Association",
        "url": "https://tiddlywiki.com"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "TiddlyWiki 5",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-30",
      "updated": "2026-08-30",
      "categories": [
        "Productivity"
      ],
      "tags": [
        "wiki",
        "notes",
        "notebook",
        "tiddlywiki",
        "markdown",
        "offline",
        "multiplayer"
      ],
      "accent": [
        216,
        148,
        72
      ],
      "cover": "/apps/tiddlywiki/cover.jpg",
      "bytes": 1030620,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-31"
      },
      "sha256": "1cc759d938d4f7fcd1df302c48073904dad1759a42991172f4edb69e639833f0"
    },
    {
      "slug": "tiny-platformer",
      "appId": "tiny-platformer",
      "name": "Tiny Platformer",
      "shortName": "Platformer",
      "version": "1.0.1",
      "tagline": "A yellow square, a brick cave, and a best run that is still there when you come back.",
      "author": {
        "name": "Jake Gordon",
        "url": "https://github.com/jakesgordon/javascript-tiny-platformer"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "Tiny Platformer",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-24",
      "updated": "2026-08-24",
      "categories": [
        "Games"
      ],
      "tags": [
        "platformer",
        "arcade",
        "jump",
        "offline"
      ],
      "accent": [
        236,
        208,
        120
      ],
      "cover": "/apps/tiny-platformer/cover.jpg",
      "bytes": 191736,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-27"
      },
      "sha256": "8678ff277d74567192c6b98991bab4b0ee320a517933b8a73c0c8010d92a3917"
    },
    {
      "slug": "tiny-yurts",
      "appId": "tiny-yurts",
      "name": "Tiny Yurts",
      "shortName": "Yurts",
      "version": "1.1.0",
      "tagline": "Drag a path from the yurt to the farm. The file keeps your best.",
      "author": {
        "name": "burntcustard",
        "url": "https://github.com/burntcustard/tiny-yurts"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "Tiny Yurts",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-24",
      "updated": "2026-08-24",
      "categories": [
        "Games"
      ],
      "tags": [
        "puzzle",
        "js13k",
        "paths",
        "offline"
      ],
      "accent": [
        90,
        160,
        70
      ],
      "cover": "/apps/tiny-yurts/cover.jpg",
      "bytes": 205846,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-24"
      },
      "sha256": "905a5d73626398b18cf048fc6a8acb226d36df6f6d155bbb19539c9b088739d6"
    },
    {
      "slug": "tip-creators",
      "appId": "tip-creators",
      "name": "Tip GifOS Creators",
      "shortName": "Tip",
      "version": "1.0",
      "tagline": "Like GifOS? Buy the people who make it a coffee.",
      "author": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-25",
      "updated": "2026-08-25",
      "categories": [
        "Utilities"
      ],
      "tags": [
        "tip",
        "support",
        "donate",
        "thanks",
        "paypal",
        "usdc"
      ],
      "accent": [
        255,
        196,
        57
      ],
      "cover": "/apps/tip-creators/cover.jpg",
      "bytes": 184214,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-26"
      },
      "pay": {
        "to": "0x1111111111111111111111111111111111111111"
      },
      "sha256": "a0fc040110b60322afe273244b4b06fe9176fa440b53a0e0bc6288ed40b4b284"
    },
    {
      "slug": "tosios",
      "appId": "tosios",
      "name": "TOSIOS",
      "shortName": "TOSIOS",
      "version": "1.0",
      "tagline": "A top-down dungeon, a staff, and whoever you send the link to.",
      "author": {
        "name": "halftheopposite",
        "url": "https://github.com/halftheopposite/TOSIOS"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "TOSIOS",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-23",
      "updated": "2026-08-23",
      "categories": [
        "Games"
      ],
      "tags": [
        "shooter",
        "top-down",
        "multiplayer",
        "dungeon",
        "io",
        "deathmatch"
      ],
      "accent": [
        220,
        72,
        88
      ],
      "cover": "/apps/tosios/cover.jpg",
      "bytes": 200611,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-29"
      },
      "sha256": "5fa9e715796620393c2b821e9876cb76c2de66aaabc8bf52c5b26f2822d734b5"
    },
    {
      "slug": "tower-defense",
      "appId": "tower-defense",
      "name": "Tower Defense",
      "shortName": "TD",
      "version": "1.0",
      "tagline": "Pick a tower, tap a square. Don't let them through.",
      "author": {
        "name": "oldj",
        "url": "https://github.com/oldj/html5-tower-defense"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "HTML5 Tower Defense",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-23",
      "updated": "2026-08-23",
      "categories": [
        "Games"
      ],
      "tags": [
        "tower",
        "defense",
        "map",
        "multiplayer",
        "offline"
      ],
      "accent": [
        26,
        116,
        186
      ],
      "cover": "/apps/tower-defense/cover.jpg",
      "bytes": 230723,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-24"
      },
      "sha256": "aee6a48cc4ea57d1413d6a86aa99a88635182f95983d0aa969022a5e8e33bd90"
    },
    {
      "slug": "tower-game",
      "appId": "tower-game",
      "name": "Tower Game",
      "shortName": "Tower",
      "version": "1.0",
      "tagline": "Tap to drop each floor. Race a friend to the tallest tower.",
      "author": {
        "name": "iamkun",
        "url": "https://github.com/iamkun/tower_game"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "Tower Building Game",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-23",
      "updated": "2026-08-23",
      "categories": [
        "Games"
      ],
      "tags": [
        "arcade",
        "tap",
        "stacking",
        "multiplayer",
        "race"
      ],
      "accent": [
        249,
        82,
        64
      ],
      "cover": "/apps/tower-game/cover.jpg",
      "bytes": 875662,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-25"
      },
      "sha256": "96f237a9da571cfd55ba51db39da34308c2496c6408997dced23655377035509"
    },
    {
      "slug": "trianglify-studio",
      "appId": "trianglify-studio",
      "name": "Trianglify",
      "shortName": "Trianglify",
      "version": "1.0.0",
      "tagline": "Low-poly triangle wallpapers. The seed lives in the file. One invite shares it.",
      "author": {
        "name": "Quinn Rohlf",
        "url": "https://github.com/qrohlf/trianglify"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "Trianglify",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-30",
      "updated": "2026-08-30",
      "categories": [
        "Creativity"
      ],
      "tags": [
        "triangles",
        "wallpaper",
        "low-poly",
        "generator",
        "palette",
        "svg",
        "png",
        "multiplayer",
        "offline"
      ],
      "accent": [
        41,
        182,
        196
      ],
      "cover": "/apps/trianglify-studio/cover.jpg",
      "bytes": 251754,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-09-01"
      },
      "sha256": "1df69207b4e25def5801ac240b1833adf4bba3d5dc6d54ba4b982dd0af967760"
    },
    {
      "slug": "tuner",
      "appId": "tuner",
      "name": "Tuner",
      "shortName": "Tuner",
      "version": "1.1",
      "tagline": "Play a note; see the pitch. A chromatic tuner for any instrument.",
      "author": {
        "name": "Chris Wilson",
        "url": "https://github.com/cwilso/PitchDetect"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "PitchDetect",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-24",
      "updated": "2026-08-24",
      "categories": [
        "Learning"
      ],
      "tags": [
        "tuner",
        "pitch",
        "guitar",
        "note",
        "audio",
        "offline"
      ],
      "accent": [
        52,
        135,
        129
      ],
      "cover": "/apps/tuner/cover.jpg",
      "bytes": 192889,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-29"
      },
      "sha256": "73fefc7d924d445d86b563a4cd651283f21fd8caf123cc8fb8dee3e8e2725a40"
    },
    {
      "slug": "typing",
      "appId": "typing",
      "name": "Typing",
      "shortName": "Type",
      "version": "1.0",
      "tagline": "Typing practice that keeps your history — and lets you race a friend.",
      "author": {
        "name": "climech",
        "url": "https://github.com/climech/typing-practice"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "Programmer's Typing Practice",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-23",
      "updated": "2026-08-23",
      "categories": [
        "Learning"
      ],
      "tags": [
        "typing",
        "keyboard",
        "wpm",
        "offline",
        "multiplayer"
      ],
      "accent": [
        255,
        193,
        74
      ],
      "cover": "/apps/typing/cover.jpg",
      "bytes": 202259,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-27"
      },
      "sha256": "4049a68cdae154553d2d8044d94787fadacdc94c368a1ed1378720d53470f434"
    },
    {
      "slug": "ui-gradients",
      "appId": "ui-gradients",
      "name": "uiGradients",
      "shortName": "Gradients",
      "version": "1.0.0",
      "tagline": "Beautiful colour gradients. Browse, copy the CSS, keep favourites.",
      "author": {
        "name": "ghosh",
        "url": "https://github.com/ghosh/uiGradients"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "uiGradients",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-23",
      "updated": "2026-08-23",
      "categories": [
        "Creativity"
      ],
      "tags": [
        "gradients",
        "colours",
        "palette",
        "copy",
        "design",
        "multiplayer",
        "offline"
      ],
      "accent": [
        221,
        36,
        118
      ],
      "cover": "/apps/ui-gradients/cover.jpg",
      "bytes": 202674,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-29"
      },
      "sha256": "c715ba71fdd98e2036d393d3e97231f03aa8204fe9c40c7d778bf49c66b5af55"
    },
    {
      "slug": "underrun",
      "appId": "underrun",
      "name": "Underrun",
      "shortName": "Underrun",
      "version": "1.0.0",
      "tagline": "Underrun: the corridor shooter, complete in one GIF.",
      "author": {
        "name": "phoboslab",
        "url": "https://github.com/phoboslab"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "Underrun",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-23",
      "updated": "2026-08-23",
      "categories": [
        "Games"
      ],
      "tags": [
        "shooter",
        "twin-stick",
        "corridor",
        "multiplayer",
        "js13k",
        "offline"
      ],
      "accent": [
        204,
        136,
        0
      ],
      "cover": "/apps/underrun/cover.jpg",
      "bytes": 215872,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-25"
      },
      "sha256": "1281bea9f97e8ae41f5e00be660074523057661cb4cbccb58bd85cc0961f83f2"
    },
    {
      "slug": "v86",
      "appId": "v86",
      "name": "v86",
      "shortName": "v86",
      "version": "1.0.0",
      "tagline": "A PC inside a GIF — FreeDOS boots offline, and the floppy is the save.",
      "author": {
        "name": "copy / v86 contributors",
        "url": "https://github.com/copy/v86"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "v86",
        "blessed": false
      },
      "minBuild": 1314,
      "offline": true,
      "releaseDate": "2026-08-30",
      "updated": "2026-08-30",
      "categories": [
        "Utilities"
      ],
      "tags": [
        "emulator",
        "pc",
        "dos",
        "freedos",
        "x86",
        "offline",
        "retro"
      ],
      "accent": [
        72,
        220,
        96
      ],
      "cover": "/apps/v86/cover.jpg",
      "bytes": 2231480,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-31"
      },
      "sha256": "ab99f2443e0e0dec27b9af2781d35caf891ed9f6d1d995aa465ce92e5d7c00e6"
    },
    {
      "slug": "vintage-poker",
      "appId": "vintage-poker",
      "name": "Vintage Poker",
      "shortName": "Poker",
      "version": "1.1",
      "tagline": "Texas Hold'em with friends. Everyone who opens your link takes a seat.",
      "author": {
        "name": "Patrick Obermeier",
        "url": "https://github.com/Pobermeier/vintage-poker"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "Vintage Poker",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-24",
      "updated": "2026-08-24",
      "categories": [
        "Games"
      ],
      "tags": [
        "poker",
        "holdem",
        "cards",
        "party",
        "multiplayer",
        "offline"
      ],
      "accent": [
        26,
        122,
        58
      ],
      "cover": "/apps/vintage-poker/cover.jpg",
      "bytes": 199906,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-25"
      },
      "sha256": "cbb5d35a888b45fc7e7cfa02e828c9a98446abeaa37ab9ef75dbfac1105fb846"
    },
    {
      "slug": "vocal-remover",
      "appId": "vocal-remover",
      "name": "Vocal Remover",
      "shortName": "Vocals",
      "version": "1.0",
      "tagline": "Pull the singing out of a song, on your own device. Slowly, and for nothing.",
      "author": {
        "name": "Anjok07 & aufr33",
        "url": "https://github.com/Anjok07/ultimatevocalremovergui"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "Ultimate Vocal Remover",
        "blessed": false
      },
      "minBuild": 1381,
      "offline": true,
      "releaseDate": "2026-08-22",
      "updated": "2026-08-22",
      "categories": [
        "Media",
        "Creativity"
      ],
      "tags": [
        "audio",
        "stems",
        "karaoke",
        "acapella",
        "instrumental",
        "uvr",
        "offline",
        "gpu"
      ],
      "accent": [
        236,
        84,
        148
      ],
      "cover": "/apps/vocal-remover/cover.jpg",
      "bytes": 12486426,
      "download": 0,
      "optionalCount": 2,
      "optionalDownload": 119545940,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-26"
      },
      "sha256": "6c21712c63096417b2a9c3f08cf800433e6887cd18a6c1067298a58083341a2d"
    },
    {
      "slug": "waveforms",
      "appId": "waveforms",
      "name": "Waveforms",
      "shortName": "Waves",
      "version": "1.1",
      "tagline": "Hear sine, square, and saw. An explorable that fits a phone.",
      "author": {
        "name": "Josh Comeau",
        "url": "https://github.com/joshwcomeau/waveforms"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "Waveforms",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-24",
      "updated": "2026-08-24",
      "categories": [
        "Learning",
        "Creativity"
      ],
      "tags": [
        "sound",
        "waveform",
        "sine",
        "synthesis",
        "explorable",
        "offline"
      ],
      "accent": [
        77,
        163,
        255
      ],
      "cover": "/apps/waveforms/cover.jpg",
      "bytes": 194428,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-25"
      },
      "sha256": "33512cf4c7020630ecba7843967399b6af6c676e17a32dab07efb5d8c5b3dcea"
    },
    {
      "slug": "webamp",
      "appId": "webamp",
      "name": "Webamp",
      "shortName": "Webamp",
      "version": "1.0.0",
      "tagline": "Winamp 2.9 that lives in a GIF — playlist, EQ, and your MP3s stay in the file, even on a plane.",
      "author": {
        "name": "Jordan Eldredge",
        "url": "https://github.com/captbaritone/webamp"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "Webamp",
        "blessed": false
      },
      "minBuild": 2154,
      "offline": true,
      "releaseDate": "2026-08-30",
      "updated": "2026-08-30",
      "categories": [
        "Media",
        "Creativity"
      ],
      "tags": [
        "winamp",
        "mp3",
        "player",
        "equalizer",
        "playlist",
        "skins",
        "offline",
        "multiplayer"
      ],
      "accent": [
        0,
        255,
        0
      ],
      "cover": "/apps/webamp/cover.jpg",
      "bytes": 639683,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-31"
      },
      "sha256": "37472152777feb7da3896fcae63a99e826033e6f372476c99509f6e8d14d2da3"
    },
    {
      "slug": "wifi-card",
      "appId": "wifi-card",
      "name": "WiFi Card",
      "shortName": "WiFi",
      "version": "1.0",
      "tagline": "Print a little card with your WiFi name, password and a QR code.",
      "author": {
        "name": "bndw",
        "url": "https://github.com/bndw/wifi-card"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "wifi-card",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-23",
      "updated": "2026-08-23",
      "categories": [
        "Utilities"
      ],
      "tags": [
        "wifi",
        "password",
        "print",
        "guest",
        "card",
        "offline"
      ],
      "accent": [
        33,
        118,
        199
      ],
      "cover": "/apps/wifi-card/cover.jpg",
      "bytes": 210299,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-29"
      },
      "sha256": "a6a260decb0c0b2270447d76243518b7c012ed47516be1b14a2c0d14fd23ddfa"
    },
    {
      "slug": "word-master",
      "appId": "word-master",
      "name": "Word Master",
      "shortName": "Words",
      "version": "1.0.0",
      "tagline": "Six guesses, as many words as you like. Race a friend on the same secret.",
      "author": {
        "name": "octokatherine",
        "url": "https://github.com/octokatherine/word-master"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "Word Master",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-23",
      "updated": "2026-08-23",
      "categories": [
        "Games"
      ],
      "tags": [
        "word",
        "puzzle",
        "guessing",
        "multiplayer",
        "offline"
      ],
      "accent": [
        99,
        170,
        85
      ],
      "cover": "/apps/word-master/cover.jpg",
      "bytes": 208450,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-24"
      },
      "sha256": "dd81df070c79c3849d9fcdd3129f20ae833a1bf1932bfa8e26728b675380eac2"
    },
    {
      "slug": "worldview",
      "appId": "worldview",
      "name": "Worldview",
      "shortName": "worldview",
      "version": "1.0.0",
      "tagline": "NASA's satellite pictures of the whole Earth, every day since 2000 — most of them hours old.",
      "author": {
        "name": "NASA EOSDIS Worldview",
        "url": "https://worldview.earthdata.nasa.gov"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "NASA Worldview",
        "blessed": false
      },
      "minBuild": 1089,
      "offline": false,
      "releaseDate": "2026-08-24",
      "updated": "2026-08-24",
      "categories": [
        "Learning",
        "Utilities",
        "Media"
      ],
      "tags": [
        "nasa",
        "satellite",
        "earth",
        "imagery",
        "weather",
        "climate",
        "fires",
        "map",
        "offline",
        "worldview",
        "gibs"
      ],
      "accent": [
        76,
        194,
        255
      ],
      "cover": "/apps/worldview/cover.jpg",
      "bytes": 1086277,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-25"
      },
      "sha256": "586de25a113d2d232585374b8a7c5f3af037d2c8ad54035cb3b8f074f5450556"
    },
    {
      "slug": "yahtzee",
      "appId": "yahtzee",
      "name": "Yahtzee",
      "shortName": "Yahtzee",
      "version": "1.0",
      "tagline": "Yahtzee over a meeting — everyone sees the same dice.",
      "author": {
        "name": "Alhissar",
        "url": "https://github.com/Alhissar/Yahtzee"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "Yahtzee",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-23",
      "updated": "2026-08-23",
      "categories": [
        "Games"
      ],
      "tags": [
        "yahtzee",
        "dice",
        "scorecard",
        "multiplayer",
        "offline"
      ],
      "accent": [
        26,
        122,
        58
      ],
      "cover": "/apps/yahtzee/cover.jpg",
      "bytes": 338104,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-30"
      },
      "sha256": "58bb888d829a21048123d6a4344299766ca889d085b79a965b037227cbb78147"
    },
    {
      "slug": "yopass",
      "appId": "yopass",
      "name": "Yopass",
      "shortName": "Yopass",
      "version": "1.0",
      "tagline": "Share a secret face to face: it goes device to device, not a server.",
      "author": {
        "name": "Johan Haals",
        "url": "https://github.com/jhaals/yopass"
      },
      "porter": {
        "name": "GifOS",
        "url": "https://gifos.app"
      },
      "basedOn": {
        "name": "Yopass",
        "blessed": false
      },
      "minBuild": 947,
      "offline": true,
      "releaseDate": "2026-08-24",
      "updated": "2026-08-24",
      "categories": [
        "Utilities"
      ],
      "tags": [
        "secret",
        "password",
        "privacy",
        "paste",
        "offline",
        "multiplayer"
      ],
      "accent": [
        46,
        125,
        210
      ],
      "cover": "/apps/yopass/cover.jpg",
      "bytes": 256937,
      "download": 0,
      "provides": null,
      "signature": {
        "type": "domain",
        "id": "gifos.app",
        "ts": "2026-08-26"
      },
      "sha256": "2d5b977b3da4c5992c17c5ce04ba8f6fcf72b866006d37fe3c4c82a52be6c821"
    }
  ]
}
