)]}'
{
  "log": [
    {
      "commit": "2041936441b48a3cc53ae3da9e805229fe8f4e18",
      "tree": "a5d69e1d1b980ed39530ec108192d12bde23f0b6",
      "parents": [
        "e639681f7061f53f6be1c4a5ab8679671eae6d88"
      ],
      "author": {
        "name": "graham sanderson",
        "email": "graham.sanderson@raspberrypi.com",
        "time": "Fri Sep 04 19:38:04 2026 -0500"
      },
      "committer": {
        "name": "graham sanderson",
        "email": "graham.sanderson@raspberrypi.com",
        "time": "Fri Sep 04 19:38:04 2026 -0500"
      },
      "message": "release picotool version 2.3.1\n"
    },
    {
      "commit": "e639681f7061f53f6be1c4a5ab8679671eae6d88",
      "tree": "984c9ca1d8833c21ca4c02e1648bc06d83e98713",
      "parents": [
        "17abd0a5a168e2920fbfec48f0153070b143e6fd"
      ],
      "author": {
        "name": "William Vinnicombe",
        "email": "william.vinnicombe@raspberrypi.com",
        "time": "Thu Aug 13 12:44:46 2026 +0100"
      },
      "committer": {
        "name": "William Vinnicombe",
        "email": "william.vinnicombe@raspberrypi.com",
        "time": "Thu Aug 13 12:52:02 2026 +0100"
      },
      "message": "Fix uninitialised variable in bintool\n\nThis was causing encryption to fail on Windows\n"
    },
    {
      "commit": "17abd0a5a168e2920fbfec48f0153070b143e6fd",
      "tree": "689776b3d0e7f90cbf423933320c5f57a7d4426e",
      "parents": [
        "fa2a7047f4d041b5e4d1de4aec45cc01bba75c35"
      ],
      "author": {
        "name": "Daniel M\u0027BOUYOU",
        "email": "89601079+DanielMBouyou@users.noreply.github.com",
        "time": "Wed Aug 12 13:36:26 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Aug 12 12:36:26 2026 +0100"
      },
      "message": "Fix two outdated facts in BUILDING.md (#356)\n\n* Fix two outdated facts in BUILDING.md\n\n* Fix otp permissions output in README\n\n---------\n\nCo-authored-by: will-v-pi \u003c108662275+will-v-pi@users.noreply.github.com\u003e"
    },
    {
      "commit": "fa2a7047f4d041b5e4d1de4aec45cc01bba75c35",
      "tree": "f8b106506feaabb783197be90a2d59cf43292474",
      "parents": [
        "68b7c9725bee3180566fd453857a4f2ee34a12d3"
      ],
      "author": {
        "name": "Ryan Draves",
        "email": "19778373+RyanDraves@users.noreply.github.com",
        "time": "Wed Aug 12 05:31:30 2026 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Aug 12 12:31:30 2026 +0100"
      },
      "message": "[Bazel] Remove implicit __init__.py creation (#351)"
    },
    {
      "commit": "68b7c9725bee3180566fd453857a4f2ee34a12d3",
      "tree": "8f65571560ac21eb39857f358e33e9935faa3d14",
      "parents": [
        "96a5a4e4bed57bd22bbf276a8c9ad9bcebd9cc6d"
      ],
      "author": {
        "name": "graham sanderson",
        "email": "graham.sanderson@raspberrypi.com",
        "time": "Wed Jul 29 11:21:30 2026 -0500"
      },
      "committer": {
        "name": "graham sanderson",
        "email": "graham.sanderson@raspberrypi.com",
        "time": "Wed Jul 29 11:21:30 2026 -0500"
      },
      "message": "suppress false GCC 15 warning\n"
    },
    {
      "commit": "96a5a4e4bed57bd22bbf276a8c9ad9bcebd9cc6d",
      "tree": "abc483562b3d520ef8e2dc4362078cf19eae5c0f",
      "parents": [
        "9474bd2e30751ec60eca0a5131301a92546524a8"
      ],
      "author": {
        "name": "will-v-pi",
        "email": "108662275+will-v-pi@users.noreply.github.com",
        "time": "Tue Jul 21 17:45:06 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 21 17:45:06 2026 +0100"
      },
      "message": "Better fix for elf squashing (#341)\n\nDon\u0027t squash into occupied areas, and don\u0027t squash metadata blocks\n\nThis reverts commit 0d160860227c83133502b8e1c504313e40ae9124\n\n* Catch invalid cycles in block loops (e.g. lollipop block loops)\n\n* Fix XIP SRAM only binary support"
    },
    {
      "commit": "9474bd2e30751ec60eca0a5131301a92546524a8",
      "tree": "d89a19273c8ec7555da5ccd0ac1df1de3251de7a",
      "parents": [
        "e8200c6dc896afaef8f75383d36b15816903d67b"
      ],
      "author": {
        "name": "Tzvetomir Stoyanov",
        "email": "tz.stoyanov@gmail.com",
        "time": "Fri Jul 17 12:34:57 2026 +0300"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 17 10:34:57 2026 +0100"
      },
      "message": "Get model from family, if \u0027--platform\u0027 is missing (#346)\n\nIf the user does not use the `--platform` parameter to specify the\ntarget platform for uf2 convert command, get the model from the target\nfamily. The current logic tries to guess the platform by analyzing the\ntarget binary file. It works OK in most regular cases, but fails in some\nweird cases where the image is not located at absolute FLASH_START\noffset.\n\nSigned-off-by: Tzvetomir Stoyanov \u003ctz.stoyanov@gmail.com\u003e"
    },
    {
      "commit": "e8200c6dc896afaef8f75383d36b15816903d67b",
      "tree": "9570407870b94201cee23e8b1b4e7396bbb40029",
      "parents": [
        "11efd5cf0cb92b863cff6a788109be44cde0a8b0"
      ],
      "author": {
        "name": "will-v-pi",
        "email": "108662275+will-v-pi@users.noreply.github.com",
        "time": "Thu Jul 16 14:32:05 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 16 14:32:05 2026 +0100"
      },
      "message": "Fix warnings in Clang build (#343)\n\nAlso add build-* to .gitignore"
    },
    {
      "commit": "11efd5cf0cb92b863cff6a788109be44cde0a8b0",
      "tree": "d40e227bb72746b4d3b76326888b78a26f89248e",
      "parents": [
        "bdd164b3a415e0742ed45bbcedf7eb2579170d71",
        "282a3ca05edde0375ec3481be56d59e2c256a8ce"
      ],
      "author": {
        "name": "William Vinnicombe",
        "email": "william.vinnicombe@raspberrypi.com",
        "time": "Wed Jul 15 10:58:31 2026 +0100"
      },
      "committer": {
        "name": "William Vinnicombe",
        "email": "william.vinnicombe@raspberrypi.com",
        "time": "Wed Jul 15 10:58:31 2026 +0100"
      },
      "message": "Merge branch \u0027master\u0027 into develop\n"
    },
    {
      "commit": "bdd164b3a415e0742ed45bbcedf7eb2579170d71",
      "tree": "d40e227bb72746b4d3b76326888b78a26f89248e",
      "parents": [
        "d469aeb9491847589ddb4e5fa8e64806f2ae2cef"
      ],
      "author": {
        "name": "will-v-pi",
        "email": "108662275+will-v-pi@users.noreply.github.com",
        "time": "Tue Jul 14 23:50:40 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 14 17:50:40 2026 -0500"
      },
      "message": "Copy pull request template from pico-sdk (#340)"
    },
    {
      "commit": "282a3ca05edde0375ec3481be56d59e2c256a8ce",
      "tree": "a2f8f425a472d48b6a56ff3b6a86bee5aa4a9f70",
      "parents": [
        "1650acb1ad784db5a4e33809e8afd1e1fdcd8e5f"
      ],
      "author": {
        "name": "Ivan Shapovalov",
        "email": "intelfx@intelfx.name",
        "time": "Tue Jul 14 15:23:16 2026 +0300"
      },
      "committer": {
        "name": "William Vinnicombe",
        "email": "william.vinnicombe@raspberrypi.com",
        "time": "Tue Jul 14 17:17:24 2026 +0100"
      },
      "message": "main: fix `picotool info` for non-partition-capable devices (#338)\n\nFixes #336."
    },
    {
      "commit": "d469aeb9491847589ddb4e5fa8e64806f2ae2cef",
      "tree": "ba89ba6cf46bc44c285fcb7c9c653c691da3b2f9",
      "parents": [
        "b27f0626535d4325ac980bd04edc8181b933fa46"
      ],
      "author": {
        "name": "Ivan Shapovalov",
        "email": "intelfx@intelfx.name",
        "time": "Tue Jul 14 15:23:16 2026 +0300"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 14 13:23:16 2026 +0100"
      },
      "message": "main: fix `picotool info` for non-partition-capable devices (#338)\n\nFixes #336."
    },
    {
      "commit": "b27f0626535d4325ac980bd04edc8181b933fa46",
      "tree": "51aa236c86de868c921a28db200d25f53a186494",
      "parents": [
        "1650acb1ad784db5a4e33809e8afd1e1fdcd8e5f"
      ],
      "author": {
        "name": "graham sanderson",
        "email": "graham.sanderson@raspberrypi.com",
        "time": "Fri Jul 03 09:24:09 2026 -0500"
      },
      "committer": {
        "name": "graham sanderson",
        "email": "graham.sanderson@raspberrypi.com",
        "time": "Fri Jul 03 09:24:09 2026 -0500"
      },
      "message": "start 2.3.1 development\n"
    },
    {
      "commit": "1650acb1ad784db5a4e33809e8afd1e1fdcd8e5f",
      "tree": "2311787479362f5225dc08fefc9dce6bace32021",
      "parents": [
        "6f6458d792b93685a11423b244a585eaa99eafcf"
      ],
      "author": {
        "name": "graham sanderson",
        "email": "graham.sanderson@raspberrypi.com",
        "time": "Fri Jul 03 09:20:23 2026 -0500"
      },
      "committer": {
        "name": "graham sanderson",
        "email": "graham.sanderson@raspberrypi.com",
        "time": "Fri Jul 03 09:20:23 2026 -0500"
      },
      "message": "update bazel version to 2.3.0 too\n"
    },
    {
      "commit": "6f6458d792b93685a11423b244a585eaa99eafcf",
      "tree": "1bf9abb0d8671b4ae98e32a80a7c9a389948fda8",
      "parents": [
        "0d160860227c83133502b8e1c504313e40ae9124"
      ],
      "author": {
        "name": "graham sanderson",
        "email": "graham.sanderson@raspberrypi.com",
        "time": "Fri Jul 03 09:10:53 2026 -0500"
      },
      "committer": {
        "name": "graham sanderson",
        "email": "graham.sanderson@raspberrypi.com",
        "time": "Fri Jul 03 09:10:53 2026 -0500"
      },
      "message": "release picotool version 2.3.0\n"
    },
    {
      "commit": "0d160860227c83133502b8e1c504313e40ae9124",
      "tree": "c9b3a62be8b0207bd3d3b495d443b42d98d0b983",
      "parents": [
        "d928e7878509996783cd58d7582be0d8713e061d"
      ],
      "author": {
        "name": "will-v-pi",
        "email": "108662275+will-v-pi@users.noreply.github.com",
        "time": "Fri Jul 03 14:53:35 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 03 08:53:35 2026 -0500"
      },
      "message": "Fix elf squashing (#335)\n\nDon\u0027t attempt to squash segments which are on top of previous segments (e.g. a partition table on top of .bss)\n\nFixes pico-examples enc_bootloader build on clang, and any other signed builds with embedded partition tables"
    },
    {
      "commit": "d928e7878509996783cd58d7582be0d8713e061d",
      "tree": "0d5a79adf1a1004b5f0c1142c8c6f34714fd7467",
      "parents": [
        "8d743e3fe4c451e6349e36e615a980b7ac336bf8"
      ],
      "author": {
        "name": "will-v-pi",
        "email": "108662275+will-v-pi@users.noreply.github.com",
        "time": "Wed Jul 01 16:39:55 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 01 16:39:55 2026 +0100"
      },
      "message": "README improvements (#334)\n\n* Add links to all commands at top of readme\n\n* Reduce command width in the README\n\nShould now fit without needing horizontal scrolling"
    },
    {
      "commit": "8d743e3fe4c451e6349e36e615a980b7ac336bf8",
      "tree": "5df1a96e0da9a2492b8f2eada48c3e62c633a660",
      "parents": [
        "cf21bdc4c4a77379c089a605c66cf192f9b2d34c"
      ],
      "author": {
        "name": "will-v-pi",
        "email": "108662275+will-v-pi@users.noreply.github.com",
        "time": "Wed Jul 01 15:23:01 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 01 15:23:01 2026 +0100"
      },
      "message": "Possible fix for GCC 15 and glibc 2.43 (#332)"
    },
    {
      "commit": "cf21bdc4c4a77379c089a605c66cf192f9b2d34c",
      "tree": "5a578ad7f6e919e93b68f379f52db5d61385c643",
      "parents": [
        "f3602dc945e467acdcda43e5e7b5f17f267dcd03"
      ],
      "author": {
        "name": "will-v-pi",
        "email": "108662275+will-v-pi@users.noreply.github.com",
        "time": "Wed Jul 01 15:21:49 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 01 15:21:49 2026 +0100"
      },
      "message": "Don\u0027t assume segments are sorted by address (#333)\n\nThe ELF segments may not be in address order in the file, so take that into account in remove_ph_holes"
    },
    {
      "commit": "f3602dc945e467acdcda43e5e7b5f17f267dcd03",
      "tree": "d4b265944694b80095b1acda394f2efc61af056d",
      "parents": [
        "157eb0f3c1a02289e29199786982e1da35ae6aab"
      ],
      "author": {
        "name": "will-v-pi",
        "email": "108662275+will-v-pi@users.noreply.github.com",
        "time": "Tue Jun 30 17:49:39 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 30 17:49:39 2026 +0100"
      },
      "message": "Add warning for boards missing bootsel resistor (#327)\n\nAlso fix hash/sig verification for partition tables"
    },
    {
      "commit": "157eb0f3c1a02289e29199786982e1da35ae6aab",
      "tree": "1dbedc77b8cad1d761e0dd7fdd86ffeb24d1ed21",
      "parents": [
        "cee8de7f3f250f270825e85b4ab0969ee0490c2e"
      ],
      "author": {
        "name": "will-v-pi",
        "email": "108662275+will-v-pi@users.noreply.github.com",
        "time": "Tue Jun 30 17:28:24 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 30 17:28:24 2026 +0100"
      },
      "message": "Reduce default-pt partition sizes (#326)\n\n* Reduce default-pt partition sizes\n\nNeeds 3 * 4K at the end for BT flash bank and E10 abs block, in addition to existing 2 * 4K at the start for PT slots\n\n* Add warning to partition create\n\n* Add --no-btstack-flash-bank to disable warning\n\n* Update readme"
    },
    {
      "commit": "cee8de7f3f250f270825e85b4ab0969ee0490c2e",
      "tree": "692db38e2691882add8ab7a6fad0540aaee0539e",
      "parents": [
        "7ac0c2ac07dfbfcd1fcfae441ca0245906e23b82"
      ],
      "author": {
        "name": "will-v-pi",
        "email": "108662275+will-v-pi@users.noreply.github.com",
        "time": "Wed Jun 24 17:45:42 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 24 17:45:42 2026 +0100"
      },
      "message": "Add Block Device Support (#191)\n\n* Add bdev commands\n\nAdd ls, mkdir, put and get commands to access block devices\n\nCurrently only supports littlefs\n\n* Only include bdev if has_libusb\n\n* Fix bazel build\n\n* Merge put and get into cp, add rm, and make ls non-recursive with ability to specify directory\n\n* Add cat command, use partitions option, and format option\n\n* Respect write and format flags on block device\n\nDefault to writeable and formattable, but override based on bdev flags, or partition NSBOOT permissions\n\n* Add initial FatFS support\n\nAdds ls and cp commands for FatFS\n\n* Fix Bazel build\n\n* Add filesystem auto-detection\n\n* Add FatFS support to all bdev commands\n\n* Fix support for CircuitPython block device (Fat) and add full Flash Translation Layer (prevents doing lots of erases)\n\nChange Fat sector size back to 512, and consequently add in flash translation error - wasn\u0027t needed before with 4096 sector size\n\nAlso enable LFN support\n\n* Fix segfault in release builds, and add output to all commands\n\n* Add commands to readme\n\n* Add support for using partition with ID \"blockdev\"\n\nNeed to put BLOCK_DEVICE_PARTITION_ID into the SDK somewhere\n\n* Review fixups\n\nAdd extra checks to prevent too big files\n\nFix dirname description\n\nRemove short format option\n\nImprove erase check (rather than just checking for FF)\n\n* Update readme\n\n* Fix mkdir dirname desc\n\n* Add error strings\n\n* Update LittleFS to v2.11.1\n\n* fixups\n\n* Fixups from develop merge\n\n* Fix bazel build\n\n* Hopefully fix Windows build\n\n* BLOCK_DEVICE_PARTITION_ID moved into SDK, so just kept here for SDK 2.1.0 and 2.1.1\n\n* Allow picking partition by name or ID\n\nAlso rework partition table reading, to use a common function for partition_info and other commands\n\n* review fixup\n\n* Update readme\n\n* Allow overwriting format and write flags\n\n* BLOCK_DEVICE_PARTITION_ID -\u003e BLOCK_DEVICE_DEFAULT_PARTITION_ID\n\n* Add format command\n\n* Fix optional_untyped_path_selection_x and optional_untyped_file_selection_x so they are documented as optional\n\n* Allow passing : filenames to other bdev commands\n\nThis matches the cp command where : filenames are on-device, but still allow non : filenames as these commands only operate on-device\n\n* Suppress compile warning from oofatfs\n\n* Only suppress warnings when not on Windows\n\n* Fix corrupt fatfs error message\n\n* Add bdev_test.sh script\n\nRuns some basic tests of adding and removing files"
    },
    {
      "commit": "7ac0c2ac07dfbfcd1fcfae441ca0245906e23b82",
      "tree": "1f1fa4b030ad52dbfe1113774437af437ba4983b",
      "parents": [
        "14878fe0e8a718dd25507ee0972b4b31eaf1ff92"
      ],
      "author": {
        "name": "Kayce Basques",
        "email": "kaycebasques@gmail.com",
        "time": "Tue Jun 23 14:33:21 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 23 22:33:21 2026 +0100"
      },
      "message": "Add missing include in cli.h (#329)\n\n`cli.h` uses `std::back_inserter` which is defined in `\u003citerator\u003e`."
    },
    {
      "commit": "14878fe0e8a718dd25507ee0972b4b31eaf1ff92",
      "tree": "4f342d393ff887ab73849c48ee6670326223a265",
      "parents": [
        "6f615124e0f6d6018735da7f21e7752d3b7055cb"
      ],
      "author": {
        "name": "will-v-pi",
        "email": "108662275+will-v-pi@users.noreply.github.com",
        "time": "Fri Jun 19 23:51:12 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 19 23:51:12 2026 +0100"
      },
      "message": "Add ELF squashing (#325)\n\n* Improve detection of entry point, and flash vs sram in place_new_block\n\n* Add compressing of ELF files\n\nMoves the segments together so they are contiguous, with XIP SRAM at end\n\nThis allows packaging no_flash binaries which use XIP_SRAM, and also makes ones using scratch_x/y take up less space in flash\n\n* Fix encrypting binaries using xip_sram\n\nPropogates the need for xip_sram pinning load map through\n\n* Rename compress -\u003e squashed, as it\u0027s not actually compression\n\n* Only squash when signing, and add --no-squash option to disable it\n\n* Apply suggestions from code review\n\nCo-authored-by: will-v-pi \u003c108662275+will-v-pi@users.noreply.github.com\u003e"
    },
    {
      "commit": "6f615124e0f6d6018735da7f21e7752d3b7055cb",
      "tree": "0f7870314478e7603ee9f4678db516af48eb8ae1",
      "parents": [
        "ad54427be0ab819a794fb4f43daa2a084af3269e"
      ],
      "author": {
        "name": "will-v-pi",
        "email": "108662275+will-v-pi@users.noreply.github.com",
        "time": "Fri Jun 19 09:30:08 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 19 09:30:08 2026 +0100"
      },
      "message": "Use pico-sdk-prebuilts URLs for the UF2 files (#324)"
    },
    {
      "commit": "ad54427be0ab819a794fb4f43daa2a084af3269e",
      "tree": "465f77de26ed6f54a2985f33e0608b31888a63a9",
      "parents": [
        "c2c22e4c3237da8258232070b2e34436def39c5a"
      ],
      "author": {
        "name": "will-v-pi",
        "email": "108662275+will-v-pi@users.noreply.github.com",
        "time": "Mon Jun 15 12:04:01 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 15 12:04:01 2026 +0100"
      },
      "message": "Check command order in README matches the order in `picotool help` (#323)\n\nFixes #315"
    },
    {
      "commit": "c2c22e4c3237da8258232070b2e34436def39c5a",
      "tree": "b890fc83ce681ca34edb02881c734a664334f68f",
      "parents": [
        "946957fd2e77eba2517777ce0f334840140b274e"
      ],
      "author": {
        "name": "will-v-pi",
        "email": "108662275+will-v-pi@users.noreply.github.com",
        "time": "Mon Jun 15 11:33:17 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 15 11:33:17 2026 +0100"
      },
      "message": "Remove chocolatey from Windows CI (#307)\n\n* GCC should be pre-installed on Windows runners\n\n* Update Windows visual studio version\n\n17 is not available on GitHub runners any more"
    },
    {
      "commit": "946957fd2e77eba2517777ce0f334840140b274e",
      "tree": "2074db7bf3e33609a9de54930edee68691976611",
      "parents": [
        "353bc04d63dd2bafcc06cf4ea4f0269b9239bac7"
      ],
      "author": {
        "name": "will-v-pi",
        "email": "108662275+will-v-pi@users.noreply.github.com",
        "time": "Mon Jun 15 11:14:13 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 15 11:14:13 2026 +0100"
      },
      "message": "Add uf2 combine command (#313)\n\nCombines 2 UF2s into 1, modifying the block numbers (and giving them same family ID)\n\nAllows placing second uf2 at offset, or in a partition defined in the first uf2\n\n---------\n\nCo-authored-by: Andrew Scheller \u003clurch@durge.org\u003e"
    },
    {
      "commit": "353bc04d63dd2bafcc06cf4ea4f0269b9239bac7",
      "tree": "2e87ae0127695e7d28b108c9f616bcac57938317",
      "parents": [
        "047d157c7da255f41fb6a13af0f1b25a1e5ad1bf"
      ],
      "author": {
        "name": "will-v-pi",
        "email": "108662275+will-v-pi@users.noreply.github.com",
        "time": "Wed Jun 10 12:01:41 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 10 12:01:41 2026 +0100"
      },
      "message": "Update pre-compiled ELFs using latest develop (#320)\n\n* Update pre-compiled ELFs using latest develop\n\nxip_ram_perms can use new xip_ram binary type, which fixes sleep_ms\n\n* Use new include linker scripts for enc_bootloader\n\n* Update enc_bootloader SDK version requirement"
    },
    {
      "commit": "047d157c7da255f41fb6a13af0f1b25a1e5ad1bf",
      "tree": "ef54968bef72089bb72de4c875b5951aa0a5e9fc",
      "parents": [
        "ff88e7524fd8cb2f8af76df2f7bb7425e5e6ac33"
      ],
      "author": {
        "name": "will-v-pi",
        "email": "108662275+will-v-pi@users.noreply.github.com",
        "time": "Tue Jun 09 14:58:23 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 09 14:58:23 2026 +0100"
      },
      "message": "Fix pins in binary info (#322)\n\nPropogate model to remapped_memory_access\n\nRemove try catch, now model is returned as unknown\n\nUse switch-case to select pins, and use empty pin functions for unknown rather than defaulting to RP2040"
    },
    {
      "commit": "ff88e7524fd8cb2f8af76df2f7bb7425e5e6ac33",
      "tree": "f90328de97dd3480a6efe67ad1e89a48618b7b09",
      "parents": [
        "745f38daed24e4bffb27e5ef27d6900aee26cc4a"
      ],
      "author": {
        "name": "Lars Kellogg-Stedman",
        "email": "lars@oddbit.com",
        "time": "Fri Jun 05 12:27:29 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 05 17:27:29 2026 +0100"
      },
      "message": "Fix build errors with gcc 16.1.1 (#319)\n\nResolve build failures with gcc 16.1.1 by moving the C++ standard library\nincludes before the pico-sdk includes so that `__unused` is defined before\nit is used.\n\nWithout these changes, the build fails with:\n\n    In file included from /home/lars/src/pico-sdk/src/common/boot_picoboot_headers/include/boot/picoboot.h:15,\n                    from /home/lars/src/picotool/model/model.h:8,\n                    from /home/lars/src/picotool/model/model.cpp:1:\n    /usr/include/bits/struct_mutex.h:35:9: error: declaration does not declare anything [-fpermissive]\n      35 |   short __unused;\n          |         ^~~~~~~~\n    In file included from /usr/include/c++/16/x86_64-redhat-linux/bits/gthr-default.h:35,\n                    from /usr/include/c++/16/x86_64-redhat-linux/bits/gthr.h:157,\n                    from /usr/include/c++/16/ext/atomicity.h:37,\n                    from /usr/include/c++/16/bits/shared_ptr_base.h:61,\n                    from /usr/include/c++/16/bits/shared_ptr.h:53,\n                    from /usr/include/c++/16/memory:82,\n                    from /home/lars/src/picotool/model/model.h:43:\n    /usr/include/c++/16/ext/concurrence.h:124:34: error: cannot convert ‘\u003cbrace-enclosed initializer list\u003e’ to ‘__pthread_internal_list*’ in initialization\n      124 |     __gthread_mutex_t _M_mutex \u003d __GTHREAD_MUTEX_INIT;\n          |                                  ^~~~~~~~~~~~~~~~~~~~\n    /usr/include/c++/16/ext/concurrence.h:179:44: error: cannot convert ‘\u003cbrace-enclosed initializer list\u003e’ to ‘__pthread_internal_list*’ in initialization\n      179 |     __gthread_recursive_mutex_t _M_mutex \u003d __GTHREAD_RECURSIVE_MUTEX_INIT;\n          |                                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n    make[2]: *** [model/CMakeFiles/model.dir/build.make:79: model/CMakeFiles/model.dir/model.cpp.o] Error 1\n    make[1]: *** [CMakeFiles/Makefile2:802: model/CMakeFiles/model.dir/all] Error 2\n    make: *** [Makefile:136: all] Error 2\n\nSigned-off-by: Lars Kellogg-Stedman \u003clars@oddbit.com\u003e"
    },
    {
      "commit": "745f38daed24e4bffb27e5ef27d6900aee26cc4a",
      "tree": "c66a9d8a4764d00c51caf11f9e60ddda540ed8c8",
      "parents": [
        "0de05f7fbd88f7e79cbaca0900b9c02eefe3fd2a"
      ],
      "author": {
        "name": "William Vinnicombe",
        "email": "william.vinnicombe@raspberrypi.com",
        "time": "Tue Jun 02 14:30:41 2026 +0100"
      },
      "committer": {
        "name": "William Vinnicombe",
        "email": "william.vinnicombe@raspberrypi.com",
        "time": "Tue Jun 02 14:30:41 2026 +0100"
      },
      "message": "Fix BUILDING.md line endings\n"
    },
    {
      "commit": "0de05f7fbd88f7e79cbaca0900b9c02eefe3fd2a",
      "tree": "ee4ea99942644c29d0f9245e3cb1911e94c590c0",
      "parents": [
        "4f4eeb386ad39db45614384812b17ac026e95d7b"
      ],
      "author": {
        "name": "will-v-pi",
        "email": "108662275+will-v-pi@users.noreply.github.com",
        "time": "Tue Jun 02 13:43:09 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 02 13:43:09 2026 +0100"
      },
      "message": "Add support for bootsel activity LED (#316)\n\nCan use --bootsel-led and --bootsel-led-active-low arguments with picotool commands that reboot the device to bootsel mode (ie `reboot -u` and forced commands), and can also set default LED with DEFAULT_BOOTSEL_LED to always flash that LED even when --bootsel-led isn\u0027t passed\n---------\n\nCo-authored-by: Andrew Scheller \u003clurch@durge.org\u003e\nCo-authored-by: Andrew Scheller \u003candrew.scheller@raspberrypi.com\u003e"
    },
    {
      "commit": "4f4eeb386ad39db45614384812b17ac026e95d7b",
      "tree": "df15a641d487bcb9db660d48befd94768f538135",
      "parents": [
        "af47f2ddb341dc8851aaf24501b3a214a810e23c"
      ],
      "author": {
        "name": "William Vinnicombe",
        "email": "william.vinnicombe@raspberrypi.com",
        "time": "Fri May 29 16:25:23 2026 +0100"
      },
      "committer": {
        "name": "William Vinnicombe",
        "email": "william.vinnicombe@raspberrypi.com",
        "time": "Fri May 29 16:36:59 2026 +0100"
      },
      "message": "Fix USE_PRECOMPILED\u003d0 with latest develop\n\nChange function names to not conflict with SDK functions - breakage caused because `flash_do_cmd` is now inline in a header\n"
    },
    {
      "commit": "af47f2ddb341dc8851aaf24501b3a214a810e23c",
      "tree": "9338d14275f1b9082e6ed6c98ea99e9e2732446c",
      "parents": [
        "652dd8586db986e2be62b2507ab6a0b2287c496f"
      ],
      "author": {
        "name": "will-v-pi",
        "email": "108662275+will-v-pi@users.noreply.github.com",
        "time": "Mon May 18 11:30:50 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon May 18 11:30:50 2026 +0100"
      },
      "message": "Only print 16-bit ECC value from otp get (#314)\n\nYou can still output the full 24-bit value by passing `--raw`"
    },
    {
      "commit": "652dd8586db986e2be62b2507ab6a0b2287c496f",
      "tree": "af10fab54df6279e2d2be3193dfb0ffd9fb6c4c4",
      "parents": [
        "4b35350090fe5ab99bab2cc98ba9c25950ca37ac"
      ],
      "author": {
        "name": "will-v-pi",
        "email": "108662275+will-v-pi@users.noreply.github.com",
        "time": "Thu May 14 13:07:03 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 14 13:07:03 2026 +0100"
      },
      "message": "Improve forced commands for RP2040 and custom vid/pid (#263)\n\n* Remove vid/pid filter when using forced commands\n\nThe vid/pid will typically change when switching to BOOTSEL mode, so remove those filters and just filter on serial number if present\n\nFixes #261\n\n* Improve handling of RP2040 devices after reboot\n\nCalling GET_INFO when not available sometimes causes issues with forced commands\n\nAlso improve libusb error messages when debugging\n\n* Add rp2040 workaround to allow forced reboots, and improve behaviour with no vid/pid filtering\n\n* Add Zadig message to failed RP2040 forced reboots\n\nAlso encourage -f/F on Windows, rather than a separate reboot\n\n* Add Zadig note to the readme\n\nThis is cleaner than directing to a document name that must then be searched for the word Zadig\n\n---------\n\nCo-authored-by: Andrew Scheller \u003candrew.scheller@raspberrypi.com\u003e"
    },
    {
      "commit": "4b35350090fe5ab99bab2cc98ba9c25950ca37ac",
      "tree": "44b3e9cef87f63cf2070105e107e0b55331f6a17",
      "parents": [
        "29e6e3f02cceb948de1aacc17b8226db2afc0beb"
      ],
      "author": {
        "name": "will-v-pi",
        "email": "108662275+will-v-pi@users.noreply.github.com",
        "time": "Wed May 13 15:17:55 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 13 15:17:55 2026 +0100"
      },
      "message": "Prevent coprodis warning for .word that happen to be coprocessor instructions (#312)\n\nDidn\u0027t affect GCC as words are formatted as 8 hex chars instead of 4+4, but did affect clang as they\u0027re formatted the same as instructions"
    },
    {
      "commit": "29e6e3f02cceb948de1aacc17b8226db2afc0beb",
      "tree": "90da2bb127716a30a8ccdcee9ba3e6b396e4588d",
      "parents": [
        "fb75c1dcaf863ecbc9a7f463b9e7b8aaaa43ea9a"
      ],
      "author": {
        "name": "will-v-pi",
        "email": "108662275+will-v-pi@users.noreply.github.com",
        "time": "Mon May 11 10:47:48 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon May 11 10:47:48 2026 +0100"
      },
      "message": "Issue exit_xip before erasing (#302)\n\nThis is required on RP2040 when erasing using --range - the other flash commands (eg load) already add it for all chips so do the same here"
    },
    {
      "commit": "fb75c1dcaf863ecbc9a7f463b9e7b8aaaa43ea9a",
      "tree": "b819a494b8f8e07c3127ab54f6762d78a422e1ca",
      "parents": [
        "5767994d4058bfa65592f127a97e144a2a0101d8"
      ],
      "author": {
        "name": "will-v-pi",
        "email": "108662275+will-v-pi@users.noreply.github.com",
        "time": "Fri May 08 16:58:59 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 08 16:58:59 2026 +0100"
      },
      "message": "Improve family ID CLI handling (#306)\n\n* Improve family ID CLI handling\n\nAdd list of valid IDs to the error message\n\nHandle uppercase and _ in the name (eg RP2350_ARM_S gets converted to rp2350-arm-s)\n\nAlso add this improved handling to partition table creation\n\nDrive by fix to prevent UF2 convert from touching files until input file type has been checked\n\nAlso update json examples to point to master schemas instead of develop"
    },
    {
      "commit": "5767994d4058bfa65592f127a97e144a2a0101d8",
      "tree": "33634bc3a55d80f27a32eeeb313e34eeb5204b21",
      "parents": [
        "3c743bdc1882ab60f08dc8662e81a43b1330a823"
      ],
      "author": {
        "name": "Michał Barnaś",
        "email": "88503085+barnas-michal@users.noreply.github.com",
        "time": "Fri May 08 17:52:38 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 08 16:52:38 2026 +0100"
      },
      "message": "Fix typo in message about devices found (#310)"
    },
    {
      "commit": "3c743bdc1882ab60f08dc8662e81a43b1330a823",
      "tree": "55f64a07eb400c8496fa357db6249f6341a6bddb",
      "parents": [
        "ce2570d282781b2595102524135f5914b1c0bcad"
      ],
      "author": {
        "name": "will-v-pi",
        "email": "108662275+will-v-pi@users.noreply.github.com",
        "time": "Wed May 06 09:17:23 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 06 09:17:23 2026 +0100"
      },
      "message": "Add support for pinning XIP SRAM (#298)\n\n* Allow use of xip_sram in flash binaries\n\n* Add handling for SDK xip_sram pinning\n\nAlso add --pin-xip-sram arg, add --no-clear arg to encrypt, and use model for correct pinning and clearing\n\n* Document different clear defaults between seal and encrypt\n\nAlso fix seal documentation, as it doesn\u0027t sign the binary by default"
    },
    {
      "commit": "ce2570d282781b2595102524135f5914b1c0bcad",
      "tree": "887e283f4a2abdb3c7937b9324f197c675d2682d",
      "parents": [
        "d1a8d35da3f622cf228c0a17e9b7a4295d5282d0"
      ],
      "author": {
        "name": "Jan",
        "email": "sentrycraft123@gmail.com",
        "time": "Tue May 05 16:19:38 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 05 15:19:38 2026 +0100"
      },
      "message": "Update udev rule (#285)\n\nWith systemd 258 rules with non-system groups get ignored, this makes\nthis rule fail on any non-debian distro.\n\nThe rules are split up to retain the group assignment and seat access\nwhile remaining functional across multiple distros."
    },
    {
      "commit": "d1a8d35da3f622cf228c0a17e9b7a4295d5282d0",
      "tree": "6ed880aa0923a51167af6184ace92b321454a437",
      "parents": [
        "f5eeb8ec5d31dd9d2d58577e819800d7a4c6af0e"
      ],
      "author": {
        "name": "Graham Sanderson",
        "email": "graham.sanderson@raspberrypi.com",
        "time": "Tue Apr 07 04:09:09 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 07 10:09:09 2026 +0100"
      },
      "message": "remove EXEC2 (#304)"
    },
    {
      "commit": "f5eeb8ec5d31dd9d2d58577e819800d7a4c6af0e",
      "tree": "736033982e3c67b61f25bd78b7a906cdf834d4f5",
      "parents": [
        "1c2872cc78fa3073b78f8d6e257ac818c07696e9"
      ],
      "author": {
        "name": "will-v-pi",
        "email": "108662275+will-v-pi@users.noreply.github.com",
        "time": "Fri Mar 20 15:59:22 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Mar 20 15:59:22 2026 +0000"
      },
      "message": "Add reboot command to readme (#280)\n\n* Add docs for reboot"
    },
    {
      "commit": "1c2872cc78fa3073b78f8d6e257ac818c07696e9",
      "tree": "9ba29084ebe4673c4e42e44221009489da839c74",
      "parents": [
        "68e0a5ca12f37342564909c2068c0ab5deb7778d"
      ],
      "author": {
        "name": "will-v-pi",
        "email": "108662275+will-v-pi@users.noreply.github.com",
        "time": "Fri Mar 20 15:56:30 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Mar 20 15:56:30 2026 +0000"
      },
      "message": "Improve docs for picotool load -x (#281)\n\n* Mention flash update boot in load -x description\n\n* Include RAM boot"
    },
    {
      "commit": "68e0a5ca12f37342564909c2068c0ab5deb7778d",
      "tree": "3959a1a9962c14873641d8c7a2af103e42c3df74",
      "parents": [
        "3003f8db512fa68c1aa264590fc0475d520f8b75"
      ],
      "author": {
        "name": "will-v-pi",
        "email": "108662275+will-v-pi@users.noreply.github.com",
        "time": "Fri Mar 06 18:11:07 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Mar 06 18:11:07 2026 +0000"
      },
      "message": "Respect boolean values in partition table JSON (#291)\n\nPreviously would treat presence of a key as true\n\nFixes #290"
    },
    {
      "commit": "3003f8db512fa68c1aa264590fc0475d520f8b75",
      "tree": "facfa641420a16e3a6534fc12e8949d7ff9044a5",
      "parents": [
        "0d4609663f75f10bee90f963bf0ad985bae9a51f"
      ],
      "author": {
        "name": "will-v-pi",
        "email": "108662275+will-v-pi@users.noreply.github.com",
        "time": "Fri Mar 06 18:08:31 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Mar 06 18:08:31 2026 +0000"
      },
      "message": "Fix OTP get/list for row 1 (#297)\n\nThe last_reg_row variable was not being initialised to an invalid value"
    },
    {
      "commit": "0d4609663f75f10bee90f963bf0ad985bae9a51f",
      "tree": "faf2ed4e5f33f692207c6d828b26a73dd20648ff",
      "parents": [
        "a72dac796da35c9659e9034c671f7f2486c8cb19"
      ],
      "author": {
        "name": "will-v-pi",
        "email": "108662275+will-v-pi@users.noreply.github.com",
        "time": "Thu Mar 05 17:42:43 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Mar 05 17:42:43 2026 +0000"
      },
      "message": "Fix MSVC build and CI tests (#293)\n\n* Add MSVC build test\n\n* Check if UF2 files are actually zip files, and unzip them"
    },
    {
      "commit": "a72dac796da35c9659e9034c671f7f2486c8cb19",
      "tree": "13ff0814fd22498283710348b4f98be07a91a069",
      "parents": [
        "2006299f50f63189ba22bfd024cef4bf68ecd62e"
      ],
      "author": {
        "name": "will-v-pi",
        "email": "108662275+will-v-pi@users.noreply.github.com",
        "time": "Mon Mar 02 11:22:15 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 02 11:22:15 2026 +0000"
      },
      "message": "Fix bazel build (#292)\n\nRun Bazel buildifier on Bazel files, to add missing load() statements for things provided by @rules_cc. This is required for Bazel \u003e9."
    },
    {
      "commit": "2006299f50f63189ba22bfd024cef4bf68ecd62e",
      "tree": "caed97264fe270dca701e17e94a51ff6700584eb",
      "parents": [
        "d745d640d8c693a4e0c4f7e3c4b0c027c767f08e"
      ],
      "author": {
        "name": "will-v-pi",
        "email": "108662275+will-v-pi@users.noreply.github.com",
        "time": "Fri Feb 27 09:49:04 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Feb 27 09:49:04 2026 +0000"
      },
      "message": "Prevent OTP permissions accumulating (#295)\n\nFixes bug with otp permissions command, which would apply overly restrictive permissions"
    },
    {
      "commit": "d745d640d8c693a4e0c4f7e3c4b0c027c767f08e",
      "tree": "2fe94a988ad1271b230c3625fe97cb8996b3d22d",
      "parents": [
        "4342402be7882e9ac383b4e31bc2a73624a36b00"
      ],
      "author": {
        "name": "will-v-pi",
        "email": "108662275+will-v-pi@users.noreply.github.com",
        "time": "Tue Sep 16 13:37:11 2025 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 16 13:37:11 2025 +0100"
      },
      "message": "Apply errata E10 fix to erase command (#279)\n\n"
    },
    {
      "commit": "4342402be7882e9ac383b4e31bc2a73624a36b00",
      "tree": "44f1a9a9bda662f3758cba8c86f5405c43d74ad8",
      "parents": [
        "8108948b5ef4a20a39e7b643e5787c62920b0737"
      ],
      "author": {
        "name": "josch",
        "email": "josch@mister-muffin.de",
        "time": "Fri Sep 12 13:10:23 2025 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Sep 12 12:10:23 2025 +0100"
      },
      "message": "add documentation for reboot --diagnostic option (#276)\n\n* add documentation for reboot --diagnostic option\n\n* main.cpp: remove stray whitespace"
    },
    {
      "commit": "8108948b5ef4a20a39e7b643e5787c62920b0737",
      "tree": "957ca8b548cc6b842e84b3e270e10fc66d708c21",
      "parents": [
        "699049f33bfd5c06151aec58795bf0cf61603b47"
      ],
      "author": {
        "name": "will-v-pi",
        "email": "108662275+will-v-pi@users.noreply.github.com",
        "time": "Wed Sep 10 16:56:31 2025 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 10 16:56:31 2025 +0100"
      },
      "message": "Add error message when hitting E15 (#278)\n\nFixes #266"
    },
    {
      "commit": "699049f33bfd5c06151aec58795bf0cf61603b47",
      "tree": "e6953e59d33582ced49066eeaf71af26bb99aff2",
      "parents": [
        "fa5f6394db94450fc5c4cd2e3708b594b70b80fc"
      ],
      "author": {
        "name": "will-v-pi",
        "email": "108662275+will-v-pi@users.noreply.github.com",
        "time": "Fri Aug 29 11:28:31 2025 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Aug 29 10:28:31 2025 +0100"
      },
      "message": "Add support for extra security bit (#273)\n\n* Add support for extra_security bits\n\n* Only print in info -m"
    },
    {
      "commit": "fa5f6394db94450fc5c4cd2e3708b594b70b80fc",
      "tree": "c2bc7aab58558e4be4164ead64f0665dfeccfe39",
      "parents": [
        "77d8abd606ce87889fe84c3f6231d5d560193a3f"
      ],
      "author": {
        "name": "Ivor Wanders",
        "email": "iwanders@users.noreply.github.com",
        "time": "Tue Aug 19 09:01:12 2025 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 19 14:01:12 2025 +0100"
      },
      "message": "Print the help when -h or --help is encountered (#264)\n\nThis inserts the \u0027help\u0027 command at the start of the argument list in case\nthe \u0027-h\u0027 or \u0027--help\u0027 argument is encountered anywhere on the commandline."
    },
    {
      "commit": "77d8abd606ce87889fe84c3f6231d5d560193a3f",
      "tree": "a6820283e90297998cdba3ea35e90e51c901c8d0",
      "parents": [
        "e10952c2517eb67f857e7ad3bc892be0405e07d5"
      ],
      "author": {
        "name": "will-v-pi",
        "email": "108662275+will-v-pi@users.noreply.github.com",
        "time": "Fri Aug 15 17:33:51 2025 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Aug 15 17:33:51 2025 +0100"
      },
      "message": "Include pico/usb_reset_interface.h, not pico/stdio_usb/reset_interface.h (#272)\n\n"
    },
    {
      "commit": "e10952c2517eb67f857e7ad3bc892be0405e07d5",
      "tree": "57982b5b34ad9d1110fc9490c9f0d23e2503be83",
      "parents": [
        "735e0d729997da8e3368bcd6326cd0370edbbc47"
      ],
      "author": {
        "name": "will-v-pi",
        "email": "108662275+will-v-pi@users.noreply.github.com",
        "time": "Wed Aug 13 09:54:45 2025 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Aug 13 09:54:45 2025 +0100"
      },
      "message": "Prevent printing metadata block twice in info, when only one block present (#271)\n\nNoticed in #270"
    },
    {
      "commit": "735e0d729997da8e3368bcd6326cd0370edbbc47",
      "tree": "1b57152b57e62f90f6dbb798bdc3445650519f5c",
      "parents": [
        "c276650a51cacd7700f09bb5c9e30a2f47f10d96",
        "25aa087b2c517b4901874a99536e869d4d27b678"
      ],
      "author": {
        "name": "graham sanderson",
        "email": "graham.sanderson@raspberrypi.com",
        "time": "Thu Aug 07 13:40:16 2025 -0700"
      },
      "committer": {
        "name": "graham sanderson",
        "email": "graham.sanderson@raspberrypi.com",
        "time": "Thu Aug 07 13:40:16 2025 -0700"
      },
      "message": "Merge branch \u0027master\u0027 into develop\n"
    },
    {
      "commit": "25aa087b2c517b4901874a99536e869d4d27b678",
      "tree": "7280304238f7097c8942fc0350a4f6e977d738fc",
      "parents": [
        "2bc6f35469434d932c25a1aa74dda892717a5190"
      ],
      "author": {
        "name": "graham sanderson",
        "email": "graham.sanderson@raspberrypi.com",
        "time": "Thu Aug 07 13:37:09 2025 -0700"
      },
      "committer": {
        "name": "graham sanderson",
        "email": "graham.sanderson@raspberrypi.com",
        "time": "Thu Aug 07 13:37:09 2025 -0700"
      },
      "message": "bump version number to 2.2.0-a4\n"
    },
    {
      "commit": "2bc6f35469434d932c25a1aa74dda892717a5190",
      "tree": "e8a1e2aa9c081785e91d131719839a9400d9809c",
      "parents": [
        "a7eb3988f0645239185fadb4e25d8279478c2dbb"
      ],
      "author": {
        "name": "Graham Sanderson",
        "email": "graham.sanderson@raspberrypi.com",
        "time": "Thu Aug 07 12:57:09 2025 -0700"
      },
      "committer": {
        "name": "graham sanderson",
        "email": "graham.sanderson@raspberrypi.com",
        "time": "Thu Aug 07 12:58:12 2025 -0700"
      },
      "message": "Support for RP2350 A2/A3/A4 along with code improvements (#267)\n\n* Support for RP2350 A2/A4/A4 along with code improvements, replacing the ocean of one-off IFs with a more OO abstraction\n\nCo-authored-by: William Vinnicombe \u003cwilliam.vinnicombe@raspberrypi.com\u003e\nCo-authored-by: will-v-pi \u003c108662275+will-v-pi@users.noreply.github.com\u003e\nCo-authored-by: Andrew Scheller \u003candrew.scheller@raspberrypi.com\u003e\nCo-authored-by: graham sanderson \u003cgraham@spiff.local\u003e"
    },
    {
      "commit": "c276650a51cacd7700f09bb5c9e30a2f47f10d96",
      "tree": "1b57152b57e62f90f6dbb798bdc3445650519f5c",
      "parents": [
        "900ba88ea869dd45b4dafa33740249994359b76f"
      ],
      "author": {
        "name": "Graham Sanderson",
        "email": "graham.sanderson@raspberrypi.com",
        "time": "Thu Aug 07 12:57:09 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Aug 07 12:57:09 2025 -0700"
      },
      "message": "Support for RP2350 A2/A3/A4 along with code improvements (#267)\n\n* Support for RP2350 A2/A4/A4 along with code improvements, replacing the ocean of one-off IFs with a more OO abstraction\n\nCo-authored-by: William Vinnicombe \u003cwilliam.vinnicombe@raspberrypi.com\u003e\nCo-authored-by: will-v-pi \u003c108662275+will-v-pi@users.noreply.github.com\u003e\nCo-authored-by: Andrew Scheller \u003candrew.scheller@raspberrypi.com\u003e\nCo-authored-by: graham sanderson \u003cgraham@spiff.local\u003e"
    },
    {
      "commit": "900ba88ea869dd45b4dafa33740249994359b76f",
      "tree": "ef2880d1a8a42e9ab1cbf99e4d363020350b7217",
      "parents": [
        "a7eb3988f0645239185fadb4e25d8279478c2dbb"
      ],
      "author": {
        "name": "graham sanderson",
        "email": "graham.sanderson@raspberrypi.com",
        "time": "Tue Jul 29 07:10:23 2025 -0500"
      },
      "committer": {
        "name": "graham sanderson",
        "email": "graham.sanderson@raspberrypi.com",
        "time": "Tue Jul 29 07:10:23 2025 -0500"
      },
      "message": "start 2.2.1-develop\n"
    },
    {
      "commit": "a7eb3988f0645239185fadb4e25d8279478c2dbb",
      "tree": "b06783b0cdee0444a69dcd5a187faad732e8b2f0",
      "parents": [
        "48f8dc1ce25492b27bc14eabcb9832506cbf0fe6"
      ],
      "author": {
        "name": "graham sanderson",
        "email": "graham.sanderson@raspberrypi.com",
        "time": "Mon Jul 28 19:41:12 2025 -0500"
      },
      "committer": {
        "name": "graham sanderson",
        "email": "graham.sanderson@raspberrypi.com",
        "time": "Tue Jul 29 06:23:40 2025 -0500"
      },
      "message": "release picotool version 2.2.0\n"
    },
    {
      "commit": "48f8dc1ce25492b27bc14eabcb9832506cbf0fe6",
      "tree": "017f32fb0bef1abc6560523c5921037e77466d41",
      "parents": [
        "63cb67f956663ef302c2492b6a4cfaef57655729"
      ],
      "author": {
        "name": "will-v-pi",
        "email": "108662275+will-v-pi@users.noreply.github.com",
        "time": "Thu Jul 24 22:33:06 2025 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 24 16:33:06 2025 -0500"
      },
      "message": "Check hamming weights of AES key shares (#252)\n\n* Add hamming weight checks\n\n* Rework to deal with whole shares, not word-wise\n\n* Fix logging\n\n* Revert \"Rework to deal with whole shares, not word-wise\"\n\nThis reverts commit 65245f897abe467c50e24ffc618987c46498f577.\n\n* Switch to checking half-words, and add fixed number of attempts (100,000) before failing\n\n* Switch to checking numbers are within middle ranges, rather than checking deltas"
    },
    {
      "commit": "63cb67f956663ef302c2492b6a4cfaef57655729",
      "tree": "e9f852177163866422728b80a5cb6e6024d73c1e",
      "parents": [
        "f4b56325fe1d872bb77f994d473340242da7254d"
      ],
      "author": {
        "name": "will-v-pi",
        "email": "108662275+will-v-pi@users.noreply.github.com",
        "time": "Thu Jul 24 22:26:57 2025 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 24 16:26:57 2025 -0500"
      },
      "message": "Add test build with SDK 2.1.0 and 2.1.1 (#262)\n\n"
    },
    {
      "commit": "f4b56325fe1d872bb77f994d473340242da7254d",
      "tree": "976fdfc435c8bcc3018fe626f5e6bcbe92ee7be6",
      "parents": [
        "455bdb436c43dafa5ee27d68ae9c3d6c30952141"
      ],
      "author": {
        "name": "will-v-pi",
        "email": "108662275+will-v-pi@users.noreply.github.com",
        "time": "Thu Jul 24 13:06:39 2025 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 24 13:06:39 2025 +0100"
      },
      "message": "Fix Windows build and CI with libusb (#253)\n\n* Fix Windows build\n\n* Fix Windows LibUSB in CI\n\n* Add test that libusb has been included"
    },
    {
      "commit": "455bdb436c43dafa5ee27d68ae9c3d6c30952141",
      "tree": "1f026aa3da8faefe02df8958d3cb4358ccf04fa4",
      "parents": [
        "7c55234cda429fc736f18d4a68f72209ce9e549b"
      ],
      "author": {
        "name": "Alexey Vazhnov",
        "email": "vazhnov@boot-keys.org",
        "time": "Thu Jul 24 11:45:41 2025 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 24 10:45:41 2025 +0100"
      },
      "message": "Fix typo: IMAGEDEF → IMAGE_DEF, as it is defined in the datasheet (#265)\n\n"
    },
    {
      "commit": "7c55234cda429fc736f18d4a68f72209ce9e549b",
      "tree": "a265aa535587660b82c98fd22b2f7da32f97f339",
      "parents": [
        "1c65fa9a7548a67fb7a74399dbde7cf0148acd29"
      ],
      "author": {
        "name": "Graham Sanderson",
        "email": "graham.sanderson@raspberrypi.com",
        "time": "Fri Jul 18 09:29:23 2025 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 18 09:29:23 2025 -0500"
      },
      "message": "support compile with SDK 2.1.0 and SDK 2.1.1 (#257)\n\n"
    },
    {
      "commit": "1c65fa9a7548a67fb7a74399dbde7cf0148acd29",
      "tree": "9acd225b20cdcca58c70c76266d37a59ee0055b9",
      "parents": [
        "d5ee24b7420072fcab7afba120c37e6ff84aa1ee"
      ],
      "author": {
        "name": "will-v-pi",
        "email": "108662275+will-v-pi@users.noreply.github.com",
        "time": "Fri Jul 18 09:41:41 2025 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 18 09:41:41 2025 +0100"
      },
      "message": "Add support for CYW43_FIRMWARE_FAMILY_ID (#247)\n\n* Add support for CYW43_FIRMWARE_FAMILY_ID\n\n* Rename bootrom family ID min \u0026 max"
    },
    {
      "commit": "d5ee24b7420072fcab7afba120c37e6ff84aa1ee",
      "tree": "c045326474218d6535587e29eed27553db3d9e27",
      "parents": [
        "48ce1b5256f7db9c2faacc92ab665d2bac452436"
      ],
      "author": {
        "name": "will-v-pi",
        "email": "108662275+will-v-pi@users.noreply.github.com",
        "time": "Thu Jul 17 17:43:05 2025 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 17 17:43:05 2025 +0100"
      },
      "message": "Small file fixes (#254)\n\n* Fix rounding bug for load/save/verify small files\n\nWant to round up size/100, as a non-zero size should always give a non-zero chunk size\n\n* Allow zero fill when checking checksum\n\nOtherwise fails as unmapped for small files"
    },
    {
      "commit": "48ce1b5256f7db9c2faacc92ab665d2bac452436",
      "tree": "750258dce49721a702a3bbccc8fcbe04f5630e07",
      "parents": [
        "1631e27a12905eb8d221658270284020dff6e1d4"
      ],
      "author": {
        "name": "will-v-pi",
        "email": "108662275+will-v-pi@users.noreply.github.com",
        "time": "Tue Jul 15 22:44:44 2025 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 15 16:44:44 2025 -0500"
      },
      "message": "Install pre-compiled files into source tree (#242)\n\n* Copy newly compiled files over when using USE_PRECOMPILED\u003dFALSE\n\n* Add action to check precompiled binaries\n\n* Fix build with precompiled\n\n* Update precompiled binaries\n\n* Remove `if: runner.os \u003d\u003d \u0027Linux\u0027` where not needed\n\nKeep the step name \"Install dependencies (Linux)\" in case dependencies change later, to make changing all of them simpler\n\n* Change workflow to just check for file updates, rather than identical files\n\n* Run checks in separate script\n\n* Anchor start/end of greps\n\n* Review fixups\n\nSimplify CMakeLists.txt and BUILD.bazel skips\n\nInstall all ELFs as files, so they aren\u0027t marked as executable\n\n* Tidy up file checks\n\n* Add add_embedded_data_project function\n\nThis fixes the BUILD_ALWAYS issues as it\u0027s now only set when `USE_PRECOMPILED\u003dfalse`, and also removes the need for `${CMAKE_COMMAND} --install .`\n\n* Add back BUILD_ALWAYS\n\nIt\u0027s needed so if you update the binaries (eg `git pull`) they get re-copied and re-installed"
    },
    {
      "commit": "1631e27a12905eb8d221658270284020dff6e1d4",
      "tree": "764a884e5614fbcd65a423d2279e9fba1bb141bb",
      "parents": [
        "dcbeb00f7274361e4f3ed1576e24c81a015ad7ec"
      ],
      "author": {
        "name": "will-v-pi",
        "email": "108662275+will-v-pi@users.noreply.github.com",
        "time": "Tue Jul 15 22:43:58 2025 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 15 16:43:58 2025 -0500"
      },
      "message": "Fix encryption when using clang, and with allocatable heap (#243)\n\n* Fix encryption when using clang, and with allocatable heap\n\n* Test build examples with clang too\n\n* Delete empty PH segments when moving\n\nThese segments are not necessary, and will likely be moved to invalid memory addresses"
    },
    {
      "commit": "dcbeb00f7274361e4f3ed1576e24c81a015ad7ec",
      "tree": "86d0bab7fcd5a009bd07376dda76c86928867267",
      "parents": [
        "7ce9fd0e6d799a1bb65e9af493dbce575d41ffc6"
      ],
      "author": {
        "name": "William Vinnicombe",
        "email": "william.vinnicombe@raspberrypi.com",
        "time": "Tue Jul 15 13:42:07 2025 +0100"
      },
      "committer": {
        "name": "William Vinnicombe",
        "email": "william.vinnicombe@raspberrypi.com",
        "time": "Tue Jul 15 13:42:07 2025 +0100"
      },
      "message": "Add PR branch check action (raspberrypi/pico-sdk#2536)\n"
    },
    {
      "commit": "7ce9fd0e6d799a1bb65e9af493dbce575d41ffc6",
      "tree": "a185a8f5ee921ea37dfc39f4ac83e8a9c8249391",
      "parents": [
        "e5fa18a71590d7c6715e8f6c0e04a47398161315"
      ],
      "author": {
        "name": "Graham Sanderson",
        "email": "graham.sanderson@raspberrypi.com",
        "time": "Mon Jul 14 10:56:53 2025 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 14 10:56:53 2025 -0500"
      },
      "message": "lock OTP_DEBUGEN so that debug cannot be enabled if it was disabled in OTP (#249)\n\n"
    },
    {
      "commit": "e5fa18a71590d7c6715e8f6c0e04a47398161315",
      "tree": "19f6a5d2776355b3d738927c21ea6ed9f54b3309",
      "parents": [
        "dd365f8b137d9288c0d1bf056d02398ec0a48d51"
      ],
      "author": {
        "name": "will-v-pi",
        "email": "108662275+will-v-pi@users.noreply.github.com",
        "time": "Mon Jun 23 11:26:57 2025 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 23 11:26:57 2025 +0100"
      },
      "message": "Make no libusb build clearer (#246)\n\n* Fix info and config help without libusb, and add no USB support message to errors and `picotool version`"
    },
    {
      "commit": "dd365f8b137d9288c0d1bf056d02398ec0a48d51",
      "tree": "c1501218e9c62bd76691d043a8dfeea000882ca4",
      "parents": [
        "4fa522a184789bd74cd028383af2c2309f081319"
      ],
      "author": {
        "name": "will-v-pi",
        "email": "108662275+will-v-pi@users.noreply.github.com",
        "time": "Wed Jun 18 17:44:31 2025 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 18 17:44:31 2025 +0100"
      },
      "message": "Allow DLL libusb libraries with variable (#228)\n\nAdd `PICOTOOL_LIBUSB_ALLOW_DLL` variable to switch back to the old behaviour, prior to #126"
    },
    {
      "commit": "4fa522a184789bd74cd028383af2c2309f081319",
      "tree": "045f29edef5c4d9133ee1184b2cef20afc7b291a",
      "parents": [
        "265d0e8269c9e71840420af8886168edfc76d2c2"
      ],
      "author": {
        "name": "will-v-pi",
        "email": "108662275+will-v-pi@users.noreply.github.com",
        "time": "Wed Jun 18 16:03:06 2025 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 18 16:03:06 2025 +0100"
      },
      "message": "Add otp dumping to BIN file (#236)\n\n* Refactor otp_load to separate out otp json handling\n\n* Move OTP functions together\n\n* Add dumping of JSON\n\n* Add dumping to BIN file instead of console\n\n* Update readme"
    },
    {
      "commit": "265d0e8269c9e71840420af8886168edfc76d2c2",
      "tree": "bc62e902733ff636ba7be2f7bdc16f86d2539eb0",
      "parents": [
        "54454bb02b1bb7d4c7bf5c6b13922ce34b0bdab4"
      ],
      "author": {
        "name": "Graham Sanderson",
        "email": "graham.sanderson@raspberrypi.com",
        "time": "Wed Jun 18 07:26:43 2025 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 18 13:26:43 2025 +0100"
      },
      "message": "Double skip fix (#244)\n\n* fix a possible double skip\n\n---------\n\nCo-authored-by: William Vinnicombe \u003cwilliam.vinnicombe@raspberrypi.com\u003e"
    },
    {
      "commit": "54454bb02b1bb7d4c7bf5c6b13922ce34b0bdab4",
      "tree": "5e84ae1d73cfecd25fc55ee2f1152e708304a022",
      "parents": [
        "7c7379213f4ce13f6e920dd7b07d8675fa35003c"
      ],
      "author": {
        "name": "Graham Sanderson",
        "email": "graham.sanderson@raspberrypi.com",
        "time": "Thu Jun 12 05:51:56 2025 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 12 11:51:56 2025 +0100"
      },
      "message": "better hardening of enc_bootloader for fault injection (#240)\n\n* hardening of enc_bootloader\n\n* add address to not_mapped_exception\n\n* pass ALLOW_DEBUGGING thru from CMake\n\n* Update precompiled ELFs\n\n---------\n\nCo-authored-by: William Vinnicombe \u003cwilliam.vinnicombe@raspberrypi.com\u003e"
    },
    {
      "commit": "7c7379213f4ce13f6e920dd7b07d8675fa35003c",
      "tree": "3e812af88ba92137cc228c498472b846cc35eda4",
      "parents": [
        "6e9a5e407fcf73eb6c24ebeafd8282765fbab6fd"
      ],
      "author": {
        "name": "Julian Mitchell",
        "email": "jupeos@gmail.com",
        "time": "Fri Jun 06 09:07:54 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 06 17:07:54 2025 +0100"
      },
      "message": "Fix udev rules (#238)\n\nAdded missing comma after TAG+ argument."
    },
    {
      "commit": "6e9a5e407fcf73eb6c24ebeafd8282765fbab6fd",
      "tree": "1e5ea5e404a1f5a1b2347fc29a7302614d72efaf",
      "parents": [
        "14168508c51f683b1a61d839adf3fd39e3a99d5c"
      ],
      "author": {
        "name": "will-v-pi",
        "email": "108662275+will-v-pi@users.noreply.github.com",
        "time": "Tue Jun 03 15:49:59 2025 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 03 09:49:59 2025 -0500"
      },
      "message": "Ignore other blocks when signing with rollback version (#237)\n\n* Ignore first block when signing with rollback version\n\n* Ignore all blocks (except partition tables), not just first block\n\n* Rename ignore_others -\u003e set_others_ignored"
    },
    {
      "commit": "14168508c51f683b1a61d839adf3fd39e3a99d5c",
      "tree": "72430e2a603b39795f06648e9dc97484b74586c7",
      "parents": [
        "9c01ac6d41633ed053202fbb9d3bf14aa7dbbf86"
      ],
      "author": {
        "name": "William Vinnicombe",
        "email": "william.vinnicombe@raspberrypi.com",
        "time": "Mon Jun 02 11:57:52 2025 +0100"
      },
      "committer": {
        "name": "William Vinnicombe",
        "email": "william.vinnicombe@raspberrypi.com",
        "time": "Mon Jun 02 14:41:06 2025 +0100"
      },
      "message": "Fix some enc_bootloader compile warnings\n"
    },
    {
      "commit": "9c01ac6d41633ed053202fbb9d3bf14aa7dbbf86",
      "tree": "2eeeb92392b46e698ef88a1332b768df1c43e931",
      "parents": [
        "afe0f54ea5d27e4f203fdff046036d15d130d73f"
      ],
      "author": {
        "name": "William Vinnicombe",
        "email": "william.vinnicombe@raspberrypi.com",
        "time": "Mon Jun 02 10:56:22 2025 +0100"
      },
      "committer": {
        "name": "William Vinnicombe",
        "email": "william.vinnicombe@raspberrypi.com",
        "time": "Mon Jun 02 10:56:22 2025 +0100"
      },
      "message": "OTP default encryption key page typo\n\nOTP encryption key page defaults to 29, not 30\n"
    },
    {
      "commit": "afe0f54ea5d27e4f203fdff046036d15d130d73f",
      "tree": "0c0c6af477adba26c802a1cd84e20d17c5d685bf",
      "parents": [
        "0abbbc6fec910b7b820f55c6fc8fe51820448f0d"
      ],
      "author": {
        "name": "will-v-pi",
        "email": "108662275+will-v-pi@users.noreply.github.com",
        "time": "Fri May 30 15:34:25 2025 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 30 09:34:25 2025 -0500"
      },
      "message": "Add instructions to udev rules file, and fix order (#230)\n\nAdding the instructions is useful for linking to the file from elsewhere\n\nOrder fix supercedes #199"
    },
    {
      "commit": "0abbbc6fec910b7b820f55c6fc8fe51820448f0d",
      "tree": "686cd838655dd0e9913fb7d63fb508d2b4280265",
      "parents": [
        "293e2fd9a7ce11a03a305a8063490ebdd7da96c3"
      ],
      "author": {
        "name": "armandomontanez",
        "email": "amontanez@google.com",
        "time": "Fri May 30 06:46:45 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 30 08:46:45 2025 -0500"
      },
      "message": "Update rules_libusb to 0.1.0-rc2 (#233)\n\nThis includes some fixes to link issues that others have hit."
    },
    {
      "commit": "293e2fd9a7ce11a03a305a8063490ebdd7da96c3",
      "tree": "d63f90373f06ddfba801fa4118779ef3329a4888",
      "parents": [
        "0a452b6b07a6255c7b408417949ed8e3eb2f3415"
      ],
      "author": {
        "name": "will-v-pi",
        "email": "108662275+will-v-pi@users.noreply.github.com",
        "time": "Fri May 30 14:30:28 2025 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 30 08:30:28 2025 -0500"
      },
      "message": "Minor tidyups (#232)\n\n* Don\u0027t add hash_def when not required\n\nExit hash_andor_sign_block early if neither hash_value not signature is needed\n\n* Add validation that the partition name is \u003c 128 characters long, as the size is only 7 bits"
    },
    {
      "commit": "0a452b6b07a6255c7b408417949ed8e3eb2f3415",
      "tree": "67619848c261cd7704d1b3e139d5c81c2d940961",
      "parents": [
        "530dc9d19787c09ca6fec314812a95f51ca98074"
      ],
      "author": {
        "name": "Graham Sanderson",
        "email": "graham.sanderson@raspberrypi.com",
        "time": "Thu May 29 16:21:41 2025 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 29 16:21:41 2025 -0500"
      },
      "message": "clean up some inefficient (looking) code (#234)\n\n"
    },
    {
      "commit": "530dc9d19787c09ca6fec314812a95f51ca98074",
      "tree": "02e546578e8cb267bb36b2169b2e9b429acbbfa3",
      "parents": [
        "c56c005bb6490c341183c7620dd45676d26cb602"
      ],
      "author": {
        "name": "will-v-pi",
        "email": "108662275+will-v-pi@users.noreply.github.com",
        "time": "Thu May 29 14:10:01 2025 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 29 08:10:01 2025 -0500"
      },
      "message": "Add support for creating self-decrypting binaries, and use 4-way AES key shares instead of just the AES key (#207)\n\nNote: this is not the final commit for this functionality, so use with caution for now\n\n* Use 4-way key shares for AES private keys\n\nThe privateaes.bin key file is now 4x256bit numbers (A,B,C,D), and the AES key X is A^B^C^D\n\n* Remove check that ELF segments are between metadata blocks\n\nThis is not required, as you can still load data outside of the region between the metadata blocks which contain the binary - for example, loading code into scratch memory.\n\n* Add enc_bootloader binary\n\nYou can now use `picotool encrypt --embed ...` to create a self-decrypting binary, using enc_bootloader\n\n* Specify file types where useful for untyped files (json, pem, bin)\n\n* Implement FIB workaround by storing inverse of row n in row n+32 of each OTP page\n\n* Only delete existing load_maps when encrypting\n\nThese only cause issues when encrypting, as the old block needs to be included in the new load_map\n\nWhen signing, the old load_map can be used again without issue\n\n\n* Throw clearer error when using picotool \u003e2.1.1 with SDK \u003c\u003d2.1.1\n\nThis is required due to 2.1.0 and 2.1.1 SDK releases pointing at picotool develop branch rather than the respective picotool releases (raspberrypi/pico-sdk#2401)\n\n---------\n\nCo-authored-by: Graham Sanderson \u003cgraham.sanderson@raspberrypi.com\u003e"
    },
    {
      "commit": "c56c005bb6490c341183c7620dd45676d26cb602",
      "tree": "cc9325b5a586b2248c0931e47491d5e413f81e20",
      "parents": [
        "f010190c37061f9a207075c6918a5e6e9aee5653"
      ],
      "author": {
        "name": "will-v-pi",
        "email": "108662275+will-v-pi@users.noreply.github.com",
        "time": "Mon Apr 28 13:51:30 2025 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 28 13:51:30 2025 +0100"
      },
      "message": "Add script to update README with output from help commands (#220)\n\nThis will update all the `picotool help ...` sections in the README with the current output\n\n* Add workflow to check help text is up-to-date\n\n* Add a check that all commands have help text in the readme"
    },
    {
      "commit": "f010190c37061f9a207075c6918a5e6e9aee5653",
      "tree": "717a733868c8993503467b095b3bf47c79e3a92f",
      "parents": [
        "ac8aaeac7e7c2dfb55a277c5aa4ff6537612789d"
      ],
      "author": {
        "name": "will-v-pi",
        "email": "108662275+will-v-pi@users.noreply.github.com",
        "time": "Thu Apr 24 11:24:49 2025 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 24 11:24:49 2025 +0100"
      },
      "message": "Use Mbedtls files directly (#226)\n\n* Switch to pico-sdk style mbedtls library\n\n* Initialize PICO_MBEDTLS_PATH in same way as SDK"
    },
    {
      "commit": "ac8aaeac7e7c2dfb55a277c5aa4ff6537612789d",
      "tree": "37132b98f9a4cca4022ec4bca5f112753db61dad",
      "parents": [
        "c291aeb26787c965414ccda03b759a21e16020ac"
      ],
      "author": {
        "name": "Jan",
        "email": "sentrycraft123@gmail.com",
        "time": "Thu Apr 24 12:23:10 2025 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 24 11:23:10 2025 +0100"
      },
      "message": "add missing include (#229)\n\n"
    },
    {
      "commit": "c291aeb26787c965414ccda03b759a21e16020ac",
      "tree": "f886f96aa7d02e086319a628ec5fbd5e56f353b2",
      "parents": [
        "6039f6372a9acbcb70d0fadd6482cadbb0174384"
      ],
      "author": {
        "name": "will-v-pi",
        "email": "108662275+will-v-pi@users.noreply.github.com",
        "time": "Tue Apr 22 17:44:57 2025 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 22 17:44:57 2025 +0100"
      },
      "message": "Fix plugging alignment holes for encrypted binaries (#227)\n\nUse new `segment_from_section` function, as virtual addresses are not unique per segment in encrypted binaries\n\nFixes #224"
    },
    {
      "commit": "6039f6372a9acbcb70d0fadd6482cadbb0174384",
      "tree": "26846a364a4fc6b0a499ebb77121bf283e3a604c",
      "parents": [
        "e6376e140432279c93869d47a024cc3cca0e8c28"
      ],
      "author": {
        "name": "will-v-pi",
        "email": "108662275+will-v-pi@users.noreply.github.com",
        "time": "Tue Apr 22 17:33:03 2025 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 22 17:33:03 2025 +0100"
      },
      "message": "Move build \u0026 install instructions into separate file (#146)\n\n* Move build \u0026 install instructions into separate file, linked from the main README.md\n\n* Add note about pico-sdk-tools\n\n* General fixup of BUILDING.md and README.md"
    },
    {
      "commit": "e6376e140432279c93869d47a024cc3cca0e8c28",
      "tree": "9d845344743141a8d3e2a1706d653d39342ca6a1",
      "parents": [
        "8be60e9eeab96857c84d71f0565cad0e84654c77"
      ],
      "author": {
        "name": "will-v-pi",
        "email": "108662275+will-v-pi@users.noreply.github.com",
        "time": "Tue Apr 22 17:21:50 2025 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 22 17:21:50 2025 +0100"
      },
      "message": "Add tbyb info to output if not bought (#222)\n\n"
    },
    {
      "commit": "8be60e9eeab96857c84d71f0565cad0e84654c77",
      "tree": "6e8645443b3eee5323d55b722591a38c28fc75f5",
      "parents": [
        "450f8ed3db819dd4994f86f1c39fa9e1f1bfc168"
      ],
      "author": {
        "name": "William Vinnicombe",
        "email": "william.vinnicombe@raspberrypi.com",
        "time": "Tue Apr 15 12:14:29 2025 +0100"
      },
      "committer": {
        "name": "William Vinnicombe",
        "email": "william.vinnicombe@raspberrypi.com",
        "time": "Tue Apr 15 13:53:04 2025 +0100"
      },
      "message": "Recursively checkout SDK submodules\n\nFixes workflow with mbedtls 3.x\n"
    },
    {
      "commit": "450f8ed3db819dd4994f86f1c39fa9e1f1bfc168",
      "tree": "c075e8142bcfcb07cc02daa0791a97aa7ec77371",
      "parents": [
        "8f349d4840325b020129af5de566bf8bcafbf27c"
      ],
      "author": {
        "name": "William Vinnicombe",
        "email": "william.vinnicombe@raspberrypi.com",
        "time": "Fri Apr 11 14:04:36 2025 +0100"
      },
      "committer": {
        "name": "William Vinnicombe",
        "email": "william.vinnicombe@raspberrypi.com",
        "time": "Fri Apr 11 14:11:06 2025 +0100"
      },
      "message": "Fix partition ID truncation on Windows\n\nFixes #225\n"
    },
    {
      "commit": "8f349d4840325b020129af5de566bf8bcafbf27c",
      "tree": "af15f0c86bfb910b3f77c8417101a4b0e77adacc",
      "parents": [
        "294ea20a7011cff35977736d279ffd37ec8868b8"
      ],
      "author": {
        "name": "William Vinnicombe",
        "email": "william.vinnicombe@raspberrypi.com",
        "time": "Mon Apr 07 11:10:03 2025 +0100"
      },
      "committer": {
        "name": "William Vinnicombe",
        "email": "william.vinnicombe@raspberrypi.com",
        "time": "Mon Apr 07 11:10:03 2025 +0100"
      },
      "message": "Fix bug when plugging alignment holes\n\nNot all sections are within segments, so add a check for that,\notherwise 2 consecutive sections which aren\u0027t in segments will be treated as in the same segment,\nwhich will throw an error (see https://github.com/micropython/micropython/pull/17073)\n"
    },
    {
      "commit": "294ea20a7011cff35977736d279ffd37ec8868b8",
      "tree": "32f623fb8041ceacfea93a98c5cec2cff0d21936",
      "parents": [
        "d9691edee5b6375b49978fd87c9af3fa0a3c0701"
      ],
      "author": {
        "name": "will-v-pi",
        "email": "108662275+will-v-pi@users.noreply.github.com",
        "time": "Wed Apr 02 17:15:11 2025 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 02 17:15:11 2025 +0100"
      },
      "message": "Fixup to work with mbedtls 3.x (#219)\n\nAllow access to the private variables required, and some changed function signatures\n\nMaintain compatibility with mbedtls 2.x using #ifs"
    },
    {
      "commit": "d9691edee5b6375b49978fd87c9af3fa0a3c0701",
      "tree": "01741ee47fc173982a7aa84e9c815a5cf9eace7c",
      "parents": [
        "3ad3a38530308553dc9b42c1eaf125e90bec4b22"
      ],
      "author": {
        "name": "will-v-pi",
        "email": "108662275+will-v-pi@users.noreply.github.com",
        "time": "Wed Apr 02 13:25:35 2025 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 02 13:25:35 2025 +0100"
      },
      "message": "Remove holes in ELF files (#213)\n\n* Remove holes in elf files\n\nThese holes cause issues when signing/hashing/encrypting, as the data in the hole can be different depending on the load method used (00s or FFs)\n\nThis will only effect ELF files which are written out afterwards, so the `seal`, `encrypt`, and `partition create` commands\n\n* Revert \"Add support for encrypting elfs with section holes within segments (#150)\"\n\nThis is no longer required now picotool plugs the holes, and just adds extra\ncomplexity\n\nThis reverts commit b62ead341f499532302b8e9f957fa0480fb09a9e."
    },
    {
      "commit": "3ad3a38530308553dc9b42c1eaf125e90bec4b22",
      "tree": "0e04287a2289e0e1e77b62993066fce843496753",
      "parents": [
        "55b168608bf0cbea25bc8eb3989eb76d1a3cbb6f"
      ],
      "author": {
        "name": "William Vinnicombe",
        "email": "william.vinnicombe@raspberrypi.com",
        "time": "Wed Apr 02 10:34:20 2025 +0100"
      },
      "committer": {
        "name": "William Vinnicombe",
        "email": "william.vinnicombe@raspberrypi.com",
        "time": "Wed Apr 02 10:34:20 2025 +0100"
      },
      "message": "Fix bug when verifying after OTP load\n\nIt was incorrectly using sizeof a pointer, rather than the size of the underlying buffer.\nThis would trigger a picoboot error for invalid transfer length.\n"
    }
  ],
  "next": "55b168608bf0cbea25bc8eb3989eb76d1a3cbb6f"
}
