From a6955e828b1dee7b14f8021a8a470dd51d77e33e Mon Sep 17 00:00:00 2001
From: xXJSONDeruloXx <danielhimebauch@gmail.com>
Date: Fri, 3 Apr 2026 09:52:39 -0400
Subject: 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.
---
 src/components/ClipboardCommands.tsx | 17 ++++++++++++-----
 1 file changed, 12 insertions(+), 5 deletions(-)

(limited to 'src/components/ClipboardCommands.tsx')

diff --git a/src/components/ClipboardCommands.tsx b/src/components/ClipboardCommands.tsx
index 5a6f38f..b8cf6bf 100644
--- a/src/components/ClipboardCommands.tsx
+++ b/src/components/ClipboardCommands.tsx
@@ -1,20 +1,27 @@
 import { SmartClipboardButton } from "./SmartClipboardButton";
+import { DEFAULT_PROXY_DLL } from "../utils/constants";
 
 interface ClipboardCommandsProps {
   pathExists: boolean | null;
+  dllName: string;
 }
 
-export function ClipboardCommands({ pathExists }: ClipboardCommandsProps) {
+export function ClipboardCommands({ pathExists, dllName }: ClipboardCommandsProps) {
   if (pathExists !== true) return null;
 
+  const launchCommand =
+    dllName === DEFAULT_PROXY_DLL
+      ? "~/fgmod/fgmod %command%"
+      : `DLL=${dllName} ~/fgmod/fgmod %command%`;
+
   return (
     <>
-      <SmartClipboardButton 
-        command="~/fgmod/fgmod %command%"
+      <SmartClipboardButton
+        command={launchCommand}
         buttonText="Copy Patch Command"
       />
-      
-      <SmartClipboardButton 
+
+      <SmartClipboardButton
         command="~/fgmod/fgmod-uninstaller.sh %command%"
         buttonText="Copy Unpatch Command"
       />
-- 
cgit v1.2.3

