fix(quick-pane): keep pane open on blur
This commit is contained in:
@@ -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) => {
|
||||||
|
|||||||
Reference in New Issue
Block a user