summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorxXJSONDeruloXx <danielhimebauch@gmail.com>2025-08-18 12:46:49 -0400
committerxXJSONDeruloXx <danielhimebauch@gmail.com>2025-08-18 12:46:49 -0400
commitb3dc324137444753131eccfcbd86ab82fbd1d972 (patch)
tree63d16f9feeab33d0c54da01d148e4f7ce572951d /src
parent3c008cfc633701ad75207f94b9c694bd217e763a (diff)
downloaddecky-lsfg-vk-b3dc324137444753131eccfcbd86ab82fbd1d972.tar.gz
decky-lsfg-vk-b3dc324137444753131eccfcbd86ab82fbd1d972.zip
rm collapse for core configs, buy more ui room
Diffstat (limited to 'src')
-rw-r--r--src/components/ConfigurationSection.tsx174
1 files changed, 54 insertions, 120 deletions
diff --git a/src/components/ConfigurationSection.tsx b/src/components/ConfigurationSection.tsx
index 51fe47c..c14a2fd 100644
--- a/src/components/ConfigurationSection.tsx
+++ b/src/components/ConfigurationSection.tsx
@@ -15,7 +15,6 @@ interface ConfigurationSectionProps {
}
const WORKAROUNDS_COLLAPSED_KEY = 'lsfg-workarounds-collapsed';
-const CONFIG_COLLAPSED_KEY = 'lsfg-config-collapsed';
export function ConfigurationSection({
config,
@@ -31,16 +30,6 @@ export function ConfigurationSection({
}
});
- // Initialize with localStorage value, fallback to false (expanded) if not found
- const [configCollapsed, setConfigCollapsed] = useState(() => {
- try {
- const saved = localStorage.getItem(CONFIG_COLLAPSED_KEY);
- return saved !== null ? JSON.parse(saved) : false;
- } catch {
- return false;
- }
- });
-
// Persist workarounds collapse state to localStorage
useEffect(() => {
try {
@@ -50,15 +39,6 @@ export function ConfigurationSection({
}
}, [workaroundsCollapsed]);
- // Persist config collapse state to localStorage
- useEffect(() => {
- try {
- localStorage.setItem(CONFIG_COLLAPSED_KEY, JSON.stringify(configCollapsed));
- } catch (error) {
- console.warn('Failed to save config collapse state:', error);
- }
- }, [configCollapsed]);
-
return (
<>
<style>
@@ -69,118 +49,72 @@ export function ConfigurationSection({
.LSFG_WorkaroundsCollapseButton_Container > div > div > div > div > button {
height: 10px !important;
}
- .LSFG_ConfigCollapseButton_Container > div > div > div > button {
- height: 10px !important;
- }
- .LSFG_ConfigCollapseButton_Container > div > div > div > div > button {
- height: 10px !important;
- }
`}
</style>
+ {/* FPS Multiplier */}
+ <FpsMultiplierControl config={config} onConfigChange={onConfigChange} />
+
<PanelSectionRow>
- <div
- style={{
- fontSize: "14px",
- fontWeight: "bold",
- marginTop: "16px",
- marginBottom: "16px",
- borderBottom: "1px solid rgba(255, 255, 255, 0.2)",
- paddingBottom: "4px",
- color: "white"
- }}
- >
- LSFG Configuration
- </div>
+ <SliderField
+ label={`Flow Scale (${Math.round(config.flow_scale * 100)}%)`}
+ description="Lowers internal motion estimation resolution, improving performance slightly"
+ value={config.flow_scale}
+ min={0.25}
+ max={1.0}
+ step={0.01}
+ onChange={(value) => onConfigChange(FLOW_SCALE, value)}
+ />
</PanelSectionRow>
<PanelSectionRow>
- <div className="LSFG_ConfigCollapseButton_Container">
- <ButtonItem
- layout="below"
- bottomSeparator={configCollapsed ? "standard" : "none"}
- onClick={() => setConfigCollapsed(!configCollapsed)}
- >
- {configCollapsed ? (
- <RiArrowDownSFill
- style={{ transform: "translate(0, -13px)", fontSize: "1.5em" }}
- />
- ) : (
- <RiArrowUpSFill
- style={{ transform: "translate(0, -12px)", fontSize: "1.5em" }}
- />
- )}
- </ButtonItem>
- </div>
+ <SliderField
+ label={`Base FPS Cap${config.dxvk_frame_rate > 0 ? ` (${config.dxvk_frame_rate} FPS)` : ' (Off)'}`}
+ description="Base framerate cap for DirectX games, before frame multiplier. (Requires game restart to apply)"
+ value={config.dxvk_frame_rate}
+ min={0}
+ max={60}
+ step={1}
+ onChange={(value) => onConfigChange(DXVK_FRAME_RATE, value)}
+ />
</PanelSectionRow>
- {!configCollapsed && (
- <>
- {/* FPS Multiplier */}
- <FpsMultiplierControl config={config} onConfigChange={onConfigChange} />
-
- <PanelSectionRow>
- <SliderField
- label={`Flow Scale (${Math.round(config.flow_scale * 100)}%)`}
- description="Lowers internal motion estimation resolution, improving performance slightly"
- value={config.flow_scale}
- min={0.25}
- max={1.0}
- step={0.01}
- onChange={(value) => onConfigChange(FLOW_SCALE, value)}
- />
- </PanelSectionRow>
-
- <PanelSectionRow>
- <SliderField
- label={`Base FPS Cap${config.dxvk_frame_rate > 0 ? ` (${config.dxvk_frame_rate} FPS)` : ' (Off)'}`}
- description="Base framerate cap for DirectX games, before frame multiplier. (Requires game restart to apply)"
- value={config.dxvk_frame_rate}
- min={0}
- max={60}
- step={1}
- onChange={(value) => onConfigChange(DXVK_FRAME_RATE, value)}
- />
- </PanelSectionRow>
-
- <PanelSectionRow>
- <ToggleField
- label={`Present Mode (${(config.experimental_present_mode || "fifo") === "fifo" ? "FIFO - VSync" : "Mailbox"})`}
- description="Toggle between FIFO - VSync (default) and Mailbox presentation modes for better performance or compatibility"
- checked={(config.experimental_present_mode || "fifo") === "fifo"}
- onChange={(value) => onConfigChange(EXPERIMENTAL_PRESENT_MODE, value ? "fifo" : "mailbox")}
- />
- </PanelSectionRow>
+ <PanelSectionRow>
+ <ToggleField
+ label={`Present Mode (${(config.experimental_present_mode || "fifo") === "fifo" ? "FIFO - VSync" : "Mailbox"})`}
+ description="Toggle between FIFO - VSync (default) and Mailbox presentation modes for better performance or compatibility"
+ checked={(config.experimental_present_mode || "fifo") === "fifo"}
+ onChange={(value) => onConfigChange(EXPERIMENTAL_PRESENT_MODE, value ? "fifo" : "mailbox")}
+ />
+ </PanelSectionRow>
- <PanelSectionRow>
- <ToggleField
- label="Performance Mode"
- description="Uses a lighter model for FG (Recommended for most games)"
- checked={config.performance_mode}
- onChange={(value) => onConfigChange(PERFORMANCE_MODE, value)}
- />
- </PanelSectionRow>
+ <PanelSectionRow>
+ <ToggleField
+ label="Performance Mode"
+ description="Uses a lighter model for FG (Recommended for most games)"
+ checked={config.performance_mode}
+ onChange={(value) => onConfigChange(PERFORMANCE_MODE, value)}
+ />
+ </PanelSectionRow>
- {/* <PanelSectionRow>
- <ToggleField
- label="Force Disable FP16"
- description="Force-disable FP16 acceleration"
- checked={config.no_fp16}
- onChange={(value) => onConfigChange(NO_FP16, value)}
- />
- </PanelSectionRow> */}
+ {/* <PanelSectionRow>
+ <ToggleField
+ label="Force Disable FP16"
+ description="Force-disable FP16 acceleration"
+ checked={config.no_fp16}
+ onChange={(value) => onConfigChange(NO_FP16, value)}
+ />
+ </PanelSectionRow> */}
- <PanelSectionRow>
- <ToggleField
- label="HDR Mode"
- description={config.enable_wsi ? "Enables HDR mode (only for games that support HDR)" : "Enable WSI in the workarounds menu to unlock HDR toggle"}
- checked={config.hdr_mode}
- disabled={!config.enable_wsi}
- onChange={(value) => onConfigChange(HDR_MODE, value)}
- />
- </PanelSectionRow>
- </>
- )}
+ <PanelSectionRow>
+ <ToggleField
+ label="HDR Mode"
+ description={config.enable_wsi ? "Enables HDR mode (only for games that support HDR)" : "Enable WSI in the workarounds menu to unlock HDR toggle"}
+ checked={config.hdr_mode}
+ disabled={!config.enable_wsi}
+ onChange={(value) => onConfigChange(HDR_MODE, value)}
+ />
+ </PanelSectionRow>
{/* Workarounds Section */}
<PanelSectionRow>