diff --git a/src/common/layout/optima/Modals.tsx b/src/common/layout/optima/Modals.tsx index efcc4800a..8462bd605 100644 --- a/src/common/layout/optima/Modals.tsx +++ b/src/common/layout/optima/Modals.tsx @@ -2,6 +2,11 @@ import * as React from 'react'; import { optimaActions, optimaOpenPreferences, useOptimaModals } from './useOptima'; +// auto-open models trigger +import { optimaOpenModels } from '~/common/layout/optima/useOptima'; +import { runWhenIdle } from '~/common/util/pwaUtils'; +import { useModelsZeroState } from '~/common/stores/llms/hooks/useModelsZeroState'; + // Modals import { AixDebuggerDialog } from '~/modules/aix/client/debugger/AixDebuggerDialog'; import { LogViewerDialog } from '~/common/logger/viewer/LoggerViewerDialog'; @@ -20,6 +25,16 @@ export function Modals(props: { suspendAutoModelsSetup?: boolean }) { // derived state const { closeAIXDebugger, closeKeyboardShortcuts, closeLogger, closePreferences, openKeyboardShortcuts } = optimaActions(); + + // [effect] Auto-open the configurator - anytime no service is selected + const hasNoServices = useModelsZeroState(); + const autoOpenTrigger = hasNoServices && !props.suspendAutoModelsSetup; + React.useEffect(() => { + if (autoOpenTrigger) + return runWhenIdle(() => optimaOpenModels(), 2000); + }, [autoOpenTrigger]); + + return <> {/* Overlay - Preferences Modal */}