fix(quick-pane): keep pane open on blur

This commit is contained in:
2026-08-25 22:02:41 +02:00
parent a204eea7da
commit ab482d3daa
+1 -11
View File
@@ -76,9 +76,7 @@ export default function QuickPane() {
const [escalation, setEscalation] = useState<string>(); const [escalation, setEscalation] = useState<string>();
const [extension, setExtension] = useState<Extension>(); const [extension, setExtension] = useState<Extension>();
const runtimeRef = useRef<Runtime | undefined>(undefined); const runtimeRef = useRef<Runtime | undefined>(undefined);
const requestRef = useRef(request);
const inputRef = useRef<HTMLTextAreaElement>(null); const inputRef = useRef<HTMLTextAreaElement>(null);
const phaseRef = useRef<"idle" | "starting" | "running">("idle");
const invalid = useMemo(() => settingsError(settings), [settings]); const invalid = useMemo(() => settingsError(settings), [settings]);
const dismissPane = () => getCurrentWindow().hide(); const dismissPane = () => getCurrentWindow().hide();
@@ -139,11 +137,7 @@ export default function QuickPane() {
}; };
window.addEventListener("keydown", onKeyDown); window.addEventListener("keydown", onKeyDown);
const focusListener = paneWindow.onFocusChanged((event) => { const focusListener = paneWindow.onFocusChanged((event) => {
if (event.payload) { if (event.payload) focusInput();
focusInput();
} else if (phaseRef.current === "idle" && !requestRef.current.trim()) {
void dismissPane();
}
}); });
const closeListener = paneWindow.onCloseRequested((event) => { const closeListener = paneWindow.onCloseRequested((event) => {
event.preventDefault(); event.preventDefault();
@@ -227,7 +221,6 @@ export default function QuickPane() {
setAnswer(""); setAnswer("");
setEscalation(undefined); setEscalation(undefined);
setExtension(undefined); setExtension(undefined);
phaseRef.current = "starting";
setStatus("Starting advisory quick agent…"); setStatus("Starting advisory quick agent…");
try { try {
const result = await invoke<{ runtime: Runtime }>( const result = await invoke<{ runtime: Runtime }>(
@@ -253,12 +246,10 @@ export default function QuickPane() {
agentId: result.runtime.agentId, agentId: result.runtime.agentId,
message: guardrails, message: guardrails,
}); });
phaseRef.current = "running";
setStatus( setStatus(
"Quick request running. Advisory limits are not trusted enforcement.", "Quick request running. Advisory limits are not trusted enforcement.",
); );
} catch (reason) { } catch (reason) {
phaseRef.current = "idle";
setError(`Could not start quick request: ${String(reason)}`); setError(`Could not start quick request: ${String(reason)}`);
setStatus(""); setStatus("");
} }
@@ -314,7 +305,6 @@ export default function QuickPane() {
ref={inputRef} ref={inputRef}
value={request} value={request}
onChange={(e) => { onChange={(e) => {
requestRef.current = e.target.value;
setRequest(e.target.value); setRequest(e.target.value);
}} }}
onKeyDown={(event) => { onKeyDown={(event) => {