Skip to content

v1.1.0

Choose a tag to compare

@vadyaravadim vadyaravadim released this 17 Jul 21:55

Reliability release: every finding from a deep code review of the initial version, fixed.

Fixed

  • bcdedit failures were reported as success. PowerShell 5.1 never throws on a native command's nonzero exit code, so a locked or corrupt BCD store still printed [OK] and "REBOOT REQUIRED". All bcdedit calls (apply, -Undo, BCD export) now check the exit code and surface the actual error.
  • -Undo chain never progressed past the newest snapshot. The timer_undo_*.json filter also matched already-applied *.applied.json files, so repeated -Undo kept re-applying the same file. Applied files are now excluded and snapshots sort by their name stamp.
  • Holder task could bind to the wrong user. When a standard user elevated with a separate admin account, the logon trigger and principal were created for the admin. The pre-elevation user is now forwarded through the relaunch and the task gets an explicit Interactive principal.
  • Re-selecting the holder tweak silently destroyed an existing task. A pre-existing task's XML is now saved in the undo file, and -Undo restores the previous definition instead of just deleting the task.
  • Localized BCD values could break undo. Recognized localized Yes/No tokens are canonicalized before being stored (bcdedit /set only accepts invariant tokens); unrecognized values are shown verbatim in the grid instead of masquerading as "default".
  • Windows PowerShell 5.1 misread the script. Saved as UTF-8 with BOM so the non-ASCII regex tokens parse correctly under powershell.exe.

Improved

  • After each -Undo the script reports how many older undo files remain.
  • The -Hold task re-asserts the resolution request hourly (Windows 11 coalesces requests from background processes) and the status output flags when the holder has no system-wide effect yet.
  • System state is re-read after the tweak grid closes, so the undo file records the actual pre-change values.
  • Per-tweak backup/undo/apply logic now lives in a single definition table - one place to extend, nothing to drift apart.