Releases: vxkShelby/portableFixer
Release list
v1.11.4
Fix
- Diagnostics for the still-unresolved self-update-silently-fails issue - the update swap script's
powershell.exeprocess is now spawned with its stdout/stderr redirected to%TEMP%\PortableFixUpdate\popen_launch_<pid>.log, created by the app itself before launch (not by the script's own first line). Previously, since the process runs fully detached (no console, no inherited std handles), any startup failure had nowhere to go and was silently lost - this was actively blocking diagnosis of a real, reproduced case where the update process gets created but disappears within ~1-2 seconds without a trace in any Windows log (Job Object breakaway, AppLocker, WDAC, ASR, Defender, and GPO execution policy have all been ruled out on the affected machine). No behavior change for updates that already work.
Full history since v1.11.3: see the commit log.
v1.11.3
New
- RAM usage report - shows total/used/free physical memory in MB.
- Trim unused process memory - forces every accessible process to release unused working-set memory back to the OS (inspired by Mem Reduct's "Empty working set" cleaning). Fully transient, no undo needed - nothing is permanently changed, memory is reclaimed by processes as needed.
Full history since v1.11.2: see the commit log.
v1.11.2
Fix
- Self-update could still pop a visible (or lingering) console window on relaunch - the update swap script relaunched via
PortableFix.cmd, which routes throughcmd.exe; on Windows 11 with Windows Terminal set as the default terminal app,-WindowStyle Hiddenon that relaunch wasn't reliably honored. The app now relaunchesPortableFix.exedirectly - no console in the path at all. - Suppressed a console window popped by restore-point creation (
restore_point.py), which fires before nearly every destructive/repair/security action. - Suppressed a console window from the update relaunch fallback path.
- Uninstaller list, winget update list, and uninstaller search now show a proper empty-state message instead of a blank list when there's nothing to show.
New
- Security audits (SAFE): local admin accounts, recently-created local accounts, accounts with non-expiring passwords, last Windows Update install date, suspicious
hostsfile entries, unusual scheduled tasks. - Hardening actions (MODERATE/REQUIRES_REBOOT): disable SMB1, disable RDP, enable all firewall profiles, disable autologon, enable LSA protection, restore SmartScreen default - all with undo where reversible.
- 7 new diagnostics (SAFE): Windows activation status, restore point list, uptime/fast-startup state, OS edition/EOL check, BitLocker status, TPM status, pagefile info.
- UX: confirmation prompt if you close the app during an active batch, free-space-delta and an "Open Undo Script" button in the batch summary,
Ctrl+A/F5shortcuts, visible keyboard focus indicators. - "Report a Bug" button linking straight to GitHub Issues.
Full history since v1.11.1: see the commit log.
v1.11.1
Fix
- Self-update could silently fail after clicking "restart to install" - the app would just close and never come back, with zero trace in any log. Root cause: the update-swap PowerShell script was spawned without
CREATE_BREAKAWAY_FROM_JOB, so on machines where the app runs inside a Windows Job Object (e.g. launched elevated via a desktop shortcut through the UAC broker), the swap script got killed the instant the app process exited - often before it ran a single line. The swap script now breaks away from any parent Job Object and survives.
Full history since v1.11.0: see the commit log.
v1.11.0
New
- Export diagnostics button (sysinfo panel) - zips up your Logs/Reports into one file you can attach to a bug report.
- Crash log: uncaught errors are now written to
Logs/crash.loginstead of vanishing silently (the app is built with--noconsole, so before this there was no trace of them at all).
Full history since v1.10.0: see the commit log.
v1.10.0
New
Closing the gap between the shipped v1.8.0 redesign and the approved mockup:
- Bundled Sora font (SemiBold/Bold, offline, no internet needed) for the topbar wordmark, card headings, and a bigger/bolder dashboard score number - Segoe UI made everything read as generic Windows chrome.
- Fixed invisible ghost buttons: "Ignorovat", "Vybrat vsetko", and the preset buttons had a transparent background that made them look like plain unstyled text against the dark card - now have a visible dark fill so they read as actual buttons.
Full history since v1.9.2: see the commit log.
v1.9.2
Fixed
- The actual root cause of the broken in-app update-and-restart: the update swap script relaunched the app unconditionally, even when the old process hadn't exited yet. That spawned a second instance which immediately lost to the single-instance lock added in v1.6.0 and exited silently - looking exactly like "clicked restart, nothing happened, still the old version." The relaunch is now skipped in that case (the old process is already the running instance, nothing needs to be spawned), and the wait for the old process to exit was widened from 15s to 30s for slower machines/antivirus scanning.
Full history since v1.9.1: see the commit log.
v1.9.1
⚠️ In-app auto-update can silently fail in this version - it may say it's restarting but never come back, leaving you on the old version with no visible error. Fixed in v1.9.2 - download it manually below if in-app update doesn't bring you back.
Fixed
- In-app update-and-restart could silently fail ("asks for restart, doesn't restart, still old version after manually restarting"): the winget panel's background scan/update threads were tracked on the wrong widget, so the app's shutdown logic didn't know to wait for them. If either was still running when you confirmed "restart to install update", the old process never actually exited - the update swap script gives up waiting after ~15s and relaunches the still-old version. Now properly tracked and waited on, so the swap can complete before relaunch.
Full history since v1.9.0: see the commit log.
v1.9.0
⚠️ In-app auto-update can silently fail in this version - it may say it's restarting but never come back, leaving you on the old version with no visible error. Fixed in v1.9.2 - download it manually below if in-app update doesn't bring you back.
New
- New app icon and topbar logo: redrawn as a single-tone cyan shield+wrench on dark navy to match the redesigned UI (the old icon was an unrelated blue/green combo).
Fixed
- Winget update "hang": a single winget upgrade call can legitimately take minutes with only a busy progress bar for feedback - added a ticking elapsed-seconds counter so it's visibly still alive.
- On timeout,
winget upgradewas killed but any installer/MSI child process it spawned kept running and could hold a file lock, causing repeated slowness on retry - now the whole process tree is killed viataskkill /F /T. - The winget panel's auto-check timer could fire mid-update and reset the in-progress row list out from under it - now skipped while an update is running.
- The v1.8.0 pill-rounding redesign didn't actually render rounded on a real run - the app never set Qt's Fusion style, so the native Windows style silently ignored/misrendered the QSS
border-radius/gradients. Forced Fusion so the stylesheet renders as designed.
Full history since v1.8.0: see the commit log.
v1.8.0
⚠️ In-app auto-update can silently fail in this version - it may say it's restarting but never come back, leaving you on the old version with no visible error. Fixed in v1.9.2 - download it manually below if in-app update doesn't bring you back.
New
Rounded pill UI redesign (Dashboard, Winget, Uninstaller), modeled on Ashampoo WinOptimizer / IObit-style utility apps:
- Cards, buttons, the category sidebar, search box, progress bar and badges moved from sharp/mixed corners to soft pill rounding.
- Sidebar's active item is now a full rounded highlight pill instead of a left-border accent.
- Dashboard tile counts became colored count-pill badges (green/orange by state) instead of inline colored text.
- Winget panel's status line is now a banner (neutral/orange by state) instead of a plain caption.
- Winget and uninstaller rows get a colored monogram avatar per app/program.
Full history since v1.7.0: see the commit log.