fix(plugin): add manual game name input, autostart MangoHud logging

This commit is contained in:
2026-06-28 18:57:51 +08:00
parent 7ab7af468a
commit 65e56702b0
3 changed files with 30 additions and 7 deletions
@@ -1,14 +1,15 @@
import { useEffect, useState } from "react"
import { import {
ButtonItem, ButtonItem,
PanelSection, PanelSection,
PanelSectionRow, PanelSectionRow,
TextField,
staticClasses, staticClasses,
} from "@decky/ui" } from "@decky/ui"
import { import {
FaPlay, FaPlay,
FaStop, FaStop,
FaClock, FaClock,
FaGamepad,
} from "react-icons/fa" } from "react-icons/fa"
import type { RecordingState, SessionData, RecentSession, PluginSettings } from "../lib/store" import type { RecordingState, SessionData, RecentSession, PluginSettings } from "../lib/store"
import SessionForm from "./session-form" import SessionForm from "./session-form"
@@ -25,6 +26,7 @@ interface MainPanelProps {
onAddToRecent: (sess: SessionData) => void onAddToRecent: (sess: SessionData) => void
onReset: () => void onReset: () => void
setError: (msg: string) => void setError: (msg: string) => void
setGameName: (name: string, appId?: number) => void
} }
export default function MainPanel({ export default function MainPanel({
@@ -39,6 +41,7 @@ export default function MainPanel({
onAddToRecent, onAddToRecent,
onReset, onReset,
setError, setError,
setGameName,
}: MainPanelProps) { }: MainPanelProps) {
const [elapsed, setElapsed] = useState(0) const [elapsed, setElapsed] = useState(0)
@@ -123,12 +126,22 @@ export default function MainPanel({
)} )}
{recordingState === "idle" && ( {recordingState === "idle" && (
<PanelSectionRow> <>
<div className={staticClasses.Text} style={{ padding: "8px 0", fontSize: "12px", opacity: 0.7 }}> <PanelSectionRow>
Enable MangoHud for your game, then press Start Recording before launching. <TextField
Configure MangoHud in the Settings tab. label="Game Name"
</div> value={session.gameName}
</PanelSectionRow> onChange={(e) => setGameName(e.target.value)}
placeholder="e.g. Cyberpunk 2077"
/>
</PanelSectionRow>
<PanelSectionRow>
<div className={staticClasses.Text} style={{ padding: "8px 0", fontSize: "12px", opacity: 0.7 }}>
Enable MangoHud for your game, then press Start Recording before launching.
Configure MangoHud in the Settings tab.
</div>
</PanelSectionRow>
</>
)} )}
{recentSessions.length > 0 && recordingState === "idle" && ( {recentSessions.length > 0 && recordingState === "idle" && (
+2
View File
@@ -36,6 +36,7 @@ function Content() {
reset, reset,
onGameStart, onGameStart,
onGameStop, onGameStop,
setGameName,
} = useSession() } = useSession()
const gameStartedUnregRef = useRef<{ unregister: () => void } | null>(null) const gameStartedUnregRef = useRef<{ unregister: () => void } | null>(null)
const gameStoppedUnregRef = useRef<{ unregister: () => void } | null>(null) const gameStoppedUnregRef = useRef<{ unregister: () => void } | null>(null)
@@ -159,6 +160,7 @@ function Content() {
onAddToRecent={addToRecent} onAddToRecent={addToRecent}
onReset={reset} onReset={reset}
setError={setError} setError={setError}
setGameName={setGameName}
/> />
<SettingsPanel <SettingsPanel
settings={settings} settings={settings}
+8
View File
@@ -171,6 +171,13 @@ export function useSession() {
currentAppNameRef.current = "" currentAppNameRef.current = ""
}, []) }, [])
// Manual game name override (fallback when SteamClient events don't fire)
const setGameName = useCallback((name: string, appId?: number) => {
currentAppNameRef.current = name
if (appId !== undefined) currentAppIdRef.current = appId
setSession((prev) => ({ ...prev, gameName: name, appId: appId ?? prev.appId }))
}, [])
return { return {
recordingState, recordingState,
session, session,
@@ -184,6 +191,7 @@ export function useSession() {
reset, reset,
onGameStart, onGameStart,
onGameStop, onGameStop,
setGameName,
} }
} }