<feed xmlns='http://www.w3.org/2005/Atom'>
<title>Decky-Framegen/main.py, branch opti-090-final</title>
<subtitle>Unnamed repository; edit this file 'description' to name the repository.
</subtitle>
<link rel='alternate' type='text/html' href='http://decky.mirror.aerocore.com.cn/xXJSONDeruloXx/Decky-Framegen/'/>
<entry>
<title>feat: proxy DLL name picker</title>
<updated>2026-04-03T13:52:39+00:00</updated>
<author>
<name>xXJSONDeruloXx</name>
<email>danielhimebauch@gmail.com</email>
</author>
<published>2026-04-03T13:52:39+00:00</published>
<link rel='alternate' type='text/html' href='http://decky.mirror.aerocore.com.cn/xXJSONDeruloXx/Decky-Framegen/commit/?id=a6955e828b1dee7b14f8021a8a470dd51d77e33e'/>
<id>a6955e828b1dee7b14f8021a8a470dd51d77e33e</id>
<content type='text'>
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=&lt;name&gt; 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=&lt;name&gt; ~/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="&lt;stem&gt;=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.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
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=&lt;name&gt; 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=&lt;name&gt; ~/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="&lt;stem&gt;=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.
</pre>
</div>
</content>
</entry>
<entry>
<title>fix: migrate per-game FGType → FGInput/FGOutput on patch and launch</title>
<updated>2026-04-03T13:43:16+00:00</updated>
<author>
<name>xXJSONDeruloXx</name>
<email>danielhimebauch@gmail.com</email>
</author>
<published>2026-04-03T13:43:16+00:00</published>
<link rel='alternate' type='text/html' href='http://decky.mirror.aerocore.com.cn/xXJSONDeruloXx/Decky-Framegen/commit/?id=d1ce48eba2a38909f33df965ab672249156dc47d'/>
<id>d1ce48eba2a38909f33df965ab672249156dc47d</id>
<content type='text'>
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=&lt;value&gt; in a per-game INI
- if FGInput is absent: replaces the single FGType line with both
  FGInput=&lt;value&gt; and FGOutput=&lt;value&gt;
- 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.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
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=&lt;value&gt; in a per-game INI
- if FGInput is absent: replaces the single FGType line with both
  FGInput=&lt;value&gt; and FGOutput=&lt;value&gt;
- 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.
</pre>
</div>
</content>
</entry>
<entry>
<title>chore: update OptiScaler to v0.9.0-final</title>
<updated>2026-04-03T13:38:53+00:00</updated>
<author>
<name>xXJSONDeruloXx</name>
<email>danielhimebauch@gmail.com</email>
</author>
<published>2026-04-03T13:38:53+00:00</published>
<link rel='alternate' type='text/html' href='http://decky.mirror.aerocore.com.cn/xXJSONDeruloXx/Decky-Framegen/commit/?id=bb35f18ccf17437ee484f92319da314164b4499b'/>
<id>bb35f18ccf17437ee484f92319da314164b4499b</id>
<content type='text'>
- 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
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
- 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
</pre>
</div>
</content>
</entry>
<entry>
<title>fix: bump to 0.15.0 and avoid OptiScaler font assert</title>
<updated>2026-03-20T17:29:25+00:00</updated>
<author>
<name>xXJSONDeruloXx</name>
<email>danielhimebauch@gmail.com</email>
</author>
<published>2026-03-20T17:29:25+00:00</published>
<link rel='alternate' type='text/html' href='http://decky.mirror.aerocore.com.cn/xXJSONDeruloXx/Decky-Framegen/commit/?id=1685705f33c1b05a44e6b77d622763559674553b'/>
<id>1685705f33c1b05a44e6b77d622763559674553b</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>fix: fix check_fgmod_path</title>
<updated>2026-02-08T14:43:40+00:00</updated>
<author>
<name>wuriko</name>
<email>noahfenghom@gmail.com</email>
</author>
<published>2026-02-08T14:43:40+00:00</published>
<link rel='alternate' type='text/html' href='http://decky.mirror.aerocore.com.cn/xXJSONDeruloXx/Decky-Framegen/commit/?id=c17dba2d1ceebf2fae54e5ded0f3481ee2e834cd'/>
<id>c17dba2d1ceebf2fae54e5ded0f3481ee2e834cd</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>feat: add support for optiscaler config variables</title>
<updated>2026-02-08T14:08:04+00:00</updated>
<author>
<name>wuriko</name>
<email>noahfenghom@gmail.com</email>
</author>
<published>2026-02-08T14:08:04+00:00</published>
<link rel='alternate' type='text/html' href='http://decky.mirror.aerocore.com.cn/xXJSONDeruloXx/Decky-Framegen/commit/?id=62df0441f1ddc83c31dccc7cf9c62a762aed4994'/>
<id>62df0441f1ddc83c31dccc7cf9c62a762aed4994</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>fix patching, logging additions</title>
<updated>2025-09-27T00:21:36+00:00</updated>
<author>
<name>xXJSONDeruloXx</name>
<email>danielhimebauch@gmail.com</email>
</author>
<published>2025-09-27T00:21:36+00:00</published>
<link rel='alternate' type='text/html' href='http://decky.mirror.aerocore.com.cn/xXJSONDeruloXx/Decky-Framegen/commit/?id=1b4a70c67013b87ff413506d5a25f66e4eb5bb87'/>
<id>1b4a70c67013b87ff413506d5a25f66e4eb5bb87</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>revised approach, pick dir then patch in plugin ui itself</title>
<updated>2025-09-27T00:14:44+00:00</updated>
<author>
<name>xXJSONDeruloXx</name>
<email>danielhimebauch@gmail.com</email>
</author>
<published>2025-09-27T00:14:44+00:00</published>
<link rel='alternate' type='text/html' href='http://decky.mirror.aerocore.com.cn/xXJSONDeruloXx/Decky-Framegen/commit/?id=1cc6a781fe7d6c053b2eb59aa79766a859c66209'/>
<id>1cc6a781fe7d6c053b2eb59aa79766a859c66209</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>feat: first arg steam path start, second mirror first</title>
<updated>2025-09-26T16:16:22+00:00</updated>
<author>
<name>xXJSONDeruloXx</name>
<email>danielhimebauch@gmail.com</email>
</author>
<published>2025-09-26T16:16:22+00:00</published>
<link rel='alternate' type='text/html' href='http://decky.mirror.aerocore.com.cn/xXJSONDeruloXx/Decky-Framegen/commit/?id=7d2322e637faae5ccfab58c54f7a13e6a5f7ea88'/>
<id>7d2322e637faae5ccfab58c54f7a13e6a5f7ea88</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>fix rename and cleanup proc</title>
<updated>2025-09-24T03:18:55+00:00</updated>
<author>
<name>xXJSONDeruloXx</name>
<email>danielhimebauch@gmail.com</email>
</author>
<published>2025-09-24T03:18:55+00:00</published>
<link rel='alternate' type='text/html' href='http://decky.mirror.aerocore.com.cn/xXJSONDeruloXx/Decky-Framegen/commit/?id=f4c0980e78817c4922e0f127710e59ad8e76e17c'/>
<id>f4c0980e78817c4922e0f127710e59ad8e76e17c</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
</feed>
