# Changelog All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [Unreleased] ## [2.1.0] - 2026-07-11 ### Summary Add runtime-checkable Protocol typing to public interfaces ### Changed - 1cbcc1c Merge pull request '[minor] Add runtime-checkable Protocol typing to public interfaces' (#57) from cursor/protocol-abc-interfaces into main - a0e5c9d Document test organization and add Cursor workflow rules. - 44b15cb Move structural typing tests into interface unit test files. - f6ee9a3 Add runtime-checkable Protocol typing to all public interfaces. - 0829354 Merge pull request 'Add async future note and remove redundant pytest pythonpath' (#56) from cursor/readme-async-and-test-path-cleanup into main - a0d509a Format CHANGELOG.md with Prettier. - 9b7b15a Document possible async support and drop redundant pytest pythonpath. ## [2.0.5] - 2026-07-10 ### Summary Allow empty payloads in Redis and MinIO adapters ### Changed - 6d02f32 Merge pull request '[patch] Allow empty payloads in Redis and MinIO adapters' (#55) from cursor/allow-empty-payloads into main - 57b396b Allow empty payloads in Redis and MinIO adapters. - 093e538 Merge pull request '[chore] Scope integration fixtures per backend subdirectory' (#54) from cursor/scoped-integration-fixtures into main - b28ac6e Scope integration fixtures per backend subdirectory. - 6c66fe4 Merge pull request 'Add consumer-facing CHANGELOG.md maintained by release CI' (#53) from cursor/consumer-changelog into main - 089a128 Format CHANGELOG.md with Prettier - 0a5bd39 Add consumer-facing CHANGELOG.md maintained by release CI. - 683ee33 Merge pull request '[chore] add repository URL and Python 3.12 packaging metadata' (#52) from cursor/add-packaging-metadata into main - 9df5032 Add repository URL and Python 3.12 packaging metadata. - 4f6f33f Merge pull request 'Drop types-redis in favor of redis inline types' (#51) from cursor/drop-types-redis into main - 10d43ce Drop types-redis in favor of redis inline types. ## [2.0.4] - 2026-07-10 ### Summary Include optional dependencies in security audit ### Changed - 4f7b672 chore: release v2.0.4 [skip ci] - a27e9e5 Merge pull request '[fix] Include optional dependencies in security audit' (#50) from cursor/security-audit-all-extras into main - fd0045d Include optional dependencies in security audit. - 515f4bb Merge pull request 'revert 707f11f578f007c7152582ea524b66dacea50111' (#49) from brian-patch-1 into main - ef31fb4 revert 707f11f578f007c7152582ea524b66dacea50111 - 707f11f chore: release v2.0.4 [skip ci] - b1d34f8 Merge pull request '[patch] Unify dev tooling via uv so pre-commit, CI, and the update bot stay aligned' (#48) from chore/align-dev-tooling-via-uv into main - 565879d Unify dev tooling via uv so pre-commit, CI, and the update bot stay aligned. - 0d0f430 Merge pull request 'Fix automated package publishing in release workflow' (#47) from fix/release-workflow-publish into main - 5ac40b1 Publish packages from the release workflow so automated releases reach the registry. ## [2.0.3] - 2026-07-10 ### Summary Use structured fields for adapter debug and info logs ### Changed - fa4ff1f chore: release v2.0.3 [skip ci] - 0a39151 Merge pull request '[patch] Use structured fields for adapter debug and info logs' (#46) from cursor/structured-adapter-logging into main - 82a702d Fix mypy error in Minio adapter log assertion. - b886a7c Use structured fields for adapter debug and info logs. - 4518a93 Merge pull request 'Migrate Python workflows to python-repositories-ci runner' (#41) from cursor/migrate-python-repositories-ci into main - a8b7b59 Migrate Python workflows to python-repositories-ci runner label. - 0e6941d Merge pull request 'Use lowercase CI image registry owner for Docker compatibility' (#45) from cursor/fix-ci-registry-owner-lowercase into main - a6428cc Use lowercase CI image registry owner for Docker compatibility. - 655fdc4 Merge pull request 'Fix CI image registry owner to match Gitea org slug' (#44) from cursor/fix-ci-registry-owner-case into main - e031c54 Fix CI image registry owner to match Gitea org slug. - 49b6238 Merge pull request 'Rename CI registry owner from brian to lille-vemmelund' (#43) from cursor/rename-ci-owner-to-lille-vemmelund into main - 0549358 Keep python-utils package index under brian owner. - 33efbd1 Update CI registry owner from brian to lille-vemmelund. - 24126e4 Merge pull request 'Fix CI image build failures on runners with isolated DinD DNS' (#42) from fix/ci-image-build-dns into main - f3b6cdb Fix CI image build failures on runners with isolated DinD DNS. - fa2554e Merge pull request 'Add nightly CI base image and migrate workflows to python-repositories-ci' (#40) from cursor/ci-base-image into main - b21fd24 Revert workflows to ubuntu-latest until CI image is seeded. - 441a212 Add local CI image build script and document bootstrap flow. - f2a8581 Read Python version from .python-version in CI image build. - 3b05260 Add nightly CI base image and migrate workflows to python-repositories-ci. ## [2.0.2] - 2026-07-09 ### Summary Use dict[str, Any] for JSON repository document types ### Changed - 369295b chore: release v2.0.2 [skip ci] - 95c7859 Merge pull request '[patch] Use dict[str, Any] for JSON repository document types' (#38) from cursor/json-dict-str-any-typing into main - 42e885e Use dict[str, Any] for JSON repository document types. ## [2.0.1] - 2026-07-09 ### Summary Align Redis and MinIO connect() idempotency ### Changed - bd4794d chore: release v2.0.1 [skip ci] - 3dc412c Merge pull request '[patch] Align Redis and MinIO connect() idempotency' (#37) from cursor/connect-idempotency-alignment into main - b8d88e6 Cover injected-client connect when client was cleared by disconnect. - 67bb88f Align Redis and MinIO connect() idempotency in ConnectionAwareAdapter. ## [2.0.0] - 2026-07-09 ### Summary Make MinIO bucket creation opt-in with production-safe defaults ### Changed - c2e6a96 chore: release v2.0.0 [skip ci] - 547a1b3 Merge pull request '[breaking] Make MinIO bucket creation opt-in with production-safe defaults' (#36) from cursor/minio-bucket-creation-opt-in into main - 39baf9b Fix examples integration test by provisioning MinIO bucket in fixture. - 4a5b3b6 Make MinIO bucket creation opt-in with production-safe defaults. - 1431f45 Merge pull request 'Move Redis test container helpers into integration conftest' (#35) from cursor/move-redis-container-to-conftest into main - eafc717 Move Redis test container helpers into integration conftest. ## [1.1.0] - 2026-07-08 ### Summary Add Redis scan_keys iterator API ### Changed - 9a9b7b2 chore: release v1.1.0 [skip ci] - 5b9573d Merge pull request '[minor] Add Redis scan_keys iterator API' (#34) from cursor/redis-scan-keys into main - 50444af Add Redis scan_keys iterator API. ## [1.0.0] - 2026-07-08 ### Summary Clarify MinIO get() error semantics to match Redis behavior ### Changed - 2f19fcc chore: release v1.0.0 [skip ci] - 3bd6589 Merge pull request '[breaking] Clarify MinIO get() error semantics to match Redis behavior' (#33) from cursor/minio-error-semantics into main - 5311d49 Clarify MinIO get() error semantics to match Redis behavior. ## [0.5.1] - 2026-07-07 ### Summary Fix MinIO get_object response leak in MinioAdapter.get() ### Changed - 703bb95 chore: release v0.5.1 [skip ci] - 8e47ebf Merge pull request '[patch] Fix MinIO get_object response leak in MinioAdapter.get()' (#32) from fix/minio-get-object-response-cleanup into main - 9a800bf Fetch live PR title in pr-title-check CI workflow. - 8c34534 Fix MinIO get_object response leak in MinioAdapter.get(). - b1210bd Merge pull request 'Reach 100% combined coverage with targeted unit tests' (#31) from cursor/balanced-100-coverage into main - 39b1043 Fix mypy unreachable-code warning in minio reconnect test. - beb2b51 Reach 100% combined coverage with targeted unit tests. - ce062be Merge pull request 'Enforce 90% combined coverage floor in CI' (#29) from cursor/enforce-coverage-floor into main - a381d45 Lower combined coverage floor from 95% to 90%. - 5c8cd84 Document where combined coverage floor is enforced in CI. - 3463298 Skip coverage floor check in partial CI test jobs. - 5393efc Enforce a 95% combined coverage floor in CI and local runs. - e39fc96 Merge pull request 'Split CI into parallel unit, integration, and coverage report jobs' (#28) from cursor/split-ci-test-jobs into main - c1f4826 Use christopherhx v4 artifact actions for parallel coverage merge. - 0315a33 Avoid cross-job artifacts; combine coverage with --cov-append. - 5d33ec6 Use artifact action v3 for Gitea Actions compatibility. - 9538e4d Split CI into parallel unit, integration, and coverage report jobs. - 14b8d27 Merge pull request 'Replace hardcoded version examples in release docs' (#27) from cursor/fix-version-doc-drift into main - d3cbb65 Use version-agnostic examples in release docs. ## [0.5.0] - 2026-07-06 ### Summary Add config and client injection with test reorganization ### Changed - 7dbb1fc chore: release v0.5.0 [skip ci] - 918e5e6 Merge pull request '[minor] Add config and client injection with test reorganization' (#25) from cursor/config-client-injection into main - 3aa9128 Load MINIO_SECURE from env and replace adapter asserts with explicit errors. - 7991dab Add config and client injection with test reorganization. - 366831a Merge pull request 'chore(deps): update dependencies' (#26) from renovate/auto-deps-update into main - a98905d chore(deps): update dependencies [automated] - 7ed1b34 Merge pull request 'Sync uv.lock on release to prevent CI failures' (#24) from cursor/sync-uv-lock-on-release into main - 3236f27 manually updated package version - ac487d9 Sync uv.lock on release to keep CI clean. ## [0.4.1] - 2026-07-05 ### Summary Extract shared connection lifecycle into ConnectionAwareAdapter ### Changed - a049ce3 chore: release v0.4.1 [skip ci] - 7b4cf84 Merge pull request '[patch] Extract shared connection lifecycle into ConnectionAwareAdapter' (#23) from cursor/extract-connection-aware-adapter into main - b5a92e6 Sync uv.lock with pyproject.toml version 0.4.0. - 7b950e0 Extract shared connection lifecycle into ConnectionAwareAdapter. ## [0.4.0] - 2026-07-05 ### Summary Strengthen is_connected with cached health probes ### Changed - fe0c477 chore: release v0.4.0 [skip ci] - e7e0fc8 Merge pull request '[minor] Strengthen is_connected with cached health probes' (#22) from cursor/strengthen-is-connected-health-checks into main - 34fc046 Sync uv.lock with pyproject.toml version 0.3.2. - 5149299 Strengthen is_connected with cached health probes. ## [0.3.2] - 2026-06-30 ### Summary Fix optional dependency handling for Redis and MinIO adapters ### Changed - fef9552 chore: release v0.3.2 [skip ci] - e9b2189 Merge pull request '[patch] Fix optional dependency handling for Redis and MinIO adapters' (#19) from cursor/fix-optional-dependencies into main - f595390 Fix optional-deps import test for full-suite execution. - 1f02195 Delegate top-level adapter imports to adapters package. - f092ca2 Fix trailing whitespace in LICENSE and .gitignore. - c6eed43 Fix optional dependency handling for Redis and MinIO adapters. - 9e4b1e2 Merge pull request 'Avoid testcontainers Redis deprecation warning in integration tests.' (#18) from fix/redis-testcontainer-deprecation into main - 0096df7 Avoid testcontainers Redis deprecation warning in integration tests. - 3073bfb Merge pull request 'Fix PR coverage comment posting in CI.' (#17) from fix/coverage-pr-comment into main - 30a1de3 Fix PR coverage comment posting in CI. - 8465957 Merge pull request '[patch] update dependencies' (#16) from renovate/auto-deps-update into main - 3ecb9c3 chore: retrigger CI - 0f31170 Fix mypy errors from minio 7.2.20 type stubs. - e3cab5e chore(deps): update dependencies [automated] - f428a97 Merge pull request 'Fix dependency bot PR creation for Gitea.' (#15) from cursor/fix-dependency-bot-gitea-pr into main - a3b9912 Fix dependency bot PR creation for Gitea. - abaa078 Merge pull request 'Fix dependency update bot to use uv lock --upgrade.' (#14) from cursor/fix-dependency-update-bot-uv-lock into main - 9864f0c Fix dependency update bot to use uv lock --upgrade. - e39b467 Merge pull request 'Automate releases from PR titles and clean up CI workflows.' (#13) from cursor/pr-title-release-automation into main - 85c1a64 Sync uv.lock with pyproject.toml version 0.3.1. - a8491c0 Automate releases from PR titles and clean up CI workflows. ## [0.3.1] - 2026-06-28 ### Summary Add public repository interfaces and subclassable adapter CRUD API. ### Changed - 2bb361e Merge pull request 'Add public repository interfaces and subclassable adapter CRUD API.' (#11) from cursor/public-repository-api into main - c5169df Use pre-commit for Prettier in CI and document local hook setup. - 497533f Fix mypy context manager typing for adapter subclasses. - e98fd3b Add public repository interfaces and subclassable adapter CRUD API. - f4280f1 Merge pull request 'Remove non-existent Mongo adapter from README.' (#10) from cleanup/remove-mongo-adapter-mentions into main - d9b9fa4 updated package settings - 9d25f7c updated package settings - 1635815 updated package settings - 933c4ee updated package settings - 2b0d98f updated package settings - 729fa48 Remove non-existent Mongo adapter from README. ## [0.2.3] - 2025-09-18 ### Summary added support for content type when putting object in minio ### Changed - fa011be Merge pull request 'added support for content type when putting object in minio' (#9) from add-support-for-content-type-in-minio into main - 2e93309 ruff format fix - 3ab8da9 added support for content type when putting object in minio ## [0.2.2] - 2025-09-17 ### Summary moved import of optional packages into classes ### Changed - 1dd604d Merge pull request 'moved import of optional packages into classes' (#6) from make-optional-parts-independent into main - e5c4025 added graceful handling of missing optional packages - 396cf83 code quality fixes - 538b26b mypy fixed - ee6acc6 moved import of optional packages into classes ## [0.2.1] - 2025-09-15 ### Summary exposed minio adapter ### Changed - 0ca07c0 Merge pull request 'exposed minio adapter' (#5) from expose-minio-adapter into main - 7446e88 added py.typed mypy config file - d5f437f ruff format fix - 7beca7c exposed minio adapter ## [0.2.0] - 2025-09-15 ### Summary add-minio-adapter ### Changed - 65d8051 Merge pull request 'add-minio-adapter' (#4) from add-minio-adapter into main - f5af303 auto install all extra packages - 3260a3f added new optional package to ci - c7bced4 ruff lint fixes - 800d702 pyupgrade - 5a72507 ruff format - c45ba3c mypy fixes - a3b5443 added minio adapter and tests - cc99fe5 minor corrections - 93fffe1 added optional group minio ## [0.1.0] - 2025-09-14 ### Summary Release v0.1.0 ### Changed - 2eafd73 Merge pull request 'added redis adapter' (#1) from collect-code-from-other-repos into main - 1cc047d removed unused bound ports for test - c7cc2a3 added optional package redis - b5d0297 pyupgrade fixed imports - 2fa633a ruff fixed formatting - 0e47db2 fuxed mypy issues - 0948799 added integration tests - 524bd0f fixed connection error handling - 969c2c8 installed more pytest-cov - 7caee87 added installing optional redis group - 918535e added test coverage and upload step - 5d7afe7 ruff format corrections - 59a943e added redis types stub and fixed return type - 1abcae4 added redis adapter - c789e33 initial commit - 56cad42 Initial commit