WIP: feat(anr): offer an optional frame generation runtime download #50

Draft
brunobaccari wants to merge 1 commit from brunobaccari/LongshotLauncher:feat/optional-anr-download into main
Contributor

Players who opt into experimental ANR frame generation need a way to obtain its runtime during a normal Launcher build, alongside the existing DLSS/FSR options. This adds a separate, default-off download choice without enabling frame generation.

Changes

  • Add Download ANR FG runtime (experimental) to Settings under Frame generation, with availability and help text. Save the choice and preserve it when rebuilding/updating an installation.
  • Enable the checkbox only on Windows x64 when the selected builder contains scripts/anr_sdk.py. Older builders receive no unsupported flag; Linux/ARM64 stay unavailable.
  • Pass --fetch-anr-runtime to the compatible builder. Its implementation is in the companion Longshot ANR draft, commit ee004cfaf0eb01084855bb2d379a95e6a29f6118; merge/release that builder before enabling this path for users.
  • Keep the requested option separate from verified installation. Only @@anr-runtime ready followed by a successful build marks the runtime installed; the Home card does not claim that ANR is active or generating frames.
  • Add coverage for settings persistence, version/platform gating, arguments, unchanged environment/license handling, protocol parsing and registry confirmation. Update the README.

The builder downloads the official pinned ANR FG-V.B15 addon directly, verifies its size/SHA-256, caches it and stages only its 19-file runtime subtree into <game>/anr/. It preserves nr_fg.ini and modified packages, executes no upstream installer and changes no graphics setting. ANR needs the release's Microsoft Visual C++ 2015–2022 x64 runtime. No ANR binaries/models are mirrored or included in either PR.

Validation

Base: main @ 0e6e1d78210e4c79efecc04e8b27ba7a288ec3b7.
This PR: feat/optional-anr-download @ 6c4177b1bd82eefc162beffaf49a2f975bfef83a.

  • git diff --check: passed. Static review and AXAML XML parsing passed; the binding targets and builder/protocol contract were inspected.
  • Application and screenshot fixture compiled with the isolated official .NET 10.0.404 SDK: zero errors. The application reported the existing AVLN5001 obsolete-Watermark warning in BuildStepView; no production source change was needed.
  • Original supplementary checks: 67 assertions passed (Settings 17, Command 30, Replace 11, AnrRuntime 9). These invoke the existing test methods without editing or weakening them. The rendered fixture additionally checked the real checkbox binding, availability and OFF-to-ON PropertyChanged notification.
  • Full strict core suite: compiled with zero warnings/errors, but stopped in the unchanged SelfUpdateChecks before the ANR checks. Its Linux /apps/... absolute-path expectation fails Path.IsPathFullyQualified on a Windows host. Canonical LF Git content was used to preserve the signed fixtures; the 67 supplementary assertions are not a full-suite pass.
  • Release suite: 28 ran, 22 passed, 1 failed and 5 errored. Windows-generated CRLF data breaks the dynamic signature/newline expectations; a shell stub fails with WinError 193. These release sources/tests are unchanged. The separate clean-base run timed out, so no main-versus-PR equivalence is claimed.
  • Companion builder: 22 ANR downloader tests and 40 adjacent FFX/NGX/make_game tests passed. An isolated real-addon download/install/cache smoke passed; no DLL/installer was executed.

Still required before readiness: a passing full core/release suite, locked release builds on Windows and Linux, native Settings/rebuild/update UI runs, and a complete compatible builder-to-game installation. Actual ANR provider/GPU execution and generated output remain unvalidated in the companion draft.

Screenshots

Actual MainWindow and SettingsStepView from commit 6c4177b, rendered at 1200×850 with Avalonia/Skia in memory and isolated synthetic launcher/toolchain data. These UI previews do not demonstrate a completed install or provider execution. No OS input or desktop cursor was captured.

Default: download off

The optional ANR runtime download is off by default, beside the existing DLSS/FSR build choices.

Default: download off

Opt-in: download requested

Checked means the player requested the optional runtime download; frame generation is enabled separately in the game.

Opt-in: download requested

Builder without ANR support

The checkbox is disabled and explains the missing builder capability, rather than sending an unsupported flag.

Builder without ANR support

Risks and rollback

Installed runtime files are distinct from a functioning frame-generation provider; the UI reports only the former. The capability guard deliberately keeps current incompatible releases disabled until a builder carrying the helper is selected. Leave the optional checkbox off to retain the existing build behavior. Neither the locally installed Launcher nor the user's running compilation, game files, settings or saves was modified.

Checklist

  • One topic, Conventional Commit title and AI assistance trailers.
  • Branch based on current Launcher main at publication.
  • No game files, saves, build output, secrets or provider binaries included.
  • Source-reading tests and documentation updated.
  • .NET 10 application compilation and rendered ANR binding checks.
  • 67 original supplementary assertions passed, including 9 ANR-specific checks.
  • Full core/release suites passing; current Windows failures are documented above.
  • Screenshots of the real Settings view with isolated data.
  • Native Windows/Linux UI validation.
  • Compatible builder-to-game installation and real ANR validation.
Players who opt into experimental ANR frame generation need a way to obtain its runtime during a normal Launcher build, alongside the existing DLSS/FSR options. This adds a separate, default-off download choice without enabling frame generation. ## Changes - Add **Download ANR FG runtime (experimental)** to Settings under **Frame generation**, with availability and help text. Save the choice and preserve it when rebuilding/updating an installation. - Enable the checkbox only on Windows x64 when the selected builder contains `scripts/anr_sdk.py`. Older builders receive no unsupported flag; Linux/ARM64 stay unavailable. - Pass `--fetch-anr-runtime` to the compatible builder. Its implementation is in the companion [Longshot ANR draft](https://git.magicbean.dev/MagicBeanDev/Longshot/pulls/244), commit `ee004cfaf0eb01084855bb2d379a95e6a29f6118`; merge/release that builder before enabling this path for users. - Keep the requested option separate from verified installation. Only `@@anr-runtime ready` followed by a successful build marks the runtime installed; the Home card does not claim that ANR is active or generating frames. - Add coverage for settings persistence, version/platform gating, arguments, unchanged environment/license handling, protocol parsing and registry confirmation. Update the README. The builder downloads the official pinned [ANR FG-V.B15 addon](https://github.com/apex-compute/ANR/releases/tag/FG-V.B15) directly, verifies its size/SHA-256, caches it and stages only its 19-file runtime subtree into `<game>/anr/`. It preserves `nr_fg.ini` and modified packages, executes no upstream installer and changes no graphics setting. ANR needs the release's Microsoft Visual C++ 2015–2022 x64 runtime. No ANR binaries/models are mirrored or included in either PR. ## Validation Base: `main @ 0e6e1d78210e4c79efecc04e8b27ba7a288ec3b7`. This PR: `feat/optional-anr-download @ 6c4177b1bd82eefc162beffaf49a2f975bfef83a`. - `git diff --check`: passed. Static review and AXAML XML parsing passed; the binding targets and builder/protocol contract were inspected. - Application and screenshot fixture compiled with the isolated official .NET 10.0.404 SDK: zero errors. The application reported the existing AVLN5001 obsolete-Watermark warning in BuildStepView; no production source change was needed. - Original supplementary checks: **67 assertions passed** (Settings 17, Command 30, Replace 11, AnrRuntime 9). These invoke the existing test methods without editing or weakening them. The rendered fixture additionally checked the real checkbox binding, availability and OFF-to-ON PropertyChanged notification. - Full strict core suite: compiled with zero warnings/errors, but stopped in the unchanged SelfUpdateChecks before the ANR checks. Its Linux `/apps/...` absolute-path expectation fails Path.IsPathFullyQualified on a Windows host. Canonical LF Git content was used to preserve the signed fixtures; the 67 supplementary assertions are not a full-suite pass. - Release suite: 28 ran, 22 passed, 1 failed and 5 errored. Windows-generated CRLF data breaks the dynamic signature/newline expectations; a shell stub fails with WinError 193. These release sources/tests are unchanged. The separate clean-base run timed out, so no main-versus-PR equivalence is claimed. - Companion builder: 22 ANR downloader tests and 40 adjacent FFX/NGX/make_game tests passed. An isolated real-addon download/install/cache smoke passed; no DLL/installer was executed. Still required before readiness: a passing full core/release suite, locked release builds on Windows and Linux, native Settings/rebuild/update UI runs, and a complete compatible builder-to-game installation. Actual ANR provider/GPU execution and generated output remain unvalidated in the companion draft. ## Screenshots Actual `MainWindow` and `SettingsStepView` from commit `6c4177b`, rendered at 1200×850 with Avalonia/Skia in memory and isolated synthetic launcher/toolchain data. These UI previews do not demonstrate a completed install or provider execution. No OS input or desktop cursor was captured. ### Default: download off The optional ANR runtime download is off by default, beside the existing DLSS/FSR build choices. ![Default: download off](https://git.magicbean.dev/attachments/d22e12ff-4752-44e9-93d0-58e8fba8dc48) ### Opt-in: download requested Checked means the player requested the optional runtime download; frame generation is enabled separately in the game. ![Opt-in: download requested](https://git.magicbean.dev/attachments/6cd266c1-a3a6-442f-b4e5-1d0a6a37ffe7) ### Builder without ANR support The checkbox is disabled and explains the missing builder capability, rather than sending an unsupported flag. ![Builder without ANR support](https://git.magicbean.dev/attachments/3bd2344c-5449-4e9b-b90a-c3f05b522414) ## Risks and rollback Installed runtime files are distinct from a functioning frame-generation provider; the UI reports only the former. The capability guard deliberately keeps current incompatible releases disabled until a builder carrying the helper is selected. Leave the optional checkbox off to retain the existing build behavior. Neither the locally installed Launcher nor the user's running compilation, game files, settings or saves was modified. ## Checklist - [x] One topic, Conventional Commit title and AI assistance trailers. - [x] Branch based on current Launcher `main` at publication. - [x] No game files, saves, build output, secrets or provider binaries included. - [x] Source-reading tests and documentation updated. - [x] .NET 10 application compilation and rendered ANR binding checks. - [x] 67 original supplementary assertions passed, including 9 ANR-specific checks. - [ ] Full core/release suites passing; current Windows failures are documented above. - [x] Screenshots of the real Settings view with isolated data. - [ ] Native Windows/Linux UI validation. - [ ] Compatible builder-to-game installation and real ANR validation.
feat(anr): offer an optional frame generation runtime download
Some checks are pending
CI / Conventional Commit title (pull_request) Blocked by required conditions
CI / Compile and test (pull_request) Blocked by required conditions
6c4177b1bd
Expose a saved, default-off choice only for Windows x64 builders carrying
the ANR downloader. Preserve the request on updates and record installed
status only after the builder confirms verified deployment.

Assisted-by: Codex
Co-Authored-By: OpenAI <[email protected]>
brunobaccari changed title from WIP: feat(anr): offer an optional frame generation runtime download to feat(anr): offer an optional frame generation runtime download 2026-11-13 18:37:51 +00:00
brunobaccari changed title from feat(anr): offer an optional frame generation runtime download to WIP: feat(anr): offer an optional frame generation runtime download 2026-11-13 19:44:39 +00:00
Owner

Currently, ANR doesn't have a license, so we're unsure how to distribute it. We will have to look into this

Currently, ANR doesn't have a license, so we're unsure how to distribute it. We will have to look into this
Some checks are pending
CI / Conventional Commit title (pull_request) Blocked by required conditions
CI / Compile and test (pull_request) Blocked by required conditions
This pull request has changes conflicting with the target branch.
  • App/ViewModels/BuildStepViewModel.cs
  • App/ViewModels/HomeViewModel.cs
  • App/ViewModels/WizardViewModel.cs
  • Core/BuildRegistry.cs
  • Core/LauncherSettings.cs
  • Core/MakeGameCommand.cs
  • README.md
  • tests/launcher_core/Program.cs
  • tests/launcher_core/ScreenChecks.cs
Some workflows are waiting to be reviewed.
View command line instructions

Manual merge helper

Use this merge commit message when completing the merge manually.

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u 'feat/optional-anr-download:brunobaccari-feat/optional-anr-download'
git switch 'brunobaccari-feat/optional-anr-download'
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
MagicBeanDev/LongshotLauncher!50
No description provided.