diff --git a/web-app/src/constants/localStorage.ts b/web-app/src/constants/localStorage.ts
index cef01b0fd..bd5e82ca2 100644
--- a/web-app/src/constants/localStorage.ts
+++ b/web-app/src/constants/localStorage.ts
@@ -19,4 +19,5 @@ export const localStorageKey = {
mcpGlobalPermissions: 'mcp-global-permissions',
lastUsedModel: 'last-used-model',
lastUsedAssistant: 'last-used-assistant',
+ setupCompleted: 'setup-completed',
}
diff --git a/web-app/src/containers/SetupScreen.tsx b/web-app/src/containers/SetupScreen.tsx
index 4144e4e0a..e9867b38a 100644
--- a/web-app/src/containers/SetupScreen.tsx
+++ b/web-app/src/containers/SetupScreen.tsx
@@ -5,6 +5,7 @@ import { route } from '@/constants/routes'
import HeaderPage from './HeaderPage'
import { isProd } from '@/lib/version'
import { useTranslation } from '@/i18n/react-i18next-compat'
+import { localStorageKey } from '@/constants/localStorage'
function SetupScreen() {
const { t } = useTranslation()
@@ -12,6 +13,10 @@ function SetupScreen() {
const firstItemRemoteProvider =
providers.length > 0 ? providers[1].provider : 'openai'
+ // Check if setup tour has been completed
+ const isSetupCompleted =
+ localStorage.getItem(localStorageKey.setupCompleted) === 'true'
+
return (
@@ -50,7 +55,9 @@ function SetupScreen() {
providerName: firstItemRemoteProvider,
}}
search={{
- step: 'setup_remote_provider',
+ ...(!isSetupCompleted
+ ? { step: 'setup_remote_provider' }
+ : {}),
}}
>
diff --git a/web-app/src/routes/settings/providers/$providerName.tsx b/web-app/src/routes/settings/providers/$providerName.tsx
index 326500273..f8e6b57c8 100644
--- a/web-app/src/routes/settings/providers/$providerName.tsx
+++ b/web-app/src/routes/settings/providers/$providerName.tsx
@@ -15,7 +15,6 @@ import {
import {
createFileRoute,
Link,
- useNavigate,
useParams,
useSearch,
} from '@tanstack/react-router'
@@ -32,6 +31,7 @@ import { CustomTooltipJoyRide } from '@/containers/CustomeTooltipJoyRide'
import { route } from '@/constants/routes'
import DeleteProvider from '@/containers/dialogs/DeleteProvider'
import { updateSettings, fetchModelsFromProvider } from '@/services/providers'
+import { localStorageKey } from '@/constants/localStorage'
import { Button } from '@/components/ui/button'
import { IconFolderPlus, IconLoader, IconRefresh } from '@tabler/icons-react'
import { getProviders } from '@/services/providers'
@@ -83,7 +83,6 @@ function ProviderDetail() {
const { getProviderByName, setProviders, updateProvider } = useModelProvider()
const provider = getProviderByName(providerName)
const isSetup = step === 'setup_remote_provider'
- const navigate = useNavigate()
// Check if llamacpp provider needs backend configuration
const needsBackendConfig =
@@ -137,9 +136,7 @@ function ProviderDetail() {
const { status } = data
if (status === STATUS.FINISHED) {
- navigate({
- to: route.home,
- })
+ localStorage.setItem(localStorageKey.setupCompleted, 'true')
}
}