Skip to content

v1.6.0

Choose a tag to compare

@SamWylde SamWylde released this 08 Mar 21:58
· 6 commits to main since this release

What's Changed

Critical Bug Fixes

  • Fix process output deadlocks — ServiceInstaller and StartupTaskManager now use async stdout/stderr reads before WaitForExit, preventing deadlocks when pipe buffers fill
  • Fix unread redirected streams — RestoreManager.RunPowerCfg no longer redirects streams it doesn't read
  • Fix legal notice backup/restore — backup and restore now use the correct registry hive (Policies\System) matching where setup actually clears the values, with migration for existing backups
  • Fix service buttons stuck disabled — service Start/Stop/Restart buttons no longer remain permanently disabled after any operation completes
  • Fix locale-dependent powercfg parsing — compliance checks and settings backup now use position-based hex parsing instead of matching English labels, working correctly on all Windows language packs

Robustness Improvements

  • Cross-process settings safety — AppSettings.Save() uses a named mutex with proper timeout handling; writes are skipped (not corrupted) if the lock can't be acquired
  • Corrupt settings preservation — corrupt settings.json is preserved as .corrupt for diagnostics instead of being silently replaced with defaults
  • DPAPI password protection — saved encrypted passwords are no longer erased when DPAPI decryption fails (e.g., different user profile context)
  • Console redirection race fix — timer-triggered update checks are skipped while compliance checks hold Console.Out/Error redirected
  • Public desktop shortcut — desktop shortcut now uses the all-users desktop, preventing mismatch when setup runs under a different admin account
  • Startup task user warning — warns when the process user doesn't match the configured autologon user

Code Quality

  • Extracted shared ConsoleOutput helper (deduplicated from 6 files)
  • Extracted shared IsVirtualAdapter method (deduplicated from 3 files)
  • Extracted shared IsRunningAsAdmin and FormatBytes utilities
  • All configurator failure counters are now [ThreadStatic] for thread safety
  • Added using statements for disposable StringWriter/TeeTextWriter
  • New Helpers.ParsePowerCfgSettingValues for locale-independent power setting parsing

Full Changelog: v1.5.2...v1.6.0