You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- CHANGELOG: rename [Unreleased] → [1.1.0] (2026-05-11), add full entry
for all features and fixes since 1.0.1, update comparison links
- PublicAPI: move all Unshipped symbols to Shipped.txt, clear Unshipped
to #nullable enable only
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Authentication hardening: `CancellationToken` threading, scoped DI token providers, deadlock fix in `GetClient()`
23
+
12
24
### Added
13
25
26
+
#### Collection Export
27
+
28
+
-**Collection Export** ([#324](https://github.com/weaviate/weaviate-csharp-client/pull/324)): New `ExportClient` accessible via `client.Export` and `collection.Export`. Supports `Create()`, `CreateAndWait()`, `GetStatus()`, and `CancelExport()`. `ExportOperation` tracks export progress with the same polling pattern as backup operations. Requires Weaviate ≥ 1.37.0.
29
+
30
+
#### Server-Side Batching
31
+
32
+
-**`BatchContext` Streaming Batch API** ([#305](https://github.com/weaviate/weaviate-csharp-client/pull/305)): `collection.Batch.StreamAsync()` opens a server-side batch session that streams objects and cross-references directly to the server without buffering all data in memory. `BatchContext.AddReference` enqueues cross-references alongside objects in the same stream. Requires Weaviate ≥ 1.27.0.
33
+
14
34
#### Tokenization
15
35
16
-
-**Tokenize Endpoints** ([#329](https://github.com/weaviate/csharp-client/pull/329)): Expose the `POST /v1/tokenize` and `POST /v1/schema/{class}/properties/{prop}/tokenize` endpoints introduced in Weaviate 1.37.0. Inspect how text is tokenized for a given method and analyzer configuration, or how a specific collection property would tokenize it. Access via `client.Tokenize.Text(...)` and `collection.Tokenize.Property(...)`. `AsciiFoldConfig` is modeled as a nullable record so the invalid "ignore without fold" state is unrepresentable. See [TOKENIZE_API_USAGE.md](docs/TOKENIZE_API_USAGE.md). Requires Weaviate ≥ 1.37.0.
17
-
-**Property-Level `TextAnalyzerConfig`** ([#329](https://github.com/weaviate/csharp-client/pull/329)): `Property.TextAnalyzer` (also applies to nested properties) lets a collection schema pin ASCII folding and/or a stopword preset per property at index time. The same `TextAnalyzerConfig` record is reused from the `Tokenize` endpoint so tokenize-at-query and index-at-insert stay aligned. A preflight version check on `CollectionsClient.Create` raises `WeaviateVersionMismatchException` when the server is older than 1.37.0. Requires Weaviate ≥ 1.37.0.
18
-
-**Collection-Level `StopwordPresets`** ([#329](https://github.com/weaviate/csharp-client/pull/329)): `InvertedIndexConfig.StopwordPresets` and `InvertedIndexConfigUpdate.StopwordPresets` define named preset name → word-list maps on the inverted-index config. Properties reference these presets via `TextAnalyzer.StopwordPreset`. Preset changes flow through `CollectionClient.Config.Update(c => c.InvertedIndexConfig.StopwordPresets = ...)`. Requires Weaviate ≥ 1.37.0.
36
+
-**Tokenize Endpoints** ([#329](https://github.com/weaviate/weaviate-csharp-client/pull/329)): Expose `POST /v1/tokenize` and `POST /v1/schema/{class}/properties/{prop}/tokenize` introduced in Weaviate 1.37.0. Inspect how text is tokenized for a given analyzer configuration, or for a specific collection property. Access via `client.Tokenize.Text(...)` and `collection.Tokenize.Property(...)`. `AsciiFoldConfig` is modeled as a nullable record so the invalid "ignore without fold" state is unrepresentable. See [TOKENIZE_API_USAGE.md](docs/TOKENIZE_API_USAGE.md). Requires Weaviate ≥ 1.37.0.
37
+
-**Property-Level `TextAnalyzerConfig`** ([#329](https://github.com/weaviate/weaviate-csharp-client/pull/329)): `Property.TextAnalyzer` (also applies to nested properties) pins ASCII folding and/or a stopword preset per property at index time. Reuses the same `TextAnalyzerConfig` record from the Tokenize endpoint so tokenize-at-query and index-at-insert stay aligned. Raises `WeaviateVersionMismatchException` on `CollectionsClient.Create` when the server is older than 1.37.0.
38
+
-**Collection-Level `StopwordPresets`** ([#329](https://github.com/weaviate/weaviate-csharp-client/pull/329)): `InvertedIndexConfig.StopwordPresets` and `InvertedIndexConfigUpdate.StopwordPresets` define named preset → word-list maps. Properties reference presets via `TextAnalyzer.StopwordPreset`. Changes flow through `CollectionClient.Config.Update(...)`. Requires Weaviate ≥ 1.37.0.
39
+
40
+
#### Microsoft.Extensions.VectorData Integration
41
+
42
+
-**`Weaviate.Client.VectorData` Package** ([#312](https://github.com/weaviate/weaviate-csharp-client/pull/312)): New NuGet package implementing `IVectorStore` and `IVectorStoreRecordCollection<TKey, TRecord>` from `Microsoft.Extensions.VectorData.Abstractions`. Enables drop-in use of Weaviate with AI frameworks built on the shared VectorData abstraction (e.g., Semantic Kernel). Install via `dotnet add package Weaviate.Client.VectorData`.
43
+
44
+
#### Vector Index Management
45
+
46
+
-**Delete Vector Index** ([#310](https://github.com/weaviate/weaviate-csharp-client/pull/310)): `CollectionConfigClient.DeleteVectorIndex(name)` removes a named vector index from an existing collection without dropping the collection or its data. Requires Weaviate ≥ 1.37.0.
47
+
48
+
#### RBAC Permissions
49
+
50
+
-**MCP Permission Type** ([#321](https://github.com/weaviate/weaviate-csharp-client/pull/321)): New `Permission.Mcp` permission for granting Model Context Protocol actions in RBAC role configurations.
51
+
52
+
#### Query Profiling
53
+
54
+
-**`MetadataOptions.QueryProfile`** ([#318](https://github.com/weaviate/weaviate-csharp-client/pull/318)): New flag that requests per-phase timing from the server. Profiling data is exposed as `WeaviateResult.QueryProfile`.
55
+
56
+
#### Client Integration Headers
57
+
58
+
-**`X-Weaviate-Client-Integration` Header** ([#306](https://github.com/weaviate/weaviate-csharp-client/pull/306)): `WeaviateOptions.AddIntegration(name)` and `WeaviateClientBuilder.WithIntegration(name)` append integration agent tokens to the `X-Weaviate-Client-Integration` header. `WeaviateDefaults.IntegrationAgent(name)` builds a `"name/assemblyVersion"` token automatically. Values containing whitespace are rejected (space is the token separator). The gRPC client now always sends the `X-Weaviate-Client` header regardless of whether custom headers are present.
59
+
60
+
#### Property Types
61
+
62
+
-**`blobHash` Property Type** ([#336](https://github.com/weaviate/weaviate-csharp-client/pull/336)): New `BlobHashPropertyConverter` for reading `blobHash`-type properties from search results. Register via `PropertyConverterRegistry`. Requires Weaviate ≥ 1.37.0.
63
+
64
+
#### Vectorizers
65
+
66
+
-**Audio Field Support** ([#302](https://github.com/weaviate/weaviate-csharp-client/pull/302)): `Multi2VecGoogle` and `Multi2VecGoogleGemini` vectorizers now support audio field configurations with configurable per-field weights.
67
+
68
+
#### API Ergonomics
69
+
70
+
-**Nullable `Alpha` in Hybrid Search** ([#304](https://github.com/weaviate/weaviate-csharp-client/pull/304)): `HybridInput.Alpha` and `HybridAggregateInput.Alpha` are now nullable. Omitting the parameter defers to the server's default (0.75), removing the need to specify it explicitly on every query.
-`ITokenService.GetAccessTokenAsync` and `RefreshTokenAsync` now accept an optional `CancellationToken`; a cancelled gRPC call also cancels the in-flight token fetch.
76
+
- New `AddWeaviate<TTokenService>` DI overloads resolve a fresh token service from a DI scope per call, enabling multi-tenant and token-forwarding scenarios.
77
+
-`WeaviateClientFactory.GetClient()` marked `[Obsolete]`; internals now use `Task.Run()` to escape `SynchronizationContext` and prevent deadlocks in ASP.NET Core hosts.
78
+
-`_disposed` fields in `BackupOperationBase`, `ExportOperationBase`, and `ReplicationOperationTracker` made `volatile` to prevent data races between `Dispose()` and `DisposeInternal()`.
79
+
- Background polling loops now catch `Exception when (ex is not OutOfMemoryException)` so CLR fatal exceptions are not suppressed.
80
+
-**Backup Disposal Leak** ([#331](https://github.com/weaviate/weaviate-csharp-client/pull/331)): `BackupOperationBase` and `BackupClient` now correctly dispose background polling tasks and `CancellationTokenSource` instances.
81
+
-**`ObjectTTLConfig` Null-vs-Disabled Equality** ([#307](https://github.com/weaviate/weaviate-csharp-client/pull/307)): The server returns `objectTtlConfig` with `enabled=false` for collections without TTL; client-side equality now null-coalesces to `ObjectTTLConfig.Disabled` to prevent spurious mismatches.
82
+
-**Null `vectorIndexConfig` Crash** ([#321](https://github.com/weaviate/weaviate-csharp-client/pull/321)): `VectorIndexSerialization.Factory` returns `null` instead of throwing when `vectorIndexConfig` is `null`, fixing `ConnectToLocal` failures against Weaviate 1.37.1.
83
+
84
+
### Changed
85
+
86
+
-`Property.IndexInverted``[Obsolete]` attribute now includes a migration message.
0 commit comments