diff --git a/surfsense_web/components/settings/model-connections/bedrock-connect-form.tsx b/surfsense_web/components/settings/model-connections/bedrock-connect-form.tsx index f76308421..0da545bd8 100644 --- a/surfsense_web/components/settings/model-connections/bedrock-connect-form.tsx +++ b/surfsense_web/components/settings/model-connections/bedrock-connect-form.tsx @@ -113,7 +113,7 @@ export function BedrockConnectForm({ onDraftChange }: ProviderConnectFormProps)

) : null}

- Add Bedrock model IDs from the provider's settings after connecting. + After entering credentials, refresh models to discover the Bedrock catalog for this region.

); diff --git a/surfsense_web/components/settings/model-connections/connection-settings-dialog.tsx b/surfsense_web/components/settings/model-connections/connection-settings-dialog.tsx index 1f16c3bd0..0120e28ed 100644 --- a/surfsense_web/components/settings/model-connections/connection-settings-dialog.tsx +++ b/surfsense_web/components/settings/model-connections/connection-settings-dialog.tsx @@ -2,7 +2,6 @@ import { useAtomValue } from "jotai"; import { Eye, EyeOff, Settings } from "lucide-react"; import { useMemo, useState } from "react"; import { - addManualModelMutationAtom, bulkUpdateModelsMutationAtom, discoverConnectionModelsMutationAtom, testPreviewModelMutationAtom, @@ -50,26 +49,17 @@ export function ConnectionSettingsDialog({ const discoverModels = useAtomValue(discoverConnectionModelsMutationAtom); const testPreviewModel = useAtomValue(testPreviewModelMutationAtom); const updateConnection = useAtomValue(updateModelConnectionMutationAtom); - const addManualModel = useAtomValue(addManualModelMutationAtom); const bulkUpdateModels = useAtomValue(bulkUpdateModelsMutationAtom); - const allowlist = Array.isArray(connection.extra?.model_ids) - ? (connection.extra.model_ids as string[]) - : []; const [isOpen, setIsOpen] = useState(false); const [baseUrlDraft, setBaseUrlDraft] = useState(connection.base_url ?? ""); const [apiKeyDraft, setApiKeyDraft] = useState(""); const [showApiKey, setShowApiKey] = useState(false); - const [allowlistText, setAllowlistText] = useState(allowlist.join(", ")); const [isSavingConnectionSettings, setIsSavingConnectionSettings] = useState(false); const [draftEnabledModelIds, setDraftEnabledModelIds] = useState(() => enabledModelIds(connection.models) ); - const isLocal = - connection.provider === "ollama_chat" || - connection.provider === "lm_studio" || - !connection.base_url?.startsWith("https"); const hasConnectionChanges = baseUrlDraft.trim() !== (connection.base_url ?? "") || apiKeyDraft.trim() !== (connection.api_key ?? ""); @@ -93,7 +83,6 @@ export function ConnectionSettingsDialog({ setBaseUrlDraft(connection.base_url ?? ""); setApiKeyDraft(connection.api_key ?? ""); setShowApiKey(false); - setAllowlistText(allowlist.join(", ")); setIsSavingConnectionSettings(false); setDraftEnabledModelIds(enabledModelIds(connection.models)); } @@ -168,17 +157,6 @@ export function ConnectionSettingsDialog({ } } - function saveAllowlist() { - const ids = allowlistText - .split(",") - .map((value) => value.trim()) - .filter(Boolean); - updateConnection.mutate({ - id: connection.id, - data: { extra: { ...(connection.extra ?? {}), model_ids: ids } }, - }); - } - function handleToggleModel(model: SelectableModel, enabled: boolean) { if (typeof model.id !== "number") return; const modelId = model.id; @@ -276,41 +254,15 @@ export function ConnectionSettingsDialog({ - {!isLocal ? ( -
- -
- setAllowlistText(event.target.value)} - placeholder="Comma-separated, e.g. anthropic/claude-sonnet-4-5, google/gemini-2.5-pro" - /> - -
-

- Leave empty to discover all models. Recommended for providers with large catalogs. -

-
- ) : null} - discoverModels.mutate(connection.id)} - onAddManual={(modelId) => - addManualModel.mutate({ - connectionId: connection.id, - data: { model_id: modelId }, - }) - } onToggleModel={handleToggleModel} onBulkToggle={handleBulkToggle} /> diff --git a/surfsense_web/components/settings/model-connections/model-provider-connections-panel.tsx b/surfsense_web/components/settings/model-connections/model-provider-connections-panel.tsx index a703ab1c8..13fd39894 100644 --- a/surfsense_web/components/settings/model-connections/model-provider-connections-panel.tsx +++ b/surfsense_web/components/settings/model-connections/model-provider-connections-panel.tsx @@ -201,22 +201,6 @@ export function ModelProviderConnectionsPanel({ ); } - function addConnectModel(modelId: string) { - setConnectModels((current) => { - if (current.some((model) => model.model_id === modelId)) return current; - return [ - ...current, - { - model_id: modelId, - display_name: modelId, - source: "MANUAL", - enabled: true, - metadata: {}, - }, - ]; - }); - } - function toggleConnectModel(model: SelectableModel, enabled: boolean) { setConnectModels((current) => current.map((item) => (item.model_id === model.model_id ? { ...item, enabled } : item)) @@ -277,7 +261,6 @@ export function ModelProviderConnectionsPanel({ previewModels={connectModels} isPreviewingModels={previewModels.isPending} onPreviewModels={refreshConnectModels} - onAddPreviewModel={addConnectModel} onTogglePreviewModel={toggleConnectModel} onBulkTogglePreviewModels={bulkToggleConnectModels} /> diff --git a/surfsense_web/components/settings/model-connections/models-selection-panel.tsx b/surfsense_web/components/settings/model-connections/models-selection-panel.tsx index 3c6990afb..6aa0c2661 100644 --- a/surfsense_web/components/settings/model-connections/models-selection-panel.tsx +++ b/surfsense_web/components/settings/model-connections/models-selection-panel.tsx @@ -1,10 +1,7 @@ import { RefreshCw } from "lucide-react"; import { useState } from "react"; -import { Badge } from "@/components/ui/badge"; import { Button } from "@/components/ui/button"; import { Checkbox } from "@/components/ui/checkbox"; -import { Input } from "@/components/ui/input"; -import { Spinner } from "@/components/ui/spinner"; import { capability, capabilityLabels, @@ -18,14 +15,11 @@ interface ModelsSelectionPanelProps { models: SelectableModel[]; description?: string; emptyMessage?: string; - manualInputPlaceholder?: string; refreshLabel?: string; isRefreshing?: boolean; - isAddingManual?: boolean; isUpdatingModel?: boolean; isBulkUpdating?: boolean; onRefresh?: () => void; - onAddManual?: (modelId: string) => void; onToggleModel?: (model: SelectableModel, enabled: boolean) => void; onBulkToggle?: (models: SelectableModel[], enabled: boolean) => void; } @@ -34,18 +28,14 @@ export function ModelsSelectionPanel({ models, description = "Select models to make available for this provider.", emptyMessage = "No models available.", - manualInputPlaceholder = "Add a model ID manually", refreshLabel = "Refresh models", isRefreshing = false, - isAddingManual = false, isUpdatingModel = false, isBulkUpdating = false, onRefresh, - onAddManual, onToggleModel, onBulkToggle, }: ModelsSelectionPanelProps) { - const [manualModelId, setManualModelId] = useState(""); const [modelFilter, setModelFilter] = useState(null); const filteredModels = modelFilter @@ -54,13 +44,6 @@ export function ModelsSelectionPanel({ const allFilteredModelsEnabled = filteredModels.length > 0 && filteredModels.every((model) => model.enabled); - function addModel() { - const modelId = manualModelId.trim(); - if (!modelId || !onAddManual) return; - onAddManual(modelId); - setManualModelId(""); - } - function toggleFilteredModels() { const nextEnabled = !allFilteredModelsEnabled; const changedModels = filteredModels.filter((model) => model.enabled !== nextEnabled); @@ -100,32 +83,6 @@ export function ModelsSelectionPanel({ - {onAddManual ? ( -
- setManualModelId(event.target.value)} - onKeyDown={(event) => { - if (event.key === "Enter") { - event.preventDefault(); - addModel(); - } - }} - placeholder={manualInputPlaceholder} - /> - -
- ) : null} - {models.length > 0 ? (
Filter models @@ -179,11 +136,6 @@ export function ModelsSelectionPanel({
{modelLabel(model)} - {model.source === "MANUAL" ? ( - - manual - - ) : null}
{capabilityLabels(model) || "No discovered capabilities"} diff --git a/surfsense_web/components/settings/model-connections/provider-connect-dialog.tsx b/surfsense_web/components/settings/model-connections/provider-connect-dialog.tsx index 2eee2cf8c..0b795064d 100644 --- a/surfsense_web/components/settings/model-connections/provider-connect-dialog.tsx +++ b/surfsense_web/components/settings/model-connections/provider-connect-dialog.tsx @@ -33,7 +33,6 @@ interface ProviderConnectDialogProps { previewModels?: SelectableModel[]; isPreviewingModels?: boolean; onPreviewModels?: (draft: ConnectionDraft) => void; - onAddPreviewModel?: (modelId: string) => void; onTogglePreviewModel?: (model: SelectableModel, enabled: boolean) => void; onBulkTogglePreviewModels?: (models: SelectableModel[], enabled: boolean) => void; } @@ -53,7 +52,6 @@ export function ProviderConnectDialog({ previewModels = [], isPreviewingModels = false, onPreviewModels, - onAddPreviewModel, onTogglePreviewModel, onBulkTogglePreviewModels, }: ProviderConnectDialogProps) { @@ -130,18 +128,21 @@ export function ProviderConnectDialog({ )} - + {!isAzure ? ( + <> + - onPreviewModels?.(currentDraft) : undefined} - onAddManual={onAddPreviewModel} - onToggleModel={onTogglePreviewModel} - onBulkToggle={onBulkTogglePreviewModels} - /> + onPreviewModels?.(currentDraft) : undefined} + onToggleModel={onTogglePreviewModel} + onBulkToggle={onBulkTogglePreviewModels} + /> + + ) : null}
onOpenChange(false)} diff --git a/surfsense_web/components/settings/model-connections/vertex-connect-form.tsx b/surfsense_web/components/settings/model-connections/vertex-connect-form.tsx index 1027742bc..3701ea14e 100644 --- a/surfsense_web/components/settings/model-connections/vertex-connect-form.tsx +++ b/surfsense_web/components/settings/model-connections/vertex-connect-form.tsx @@ -111,7 +111,7 @@ export function VertexConnectForm({ onDraftChange }: ProviderConnectFormProps) {
)}

- Add Vertex AI model IDs from the provider's settings after connecting. + SurfSense will show supported Vertex AI models from the provider catalog.

);