)]}'
{
  "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",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "f8e32585ac81e582a467295cfdbb67830eb6e6a9",
      "old_mode": 33188,
      "old_path": "BUILD.bazel",
      "new_id": "0397716fa38d342a49a4c8a6326895dff461464f",
      "new_mode": 33188,
      "new_path": "BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "def5ae5d89a8cbbba2d1fbcc52489cf41e2de6bc",
      "old_mode": 33188,
      "old_path": "CMakeLists.txt",
      "new_id": "619d3fffbb6789f18ea76d234502a9ac7a81a678",
      "new_mode": 33188,
      "new_path": "CMakeLists.txt"
    },
    {
      "type": "modify",
      "old_id": "60d20f46922a9d4be8ba04d3c62856c6bd5e6529",
      "old_mode": 33188,
      "old_path": "README.md",
      "new_id": "d2de42b2990b1fe84c2be032a3faf0178b9ed526",
      "new_mode": 33188,
      "new_path": "README.md"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "0ba18473a52190544adf6a6a9c94e36350e52ef0",
      "new_mode": 33261,
      "new_path": "bdev_test.sh"
    },
    {
      "type": "modify",
      "old_id": "6f6a47119a4ac1690a97eedeb3c68374594d4d59",
      "old_mode": 33188,
      "old_path": "lib/CMakeLists.txt",
      "new_id": "aab20b2b3caae344c2841e2e3b1e3451af05c612",
      "new_mode": 33188,
      "new_path": "lib/CMakeLists.txt"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "b878fa15b06ed32150c00d3d49f801efd0a04887",
      "new_mode": 33188,
      "new_path": "lib/littlefs/BUILD.bazel"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "08a3b6519d9318da93bcb83d9eedc39ecdad020c",
      "new_mode": 33188,
      "new_path": "lib/littlefs/CMakeLists.txt"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "e6c3a7bac1d8b3ed2ff3160a5bb49abebdd6fe7e",
      "new_mode": 33188,
      "new_path": "lib/littlefs/LICENSE.md"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "15f9af5e286a127e44de93f045e582174525a5de",
      "new_mode": 33188,
      "new_path": "lib/littlefs/README.md"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "624f43cc8ef9241370950e028e38958f80c85cbe",
      "new_mode": 33188,
      "new_path": "lib/littlefs/lfs.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "215309c583c1eb38098c6cf08b6d2fc02cc0b6f1",
      "new_mode": 33188,
      "new_path": "lib/littlefs/lfs.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "dac72abc3c101dc720727d3379723548d46dae1e",
      "new_mode": 33188,
      "new_path": "lib/littlefs/lfs_util.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "c1999fa96ddb445137bda5fa6955c2cbe3a61002",
      "new_mode": 33188,
      "new_path": "lib/littlefs/lfs_util.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "a2db313a124be36ef02ddbd6f9ca2e2ebfe2f9ca",
      "new_mode": 33188,
      "new_path": "lib/oofatfs/BUILD.bazel"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "ca3e5fdde016d0fb5e212d620d24a802a793ee17",
      "new_mode": 33188,
      "new_path": "lib/oofatfs/CMakeLists.txt"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "4368817fad81d839f4cc6d9dfdd084bcde6627af",
      "new_mode": 33188,
      "new_path": "lib/oofatfs/LICENSE"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "b401449381a4bdb5528e4d2dcfd6bf0a47f5d5d0",
      "new_mode": 33188,
      "new_path": "lib/oofatfs/README.md"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "c0e3e741acaeadc65d26edc36cf9c72ead154aa8",
      "new_mode": 33188,
      "new_path": "lib/oofatfs/src/00history.txt"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "53de9aa1f9cb642b086c136a39511b06e6b12894",
      "new_mode": 33188,
      "new_path": "lib/oofatfs/src/00readme.txt"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "d886bdd9cca50f99b7cac430c87c73d63fdb1690",
      "new_mode": 33188,
      "new_path": "lib/oofatfs/src/diskio.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "171b5997c29bbc1050e2fb128a77a65133925d39",
      "new_mode": 33188,
      "new_path": "lib/oofatfs/src/ff.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "e7cf1e67cb9b16258431ea271aa8aa20f891bf91",
      "new_mode": 33188,
      "new_path": "lib/oofatfs/src/ff.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "0c5f1409bfec61784fc415e74e94a00ba3055db0",
      "new_mode": 33188,
      "new_path": "lib/oofatfs/src/ffconf.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "8d38eddfec6e6daeb46d5b9b6143c978d3124656",
      "new_mode": 33188,
      "new_path": "lib/oofatfs/src/ffsystem.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "989d40efad135bc90443e7b52b669d3a534fc9b3",
      "new_mode": 33188,
      "new_path": "lib/oofatfs/src/ffunicode.c"
    },
    {
      "type": "modify",
      "old_id": "b11973a7c1563b9cdf8f1728481870627cc6cdd4",
      "old_mode": 33188,
      "old_path": "main.cpp",
      "new_id": "bbfc7455b718e101e74cae31455eb8373acb6457",
      "new_mode": 33188,
      "new_path": "main.cpp"
    }
  ]
}
