From cb613b86c1628099b75da2a6c91ecf9b0e32a295 Mon Sep 17 00:00:00 2001 From: Sepehr Ramezani Date: Sun, 29 Mar 2026 09:54:49 +0200 Subject: [PATCH] fix(admin): AI provider and model not persisting after save The model select fields used provider-specific names (AI_MODEL_TAGS_OLLAMA, AI_MODEL_TAGS_OPENAI, etc.) but handleSaveAI read from non-existent formData keys (AI_MODEL_TAGS, AI_MODEL_EMBEDDING). This caused model values to be silently dropped on save, making the provider appear to revert. Now reads from the correct provider-specific field names. Co-Authored-By: Claude Opus 4.5 --- .../app/(main)/admin/settings/admin-settings-form.tsx | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/keep-notes/app/(main)/admin/settings/admin-settings-form.tsx b/keep-notes/app/(main)/admin/settings/admin-settings-form.tsx index d473641..59207dd 100644 --- a/keep-notes/app/(main)/admin/settings/admin-settings-form.tsx +++ b/keep-notes/app/(main)/admin/settings/admin-settings-form.tsx @@ -133,7 +133,7 @@ export function AdminSettingsForm({ config }: { config: Record } if (!tagsProv) throw new Error(t('admin.ai.providerTagsRequired')) data.AI_PROVIDER_TAGS = tagsProv - const tagsModel = formData.get('AI_MODEL_TAGS') as string + const tagsModel = formData.get(`AI_MODEL_TAGS_${tagsProv.toUpperCase()}`) as string if (tagsModel) data.AI_MODEL_TAGS = tagsModel if (tagsProv === 'ollama') { @@ -153,7 +153,7 @@ export function AdminSettingsForm({ config }: { config: Record } if (!embedProv) throw new Error(t('admin.ai.providerEmbeddingRequired')) data.AI_PROVIDER_EMBEDDING = embedProv - const embedModel = formData.get('AI_MODEL_EMBEDDING') as string + const embedModel = formData.get(`AI_MODEL_EMBEDDING_${embedProv.toUpperCase()}`) as string if (embedModel) data.AI_MODEL_EMBEDDING = embedModel if (embedProv === 'ollama') { @@ -179,6 +179,8 @@ export function AdminSettingsForm({ config }: { config: Record } toast.success(t('admin.ai.updateSuccess')) setTagsProvider(tagsProv) setEmbeddingsProvider(embedProv) + if (tagsModel) setSelectedTagsModel(tagsModel) + if (embedModel) setSelectedEmbeddingModel(embedModel) // Refresh models after save if Ollama is selected if (tagsProv === 'ollama') {