diff --git a/packages/ui/src/components/views/OpenCodeReloadFooterAction.tsx b/packages/ui/src/components/views/OpenCodeReloadFooterAction.tsx new file mode 100644 index 00000000..042df3c7 --- /dev/null +++ b/packages/ui/src/components/views/OpenCodeReloadFooterAction.tsx @@ -0,0 +1,182 @@ +import * as React from 'react'; +import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle } from '@/components/ui/dialog'; +import { Icon } from '@/components/icon/Icon'; +import { toast } from '@/components/ui'; +import { useI18n } from '@/lib/i18n'; +import { applyPendingOpenCodeRestart } from '@/lib/opencode/deferredRestart'; +import { cn } from '@/lib/utils'; +import { reloadOpenCodeConfiguration } from '@/stores/useAgentsStore'; +import { + selectPendingOpenCodeRestartCount, + usePendingOpenCodeRestartStore, +} from '@/stores/usePendingOpenCodeRestartStore'; +import { useUIStore } from '@/stores/useUIStore'; + +type OpenCodeReloadFooterActionProps = { + className?: string; +}; + +export const OpenCodeReloadFooterAction: React.FC = ({ + className, +}) => { + const { t } = useI18n(); + const pendingCount = usePendingOpenCodeRestartStore(selectPendingOpenCodeRestartCount); + const isApplying = usePendingOpenCodeRestartStore((state) => state.isApplying); + const showRestartConfirm = useUIStore((state) => state.showOpenCodeRestartConfirm); + const setShowOpenCodeRestartConfirm = useUIStore((state) => state.setShowOpenCodeRestartConfirm); + const [confirmOpen, setConfirmOpen] = React.useState(false); + const [dontShowAgain, setDontShowAgain] = React.useState(false); + + const hasPending = pendingCount > 0; + + const runApply = React.useCallback(async () => { + try { + const result = await applyPendingOpenCodeRestart({ + message: t('settings.view.pendingRestart.applying'), + }); + if (result.requiresManualRestart) { + toast.warning(t('settings.view.pendingRestart.manualRestartRequired')); + return; + } + if (result.ok) { + toast.success(t('settings.view.pendingRestart.applied')); + } + } catch (error) { + const message = error instanceof Error && error.message + ? error.message + : t('settings.view.pendingRestart.applyFailed'); + toast.error(message); + } + }, [t]); + + const runManualReload = React.useCallback(async () => { + try { + await reloadOpenCodeConfiguration({ + message: t('settings.view.pendingRestart.applying'), + mode: 'projects', + scopes: ['all'], + }); + usePendingOpenCodeRestartStore.getState().clear(); + } catch { + // ignore + } + }, [t]); + + const handleConfirmApply = React.useCallback(() => { + if (dontShowAgain) { + setShowOpenCodeRestartConfirm(false); + } + setConfirmOpen(false); + setDontShowAgain(false); + void runApply(); + }, [dontShowAgain, runApply, setShowOpenCodeRestartConfirm]); + + const handleClick = React.useCallback(() => { + if (!hasPending) { + void runManualReload(); + return; + } + if (showRestartConfirm) { + setDontShowAgain(false); + setConfirmOpen(true); + return; + } + void runApply(); + }, [hasPending, runApply, runManualReload, showRestartConfirm]); + + const label = !hasPending + ? t('settings.view.actions.reloadOpenCode') + : isApplying + ? t('settings.view.pendingRestart.applying') + : t('settings.view.actions.applyAndRestartOpenCode'); + + const tooltip = !hasPending + ? t('settings.view.actions.reloadOpenCodeTooltip') + : pendingCount === 1 + ? t('settings.view.actions.applyAndRestartOpenCodeTooltipSingle') + : t('settings.view.actions.applyAndRestartOpenCodeTooltipPlural', { count: pendingCount }); + + return ( + <> + + + { + setConfirmOpen(open); + if (!open) { + setDontShowAgain(false); + } + }} + > + + + {t('settings.view.pendingRestart.confirm.title')} + + {t('settings.view.pendingRestart.confirm.description')} + + + + +
+ + +
+
+
+
+ + ); +}; diff --git a/packages/ui/src/components/views/PendingOpenCodeRestartAction.tsx b/packages/ui/src/components/views/PendingOpenCodeRestartAction.tsx deleted file mode 100644 index 25d19a42..00000000 --- a/packages/ui/src/components/views/PendingOpenCodeRestartAction.tsx +++ /dev/null @@ -1,81 +0,0 @@ -import * as React from 'react'; -import { Button } from '@/components/ui/button'; -import { Icon } from '@/components/icon/Icon'; -import { useI18n } from '@/lib/i18n'; -import { applyPendingOpenCodeRestart } from '@/lib/opencode/deferredRestart'; -import { - selectPendingOpenCodeRestartCount, - usePendingOpenCodeRestartStore, -} from '@/stores/usePendingOpenCodeRestartStore'; -import { toast } from '@/components/ui'; -import { cn } from '@/lib/utils'; - -type PendingOpenCodeRestartActionProps = { - className?: string; - compact?: boolean; -}; - -export const PendingOpenCodeRestartAction: React.FC = ({ - className, - compact = false, -}) => { - const { t } = useI18n(); - const pendingCount = usePendingOpenCodeRestartStore(selectPendingOpenCodeRestartCount); - const isApplying = usePendingOpenCodeRestartStore((state) => state.isApplying); - - const handleApply = React.useCallback(async () => { - try { - const result = await applyPendingOpenCodeRestart({ - message: t('settings.view.pendingRestart.applying'), - }); - if (result.requiresManualRestart) { - toast.warning(t('settings.view.pendingRestart.manualRestartRequired')); - return; - } - if (result.ok) { - toast.success(t('settings.view.pendingRestart.applied')); - } - } catch (error) { - const message = error instanceof Error && error.message - ? error.message - : t('settings.view.pendingRestart.applyFailed'); - toast.error(message); - } - }, [t]); - - if (pendingCount <= 0) { - return null; - } - - const tooltip = pendingCount === 1 - ? t('settings.view.actions.applyAndRestartOpenCodeTooltipSingle') - : t('settings.view.actions.applyAndRestartOpenCodeTooltipPlural', { count: pendingCount }); - - return ( - - ); -}; diff --git a/packages/ui/src/components/views/SettingsView.tsx b/packages/ui/src/components/views/SettingsView.tsx index ca9e7fec..f9038b56 100644 --- a/packages/ui/src/components/views/SettingsView.tsx +++ b/packages/ui/src/components/views/SettingsView.tsx @@ -9,7 +9,7 @@ import { useSnippetsStore } from '@/stores/useSnippetsStore'; import { useSkillsStore } from '@/stores/useSkillsStore'; import { useSkillsCatalogStore } from '@/stores/useSkillsCatalogStore'; import { useConfigStore } from '@/stores/useConfigStore'; -import { Tooltip, TooltipContent, TooltipTrigger } from '@/components/ui/tooltip'; +import { Tooltip, TooltipTrigger } from '@/components/ui/tooltip'; import { ErrorBoundary } from '@/components/ui/ErrorBoundary'; import { AgentsSidebar } from '@/components/sections/agents/AgentsSidebar'; import { AgentsPage } from '@/components/sections/agents/AgentsPage'; @@ -48,8 +48,7 @@ import { useI18n } from '@/lib/i18n'; import { Icon } from "@/components/icon/Icon"; import type { IconName } from "@/components/icon/icons"; import { McpIcon } from '@/components/icons/McpIcon'; -import { reloadOpenCodeConfiguration } from '@/stores/useAgentsStore'; -import { PendingOpenCodeRestartAction } from '@/components/views/PendingOpenCodeRestartAction'; +import { OpenCodeReloadFooterAction } from '@/components/views/OpenCodeReloadFooterAction'; import { selectPendingOpenCodeRestartCount, usePendingOpenCodeRestartStore, @@ -979,42 +978,10 @@ export const SettingsView: React.FC = ({ onClose, forceMobile {/* Footer */}
-
- {!runtimeCtx.isVSCode && pendingRestartCount <= 0 && ( - - - - - - {t('settings.view.actions.reloadOpenCodeTooltip')} - - +
+ {(!runtimeCtx.isVSCode || pendingRestartCount > 0) && ( + )} -
@@ -1132,8 +1099,6 @@ export const SettingsView: React.FC = ({ onClose, forceMobile )} - - {onClose && ( - )} - + + )} )} diff --git a/packages/ui/src/lib/i18n/messages/en.settings.ts b/packages/ui/src/lib/i18n/messages/en.settings.ts index 2cd8dca9..aac7b54d 100644 --- a/packages/ui/src/lib/i18n/messages/en.settings.ts +++ b/packages/ui/src/lib/i18n/messages/en.settings.ts @@ -48,6 +48,10 @@ export const settingsDict = { 'settings.view.pendingRestart.applyFailed': 'Failed to apply configuration changes.', 'settings.view.pendingRestart.manualRestartRequired': 'Saved on disk. Restart your connected OpenCode server to apply the changes.', 'settings.view.pendingRestart.saved': 'Saved. Restart OpenCode to apply.', + 'settings.view.pendingRestart.confirm.title': 'Apply & restart OpenCode?', + 'settings.view.pendingRestart.confirm.description': 'Restarting OpenCode will stop any running chats. Your saved configuration changes will take effect after the restart.', + 'settings.view.pendingRestart.confirm.dontShowAgain': 'Don\'t show this again', + 'settings.view.pendingRestart.confirm.cancel': 'Cancel', 'settings.view.actions.backToSettings': 'Back to Settings', 'settings.view.actions.closeSettings': 'Close settings', 'settings.view.actions.openSectionList': 'Open section list', diff --git a/packages/ui/src/lib/i18n/messages/es.settings.ts b/packages/ui/src/lib/i18n/messages/es.settings.ts index 4e32537b..4c09c925 100644 --- a/packages/ui/src/lib/i18n/messages/es.settings.ts +++ b/packages/ui/src/lib/i18n/messages/es.settings.ts @@ -49,7 +49,11 @@ export const settingsDict = { "settings.view.pendingRestart.applyFailed": "No se pudieron aplicar los cambios de configuración.", "settings.view.pendingRestart.manualRestartRequired": "Guardado en disco. Reinicia el servidor OpenCode conectado para aplicar los cambios.", "settings.view.pendingRestart.saved": "Guardado. Reinicia OpenCode para aplicar.", - "settings.view.actions.backToSettings": "Volver a Configuración", + + "settings.view.pendingRestart.confirm.title": "¿Aplicar y reiniciar OpenCode?", + "settings.view.pendingRestart.confirm.description": "Reiniciar OpenCode detendrá cualquier chat en ejecución. Los cambios de configuración guardados se aplicarán después del reinicio.", + "settings.view.pendingRestart.confirm.dontShowAgain": "No volver a mostrar", + "settings.view.pendingRestart.confirm.cancel": "Cancelar", "settings.view.actions.backToSettings": "Volver a Configuración", "settings.view.actions.closeSettings": "Cerrar configuración", "settings.view.actions.openSectionList": "Abrir lista de secciones", "settings.view.actions.closeSettingsWithShortcut": "Cerrar configuración ({shortcut}+,)", diff --git a/packages/ui/src/lib/i18n/messages/fr.settings.ts b/packages/ui/src/lib/i18n/messages/fr.settings.ts index f1e876e1..2e5534f3 100644 --- a/packages/ui/src/lib/i18n/messages/fr.settings.ts +++ b/packages/ui/src/lib/i18n/messages/fr.settings.ts @@ -49,7 +49,11 @@ export const settingsDict = { 'settings.view.pendingRestart.applyFailed': 'Échec de l\'application des modifications de configuration.', 'settings.view.pendingRestart.manualRestartRequired': 'Enregistré sur le disque. Redémarrez le serveur OpenCode connecté pour appliquer les modifications.', 'settings.view.pendingRestart.saved': 'Enregistré. Redémarrez OpenCode pour appliquer.', - 'settings.view.actions.backToSettings': 'Retour aux paramètres', + + 'settings.view.pendingRestart.confirm.title': 'Appliquer et redémarrer OpenCode ?', + 'settings.view.pendingRestart.confirm.description': 'Le redémarrage de OpenCode arrêtera tous les chats en cours. Vos modifications de configuration enregistrées prendront effet après le redémarrage.', + 'settings.view.pendingRestart.confirm.dontShowAgain': 'Ne plus afficher', + 'settings.view.pendingRestart.confirm.cancel': 'Annuler', 'settings.view.actions.backToSettings': 'Retour aux paramètres', 'settings.view.actions.closeSettings': 'Fermer les paramètres', 'settings.view.actions.openSectionList': 'Ouvrir la liste des sections', 'settings.view.actions.closeSettingsWithShortcut': 'Fermer les paramètres ({shortcut}+,)', diff --git a/packages/ui/src/lib/i18n/messages/ja.settings.ts b/packages/ui/src/lib/i18n/messages/ja.settings.ts index 75842698..e811aec3 100644 --- a/packages/ui/src/lib/i18n/messages/ja.settings.ts +++ b/packages/ui/src/lib/i18n/messages/ja.settings.ts @@ -49,7 +49,11 @@ export const settingsDict = { 'settings.view.pendingRestart.applyFailed': '設定変更の適用に失敗しました。', 'settings.view.pendingRestart.manualRestartRequired': 'ディスクに保存しました。接続中の OpenCode サーバーを再起動して変更を適用してください。', 'settings.view.pendingRestart.saved': '保存しました。適用するには OpenCode を再起動してください。', - 'settings.view.actions.backToSettings': '設定に戻る', + + 'settings.view.pendingRestart.confirm.title': '適用して OpenCode を再起動しますか?', + 'settings.view.pendingRestart.confirm.description': 'OpenCode を再起動すると実行中のチャットが停止します。保存済みの設定変更は再起動後に反映されます。', + 'settings.view.pendingRestart.confirm.dontShowAgain': '今後表示しない', + 'settings.view.pendingRestart.confirm.cancel': 'キャンセル', 'settings.view.actions.backToSettings': '設定に戻る', 'settings.view.actions.closeSettings': '設定を閉じる', 'settings.view.actions.openSectionList': 'セクション一覧を開く', 'settings.view.actions.closeSettingsWithShortcut': '設定を閉じる ({shortcut}+,)', diff --git a/packages/ui/src/lib/i18n/messages/ko.settings.ts b/packages/ui/src/lib/i18n/messages/ko.settings.ts index bba717c1..f8aff478 100644 --- a/packages/ui/src/lib/i18n/messages/ko.settings.ts +++ b/packages/ui/src/lib/i18n/messages/ko.settings.ts @@ -49,7 +49,11 @@ export const settingsDict = { 'settings.view.pendingRestart.applyFailed': '구성 변경을 적용하지 못했습니다.', 'settings.view.pendingRestart.manualRestartRequired': '디스크에 저장되었습니다. 연결된 OpenCode 서버를 다시 시작하여 변경 사항을 적용하세요.', 'settings.view.pendingRestart.saved': '저장되었습니다. 적용하려면 OpenCode를 다시 시작하세요.', - 'settings.view.actions.backToSettings': '설정으로 돌아가기', + + 'settings.view.pendingRestart.confirm.title': '적용하고 OpenCode를 다시 시작할까요?', + 'settings.view.pendingRestart.confirm.description': 'OpenCode를 다시 시작하면 실행 중인 채팅이 중지됩니다. 저장된 구성 변경 사항은 다시 시작 후 적용됩니다.', + 'settings.view.pendingRestart.confirm.dontShowAgain': '다시 표시하지 않음', + 'settings.view.pendingRestart.confirm.cancel': '취소', 'settings.view.actions.backToSettings': '설정으로 돌아가기', 'settings.view.actions.closeSettings': '설정 닫기', 'settings.view.actions.openSectionList': '섹션 목록 열기', 'settings.view.actions.closeSettingsWithShortcut': '설정 닫기 ({shortcut}+,)', diff --git a/packages/ui/src/lib/i18n/messages/pl.settings.ts b/packages/ui/src/lib/i18n/messages/pl.settings.ts index aed25553..2da6a368 100644 --- a/packages/ui/src/lib/i18n/messages/pl.settings.ts +++ b/packages/ui/src/lib/i18n/messages/pl.settings.ts @@ -1922,7 +1922,11 @@ export const settingsDict = { 'settings.view.pendingRestart.applyFailed': 'Nie udało się zastosować zmian konfiguracji.', 'settings.view.pendingRestart.manualRestartRequired': 'Zapisano na dysku. Uruchom ponownie podłączony serwer OpenCode, aby zastosować zmiany.', 'settings.view.pendingRestart.saved': 'Zapisano. Uruchom ponownie OpenCode, aby zastosować.', - 'settings.view.actions.resizeNavigation': 'Zmień rozmiar nawigacji', + + 'settings.view.pendingRestart.confirm.title': 'Zastosować i uruchomić ponownie OpenCode?', + 'settings.view.pendingRestart.confirm.description': 'Ponowne uruchomienie OpenCode zatrzyma wszystkie aktywne czaty. Zapisane zmiany konfiguracji zaczną obowiązywać po restarcie.', + 'settings.view.pendingRestart.confirm.dontShowAgain': 'Nie pokazuj ponownie', + 'settings.view.pendingRestart.confirm.cancel': 'Anuluj', 'settings.view.actions.resizeNavigation': 'Zmień rozmiar nawigacji', 'settings.view.search.placeholder': 'Szukaj ustawień', 'settings.view.search.aria': 'Szukaj ustawień', 'settings.view.search.clear': 'Wyczyść wyszukiwanie ustawień', diff --git a/packages/ui/src/lib/i18n/messages/pt-BR.settings.ts b/packages/ui/src/lib/i18n/messages/pt-BR.settings.ts index f45b36e7..937d1db0 100644 --- a/packages/ui/src/lib/i18n/messages/pt-BR.settings.ts +++ b/packages/ui/src/lib/i18n/messages/pt-BR.settings.ts @@ -49,7 +49,11 @@ export const settingsDict = { "settings.view.pendingRestart.applyFailed": "Falha ao aplicar as alterações de configuração.", "settings.view.pendingRestart.manualRestartRequired": "Salvo no disco. Reinicie o servidor OpenCode conectado para aplicar as alterações.", "settings.view.pendingRestart.saved": "Salvo. Reinicie o OpenCode para aplicar.", - "settings.view.actions.backToSettings": "Voltar às configurações", + + "settings.view.pendingRestart.confirm.title": "Aplicar e reiniciar o OpenCode?", + "settings.view.pendingRestart.confirm.description": "Reiniciar o OpenCode interromperá quaisquer chats em execução. As alterações de configuração salvas entrarão em vigor após a reinicialização.", + "settings.view.pendingRestart.confirm.dontShowAgain": "Não mostrar novamente", + "settings.view.pendingRestart.confirm.cancel": "Cancelar", "settings.view.actions.backToSettings": "Voltar às configurações", "settings.view.actions.closeSettings": "Fechar configurações", "settings.view.actions.openSectionList": "Abrir lista de seções", "settings.view.actions.closeSettingsWithShortcut": "Fechar configurações ({shortcut}+,)", diff --git a/packages/ui/src/lib/i18n/messages/uk.settings.ts b/packages/ui/src/lib/i18n/messages/uk.settings.ts index 401455e7..fd4dc9b6 100644 --- a/packages/ui/src/lib/i18n/messages/uk.settings.ts +++ b/packages/ui/src/lib/i18n/messages/uk.settings.ts @@ -49,7 +49,11 @@ export const settingsDict = { "settings.view.pendingRestart.applyFailed": "Не вдалося застосувати зміни конфігурації.", "settings.view.pendingRestart.manualRestartRequired": "Збережено на диску. Перезапустіть підключений сервер OpenCode, щоб застосувати зміни.", "settings.view.pendingRestart.saved": "Збережено. Перезапустіть OpenCode, щоб застосувати.", - "settings.view.actions.backToSettings": "Назад до налаштувань", + + "settings.view.pendingRestart.confirm.title": "Застосувати та перезапустити OpenCode?", + "settings.view.pendingRestart.confirm.description": "Перезапуск OpenCode зупинить усі активні чати. Збережені зміни конфігурації набудуть чинності після перезапуску.", + "settings.view.pendingRestart.confirm.dontShowAgain": "Більше не показувати", + "settings.view.pendingRestart.confirm.cancel": "Скасувати", "settings.view.actions.backToSettings": "Назад до налаштувань", "settings.view.actions.closeSettings": "Закрити налаштування", "settings.view.actions.openSectionList": "Відкрити список розділів", "settings.view.actions.closeSettingsWithShortcut": "Закрити налаштування ({shortcut}+,)", diff --git a/packages/ui/src/lib/i18n/messages/zh-CN.settings.ts b/packages/ui/src/lib/i18n/messages/zh-CN.settings.ts index 087c01e2..47c2c5fe 100644 --- a/packages/ui/src/lib/i18n/messages/zh-CN.settings.ts +++ b/packages/ui/src/lib/i18n/messages/zh-CN.settings.ts @@ -49,7 +49,11 @@ export const settingsDict = { 'settings.view.pendingRestart.applyFailed': '应用配置更改失败。', 'settings.view.pendingRestart.manualRestartRequired': '已保存到磁盘。请重启已连接的 OpenCode 服务器以应用更改。', 'settings.view.pendingRestart.saved': '已保存。请重启 OpenCode 以应用。', - 'settings.view.actions.backToSettings': '返回设置', + + 'settings.view.pendingRestart.confirm.title': '应用并重启 OpenCode?', + 'settings.view.pendingRestart.confirm.description': '重启 OpenCode 将停止所有正在运行的聊天。已保存的配置更改将在重启后生效。', + 'settings.view.pendingRestart.confirm.dontShowAgain': '不再显示', + 'settings.view.pendingRestart.confirm.cancel': '取消', 'settings.view.actions.backToSettings': '返回设置', 'settings.view.actions.closeSettings': '关闭设置', 'settings.view.actions.openSectionList': '打开分组列表', 'settings.view.actions.closeSettingsWithShortcut': '关闭设置({shortcut}+,)', diff --git a/packages/ui/src/lib/i18n/messages/zh-TW.settings.ts b/packages/ui/src/lib/i18n/messages/zh-TW.settings.ts index 8d8925e2..52ee3287 100644 --- a/packages/ui/src/lib/i18n/messages/zh-TW.settings.ts +++ b/packages/ui/src/lib/i18n/messages/zh-TW.settings.ts @@ -47,7 +47,11 @@ 'settings.view.pendingRestart.applyFailed': '套用設定變更失敗。', 'settings.view.pendingRestart.manualRestartRequired': '已儲存到磁碟。請重新啟動已連線的 OpenCode 伺服器以套用變更。', 'settings.view.pendingRestart.saved': '已儲存。請重新啟動 OpenCode 以套用。', - 'settings.view.actions.backToSettings': '返回設定頁', + + 'settings.view.pendingRestart.confirm.title': '套用並重新啟動 OpenCode?', + 'settings.view.pendingRestart.confirm.description': '重新啟動 OpenCode 將停止任何執行中的聊天。已儲存的設定變更將在重新啟動後生效。', + 'settings.view.pendingRestart.confirm.dontShowAgain': '不要再顯示', + 'settings.view.pendingRestart.confirm.cancel': '取消', 'settings.view.actions.backToSettings': '返回設定頁', 'settings.view.actions.closeSettings': '關閉設定', 'settings.view.actions.openSectionList': '開啟群組清單', 'settings.view.actions.closeSettingsWithShortcut': '關閉設定({shortcut}+,)', diff --git a/packages/ui/src/stores/useUIStore.ts b/packages/ui/src/stores/useUIStore.ts index d00bb6ff..2e3923b7 100644 --- a/packages/ui/src/stores/useUIStore.ts +++ b/packages/ui/src/stores/useUIStore.ts @@ -621,6 +621,8 @@ interface UIStore { chatRenderMode: ChatRenderMode; activityRenderMode: ActivityRenderMode; showDeletionDialog: boolean; + /** When true, confirm before applying deferred OpenCode restart from Settings. */ + showOpenCodeRestartConfirm: boolean; autoDeleteEnabled: boolean; /** Global file-editor autosave. Default true for backward compatibility. */ autoSaveEnabled: boolean; @@ -785,6 +787,7 @@ interface UIStore { setChatRenderMode: (value: ChatRenderMode) => void; setActivityRenderMode: (value: ActivityRenderMode) => void; setShowDeletionDialog: (value: boolean) => void; + setShowOpenCodeRestartConfirm: (value: boolean) => void; setAutoDeleteEnabled: (value: boolean) => void; setAutoSaveEnabled: (value: boolean) => void; setAutoDeleteAfterDays: (days: number) => void; @@ -941,6 +944,7 @@ export const useUIStore = create()( chatRenderMode: 'live', activityRenderMode: 'summary', showDeletionDialog: true, + showOpenCodeRestartConfirm: true, autoDeleteEnabled: false, autoSaveEnabled: true, autoDeleteAfterDays: 30, @@ -1678,6 +1682,10 @@ export const useUIStore = create()( set({ showDeletionDialog: value }); }, + setShowOpenCodeRestartConfirm: (value) => { + set({ showOpenCodeRestartConfirm: value }); + }, + setAutoDeleteEnabled: (value) => { set({ autoDeleteEnabled: value }); }, @@ -2417,6 +2425,7 @@ export const useUIStore = create()( chatRenderMode: state.chatRenderMode, activityRenderMode: state.activityRenderMode, showDeletionDialog: state.showDeletionDialog, + showOpenCodeRestartConfirm: state.showOpenCodeRestartConfirm, autoDeleteEnabled: state.autoDeleteEnabled, autoSaveEnabled: state.autoSaveEnabled, autoDeleteAfterDays: state.autoDeleteAfterDays,