fix(builder): Windows keeps NVIDIA's license accepted in its settings, so an update keeps DLSS without the SDK's files #2528
No reviewers
Labels
No labels
accessibility
autorelease: pending
autorelease: tagged
bug
dependencies
documentation
duplicate
enhancement
github_actions
good first issue
help wanted
invalid
question
testing wanted
wontfix
No milestone
No assignees
1 participant
Due date
No due date set.
Dependencies
No dependencies set
Reference
MagicBeanDev/Hookshot!2528
Loading…
Reference in a new issue
No description provided.
Delete branch "windows-dlss-license"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
On Windows, an update can drop DLSS from a game built with it: both builders use the DLSS SDK's
LICENSE.txtas the record that you accepted NVIDIA's license, so if the SDK's files are gone (deleted, a new builder folder) and DLSS isn't ticked in the saved settings, the update builds without DLSS and its runtime is removed. This is the Windows side of #2485, which fixed the same for the Linux builder (pointed out in its review).What changed
builder-settings.jsongetsDlssLicense, set when the DLSS tick's license is accepted. Both builders read and keep it (the file is shared between the WPF builder andbuilder/py).DlssLicenseis set, or, for a license accepted before this change, when the SDK'sLICENSE.txtis there (as before, so nobody loses DLSS on the switch).Testing
tests/builder_dlss_update_test.cs: new cases, the record without the SDK keeps DLSS. Run here on .NET 10 (the PC has no .NET 8 packs; the fixture targets 8): 63 assertions pass, and the new case fails onmain'sUpdateBuild.tests/test_builder_py_dlss_update.py(new): the Python builder's update decision, taken from its source and run with stand-ins. Passes, and fails onmain'supdate_build.python -I -B tests/run_all.pyon Linux: nothing new fails (the three failures there also fail onmain).🤖 Generated with Claude Code
Looks good. The fix does what the description says: both update paths keep DLSS when the runtime is in the folder and either
DlssLicenseis set or the oldLICENSE.txtis there, so nobody loses DLSS on the switch. The record is set only when the license dialog is accepted, and the Python builder keeps it when it rewrites the shared settings file (itssave_settingswrites only the keys it is given, so thator core.load_settings()fallback is needed, good). The new tests cover the no-SDK case in both builders.CI: the only red job is
test_psychov35.pyon windows part 2/2 (scanfdeprecated under -Werror in its fixture), unrelated to this PR's files. The ubuntu part 2/2 and the title check were still pending when I looked.Nits only, see the inline one. Also
dlssLicense(the field) sits next to the existingDlssLicensestring constant (the dialog text) in the same class; it compiles, but the names are easy to confuse.Nit: this comment stops mid-sentence ("...and its runtime went"), the end of it is missing.
github-sync referenced this pull request2026-11-12 06:22:54 +00:00