214 Commits

Author SHA1 Message Date
xXJsonDeruloXx ca74bc1dcf fix: stack dropdown controls v0.15.6 2026-05-31 12:16:47 -04:00
Kurt Himebauch 92737d9dba Merge pull request #195 from xXJSONDeruloXx/feat/asset-manifest-fsr4-variants
feat: update OptiScaler bundle and add FSR4 runtime manifests
v0.15.5
2026-05-19 14:34:55 -04:00
xXJSONDeruloXx 19e5aefa2f feat: add fsr4 runtime manifests 2026-05-19 14:26:39 -04:00
Kurt Himebauch 9e12c11b61 Merge pull request #194 from xXJSONDeruloXx/fix/proxy-backup-idempotency
fix: preserve proxy dll backups on repatch
2026-05-19 11:56:49 -04:00
xXJSONDeruloXx ef0b58b883 fix: preserve proxy dll backups on repatch 2026-05-19 11:43:14 -04:00
XxJSONDeruloxX 94d1f366e5 Merge fix/optipatcher-rolling: upgrade OptiPatcher to rolling (base v0.39) v0.15.3 2026-04-19 12:41:49 -04:00
XxJSONDeruloxX 6d0346cb2e feat: upgrade OptiPatcher to rolling release (base v0.39, 2026-04-17)
Switches from the pinned v0.30 build to the rolling release snapshot
(base v0.39, commit 3c4a858, built 2026-04-17).

Notable additions over v0.30:
- Clair Obscur: Expedition 33, Oblivion Remastered, Mafia The Old Country
- South of Midnight, ROMEO, Windrose, Super Meat Boy 3D
- Soulstice, Star Trek Voyager, Samson, VOID/BREAKER fixes
- I Am Jesus Christ, Half Sword, Bellwright, Deadzone Rogue
- ~80 additional game entries total vs v0.30

Rolling build is pinned at a verified sha256 on the bleeding-edge repo
so the Decky CLI remote_binary download has a stable URL.

sha256: 88b9e1be3559737cd205fdf5f2c8550cf1923fb1def4c603e5bf03c3e84131b1
source: https://github.com/optiscaler/OptiPatcher/releases/tag/rolling
2026-04-19 12:41:49 -04:00
XxJSONDeruloxX 4a2df01435 Merge fix/drop-nvngx-dll: drop stale nvngx.dll, fix 0.9.0 archive URL v0.15.2 2026-04-19 12:28:49 -04:00
XxJSONDeruloxX fdcfd1035a fix: correct OptiScaler 0.9.0-final download URL and sha256
The release tag is v0.9.0, not v0.9.  The previous commit (7fb070e)
updated the sha256 to match the 9-byte 404 response body returned by
the /v0.9/ URL rather than the actual archive, so the Decky CLI was
validating a 'Not Found' stub and bundling it.  This caused a
completely non-functional plugin that silently failed to extract
OptiScaler at install time.

Fix:
- URL:  .../v0.9/... -> .../v0.9.0/...
- hash: 0019dfc4... (sha256 of 404 body) -> a988ce2c... (sha256 of real archive)
2026-04-19 12:25:10 -04:00
XxJSONDeruloxX 2371546f12 bump version 2026-04-19 12:20:09 -04:00
XxJSONDeruloxX b342b80267 fix: drop nvngx.dll remote binary and all shipping/staging references
The nvngx.dll bundled from the OptiScaler v0.7.8-pre0 nightly was the
real NVIDIA DLSS 3.10.3 production runtime (47 MB).  Inspection of its
PE export table showed it is missing 18 NVSDK_NGX_* symbols introduced
in DLSS SDK 3.1+ that every modern DLSS-enabled title calls at init:

  NVSDK_NGX_D3D12_AllocateParameters / DestroyParameters
  NVSDK_NGX_D3D12_GetCapabilityParameters / GetParameters
  NVSDK_NGX_D3D12_Init_with_ProjectID / Init_ProjectID
  NVSDK_NGX_UpdateFeature
  (plus D3D11 and Vulkan equivalents)

OptiScaler 0.9.0-final's own NGX proxy layer exports all of these and
handles all NGX interception internally.  Shipping the bare NVIDIA DLL
alongside it caused export-not-found failures on Proton when any code
path bypassed OptiScaler's hooks and resolved directly against the file.
The OptiScaler 0.9.0-final release notes also explicitly advise Linux
users to delete nvngx.dll when upgrading.

Changes:
- package.json: remove nvngx.dll from remote_binary download list
- main.py SUPPORT_FILES: remove nvngx.dll (no longer staged to fgmod/)
- main.py extract_static_optiscaler: remove nvngx.dll from additional_files;
  add explanatory comment for future reference
- main.py check_fgmod_path: remove nvngx.dll from required-file check
- fgmod.sh: remove the cp line that deployed nvngx.dll into game dirs

nvngx.dll is intentionally kept in INJECTOR_FILENAMES (main.py) and in
the fgmod.sh pre-patch rm and fgmod-uninstaller.sh cleanup so that any
copy placed by a previous plugin version is swept from game directories
on the next patch or uninstall.
2026-04-19 12:15:34 -04:00
Kurt Himebauch 9e096ef3e8 Merge pull request #191 from xXJSONDeruloXx/feat/appid-patch-flow
feat: AppID-based patch/unpatch with multi-library Steam discovery and marker tracking
2026-04-19 12:12:15 -04:00
xXJSONDeruloXx 7fb070e9f4 fix: update OptiScaler 0.9.0-final sha256 to match current release artifact 2026-04-13 21:12:24 -04:00
xXJSONDeruloXx 8ca30b2faf feat: appid-based patch/unpatch with multi-library discovery and marker tracking 2026-04-13 21:05:54 -04:00
Kurt Himebauch 47e7e2610b Merge pull request #186 from xXJSONDeruloXx/opti-090-final
Opti 090 final
2026-04-05 20:29:56 -04:00
xXJSONDeruloXx b8eed9a4f3 fix: remove D3D12_Optiscaler dir in fgmod-uninstaller.sh 2026-04-03 10:20:47 -04:00
xXJSONDeruloXx d845c74d03 chore: remove all emojis from source files 2026-04-03 10:10:36 -04:00
xXJSONDeruloXx 3d813ea873 feat: add Steam game picker with one-click launch option setter 2026-04-03 10:07:18 -04:00
xXJSONDeruloXx 9e45eca979 fix: label dxgi.dll as default in proxy DLL dropdown v0.15.1-opti-090-final 2026-04-03 09:58:22 -04:00
xXJSONDeruloXx 089c858feb fix: always emit DLL=<name> in patch command, even for default dxgi.dll 2026-04-03 09:55:41 -04:00
xXJSONDeruloXx 51793b3b54 chore: bump amd_fidelityfx_upscaler_dx12.dll to bins-for-4.0.2.c 2026-04-03 09:54:40 -04:00
xXJSONDeruloXx a6955e828b feat: proxy DLL name picker
Expose the proxy DLL rename as a user-selectable option across all
injection paths.  Previously hardcoded to dxgi.dll with no way to
change it short of manually prepending DLL=<name> to the Steam launch
option.

src/utils/constants.ts
- Add PROXY_DLL_OPTIONS (7 entries matching _create_renamed_copies)
  each with a label and one-line hint
- Add DEFAULT_PROXY_DLL constant (dxgi.dll) and ProxyDllValue type

src/api/index.ts
- runManualPatch now takes [directory, dll_name] so the chosen name
  reaches the backend

src/components/OptiScalerControls.tsx
- Own dllName state (default: dxgi.dll)
- Render a DropdownItem (visible when installed) showing the 7 options
  with the selected option's hint as the description
- Pass dllName down to both ClipboardCommands and ManualPatchControls

src/components/ClipboardCommands.tsx
- Accept dllName prop
- Patch command is plain ~/fgmod/fgmod %command% for the default;
  prefixed DLL=<name> ~/fgmod/fgmod %command% for any other choice

src/components/CustomPathOverride.tsx
- Accept dllName prop
- Pass it to runManualPatch
- Manual launch cmd clipboard button builds
  WINEDLLOVERRIDES="<stem>=n,b" dynamically; emits bare
  SteamDeck=0 %command% for OptiScaler.asi (ASI loader path needs no
  Wine DLL override)

main.py
- Add VALID_DLL_NAMES set (whitelist matching the renames dir)
- manual_patch_directory validates dll_name against the whitelist and
  returns an error for unknown values
- _manual_patch_directory_impl accepts dll_name param; removes the
  hardcoded "dxgi.dll" line

defaults/assets/fgmod.sh
- Fix longstanding bug: WINEDLLOVERRIDES was hardcoded to dxgi=n,b
  regardless of the DLL= env var selection.  Now derives the stem from
  $dll_name and skips the override entirely for .asi files.
2026-04-03 09:52:39 -04:00
xXJSONDeruloXx d1ce48eba2 fix: migrate per-game FGType → FGInput/FGOutput on patch and launch
Already-patched games have OptiScaler.ini entries using the old FGType
key (e.g. FGType=nukems). The v0.9-final DLL no longer recognises
FGType and silently falls back to nofg, breaking frame gen without any
error.

Add _migrate_optiscaler_ini() in main.py which:
- detects FGType=<value> in a per-game INI
- if FGInput is absent: replaces the single FGType line with both
  FGInput=<value> and FGOutput=<value>
- if FGInput is already present (INI already migrated): just drops the
  stale FGType line
- is a no-op when FGType is not present (fresh installs, already
  migrated)

Call the migration from _manual_patch_directory_impl immediately before
_disable_hq_font_auto so any re-patch via the GUI heals the INI.

Mirror the same logic in fgmod.sh so that games using the launch
wrapper are migrated automatically on the very next launch, with no
manual re-patch required.
2026-04-03 09:43:16 -04:00
xXJSONDeruloXx bb35f18ccf chore: update OptiScaler to v0.9.0-final
- package.json: point remote_binary at official optiscaler/OptiScaler
  v0.9 release (Optiscaler_0.9.0-final.20260401._AF.7z) with updated
  sha256 hash; drop staging-repo pre11 URL

- main.py (_modify_optiscaler_ini): FGType was split into FGInput +
  FGOutput in the final release INI; replace the old FGType=nukems
  substitution with FGInput=nukems and FGOutput=nukems so defaults are
  actually applied

- main.py (_manual_patch_directory_impl): copy D3D12_Optiscaler/
  directory to the game folder (OptiScaler.ini explicitly requires it
  next to the exe for FSR4/FidelityFX DX12 path)

- main.py (_manual_unpatch_directory_impl): remove D3D12_Optiscaler/
  directory when cleaning a game folder

- fgmod.sh: cp -r D3D12_Optiscaler/ to game folder during launch-time
  install, matching the per-game patch behaviour above

- Scrub stale pre3/pre4/pre11 references from comments throughout
2026-04-03 09:38:53 -04:00
xXJSONDeruloXx ef469a8036 chore: bump version to 0.15.1 v0.15.1 2026-03-20 13:35:33 -04:00
xXJSONDeruloXx 1685705f33 fix: bump to 0.15.0 and avoid OptiScaler font assert 2026-03-20 13:29:25 -04:00
Kurt Himebauch 1eba411d54 Merge pull request #171 from Wurielle/fix/fix-game-process-hanging 2026-02-27 07:54:15 -05:00
wuriko a66f9e3271 Merge remote-tracking branch 'origin/main' into fix/fix-game-process-hanging
# Conflicts:
#	defaults/assets/fgmod.sh
2026-02-27 05:44:41 +01:00
xXJSONDeruloXx db29155104 chore: bump ver v0.14.0 2026-02-26 21:22:59 -05:00
Kurt Himebauch fbf2aa3e02 Merge pull request #173 from xXJSONDeruloXx/fix-steam-process-tracking-clean
Fix Steam process tracking - remove exec and filter -- separators
2026-02-22 11:12:04 -05:00
Kurt Himebauch bc1fc7d03d Merge pull request #175 from Wurielle/feat/support-optiscaler-env-variables 2026-02-16 08:59:46 -05:00
Kurt Himebauch fc09fd391d Merge pull request #177 from Wurielle/fix/uninstaller-causing-game-file-corruption 2026-02-16 08:56:05 -05:00
wuriko 7e07472569 fix: fix uninstaller causing game file corruption on second launch 2026-02-15 09:40:37 +01:00
wuriko 6b9d38927f docs: update README with env var support 2026-02-12 22:39:09 +01:00
wuriko 938110d2d9 refactor: remove unnecessary python check 2026-02-11 07:46:54 +01:00
wuriko 128ae72f21 feat: add hyphenated section name support (V-Sync) 2026-02-11 07:45:43 +01:00
wuriko 5d70a558ad fix: use case sensitive values only to prevent PATH to accidentally match 2026-02-10 21:33:09 +01:00
wuriko 5758dea85b feat: handle unprefixed env variables 2026-02-10 21:22:27 +01:00
wuriko 173a50320c refactor: remove unnecessary add key step 2026-02-10 20:07:53 +01:00
wuriko c17dba2d1c fix: fix check_fgmod_path 2026-02-08 15:43:40 +01:00
wuriko 62df0441f1 feat: add support for optiscaler config variables 2026-02-08 15:08:04 +01:00
xXJsonDeruloXx c425491dfd Fix Steam process tracking - remove exec and filter -- separators
Steam process tracking requires:
1. Remove 'exec' from command execution (use direct call)
2. Filter out leading -- separators from launch options
3. Add trailing space to sed command (Lutris fix)

Applied to defaults/assets/fgmod.sh

Credit: https://github.com/benjamimgois/goverlay/commit/72d38b10a7710e628fef731eb4f9f335a4d80bd2
2026-02-02 12:25:44 -05:00
wuriko f18dfd3779 fix: disconnect from logging pipe to prevent game process hanging 2026-02-01 10:44:46 +01:00
Kurt Himebauch 70027bd3d6 Merge pull request #157 from xXJSONDeruloXx/opti-9-pre-6
bump version and opti 9 pre 6
v0.13.3
2025-12-10 12:12:20 -05:00
xXJSONDeruloXx 3d95a92471 fix: point to discord bundled opti with the files missing in prev v0.13.2 2025-12-10 11:11:54 -05:00
xXJSONDeruloXx 640dbbe12d bump version and opti 9 pre 6 v0.13.1 2025-12-06 22:11:51 -05:00
Kurt Himebauch eb4cb1f5aa Merge pull request #148 from xXJSONDeruloXx/path-overrides
initial path override ui and be
2025-12-06 21:54:45 -05:00
xXJSONDeruloXx e6c32d27db bump plugin version v0.13.0 2025-09-26 21:44:41 -04:00
xXJSONDeruloXx cf29301fc9 desc tweak 2025-09-26 21:44:17 -04:00
xXJSONDeruloXx f4719f8bef rm submodule 2025-09-26 21:32:42 -04:00