import { useEffect, useState } from "react"; import type { DefaultAgentTerminalInterface } from "@/ports"; import { Panel, Spinner } from "@/shared"; import { useGateways } from "@/app/di"; import { useI18n } from "@/i18n"; const choices: Array<{ value: DefaultAgentTerminalInterface; label: string }> = [ { value: "nativeTui", label: "TUI native" }, { value: "ideaCli", label: "CLI IdeA" }, ]; export function TerminalSettings() { const { userSettings } = useGateways(); const { t } = useI18n(); const [value, setValue] = useState("nativeTui"); const [busy, setBusy] = useState(true); const [error, setError] = useState(null); useEffect(() => { let cancelled = false; setBusy(true); userSettings .readUserSettings() .then((settings) => { if (!cancelled) { setValue(settings.defaultAgentTerminalInterface ?? "nativeTui"); setError(null); } }) .catch(() => { if (!cancelled) setError(t("settings.terminal.loadError")); }) .finally(() => { if (!cancelled) setBusy(false); }); return () => { cancelled = true; }; }, [userSettings, t]); async function select(next: DefaultAgentTerminalInterface) { const previous = value; setValue(next); setBusy(true); setError(null); try { const saved = await userSettings.updateUserSettings({ defaultAgentTerminalInterface: next, }); setValue(saved.defaultAgentTerminalInterface ?? "nativeTui"); } catch { setValue(previous); setError(t("settings.terminal.saveError")); } finally { setBusy(false); } } return (
{t("settings.terminal.default")}
{choices.map((choice) => ( ))}

{t("settings.terminal.help")}

{busy && } {error &&

{error}

}
); }