Skip to content

v2.0.15: DLSS kept when updating, no long stall after an unpack, Program Files message - #1889

Merged
NotRexed merged 7 commits into
release/v2.0.15from
hotfix/v2.0.15
Nov 10, 2026
Merged

NotRexed merged 7 commits into
release/v2.0.15from
hotfix/v2.0.15

Conversation

@NotRexed

@NotRexed NotRexed commented Nov 10, 2026 •

Copy link
Copy Markdown
Owner

Hotfix for the v2.0.14 line. Each change is cherry-picked from main.

DLSS missing after updating (#1881):

Builder looks frozen after an unpack (#1876, #1870):

Game folder under Program Files:

Linux updates fail with "POST data should be bytes":

  • from main's df9a52e, the request part only: linux_update._request passed the URL as Request's second argument, which is the body, so every update download was a POST that failed before connecting (Arch Linux, 2.0.13 to 2.0.14). Its test test_a_download_is_a_get is added too. Players on 2.0.13 or 2.0.14 still run the old updater, so they need to download the new AppImage once.

Tests: the tests for these changes pass locally on this line: test_nup_zstd_heads, test_nup_stand_in, test_damaged_check_progress, test_nup_paths, test_nup_codec, test_nup_read_name, test_missing_nup, test_make_game_writable, test_make_game_cache. The owner tests a full local build before the tag.

🤖 Generated with Claude Code

Arkex-ai and others added 7 commits November 10, 2026 14:29
Use the saved license-accepted DLSS choice during updates, including after the builder restarts, while preserving existing DLSS installations. Exercise the real update decision without WPF, NVIDIA files or a game.

Assisted-by: OpenAI Codex
(cherry picked from commit c3aa9c0)
Include the selected NGX header tree in the DLSS compilation job dependencies. Preserve content-based reuse across SDK relocation and keep unrelated and non-NGX jobs unchanged.

Assisted-by: OpenAI Codex
(cherry picked from commit c716137)
A game folder under Program Files stopped the build minutes in, inside nup.py, with a bare "PermissionError: [WinError 5]"
on its .game folder (a player on Discord, v2.0.14). make_game now writes a small check file into the folder before anything
is read; refused, it names the folder, says Program Files needs administrator rights when the folder is under it, and asks
for a folder of the player's own.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
(cherry picked from commit 71635f3)
After a fresh unpack, the first build checks every romfs .zs file for damage (#1002). It opens about 102,000 files
and printed nothing until done: the Builder sat on "the game was read from this .nup before: reading it again is
skipped" for minutes (about 5 on a Windows PC with Defender scanning each open), and looked stuck.

- nup.damaged_game_files lists the files first, then reports each one it opened (progress(done, total)).
- make_game says the check is starting, sends @@progress for the Read row's bar at most 4 times a second, and a
  plain line at each tenth ("checked 40,874 of 102,185 files (40%, 6 s)") for the log and terminals.
- tests/test_damaged_check_progress.py: the reports, the found file, the lines' throttle and text.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
(cherry picked from commit 6ad9f1c)
… progress (#1764)

Since #1764 the Python source checks fail on main: make_game.stand_in_damaged_files now passes a progress callback,
and this check's stand-in took the romfs alone (TypeError: <lambda>() takes 1 positional argument but 2 were given).
The stand-in takes it now, and the check also says each check was given one.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
(cherry picked from commit 167685b)
…100,000 files opened again

(cherry picked from commit b039629, #1885, ported to the v2.0.14 line:
its extract has no ProgressSink, so HeadSink wraps the file directly)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…e POST body)

linux_update._request built Request(url, url, ...): Request's second argument is the body, so every update
download was a POST with a str body and stopped before connecting: "POST data should be bytes, an iterable of
bytes, or a file object. It cannot be of type str" (Discord, Arch Linux, 2.0.13 -> 2.0.14). From main's
df9a52e, this part only (the rest builds on Linux updater changes this line does not have).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@NotRexed
NotRexed merged commit 1f5fa4b into release/v2.0.15 Nov 10, 2026
6 checks passed
@SebasHT15

Copy link
Copy Markdown

@NotRexed Update from my side (reporter of #1876):

Setup: Windows 11 25H2 (build 26200), RTX 4090 Laptop GPU, fresh full build of
OoT from a local .nup into a plain local folder (C:\Games\OOT), builder v2.0.14.

Confirming your diagnosis. It's the silent post-unpack .zs check, not a real
freeze. On v2.0.14 the build sat at main: ZBIC -> plain NSO with the bundled
python.exe worker at 0% CPU — it looked completely frozen, and I kept cancelling it
thinking it had hung.

Key data point: the culprit was Windows Defender real-time protection scanning
every one of the ~100k file opens. After I turned off Defender's real-time
protection
, the check got through quickly and the build continued normally to
@@stage lift Translating the game to PC code and on to compilation. So with real-time
AV off, v2.0.14 builds fine; with it on, the check is slow enough to look frozen —
exactly as you described.

I'll confirm the actual fix — the progress output / no long stall — once the
v2.0.15 release is out.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants