Repository navigation
SysManager 1.52.83
What's new for you
Cancelling an Ookla speed test while it's still downloading the test tool now shows a clean "Cancelled" instead of a confusing error message. A couple of edge cases where cancelling could leave a stray helper process or surface the wrong message have also been closed.
[1.52.83] - 2026-07-10
Fixed
- Cancelling an Ookla speed test during the first-run CLI download was misreported as an error instead of "Cancelled".
RunOoklaAsyncwrapped the prepare phase (EnsureOoklaAsync— download, extract, signature-verify) in a blanketcatch (Exception)that re-threw everything asInvalidOperationException("Could not prepare Ookla CLI: …"). BecauseOperationCanceledExceptionderives fromException, a user cancel during the download/extract was converted into that error type, bypassing the ViewModel's dedicatedcatch (OperationCanceledException) { OoklaStatus = "Cancelled"; }handler — the user sawError: Could not prepare Ookla CLI: A task was canceled.for a clean cancel. Cancellation now propagates untouched when the caller's token is signalled (anOperationCanceledExceptionwithout the token signalled — HttpClient's internal 2-minute timeout — is reported as a truthful "download timed out" error), and the wrapping catch carries awhen (ex is not OperationCanceledException)filter so cancellation can never be swallowed again. - A failed cancel-kill of
speedtest.execould mask the cancellation and escape as an unhandled error. The cancel path killed the child withproc.Kill(entireProcessTree: true)but only caughtInvalidOperationException.Kill(entireProcessTree: true)also throwsWin32Exception(process access-denied/terminating) andAggregateException(a descendant couldn't be terminated) — either one propagated instead of the intendedthrow;, so the originalOperationCanceledExceptionwas lost and an exception type the caller doesn't handle escapedRunOoklaAsyncentirely. Now uses the same three-exception filter asPowerShellRunner's cancel-kill (InvalidOperationException or Win32Exception or AggregateException). The analogousschtaskstimeout-kill inStartupService.SetTaskSchedulerEnabledAsynchad the same gap — aWin32ExceptionfromKill()escaped to the outer catch, which mislabeled the timeout as "schtasks not available"; it now uses the same filter and reports the truthful "timed out" status.
Verify the download
Get-FileHash .\SysManager-v1.52.83.exe -Algorithm SHA256Expected SHA256: FACBFA56E755B3F20AA03954FBE4A11B0BE9B5970A9D591548C87AD25F34A6F7