From 813847baf0a688aea209abb5581d662f24d0bb6b Mon Sep 17 00:00:00 2001 From: XperiAndri Date: Fri, 2 Oct 2026 23:49:23 +0200 Subject: [PATCH 1/4] chore!: target net10.0 Move the library, the tests and the FAKE build project from net8.0 to net10.0, the framework of the SDK already pinned in global.json (10.0.401), and update the README requirement to match. The commented analyzer block in Directory.Build.props keeps its intent with the new target framework condition. BREAKING CHANGE: the package targets net10.0 only; net8.0 consumers stay on the 1.x releases. Co-Authored-By: Claude Opus 5.5 --- CHANGELOG.md | 1 + Directory.Build.props | 2 +- README.md | 2 +- build/build.fsproj | 2 +- src/Cosmos/FSharp.Azure.Cosmos.fsproj | 2 +- tests/Cosmos.Tests/FSharp.Azure.Cosmos.Tests.fsproj | 2 +- 6 files changed, 6 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 265b40c2..72ef7bf1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] ### Changed +* BREAKING: the package targets `net10.0` only and no longer supports `net8.0`, which makes this a major release * BREAKING: `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`) ## [1.2.0] - 2026-10-01 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/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..1aae96f1 100644 --- a/build/build.fsproj +++ b/build/build.fsproj @@ -1,7 +1,7 @@  Exe - net8.0 + net10.0 3390;$(WarnOn) false 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 5aa801dc03aa169e84356a3ec5410f7053cfd6a2 Mon Sep 17 00:00:00 2001 From: XperiAndri Date: Sat, 3 Oct 2026 00:02:29 +0200 Subject: [PATCH 2/4] chore(deps): remove the redundant System.Linq.Async and System.Formats.Asn1 references The System.Linq.Async 6.0.0 pin had no PackageReference and never appeared in a restore graph; on net10.0 System.Linq.AsyncEnumerable is part of the framework, so the old package would only cause ambiguous calls if something brought it in. System.Formats.Asn1 was referenced by the build project alone. On net8.0 it lifted the System.Formats.Asn1 6.0.0 that System.Security.Cryptography.Pkcs 6.0.4 brings in; on net10.0 NuGet prunes that transitive package and restore reports NU1510 for the explicit reference. Co-Authored-By: Claude Opus 5.5 --- Directory.Packages.props | 2 -- build/build.fsproj | 1 - 2 files changed, 3 deletions(-) diff --git a/Directory.Packages.props b/Directory.Packages.props index 0294ae2d..a110557f 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -3,8 +3,6 @@ - - diff --git a/build/build.fsproj b/build/build.fsproj index 1aae96f1..8cef4291 100644 --- a/build/build.fsproj +++ b/build/build.fsproj @@ -35,6 +35,5 @@ - \ No newline at end of file From e15c84e606490eb4423c60c2a32989ecd046e18a Mon Sep 17 00:00:00 2001 From: XperiAndri Date: Fri, 2 Oct 2026 23:49:24 +0200 Subject: [PATCH 3/4] chore(security): update Microsoft.SourceLink.GitHub to 10.0.401 On net10.0 restore audits transitive packages and reports NU1902 for Microsoft.Build.Tasks.Git 10.0.300 (GHSA-23fw-v26w-5fgq, affected 10.0.300-10.0.301, patched in 10.0.303). 10.0.401 matches the SDK pinned in global.json. 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 ffbf909e28c612d0b64aac3319a07884b1bc8b5a Mon Sep 17 00:00:00 2001 From: XperiAndri Date: Sat, 3 Oct 2026 00:02:30 +0200 Subject: [PATCH 4/4] ci: install only the .NET 10 SDK in workflows and the dev container Every pinned dotnet tool (Fantomas, FsLangMCP, fsharp-analyzers, fsdocs, ReportGenerator) runs on the .NET 10 runtime alone: their packages target net10.0 or allow major roll-forward, which was checked on a dotnet root holding only Microsoft.NETCore.App 10.0.12. Nothing needs the .NET 8 or 9 SDKs any more. 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