)]}'
{
  "log": [
    {
      "commit": "279572ea60f3a7a6e5237e066a6f4a35eee611e0",
      "tree": "f668daea876b8c3f1c67861aff76abaebbad4bf1",
      "parents": [
        "4ff7d048073c07bcc1f1dca74436245b2ba20dda"
      ],
      "author": {
        "name": "Andrew Lamb",
        "email": "andrew@nerdnetworks.org",
        "time": "Fri Sep 11 11:29:42 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Sep 11 11:29:42 2026 -0400"
      },
      "message": "Update CHANGELOG for latest main (#855)"
    },
    {
      "commit": "4ff7d048073c07bcc1f1dca74436245b2ba20dda",
      "tree": "b9a10b858fd7246b994f99ea2c34b8f0529e463a",
      "parents": [
        "25fa079c41fecb8011d5b8c3019f20e09c9b0c74"
      ],
      "author": {
        "name": "Andrew Lamb",
        "email": "andrew@nerdnetworks.org",
        "time": "Fri Sep 11 06:35:45 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Sep 11 06:35:45 2026 -0400"
      },
      "message": "Restore missing first line of ASF license header in src/client/s3.rs (#854)"
    },
    {
      "commit": "25fa079c41fecb8011d5b8c3019f20e09c9b0c74",
      "tree": "c45f0e759896067237612d460829062f2e57a0ce",
      "parents": [
        "c37db72b92b78608291c1b33feb79bb5bb6d2d1c"
      ],
      "author": {
        "name": "Andrew Lamb",
        "email": "andrew@nerdnetworks.org",
        "time": "Thu Sep 10 04:35:43 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 10 04:35:43 2026 -0400"
      },
      "message": "Update version to 0.14.2 and add CHANGELOG (#850)\n\n* Update version to 0.14.2 and add CHANGELOG\n\n* Update CHANGELOG for latest main"
    },
    {
      "commit": "c37db72b92b78608291c1b33feb79bb5bb6d2d1c",
      "tree": "530d92f12abaa84ab4d84697b53dad273c105f8c",
      "parents": [
        "135984fdf91f813c48c47b6288586d9b0e205164"
      ],
      "author": {
        "name": "Chris",
        "email": "criccomini@users.noreply.github.com",
        "time": "Wed Sep 09 11:43:46 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 09 14:43:46 2026 -0400"
      },
      "message": "feat: retry failed multipart part uploads (#849)\n\n* Retry multipart part uploads with configurable policies\n\n* Fix retry feature gate for HTTP-only builds\n\n* Remove Copy from RetryContext\n\n---------\n\nCo-authored-by: Andrew Lamb \u003candrew@nerdnetworks.org\u003e"
    },
    {
      "commit": "135984fdf91f813c48c47b6288586d9b0e205164",
      "tree": "1ba84e73c0eb7910b7e2681e8a0f24d7bcc8d4e0",
      "parents": [
        "b07471e2bc341278f86e30cf80a850d56cbe2c67"
      ],
      "author": {
        "name": "Andrew Lamb",
        "email": "andrew@nerdnetworks.org",
        "time": "Wed Sep 09 09:26:12 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 09 09:26:12 2026 -0400"
      },
      "message": "Add doc hints pointing large-object uploads at the multipart API (#839)"
    },
    {
      "commit": "b07471e2bc341278f86e30cf80a850d56cbe2c67",
      "tree": "20fe8766318e332a0f8798b83bc0165b1d8def21",
      "parents": [
        "978fb48b9ea6ebe3f8f4833f656e793cde79ab15"
      ],
      "author": {
        "name": "Andrew Lamb",
        "email": "andrew@nerdnetworks.org",
        "time": "Mon Aug 24 14:18:09 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 24 14:18:09 2026 -0400"
      },
      "message": "[object-store]: update release schedule (#834)"
    },
    {
      "commit": "978fb48b9ea6ebe3f8f4833f656e793cde79ab15",
      "tree": "8826676b95e421a573d53836d810ae60a4c34bee",
      "parents": [
        "e2a49349622aa7ad5db12b107a557d957ac01241"
      ],
      "author": {
        "name": "Andrew Lamb",
        "email": "andrew@nerdnetworks.org",
        "time": "Thu Aug 20 17:45:30 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Aug 20 17:45:30 2026 -0400"
      },
      "message": "Fix MSRV violation in `parse.rs` test, check `--all-targets` in MSRV CI (#837)\n\nstr::from_utf8 (as an associated function on the str primitive) was\nonly stabilized in Rust 1.87, but the crate\u0027s MSRV is 1.85. The MSRV\nCI job did not catch this because cargo-msrv\u0027s default check command\n(cargo check) does not compile test code.\n\nUse a custom cargo-msrv check command with --all-targets so tests,\nexamples, and benches are also verified against the MSRV.\n\nReported in https://github.com/apache/arrow-rs-object-store/pull/812#issuecomment-5061268463\n\nCo-authored-by: Claude Fable 5 \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "e2a49349622aa7ad5db12b107a557d957ac01241",
      "tree": "794c87f2c34f76036d810e0ae88fd4a1718fd4c9",
      "parents": [
        "e28807de7338abebf14ecf2ab959294cb3096d83"
      ],
      "author": {
        "name": "Andrew Lamb",
        "email": "andrew@nerdnetworks.org",
        "time": "Thu Aug 20 17:44:45 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Aug 20 17:44:45 2026 -0400"
      },
      "message": "Speed up MSRV CI check by installing cargo-msrv via taiki-e/install-action (#838)"
    },
    {
      "commit": "e28807de7338abebf14ecf2ab959294cb3096d83",
      "tree": "fdb45248520af37ab960bf9b0e14c9889eb53080",
      "parents": [
        "5c743637e97d2f3417b6fd54532bb1223c6547c1"
      ],
      "author": {
        "name": "Zac Farrell",
        "email": "zac@zacfarrell.com",
        "time": "Wed Aug 19 14:17:35 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Aug 19 17:17:35 2026 -0400"
      },
      "message": "feat: presigned URLs with extra query params and signed headers (SignedUrlOptions) (#771)\n\n* feat(aws): presign URLs with extra query params and signed headers\n\n* feat(gcp): presign URLs with extra query params and signed headers\n\n* fix(signer): correct presign query encoding and validate extras\n\n* refactor(signer): adopt SignedUrlOptions and fix canonicalization\n\n* test(aws): verify signed headers, checksum enforcement, query encoding against S3\n\n* test(aws): cover multipart assembly, tamper rejection, expiry, conditional create\n\n* fix(docs): correct broken Signer::signed_url_opts intra-doc link\n\n* test(aws): gate presign signature-enforcement tests behind real S3\n\n* test(aws): delete before asserting in signed_url_expires\n\n* test(aws): isolate presign tests in a dedicated bucket\n\n* Mark SignedUrlOptions as non exhaustive\n\n* docs(aws): add end-to-end presigned multipart example\n\n* test(aws): make presign test bucket configurable via env\n\n* test(aws): preflight signing bucket to fail fast on bad creds\n\n* ci(aws): run presign signature-enforcement tests on MinIO\n\n* test(aws): clarify preflight validates write access\n\n* docs: add plain-HTTP MinIO setup for presign tests\n\n* docs: document S3 permissions needed for presign tests\n\n* docs: clarify presign enforcement tests run in CI on MinIO\n\n* docs(aws): move presigned multipart example onto create_multipart\n\n* publically re-export structs used in API\n\n* Avoid panic when trying to sign non-utf8 values\n\n---------\n\nCo-authored-by: Andrew Lamb \u003candrew@nerdnetworks.org\u003e"
    },
    {
      "commit": "5c743637e97d2f3417b6fd54532bb1223c6547c1",
      "tree": "5cd122c50f3ded77b31fc9274af74c0ecca2c68c",
      "parents": [
        "dc58ef2e086723486fcfc8b6950b76fc3a5dc7b7"
      ],
      "author": {
        "name": "Andrew Lamb",
        "email": "andrew@nerdnetworks.org",
        "time": "Wed Aug 19 16:42:08 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Aug 19 16:42:08 2026 -0400"
      },
      "message": "Restore UnwindSafe/RefUnwindSafe on ClientOptions by bounding DnsResolver (#836)\n\nAdd UnwindSafe + RefUnwindSafe as supertraits of DnsResolver so that\nArc\u003cdyn DnsResolver\u003e implements the auto traits, restoring them on\nClientOptions and the store builders that embed it.\n\nFixes #835\n\nCo-authored-by: Claude Fable 5 \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "dc58ef2e086723486fcfc8b6950b76fc3a5dc7b7",
      "tree": "898be6eeaf8c351b9c827bab74c5120e6f171f8f",
      "parents": [
        "e981329c924bd6da243f90eac37ec3c044cd02b8"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Wed Aug 19 16:41:51 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Aug 19 16:41:51 2026 -0400"
      },
      "message": "build(deps): bump taiki-e/install-action from 2.85.5 to 2.86.1 (#842)\n\nBumps [taiki-e/install-action](https://github.com/taiki-e/install-action) from 2.85.5 to 2.86.1.\n- [Release notes](https://github.com/taiki-e/install-action/releases)\n- [Changelog](https://github.com/taiki-e/install-action/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/taiki-e/install-action/compare/v2.85.5...v2.86.1)\n\n---\nupdated-dependencies:\n- dependency-name: taiki-e/install-action\n  dependency-version: 2.86.1\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "e981329c924bd6da243f90eac37ec3c044cd02b8",
      "tree": "17360c9a2afaf190595d8502536fc9f1b6462a40",
      "parents": [
        "d5737ddec752bb7de38ea94482f1f8fbaa3b5aa9"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Tue Aug 18 14:45:03 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 18 14:45:03 2026 -0400"
      },
      "message": "build(deps): bump taiki-e/install-action from 2 to 2.85.5 (#823)\n\nBumps [taiki-e/install-action](https://github.com/taiki-e/install-action) from 2 to 2.85.5.\n- [Release notes](https://github.com/taiki-e/install-action/releases)\n- [Changelog](https://github.com/taiki-e/install-action/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/taiki-e/install-action/compare/v2...v2.85.5)\n\n---\nupdated-dependencies:\n- dependency-name: taiki-e/install-action\n  dependency-version: 2.85.5\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "d5737ddec752bb7de38ea94482f1f8fbaa3b5aa9",
      "tree": "45ce4a0a8792ada274587ddace9c38368afcf8fc",
      "parents": [
        "f5b61ab5f4e9b9ab2f3e62feaf3685f4d638b53a"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Aug 17 18:00:31 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 17 18:00:31 2026 -0400"
      },
      "message": "build(deps): update base64 requirement from 0.22 to 0.23 (#813)\n\nUpdates the requirements on [base64](https://github.com/marshallpierce/rust-base64) to permit the latest version.\n- [Changelog](https://github.com/marshallpierce/rust-base64/blob/master/RELEASE-NOTES.md)\n- [Commits](https://github.com/marshallpierce/rust-base64/compare/v0.22.0...v0.23.0)\n\n---\nupdated-dependencies:\n- dependency-name: base64\n  dependency-version: 0.23.0\n  dependency-type: direct:production\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "f5b61ab5f4e9b9ab2f3e62feaf3685f4d638b53a",
      "tree": "84f6afd0e87e5f08bae5ecc84f338d460c5c4371",
      "parents": [
        "f3fe9943f1139ea28411251bea98bc6b19e1bada"
      ],
      "author": {
        "name": "Nazar Vinnichuk",
        "email": "nazar@vinnich.uk",
        "time": "Tue Aug 18 00:19:41 2026 +0300"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 17 17:19:41 2026 -0400"
      },
      "message": "Support R2 URLs with jurisdictions (#815)"
    },
    {
      "commit": "f3fe9943f1139ea28411251bea98bc6b19e1bada",
      "tree": "da54cd1e45331f47c84a6cf02387038506ac6090",
      "parents": [
        "548bd28196886f012e175be98e096487d6df1368"
      ],
      "author": {
        "name": "June",
        "email": "61218022+itsjunetime@users.noreply.github.com",
        "time": "Mon Aug 17 17:08:58 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 17 17:08:58 2026 -0400"
      },
      "message": "Return AlreadyExists in azure backend when using PutMode::Create and precondition fails (#830)\n\n* Return AlreadyExists in azure backend when using PutMode::Create and precondition fails\n\n* chore: Add test coverage\n\n---------\n\nCo-authored-by: Andrew Lamb \u003candrew@nerdnetworks.org\u003e"
    },
    {
      "commit": "548bd28196886f012e175be98e096487d6df1368",
      "tree": "4aadb987d2121acafd5ae4a9209c6294ef0a4140",
      "parents": [
        "fb826cad24374d27a5a73061b3d8da1e4c1c7b26"
      ],
      "author": {
        "name": "Thomas Tanon",
        "email": "thomas@pellissier-tanon.fr",
        "time": "Mon Aug 17 22:39:04 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 17 16:39:04 2026 -0400"
      },
      "message": "Signer: reexport `url::Url` and `http::Method` types (#827)\n\nAllow downstream create to not have to explicitly import `url` and `http` crates to use the `Signer` trait"
    },
    {
      "commit": "fb826cad24374d27a5a73061b3d8da1e4c1c7b26",
      "tree": "f3f55a08374e7e54ca60b419de4b8c3cca19b77b",
      "parents": [
        "7cbbeaacd17ceba9a625d7119b98276ddb2f5cfc"
      ],
      "author": {
        "name": "Kyle Barron",
        "email": "kyle@developmentseed.org",
        "time": "Mon Aug 17 16:38:33 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 17 16:38:33 2026 -0400"
      },
      "message": "Implement `Clone` for `MicrosoftAzure` (#825)"
    },
    {
      "commit": "7cbbeaacd17ceba9a625d7119b98276ddb2f5cfc",
      "tree": "b20003a8bb8f8439972ef782413580ab99cfcf94",
      "parents": [
        "8c1cd84d4eeab5ae78ae2fc79d3fd39bca5cf844"
      ],
      "author": {
        "name": "Anson VanDoren",
        "email": "anson.vandoren@gmail.com",
        "time": "Mon Aug 17 13:38:06 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 17 16:38:06 2026 -0400"
      },
      "message": "Fix #818 - WriteMultipart::finish should abort after part upload failure (#819)"
    },
    {
      "commit": "8c1cd84d4eeab5ae78ae2fc79d3fd39bca5cf844",
      "tree": "a9ac84015d34f2b18a014f67cb65abf82191403a",
      "parents": [
        "c73823f9d5b69081325340bea44d95d54f8a919f"
      ],
      "author": {
        "name": "Lachy Deakin",
        "email": "ljdgit@gmail.com",
        "time": "Tue Aug 18 06:32:19 2026 +1000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 17 16:32:19 2026 -0400"
      },
      "message": "fix: restore 1.85 MSRV and fix MSRV CI (#812)\n\n* fix(CI): verify MSRV with all features\n\n* fix: avoid let chains in `token.rs`"
    },
    {
      "commit": "c73823f9d5b69081325340bea44d95d54f8a919f",
      "tree": "dbf9d01ae2729a1a5f5f03fc12992c61425341a1",
      "parents": [
        "9e48bf63aa1c41ad91f5f0c8f0a6bef75669a227"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Aug 17 16:31:27 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 17 16:31:27 2026 -0400"
      },
      "message": "build(deps): bump actions/setup-node from 6 to 7 (#804)\n\nBumps [actions/setup-node](https://github.com/actions/setup-node) from 6 to 7.\n- [Release notes](https://github.com/actions/setup-node/releases)\n- [Commits](https://github.com/actions/setup-node/compare/v6...v7)\n\n---\nupdated-dependencies:\n- dependency-name: actions/setup-node\n  dependency-version: \u00277\u0027\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "9e48bf63aa1c41ad91f5f0c8f0a6bef75669a227",
      "tree": "52b0570ada436a8a69da3281031789578c79c164",
      "parents": [
        "699c4fc675df8bc8d8fbd756c4cc426186513f97"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Aug 17 16:31:20 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 17 16:31:20 2026 -0400"
      },
      "message": "build(deps): bump actions/setup-python from 6 to 7 (#809)\n\nBumps [actions/setup-python](https://github.com/actions/setup-python) from 6 to 7.\n- [Release notes](https://github.com/actions/setup-python/releases)\n- [Commits](https://github.com/actions/setup-python/compare/v6...v7)\n\n---\nupdated-dependencies:\n- dependency-name: actions/setup-python\n  dependency-version: \u00277\u0027\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "699c4fc675df8bc8d8fbd756c4cc426186513f97",
      "tree": "b9a39df9e9f300503ae42d07a2d4e5329410d694",
      "parents": [
        "84d24eb8efcec9448566de09e94d2d4b74b21ebe"
      ],
      "author": {
        "name": "Koen Denecker",
        "email": "koen@polars.tech",
        "time": "Wed Aug 12 17:18:31 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Aug 12 11:18:31 2026 -0400"
      },
      "message": "feat: Support custom DNS resolver (#728)\n\n* feat: Support custom DNS resolver\n\n* add local `DnsResolver` trait\n\n* refactor for wasm32 feature and reqwest as optional"
    },
    {
      "commit": "84d24eb8efcec9448566de09e94d2d4b74b21ebe",
      "tree": "8495d6f860dac423b72cef5bae19cfe68230587c",
      "parents": [
        "7015e5ed09fb1aa7e076f1c5b799f7ba6d5ed33c"
      ],
      "author": {
        "name": "Andrew Lamb",
        "email": "andrew@nerdnetworks.org",
        "time": "Mon Jul 20 11:16:15 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 20 11:16:15 2026 -0400"
      },
      "message": "Add doc example for multipart upload to `GoogleCloudStorage::create_multipart` (#803)\n\n* Add doc example for multipart upload to GoogleCloudStorage::create_multipart\n\nAdd a runnable (`no_run`) example on the `MultipartStore` impl for\n`GoogleCloudStorage` showing the full low-level flow: `create_multipart`,\n`put_part` for each part, and `complete_multipart` to finalize.\n\nAlso link to the example from `MultipartStore::create_multipart` so it\nis discoverable from the trait definition.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) \u003cnoreply@anthropic.com\u003e\n\n* Update src/gcp/mod.rs\n\nCo-authored-by: Kevin Liu \u003ckevinjqliu@users.noreply.github.com\u003e\n\n---------\n\nCo-authored-by: Claude Opus 4.8 (1M context) \u003cnoreply@anthropic.com\u003e\nCo-authored-by: Kevin Liu \u003ckevinjqliu@users.noreply.github.com\u003e"
    },
    {
      "commit": "7015e5ed09fb1aa7e076f1c5b799f7ba6d5ed33c",
      "tree": "c5df06d98f1897d5c10b0d64fbe7258ced442a20",
      "parents": [
        "226307ea52b471edfffbbfff49f98cb024ea5ede"
      ],
      "author": {
        "name": "Andrew Lamb",
        "email": "andrew@nerdnetworks.org",
        "time": "Mon Jul 20 10:30:36 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 20 10:30:36 2026 -0400"
      },
      "message": "Add doc example for multipart upload to AmazonS3::create_multipart (#801)\n\n* Add doc example for multipart upload to AmazonS3::create_multipart\n\nAdd a runnable (`no_run`) example on the `MultipartStore` impl for\n`AmazonS3` showing the full low-level flow: `create_multipart`,\n`put_part` for each part, and `complete_multipart` to finalize.\n\nAlso link to the example from `MultipartStore::create_multipart` so it\nis discoverable from the trait definition.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) \u003cnoreply@anthropic.com\u003e\n\n* Fix double space in create_multipart doc link references\n\nCo-Authored-By: Claude Opus 4.8 (1M context) \u003cnoreply@anthropic.com\u003e\n\n---------\n\nCo-authored-by: Claude Opus 4.8 (1M context) \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "226307ea52b471edfffbbfff49f98cb024ea5ede",
      "tree": "6ac67a3cee6b3a9d8efbf185833b56a65dbc9223",
      "parents": [
        "c7316d29face118e7409eead0cda098f38589428"
      ],
      "author": {
        "name": "Andrew Lamb",
        "email": "andrew@nerdnetworks.org",
        "time": "Mon Jul 20 10:28:46 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 20 10:28:46 2026 -0400"
      },
      "message": "Add doc example for multipart upload to MicrosoftAzure::create_multipart (#802)\n\nAdd a runnable (`no_run`) example on the `MultipartStore` impl for\n`MicrosoftAzure` showing the full low-level flow: `create_multipart`,\n`put_part` for each part, and `complete_multipart` to finalize.\n\nAlso link to the example from `MultipartStore::create_multipart` so it\nis discoverable from the trait definition.\n\nCo-authored-by: Claude Opus 4.8 (1M context) \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "c7316d29face118e7409eead0cda098f38589428",
      "tree": "153bbbd1c48c6373c5257df1aa90b114dedc736f",
      "parents": [
        "c66dd123a7ff7704e45ce75237653bb82f027609"
      ],
      "author": {
        "name": "Andrew Lamb",
        "email": "andrew@nerdnetworks.org",
        "time": "Fri Jul 10 10:03:16 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 10 10:03:16 2026 -0400"
      },
      "message": "Update version to 0.14.1 and add CHANGELOG (#794)\n\n* Update version to 0.14.1 and add CHANGELOG\n\n* update\n\n* Updates\n\n* Restore 0.14.0 changelog"
    },
    {
      "commit": "c66dd123a7ff7704e45ce75237653bb82f027609",
      "tree": "956037ec40100fcfec65e6db5f3036c942ee6055",
      "parents": [
        "7a7deeaee23ea35d6c3bcf3138c001836a6f44de"
      ],
      "author": {
        "name": "Emil Ernerfeldt",
        "email": "emil.ernerfeldt@gmail.com",
        "time": "Fri Jul 10 06:51:52 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 10 09:51:52 2026 -0400"
      },
      "message": "Cache Azure user delegation key for SAS signing (#781)\n\n* fixup: typo unparseable -\u003e unparsable\n\n* Redact secret parts of `UserDelegationKey` from `Debug`\n\n* test(azure): cover delegation key cache behavior\n\n* Add evidence for 7 day claim, rename functions\n\n---------\n\nCo-authored-by: Andrew Lamb \u003candrew@nerdnetworks.org\u003e"
    },
    {
      "commit": "7a7deeaee23ea35d6c3bcf3138c001836a6f44de",
      "tree": "60f96cf840b4493998caf76a7f05a32583215070",
      "parents": [
        "19be0b11ff83831fcf968aee448f6f216425b0ad"
      ],
      "author": {
        "name": "Nick",
        "email": "24689722+ntjohnson1@users.noreply.github.com",
        "time": "Fri Jul 10 09:03:58 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 10 09:03:58 2026 -0400"
      },
      "message": "Do not explicitly add `Host` header when making requests with  S3Builder (#790)\n\n* fix: don\u0027t pin Host header when signing S3 requests\n\nThe SigV4 signer inserted an explicit `Host` header on the outgoing\nrequest. reqwest carries that header across redirects, so when an\nS3-compatible gateway answers GET with a cross-host 302 — e.g. the\nHugging Face gateway at `s3.hf.co` redirecting to a Xet CDN on\n`cas-bridge.xethub.hf.co` — the stale `Host: s3.hf.co` header poisoned\nthe redirected request and the download failed with a connection error.\n`list`/`head` (no redirect) worked, but every `get` failed.\n\nHost must still be part of the SigV4 signature, so it is now added to a\nthrowaway copy of the headers used only to compute the signature; the\nactual Host header is left to the transport (hyper), which derives it\nfrom the request URL and regenerates it on redirect. The produced\nsignature is unchanged (existing signing tests still pass), so AWS S3 and\nother providers are unaffected.\n\nAddresses #706 (Hugging Face Storage Buckets).\n\nCo-Authored-By: Claude Opus 4.8 (1M context) \u003cnoreply@anthropic.com\u003e\n\n* test: add throwaway HF S3 gateway verification harness\n\nAdds `verification/hf-smoke`, the standalone harness used to verify the Host-header\nfix end-to-end against a real Hugging Face Storage Bucket (issue #706):\n- exercises get / ranged get / head / list / list_with_delimiter / copy / multipart /\n  conditional create / bulk delete, plus presigned-URL download (Signer trait);\n- has a read-only mode (get/head/list only) for Read-scoped tokens;\n- `gather.py` (a uv PEP-723 script) collects + boto3-validates credentials;\n- `repro.rs` isolates the reqwest cross-host-redirect behaviour;\n- `live-results.sample.md` is an actual passing run against `s3.hf.co`.\n\nThis is committed only for reviewer inspection and is reverted by the next commit;\nit is not part of the object_store crate.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) \u003cnoreply@anthropic.com\u003e\n\n* Revert \"test: add throwaway HF S3 gateway verification harness\"\n\nThis reverts commit d5fa4550a4877c329b3ef94bab791f59a6c69e81.\n\n* Update comment on why headers are handled in this specific way\n\nCo-authored-by: Andrew Lamb \u003candrew@nerdnetworks.org\u003e\n\n* Clarify HOST mutation\n\n* Cargo fmt\n\n---------\n\nCo-authored-by: Claude Opus 4.8 (1M context) \u003cnoreply@anthropic.com\u003e\nCo-authored-by: Andrew Lamb \u003candrew@nerdnetworks.org\u003e"
    },
    {
      "commit": "19be0b11ff83831fcf968aee448f6f216425b0ad",
      "tree": "d6a78d1cefae8dea6d4c23d7c6ced31dd1e276ef",
      "parents": [
        "e3b8561f1d0991850830755bb8f9a68b0e68c516"
      ],
      "author": {
        "name": "Andrew Lamb",
        "email": "andrew@nerdnetworks.org",
        "time": "Fri Jul 10 08:55:06 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 10 08:55:06 2026 -0400"
      },
      "message": "Update release process to use RC tags (#796)"
    },
    {
      "commit": "e3b8561f1d0991850830755bb8f9a68b0e68c516",
      "tree": "3875f2a37471d6de8de701830643e97305ddb5a4",
      "parents": [
        "e64e8e349e111b1a39e60a27ac83bb59f4f1b45b"
      ],
      "author": {
        "name": "Andrew Lamb",
        "email": "andrew@nerdnetworks.org",
        "time": "Fri Jul 10 08:54:20 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 10 08:54:20 2026 -0400"
      },
      "message": "Add automatic GitHub release workflow (#797)"
    },
    {
      "commit": "e64e8e349e111b1a39e60a27ac83bb59f4f1b45b",
      "tree": "5e44e5bb4807e59dae6bc869f40ac302d5d2e560",
      "parents": [
        "18102f35d2c81dfbc9aefbb5797c33b39f2641d5"
      ],
      "author": {
        "name": "Andrew Lamb",
        "email": "andrew@nerdnetworks.org",
        "time": "Fri Jul 10 08:53:08 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 10 08:53:08 2026 -0400"
      },
      "message": "Pin Rust toolchain to 1.97.0 and fix clippy useless_borrows_in_formatting (#799)\n\nAdds a rust-toolchain.toml (mirroring apache/arrow-rs) pinning the\ntoolchain to 1.97.0 so CI uses a stable, reproducible Rust version and\nis not surprised by new lints in future releases.\n\nRust 1.97.0\u0027s clippy added the useless_borrows_in_formatting lint, which\nflags redundant references in format! arguments. Fixes the resulting\nfailures in the azure module.\n\nCloses #798\n\nCo-authored-by: Claude Opus 4.8 (1M context) \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "18102f35d2c81dfbc9aefbb5797c33b39f2641d5",
      "tree": "2132adb26dd417c432130e8ef5b16bc892df3fdc",
      "parents": [
        "7e854ef3c728fd7dca4a705bf26141c9a40e3a55"
      ],
      "author": {
        "name": "Douman",
        "email": "douman@gmx.se",
        "time": "Thu Jul 09 09:08:24 2026 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 08 20:08:24 2026 -0400"
      },
      "message": "impl HttpError::new_boxed to provide user with ability to ctor from already boxed error (#789)"
    },
    {
      "commit": "7e854ef3c728fd7dca4a705bf26141c9a40e3a55",
      "tree": "8c5e792968e5090d89ad8bc1905af7968a62a95a",
      "parents": [
        "09adc41b05faada6b233746d866e0ab63a56f208"
      ],
      "author": {
        "name": "Andrew Duffy",
        "email": "a10y@users.noreply.github.com",
        "time": "Wed Jul 08 21:55:24 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 08 16:55:24 2026 -0400"
      },
      "message": "fix(aws): recognize S3 dual-stack endpoints in URL parsing (#780)\n\n`AmazonS3Builder::parse_url` matched S3 hostnames against a fixed set of\npatterns via `splitn(4, \u0027.\u0027)`. Dual-stack endpoints insert a `dualstack`\nlabel after `s3` (e.g. `s3.dualstack.\u003cregion\u003e.amazonaws.com` for path-style\nand `\u003cbucket\u003e.s3.dualstack.\u003cregion\u003e.amazonaws.com` for virtual-hosted),\nwhich matched none of the patterns and fell through to `UrlNotRecognised`.\n\nBecause `ObjectStoreScheme::parse` already classifies these URLs as S3,\n`DefaultObjectStoreRegistry::resolve` would call into the S3 builder and\nthen fail with `ObjectStore not found`.\n\nAdd handling for both dual-stack forms, setting the endpoint explicitly so\nthe `dualstack` label is preserved (IPv6 addressing) rather than being lost\nwhen the endpoint is reconstructed from the region. Includes a registry\nregression test plus builder and scheme-parse coverage.\n\n\nClaude-Session: https://claude.ai/code/session_014n2xnhDiTk4T8RESdRDgDS\n\nSigned-off-by: Andrew Duffy \u003candrew@a10y.dev\u003e\nCo-authored-by: Claude \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "09adc41b05faada6b233746d866e0ab63a56f208",
      "tree": "81187e7ffde492952eec8eb9a7db42d321f13af0",
      "parents": [
        "c2048e03380ca4656203ab0f0421873382ecf161"
      ],
      "author": {
        "name": "Krisztián Szűcs",
        "email": "szucs.krisztian@gmail.com",
        "time": "Wed Jul 08 21:49:16 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 08 15:49:16 2026 -0400"
      },
      "message": "Reduce lock hold time in DefaultObjectStoreRegistry::deregister (#792)\n\nCompute the URL key and path segments before acquiring the write\nlock, so the lock is only held for the actual map mutation."
    },
    {
      "commit": "c2048e03380ca4656203ab0f0421873382ecf161",
      "tree": "10282e289a53ab3ee042c6fbde6998280cc2acc7",
      "parents": [
        "fd44ebb9c1158660795ec22d7b11acf31c3fe113"
      ],
      "author": {
        "name": "Krisztián Szűcs",
        "email": "szucs.krisztian@gmail.com",
        "time": "Wed Jul 08 20:23:53 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 08 14:23:53 2026 -0400"
      },
      "message": "feat: add deregister to ObjectStoreRegistry (#784)\n\nAdd `ObjectStoreRegistry::deregister`, the inverse of `register`: it removes\nthe store registered at the exact scheme/authority/path of a URL and returns\nit, pruning emptied tree branches. A default implementation returns `None`, so\nthe addition is non-breaking for existing implementors."
    },
    {
      "commit": "fd44ebb9c1158660795ec22d7b11acf31c3fe113",
      "tree": "754e47160d8a3b33e8f4c8241bfe599ba705661b",
      "parents": [
        "f04df7ac094cebd9d5217cae828f413f6af0686f"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Thu Jul 02 21:59:15 2026 +1000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 02 21:59:15 2026 +1000"
      },
      "message": "build(deps): update quick-xml requirement from 0.40.1 to 0.41.0 (#785)\n\nUpdates the requirements on [quick-xml](https://github.com/tafia/quick-xml) to permit the latest version.\n- [Release notes](https://github.com/tafia/quick-xml/releases)\n- [Changelog](https://github.com/tafia/quick-xml/blob/master/Changelog.md)\n- [Commits](https://github.com/tafia/quick-xml/compare/v0.40.1...v0.41.0)\n\n---\nupdated-dependencies:\n- dependency-name: quick-xml\n  dependency-version: 0.41.0\n  dependency-type: direct:production\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "f04df7ac094cebd9d5217cae828f413f6af0686f",
      "tree": "a4fb27bbbf694ed1807278889cbf586a96e22789",
      "parents": [
        "93f6f88f4d2d58e89c93f917db05ebf3b24825b7"
      ],
      "author": {
        "name": "Daniël Heres",
        "email": "danielheres@gmail.com",
        "time": "Tue Jun 30 10:25:26 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 30 10:25:26 2026 +0200"
      },
      "message": "Coalesce contiguous ranges in LocalFileSystem::get_ranges (#777)\n\nMerge only contiguous/overlapping ranges (gap 0) into a single read, so we\nnever read unrequested bytes but still collapse many adjacent ranges into\nfar fewer syscalls. A fast path skips the coalescing bookkeeping entirely\nwhen nothing merges, avoiding overhead for disjoint ranges.\n\nCo-authored-by: Claude Opus 4.8 (1M context) \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "93f6f88f4d2d58e89c93f917db05ebf3b24825b7",
      "tree": "593905ebe057c8471c6e38108c5d3cc530d543a6",
      "parents": [
        "74f7a96dc351670c7b8694c2b474c8b6cd4d6d0c"
      ],
      "author": {
        "name": "Kevin Liu",
        "email": "kevinjqliu@users.noreply.github.com",
        "time": "Mon Jun 22 11:15:56 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 22 11:15:56 2026 -0400"
      },
      "message": "CI: stop swallowing emulator setup failures (#776)"
    },
    {
      "commit": "74f7a96dc351670c7b8694c2b474c8b6cd4d6d0c",
      "tree": "0b8602b2d8ef151625f1987a7a8caf1eaa1ac4d6",
      "parents": [
        "d9eaded6c8440d4f87a680fdc47c6bcc7cbf23c6"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Jun 22 09:39:58 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 22 09:39:58 2026 -0400"
      },
      "message": "build(deps): bump actions/checkout from 6 to 7 (#768)\n\nBumps [actions/checkout](https://github.com/actions/checkout) from 6 to 7.\n- [Release notes](https://github.com/actions/checkout/releases)\n- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/actions/checkout/compare/v6...v7)\n\n---\nupdated-dependencies:\n- dependency-name: actions/checkout\n  dependency-version: \u00277\u0027\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "d9eaded6c8440d4f87a680fdc47c6bcc7cbf23c6",
      "tree": "c7a485e4c4e206cfd00786e66a81699e10261168",
      "parents": [
        "de0029aa91f7727015fab37e623fdbe11672914b"
      ],
      "author": {
        "name": "Sylvain Monné",
        "email": "sylvain@monne.contact",
        "time": "Mon Jun 22 15:39:23 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 22 09:39:23 2026 -0400"
      },
      "message": "fix: quote ETags per RFC 9110 in InMemory and LocalFileSystem (#770)\n\nCloud-backed stores (AWS, Azure, GCP) return ETags as quoted-strings\n(e.g. `\"abc123\"`) and expect `If-Match`/`If-None-Match` values in that\nsame form, as required by RFC 9110 §8.8.3.\n\n`InMemory` and `LocalFileSystem`, by contrast, were producing bare\ntokens, making them inconsistent with the cloud backends and harder to\nuse as drop-in replacements."
    },
    {
      "commit": "de0029aa91f7727015fab37e623fdbe11672914b",
      "tree": "f427c7aa0acc9b4ba7f6ffeb1e1538b90aa7ffac",
      "parents": [
        "6c5b299d4274219ecd406cc4828b94efe4a14f8d"
      ],
      "author": {
        "name": "Kevin Liu",
        "email": "kevinjqliu@users.noreply.github.com",
        "time": "Sat Jun 20 06:47:27 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jun 20 06:47:27 2026 -0400"
      },
      "message": "Update copyright year in NOTICE.txt (#772)"
    },
    {
      "commit": "6c5b299d4274219ecd406cc4828b94efe4a14f8d",
      "tree": "10963e36aea23a92763589ecd18f2a424778dba0",
      "parents": [
        "c9db3e22d2eed690b7a9c14a988ec85d6b9304ad"
      ],
      "author": {
        "name": "Andrew Lamb",
        "email": "andrew@nerdnetworks.org",
        "time": "Thu Jun 18 13:48:52 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 18 13:48:52 2026 -0400"
      },
      "message": "Update version to 0.14.0 and add CHANGELOG (#765)\n\n* Update version to 0.14.0\n\n* Update changelog generator\n\n* Update changelog\n\n* update notes\n\n* upate\n\n* fix"
    },
    {
      "commit": "c9db3e22d2eed690b7a9c14a988ec85d6b9304ad",
      "tree": "bff2e27928451c1c16008429e34f02d64c0d630a",
      "parents": [
        "596e1f695bd7d351a0a5d89fff14d1d2b87b853a"
      ],
      "author": {
        "name": "Andrew Lamb",
        "email": "andrew@nerdnetworks.org",
        "time": "Thu Jun 18 07:17:23 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 18 07:17:23 2026 -0400"
      },
      "message": "Clarify aws-lc-rs feature docs and fix CI comment URL (#764)\n\n* Clarify aws-lc-rs feature docs and fix CI comment URL\n\nFollow-on documentation polish from the review of #707.\n\n- Document that the `aws-lc-rs` feature requires the user to also select an\n  aws-lc-rs backend when the built-in `reqwest` transport is not enabled.\n- Fix the malformed github.com URL in the CI testing-matrix comment.\n\nComment/documentation-only; no code or behavior changes.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) \u003cnoreply@anthropic.com\u003e\n\n* Update src/lib.rs\n\nCo-authored-by: Kevin Liu \u003ckevinjqliu@users.noreply.github.com\u003e\n\n* fmt\n\n---------\n\nCo-authored-by: Claude Opus 4.8 (1M context) \u003cnoreply@anthropic.com\u003e\nCo-authored-by: Kevin Liu \u003ckevinjqliu@users.noreply.github.com\u003e"
    },
    {
      "commit": "596e1f695bd7d351a0a5d89fff14d1d2b87b853a",
      "tree": "7afb6ed977ccf28cf83a23821f20355de3c9c531",
      "parents": [
        "c219109b5e9cb368c5da35adcc45e93d804a3cae"
      ],
      "author": {
        "name": "Kevin Liu",
        "email": "kevinjqliu@users.noreply.github.com",
        "time": "Thu Jun 18 06:36:14 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 18 06:36:14 2026 -0400"
      },
      "message": "fix(local): fsync create-mode rename source delete (#758)\n\n* fix(local): fsync create-mode rename delete\n\n* better"
    },
    {
      "commit": "c219109b5e9cb368c5da35adcc45e93d804a3cae",
      "tree": "cec295cea3c6acfb54cdf86358fd6b3277e722a2",
      "parents": [
        "590cbc9a1a862b87310495a26b2669c575e8bf68"
      ],
      "author": {
        "name": "Jack Ye",
        "email": "yezhaoqin@gmail.com",
        "time": "Wed Jun 17 14:27:31 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 17 17:27:31 2026 -0400"
      },
      "message": "feat: add AzureConfigKey::CredentialType to select Azure credential method (#710)\n\nWhen multiple Azure credential configurations are present in\nenvironment variables (e.g. both workload identity and client secret),\nthe builder\u0027s fixed resolution order may pick an undesired credential.\nThis adds a `credential_type` config key that lets users explicitly\nselect which credential method to use, bypassing the priority chain.\n\nSupported values: auto, bearer_token, access_key, client_secret,\nworkload_identity, sas_token, azure_cli, managed_identity.\n\nCo-authored-by: Claude Opus 4.6 (1M context) \u003cnoreply@anthropic.com\u003e\nCo-authored-by: Andrew Lamb \u003candrew@nerdnetworks.org\u003e"
    },
    {
      "commit": "590cbc9a1a862b87310495a26b2669c575e8bf68",
      "tree": "c8164aa2ae2fb11ff15e5ba37650d4b0aa1af38e",
      "parents": [
        "1a612825dc6f8ccfe1d8bd871df6acae2c68527e"
      ],
      "author": {
        "name": "Andrew Lamb",
        "email": "andrew@nerdnetworks.org",
        "time": "Wed Jun 17 16:27:58 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 17 16:27:58 2026 -0400"
      },
      "message": "Update release schedule on README.md (#763)\n\n* Update release schedule on README.md\n\nCo-Authored-By: Claude Opus 4.8 (1M context) \u003cnoreply@anthropic.com\u003e\n\n* Update 0.14.1 target date to August 2026 to match ticket\n\nCo-Authored-By: Claude Opus 4.8 (1M context) \u003cnoreply@anthropic.com\u003e\n\n---------\n\nCo-authored-by: Claude Opus 4.8 (1M context) \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "1a612825dc6f8ccfe1d8bd871df6acae2c68527e",
      "tree": "24b9b7152c498422cb5227fb21faa6d3fb5ad73f",
      "parents": [
        "996e084600a4adc7e14cf34d332d3cb0972547b4"
      ],
      "author": {
        "name": "Kevin Zhou",
        "email": "1274230+BearMinimum98@users.noreply.github.com",
        "time": "Wed Jun 17 12:54:52 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 17 15:54:52 2026 -0400"
      },
      "message": "Support PutMultipartOptions for MultipartStore::create_multipart for AWS/GCP. (#754)\n\n* Add create_multipart_opts\n\n* Add is_empty for TagSet\n\n* fix test\n\n---------\n\nCo-authored-by: Kevin Zhou \u003ckevinzhou@roblox.com\u003e"
    },
    {
      "commit": "996e084600a4adc7e14cf34d332d3cb0972547b4",
      "tree": "12709bfad844a84c145cdfbeb36d7339af838e92",
      "parents": [
        "d1c0e43e8ba817e4d139a2713b5b888df38943e6"
      ],
      "author": {
        "name": "Geoffry Song",
        "email": "goffrie@gmail.com",
        "time": "Wed Jun 17 12:42:15 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 17 15:42:15 2026 -0400"
      },
      "message": "Pluggable Crypto / Update reqwest 0.13 (#707)\n\n* Pluggable Crypto\n\n* Add CI\n\n* Upgrade reqwest to 0.13\n\n* Certificates\n\n* Switch to aws-lc-rs\n\n* Fix CI\n\n* Fix doc\n\n* Remove reqwest/rustls-no-provider feature dependency\n\n* Compile with reqwest/rustls feature in CI when not selecting a crypto backend\n\n* Hack around WASIp1 CI by downgrading reqwest\n\n* Update docs\n\n* Improve\n\n* Document how to use flags\n\n* fixes\n\n* Updates\n\n* typo\n\n* docs\n\n* Clarify base feature crypto and HTTP requirements\n\n* revert non fips\n\n* Improve comments, and fix clippy\n\n* Use pluggable crypto API for Azure CPK key digest instead of ring\n\nThe merged CPK support (#742) computed the encryption key SHA-256 via\nring::digest directly, which fails to compile on this branch since\nazure-base no longer depends on ring. Route it through the CryptoProvider\nabstraction (DigestAlgorithm::Sha256) instead.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) \u003cnoreply@anthropic.com\u003e\n\n---------\n\nCo-authored-by: Raphael Taylor-Davies \u003cr.taylordavies@googlemail.com\u003e\nCo-authored-by: Adam Gutglick \u003cadam@spiraldb.com\u003e\nCo-authored-by: Andrew Lamb \u003candrew@nerdnetworks.org\u003e\nCo-authored-by: Kevin Liu \u003ckevin.jq.liu@gmail.com\u003e\nCo-authored-by: Claude Opus 4.8 (1M context) \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "d1c0e43e8ba817e4d139a2713b5b888df38943e6",
      "tree": "2ac32ca5e765dfa79c5179272d6ba542af018ba7",
      "parents": [
        "bdc9f632a645273d6412512a2213e9cbe6b926e4"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Wed Jun 17 15:39:43 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 17 15:39:43 2026 -0400"
      },
      "message": "build(deps): update itertools requirement from 0.14.0 to 0.15.0 (#755)\n\nUpdates the requirements on [itertools](https://github.com/rust-itertools/itertools) to permit the latest version.\n- [Changelog](https://github.com/rust-itertools/itertools/blob/master/CHANGELOG.md)\n- [Commits](https://github.com/rust-itertools/itertools/compare/v0.14.0...v0.15.0)\n\n---\nupdated-dependencies:\n- dependency-name: itertools\n  dependency-version: 0.15.0\n  dependency-type: direct:production\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "bdc9f632a645273d6412512a2213e9cbe6b926e4",
      "tree": "51114bb2c950eefe48d81cdd20ae805e93175eb2",
      "parents": [
        "5dc1c5a1c327553bcaca58f17cbe0db6cd908410"
      ],
      "author": {
        "name": "Kevin Liu",
        "email": "kevinjqliu@users.noreply.github.com",
        "time": "Wed Jun 17 15:29:39 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 17 15:29:39 2026 -0400"
      },
      "message": "Fix flaky local close file test (#757)"
    },
    {
      "commit": "5dc1c5a1c327553bcaca58f17cbe0db6cd908410",
      "tree": "ee1f21a8906fd951b619bf183f9d0e6852d6ce4c",
      "parents": [
        "dd0afcbc75d22a76f871101125bcc8782f6ef85f"
      ],
      "author": {
        "name": "Braedon Wooding",
        "email": "braedon.wooding@displayr.com",
        "time": "Thu Jun 18 03:13:33 2026 +1000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 17 13:13:33 2026 -0400"
      },
      "message": "Supporting CPK (Customer Provided Keys) in Azure Blob Storage requests (#742)\n\n* Supporting CPK (Customer Provided Keys) in Azure Blob Storage requests\n\n* Fix Azure CPK copy source authorization\n\n* Apply #[cfg(feature \u003d reqwest)] to tests\n\n---------\n\nCo-authored-by: Kevin Liu \u003ckevin.jq.liu@gmail.com\u003e"
    },
    {
      "commit": "dd0afcbc75d22a76f871101125bcc8782f6ef85f",
      "tree": "c775384e989aff6334c8a7cddf7acf97086a588e",
      "parents": [
        "49a71257721b103b50ca02efa838ce0fc7d65f75"
      ],
      "author": {
        "name": "Pierre Barre",
        "email": "pierre@barre.sh",
        "time": "Wed Jun 17 13:48:52 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 17 07:48:52 2026 -0400"
      },
      "message": "feat(local): add fsync to LocalFileSystem for durability (#643)\n\n* feat(local): add opt-in fsync to LocalFileSystem for durability\n\n* Fix docs\n\n---------\n\nCo-authored-by: Andrew Lamb \u003candrew@nerdnetworks.org\u003e"
    },
    {
      "commit": "49a71257721b103b50ca02efa838ce0fc7d65f75",
      "tree": "28e243dc9fbd8c3db7018c5044e9dc5d8183d5e3",
      "parents": [
        "1d5ad198527725f10093b311f8884e04e64c8cd6"
      ],
      "author": {
        "name": "brankogrb-db",
        "email": "branko.grbic@databricks.com",
        "time": "Mon Jun 15 20:15:08 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 15 14:15:08 2026 -0400"
      },
      "message": "Use path-style URL in resolve_bucket_region for dotted bucket names (#752)\n\nS3\u0027s wildcard TLS cert (*.s3.amazonaws.com) only covers one DNS\nlabel. Use path-style for bucket names containing dots.\n\nCloses #747"
    },
    {
      "commit": "1d5ad198527725f10093b311f8884e04e64c8cd6",
      "tree": "ce6f08f59012e7e1ede31f22e31efea90bce55e4",
      "parents": [
        "2e859ee8d482d3732c09bb14052b59b75dd11194"
      ],
      "author": {
        "name": "Kevin Liu",
        "email": "kevinjqliu@users.noreply.github.com",
        "time": "Mon Jun 15 13:59:23 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 15 13:59:23 2026 -0400"
      },
      "message": "refactor!: remove `cloud` feature alias (#751)"
    },
    {
      "commit": "2e859ee8d482d3732c09bb14052b59b75dd11194",
      "tree": "9ad9a2766bff6af5ae3aaf2f7976f82868c7efa3",
      "parents": [
        "d339aee4b7a8d63eff9df3599ceeced2d4ce03c3"
      ],
      "author": {
        "name": "Kevin Liu",
        "email": "kevinjqliu@users.noreply.github.com",
        "time": "Fri Jun 12 14:56:54 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 12 14:56:54 2026 -0400"
      },
      "message": "docs: explain `*-base` features and document the full feature flag set (#750)\n\n* docs\n\n* more docs\n\n* more docs\n\n* minor changes"
    },
    {
      "commit": "d339aee4b7a8d63eff9df3599ceeced2d4ce03c3",
      "tree": "aa1d631205bbfb90f5f53e55c017f9197d8a5b75",
      "parents": [
        "f554e600e83a43275367db3f6b0eb15343865873"
      ],
      "author": {
        "name": "Bram Westerbaan",
        "email": "github@bram.westerbaan.name",
        "time": "Fri Jun 12 19:07:42 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 12 13:07:42 2026 -0400"
      },
      "message": "Make `reqwest` optional (#724)\n\n* makes reqwest optional\n\n* refactor!: make aws/azure/gcp/http depend on reqwest, not cloud\n\nThe role of cloud has been taken over by reqwest + cloud-base.\n\nImplements https://github.com/apache/arrow-rs-object-store/pull/724#discussion_r3342155266\n\nBREAKING CHANGE: according to cargo semver-checks: aws/azure/gcp/http no longer enable the cloud feature.\n\n* document feature flags exactly as kevinjqliu proposed\n\n* switch from `feature\u003d\"cloud\"` to `feature\u003d\"reqwest\"`\n\n* Apply suggestion from @kevinjqliu\n\nCo-authored-by: Kevin Liu \u003ckevinjqliu@users.noreply.github.com\u003e\n\n---------\n\nCo-authored-by: Andrew Lamb \u003candrew@nerdnetworks.org\u003e\nCo-authored-by: Kyle Barron \u003ckyle@developmentseed.org\u003e\nCo-authored-by: Kyle Barron \u003ckylebarron2@gmail.com\u003e\nCo-authored-by: Kevin Liu \u003ckevinjqliu@users.noreply.github.com\u003e"
    },
    {
      "commit": "f554e600e83a43275367db3f6b0eb15343865873",
      "tree": "b88903d508d8b1ccccc33c72ed23fa457b769ce2",
      "parents": [
        "52f511967122dfce81bcd0009be4957c0de7ce7a"
      ],
      "author": {
        "name": "Kevin Liu",
        "email": "kevinjqliu@users.noreply.github.com",
        "time": "Fri Jun 12 07:04:10 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 12 07:04:10 2026 -0400"
      },
      "message": "ci: use --locked when installing cargo-msrv and cargo-audit (#746)"
    },
    {
      "commit": "52f511967122dfce81bcd0009be4957c0de7ce7a",
      "tree": "aa0188fda121ae6b27c1f653b02f4d68690e424c",
      "parents": [
        "18ed86caf5d06aa318f38158501eeb736f28a73b"
      ],
      "author": {
        "name": "Chris",
        "email": "criccomini@users.noreply.github.com",
        "time": "Fri Jun 12 04:03:39 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 12 07:03:39 2026 -0400"
      },
      "message": "Add `Extensions` in `*Result` objects (#743)\n\n* add extensions support to results\n\n* add extensions to MultiStatus\n\n* fmt\n\n* rustdocs\n\n* get rid of extensions in paginated list result\n\n* add extension result integration tests"
    },
    {
      "commit": "18ed86caf5d06aa318f38158501eeb736f28a73b",
      "tree": "60c8396ed26232d91be32775b7fcb0b9becb12e6",
      "parents": [
        "af634d01d1e87119183fcce8f8a45df989f71d3d"
      ],
      "author": {
        "name": "Smriti Agrawal",
        "email": "54806047+SmritiAgrawal04@users.noreply.github.com",
        "time": "Fri Jun 12 01:44:14 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 11 16:14:14 2026 -0400"
      },
      "message": "Whitelisting Onelake API \u0026 Workspace PL FQDNs (#1) (#711)\n\n* Whitelisting Onelake API \u0026 Workspace PL FQDNs\n\n* Addressing comments to whitelist api-onelake fqdns and add UTs\n\n* Reverting the mistakenly modified UT\n\n* Adding validation for xy in WS-PL URL \u0026 case insensitive regex\n\n* Making regex an optional dependency\n\n* Eliminating the use of regex for ws-pl fqdn matching\n\n* Adding a separte method \u0027azure_test_workspace_private_link\u0027 for ws-pl tests\n\n* Organising private link UTs\n\n* Adding integration test for WSPL \u0026 rebasing with unpstream\n\n* Whitelisting Onelake API \u0026 Workspace PL FQDNs\n\n* Addressing comments to whitelist api-onelake fqdns and add UTs\n\n* Reverting the mistakenly modified UT\n\n* Adding validation for xy in WS-PL URL \u0026 case insensitive regex\n\n* Making regex an optional dependency\n\n* Eliminating the use of regex for ws-pl fqdn matching\n\n* Adding a separte method \u0027azure_test_workspace_private_link\u0027 for ws-pl tests\n\n* Organising private link UTs\n\n* Fixing cargo fmt\n\n* Fixing Clippy\n\n* Fixing Clippy\n\n* Fixing Clippy\n\n* Modified Integration test to pass workspace \u0026 artifact id within URL only\n\n* Fixing Clippy\n\n* Adding WSPL support for ABFSS scheme as well\n\n* Adding comments for readability\n\n* Adding comments for readability\n\n---------\n\nCo-authored-by: Smriti Agrawal \u003csmagrawal@microsoft.com\u003e"
    },
    {
      "commit": "af634d01d1e87119183fcce8f8a45df989f71d3d",
      "tree": "01c7c4c5afbc54d4ce4c7d789a655c6adafcafce",
      "parents": [
        "233b23aeb6cdf16c4e89f4018d49f10b907825a1"
      ],
      "author": {
        "name": "Frank Elsinga",
        "email": "frank@elsinga.de",
        "time": "Wed Jun 10 20:47:10 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 10 14:47:10 2026 -0400"
      },
      "message": "refactor: unify internal naming of `allow_invalid_certificates` (#718)\n\n* fix naming diff\n\n* fix fmt"
    },
    {
      "commit": "233b23aeb6cdf16c4e89f4018d49f10b907825a1",
      "tree": "713f41c2d4a1b20044516f70bccbaa945865b3ed",
      "parents": [
        "a9a83f18071d9e4c5636d379aaa0513c1e06d0d4"
      ],
      "author": {
        "name": "Thomas Tanon",
        "email": "thomas@pellissier-tanon.fr",
        "time": "Tue Jun 09 22:52:15 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 09 16:52:15 2026 -0400"
      },
      "message": "Add `impl\u003cT: Signed\u003e Signed for PrefixStore\u003cT\u003e` (#739)\n\nSmall convenience feature"
    },
    {
      "commit": "a9a83f18071d9e4c5636d379aaa0513c1e06d0d4",
      "tree": "40684d63573621b069eb5c2280363378c2b6d722",
      "parents": [
        "255b5f59e59440dabc910880afd5c71331b57ad1"
      ],
      "author": {
        "name": "Hengfei Yang",
        "email": "hengfei.yang@gmail.com",
        "time": "Wed Jun 03 04:12:46 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 02 16:12:46 2026 -0400"
      },
      "message": "feat: add option to disable bulk delete for aws (#734)\n\n* feat: add option to disable bulk delete for aws\n\n* fix(aws): correct documentation references for delete methods\n\n* test: add more unit tests"
    },
    {
      "commit": "255b5f59e59440dabc910880afd5c71331b57ad1",
      "tree": "0fa634273b605e4009aa1b5d22de1a51dce6fd74",
      "parents": [
        "8c7fb0a1e2fc794e375b205eab26b73d31032e2d"
      ],
      "author": {
        "name": "siddharthmittal13",
        "email": "59646960+siddharthmittal13@users.noreply.github.com",
        "time": "Tue Jun 02 15:48:03 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 02 11:18:03 2026 +0100"
      },
      "message": "feat(gcp): support explicit bearer token config in parse flow (#717)\n\n* feat(gcp): support explicit bearer token config in parse flow\n\n* feat(gcp): resolved lint issue and addressed review comments.\n\n---------\n\nCo-authored-by: Siddharth Mittal \u003csiddharth.mittal@teradata.com\u003e"
    },
    {
      "commit": "8c7fb0a1e2fc794e375b205eab26b73d31032e2d",
      "tree": "5274a0348a20209698a070c7d6afe0fc5847ff83",
      "parents": [
        "8bb878a07b1a0e07521c1374e8302e9a21bb0f62"
      ],
      "author": {
        "name": "bboissin",
        "email": "bboissin@users.noreply.github.com",
        "time": "Tue Jun 02 11:53:17 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 02 10:53:17 2026 +0100"
      },
      "message": "fix: fix incorrect splitting with line delimited streaming (#700)\n\n* fix: fix incorrect splitting with line delimited streaming\n\nIn some cases, valid CSV in datafusion would return:\n`Generic { store: \"LineDelimiter\", source: UnterminatedString }` due to incorrect logic.\n\nrecords_ends is a double ended iterator, so when calling next_back() the\nquoting/escaping logic would run in reverse, corrupting the internal state.\n\n* Use last instead of collecting into vec\n\n* Clippy\n\n---------\n\nCo-authored-by: Raphael Taylor-Davies \u003cr.taylordavies@googlemail.com\u003e"
    },
    {
      "commit": "8bb878a07b1a0e07521c1374e8302e9a21bb0f62",
      "tree": "9006fbed16aa9b7fd8786984d0238dd464ad8156",
      "parents": [
        "196c4719cf9b30d24f1ef25987c8199b021d2f22"
      ],
      "author": {
        "name": "Aleksandar Tomic",
        "email": "150942779+dbatomic@users.noreply.github.com",
        "time": "Tue Jun 02 11:30:59 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 02 10:30:59 2026 +0100"
      },
      "message": "feat(azure): expose `split_sas` for custom SAS credential providers (#721)\n\n`split_sas` parses an Azure Shared Access Signature string into the\n`Vec\u003c(String, String)\u003e` query pairs expected by\n`AzureCredential::SASToken`. It is what `MicrosoftAzureBuilder` runs\ninternally when a raw SAS string is supplied via `AzureConfigKey::SasKey`.\n\nUsers implementing their own `CredentialProvider\u003cCredential \u003d\nAzureCredential\u003e` that fetches SAS tokens at request time (e.g. tokens\nrefreshed from a secret manager or coordination service) currently have\nto reimplement this parser to feed pairs into\n`AzureCredential::SASToken`. Reimplementations are easy to get subtly\nwrong: in particular, using `form_urlencoded` decodes `+` as space,\nwhich corrupts base64-encoded SAS signatures.\n\nMake `split_sas` public, change its return type to the public\n`crate::Result\u003cVec\u003c(String, String)\u003e\u003e` (the inner `Error` variants\nalready convert into `crate::Error` via the existing `From` impl, so\nthe two existing internal call sites are unchanged), document it, and\nre-export it from `object_store::azure`. Add tests for the empty/`?`\nedge cases and the missing-`\u003d` error path."
    },
    {
      "commit": "196c4719cf9b30d24f1ef25987c8199b021d2f22",
      "tree": "da456c44aa5653500495e88e147cd434280cf0d2",
      "parents": [
        "b05890317a2e8b3c4ac5a401483ed8e7eb672ec0"
      ],
      "author": {
        "name": "Ilya Zlobintsev",
        "email": "ilya.zl@protonmail.com",
        "time": "Tue Jun 02 12:28:57 2026 +0300"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 02 10:28:57 2026 +0100"
      },
      "message": "Add `with_signing_credentials` to GCP builder (#699)"
    },
    {
      "commit": "b05890317a2e8b3c4ac5a401483ed8e7eb672ec0",
      "tree": "ee997007887d11d07eccdac92342b6de29536f61",
      "parents": [
        "46abab96e8acab55e22434fba84154ce34ddcaf5"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Wed May 27 14:11:23 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 27 14:11:23 2026 +0100"
      },
      "message": "build(deps): update quick-xml requirement from 0.39.0 to 0.40.1 (#727)\n\nUpdates the requirements on [quick-xml](https://github.com/tafia/quick-xml) to permit the latest version.\n- [Release notes](https://github.com/tafia/quick-xml/releases)\n- [Changelog](https://github.com/tafia/quick-xml/blob/master/Changelog.md)\n- [Commits](https://github.com/tafia/quick-xml/compare/v0.39.0...v0.40.1)\n\n---\nupdated-dependencies:\n- dependency-name: quick-xml\n  dependency-version: 0.40.1\n  dependency-type: direct:production\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "46abab96e8acab55e22434fba84154ce34ddcaf5",
      "tree": "a4b2a32629de0d1a8e8d3302843015a0b90a1787",
      "parents": [
        "994d60732c3379bc98982f5c4638996be0ee0d2f"
      ],
      "author": {
        "name": "rustyprimus",
        "email": "alex.github@rustyprimus.com",
        "time": "Wed May 27 16:11:05 2026 +0300"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 27 14:11:05 2026 +0100"
      },
      "message": "fix(aws): set retry_error_body on bulk_delete_request (#733)\n\nAWS S3 can return HTTP 200 with a SlowDown or InternalError XML body\nfor DeleteObjects requests. The retry logic already handles this via\nbody_contains_error() when retry_error_body is set, and other requests\n(copy_part, complete_multipart) already use this flag. bulk_delete_request\nwas missing it, causing throttling errors to surface instead of being retried.\n\nCloses #277"
    },
    {
      "commit": "994d60732c3379bc98982f5c4638996be0ee0d2f",
      "tree": "21f6e9eca881d588ed6c158716619f9703d0dc04",
      "parents": [
        "6f1c9acc94636e059a2b3aef5c75e815e065cc89"
      ],
      "author": {
        "name": "james-rms",
        "email": "james@foxglove.dev",
        "time": "Thu May 21 02:21:36 2026 +1000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 20 17:21:36 2026 +0100"
      },
      "message": "GCP: fix copy (no) overwrite semantics (#713)"
    },
    {
      "commit": "6f1c9acc94636e059a2b3aef5c75e815e065cc89",
      "tree": "cac36f7ef74897dfce4eadb85ce8727bff9597ed",
      "parents": [
        "706b7d8b536fd02a8a323bb8dbeae344fc8d65eb"
      ],
      "author": {
        "name": "Koen Denecker",
        "email": "koen@polars.tech",
        "time": "Mon May 11 17:56:39 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon May 11 11:56:39 2026 -0400"
      },
      "message": "Add CRC64NVME checksum support (#633)\n\n* Add CRC64NVME checksum support\n\n* make enum non-exhaustive and more\n\n* fixup test bucket syntax\n\n* simplify with_payload SHA256 logic\n\n* avoid test interference\n\n* do not strip checksum responses"
    },
    {
      "commit": "706b7d8b536fd02a8a323bb8dbeae344fc8d65eb",
      "tree": "22753efc06f18a92d764e1951b9b5b83e21d782c",
      "parents": [
        "1a0d21edbfd54153c11500c3c81b27c86db5ce5f"
      ],
      "author": {
        "name": "dentiny",
        "email": "dentinyhao@gmail.com",
        "time": "Thu May 07 02:32:59 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 07 11:32:59 2026 +0200"
      },
      "message": "fix(core): add missing version assignment (#691)"
    },
    {
      "commit": "1a0d21edbfd54153c11500c3c81b27c86db5ce5f",
      "tree": "c726bd62297d79cc7d83027e724a89668949d41f",
      "parents": [
        "e0fbe4966d6f0ee5e1ff6d4c9a4f71fdc98c22f8"
      ],
      "author": {
        "name": "dentiny",
        "email": "dentinyhao@gmail.com",
        "time": "Wed May 06 07:05:40 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 06 16:05:40 2026 +0200"
      },
      "message": "fix(aws): populate default header for complete mutipart request (#688)"
    },
    {
      "commit": "e0fbe4966d6f0ee5e1ff6d4c9a4f71fdc98c22f8",
      "tree": "dee50096856cf752821a39120fe5ef933117283b",
      "parents": [
        "4d042dc6136e8eccdc559979663f6773419e83d3"
      ],
      "author": {
        "name": "dentiny",
        "email": "dentinyhao@gmail.com",
        "time": "Wed May 06 05:44:45 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 06 20:44:45 2026 +0800"
      },
      "message": "fix(core): add missing extension assignment (#689)\n\n* fix(core): add missing extension assignment\n\n* clippy"
    },
    {
      "commit": "4d042dc6136e8eccdc559979663f6773419e83d3",
      "tree": "da4d836696e1ae2e21b18de396b47db69dd9424d",
      "parents": [
        "0c380a13612a1c3d91aa9b2c263422b3049858c0"
      ],
      "author": {
        "name": "dentiny",
        "email": "dentinyhao@gmail.com",
        "time": "Wed May 06 05:44:25 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 06 20:44:25 2026 +0800"
      },
      "message": "fix(retry): respect range header on retry (#690)\n\n* fix(retry): respect range header on retry\n\n* clippy"
    },
    {
      "commit": "0c380a13612a1c3d91aa9b2c263422b3049858c0",
      "tree": "7bff544cf1b152bc3517f6a8e1c6b48464c222cc",
      "parents": [
        "9b8cf5246d6fade1e425b974ac58259af96748f6"
      ],
      "author": {
        "name": "Marco Neumann",
        "email": "marco@crepererum.net",
        "time": "Thu Apr 23 22:24:21 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 23 21:24:21 2026 +0100"
      },
      "message": "fix: clippy (#694)"
    },
    {
      "commit": "9b8cf5246d6fade1e425b974ac58259af96748f6",
      "tree": "a1465a4ca54f03e257f13e2dfec5daa5816bc723",
      "parents": [
        "00e03f312ffde5f98139a3623014745eedd7b894"
      ],
      "author": {
        "name": "Jonathan Giannuzzi",
        "email": "jgiannuzzi@users.noreply.github.com",
        "time": "Fri Apr 17 10:49:44 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 17 11:49:44 2026 +0200"
      },
      "message": "feat(local): explicit close with error checking for LocalFileSystem (#676)"
    },
    {
      "commit": "00e03f312ffde5f98139a3623014745eedd7b894",
      "tree": "90ae861f4f49fbf1efd7725a6601fcd8daf1c710",
      "parents": [
        "e89f62b6508f6f65873ce6a5017cd0d5d7395184"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Wed Apr 15 17:57:38 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 15 17:57:38 2026 +0200"
      },
      "message": "build(deps): bump actions/github-script from 8 to 9 (#692)\n\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "e89f62b6508f6f65873ce6a5017cd0d5d7395184",
      "tree": "62968a4d6f51dc0de05094419d3f151daafcffc1",
      "parents": [
        "0646c6d9eb8e302caafbb564cd3e1fe1cca886ad"
      ],
      "author": {
        "name": "Alfonso Subiotto Marqués",
        "email": "alfonso.subiotto@polarsignals.com",
        "time": "Wed Apr 08 14:52:59 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 08 14:52:59 2026 +0200"
      },
      "message": "fix[prefix]: strip_meta from get_opts result in PrefixStore (#686)"
    },
    {
      "commit": "0646c6d9eb8e302caafbb564cd3e1fe1cca886ad",
      "tree": "a406bc75ff390874a993b142fcb50d920aabbbe3",
      "parents": [
        "5f36e0e6744dbdd199b66b69827ff1a6d43bfd76"
      ],
      "author": {
        "name": "dentiny",
        "email": "dentinyhao@gmail.com",
        "time": "Tue Apr 07 04:18:25 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 07 13:18:25 2026 +0200"
      },
      "message": "fix(memory): fix out-of-order multipart upload for in-memory store (#683)"
    },
    {
      "commit": "5f36e0e6744dbdd199b66b69827ff1a6d43bfd76",
      "tree": "17bf6b68d27862d2511ac8bff85e03b53977a5e4",
      "parents": [
        "0fda34c5e0c00a7665649bd676c2d3d885ad3e20"
      ],
      "author": {
        "name": "Mak Nazečić-Andrlon",
        "email": "mak.andrlon@gmail.com",
        "time": "Tue Apr 07 19:54:22 2026 +1000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 07 11:54:22 2026 +0200"
      },
      "message": "Expose `read_timeout` from `reqwest` (#681)"
    },
    {
      "commit": "0fda34c5e0c00a7665649bd676c2d3d885ad3e20",
      "tree": "6c6296f888ad3b457c6cf84236689b8ce1ece9a8",
      "parents": [
        "719a29d0f6eca84268c61b0969d8dbe952e75e92"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Tue Mar 31 09:21:53 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 31 09:21:53 2026 +0200"
      },
      "message": "build(deps): update md-5 requirement from 0.10.6 to 0.11.0 (#679)\n\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "719a29d0f6eca84268c61b0969d8dbe952e75e92",
      "tree": "65a513a8745925c2e658549dc990b7a35af918bb",
      "parents": [
        "e9df6f7340af60243ec9890cc53a01ef12a7b402"
      ],
      "author": {
        "name": "Len Strnad",
        "email": "ljstrnadiii@gmail.com",
        "time": "Tue Mar 31 00:54:36 2026 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 31 08:54:36 2026 +0200"
      },
      "message": "fix: support `AWS_REQUEST_PAYER\u003drequester` (#669)"
    },
    {
      "commit": "e9df6f7340af60243ec9890cc53a01ef12a7b402",
      "tree": "c9627e24616afa2fd0405d024a770aefa39dd3fd",
      "parents": [
        "7a65b75b0d26fd8a282999462cb7030fb85fdcc3"
      ],
      "author": {
        "name": "Andrew Lamb",
        "email": "andrew@nerdnetworks.org",
        "time": "Thu Mar 19 14:25:44 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Mar 19 19:25:44 2026 +0100"
      },
      "message": "Update release schedule on README.md (#674)"
    },
    {
      "commit": "7a65b75b0d26fd8a282999462cb7030fb85fdcc3",
      "tree": "4e773b8bf65228e952241a91c5ee82c937dcbe28",
      "parents": [
        "d22f7f91d576ab7b2a12750751a76d30018cb12d"
      ],
      "author": {
        "name": "Marco Neumann",
        "email": "marco@crepererum.net",
        "time": "Thu Mar 19 15:23:13 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Mar 19 15:23:13 2026 +0100"
      },
      "message": "chore: prepare `0.13.2` release (#671)"
    },
    {
      "commit": "d22f7f91d576ab7b2a12750751a76d30018cb12d",
      "tree": "1169e9a0a57f5b5a3a8e998174196cf4baa29a43",
      "parents": [
        "ebaee78c8bd05235b4ceb2a5125a125faae5da86"
      ],
      "author": {
        "name": "Jack Ye",
        "email": "jackye@apache.org",
        "time": "Thu Mar 19 04:06:03 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Mar 19 12:06:03 2026 +0100"
      },
      "message": "fix: missing 5xx error body when retry exhausted (#618)\n\nCo-authored-by: Andrew Lamb \u003candrew@nerdnetworks.org\u003e"
    },
    {
      "commit": "ebaee78c8bd05235b4ceb2a5125a125faae5da86",
      "tree": "8379ffbcb57fc38b68e92e0bd8243be575c4100b",
      "parents": [
        "7ded938312299ccc1ca517e34fe34326d8426ebb"
      ],
      "author": {
        "name": "Prashant Deva",
        "email": "prashant.deva@gmail.com",
        "time": "Thu Mar 19 04:04:53 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Mar 19 12:04:53 2026 +0100"
      },
      "message": "Support --xa-s3 suffix for S3 Express One Zone bucket access points (#663)\n\nAWS recently introduced a new `--xa-s3` suffix for S3 Express One Zone\ndirectory buckets (in addition to the existing `--x-s3` suffix).\n`parse_bucket_az` only recognized `--x-s3`, causing a `ZoneSuffix` error\nfor buckets using the new suffix.\n\nCo-authored-by: Claude Opus 4.6 (1M context) \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "7ded938312299ccc1ca517e34fe34326d8426ebb",
      "tree": "f049957b2bab7acbc8a5e189ac86ba9eee1f4289",
      "parents": [
        "bdcac43fc637ac89cc80f18f4e16b3fb66fd0ec8"
      ],
      "author": {
        "name": "Ruslan Fadeev",
        "email": "github@kinrany.dev",
        "time": "Thu Mar 19 15:04:10 2026 +0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Mar 19 12:04:10 2026 +0100"
      },
      "message": "Replace `Path::child` with `Path::join` (#666)\n\n* Path::join\n\n* update old uses"
    },
    {
      "commit": "bdcac43fc637ac89cc80f18f4e16b3fb66fd0ec8",
      "tree": "5289d6e0f5fd555a10192b58b354afd55622299f",
      "parents": [
        "ca15c63f652e1c5c2e776231ae77d08bb46375ea"
      ],
      "author": {
        "name": "Rajat Goel",
        "email": "405844+rajatgoel@users.noreply.github.com",
        "time": "Thu Mar 12 04:11:16 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Mar 12 12:11:16 2026 +0100"
      },
      "message": "feat: Add support for AWS_ENDPOINT_URL_S3 environment variable (#590)\n\n* feat: Add support for AWS_ENDPOINT_URL_S3 env var\n\n* cargo fmt\n\n* comments"
    },
    {
      "commit": "ca15c63f652e1c5c2e776231ae77d08bb46375ea",
      "tree": "c627de97143ff1785f92fb1f65b845838fa00a02",
      "parents": [
        "41d32428cd625e4b86d3411b4f06a0dff7ecab47"
      ],
      "author": {
        "name": "Douman",
        "email": "douman@gmx.se",
        "time": "Thu Mar 12 01:25:55 2026 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Mar 11 17:25:55 2026 +0100"
      },
      "message": "Implement Clone for local and memory stores (#653)\n\nThese stores already use Arc internally and there is little reason not to provide benefit of Clone similar to cloud stores and enable parity with these"
    },
    {
      "commit": "41d32428cd625e4b86d3411b4f06a0dff7ecab47",
      "tree": "549fcf59530ab9d64d657498e9bd55ccb8a78ca8",
      "parents": [
        "62592027cb7d33ed843bc14fb77d7fc32f13ace5"
      ],
      "author": {
        "name": "Marco Neumann",
        "email": "marco@crepererum.net",
        "time": "Wed Mar 11 17:25:35 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Mar 11 17:25:35 2026 +0100"
      },
      "message": "docs: clarify `Clone` behavior (#656)"
    },
    {
      "commit": "62592027cb7d33ed843bc14fb77d7fc32f13ace5",
      "tree": "a56cfd807d5ea94a0a71039d32232361e64eb626",
      "parents": [
        "66e640d1ba7b79d878e9423924ed5bff4f321b75"
      ],
      "author": {
        "name": "Miraculous Owonubi",
        "email": "omiraculous@gmail.com",
        "time": "Tue Mar 03 12:04:51 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 03 12:04:51 2026 +0100"
      },
      "message": "Unify `from_env` behaviours (#652)\n\n* parse_url_opts should match {S3,Azure,GCP}Builder::from_env\n\n* fix AmazonS3Builder::from_env documentation\n\n* fix parse_url_opts documentation\n\n* update test_url_http to ingest case insensitive data\n\n* fix sentence cut off"
    },
    {
      "commit": "66e640d1ba7b79d878e9423924ed5bff4f321b75",
      "tree": "6f34aa2c8a30cedd5fe43d1f12916e52a6a88db8",
      "parents": [
        "907653e46232edb3a635969bf288324b68d62cdc"
      ],
      "author": {
        "name": "Raphael Taylor-Davies",
        "email": "1781103+tustvold@users.noreply.github.com",
        "time": "Mon Mar 02 10:05:48 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 02 11:05:48 2026 +0100"
      },
      "message": "Switch TokenCache to RWLock (#648)\n\n* Switch TokenCache to RWLock\n\n* Clippy"
    },
    {
      "commit": "907653e46232edb3a635969bf288324b68d62cdc",
      "tree": "164933e7081bdf14f7e7eeac021852123163dab8",
      "parents": [
        "72cd13608ba9c2c566c609c377bd627281f83501"
      ],
      "author": {
        "name": "Frank Elsinga",
        "email": "frank@elsinga.de",
        "time": "Thu Feb 26 17:50:52 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Feb 26 17:50:52 2026 +0100"
      },
      "message": "docs: add examples to the aws docs where appropriate (#651)\n\n* add examples to the aws docs where appropriate\n\n* fix ci"
    },
    {
      "commit": "72cd13608ba9c2c566c609c377bd627281f83501",
      "tree": "c737d783493b4f9f8da1ce42de41d4ff57ba328d",
      "parents": [
        "0ec788f8803d388a8c53990ba7d96c24c6d48906"
      ],
      "author": {
        "name": "Adam Gutglick",
        "email": "adamgsal@gmail.com",
        "time": "Thu Feb 19 16:30:28 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Feb 19 17:30:28 2026 +0100"
      },
      "message": "Minimize futures dependency into relevant sub-crates (#646)\n\n* Minimize futures dependency into relevant sub-crates\n\n* Fix docs"
    },
    {
      "commit": "0ec788f8803d388a8c53990ba7d96c24c6d48906",
      "tree": "792d0f7535ec142c46d84a4d688f1f91ae0832c4",
      "parents": [
        "0af53d9424b2a29af0f49942420a19ada45dc5ec"
      ],
      "author": {
        "name": "Desmond Cheong",
        "email": "desmondcheongzx@gmail.com",
        "time": "Wed Feb 18 02:35:12 2026 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Feb 18 11:35:12 2026 +0100"
      },
      "message": "fix(azure): fix integer overflow in Fabric token expiry check (#641)\n\n* Fix Fabric token expiry check\n\n* Update test to check for the new token\n\n* Bikeshedding test"
    },
    {
      "commit": "0af53d9424b2a29af0f49942420a19ada45dc5ec",
      "tree": "b5a1d1a147cab8e14558371150414e793a934c65",
      "parents": [
        "8140480ba3f23a114b3da389566e5a4a3a47c179"
      ],
      "author": {
        "name": "Joseph Koshakow",
        "email": "koshy44@gmail.com",
        "time": "Wed Feb 18 05:33:56 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Feb 18 11:33:56 2026 +0100"
      },
      "message": "Clarify ShuffleResolver doc-comments (#645)\n\nThis commit clarifies the ShuffleResolver doc-comments in two places by\nadding some additional details."
    },
    {
      "commit": "8140480ba3f23a114b3da389566e5a4a3a47c179",
      "tree": "38372a2c244807337d4b80b7414d90ed39f27fff",
      "parents": [
        "030f29d59ec055741e5f4de55e8a004d8fa44d5b"
      ],
      "author": {
        "name": "Adam Gutglick",
        "email": "adamgsal@gmail.com",
        "time": "Wed Feb 18 10:32:55 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Feb 18 11:32:55 2026 +0100"
      },
      "message": "Introduce a \"tokio\" to allow pulling a trait-only build (#644)\n\nSigned-off-by: Adam Gutglick \u003cadamgsal@gmail.com\u003e"
    },
    {
      "commit": "030f29d59ec055741e5f4de55e8a004d8fa44d5b",
      "tree": "9a40efd729d37fe5cd2d34606bb578957595dcc2",
      "parents": [
        "771372ee2fe5d75d85b5761810d902e4c45e763b"
      ],
      "author": {
        "name": "Marco Neumann",
        "email": "marco@crepererum.net",
        "time": "Thu Feb 12 17:59:12 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Feb 12 17:59:12 2026 +0100"
      },
      "message": "chore: upgrade to `rand` 0.10 (#637)\n\n"
    },
    {
      "commit": "771372ee2fe5d75d85b5761810d902e4c45e763b",
      "tree": "a6bf31fbff1956a095c9116096f3096f49be54d7",
      "parents": [
        "50e1229a97225fa1d330cd925187e2b302d25676"
      ],
      "author": {
        "name": "singhsaabir",
        "email": "singh.saabir@gmail.com",
        "time": "Tue Feb 10 04:15:13 2026 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Feb 10 13:15:13 2026 +0100"
      },
      "message": "fix(aws): Include default headers in signature calculation (#484) (#636)\n\n* fix(aws): Include default headers in signature calculation (#484)\n\nWhen using `ClientOptions::with_default_headers()` to set S3 metadata\nheaders (like `x-amz-meta-*` or `x-amz-tagging`), these headers were not\nincluded in the AWS SigV4 signature calculation, causing S3 to reject\nrequests with \"headers present in the request which were not signed\".\n\nThis fix adds default headers to the request before signing in all three\nS3 request paths: `S3Client::request()`, `bulk_delete_request()`, and\n`get_request()`.\n\n* test(aws): Extend default headers signing test to cover all request paths\n\nAdd test coverage for bulk_delete_request and get_request to verify\ndefault headers are included in signature calculation. Extract\nassert_default_headers_signed and default_headers_config helpers to\nreduce duplication.\n\n* style(aws): Apply rustfmt formatting\n\n---------\n\nCo-authored-by: Saabir Singh \u003csaabirs@amazon.com\u003e"
    },
    {
      "commit": "50e1229a97225fa1d330cd925187e2b302d25676",
      "tree": "f9427242164f220c0b9c36b7d9d5924e4c0b41e8",
      "parents": [
        "7242bd1c8b89dd15880c3088d86ac2ba12af3421"
      ],
      "author": {
        "name": "Omar Khudeira",
        "email": "196368+omar@users.noreply.github.com",
        "time": "Tue Feb 10 06:14:33 2026 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Feb 10 13:14:33 2026 +0100"
      },
      "message": "Azure ADLS list_with_offset support (#623)\n\n* Add list_with_offset for Azure\n\n* Add list_from_exclusivity test\n\n* Update documentation on function\n\n* Remove unnecessary docs\n\n* Remove redundant tests\n\n* Run cargo fmt\n\n* Skip Azurite version check\n\n* Skip list_with_offset_exclusivity against Azure emulator\n\n* Fix failing test by changing behavior of list_with_offset if emulator is running instead of skipping a test\n\n* Update src/azure/mod.rs\n\nCo-authored-by: Marco Neumann \u003cmarco@crepererum.net\u003e\n\n---------\n\nCo-authored-by: Marco Neumann \u003cmarco@crepererum.net\u003e"
    }
  ],
  "next": "7242bd1c8b89dd15880c3088d86ac2ba12af3421"
}
