)]}'
{
  "log": [
    {
      "commit": "9b381990d30f66167095ba5cbaa646bf69c3530e",
      "tree": "94f6fc92a8db31f5be3828c2d64e0d75c82da1ec",
      "parents": [
        "cfa4c85c4c37de3c626cb407978ea98dc8d64303",
        "4c03abe4498e4900a5d4b1158380a79343c1a12c"
      ],
      "author": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Thu Mar 12 17:17:24 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Mar 12 17:17:24 2026 +0000"
      },
      "message": "Merge pull request #912 from 32blit/Daft-Freak-patch-1\n\npico: additional warning fix in blit_launch"
    },
    {
      "commit": "4c03abe4498e4900a5d4b1158380a79343c1a12c",
      "tree": "94f6fc92a8db31f5be3828c2d64e0d75c82da1ec",
      "parents": [
        "b4ec7ab4711611ffacc6dbbcbafe6eb252a022b0"
      ],
      "author": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Thu Mar 12 12:49:46 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Mar 12 12:49:46 2026 +0000"
      },
      "message": "pico: get_launch_path should return null if there is no path"
    },
    {
      "commit": "b4ec7ab4711611ffacc6dbbcbafe6eb252a022b0",
      "tree": "7dcffbf803a1fd0e0d28f755c63ca11171100e59",
      "parents": [
        "cfa4c85c4c37de3c626cb407978ea98dc8d64303"
      ],
      "author": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Thu Mar 12 12:38:51 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Mar 12 12:38:51 2026 +0000"
      },
      "message": "pico: additional warning fix in blit_launch"
    },
    {
      "commit": "cfa4c85c4c37de3c626cb407978ea98dc8d64303",
      "tree": "6772184b3068d454a9a58728c92725c234d81e78",
      "parents": [
        "b83d6c9b0eb04af8f053b8e88014193198fc3b18",
        "a89d4c87e020ab2c20f8720d39afc185d05d8a7d"
      ],
      "author": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Thu Mar 12 12:29:16 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Mar 12 12:29:16 2026 +0000"
      },
      "message": "Merge pull request #910 from Daft-Freak/wavstream\n\nAdd WavStream class"
    },
    {
      "commit": "b83d6c9b0eb04af8f053b8e88014193198fc3b18",
      "tree": "ed6508d6946238dc92372b0e31e03a3c98a9d527",
      "parents": [
        "1f96d3e9cf5fcd238bb5b704c594c60a6a7766ff",
        "e968b86c037d59e88c1369a8e287f9598b7644fb"
      ],
      "author": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Thu Mar 12 12:28:33 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Mar 12 12:28:33 2026 +0000"
      },
      "message": "Merge pull request #911 from Daft-Freak/pico-loader-handlers\n\npico: support file handlers/launch path"
    },
    {
      "commit": "e968b86c037d59e88c1369a8e287f9598b7644fb",
      "tree": "84b38c6f4becdd642e1a879cfde5e994f6efb098",
      "parents": [
        "225afb9e08577019c25e147aeeb833385495ee9f"
      ],
      "author": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Wed Mar 11 18:54:34 2026 +0000"
      },
      "committer": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Wed Mar 11 20:15:33 2026 +0000"
      },
      "message": "pico: add #ifdef BLIT_LOADER around BlitWriter\n\nUnbreaks non-loader RP2350 builds.\n"
    },
    {
      "commit": "1f96d3e9cf5fcd238bb5b704c594c60a6a7766ff",
      "tree": "9a247f8f449a3f8d07384906bbf7d2117998446b",
      "parents": [
        "c0a150b85f4a2753a4c2aac11adc1238298dfd24",
        "f6e96202eaad5c0f53c4814ba895bd36a1e312c7"
      ],
      "author": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Wed Mar 11 12:23:57 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Mar 11 12:23:57 2026 +0000"
      },
      "message": "Merge pull request #909 from Daft-Freak/pico-input-multi\n\npico: support multiple input drivers"
    },
    {
      "commit": "225afb9e08577019c25e147aeeb833385495ee9f",
      "tree": "d508cba00f8ddfdf41ae14303c03490c4847a723",
      "parents": [
        "1fb605edfb75c3dafd4e90cf7e5bfd1dbcb7090c"
      ],
      "author": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Tue Mar 10 11:22:08 2026 +0000"
      },
      "committer": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Tue Mar 10 15:06:28 2026 +0000"
      },
      "message": "pico: more #ifdefs around loader helpers\n"
    },
    {
      "commit": "1fb605edfb75c3dafd4e90cf7e5bfd1dbcb7090c",
      "tree": "f241dc89b45ecfcb8cca7530d8f47aeaed7ac5ec",
      "parents": [
        "66ba57d5c5c8b4f66ca74b316aac94a52384d7de"
      ],
      "author": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Mon Mar 09 22:28:05 2026 +0000"
      },
      "committer": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Tue Mar 10 15:06:10 2026 +0000"
      },
      "message": "pico: close open files when resetting the loader\n\nNow daftboy works more than twice\n"
    },
    {
      "commit": "66ba57d5c5c8b4f66ca74b316aac94a52384d7de",
      "tree": "856630ed9482f9acbf220ae7c0a333dab8143de7",
      "parents": [
        "110d3b5f9906901c1efc878d5a8d5db29d9d14a6"
      ],
      "author": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Mon Mar 09 22:16:17 2026 +0000"
      },
      "committer": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Tue Mar 10 15:05:59 2026 +0000"
      },
      "message": "pico: implement launch path\n"
    },
    {
      "commit": "110d3b5f9906901c1efc878d5a8d5db29d9d14a6",
      "tree": "7269c297e6b70e654fe85f8c3c2131dac24b9eb5",
      "parents": [
        "af9b634998485ca3712688ff5a74abcf95628451"
      ],
      "author": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Mon Mar 09 21:00:21 2026 +0000"
      },
      "committer": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Tue Mar 10 15:05:45 2026 +0000"
      },
      "message": "pico: stub launch file if we\u0027re not the loader\n"
    },
    {
      "commit": "af9b634998485ca3712688ff5a74abcf95628451",
      "tree": "0354de60971d04f79ba3f07665bd9fa3cc9e49f5",
      "parents": [
        "6ae6194d6822f4df15d93a3c18f12b903294c32d"
      ],
      "author": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Mon Mar 09 20:53:57 2026 +0000"
      },
      "committer": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Tue Mar 10 15:05:33 2026 +0000"
      },
      "message": "pico: remove erased handlers from list\n"
    },
    {
      "commit": "6ae6194d6822f4df15d93a3c18f12b903294c32d",
      "tree": "c509892eed9e22d073fba5b5a661474b43343673",
      "parents": [
        "85bfd98f02115a16d9ee0222cfda46cb2712f939"
      ],
      "author": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Mon Mar 09 20:46:44 2026 +0000"
      },
      "committer": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Tue Mar 10 15:05:23 2026 +0000"
      },
      "message": "pico: handle handlers in launch_file and can_launch\n\nNo launch path yet\n"
    },
    {
      "commit": "85bfd98f02115a16d9ee0222cfda46cb2712f939",
      "tree": "dd8e80b9e9bf8246f61d06863296f207ce670287",
      "parents": [
        "c77e19ca7d98709d6b0195dba7cf62ab4c274280"
      ],
      "author": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Mon Mar 09 20:45:14 2026 +0000"
      },
      "committer": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Tue Mar 10 15:05:08 2026 +0000"
      },
      "message": "pico: implement get_type_handler_metadata\n"
    },
    {
      "commit": "c77e19ca7d98709d6b0195dba7cf62ab4c274280",
      "tree": "4957652cd365d6601514d94cf4e322d713cc07cc",
      "parents": [
        "ca4c7218d6ae14e0d5b76e74b35db5db3a422619"
      ],
      "author": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Mon Mar 09 20:42:12 2026 +0000"
      },
      "committer": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Tue Mar 10 15:04:56 2026 +0000"
      },
      "message": "pico: build type handler list\n"
    },
    {
      "commit": "ca4c7218d6ae14e0d5b76e74b35db5db3a422619",
      "tree": "e0ab34ba5d12f0ed9a3e468b7ae52a9c1b42a040",
      "parents": [
        "c0a150b85f4a2753a4c2aac11adc1238298dfd24"
      ],
      "author": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Mon Mar 09 20:30:51 2026 +0000"
      },
      "committer": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Tue Mar 10 15:04:45 2026 +0000"
      },
      "message": "pico: split out file extension helper\n"
    },
    {
      "commit": "c0a150b85f4a2753a4c2aac11adc1238298dfd24",
      "tree": "27a8a03921964cc7b7ab505b5ac8ddc18a7eb541",
      "parents": [
        "58cbff29e3522f7ba0eacf801366a003134423c8",
        "dbc48298bf87606a4d52adb8c659b25cbe820c97"
      ],
      "author": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Tue Mar 10 13:47:30 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 10 13:47:30 2026 +0000"
      },
      "message": "Merge pull request #908 from Daft-Freak/pico-loader-fixes\n\nPico loader fixes"
    },
    {
      "commit": "f6e96202eaad5c0f53c4814ba895bd36a1e312c7",
      "tree": "c64d24a8dad8d5d6920552a0f5c3fec86070f8e7",
      "parents": [
        "3e76f03ed4aca043aa9d2fe4973226fd90a5b9a6"
      ],
      "author": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Mon Mar 09 12:35:41 2026 +0000"
      },
      "committer": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Mon Mar 09 12:35:41 2026 +0000"
      },
      "message": "pico: enable tca9555 driver for Tufty 2350\n"
    },
    {
      "commit": "a89d4c87e020ab2c20f8720d39afc185d05d8a7d",
      "tree": "fe3de585c075e3d5a457d62b5922faa7cf191b86",
      "parents": [
        "58cbff29e3522f7ba0eacf801366a003134423c8"
      ],
      "author": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Sat Jan 25 18:05:02 2025 +0000"
      },
      "committer": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Mon Mar 09 12:25:20 2026 +0000"
      },
      "message": "Add WavStream class\n\nLike MP3Stream, but for WAV files.\n"
    },
    {
      "commit": "3e76f03ed4aca043aa9d2fe4973226fd90a5b9a6",
      "tree": "500491944f655b9eabc30e6eb119276740b0d5e0",
      "parents": [
        "ce5cb322bae46f6186634e34d091f08c15918f8a"
      ],
      "author": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Sun Mar 08 17:31:56 2026 +0000"
      },
      "committer": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Mon Mar 09 12:07:40 2026 +0000"
      },
      "message": "pico: reset tca9555 address if read fails\n\nThis allows surviving a temporary disconnect\n"
    },
    {
      "commit": "ce5cb322bae46f6186634e34d091f08c15918f8a",
      "tree": "5de5c2d149d2a5557e90f1dc486e2045de244016",
      "parents": [
        "58cbff29e3522f7ba0eacf801366a003134423c8"
      ],
      "author": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Mon Mar 02 16:30:46 2026 +0000"
      },
      "committer": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Mon Mar 09 12:07:40 2026 +0000"
      },
      "message": "pico: rework input drivers to allow using multiple at once\n"
    },
    {
      "commit": "58cbff29e3522f7ba0eacf801366a003134423c8",
      "tree": "abe4ffb3933ceef6196ea0895f7a4a2fcddd8605",
      "parents": [
        "e6d273e6ca3a44b0957f6790d49fbf29bfe9dcb2",
        "161bf9c3e4a968c6e3e6426fb3d8cbfc5edad597"
      ],
      "author": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Mon Mar 09 11:54:43 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 09 11:54:43 2026 +0000"
      },
      "message": "Merge pull request #902 from Daft-Freak/tufty2350\n\nTufty2350"
    },
    {
      "commit": "dbc48298bf87606a4d52adb8c659b25cbe820c97",
      "tree": "57703f4458f28867b77254435656338d84849f87",
      "parents": [
        "a7f795bb39b4085290682e448e75d2473e4701b0"
      ],
      "author": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Sun Mar 08 15:32:09 2026 +0000"
      },
      "committer": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Mon Mar 09 11:49:11 2026 +0000"
      },
      "message": "pico: cleanup duplicates when doing PROG command\n"
    },
    {
      "commit": "a7f795bb39b4085290682e448e75d2473e4701b0",
      "tree": "ecd16c200c7930b4f5fe0bda7f104d7ae22ad7ce",
      "parents": [
        "acc8c640e3ee73c64a82795c4394fa15c796587f"
      ],
      "author": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Sun Mar 08 15:10:05 2026 +0000"
      },
      "committer": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Mon Mar 09 11:49:11 2026 +0000"
      },
      "message": "pico: don\u0027t pass type meta to cleanup_duplicates\n\nIt doesn\u0027t need it\n"
    },
    {
      "commit": "acc8c640e3ee73c64a82795c4394fa15c796587f",
      "tree": "61db5a8bc2ff8bb49635a578a2bfed34a4c22860",
      "parents": [
        "85bfce9ecb8c6b3c83c9fe2ef61edb16950b76f0"
      ],
      "author": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Sun Mar 08 13:00:39 2026 +0000"
      },
      "committer": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Mon Mar 09 11:49:11 2026 +0000"
      },
      "message": "pico: fail prepare_write if there isn\u0027t enough space\n\nInstead of erasing the loader, launcher and whaterver is after that\n"
    },
    {
      "commit": "85bfce9ecb8c6b3c83c9fe2ef61edb16950b76f0",
      "tree": "08b2f8e786d5ae959f3d3d207b93a46b9d973fdc",
      "parents": [
        "7c59c5ef509a7d03d18a724a7734bec6f8bda739"
      ],
      "author": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Sun Mar 08 12:59:27 2026 +0000"
      },
      "committer": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Mon Mar 09 11:49:11 2026 +0000"
      },
      "message": "pico: clear progress message on PROG/SAVE write error\n"
    },
    {
      "commit": "7c59c5ef509a7d03d18a724a7734bec6f8bda739",
      "tree": "3bbdd4a89b9b9a3b64f6c312d1b93a0b3520bcf1",
      "parents": [
        "57337ab9d101f2276b8bb1d4595e45e57e1e2915"
      ],
      "author": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Wed Mar 04 16:07:09 2026 +0000"
      },
      "committer": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Mon Mar 09 11:49:11 2026 +0000"
      },
      "message": "pico: prioritise loading a launcher over whatever thing is found first\n\nNow it\u0027s possible to restore the launcher from storage if it is lost, but there are still other things installed\n"
    },
    {
      "commit": "57337ab9d101f2276b8bb1d4595e45e57e1e2915",
      "tree": "2b0105791f51cacdc5a0258ed9918d38ffe48092",
      "parents": [
        "629431df7b364c6c249672c687363dfbad004969"
      ],
      "author": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Sun Feb 23 13:21:12 2025 +0000"
      },
      "committer": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Mon Mar 09 11:48:37 2026 +0000"
      },
      "message": "pico: sync stdio_usb changes to loader\n"
    },
    {
      "commit": "e6d273e6ca3a44b0957f6790d49fbf29bfe9dcb2",
      "tree": "f20f1b6b281641cd5c6aea1d0052f28011461853",
      "parents": [
        "629431df7b364c6c249672c687363dfbad004969",
        "da914de463c4ef96a60a5492c6d488364ff158ce"
      ],
      "author": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Sun Mar 08 17:54:01 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Mar 08 17:54:01 2026 +0000"
      },
      "message": "Merge pull request #907 from Daft-Freak/pico-tca9555-init-fix\n\npico: fix tca9555 gpio read initial value"
    },
    {
      "commit": "da914de463c4ef96a60a5492c6d488364ff158ce",
      "tree": "f20f1b6b281641cd5c6aea1d0052f28011461853",
      "parents": [
        "629431df7b364c6c249672c687363dfbad004969"
      ],
      "author": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Sun Mar 08 17:31:12 2026 +0000"
      },
      "committer": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Sun Mar 08 17:35:44 2026 +0000"
      },
      "message": "pico: fix tca9555 gpio read initial value\n\nNow we don\u0027t end up with all buttons pressed if the i2c gets disconnected\n"
    },
    {
      "commit": "629431df7b364c6c249672c687363dfbad004969",
      "tree": "2f7eb24627b1747e4f30b3d7fd10f67819415313",
      "parents": [
        "18b8d0f1aebab75c9306ea29b9475227b07c98fe",
        "e733d528668cf75e1db580a5b97a548bc437512e"
      ],
      "author": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Thu Mar 05 23:11:38 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Mar 05 23:11:38 2026 +0000"
      },
      "message": "Merge pull request #905 from 32blit/Daft-Freak-patch-1\n\npico: add an #ifdef RP2350 around find_flash_offset"
    },
    {
      "commit": "e733d528668cf75e1db580a5b97a548bc437512e",
      "tree": "2f7eb24627b1747e4f30b3d7fd10f67819415313",
      "parents": [
        "18b8d0f1aebab75c9306ea29b9475227b07c98fe"
      ],
      "author": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Thu Mar 05 22:18:00 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Mar 05 22:18:00 2026 +0000"
      },
      "message": "pico: add an #ifdef RP2350 around find_flash_offset\n\nThis is only used here and caused unused function warnings otherwise."
    },
    {
      "commit": "161bf9c3e4a968c6e3e6426fb3d8cbfc5edad597",
      "tree": "2aa99806500eb18ceb1830a8729040ab09dce85d",
      "parents": [
        "100ad834536b50e1da707c664880cc8ee7ffab58"
      ],
      "author": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Thu Mar 05 20:54:01 2026 +0000"
      },
      "committer": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Thu Mar 05 20:54:04 2026 +0000"
      },
      "message": "Add Tufty 2350 (.blit) build action\n\nNow there is a source of RP2350-compatible .blits\n"
    },
    {
      "commit": "100ad834536b50e1da707c664880cc8ee7ffab58",
      "tree": "d8de1a91201911d10dd6b642db0b7496ed881a1c",
      "parents": [
        "2e2812ca7c7b580b52bdfc2de00368baf1955cea"
      ],
      "author": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Thu Mar 05 20:36:32 2026 +0000"
      },
      "committer": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Thu Mar 05 20:36:32 2026 +0000"
      },
      "message": "pico: rename palette_buf_idx in DBI transpose code\n\nThis was copy/paste from the paletted mode code... which is not included here\n"
    },
    {
      "commit": "2e2812ca7c7b580b52bdfc2de00368baf1955cea",
      "tree": "b44b8313730acc2b14d0a823b8c3db9f6659e12f",
      "parents": [
        "9efa939158a162ce4725cdb14fd1b8cceb50cc23"
      ],
      "author": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Mon Feb 02 13:50:19 2026 +0000"
      },
      "committer": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Thu Mar 05 20:30:46 2026 +0000"
      },
      "message": "pico: tufty2350 leds\n"
    },
    {
      "commit": "9efa939158a162ce4725cdb14fd1b8cceb50cc23",
      "tree": "1a6ee6b8397995e6f8506f47bbcd0e003f4f02e1",
      "parents": [
        "8b4108d8defb204f0dd2959e8ebcf9de726e645b"
      ],
      "author": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Mon Feb 02 13:49:04 2026 +0000"
      },
      "committer": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Thu Mar 05 20:30:46 2026 +0000"
      },
      "message": "pico: mono LED driver\n\nAverages RGB to any number of LEDs. Bit of a stretch though\n"
    },
    {
      "commit": "8b4108d8defb204f0dd2959e8ebcf9de726e645b",
      "tree": "48e31afa16260fd1e72b11232875b210f0f61b7a",
      "parents": [
        "0a0f4324c4605bde1097f7e7e8ab8a062bbcdaba"
      ],
      "author": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Tue Dec 24 13:00:21 2024 +0000"
      },
      "committer": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Thu Mar 05 20:30:46 2026 +0000"
      },
      "message": "pico: driver-ify LEDs\n"
    },
    {
      "commit": "0a0f4324c4605bde1097f7e7e8ab8a062bbcdaba",
      "tree": "bc69f0aa51b1f6b33ce7703c31364da48f879a3b",
      "parents": [
        "6f2aaf4af8bfa85ffa5f3d1aaa1ba7117dd2bcdb"
      ],
      "author": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Sat Jan 31 22:13:01 2026 +0000"
      },
      "committer": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Thu Mar 05 20:30:46 2026 +0000"
      },
      "message": "pico: enable vsync and transpose for tufty2350\n\nThis needs more wip patches than the basic config\n"
    },
    {
      "commit": "6f2aaf4af8bfa85ffa5f3d1aaa1ba7117dd2bcdb",
      "tree": "2d237408ad9cd68f1d23c40a27dc8c9d723721c5",
      "parents": [
        "c375cdcc1143ff3be53a1e322385b09964857f1a"
      ],
      "author": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Sun Sep 01 17:19:02 2024 +0100"
      },
      "committer": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Thu Mar 05 20:30:46 2026 +0000"
      },
      "message": "pico: optionally transpose data sent to display\n\nAvoids diagonal tearing from letting the display do it\n"
    },
    {
      "commit": "c375cdcc1143ff3be53a1e322385b09964857f1a",
      "tree": "ec0081762487467692303c9c5f91171ed7dcd357",
      "parents": [
        "99cd70c9034c2b7ba5ec7b97b6c1c45d2a3b9ccf"
      ],
      "author": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Sat Aug 31 19:18:23 2024 +0100"
      },
      "committer": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Thu Mar 05 20:30:46 2026 +0000"
      },
      "message": "pico: rename the pixel-double irq handler\n"
    },
    {
      "commit": "99cd70c9034c2b7ba5ec7b97b6c1c45d2a3b9ccf",
      "tree": "8bb742af70a20614926b2a97a427b47e17119938",
      "parents": [
        "217edcbce83b8c0a93bdf1a557f2e5a32a127593"
      ],
      "author": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Fri Feb 06 16:17:10 2026 +0000"
      },
      "committer": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Thu Mar 05 20:30:46 2026 +0000"
      },
      "message": "pico: set tufty2350 usb ids\n"
    },
    {
      "commit": "217edcbce83b8c0a93bdf1a557f2e5a32a127593",
      "tree": "fc1c54d881dbd1d1ce2b33ca77816bc71707c84e",
      "parents": [
        "ccbb4933346132786931607784d3191a928f7213"
      ],
      "author": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Sat Jan 31 22:37:01 2026 +0000"
      },
      "committer": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Thu Mar 05 20:30:46 2026 +0000"
      },
      "message": "pico: strip down powman code a bit\n\nMostly the exported functions, but also the double-tap stuff\n"
    },
    {
      "commit": "ccbb4933346132786931607784d3191a928f7213",
      "tree": "2b3556d02efe7b49ec1516fdd3c3ed346288e232",
      "parents": [
        "6f68bfd44134ef71e20b94fc03f94f2c0c6009d3"
      ],
      "author": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Sat Jan 31 22:12:25 2026 +0000"
      },
      "committer": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Thu Mar 05 20:30:46 2026 +0000"
      },
      "message": "pico: pull in tufty2350 powman code so I can turn it off\n"
    },
    {
      "commit": "6f68bfd44134ef71e20b94fc03f94f2c0c6009d3",
      "tree": "cff4f337f38f7a14d06a8e7e921df8112e1cb899",
      "parents": [
        "eea4542b8ffec0121db0cae7a46f3d27179cdbc3"
      ],
      "author": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Fri Jan 30 22:31:58 2026 +0000"
      },
      "committer": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Thu Mar 05 20:30:46 2026 +0000"
      },
      "message": "pico: set i2c clock in tufty2350 config\n\nMakes it easy to switch to qwstpad\n"
    },
    {
      "commit": "eea4542b8ffec0121db0cae7a46f3d27179cdbc3",
      "tree": "36d465d14054be051cc396b2f28700648fd30c25",
      "parents": [
        "6e188ac6697d676bb3a5b09147c183df8e89cea2"
      ],
      "author": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Fri Jan 30 21:00:46 2026 +0000"
      },
      "committer": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Thu Mar 05 20:30:46 2026 +0000"
      },
      "message": "pico: tufty2350 config\n"
    },
    {
      "commit": "6e188ac6697d676bb3a5b09147c183df8e89cea2",
      "tree": "90d5f76f2218fa6dc3c13721b308e0bb36aff097",
      "parents": [
        "cddd12f9c5579673086cdd1a4856cda0be1c9877"
      ],
      "author": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Sun Feb 01 13:17:42 2026 +0000"
      },
      "committer": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Thu Mar 05 20:30:46 2026 +0000"
      },
      "message": "pico: add a board define to the board header\n"
    },
    {
      "commit": "cddd12f9c5579673086cdd1a4856cda0be1c9877",
      "tree": "b599407f0a8f28edc4b48a18dc1ceef00c8fbb9a",
      "parents": [
        "80957ea162c2411af9d64400bc116849d39aaad5"
      ],
      "author": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Fri Jan 30 20:57:31 2026 +0000"
      },
      "committer": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Thu Mar 05 20:30:46 2026 +0000"
      },
      "message": "pico: import tufty2350 board header\n"
    },
    {
      "commit": "80957ea162c2411af9d64400bc116849d39aaad5",
      "tree": "646745d65692cfe33eaba87df9ce4f7fe61cc0b7",
      "parents": [
        "5bcbf7698d7fc9bf70c430131fd03a1f5e7cba14"
      ],
      "author": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Fri Jan 30 20:31:07 2026 +0000"
      },
      "committer": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Thu Mar 05 20:30:46 2026 +0000"
      },
      "message": "pico: handle GPIOs \u003e\u003d 32 in DBI driver\n"
    },
    {
      "commit": "18b8d0f1aebab75c9306ea29b9475227b07c98fe",
      "tree": "8d4020d8bf4d6af01e94ff0051689a8f1ee90c35",
      "parents": [
        "5bcbf7698d7fc9bf70c430131fd03a1f5e7cba14",
        "ac4d42f4e20b32e90c0f9590e70d06ad886fe297"
      ],
      "author": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Tue Mar 03 16:57:35 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 03 16:57:35 2026 +0000"
      },
      "message": "Merge pull request #904 from Daft-Freak/flash-message-fix\n\npico: fix saving to flash message"
    },
    {
      "commit": "ac4d42f4e20b32e90c0f9590e70d06ad886fe297",
      "tree": "8d4020d8bf4d6af01e94ff0051689a8f1ee90c35",
      "parents": [
        "5bcbf7698d7fc9bf70c430131fd03a1f5e7cba14"
      ],
      "author": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Tue Mar 03 15:05:26 2026 +0000"
      },
      "committer": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Tue Mar 03 16:33:03 2026 +0000"
      },
      "message": "pico: fix saving to flash message\n"
    },
    {
      "commit": "5bcbf7698d7fc9bf70c430131fd03a1f5e7cba14",
      "tree": "07a0d296ce4964eaa96752707742a0dac4562f42",
      "parents": [
        "71e600e059547cb27b53e4c486998bba043f6f6c",
        "d2808fe39821363654a6a24da1ce9a54707bbcc8"
      ],
      "author": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Fri Feb 13 14:42:12 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Feb 13 14:42:12 2026 +0000"
      },
      "message": "Merge pull request #903 from Daft-Freak/pico-flash-storage-config\n\nPico flash storage config"
    },
    {
      "commit": "d2808fe39821363654a6a24da1ce9a54707bbcc8",
      "tree": "07a0d296ce4964eaa96752707742a0dac4562f42",
      "parents": [
        "b5c6e8ab08d58cb4efc2f03e53d5887bd83b3672"
      ],
      "author": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Wed Feb 11 22:27:19 2026 +0000"
      },
      "committer": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Fri Feb 13 12:08:22 2026 +0000"
      },
      "message": "pico: avoid flash filesystem in blit_launch code\n"
    },
    {
      "commit": "b5c6e8ab08d58cb4efc2f03e53d5887bd83b3672",
      "tree": "4666381e6e4588c4b9fa75097f4303ff0f96b5dc",
      "parents": [
        "71e600e059547cb27b53e4c486998bba043f6f6c"
      ],
      "author": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Wed Feb 11 22:20:08 2026 +0000"
      },
      "committer": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Fri Feb 13 12:07:33 2026 +0000"
      },
      "message": "pico: move flash storage offset/size to overridable defines in config.h\n"
    },
    {
      "commit": "71e600e059547cb27b53e4c486998bba043f6f6c",
      "tree": "da70ebd60460eb2cfb270bb62e49356ddf1d852b",
      "parents": [
        "938ada033fff98b017a674df6d58a50e805f4bdf",
        "9142c192a64e2cac8e73a37e7708e040ac32989b"
      ],
      "author": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Sun Feb 08 16:15:27 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Feb 08 16:15:27 2026 +0000"
      },
      "message": "Merge pull request #889 from Daft-Freak/cmake-ver-bump\n\nBump required CMake version and clean up a little"
    },
    {
      "commit": "9142c192a64e2cac8e73a37e7708e040ac32989b",
      "tree": "da70ebd60460eb2cfb270bb62e49356ddf1d852b",
      "parents": [
        "9e4639a3f10f04b940e81fccfe7bb958428dfe8d"
      ],
      "author": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Mon Jan 20 15:33:28 2025 +0000"
      },
      "committer": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Sun Feb 08 16:04:30 2026 +0000"
      },
      "message": "Don\u0027t bother finding readelf in the 32blit toolchain\n\nWe don\u0027t use it any more. (If we need it again we can just bump the min CMake ver to 3.16)\n"
    },
    {
      "commit": "9e4639a3f10f04b940e81fccfe7bb958428dfe8d",
      "tree": "26caa3e8d078d5b0830e72587b29680311ad8d7c",
      "parents": [
        "14698dc4267eb1fe2b4f4a395f6d3d3d1a09d88f"
      ],
      "author": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Mon Jan 20 15:27:17 2025 +0000"
      },
      "committer": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Sun Feb 08 16:04:30 2026 +0000"
      },
      "message": "Bump min CMake version to 3.15\n\nNow we can use TARGET_FILE_BASE_NAME\n"
    },
    {
      "commit": "14698dc4267eb1fe2b4f4a395f6d3d3d1a09d88f",
      "tree": "80ba8a2053f945af71831fa1e4c2be97ef9cf5ea",
      "parents": [
        "938ada033fff98b017a674df6d58a50e805f4bdf"
      ],
      "author": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Mon Jan 20 15:14:27 2025 +0000"
      },
      "committer": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Sun Feb 08 16:02:50 2026 +0000"
      },
      "message": "Bump min CMake version to 3.12 and use FindPython\n\nThis also allows up to set the max version to current as we\u0027re not using\nany removed features.\n"
    },
    {
      "commit": "938ada033fff98b017a674df6d58a50e805f4bdf",
      "tree": "a109942f6fed9807ef157851c86d39b9e7dadc61",
      "parents": [
        "fd6b5d393355a8ba058cb15afd4ff5dbf02cfd06",
        "b7c74509d3d1f15cd3b8af6534f273b113da2d4a"
      ],
      "author": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Sat Feb 07 15:13:49 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Feb 07 15:13:49 2026 +0000"
      },
      "message": "Merge pull request #877 from Daft-Freak/pico-loader\n\nPico loader"
    },
    {
      "commit": "fd6b5d393355a8ba058cb15afd4ff5dbf02cfd06",
      "tree": "e4f72442e4122d025d5b8ef948b166a55dc580cc",
      "parents": [
        "a56e6741105c6f1d78a720f22ee7c6632a1f4f47",
        "3fa54c4bb24d3dc338c6ad6e1e2dfb67d5f95b34"
      ],
      "author": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Tue Feb 03 13:19:21 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Feb 03 13:19:21 2026 +0000"
      },
      "message": "Merge pull request #901 from Daft-Freak/pico-small-fixes\n\npico: the smallest of fixes"
    },
    {
      "commit": "3fa54c4bb24d3dc338c6ad6e1e2dfb67d5f95b34",
      "tree": "e4f72442e4122d025d5b8ef948b166a55dc580cc",
      "parents": [
        "ab1cfc09d3c788d2c991019a3dc4e52359b835be"
      ],
      "author": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Fri Jan 30 20:25:56 2026 +0000"
      },
      "committer": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Tue Feb 03 12:51:20 2026 +0000"
      },
      "message": "pico: fix reversed HOME/MENU in GPIO input driver\n"
    },
    {
      "commit": "ab1cfc09d3c788d2c991019a3dc4e52359b835be",
      "tree": "72b664073bf3ed42e58e554470ff700bfc304899",
      "parents": [
        "a7c26b53653726390443b172aca14e5be8f643f1"
      ],
      "author": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Fri Jan 30 20:23:12 2026 +0000"
      },
      "committer": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Tue Feb 03 12:51:20 2026 +0000"
      },
      "message": "pico: fix warning in DBI driver without \"vsync\" pin\n"
    },
    {
      "commit": "a7c26b53653726390443b172aca14e5be8f643f1",
      "tree": "6c7bda9d191372a6ac1712dd18d7c392477c31e6",
      "parents": [
        "a56e6741105c6f1d78a720f22ee7c6632a1f4f47"
      ],
      "author": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Sun Dec 28 16:03:08 2025 +0000"
      },
      "committer": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Tue Feb 03 12:51:20 2026 +0000"
      },
      "message": "Avoid hanging if TCA9555 not found\n"
    },
    {
      "commit": "b7c74509d3d1f15cd3b8af6534f273b113da2d4a",
      "tree": "3c78afcd7c32c2b8bda2d1018a1ab40dff9c3b37",
      "parents": [
        "be2111a9980f3806327cdaef32751bdbf4831e7e"
      ],
      "author": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Fri Jun 13 17:25:57 2025 +0100"
      },
      "committer": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Mon Feb 02 19:20:56 2026 +0000"
      },
      "message": "ci; bump ubuntu ver for picosystem blit build\n\n...which ended up modifying the picovision build due to diff weirdness\n"
    },
    {
      "commit": "be2111a9980f3806327cdaef32751bdbf4831e7e",
      "tree": "e21b2e7d4263d6bb60877c743fba7d4dfcd15fa4",
      "parents": [
        "7b41eef712cbca1a402709bd3477d2a498ba0efa"
      ],
      "author": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Wed Feb 26 23:19:20 2025 +0000"
      },
      "committer": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Mon Feb 02 19:20:56 2026 +0000"
      },
      "message": "pico: break out blit_executable like 32blit-stm32\n\nThough there ends up being a lot in executable.cmake as blits still need the SDK\n"
    },
    {
      "commit": "7b41eef712cbca1a402709bd3477d2a498ba0efa",
      "tree": "ca90e7920f591d06d1e4795931e207840a7cbfa4",
      "parents": [
        "7309c1a9b282c9f0e9a7ec831cb03ae8f91c21da"
      ],
      "author": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Wed Feb 26 22:53:53 2025 +0000"
      },
      "committer": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Mon Feb 02 19:20:56 2026 +0000"
      },
      "message": "pico: split board config detection to board-config.cmake\n"
    },
    {
      "commit": "7309c1a9b282c9f0e9a7ec831cb03ae8f91c21da",
      "tree": "a6b17851badf670688b9d95c8781501b238e5146",
      "parents": [
        "472eefa644bafeb8bef03cfad63f6c8cbc394bde"
      ],
      "author": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Wed Feb 26 15:19:33 2025 +0000"
      },
      "committer": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Mon Feb 02 19:20:56 2026 +0000"
      },
      "message": "pico: display a message when erasing\n\nCan\u0027t display progress unless we start breaking up the erase\n"
    },
    {
      "commit": "472eefa644bafeb8bef03cfad63f6c8cbc394bde",
      "tree": "3676c480b5211cf002e7803d2bd8247bd58760a0",
      "parents": [
        "8ab9f7c63fd0eb1dc35b913bd08ee660a5ada2f9"
      ],
      "author": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Wed Feb 26 15:13:11 2025 +0000"
      },
      "committer": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Mon Feb 02 19:20:56 2026 +0000"
      },
      "message": "pico: add helper to make sure overlay is rendered\n\nSometimes we\u0027re going to lock out rendering for a while...\n"
    },
    {
      "commit": "8ab9f7c63fd0eb1dc35b913bd08ee660a5ada2f9",
      "tree": "1f5b3044d4bc9b8c352838a1351437e0ec08d73a",
      "parents": [
        "b17a2e585290063c32ac54b36f2d58330b163e85"
      ],
      "author": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Wed Feb 26 13:55:13 2025 +0000"
      },
      "committer": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Mon Feb 02 19:20:56 2026 +0000"
      },
      "message": "pico: display progress bar for CDC PROG\n\nThis also works with the previous fix\n"
    },
    {
      "commit": "b17a2e585290063c32ac54b36f2d58330b163e85",
      "tree": "f6964bc2219d313937056d04d3c7edcc4e1b5842",
      "parents": [
        "704e00475ba8e217587e2dc7b0ca6ebbf98e4759"
      ],
      "author": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Wed Feb 26 13:53:43 2025 +0000"
      },
      "committer": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Mon Feb 02 19:20:56 2026 +0000"
      },
      "message": "pico: tweak overlay enable to handle disable_user_code changing render\n"
    },
    {
      "commit": "704e00475ba8e217587e2dc7b0ca6ebbf98e4759",
      "tree": "31e4b476b3d5f82f861485c0c730b028b9d077fa",
      "parents": [
        "335b9f084cac7f82e482d203d652edc2554b4e73"
      ],
      "author": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Wed Feb 26 13:45:28 2025 +0000"
      },
      "committer": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Mon Feb 02 19:20:56 2026 +0000"
      },
      "message": "pico: display progress bar for CDC SAVE\n\nthe normal render/display update gets a chance to run, so this is easy\n"
    },
    {
      "commit": "335b9f084cac7f82e482d203d652edc2554b4e73",
      "tree": "4f28e08059d922c28a9dfe13134ac299ce8ee70b",
      "parents": [
        "7a2b64d07a90d59c9686941f10f27124546877ab"
      ],
      "author": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Wed Feb 26 12:30:22 2025 +0000"
      },
      "committer": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Mon Feb 02 19:20:56 2026 +0000"
      },
      "message": "pico: add code to render an overlay in the loader\n\nCurrently for progress bars, but maybe a menu later?\n"
    },
    {
      "commit": "7a2b64d07a90d59c9686941f10f27124546877ab",
      "tree": "19e7b596aad4f54d88265b842c27cc72ee72fe70",
      "parents": [
        "4555ef7ed774a178331e2a27040a91f5f23ef31c"
      ],
      "author": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Tue Feb 25 23:24:32 2025 +0000"
      },
      "committer": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Mon Feb 02 19:20:56 2026 +0000"
      },
      "message": "pico: setup loader-side screen\n\nWe didn\u0027t need this previously because it never tried to render anything\n"
    },
    {
      "commit": "4555ef7ed774a178331e2a27040a91f5f23ef31c",
      "tree": "efbd8042f66608f5298b757dbdd0afe76ba67076",
      "parents": [
        "e227d47bbff8f58d98377ce44da68b525af23345"
      ],
      "author": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Tue Feb 25 22:53:32 2025 +0000"
      },
      "committer": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Mon Feb 02 19:20:56 2026 +0000"
      },
      "message": "pico: reset offset in SAVE command init\n\nReally useful for sending more than one file...\n"
    },
    {
      "commit": "e227d47bbff8f58d98377ce44da68b525af23345",
      "tree": "769c11cf1be4528cbebc125876f5e19d392999e8",
      "parents": [
        "6103a5ba14c52f7ab9c80534f65b53178fc48b49"
      ],
      "author": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Mon Feb 24 13:49:03 2025 +0000"
      },
      "committer": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Mon Feb 02 19:20:56 2026 +0000"
      },
      "message": "pico: implement SAVE command\n\nShares a bit with PROG, but a bit simpler\n"
    },
    {
      "commit": "6103a5ba14c52f7ab9c80534f65b53178fc48b49",
      "tree": "19717cadfb51ab9f9c968a73f43e85eac332d4e5",
      "parents": [
        "57dbaf49d0010bf3cd82ed4c51d829027990ed78"
      ],
      "author": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Mon Feb 24 12:42:15 2025 +0000"
      },
      "committer": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Mon Feb 02 19:20:56 2026 +0000"
      },
      "message": "pico: refactor out a helper for reading strings for CDC commands\n"
    },
    {
      "commit": "57dbaf49d0010bf3cd82ed4c51d829027990ed78",
      "tree": "aa89f506e2aaa90db6b8d081300f7d479354c740",
      "parents": [
        "b00b8d8800c949c60f58d733b77017714d2c9e6c"
      ],
      "author": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Sun Feb 23 13:14:22 2025 +0000"
      },
      "committer": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Mon Feb 02 19:20:56 2026 +0000"
      },
      "message": "pico: remove printfs in PROG handling\n\nThe tools assume that any output during this command is an error\n"
    },
    {
      "commit": "b00b8d8800c949c60f58d733b77017714d2c9e6c",
      "tree": "55e01abdabcfa5f8dcfe11092505b0376655338e",
      "parents": [
        "8e15bb4c52c631fe1aff2c136125513b51c94d24"
      ],
      "author": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Fri Feb 21 17:17:31 2025 +0000"
      },
      "committer": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Mon Feb 02 19:20:56 2026 +0000"
      },
      "message": "pico: add some pre-init code to reset API state before launching\n\nAvoids faulting when exiting something using audio\n"
    },
    {
      "commit": "8e15bb4c52c631fe1aff2c136125513b51c94d24",
      "tree": "3cf986d3543842eae4b6d77aab499e9a9c03619e",
      "parents": [
        "d08a71e5e3320f4693b71f78e40b060363514b76"
      ],
      "author": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Mon Jan 13 16:47:36 2025 +0000"
      },
      "committer": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Mon Feb 02 19:20:56 2026 +0000"
      },
      "message": "pico: put fb in uninitialzed data\n"
    },
    {
      "commit": "d08a71e5e3320f4693b71f78e40b060363514b76",
      "tree": "ed80e70c9244ed02cbf9b47272d80e89152653a2",
      "parents": [
        "6fccb09271a7ab0b155e973f2f6992135b98708a"
      ],
      "author": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Mon Jan 13 16:03:55 2025 +0000"
      },
      "committer": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Mon Feb 02 19:20:56 2026 +0000"
      },
      "message": "pico: set flash size to 4M for 2350 blits\n\nThis is as big as we can handle with the current translation setup\n"
    },
    {
      "commit": "6fccb09271a7ab0b155e973f2f6992135b98708a",
      "tree": "1175843851bd1ee002b6e760f997234774584bea",
      "parents": [
        "c3ca947beb1a0edf3a5128c80aecf9e05bb1e775"
      ],
      "author": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Mon Dec 30 11:58:03 2024 +0000"
      },
      "committer": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Mon Feb 02 19:20:56 2026 +0000"
      },
      "message": "pico: use cache API to invalidate after setting up translation\n"
    },
    {
      "commit": "c3ca947beb1a0edf3a5128c80aecf9e05bb1e775",
      "tree": "d766cbc0f4f4390f16b8cc28f7e4aab984398999",
      "parents": [
        "4b1b82c90561bf53eb7a51d775493ad818e0386b"
      ],
      "author": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Tue Nov 26 15:02:32 2024 +0000"
      },
      "committer": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Mon Feb 02 19:20:56 2026 +0000"
      },
      "message": "pico: restore pre-init on RP2040\n\nIt does things we need to not crash and doesn\u0027t do any of the things that caused problems on 2350\n"
    },
    {
      "commit": "4b1b82c90561bf53eb7a51d775493ad818e0386b",
      "tree": "aa7b3349e14c9722cbf511bfd4308cebfe106ac2",
      "parents": [
        "a467bd8c2c09b1c1bd85772ab8b04dc2c5644975"
      ],
      "author": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Tue Nov 12 12:26:07 2024 +0000"
      },
      "committer": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Mon Feb 02 19:20:56 2026 +0000"
      },
      "message": "pico: cleanup duplicates after flashing new game\n"
    },
    {
      "commit": "a467bd8c2c09b1c1bd85772ab8b04dc2c5644975",
      "tree": "2219cd103287131645e7f61dc933cd7bdfd7fc0c",
      "parents": [
        "c6e81ed3dde8c1e4a4281e728cfd14f9466bc9a7"
      ],
      "author": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Mon Nov 11 22:31:58 2024 +0000"
      },
      "committer": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Mon Feb 02 19:20:56 2026 +0000"
      },
      "message": "pico: check for existing copy of game before flashing\n"
    },
    {
      "commit": "c6e81ed3dde8c1e4a4281e728cfd14f9466bc9a7",
      "tree": "b3e45c592d6304fc5bdf0c0d4be86b2c0200fab7",
      "parents": [
        "85b3943f7515608a56da4202a0a405d408e536ad"
      ],
      "author": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Mon Nov 11 20:42:36 2024 +0000"
      },
      "committer": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Mon Feb 02 19:20:56 2026 +0000"
      },
      "message": "pico: helper for reading file metadata\n"
    },
    {
      "commit": "85b3943f7515608a56da4202a0a405d408e536ad",
      "tree": "9d1a6ca02bf3e4297093b83675ca4f501c6bad40",
      "parents": [
        "9eac4a891c5019e3be04e837adf2166b911c6b04"
      ],
      "author": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Thu Nov 07 12:03:01 2024 +0000"
      },
      "committer": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Mon Feb 02 19:20:56 2026 +0000"
      },
      "message": "pico: set our board directory as an extra search path for the SDK\n"
    },
    {
      "commit": "9eac4a891c5019e3be04e837adf2166b911c6b04",
      "tree": "b650558f8ca6baeae825c7cc395a1917c0fba087",
      "parents": [
        "5b2340fc222c616d2d889370521f3370df4a9453"
      ],
      "author": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Thu Oct 31 20:41:26 2024 +0000"
      },
      "committer": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Mon Feb 02 19:20:56 2026 +0000"
      },
      "message": "pico: avoid running pre-init code for blits\n\nIt\u0027s all low-level stuff the loader should\u0027ve done\n"
    },
    {
      "commit": "5b2340fc222c616d2d889370521f3370df4a9453",
      "tree": "39ec12b185b890b34322ca920ef1c1a3fa7effc7",
      "parents": [
        "eae663f9183e74d66729eb5588bcdd8c6834ddf5"
      ],
      "author": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Thu Oct 31 15:39:28 2024 +0000"
      },
      "committer": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Mon Feb 02 19:20:56 2026 +0000"
      },
      "message": "pico: rename blit-launch to blit_launch for consistency\n"
    },
    {
      "commit": "eae663f9183e74d66729eb5588bcdd8c6834ddf5",
      "tree": "0b550ae623aa5f9c17be3f94d755640f800252cb",
      "parents": [
        "b9f5c0c3488482b4cd1e0dda5bb5c3ea0695043f"
      ],
      "author": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Wed Oct 30 23:50:14 2024 +0000"
      },
      "committer": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Mon Feb 02 19:20:56 2026 +0000"
      },
      "message": "pico: always use half fb size as page size\n\nThis is the only way for switching between two double-buffered modes to work\n"
    },
    {
      "commit": "b9f5c0c3488482b4cd1e0dda5bb5c3ea0695043f",
      "tree": "c669f4546e9176c83005bcf5a1c3a4679fc182fb",
      "parents": [
        "183fae64596a0bee8bd4af60b6724d1ff616d664"
      ],
      "author": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Tue Oct 22 18:48:56 2024 +0100"
      },
      "committer": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Mon Feb 02 19:20:56 2026 +0000"
      },
      "message": "pico: fix non-loader fb size\n\nThis has been broken since set_framebuffer...\n"
    },
    {
      "commit": "183fae64596a0bee8bd4af60b6724d1ff616d664",
      "tree": "68259d2fe8a5dfa26b478dc68242454abe81a45a",
      "parents": [
        "4d0655c24ffd3d90c687596d91789f787d38a8f3"
      ],
      "author": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Fri Sep 06 16:21:56 2024 +0100"
      },
      "committer": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Mon Feb 02 19:20:56 2026 +0000"
      },
      "message": "pico: implement the HOME button exit/reset\n"
    },
    {
      "commit": "4d0655c24ffd3d90c687596d91789f787d38a8f3",
      "tree": "c96c9023e4e4e2fb6359b733ca185faa9c734ea9",
      "parents": [
        "720dc210a2b9a34c8aa87809b862b800a0338a32"
      ],
      "author": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Fri Sep 06 15:42:34 2024 +0100"
      },
      "committer": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Mon Feb 02 19:20:56 2026 +0000"
      },
      "message": "pico: move fb size calcs to config.h and dedup\n"
    },
    {
      "commit": "720dc210a2b9a34c8aa87809b862b800a0338a32",
      "tree": "13d19332c75671566de1415b6f229f1502533de7",
      "parents": [
        "071fe6da5d8f8ed7f333cdf0b932522cfec8f3e6"
      ],
      "author": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Fri Sep 06 15:39:17 2024 +0100"
      },
      "committer": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Mon Feb 02 19:20:56 2026 +0000"
      },
      "message": "pico: invalidate cache after setting up translation\n\nI think this is it, doesn\u0027t seem to be any helpers in the SDK...\n"
    },
    {
      "commit": "071fe6da5d8f8ed7f333cdf0b932522cfec8f3e6",
      "tree": "d5a2e5f59a388db1c1749a8a8af248146fa00ec8",
      "parents": [
        "a707873b26ab47e33ce455d7272c1a2db2e56ddf"
      ],
      "author": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Thu Sep 05 17:12:11 2024 +0100"
      },
      "committer": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Mon Feb 02 19:20:56 2026 +0000"
      },
      "message": "pico: set default flash offset for RP2350 to 4MB\n"
    },
    {
      "commit": "a707873b26ab47e33ce455d7272c1a2db2e56ddf",
      "tree": "45431589a7a89a3b792dbfafa1bd99d65888a5ce",
      "parents": [
        "2896c3b10f6eaa4451706bbe00c167cd607b422c"
      ],
      "author": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Thu Sep 05 17:11:41 2024 +0100"
      },
      "committer": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Mon Feb 02 19:20:56 2026 +0000"
      },
      "message": "pico: support .blits flashed at any offset using address translation\n\nThis requires compiling them for a 4MB offset\n"
    },
    {
      "commit": "2896c3b10f6eaa4451706bbe00c167cd607b422c",
      "tree": "95741e4c2f25b4204b812fea1ba714ce0b42377f",
      "parents": [
        "cad74c034f83858a3800e75aab8f25e56b7470b8"
      ],
      "author": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Thu Sep 05 16:30:42 2024 +0100"
      },
      "committer": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Mon Feb 02 19:20:56 2026 +0000"
      },
      "message": "pico: move helpers above api impl in blit-launch\n"
    },
    {
      "commit": "cad74c034f83858a3800e75aab8f25e56b7470b8",
      "tree": "b7b4ba76c017861dcc18c5f4d76f4a6c0fe5f3ff",
      "parents": [
        "264136da9f8e509bcaad790fbb177cbce2944090"
      ],
      "author": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Thu Sep 05 16:14:35 2024 +0100"
      },
      "committer": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Mon Feb 02 19:20:56 2026 +0000"
      },
      "message": "pico: fix indentation in BlitWriter::prepare_write\n"
    },
    {
      "commit": "264136da9f8e509bcaad790fbb177cbce2944090",
      "tree": "28d4c6a17c998dec26537acff329dacfaec4fbd8",
      "parents": [
        "7ca9fc2c86cdde5aca3164a7ef94c8d452f36ff7"
      ],
      "author": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Thu Sep 05 16:07:05 2024 +0100"
      },
      "committer": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Mon Feb 02 19:20:56 2026 +0000"
      },
      "message": "Move default value for blit offset to 32blit-pico\n"
    },
    {
      "commit": "7ca9fc2c86cdde5aca3164a7ef94c8d452f36ff7",
      "tree": "c813f4e0821d312bef57f6fecb8ed821fc981e8a",
      "parents": [
        "f2bec0cac05dd7a764e9c8fd75f373e2478c73f7"
      ],
      "author": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Thu Sep 05 15:53:57 2024 +0100"
      },
      "committer": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Mon Feb 02 19:20:56 2026 +0000"
      },
      "message": "pico: use untranslated flash addr for scanning and metadata\n\nWill be useful when we\u0027re using address translation\n"
    },
    {
      "commit": "f2bec0cac05dd7a764e9c8fd75f373e2478c73f7",
      "tree": "7743a6cfd9cb1f0f346b4bc350af38f812436b3f",
      "parents": [
        "80f5ca7394a2a97240ef360224e60e30e85af310"
      ],
      "author": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Thu Sep 05 15:40:10 2024 +0100"
      },
      "committer": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Mon Feb 02 19:20:56 2026 +0000"
      },
      "message": "pico: add 2350 device id\n"
    },
    {
      "commit": "80f5ca7394a2a97240ef360224e60e30e85af310",
      "tree": "bd8a73bc59f4cb0b28832af8c7b827b70dd4d47c",
      "parents": [
        "eb7cda5e0e2eb2282b190d9414025627474691a9"
      ],
      "author": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Thu Sep 05 14:57:29 2024 +0100"
      },
      "committer": {
        "name": "Charlie Birks",
        "email": "charlie@daft.games",
        "time": "Mon Feb 02 19:20:56 2026 +0000"
      },
      "message": "pico: add define for device id\n\nWe\u0027ve got two incompatible devices here now\n"
    }
  ],
  "next": "eb7cda5e0e2eb2282b190d9414025627474691a9"
}
