diff --git a/.github/workflows/indexability_tests.yml b/.github/workflows/indexability_tests.yml
index f410a384..6f6bdf4d 100644
--- a/.github/workflows/indexability_tests.yml
+++ b/.github/workflows/indexability_tests.yml
@@ -37,6 +37,9 @@ jobs:
- name: Run HTML structure tests
id: html-tests
continue-on-error: true
+ env:
+ # This job manages no containers of its own — skip conftest's docker startup.
+ DOCS_GITHUB_ENV: "true"
run: |
echo "Running HTML indexability tests..."
uv run pytest -m "indexability" -v --tb=short --junitxml=pytest-results.xml
@@ -46,6 +49,8 @@ jobs:
continue-on-error: true
if: env.ANTHROPIC_API_KEY != '' && env.OPENAI_API_KEY != ''
env:
+ # This job manages no containers of its own — skip conftest's docker startup.
+ DOCS_GITHUB_ENV: "true"
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
run: |
diff --git a/.github/workflows/llms_txt_tests.yml b/.github/workflows/llms_txt_tests.yml
index c5f1e881..4346f541 100644
--- a/.github/workflows/llms_txt_tests.yml
+++ b/.github/workflows/llms_txt_tests.yml
@@ -38,6 +38,8 @@ jobs:
id: run-tests
continue-on-error: true
env:
+ # This job manages no containers of its own — skip conftest's docker startup.
+ DOCS_GITHUB_ENV: "true"
# Raises GitHub's anonymous rate limit (60/hr → 5000/hr) for the
# version-freshness test, which hits /releases/latest per library.
GH_API_TOKEN: ${{ secrets.GITHUB_TOKEN }}
diff --git a/_build_scripts/update-config-versions.js b/_build_scripts/update-config-versions.js
index 9ed48be3..2b8846e3 100644
--- a/_build_scripts/update-config-versions.js
+++ b/_build_scripts/update-config-versions.js
@@ -99,6 +99,7 @@ const appendVersionsToConfig = async (config) => {
config.go_client_version = await getRepoVersion('weaviate-go-client');
config.java_client_version = await getRepoVersion('weaviate-java-client');
config.typescript_client_version = await getRepoVersion('typescript-client');
+ config.csharp_client_version = await getRepoVersion('csharp-client');
config.helm_version = await getRepoVersion('weaviate-helm');
config.weaviate_cli_version = await getRepoVersion('weaviate-cli');
config.agents_python_version = await getRepoVersion('weaviate-agents-python-client');
diff --git a/_includes/code/howto/search.bm25.gql.py b/_includes/code/howto/search.bm25.gql.py
index 328170f0..d1196950 100644
--- a/_includes/code/howto/search.bm25.gql.py
+++ b/_includes/code/howto/search.bm25.gql.py
@@ -80,6 +80,7 @@
limit: 3
bm25: {
query: "Australian mammal cute"
+ properties: ["question", "answer"]
# highlight-start
searchOperator: {
operator: AndCross,
diff --git a/_includes/code/howto/search.bm25.py b/_includes/code/howto/search.bm25.py
index 36ad62f4..f9ccf704 100644
--- a/_includes/code/howto/search.bm25.py
+++ b/_includes/code/howto/search.bm25.py
@@ -120,6 +120,8 @@
response = jeopardy.query.bm25(
# highlight-start
query="African desert wind",
+ # and_cross errors unless every searched property shares tokenization settings
+ query_properties=["question", "answer"],
# Each token must be matched by at least one searched property,
# but not necessarily all by the same property
operator=BM25Operator.and_cross(),
diff --git a/_includes/release-history.md b/_includes/release-history.md
index ba65becc..d0db00be 100644
--- a/_includes/release-history.md
+++ b/_includes/release-history.md
@@ -2,11 +2,11 @@ This table lists recent Weaviate Database versions and corresponding client libr
| Weaviate Database
([GitHub][cWeaviate]) | First
release date | Python
([GitHub][cPython]) | TypeScript/
JavaScript
([GitHub][cTypeScript]) | Go
([GitHub][cGo]) | Java
([GitHub][cJava]) | C#
([GitHub][cCSharp]) |
| :------------------------------------------------------------------ | :---------------------- | :-------------------------------------------------------------------------------: | :--------------------------------------------------------------------------: | :-------------------------------------------------------------------------: | :-----------------------------------------------------------------: | :-----------------------------------------------------------------------------: |
-| [1.39.x](https://github.com/weaviate/weaviate/releases/tag/v1.39.0) | 2026-08-04 | [4.23.x](https://github.com/weaviate/weaviate-python-client/releases/tag/v4.23.0) | - | - | [6.3.1](https://github.com/weaviate/java-client/releases/tag/6.3.1) | - |
-| [1.38.x](https://github.com/weaviate/weaviate/releases/tag/v1.38.0) | 2026-06-05 | [4.22.x](https://github.com/weaviate/weaviate-python-client/releases/tag/v4.22.0) | [3.14.x](https://github.com/weaviate/typescript-client/releases/tag/v3.14.0) | - | [6.3.0](https://github.com/weaviate/java-client/releases/tag/6.3.0) | - |
-| [1.37.x](https://github.com/weaviate/weaviate/releases/tag/v1.37.0) | 2026-04-16 | [4.21.x](https://github.com/weaviate/weaviate-python-client/releases/tag/v4.21.0) | [3.13.x](https://github.com/weaviate/typescript-client/releases/tag/v3.13.0) | [5.7.3](https://github.com/weaviate/weaviate-go-client/releases/tag/v5.7.3) | [6.2.0](https://github.com/weaviate/java-client/releases/tag/6.2.0) | N/A |
-| [1.36.x](https://github.com/weaviate/weaviate/releases/tag/v1.36.0) | 2026-02-24 | [4.20.x](https://github.com/weaviate/weaviate-python-client/releases/tag/v4.20.0) | [3.12.x](https://github.com/weaviate/typescript-client/releases/tag/v3.12.0) | [5.7.x](https://github.com/weaviate/weaviate-go-client/releases/tag/v5.7.0) | [6.1.0](https://github.com/weaviate/java-client/releases/tag/6.1.0) | [1.0.1](https://github.com/weaviate/weaviate-dotnet-client/releases/tag/v1.0.1) |
-| [1.35.x](https://github.com/weaviate/weaviate/releases/tag/v1.35.0) | 2025-12-17 | [4.19.x](https://github.com/weaviate/weaviate-python-client/releases/tag/v4.19.0) | [3.11.x](https://github.com/weaviate/typescript-client/releases/tag/v3.11.0) | [5.6.x](https://github.com/weaviate/weaviate-go-client/releases/tag/v5.6.0) | [6.0.0](https://github.com/weaviate/java-client/releases/tag/6.0.0) | [1.0.0](https://github.com/weaviate/weaviate-dotnet-client/releases/tag/v1.0.0) |
+| [1.39.x](https://github.com/weaviate/weaviate/releases/tag/v1.39.0) | 2026-08-04 | [4.23.x](https://github.com/weaviate/weaviate-python-client/releases/tag/v4.23.0) | - | - | [6.3.1](https://github.com/weaviate/java-client/releases/tag/6.3.1) | [1.2.0](https://github.com/weaviate/csharp-client/releases/tag/1.2.0) |
+| [1.38.x](https://github.com/weaviate/weaviate/releases/tag/v1.38.0) | 2026-06-05 | [4.22.x](https://github.com/weaviate/weaviate-python-client/releases/tag/v4.22.0) | [3.14.x](https://github.com/weaviate/typescript-client/releases/tag/v3.14.0) | - | [6.3.0](https://github.com/weaviate/java-client/releases/tag/6.3.0) | [1.2.0](https://github.com/weaviate/csharp-client/releases/tag/1.2.0) |
+| [1.37.x](https://github.com/weaviate/weaviate/releases/tag/v1.37.0) | 2026-04-16 | [4.21.x](https://github.com/weaviate/weaviate-python-client/releases/tag/v4.21.0) | [3.13.x](https://github.com/weaviate/typescript-client/releases/tag/v3.13.0) | [5.7.3](https://github.com/weaviate/weaviate-go-client/releases/tag/v5.7.3) | [6.2.0](https://github.com/weaviate/java-client/releases/tag/6.2.0) | [1.1.1](https://github.com/weaviate/csharp-client/releases/tag/1.1.1) |
+| [1.36.x](https://github.com/weaviate/weaviate/releases/tag/v1.36.0) | 2026-02-24 | [4.20.x](https://github.com/weaviate/weaviate-python-client/releases/tag/v4.20.0) | [3.12.x](https://github.com/weaviate/typescript-client/releases/tag/v3.12.0) | [5.7.x](https://github.com/weaviate/weaviate-go-client/releases/tag/v5.7.0) | [6.1.0](https://github.com/weaviate/java-client/releases/tag/6.1.0) | [1.0.1](https://github.com/weaviate/csharp-client/releases/tag/1.0.1) |
+| [1.35.x](https://github.com/weaviate/weaviate/releases/tag/v1.35.0) | 2025-12-17 | [4.19.x](https://github.com/weaviate/weaviate-python-client/releases/tag/v4.19.0) | [3.11.x](https://github.com/weaviate/typescript-client/releases/tag/v3.11.0) | [5.6.x](https://github.com/weaviate/weaviate-go-client/releases/tag/v5.6.0) | [6.0.0](https://github.com/weaviate/java-client/releases/tag/6.0.0) | [1.0.0](https://github.com/weaviate/csharp-client/releases/tag/1.0.0) |
Older releases
@@ -59,6 +59,6 @@ The [TypeScript client](https://github.com/weaviate/typescript-client) replaced
[cTypeScript]: https://github.com/weaviate/typescript-client/releases
[cGo]: https://github.com/weaviate/weaviate-go-client/releases
[cJava]: https://github.com/weaviate/java-client/releases
-[cCSharp]: https://github.com/weaviate/weaviate-dotnet-client/releases
+[cCSharp]: https://github.com/weaviate/csharp-client/releases
diff --git a/docs/weaviate/api/graphql/search-operators.md b/docs/weaviate/api/graphql/search-operators.md
index b2474aad..d2a3c912 100644
--- a/docs/weaviate/api/graphql/search-operators.md
+++ b/docs/weaviate/api/graphql/search-operators.md
@@ -555,7 +555,7 @@ The available options are `And`, `Or`, and `AndCross`:
If not set, the keyword search behaves as if `Or` was set with a `minimumOrTokensMatch` of `1`.
-An `AndCross` query example:
+An `AndCross` query example, restricted to `question` and `answer` because the `JeopardyQuestion` collection mixes tokenizations across its properties:
```graphql
{
@@ -564,6 +564,7 @@ An `AndCross` query example:
limit: 3
bm25: {
query: "African desert wind"
+ properties: ["question", "answer"]
searchOperator: {
operator: AndCross
}
diff --git a/docs/weaviate/search/bm25.md b/docs/weaviate/search/bm25.md
index 0f24fd76..f80aa409 100644
--- a/docs/weaviate/search/bm25.md
+++ b/docs/weaviate/search/bm25.md
@@ -200,7 +200,7 @@ If a collection mixes tokenizations, restrict the search to a compatible set of
:::
-The examples below use Python and GraphQL, because `and_cross` is currently available in the Python client and not yet in the TypeScript, Go, Java, or C# clients.
+The examples below use Python and GraphQL: `and_cross` is available in the Python client and, from version `1.2.0`, the C# client, but not yet in the TypeScript, Go, or Java clients. Both examples restrict the search to `question` and `answer`, because the `JeopardyQuestion` collection mixes tokenizations across its properties.
diff --git a/tests/test_docs_indexability.py b/tests/test_docs_indexability.py
index ff5ad51d..fadff628 100644
--- a/tests/test_docs_indexability.py
+++ b/tests/test_docs_indexability.py
@@ -641,9 +641,14 @@ def test_chatgpt_can_search_code_tabs():
text = response.output_text
text_lower = text.lower()
- # Must find the correct quickstart URL
- assert "docs.weaviate.io/weaviate/quickstart" in text, (
- f"ChatGPT didn't find the quickstart URL. Response:\n{text[:1000]}"
+ # The live web-search model cites either /weaviate/quickstart or /cloud/quickstart,
+ # so the URL is not a reliable assertion target; the content assertions below carry the signal.
+ found_quickstart_url = (
+ "docs.weaviate.io/weaviate/quickstart" in text
+ or "docs.weaviate.io/cloud/quickstart" in text
+ )
+ assert found_quickstart_url, (
+ f"ChatGPT didn't find a quickstart URL. Response:\n{text[:1000]}"
)
# Must identify multiple programming languages from the code tabs
diff --git a/tests/utils.py b/tests/utils.py
index 1ef985b6..30f76036 100644
--- a/tests/utils.py
+++ b/tests/utils.py
@@ -21,6 +21,8 @@
"rate limit", "overloaded", "temporarily unavailable",
"error while connecting", "connection error",
"weaviate_cloud_connection_error",
+ # Embedded Weaviate's gRPC port is fixed but ephemeral-range, so a transient holder can free it before a retry.
+ "address already in use", "did not start listening",
)
diff --git a/versions-config.json b/versions-config.json
index 6ea2e290..f8de9e22 100644
--- a/versions-config.json
+++ b/versions-config.json
@@ -12,5 +12,5 @@
"java_client_version": "6.2.0",
"typescript_client_version": "3.13.1",
"spark_connector_version": "1.4.0",
- "csharp_client_version": "1.1.1"
+ "csharp_client_version": "1.2.0"
}