Repository navigation
Conversation
This was referenced Oct 3, 2026
Open
There was a problem hiding this comment.
Copilot review overview
🟡 Changes recommended
Fork-specific branding and package instructions contradict the target repository’s package identity.
Review effort: Balanced
Findings: 2
Open (2)
What changed in this PR
Migrates the client to Chroma API v2 while improving compatibility, cancellation, error handling, dependency injection, and CI coverage.
Changes:
- Migrates endpoints and defaults to API v2.
- Adds cancellation support and fixes response/request handling.
- Expands tests and CI across Chroma and .NET versions.
| File | Description |
|---|---|
v2-migration/MIGRATION_GUIDE_V2.md |
Adds migration guidance. |
Samples/ChromaDB.Client.Sample/Program.cs |
Uses the v2 endpoint. |
README.md |
Documents compatibility and migration. |
ChromaDB.Client/Models/Responses/GeneralError.cs |
Supports v2 error fields. |
ChromaDB.Client/Models/Responses/CollectionEntriesQueryResponse.cs |
Handles optional distances and data. |
ChromaDB.Client/Models/Responses/CollectionEntriesGetResponse.cs |
Makes response data optional. |
ChromaDB.Client/Models/Requests/CollectionModifyRequest.cs |
Corrects modify field names. |
ChromaDB.Client/Common/HttpClientHelpers.cs |
Adds cancellation, URI construction, and error handling. |
ChromaDB.Client/Common/CollectionQueryEntryMapper.cs |
Maps optional distances. |
ChromaDB.Client/Common/ClientConstants.cs |
Changes the default endpoint to v2. |
ChromaDB.Client/Common/ChromaHttpClient.cs |
Avoids mutating shared HTTP clients. |
ChromaDB.Client/ChromaDB.Client.csproj |
Updates version and package metadata. |
ChromaDB.Client/ChromaCollectionQueryEntry.cs |
Makes distance nullable. |
ChromaDB.Client/ChromaCollectionClient.cs |
Migrates collection operations to v2. |
ChromaDB.Client/ChromaClient.cs |
Migrates client operations to v2. |
ChromaDB.Client.Tests/TestContainer/ChromaDBBuilder.cs |
Makes the tested Chroma image configurable. |
ChromaDB.Client.Tests/DependencyInjectionTests.cs |
Tests DI registration. |
ChromaDB.Client.Tests/CollectionClientTests.cs |
Strengthens modify and embedding tests. |
ChromaDB.Client.Tests/CollectionClientQueryTests.cs |
Tests omitted distances. |
ChromaDB.Client.Tests/CollectionClientCUDTests.cs |
Adapts CRUD tests across server versions. |
ChromaDB.Client.Tests/ClientTests.cs |
Tests shared HTTP clients and errors. |
ChromaDB.Client.Tests/ClientResetTests.cs |
Handles version-specific reset settings. |
ChromaDB.Client.Tests/ClientAuthTests.cs |
Skips removed Chroma 1.x authentication. |
ChromaDB.Client.Tests/ChromaTestsBase.cs |
Adds version-aware test helpers. |
ChromaDB.Client.Tests/ChromaDB.Client.Tests.csproj |
Tests alternate client target frameworks. |
ChromaDB.Client.Tests/CancellationTests.cs |
Verifies cancellation propagation. |
ChromaDB.Client.DependencyInjection/ChromaDB.Client.DependencyInjection.csproj |
Updates DI package metadata. |
ChromaDB.Client.DependencyInjection/ChromaClientExtensions.cs |
Registers configuration options. |
.github/workflows/ci.yml |
Adds server matrix, packaging, and publishing updates. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
This was referenced Oct 3, 2026
Send get_or_create once; KD-48, KD-49 and KD-50
KD-48: either of the two nearest goes missing
…he server by default
…mbedding a record whose embedding does not change
…or a $contains on the documents of fewer than 3 characters, which finds no record once indexed (KD-57)
Add KD-56 and KD-57, and throw on Chroma Cloud for the filters on the documents that give the wrong records there
…his client and in plain HTTP
…ema also turns an index on or off, and test it
…er, and say it in UpdateAsync and UpsertAsync
Test what a null document does in an update or an upsert on each server, and say it in UpdateAsync and UpsertAsync
Say that Chroma 1.3.0 applies the space of a schema only when the schema also turns an index on or off, and test it
Version 2.13.0
Bump the versions to 2.13.1
…ential backoff with full jitter of AWS, and add ChromaReadRetries
… record, and then throw a ChromaException that says it
…as Chroma Cloud needs since KD-57
…rst one, so that it goes at most MaxAttempts times
…kes first go again, and that a timeout does not
…fuse a null ReadRetries also when it is set directly
…attempts of ReadRetries.Default
…ng, and a search answer for every search
Filter the documents with three characters in the tests of contains, as Chroma Cloud needs since KD-57
Read again after errors of the server that can pass, with the exponential backoff with full jitter of AWS
…lter on the documents, as Chroma Cloud needs since KD-57
Delete with three characters in the test of a delete by ids with a filter on the documents, as Chroma Cloud needs since KD-57
Version 2.14.0
Bump the versions to 2.14.1
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

This pull request brings back here the work collected in ChromaDotNet/ChromaDB.Client: the pending pull requests #80 by @inlineHamed and #82 by @richlander, fixes for the open issues, and new features. Each change keeps its own commit and author. The branch follows the fork's
main, so the pull request stays current. If you merge it, a merge commit or a rebase keeps the original commits and their authors in the history.The fork's client is used by:
What it brings:
$containsand$regexfilters, URIs.The CI runs the whole suite against Chroma versions from 0.4.10 to 1.5.9, with both APIs;
docs/COMPATIBILITY.mdlists the versions tested and their differences. Every change is in the release notes.Breaking changes: the asynchronous methods end in
Async, lists and metadata are read-only, and a few types changed. The migration guide shows how to adapt.Without the repository variables of the fork, the package id stays
ChromaDB.Clientand the CI publishes withNUGET_API_KEY, as today. The README and the migration guide describe the fork: those parts would need to change here.Fixes #69 (opened by @cincuranet)
Fixes #78 (reported by @Lingchar, with the fix proposed there)
Fixes #79 (reported by @hannahhaken)
Fixes #81 (reported by @mubarak0443)
Fixes #76 (opened by @luisquintanilla)
Fixes #83 (reported by @Chris-Maina)
Fixes #5
Fixes #33
Fixes #6
Supersedes #80 and #82.
Co-authored-by: Rich 2608468+richlander@users.noreply.github.com
Co-authored-by: Hamed 11094468+inlineHamed@users.noreply.github.com