Two years.
Four big swings.
OLED Guard didn’t arrive fully formed. It started as a 2024 side project and grew, in public, through three full rebuilds. This page is the long-form version of that road. The point-by-point release notes are over on the docs changelog.
- OriginShippedSpring 2024V1Proof of concept
An OLED protection app that wasn't a screensaver.
OLED Guard started as a side project in 2024, born out of frustration with the only options available to OLED owners on Windows: full-screen blackouts that interrupted what you were doing, and pixel-shifters that nudged your desktop a few pixels and called it protection.
The first version proved a simple idea could work — capture the screen, watch where bright static content was sitting, and quietly compose a corrective overlay on top. It was rough. It was single-monitor. But it worked, and it kept working while you used your computer.
Started2024Code stateprototypeWhat landedScreen-aware overlay
Hardware-accelerated capture instead of a black curtain. The PC stayed usable.
Single-monitor focus
One panel, one overlay, one preset set. The smallest thing that could meaningfully reduce burn-in risk.
- BreadthShippedFebruary – April 2026V2The complete app
From prototype to product — multi-monitor, automatic, configurable.
V2 took the prototype apart and built a real Windows app around it. Multi-monitor support arrived first — every connected display got its own independent capture and overlay pipeline. DDC/CI brightness control let the app talk to the monitor's firmware directly. Per-app profiles auto-switched presets when foreground apps changed. An automatic controller learned to pick configurations based on what you were doing.
Through V2 we shipped the protection-mode set the engine still uses: noise, vignette, and mosaic, each with its own shader. The Microsoft Store trial flow went live, the Steam page went up, and a hierarchical test harness started auditing every change with 81 tagged assertions.
By the time we were done, OLED Guard wasn't a side project anymore. It was a 150-commit run that turned a working prototype into something we could ask people to pay for.
Commits150Tests81 assertionsWindow9 weeksWhat landedMulti-monitor architecture
Each display got its own capture, render, and settings pipeline — the foundation that makes the rest work.
DDC/CI brightness & contrast
Direct VESA MCCS commands to the monitor firmware, bypassing the Windows colour stack.
Per-app profiles + Auto Mode
Foreground-window watcher with debounced switching. The engine adapts to what you're doing, automatically.
Hierarchical test harness
L1 unit, L2 physics, L3 scenarios, L4 per-preset tuning suites — every change runs through it.
- The engineShippedApril 2026V3Physics, not heuristics
The whole backend torn down and rebuilt around the actual physics of burn-in.
V2's engine worked, but it was a stack of heuristics: rules of thumb, threshold tweaks, special cases for HUDs and taskbars. Every new edge case meant another rule. We knew the right answer was deeper, and in April we committed to it.
V3 deletes the heuristic layer entirely. The new engine is built around a single physical quantity — per-pixel exposure, the integral of luminance over time — computed every frame, on the GPU, for every connected display. A motion-envelope shader and a stability detector decide which pixels to protect. An exposure-accumulating shader written from scratch tracks the histogram. The protection field is a function of the model, not a list of rules.
Below the engine, V3 brought a whole physics-first test taxonomy. Layer-bleedthrough tests, oscillation-stability tests, scene-change tests, dynamism gates — 24 out of 24 L4 per-preset suites green. Phase 6 of the V3 redesign closed with the v2 preset fields, properties, and legacy sliders deleted.
If V2 was a tour of features, V3 was the moment OLED Guard stopped guessing.
Commits143L4 suites24 / 24Window9 daysWhat landedPer-pixel exposure shader
Built from scratch. Models the same integral that drives real burn-in.
Motion envelope + stability gate
Cheap GPU passes that tell the policy stage which pixels are static and worth protecting.
Auto Mode V3 controller
Reads the live signal classification and picks engine knobs in real time. Visible in the Advanced page.
L4 tuning suites — 24/24 green
Per-preset audits that run before every release. No silent regressions.
- The polishCurrentApril 2026 — currentV4Hybrid shell, real design
A native engine you can finally see — rebuilt UI, new visual system, new logo, new about page.
V3 made the engine feel right. V4 makes the app feel right.
The whole UI moved off WinForms and onto WebView2 + React. The native engine and the Windows interop stay where they were — the bridge boundary is one C# class with a typed message protocol — but the surface you actually look at is now a Chromium-class renderer with first-class developer ergonomics. Window startup is sub-second on a typical machine.
On top of that lives the v4 visual system: a teal accent, a sectioned sidebar, a full-bleed top bar with a live status strip that reads the engine in real time, a dashboard that actually surfaces what the engine is doing, and a refreshed Advanced page that exposes the Auto controller's reasoning so you can watch it work. The new shield mark replaces the placeholder OG monogram across the desktop app and the website.
External links go to the system browser instead of trapping inside the WebView. The About page links to live build, license, and adapter metadata. Hot-plug awareness across the whole monitor list arrived in this run too — plug a USB-C OLED in, the engine picks it up; unplug it, it shuts down cleanly.
We're not done. But this is the version we wanted to build all along.
Commits28+Pages rebuilt8StatuscurrentWhat landedWebView2 hybrid architecture
Native engine, modern UI, typed bridge between them. Sub-second startup.
v4 visual system + new shield logo
Teal accent, sectioned sidebar, full-bleed status strip. Every page redrawn from the v4 mockup.
Hot-plug-aware monitor list
USB-C OLEDs come and go through the workday. The engine follows the cable.
External links route to your default browser
Privacy / Terms / website links open where they're supposed to, not trapped in the WebView.