feat: phone login via QR when the saved Mudfish login expires

When autologin is rejected the panel offers '휴대폰으로 로그인 (QR)'. It opens
a 5-minute LAN relay to the launcher UI guarded by a one-time token (first
phone to open the QR URL is the only client allowed) and shows the URL as a
QR code. The relay closes as soon as a new session appears, on cancel, on
expiry, and on unload.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
ysj7705andClaude Opus 5.5 committed 2026-10-24 21:42:12 +09:00
1 parent d8f1c05372
commit 7513fef6f8
12 files changed
+586 -7

No files matched your search

+9
View File
@@ -4,8 +4,10 @@ import {
Field,
PanelSection,
PanelSectionRow,
showModal,
ToggleField,
} from "@decky/ui";
import { LoginModal } from "./LoginModal";
import { useEffect, useRef, useState } from "react";
import {
connect,
@@ -158,6 +160,13 @@ export function Panel() {
<Field focusable={false} description={state.message} />
</PanelSectionRow>
)}
{state.need_login && (
<PanelSectionRow>
<ButtonItem layout="below" onClick={() => showModal(<LoginModal />)}>
휴대폰으로 로그인 (QR)
</ButtonItem>
</PanelSectionRow>
)}
<PanelSectionRow>
<ButtonItem layout="below" onClick={() => setAdvanced(!advanced)}>
{advanced ? "고급 ▾" : "고급 ▸"}