Skip to content

Settings page, offline Feeder cfg editor, and install defaults - #58

Merged
faisalkindi merged 2 commits into
faisalkindi:mainfrom
GorgotsRoman:pr/settings-feeder-cfg
Sep 8, 2026
Merged

faisalkindi merged 2 commits into
faisalkindi:mainfrom
GorgotsRoman:pr/settings-feeder-cfg

Conversation

@GorgotsRoman

Copy link
Copy Markdown
Contributor

Summary

  • Follow-up to closed Old games hub: Shipping install, Settings, Feeder knobs, perf FPS, NGX preview #55 after your packaging review: no assets/patches Feeder overwrite — official DLSS5-Feeder release zip only.
  • Feeder-side Optimize / mask / OFA / perf-writer work: jlrouzies-fr/DLSS5-Feeder#76.
  • settings.rs + feeder_cfg.rs + quality_preset.rs: Settings page seeds quality/cfg defaults on Install; offline dlss5-feed.cfg + FX uniforms editor on Setup.
  • Post-install verifies dxgi/ReShade, Feeder addon/FX, headers (and Feeder stack files); refuses a hollow success. First-run tip + collapsible install log (failures sorted to the top).
  • Version left at main (0.11.24). cargo clippy --all-targets -- -D warnings clean.

Test plan

  • Settings Save → new Install writes cfg / overlay defaults
  • Offline knobs Write cfg on an installed game
  • Incomplete folder is not reported as fully ready
  • First-run tip dismisses and stays dismissed
  • Ko-fi button unchanged
  • cargo clippy --all-targets -- -D warnings

Adds settings.json seeding, quality presets, and offline dlss5-feed.cfg /
FX uniform editing. Install writes those defaults; post-install verifies
critical files. Official Feeder release zip only (no bundled overwrite).
Follow-up to closed faisalkindi#55; Feeder-side work lives in jlrouzies-fr/DLSS5-Feeder#76.

Co-authored-by: Cursor <cursoragent@cursor.com>
@faisalkindi

Copy link
Copy Markdown
Owner

Reviewed and built this one locally. No bundled binaries — thank you for that. It is close to mergeable; two things stand between it and a merge, and one of them is about how the three PRs relate to each other rather than this code.

It builds clean

  • cargo test: 112 pass, 66 of them new. Good coverage on the cfg parser and the preset table.
  • cargo clippy --all-targets -- -D warnings: zero errors. That is the gate that failed 39 times on Old games hub: Shipping install, Settings, Feeder knobs, perf FPS, NGX preview #55, so this is a real improvement.
  • cargo fmt --check: one diff, in src/feeder_cfg.rs:163 (set_line, the closure formatting). Run cargo fmt and it is gone.

The three PRs are stacked, not independent

git diff pr58..pr57 is 264 lines: perf.rs plus its UI. So #57 contains all of #58, and #59 almost certainly contains all of #58 too. They cannot be merged in any order without the later ones needing a rebase, and reviewing them separately means reading the same 3,300 lines three times.

How I would like to take them:

  1. Settings page, offline Feeder cfg editor, and install defaults #58 first, on its own — it is the base everything else sits on.
  2. Then rebase Read Feeder perf jsonl and show expected FPS #57 onto main, so its diff is only perf.rs + the FPS panel. That is a 264-line review instead of a 3,594-line one.
  3. Then rebase Per-game overrides and Shipping-exe Install from Games cards #59, leaving only game_overrides.rs, assets/game_overrides.json and the Games-card changes.

If you would rather not rebase by hand, say so and I will merge #58 and then pull the other two in myself as follow-ups — but the rebased versions will get looked at faster.

On #59 specifically, before you rebase it

game.rs in these branches touches exe discovery, and find_game_exes has moved under you today: 32-bit fallback in v0.11.18, and the D3D9 / DXGI / FSR2 import rules in v0.11.21–v0.11.23 (RDR2 was reading as DirectX 9). Please rebase onto current main and re-check that the per-game override path does not re-introduce the Shipping-exe selection that find_game_exes already does — that is the one place I expect a genuine conflict of behaviour rather than of text.

One question about scope

settings.json seeds knob defaults into every new install. I like it, but I want to be careful that a default written months ago does not quietly override what the Feeder itself has learned to do by then. Does the settings page make clear which values are yours versus the Feeder's own defaults, and is there a "reset to the Feeder's defaults" path? If not, that is the change I would ask for before merging.

Run cargo fmt and answer that last point and I will take #58.

Add Reset to Feeder defaults (work 100%, ofa off, adaptive reset) and rustfmt the PR branch.

Co-authored-by: Cursor <cursoragent@cursor.com>
@GorgotsRoman

Copy link
Copy Markdown
Contributor Author

Follow-up pushed (pr/settings-feeder-cfg @ GorgotsRoman)

Fmt + clarity

  • cargo fmt across the PR branch (feeder_cfg.rs and related).
  • Settings UI now labels user install defaults (settings.json → new Install / Apply to this game) as distinct from Feeder built-in defaults (stock add-on CfgWriteDefault / g_cfg).

Reset to Feeder defaults

  • New button restores quality/knobs/overlay to Feeder-like stock: work_resolution=100, OFA off (grid=2, perf=10), reset_mode=2 adaptive, light_stab off, engine_velocity on, overlay log_detail=1 / evaluate_stride=1 / log_frames=3, quality Auto.
  • Documented in Settings::feeder_stock / hover text; FeederKnobs::default aligned to the same stock numbers.
  • cargo clippy --all-targets -- -D warnings and cargo test clean on this tip.

Stack hygiene (still open — not merged onto main yet)

PR merge checklist (no separate CONTRIBUTING in this repo)

@faisalkindi

Copy link
Copy Markdown
Owner

Re-fetched and verified on the new tip:

  • cargo fmt --check: clean
  • cargo clippy --all-targets -- -D warnings: 0 errors
  • cargo test: 113 pass
  • Settings::feeder_stock() reads exactly as described, and the doc comment on settings.rs points at it

That answers the scope question properly. Labelling user install defaults separately from the Feeder's own stock values, plus a one-click way back to them, is what I wanted — a default written today should never quietly outlive the upstream behaviour it was copied from.

This one is ready from my side. Merging it is Faisal's call rather than mine, so I am not going to press the button on a 3,300-line contribution to a public repo without his word; he has the review above and this confirmation, and I will merge as soon as he says go.

Meanwhile, the useful thing you can do is the rebase you mentioned: once #58 lands, #57 should shrink to perf.rs plus its panel and #59 to game_overrides.rs + the Games-card work. They are still 3,692 and 3,988 lines because they carry #58 inside them.

One request for #59 when you get to it — find_game_exes changed under you three times today (v0.11.18 32-bit fallback; v0.11.21–24 the D3D9/DXGI/FSR2 import rules and the dgVoodoo path). Rebase onto current main before rather than after, or the Shipping-exe selection will look like a conflict when it is really a behaviour overlap.

Thanks for turning the review round this fast.

@faisalkindi
faisalkindi merged commit 0594226 into faisalkindi:main Sep 8, 2026
faisalkindi added a commit that referenced this pull request Sep 8, 2026
Contributed by @GorgotsRoman. Adds a Settings page with install defaults
seeded into new installs, an offline dlss5-feed.cfg editor, and a quality
preset table, plus a 'Reset to Feeder defaults' path so a default written
here never silently outlives the upstream behaviour it was copied from.

Also carries a better ReShade.ini search-path fix than the one in v0.11.25:
it collapses a doubled \**\** recursive glob, which fails Win32 resolve and
makes ReShade report zero .fx files.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@faisalkindi

Copy link
Copy Markdown
Owner

Merged, and shipped as v0.12.0. Thank you — the Settings page and the offline dlss5-feed.cfg editor are things people in this tracker have been asking for by hand for a week.

Your ReShade.ini fix was better than mine and replaced it. I shipped a search-path fix in v0.11.25 that appended the missing path; yours also collapses a doubled \**\** glob, which fails Win32 path resolution with ERROR_INVALID_NAME and makes the overlay report "No effect files (.fx) found" while every shader is sitting right there. I kept yours and dropped mine, and verified it on a real install with a corrupted ReShade.ini:

before: EffectSearchPaths=.\reshade-shaders\Shaders\**\**
        TextureSearchPaths=D:\mine
after:  EffectSearchPaths=.\reshade-shaders\Shaders\**
        TextureSearchPaths=.\reshade-shaders\Textures\**,D:\mine

Two things I changed on the way in, both worth telling you about rather than burying in the merge:

1. resolve_target searched outward from a named exe, and could install into a different game. Handed …\v12b\Abyss Horde.exe, the tool resolved to …\DD2-test\DD2.exe — a different folder, a different game — because the scan walked up to the grandparent and re-ranked every candidate it found. Two games under one parent directory is not exotic; that writes DLLs into the wrong install.

A named file is now taken as an instruction. The Unreal launcher case is kept, narrowed to what it was written for: a -Shipping.exe beside the exe you named, in that same folder. Two tests cover it — one that a named exe wins over a larger sibling next door, one that a launcher still resolves to its shipping build.

2. rank_exe_candidates became dead code after that and failed clippy -D warnings, so it is gone.

Everything else went in as written: 116 tests pass, clippy clean, and a real install verified end to end.

For #57 and #59: rebase onto main now and they should shrink to their own diffs.

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.

2 participants