diff --git a/CHANGELOG.md b/CHANGELOG.md index ad4974d7..c63a8fe0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,10 @@ under [1.0.0](#100---2026-09-20) before upgrading. ## [Unreleased] +### Security + +- Pin repository builds to .NET SDK 10.0.403 and refresh implicit tool locks to 10.0.14 for the October 25 servicing fixes. + ### Added - Add protected `CheatEnginePlugin.BeginFailedEnableRollback()` so an `OnEnable` failure handler can close diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index e8b44e0e..07480dd5 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -6,9 +6,9 @@ focused, preserve existing patterns, and update documentation when behavior or p ## Prerequisites - Windows x64 -- .NET SDK 10.0.402 exactly. [`global.json`](global.json) sets `rollForward: disable`, because the NuGet lock files +- .NET SDK 10.0.403 exactly. [`global.json`](global.json) sets `rollForward: disable`, because the NuGet lock files record the packages that the SDK adds implicitly. Install it with - `winget install Microsoft.DotNet.SDK.10 --version 10.0.402`. + `winget install Microsoft.DotNet.SDK.10 --version 10.0.403`. - PowerShell 7 (`pwsh`): every workflow step runs in it (`defaults.run.shell: pwsh`); useful for rehearsing a CI step locally. - Git diff --git a/README.md b/README.md index f8294556..3198cb01 100644 --- a/README.md +++ b/README.md @@ -23,7 +23,7 @@ an independent project and is not affiliated with Cheat Engine. | Requirement | Supported version | |---------------|------------------------------------------------------------------------------------------------------------------------| -| .NET SDK | 10.0.401 or later to build a plugin; exactly 10.0.402 to build this repository (`global.json`, `rollForward: disable`) | +| .NET SDK | 10.0.401 or later to build a plugin; exactly 10.0.403 to build this repository (`global.json`, `rollForward: disable`) | | .NET runtimes | .NET 10 `Microsoft.NETCore.App`, `Microsoft.WindowsDesktop.App`, and `Microsoft.AspNetCore.App` | | Cheat Engine | 7.7 | | Platform | Windows x64 | diff --git a/RELEASING.md b/RELEASING.md index f336a205..c89b26a3 100644 --- a/RELEASING.md +++ b/RELEASING.md @@ -120,7 +120,7 @@ releases were disabled. 3. **API compatibility.** Every pack validates `lib/net10.0` against the published 1.0.0 package, and `src/CheatEngine.SDK/CompatibilitySuppressions.xml` lists exactly the intentional breaks; nothing else may differ. Every suppressed break has a `### Changed`, `### Removed` or `### Security` entry in the version's section. -4. **Local validation** from the repository root, with .NET SDK 10.0.402: +4. **Local validation** from the repository root, with .NET SDK 10.0.403: ```powershell dotnet restore CheatEngine.SDK.slnx --locked-mode diff --git a/global.json b/global.json index c879e591..2434f4ab 100644 --- a/global.json +++ b/global.json @@ -1,9 +1,9 @@ { "sdk": { - "version": "10.0.402", + "version": "10.0.403", "rollForward": "disable", "allowPrerelease": false, - "errorMessage": "CheatEngine.SDK builds only with .NET SDK 10.0.402 exactly (global.json rollForward: disable, NuGet lock files). Install it with: winget install Microsoft.DotNet.SDK.10 --version 10.0.402" + "errorMessage": "CheatEngine.SDK builds only with .NET SDK 10.0.403 exactly (global.json rollForward: disable, NuGet lock files). Install it with: winget install Microsoft.DotNet.SDK.10 --version 10.0.403" }, "test": { "runner": "Microsoft.Testing.Platform" diff --git a/libs/CheatEngine.SDK.Abi/packages.lock.json b/libs/CheatEngine.SDK.Abi/packages.lock.json index 30b7a2ac..ba166321 100644 --- a/libs/CheatEngine.SDK.Abi/packages.lock.json +++ b/libs/CheatEngine.SDK.Abi/packages.lock.json @@ -22,9 +22,9 @@ }, "Microsoft.NET.ILLink.Tasks": { "type": "Direct", - "requested": "[10.0.13, )", - "resolved": "10.0.13", - "contentHash": "40yrBMsLEcjixBR4G+FiUaBPvxXIPSKJ2OgSrbOZcmSDBda4Sb0k7BWrfDpIvn3IvvDzwOL/tEPa6gDQfh6aRw==" + "requested": "[10.0.14, )", + "resolved": "10.0.14", + "contentHash": "YlTamXppEQls6DYWt7RdUuwWDb0lyw/vXCaGeQpLCpsLmfwGuCkOz/vIGgMTV7ECsJcavkCOkxZXv9s8rdAHkQ==" }, "MinVer": { "type": "Direct", diff --git a/libs/CheatEngine.SDK.Annotations/packages.lock.json b/libs/CheatEngine.SDK.Annotations/packages.lock.json index 30b7a2ac..ba166321 100644 --- a/libs/CheatEngine.SDK.Annotations/packages.lock.json +++ b/libs/CheatEngine.SDK.Annotations/packages.lock.json @@ -22,9 +22,9 @@ }, "Microsoft.NET.ILLink.Tasks": { "type": "Direct", - "requested": "[10.0.13, )", - "resolved": "10.0.13", - "contentHash": "40yrBMsLEcjixBR4G+FiUaBPvxXIPSKJ2OgSrbOZcmSDBda4Sb0k7BWrfDpIvn3IvvDzwOL/tEPa6gDQfh6aRw==" + "requested": "[10.0.14, )", + "resolved": "10.0.14", + "contentHash": "YlTamXppEQls6DYWt7RdUuwWDb0lyw/vXCaGeQpLCpsLmfwGuCkOz/vIGgMTV7ECsJcavkCOkxZXv9s8rdAHkQ==" }, "MinVer": { "type": "Direct", diff --git a/libs/CheatEngine.SDK.Engine/packages.lock.json b/libs/CheatEngine.SDK.Engine/packages.lock.json index dc1666ad..0de106cc 100644 --- a/libs/CheatEngine.SDK.Engine/packages.lock.json +++ b/libs/CheatEngine.SDK.Engine/packages.lock.json @@ -22,9 +22,9 @@ }, "Microsoft.NET.ILLink.Tasks": { "type": "Direct", - "requested": "[10.0.13, )", - "resolved": "10.0.13", - "contentHash": "40yrBMsLEcjixBR4G+FiUaBPvxXIPSKJ2OgSrbOZcmSDBda4Sb0k7BWrfDpIvn3IvvDzwOL/tEPa6gDQfh6aRw==" + "requested": "[10.0.14, )", + "resolved": "10.0.14", + "contentHash": "YlTamXppEQls6DYWt7RdUuwWDb0lyw/vXCaGeQpLCpsLmfwGuCkOz/vIGgMTV7ECsJcavkCOkxZXv9s8rdAHkQ==" }, "MinVer": { "type": "Direct", diff --git a/libs/CheatEngine.SDK.Hosting/packages.lock.json b/libs/CheatEngine.SDK.Hosting/packages.lock.json index b0f5f187..c943a76d 100644 --- a/libs/CheatEngine.SDK.Hosting/packages.lock.json +++ b/libs/CheatEngine.SDK.Hosting/packages.lock.json @@ -22,9 +22,9 @@ }, "Microsoft.NET.ILLink.Tasks": { "type": "Direct", - "requested": "[10.0.13, )", - "resolved": "10.0.13", - "contentHash": "40yrBMsLEcjixBR4G+FiUaBPvxXIPSKJ2OgSrbOZcmSDBda4Sb0k7BWrfDpIvn3IvvDzwOL/tEPa6gDQfh6aRw==" + "requested": "[10.0.14, )", + "resolved": "10.0.14", + "contentHash": "YlTamXppEQls6DYWt7RdUuwWDb0lyw/vXCaGeQpLCpsLmfwGuCkOz/vIGgMTV7ECsJcavkCOkxZXv9s8rdAHkQ==" }, "MinVer": { "type": "Direct", diff --git a/libs/CheatEngine.SDK.Lua.Interop/packages.lock.json b/libs/CheatEngine.SDK.Lua.Interop/packages.lock.json index 30b7a2ac..ba166321 100644 --- a/libs/CheatEngine.SDK.Lua.Interop/packages.lock.json +++ b/libs/CheatEngine.SDK.Lua.Interop/packages.lock.json @@ -22,9 +22,9 @@ }, "Microsoft.NET.ILLink.Tasks": { "type": "Direct", - "requested": "[10.0.13, )", - "resolved": "10.0.13", - "contentHash": "40yrBMsLEcjixBR4G+FiUaBPvxXIPSKJ2OgSrbOZcmSDBda4Sb0k7BWrfDpIvn3IvvDzwOL/tEPa6gDQfh6aRw==" + "requested": "[10.0.14, )", + "resolved": "10.0.14", + "contentHash": "YlTamXppEQls6DYWt7RdUuwWDb0lyw/vXCaGeQpLCpsLmfwGuCkOz/vIGgMTV7ECsJcavkCOkxZXv9s8rdAHkQ==" }, "MinVer": { "type": "Direct", diff --git a/libs/CheatEngine.SDK.Lua/packages.lock.json b/libs/CheatEngine.SDK.Lua/packages.lock.json index fddde99f..9349ac40 100644 --- a/libs/CheatEngine.SDK.Lua/packages.lock.json +++ b/libs/CheatEngine.SDK.Lua/packages.lock.json @@ -22,9 +22,9 @@ }, "Microsoft.NET.ILLink.Tasks": { "type": "Direct", - "requested": "[10.0.13, )", - "resolved": "10.0.13", - "contentHash": "40yrBMsLEcjixBR4G+FiUaBPvxXIPSKJ2OgSrbOZcmSDBda4Sb0k7BWrfDpIvn3IvvDzwOL/tEPa6gDQfh6aRw==" + "requested": "[10.0.14, )", + "resolved": "10.0.14", + "contentHash": "YlTamXppEQls6DYWt7RdUuwWDb0lyw/vXCaGeQpLCpsLmfwGuCkOz/vIGgMTV7ECsJcavkCOkxZXv9s8rdAHkQ==" }, "MinVer": { "type": "Direct", diff --git a/src/CheatEngine.SDK/packages.lock.json b/src/CheatEngine.SDK/packages.lock.json index c7eb64b8..7280f623 100644 --- a/src/CheatEngine.SDK/packages.lock.json +++ b/src/CheatEngine.SDK/packages.lock.json @@ -16,9 +16,9 @@ }, "Microsoft.NET.ILLink.Tasks": { "type": "Direct", - "requested": "[10.0.13, )", - "resolved": "10.0.13", - "contentHash": "40yrBMsLEcjixBR4G+FiUaBPvxXIPSKJ2OgSrbOZcmSDBda4Sb0k7BWrfDpIvn3IvvDzwOL/tEPa6gDQfh6aRw==" + "requested": "[10.0.14, )", + "resolved": "10.0.14", + "contentHash": "YlTamXppEQls6DYWt7RdUuwWDb0lyw/vXCaGeQpLCpsLmfwGuCkOz/vIGgMTV7ECsJcavkCOkxZXv9s8rdAHkQ==" }, "Microsoft.Sbom.Targets": { "type": "Direct", diff --git a/tests/CheatEngine.SDK.AotProbe/packages.lock.json b/tests/CheatEngine.SDK.AotProbe/packages.lock.json index df8ab353..458d0ec7 100644 --- a/tests/CheatEngine.SDK.AotProbe/packages.lock.json +++ b/tests/CheatEngine.SDK.AotProbe/packages.lock.json @@ -10,15 +10,15 @@ }, "Microsoft.DotNet.ILCompiler": { "type": "Direct", - "requested": "[10.0.13, )", - "resolved": "10.0.13", - "contentHash": "MnT222WlxhelguLZTQx9soBHKW7TeY6A9YUwVaprjUd+ARlhLAkfsXGFNX9w6kRq89/yxUcAQ/lzvmgndSFfOw==" + "requested": "[10.0.14, )", + "resolved": "10.0.14", + "contentHash": "CDQ/+XRT1JT/0u87j9exR1AociehKUzxae4KCOWxCQ1PIKbYS0F8ovxaCrqRlkylGmbhywKxV/zbbrEhWa5NXg==" }, "Microsoft.NET.ILLink.Tasks": { "type": "Direct", - "requested": "[10.0.13, )", - "resolved": "10.0.13", - "contentHash": "40yrBMsLEcjixBR4G+FiUaBPvxXIPSKJ2OgSrbOZcmSDBda4Sb0k7BWrfDpIvn3IvvDzwOL/tEPa6gDQfh6aRw==" + "requested": "[10.0.14, )", + "resolved": "10.0.14", + "contentHash": "YlTamXppEQls6DYWt7RdUuwWDb0lyw/vXCaGeQpLCpsLmfwGuCkOz/vIGgMTV7ECsJcavkCOkxZXv9s8rdAHkQ==" }, "MinVer": { "type": "Direct", @@ -63,17 +63,17 @@ "net10.0/win-x64": { "Microsoft.DotNet.ILCompiler": { "type": "Direct", - "requested": "[10.0.13, )", - "resolved": "10.0.13", - "contentHash": "MnT222WlxhelguLZTQx9soBHKW7TeY6A9YUwVaprjUd+ARlhLAkfsXGFNX9w6kRq89/yxUcAQ/lzvmgndSFfOw==", + "requested": "[10.0.14, )", + "resolved": "10.0.14", + "contentHash": "CDQ/+XRT1JT/0u87j9exR1AociehKUzxae4KCOWxCQ1PIKbYS0F8ovxaCrqRlkylGmbhywKxV/zbbrEhWa5NXg==", "dependencies": { - "runtime.win-x64.Microsoft.DotNet.ILCompiler": "10.0.13" + "runtime.win-x64.Microsoft.DotNet.ILCompiler": "10.0.14" } }, "runtime.win-x64.Microsoft.DotNet.ILCompiler": { "type": "Transitive", - "resolved": "10.0.13", - "contentHash": "L85cXCLA3BMnFyf6xtFczYVstkmMqlJk4pP8cpsvz86V6Gqn885K9rg+aJdoYGCEF7I01ptCYcwujtMmqkezsA==" + "resolved": "10.0.14", + "contentHash": "B28xsyrO3PRFGL9yd1lLWdX3/wATFkaxPFM3VmGOFG8pfx7jDeb1Yz09v6n+z0jNEPAlQLqOx2noOXw8aytYNw==" } } } diff --git a/tests/CheatEngine.SDK.LivePlugin/README.md b/tests/CheatEngine.SDK.LivePlugin/README.md index 8b7f2865..ca8ec497 100644 --- a/tests/CheatEngine.SDK.LivePlugin/README.md +++ b/tests/CheatEngine.SDK.LivePlugin/README.md @@ -58,7 +58,7 @@ Prerequisites: | Need | Detail | |----------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | Platform | Windows x64 with the pinned CE `7.7.0.10621` host (verify SHA-256 `9727076DA50924E4A097B49A02155E4B34759269C3017FF31375364B8826EB4D`) and Sysinternals [DebugView](https://learn.microsoft.com/sysinternals/downloads/debugview) | -| SDK | .NET SDK 10.0.402 exactly, the version `global.json` pins with `rollForward: disable` | +| SDK | .NET SDK 10.0.403 exactly, the version `global.json` pins with `rollForward: disable` | | Runtime policy | The inspected CE binary uses the `nethost`/`hostfxr` route. The workspace's .NET 10 `ce.runtimeconfig.json` is a local modification, not an installer baseline. Preserve the controlled host's existing policy and record it with the transcript, including its observed hash; do not treat this guide as permission to edit an installed CE runtime configuration. Microsoft documents `nethost`/`hostfxr` for framework-dependent components. | 1. Build the plugin with `dotnet build tests/CheatEngine.SDK.LivePlugin/CheatEngine.SDK.LivePlugin.csproj -c Release`. diff --git a/tests/CheatEngine.SDK.NativeAotLibraryProbe/packages.lock.json b/tests/CheatEngine.SDK.NativeAotLibraryProbe/packages.lock.json index f83b7e98..f192458e 100644 --- a/tests/CheatEngine.SDK.NativeAotLibraryProbe/packages.lock.json +++ b/tests/CheatEngine.SDK.NativeAotLibraryProbe/packages.lock.json @@ -10,15 +10,15 @@ }, "Microsoft.DotNet.ILCompiler": { "type": "Direct", - "requested": "[10.0.13, )", - "resolved": "10.0.13", - "contentHash": "MnT222WlxhelguLZTQx9soBHKW7TeY6A9YUwVaprjUd+ARlhLAkfsXGFNX9w6kRq89/yxUcAQ/lzvmgndSFfOw==" + "requested": "[10.0.14, )", + "resolved": "10.0.14", + "contentHash": "CDQ/+XRT1JT/0u87j9exR1AociehKUzxae4KCOWxCQ1PIKbYS0F8ovxaCrqRlkylGmbhywKxV/zbbrEhWa5NXg==" }, "Microsoft.NET.ILLink.Tasks": { "type": "Direct", - "requested": "[10.0.13, )", - "resolved": "10.0.13", - "contentHash": "40yrBMsLEcjixBR4G+FiUaBPvxXIPSKJ2OgSrbOZcmSDBda4Sb0k7BWrfDpIvn3IvvDzwOL/tEPa6gDQfh6aRw==" + "requested": "[10.0.14, )", + "resolved": "10.0.14", + "contentHash": "YlTamXppEQls6DYWt7RdUuwWDb0lyw/vXCaGeQpLCpsLmfwGuCkOz/vIGgMTV7ECsJcavkCOkxZXv9s8rdAHkQ==" }, "MinVer": { "type": "Direct", @@ -30,17 +30,17 @@ "net10.0/win-x64": { "Microsoft.DotNet.ILCompiler": { "type": "Direct", - "requested": "[10.0.13, )", - "resolved": "10.0.13", - "contentHash": "MnT222WlxhelguLZTQx9soBHKW7TeY6A9YUwVaprjUd+ARlhLAkfsXGFNX9w6kRq89/yxUcAQ/lzvmgndSFfOw==", + "requested": "[10.0.14, )", + "resolved": "10.0.14", + "contentHash": "CDQ/+XRT1JT/0u87j9exR1AociehKUzxae4KCOWxCQ1PIKbYS0F8ovxaCrqRlkylGmbhywKxV/zbbrEhWa5NXg==", "dependencies": { - "runtime.win-x64.Microsoft.DotNet.ILCompiler": "10.0.13" + "runtime.win-x64.Microsoft.DotNet.ILCompiler": "10.0.14" } }, "runtime.win-x64.Microsoft.DotNet.ILCompiler": { "type": "Transitive", - "resolved": "10.0.13", - "contentHash": "L85cXCLA3BMnFyf6xtFczYVstkmMqlJk4pP8cpsvz86V6Gqn885K9rg+aJdoYGCEF7I01ptCYcwujtMmqkezsA==" + "resolved": "10.0.14", + "contentHash": "B28xsyrO3PRFGL9yd1lLWdX3/wATFkaxPFM3VmGOFG8pfx7jDeb1Yz09v6n+z0jNEPAlQLqOx2noOXw8aytYNw==" } } } diff --git a/tests/CheatEngine.SDK.QualificationTarget/packages.lock.json b/tests/CheatEngine.SDK.QualificationTarget/packages.lock.json index 1b7c83ca..d472fdc0 100644 --- a/tests/CheatEngine.SDK.QualificationTarget/packages.lock.json +++ b/tests/CheatEngine.SDK.QualificationTarget/packages.lock.json @@ -10,15 +10,15 @@ }, "Microsoft.DotNet.ILCompiler": { "type": "Direct", - "requested": "[10.0.13, )", - "resolved": "10.0.13", - "contentHash": "MnT222WlxhelguLZTQx9soBHKW7TeY6A9YUwVaprjUd+ARlhLAkfsXGFNX9w6kRq89/yxUcAQ/lzvmgndSFfOw==" + "requested": "[10.0.14, )", + "resolved": "10.0.14", + "contentHash": "CDQ/+XRT1JT/0u87j9exR1AociehKUzxae4KCOWxCQ1PIKbYS0F8ovxaCrqRlkylGmbhywKxV/zbbrEhWa5NXg==" }, "Microsoft.NET.ILLink.Tasks": { "type": "Direct", - "requested": "[10.0.13, )", - "resolved": "10.0.13", - "contentHash": "40yrBMsLEcjixBR4G+FiUaBPvxXIPSKJ2OgSrbOZcmSDBda4Sb0k7BWrfDpIvn3IvvDzwOL/tEPa6gDQfh6aRw==" + "requested": "[10.0.14, )", + "resolved": "10.0.14", + "contentHash": "YlTamXppEQls6DYWt7RdUuwWDb0lyw/vXCaGeQpLCpsLmfwGuCkOz/vIGgMTV7ECsJcavkCOkxZXv9s8rdAHkQ==" }, "MinVer": { "type": "Direct", @@ -30,33 +30,33 @@ "net10.0/win-x64": { "Microsoft.DotNet.ILCompiler": { "type": "Direct", - "requested": "[10.0.13, )", - "resolved": "10.0.13", - "contentHash": "MnT222WlxhelguLZTQx9soBHKW7TeY6A9YUwVaprjUd+ARlhLAkfsXGFNX9w6kRq89/yxUcAQ/lzvmgndSFfOw==", + "requested": "[10.0.14, )", + "resolved": "10.0.14", + "contentHash": "CDQ/+XRT1JT/0u87j9exR1AociehKUzxae4KCOWxCQ1PIKbYS0F8ovxaCrqRlkylGmbhywKxV/zbbrEhWa5NXg==", "dependencies": { - "runtime.win-x64.Microsoft.DotNet.ILCompiler": "10.0.13" + "runtime.win-x64.Microsoft.DotNet.ILCompiler": "10.0.14" } }, "runtime.win-x64.Microsoft.DotNet.ILCompiler": { "type": "Transitive", - "resolved": "10.0.13", - "contentHash": "L85cXCLA3BMnFyf6xtFczYVstkmMqlJk4pP8cpsvz86V6Gqn885K9rg+aJdoYGCEF7I01ptCYcwujtMmqkezsA==" + "resolved": "10.0.14", + "contentHash": "B28xsyrO3PRFGL9yd1lLWdX3/wATFkaxPFM3VmGOFG8pfx7jDeb1Yz09v6n+z0jNEPAlQLqOx2noOXw8aytYNw==" } }, "net10.0/win-x86": { "Microsoft.DotNet.ILCompiler": { "type": "Direct", - "requested": "[10.0.13, )", - "resolved": "10.0.13", - "contentHash": "MnT222WlxhelguLZTQx9soBHKW7TeY6A9YUwVaprjUd+ARlhLAkfsXGFNX9w6kRq89/yxUcAQ/lzvmgndSFfOw==", + "requested": "[10.0.14, )", + "resolved": "10.0.14", + "contentHash": "CDQ/+XRT1JT/0u87j9exR1AociehKUzxae4KCOWxCQ1PIKbYS0F8ovxaCrqRlkylGmbhywKxV/zbbrEhWa5NXg==", "dependencies": { - "runtime.win-x86.Microsoft.DotNet.ILCompiler": "10.0.13" + "runtime.win-x86.Microsoft.DotNet.ILCompiler": "10.0.14" } }, "runtime.win-x86.Microsoft.DotNet.ILCompiler": { "type": "Transitive", - "resolved": "10.0.13", - "contentHash": "8gFPOOEv+SJrAqztssuCg8lqA/WP+HWfTqvvsodgWAj9FyCIK5iE1q0JhjksuhfPf27PeCqKGPH87B+uzD1FIQ==" + "resolved": "10.0.14", + "contentHash": "hPZc167K3fm5uYPXf58IiczPz6/yJVXOVn8bUmVJQlgLSlwuA+lhbc5phF6+1SqA7uLWkOi/2q0KW1TmRF/hfA==" } } }