Changelog

Recent technical changes, by date. For the long-form version of how the project got here — the V1 prototype, the V2 breadth push, the V3 physics rewrite, and the V4 UI rebuild — see the Milestones page.

V4.1 / 2.0.0 release polish (May 2026)

The ship-readiness pass for v2.0 on Steam and the Microsoft Store.

  • Steam release — OLED Guard Pro is now live on Steam (Steam App ID 4558060) alongside the existing Microsoft Store editions.
  • Single-instance enforcement — launching a second copy now raises the existing window instead of spawning a duplicate engine that fights for D3D capture resources.
  • Window placement persistence — the dashboard remembers its size, position, and maximised state across launches, validated against the current monitor layout so an unplugged display doesn't strand the window off-screen.
  • Morphological noise-gap filter is now the default in Auto Mode (was Off). Every factory preset ships with it on.
  • Per-profile Intensity override — App Profiles can now scale just the Intensity slider for one application without editing the preset itself.
  • Exe-claim collision UI — the App Profiles page surfaces the conflict inline if two profiles try to own the same executable, and rejects the save until resolved.
  • Browse... — native file dialog for picking an executable when the running-apps list and Steam library browser don't have what you want.
  • Occlusion-aware capture exclusion — registered app windows now contribute only their visible region to the exclusion mask, closing the app-gap behind a covering window.
  • Visibility-aware WDA exclude — the screen-capture-protection flag now toggles based on how much of the OLED Guard window is visible, eliminating the residual app-gap on fully-visible windows.
  • Overlay visibility floor (gamma 0.6) so detected HUDs land at a visible protection level instead of a near-invisible green-heatmap floor.
  • Settings.json .bak recovery — an unreadable settings file is now quarantined to settings.json.bak and logged, instead of silently resetting to defaults with no trail.
  • Tray balloon on close — first-of-session "still running in the tray" notification so users don't think the app quit when they hit the X.
  • app.manifest 2.0.0.0 — bumped version, added longPathAware, added the Windows 11 supportedOS GUID, opted into UTF-8 active code page.
  • engine.log from Log.Warn/Error — the bridge and engine's catch blocks now write structured entries to %LOCALAPPDATA%\OLEDGuard\engine.log instead of relying on Debug.WriteLine (which is stripped in Release).
  • CA2014 stackalloc-in-loop fix in the render hot path.
  • In-game tuning HUD (Ctrl+Shift+G) — an optional always-on-top compact overlay that exposes the live Auto-Mode reasoning, hot-bindable from the Hotkeys page.

V4 in flight (April 27 onwards)

  • Hot-plug awareness across the whole monitor list. Plug a USB-C OLED in, the engine picks it up; unplug it, the protection stops cleanly without disturbing other displays.
  • Per-monitor DDC/CI re-probe when capabilities change at runtime.
  • 24h threat-history ring persisted for the Statistics timeline.
  • Per-app screen-time persistence across restarts.
  • Classifier confidence score on the metrics stream so the Auto controller surfaces uncertainty.
  • DDC startup probe extended from 150 ms to 1.2 s — removes a class of "No DDC" false reports on monitors that take a moment to wake.
  • External-link routing — clicks inside the WebView2 shell now open in your default browser instead of disappearing into the embedded view.
  • v4 visual system across every page: dashboard, monitors, overlay, vignette, settings, advanced, profiles, hotkeys, and about, each rebuilt to match the v4 design source.
  • New shield logo replaces the OG monogram in the desktop app and on the website.

V3 — physics engine (April 18 – April 26)

  • Per-pixel exposure shader (ExposureAccumulatePS_v3) replaces the v2 heuristic accumulator.
  • Motion envelope + stability gate as separate GPU passes.
  • Auto Mode V3 controller with explicit UI sync and a pause-banner that follows manual edits.
  • Live classifier readout on the Advanced page, streaming controller knob history at 60 Hz.
  • Per-pixel motion envelope replaces the cell-based intelligence layer (which produced staircase artefacts at content boundaries and is now retired for good).
  • L4 per-preset tuning suites — 24/24 green before every release.
  • Window Border Protection retired (it was a v2-era heuristic that the V3 engine subsumes).
  • Phase 8 of the V3 redesign closed with the v2 preset fields, engine properties, and legacy UI sliders deleted.

V2 — the complete app (Feb 13 – Apr 17)

  • Multi-monitor architecture with independent capture and render pipelines per display.
  • DDC/CI brightness & contrast through VESA MCCS commands.
  • Per-app profiles with foreground-window watcher and debounced switching.
  • Auto Mode v1/v2 controller predates the V3 redesign.
  • Noise / Vignette / Mosaic protection-mode set with separate shaders.
  • Gaming presets with edge-weighted protection and proportional brightness gate.
  • Hierarchical test harness (L1 unit / L2 physics / L3 scenarios / L4 per-preset) with 81 tagged assertions.
  • Quality presets (Low / Medium / High / Ultra at 432p) trade detection accuracy against capture cost.
  • Microsoft Store trial flow plus Free / Pro entitlement split.

V1 — proof of concept (2024)

The first version. Hardware-accelerated screen capture, single-monitor overlay composition through DWM, the kernel of the engine that everything since has built on. Predates this public repository.