github perseval-BLR/NeuralScreen v2.1.2
v2.1.2 - fixes from a code audit, and a tidier root

10 hours ago

Notice. Not affiliated with NVIDIA; NVIDIA, DLSS and the NVIDIA logo are NVIDIA Corporation's trademarks. The bundled NVIDIA runtimes are NVIDIA's property, included unmodified as received, research/educational use only, no warranty, use at your own risk.

Warning

NeuralScreen requires the latest NVIDIA driver. Operation with older drivers or unsupported/non-standard configurations is not guaranteed.

Important

Radeon testers wanted. The AMD build lives in a separate repository, NeuralScreen-AMD, and it has not run on a real Radeon yet. Start from native/AMD.md there, and if it does not come up, attach the diagnostic package (Settings -> Program -> Create diagnostic package).

A patch on the v2.1 line: the defects a full audit of the code found, and the program's modules moved out of the repository root. Nothing new to learn, a lot less to go wrong.

What was fixed

The settings panel went under the picture (#96). Two things in the worker put its picture above the open panel. In window mode, every move or resize of the captured window re-inserted the picture at the top - "always on top of everything, even the NR UI". In fullscreen, a check that runs every few seconds read helper windows (a 1x1 DWM helper, hidden Start and Search hosts, the NVIDIA overlay) as something covering the picture and raised it over the panel - the disappear-and-reappear flicker. A follow step now only moves the picture, the check skips hidden, cloaked, tiny and off-picture windows, and the panel goes up first with the picture placed directly under it. The program's own guard does the same in one step, and every [z] log line now says whether the panel is cloaked and where the picture window is.

Recorded sound turned into a buzz on loud moments. The limiter that keeps peaks under 0 dB bent every sample of a 10 ms block as soon as one sample in it was loud: quiet sound came out at 80% as a square wave. Only the peaks are bent now. The sound also keeps going when the playback device changes mid-recording (headphones plugged in) instead of going silent to the end.

A dying worker froze the window for up to a minute. The "worker is gone" signal was taken by the first thing waiting for an answer, and every later wait sat out its full timeout. Every wait hears it at once now. A hotkey pressed during a frame no longer loses that frame's answer (a 5 s stall and a restart), and a window that cannot be captured puts the capture back the way it was instead of showing a corner of the desktop.

HDR. Frame Generation at 3x or 4x on a card that refuses it no longer retries forever on the HDR path, and an HDR10 recording that leaves HDR mid-session is closed with what it holds instead of freezing while the sound runs on.

Updating over an old folder ran old code. The archive dates every file the same, so Python kept the old compiled copy of any file whose size did not change: 2.1.1 unpacked over 2.1.0 still called itself 2.1.0. The first start of a new release now throws that cache away.

Smaller ones. "gpu": null in config.json made every settings save fail; a config saved with a BOM, or with "false" as a string, no longer breaks the launch; starting the program while it runs brings the running copy's menu up instead of doing nothing; autostart set from another folder reads as off; a failed menu action is reported instead of closing the program; showing the panel no longer takes the keyboard from a game; a hotkey onto a key another action holds is refused; converted videos carry their colour range (no more crushed blacks) and HDR sources are refused rather than coming out washed out; the compatibility dialog is in your language; support packages no longer carry other programs' window titles.

Updating

Unpacking over the previous folder is fine and keeps your settings. The program's modules now live in app/, so the old *.py files at the root are left behind; nothing loads them any more, and they can be deleted - keep main.py, build_release_zip.py and verify_github.py.

Tests

The full suite before tagging: 223 checks, 5 skipped, 0 FAIL in 468 s, including the GUI cycle. The skips need an HDR display in HDR mode or are opt-in; the HDR checks and the opt-in DLSS-G check passed in a separate run with HDR on.

Don't miss a new NeuralScreen release

NewReleases is sending notifications on new releases.