From 4bb27a304ada77375e66ea5219081767f88c1e9e Mon Sep 17 00:00:00 2001 From: XperiAndri Date: Fri, 2 Oct 2026 22:43:12 +0200 Subject: [PATCH 1/4] chore!: target net10.0 and Microsoft.Azure.Cosmos 3.62.0 * `net8.0` -> `net10.0` in the library, test and FAKE build projects; the commented analyzer block in `Directory.Build.props` follows the new TFM * `Microsoft.Azure.Cosmos` 3.60.0 -> 3.62.0 (maintainer decision) * Remove the `System.Linq.Async` 6.0.0 central version pin: no project references it directly and no package brings it transitively (`project.assets.json` lists it only under `centralPackageVersions`), and on `net10.0` `System.Linq.AsyncEnumerable` is part of the framework * Remove the `System.Formats.Asn1` reference and pin from the build project: on `net10.0` NuGet prunes it as part of the framework and warns NU1510 * README: the SDK requirement is the 10.0 SDK pinned in `global.json` * CHANGELOG: Unreleased entry; the next release is 2.0.0 BREAKING CHANGE: the package targets net10.0 only; net8.0 is no longer supported. Co-Authored-By: Claude Opus 5.5 --- CHANGELOG.md | 7 +++++++ Directory.Build.props | 2 +- Directory.Packages.props | 4 +--- README.md | 2 +- build/build.fsproj | 3 +-- src/Cosmos/FSharp.Azure.Cosmos.fsproj | 2 +- tests/Cosmos.Tests/FSharp.Azure.Cosmos.Tests.fsproj | 2 +- 7 files changed, 13 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5303019c..dc284fc4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,13 @@ 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.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [Unreleased] + +### Changed +* BREAKING: the package targets `net10.0` only; `net8.0` is no longer supported, so the next release is a major version (2.0.0) +* `Microsoft.Azure.Cosmos` updated from 3.60.0 to 3.62.0, which becomes the minimum version for consumers. Its release notes list a breaking change of their own: thin client mode is enabled by default and does not support resource-token authentication (opt out with `AZURE_COSMOS_THIN_CLIENT_ENABLED=false`) +* Removed the unused `System.Linq.Async` central package version pin: no project referenced the package directly or transitively, and on `net10.0` `System.Linq.AsyncEnumerable` is part of the framework + ## [1.2.0] - 2026-10-01 ### Added diff --git a/Directory.Build.props b/Directory.Build.props index 2558a008..c9619ce2 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -43,7 +43,7 @@ See https://learn.microsoft.com/en-us/visualstudio/msbuild/customize-by-director - diff --git a/Directory.Packages.props b/Directory.Packages.props index e05a3291..a110557f 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -1,10 +1,8 @@ - + - - diff --git a/README.md b/README.md index 07377204..4dd059ce 100644 --- a/README.md +++ b/README.md @@ -43,7 +43,7 @@ FSharp.Azure.Cosmos | [![NuGet Badge](https://img.shields.io/nuget/v/FSharp.Azur Make sure the following **requirements** are installed on your system: -- [dotnet SDK](https://www.microsoft.com/net/download/core) 9.0 or higher (uses F# 9) +- [dotnet SDK](https://www.microsoft.com/net/download/core) 10.0.401 or a later 10.0 SDK (pinned in `global.json`, uses F# 10) or diff --git a/build/build.fsproj b/build/build.fsproj index a12452d2..8cef4291 100644 --- a/build/build.fsproj +++ b/build/build.fsproj @@ -1,7 +1,7 @@  Exe - net8.0 + net10.0 3390;$(WarnOn) false @@ -35,6 +35,5 @@ - \ No newline at end of file diff --git a/src/Cosmos/FSharp.Azure.Cosmos.fsproj b/src/Cosmos/FSharp.Azure.Cosmos.fsproj index 47dd6e5c..6a2eb4b3 100644 --- a/src/Cosmos/FSharp.Azure.Cosmos.fsproj +++ b/src/Cosmos/FSharp.Azure.Cosmos.fsproj @@ -1,7 +1,7 @@  - net8.0 + net10.0 $(AssemblyBaseName) true true diff --git a/tests/Cosmos.Tests/FSharp.Azure.Cosmos.Tests.fsproj b/tests/Cosmos.Tests/FSharp.Azure.Cosmos.Tests.fsproj index 402c11c9..4f42acfe 100644 --- a/tests/Cosmos.Tests/FSharp.Azure.Cosmos.Tests.fsproj +++ b/tests/Cosmos.Tests/FSharp.Azure.Cosmos.Tests.fsproj @@ -1,7 +1,7 @@  - net8.0 + net10.0 $(AssemblyBaseName).Tests Exe From e532f6eb437ad662830e1efd2edfe40be56e20fa Mon Sep 17 00:00:00 2001 From: XperiAndri Date: Fri, 2 Oct 2026 22:43:24 +0200 Subject: [PATCH 2/4] ci: install only the .NET 10 SDK in workflows and the dev container Every project now targets `net10.0`, and none of the pinned dotnet tools needs the .NET 8 runtime although their manifest entries keep `rollForward: false` (the tool's own runtimeconfig decides): * fantomas 8.0.5 and fslangmcp 0.18.0 ship `tools/net10.0` * fsharp-analyzers 0.31.0 (`tools/net8.0`) and fsdocs-tool 20.0.1 (`tools/net6.0`) set `rollForward: LatestMajor` in their runtimeconfig * dotnet-reportgenerator-globaltool 5.4.7 (`tools/net8.0`, `tools/net9.0`) sets `rollForwardOnNoCandidateFx: 2` (major) Each tool was started on a private dotnet root holding only Microsoft.NETCore.App 10.0.12, where a `net8.0` app with the default policy fails to start. The docs workflow already installed only 10.x. Co-Authored-By: Claude Opus 5.5 --- .devcontainer/devcontainer.json | 3 +-- .github/workflows/build.yml | 1 - .github/workflows/copilot-setup-steps.yml | 1 - .github/workflows/publish_ci.yml | 1 - .github/workflows/publish_release.yml | 1 - 5 files changed, 1 insertion(+), 6 deletions(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 8f9f4a3f..6d517516 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -34,8 +34,7 @@ "ghcr.io/devcontainers-extra/features/starship:1": {}, // https://github.com/devcontainers/features/blob/main/src/dotnet/README.md "ghcr.io/devcontainers/features/dotnet:2": { - "version": "10.0", - "additionalVersions": "9.0,8.0" + "version": "10.0" } }, "overrideFeatureInstallOrder": [ diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 56c850d2..c14076b7 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -24,7 +24,6 @@ jobs: global-json-file: global.json dotnet-version: | 10.x - 8.x - name: Install Azure Cosmos DB Emulator (Windows) id: install_cosmos_windows diff --git a/.github/workflows/copilot-setup-steps.yml b/.github/workflows/copilot-setup-steps.yml index 65065dc6..dcbb28d0 100644 --- a/.github/workflows/copilot-setup-steps.yml +++ b/.github/workflows/copilot-setup-steps.yml @@ -44,7 +44,6 @@ jobs: global-json-file: global.json dotnet-version: | 10.x - 8.x - name: Setup Azure Cosmos DB Emulator uses: ./.github/actions/setup-cosmos-emulator diff --git a/.github/workflows/publish_ci.yml b/.github/workflows/publish_ci.yml index 227c5fdd..1540c35b 100644 --- a/.github/workflows/publish_ci.yml +++ b/.github/workflows/publish_ci.yml @@ -36,7 +36,6 @@ jobs: global-json-file: global.json dotnet-version: | 10.x - 8.x - name: Setup Azure Cosmos DB Emulator uses: ./.github/actions/setup-cosmos-emulator diff --git a/.github/workflows/publish_release.yml b/.github/workflows/publish_release.yml index f1a98daf..a39ea3d4 100644 --- a/.github/workflows/publish_release.yml +++ b/.github/workflows/publish_release.yml @@ -33,7 +33,6 @@ jobs: global-json-file: global.json dotnet-version: | 10.x - 8.x - name: Setup Azure Cosmos DB Emulator uses: ./.github/actions/setup-cosmos-emulator From 52fd3546607690c25d8659f692dfb983bbe078ad Mon Sep 17 00:00:00 2001 From: XperiAndri Date: Fri, 2 Oct 2026 22:43:39 +0200 Subject: [PATCH 3/4] chore(deps): update Microsoft.SourceLink.GitHub to 10.0.401 For `net10.0` projects the .NET 10 SDK defaults `NuGetAuditMode` to `all`, so restore now audits transitive packages and warns NU1902 for Microsoft.Build.Tasks.Git 10.0.300 (GHSA-23fw-v26w-5fgq, CVE-2026-62900, affected 10.0.300-10.0.301, patched in 10.0.303). 10.0.401 matches the SDK pinned in `global.json`. The package is build-only (`PrivateAssets=all`) and does not reach consumers. Co-Authored-By: Claude Opus 5.5 --- Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Directory.Packages.props b/Directory.Packages.props index a110557f..eed22740 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -24,7 +24,7 @@ - + From c2a24c85bb040f4ffb22cc1c12adc19042d351b0 Mon Sep 17 00:00:00 2001 From: XperiAndri Date: Fri, 2 Oct 2026 23:00:48 +0200 Subject: [PATCH 4/4] docs: keep the Unreleased changelog entry consumer-facing `updateChangelog` copies the Unreleased items verbatim into the release entry, the NuGet release notes and the GitHub release, so a replay of the FAKE `UpdateChangelog` target for 2.0.0 published "the next release is a major version (2.0.0)" inside the 2.0.0 entry itself. The breaking-change item now reads correctly both before and after the release. The `System.Linq.Async` item is dropped: the pin never reached any restore graph or the package, so consumers see no change, and the changelog lists no repository-only chores in earlier releases either (SDK migration, transitive pinning, tool updates). The commit that removed the pin keeps the explanation. Co-Authored-By: Claude Opus 5.5 --- CHANGELOG.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index dc284fc4..2944591f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,9 +8,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] ### Changed -* BREAKING: the package targets `net10.0` only; `net8.0` is no longer supported, so the next release is a major version (2.0.0) +* BREAKING: the package targets `net10.0` only and no longer supports `net8.0`, which makes this a major release * `Microsoft.Azure.Cosmos` updated from 3.60.0 to 3.62.0, which becomes the minimum version for consumers. Its release notes list a breaking change of their own: thin client mode is enabled by default and does not support resource-token authentication (opt out with `AZURE_COSMOS_THIN_CLIENT_ENABLED=false`) -* Removed the unused `System.Linq.Async` central package version pin: no project referenced the package directly or transitively, and on `net10.0` `System.Linq.AsyncEnumerable` is part of the framework ## [1.2.0] - 2026-10-01