Skip to content

SysManager 1.52.85

Choose a tag to compare

@github-actions github-actions released this 10 Jul 13:30
· 704 commits to main since this release
e5218fe

[1.52.85] - 2026-07-10

Fixed

  • Importing a config profile that omitted its Sections list crashed with an unhandled NullReferenceException. ConfigProfile.Sections was a non-nullable positional record parameter, but System.Text.Json does not enforce non-null on positional params — so any syntactically-valid profile JSON lacking a "Sections" property (an empty {}, a truncated export, or foreign/hand-edited JSON chosen in the Import dialog) deserialized Sections to null. ProfileViewModel.Import then called profile.Sections.Count, throwing an NRE that escaped the surrounding try/catch (which only caught IOException/UnauthorizedAccessException/NotSupportedException) unhandled on the UI thread. Sections is now a defaulted init property (= [], matching the CleanupResult.Errors / HealthScoreResult.Recommendations idiom), and ProfileService.Deserialize also normalizes a null list to empty (mirroring SettingsWatchdogService.LoadBaseline) so the import path can always enumerate it safely.
  • The PATH editor flagged every PATHEXT entry as a "missing directory", rendering the whole list in red. PATHEXT is a ;-separated list of file extensions (.COM;.EXE;.BAT;…), not directories, but EnvVariable.IsPathLike returned true for it and that single flag gated the editor's Directory.Exists() annotation — so each extension row was checked as a path (Directory.Exists(".COM") is false) and marked missing. Added a distinct IsDirectoryList (every path-like variable except PATHEXT) and gated the missing-directory annotation on it. PATHEXT still opens the reorderable list editor (IsPathLike is unchanged); its entries are simply no longer checked for directory existence.

Verify the download

Get-FileHash .\SysManager-v1.52.85.exe -Algorithm SHA256

Expected SHA256: 7968270A91FFD2AE46D327655EC12ACFD2045BD0BEA4FA007C8A59247E9BA711