StreamShield v0.1.2
What's Fixed
This release addresses 15 bugs found through a critical deep audit, including a high-visibility ghost window issue.
🔴 Ghost Window Fix (New)
- Blank white windows appearing after Shield All / Clear - The injected DLL was processing ALL windows (including hidden/internal background windows) and force-redrawing them with
SetWindowPos(SWP_FRAMECHANGED)+RedrawWindow(RDW_UPDATENOW), causing hidden windows to manifest as blank white rectangles - Added
IsWindowVisiblecheck in DLL enum callback - hidden windows are now skipped - Affinity is checked before setting - if already at the desired value, skip entirely (no redundant redraws)
SetWindowPos/RedrawWindownow only called when affinity actually changes
🔴 Critical Fixes
- Affinity detection: Fixed
query_live_affinitymissing theWDA_MONITORfallback - windows shielded on older Win10 builds were showing as unshielded, causing continuous re-injection every 2s - Double-fire toggle: Clicking the toggle switch fired the shield twice (ON then OFF) due to both card click and checkbox onChange firing
- Batch shield race condition: Shield All / Clear fired all toggles concurrently without await, causing UI state flickering
- Triple-load on focus: Restoring from tray triggered 3-4 simultaneous window enumeration calls; now debounced
🟠 Reliability
- Validate
WriteProcessMemoryreturn value before remote thread creation - RAII wrapper for
CreateToolhelp32Snapshothandle IsWindow()validation before auto-reapply injection- Normalize exe names to lowercase in config (case-mismatch fix)
- Clean up stale DLL temp files from previous sessions
- Remove unnecessary
FreeLibrary(kernel32)call - Watchdog interval 2s → 5s (reduce redundant enumeration)
🟡 Visual
- Toast notifications use theme CSS variables (fixed white theme)
- Toast fade-out exit animation
Downloads
- MSI Installer - standard Windows installation
- NSIS Setup portable-style installer
- Standalone EXE - direct executable