| Modernise Common test tooling and coverage collection |
2026-09-14 |
2026-09-14 |
2026-09-14 |
Updated Microsoft.NET.Test.Sdk from 16.5.0 to 18.10.0, MSTest adapter and framework from 2.1.0 to 3.10.1, and coverlet collector from 1.2.0 to 10.0.1 with private-assets metadata. Replaced legacy exception assertions and corrected the TestContext property exposed by the newer analyzers. All 126 Common tests, 11 BusinessMgr Control tests, and 13 BusinessMgr Portal tests pass. The validation scripts now offer -CollectCoverage, which verifies non-empty Cobertura reports across Common and both BusinessMgr suites. |
| Remove redundant Microsoft.Win32.Registry package |
2026-09-10 |
2026-09-14 |
2026-09-14 |
Removed the direct 5.0.0 package reference from SacsStandardDbas; .NET 10 supplies the required registry APIs. Common and BusinessMgr restore, build, and all 126 Common, 11 Control, and 13 Portal tests pass. The NU1510 warning no longer appears. |
| Apply low-risk Common package patches and regression coverage |
2026-09-14 |
2026-09-14 |
2026-09-14 |
Updated Microsoft.Data.SqlClient from 5.2.2 to 5.2.3, Newtonsoft.Json from 13.0.3 to 13.0.4, and SixLabors.ImageSharp from 3.1.11 to 3.1.12. Added 15 in-memory tests covering image recognition, encoding and resizing; JSON serialization, parsing, dynamic access, SysId conversion and deep copying; and SQL/ODBC provider selection and command parameters. The Common solution builds with zero errors; all 126 Common tests, 11 BusinessMgr Control tests, and 13 BusinessMgr Portal tests pass. Existing warnings are unchanged. |
| Make asynchronous Process Base execution awaitable and retain state after a stop timeout |
2026-09-08 |
2026-09-08 |
2026-09-08 |
RunAsync() returns Task; StopProcessAsync() reports success and leaves active state owned by a worker that has not stopped. |
| Remove cancellation callbacks from the Process Base lifecycle lock |
2026-09-08 |
2026-09-08 |
2026-09-08 |
Cancellation and task-data disposal use separate synchronization; worker cleanup detaches state before disposal. |
| Add Process Base lifecycle tests |
2026-09-08 |
2026-09-08 |
2026-09-08 |
Five focused MSTest cases cover completion, duplicate starts, stop timeout retention, cooperative cancellation, and cancellation callback lock behavior. |
| Capture the pre-migration Common build and test baseline |
2026-09-10 |
2026-09-10 |
2026-09-10 |
Using SDK 10.0.401, dotnet restore SaCommonVS.sln and the full Debug solution build succeeded. The build produced 110 warnings and no errors; most are repeated MAUI API obsolescence warnings across four targets, plus NETSDK1202 for out-of-support MAUI 9 Android and NU1902 for the moderate-severity MailKit 4.13.0 vulnerability. SacsCoreUnitTests passed 94 of 94 tests. |
| Pin the Common .NET 10 SDK |
2026-09-10 |
2026-09-10 |
2026-09-10 |
Added global.json for SDK 10.0.401 with latestPatch roll-forward and prerelease SDKs disabled. |
Isolate SacsMobileXamarin from the supported Common build |
2026-09-10 |
2026-09-10 |
2026-09-10 |
Removed the project from SaCommonVS.sln while retaining all source. Added SaCommonVS.LegacyXamarin.sln and docs/legacy-xamarin.md for reference-only access. The project is outside the supported .NET 10 migration scope. |
| Prepare Common libraries for the coordinated .NET 10 migration |
2026-09-10 |
2026-09-10 |
2026-09-10 |
SacsStandardBase, SacsStandardDbas, SacsStandardProc, SacsCoreWeb, SacsStandardAccounts, and SacsCoreUnitTests now target net8.0;net10.0. The supported solution builds both targets with no errors; 94 of 94 tests pass on each target. BusinessMgr continues to build successfully on .NET 8 against the temporary compatible outputs. New .NET 10 warnings are tracked separately. |
| Complete the Common .NET 10 migration |
2026-09-10 |
2026-09-11 |
2026-09-11 |
Removed the temporary .NET 8 targets from all supported non-MAUI libraries and tests. The full supported solution restores and builds with zero errors, and 94 of 94 tests pass on .NET 10. BusinessMgr rebuilds successfully with 8 of 8 Control and 13 of 13 Portal tests passing; Sandtrap and Sandalwood build successfully for Windows and Android. The isolated Xamarin reference project remains unchanged on .NET 8. |
| Update vulnerable MailKit and MimeKit dependencies |
2026-09-10 |
2026-09-11 |
2026-09-12 |
Updated the direct MailKit dependency from 4.13.0 to 4.17.0, which resolves MimeKit 4.17.0. NuGet reports no vulnerable packages for SacsStandardBase; the Common solution builds with zero errors and 101 of 101 tests pass. BusinessMgr builds with 8 of 8 Control and 13 of 13 Portal tests passing; Sandtrap and Sandalwood build successfully for Windows and Android. |
| Upgrade NPOI and override its vulnerable cryptography dependency |
2026-09-12 |
2026-09-12 |
2026-09-12 |
Updated NPOI from 2.6.2 to Apache-2.0 version 2.7.6 and added an explicit System.Security.Cryptography.Xml 10.0.12 reference. Adapted nullable date and indexed-colour APIs without changing the public wrapper behavior. NuGet reports no vulnerable packages for SacsStandardProc; all 10 spreadsheet tests and all 111 Common tests pass. The Common solution and BusinessMgr build successfully, with 8 of 8 Control and 13 of 13 Portal tests passing. BusinessMgr's separate vulnerable cryptography dependency through ASP.NET Core Identity 2.3.1 remains tracked in that repository. |
| Automate Common and downstream validation |
2026-09-12 |
2026-09-12 |
2026-09-12 |
Added eng/validate.ps1 as the repository-owned validation entry point. It performs a serial Common build, focused and full tests, the NPOI package audit, diff and changed-file line-ending checks, and downstream BusinessMgr validation. The complete workflow passes. |