diff --git a/surfsense_web/components/new-chat/model-selector.tsx b/surfsense_web/components/new-chat/model-selector.tsx
index 90226dde5..59e396717 100644
--- a/surfsense_web/components/new-chat/model-selector.tsx
+++ b/surfsense_web/components/new-chat/model-selector.tsx
@@ -1,7 +1,7 @@
"use client";
import { useAtom, useAtomValue } from "jotai";
-import { Check, ChevronDown, Cpu, Search, Settings2, Zap } from "lucide-react";
+import { Check, ChevronDown, Search, Settings2 } from "lucide-react";
import { useRouter } from "next/navigation";
import type { UIEvent } from "react";
import { useCallback, useMemo, useState } from "react";
@@ -26,7 +26,7 @@ import { Popover, PopoverContent, PopoverTrigger } from "@/components/ui/popover
import { Spinner } from "@/components/ui/spinner";
import type { ConnectionRead, ModelRead } from "@/contracts/types/model-connections.types";
import { useIsMobile } from "@/hooks/use-mobile";
-import { getProviderIcon } from "@/lib/provider-icons";
+import { AUTO_PROVIDER_ICON_KEY, getProviderIcon } from "@/lib/provider-icons";
import { cn } from "@/lib/utils";
import { providerDisplay } from "../settings/model-connections/provider-metadata";
@@ -153,13 +153,10 @@ export function ModelSelector({
className="flex w-full items-center justify-between rounded-md px-3 py-2 text-left transition-colors hover:bg-accent hover:text-accent-foreground"
onClick={() => selectModel(0)}
>
-
-
-
-
-
-
Auto
-
Use the hosted/global router
+
+
+ {getProviderIcon(AUTO_PROVIDER_ICON_KEY, { className: "size-4 shrink-0" })}
+ Auto
{(roles?.chat_model_id ?? 0) === 0 ?
: null}
@@ -252,7 +249,7 @@ export function ModelSelector({
{selected ? (
getProviderIcon(selected.provider, { className: "size-4 shrink-0" })
) : (
-
+ getProviderIcon(AUTO_PROVIDER_ICON_KEY, { className: "size-4 shrink-0" })
)}
{selected ? modelName(selected) : "Auto"}
diff --git a/surfsense_web/components/settings/model-connections-settings.tsx b/surfsense_web/components/settings/model-connections-settings.tsx
index bedd028bf..3b30b1558 100644
--- a/surfsense_web/components/settings/model-connections-settings.tsx
+++ b/surfsense_web/components/settings/model-connections-settings.tsx
@@ -18,6 +18,7 @@ import {
} from "@/components/ui/select";
import { Separator } from "@/components/ui/separator";
import type { ConnectionRead, ModelRead } from "@/contracts/types/model-connections.types";
+import { AUTO_PROVIDER_ICON_KEY, getProviderIcon } from "@/lib/provider-icons";
import { ModelProviderConnectionsPanel } from "./model-connections/model-provider-connections-panel";
import { capability, modelLabel } from "./model-connections/model-utils";
import { providerDisplay, providerIcon } from "./model-connections/provider-metadata";
@@ -38,6 +39,17 @@ function roleSelectValue(modelId: number | null | undefined, models: Array<{ id:
return models.some((model) => model.id === modelId) ? String(modelId) : "0";
}
+function renderAutoModeOption() {
+ return (
+
+
+ {getProviderIcon(AUTO_PROVIDER_ICON_KEY)}
+ Auto mode
+
+
+ );
+}
+
export function ModelConnectionsSettings({ searchSpaceId }: { searchSpaceId: number }) {
const [{ data: globalConnections = [] }] = useAtom(globalModelConnectionsAtom);
const [{ data: connections = [] }] = useAtom(modelConnectionsAtom);
@@ -90,7 +102,7 @@ export function ModelConnectionsSettings({ searchSpaceId }: { searchSpaceId: num
- Auto mode
+ {renderAutoModeOption()}
{chatModels.map(renderModelOption)}
@@ -109,7 +121,7 @@ export function ModelConnectionsSettings({ searchSpaceId }: { searchSpaceId: num
- Auto mode
+ {renderAutoModeOption()}
{visionModels.map(renderModelOption)}
@@ -125,7 +137,7 @@ export function ModelConnectionsSettings({ searchSpaceId }: { searchSpaceId: num
- Auto mode
+ {renderAutoModeOption()}
{imageModels.map(renderModelOption)}
diff --git a/surfsense_web/lib/provider-icons.tsx b/surfsense_web/lib/provider-icons.tsx
index 4b2a4dfbe..d3e799720 100644
--- a/surfsense_web/lib/provider-icons.tsx
+++ b/surfsense_web/lib/provider-icons.tsx
@@ -38,6 +38,8 @@ import {
} from "@/components/icons/providers";
import { cn } from "@/lib/utils";
+export const AUTO_PROVIDER_ICON_KEY = "AUTO";
+
/**
* Returns a Lucide icon element for the given LLM / image-gen provider.
* Accepts an optional `className` override for the icon size.
@@ -46,7 +48,7 @@ export function getProviderIcon(
provider: string,
{ isAutoMode, className = "size-4" }: { isAutoMode?: boolean; className?: string } = {}
) {
- if (isAutoMode || provider?.toUpperCase() === "AUTO") {
+ if (isAutoMode || provider?.toUpperCase() === AUTO_PROVIDER_ICON_KEY) {
return ;
}