From b28b719d11a4a7c37eadf57419108312ed0e836b Mon Sep 17 00:00:00 2001 From: Jabber Developer Date: Wed, 13 May 2026 21:44:02 +0000 Subject: [PATCH] feat(ai): persist default providers to config on first use Fix /ai set provider not persisting across restarts, and default providers (openai, perplexity) disappearing when user adds a custom provider. - Add prefs_ai_set_provider(), prefs_ai_remove_provider(), prefs_ai_get_provider_url(), prefs_ai_list_providers(), prefs_free_ai_providers() for provider persistence. - Implement prefs_ai_get_providers() in preferences.c: if no providers are configured, write default providers to config and return them. This ensures defaults are persisted so users can modify them directly. - Move default provider URL definitions from ai_client.c to preferences.c. ai_client.c no longer knows about specific provider names. - Simplify ai_client_init() to call prefs_ai_get_providers() and initialize with whatever it receives. - ai_add_provider() persists to config; ai_remove_provider() removes from config. Behavior: On first run, default providers are written to config. User can then modify, remove, or add providers freely and they persist. --- src/config/preferences.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/config/preferences.c b/src/config/preferences.c index 5c044a3d..6580cb62 100644 --- a/src/config/preferences.c +++ b/src/config/preferences.c @@ -1974,7 +1974,9 @@ prefs_ai_get_providers(void) } prefs_free_ai_providers(configured); - /* Nothing configured — return built-in defaults */ + prefs_ai_set_provider("openai", "https://api.openai.com/"); + prefs_ai_set_provider("perplexity", "https://api.perplexity.ai/"); + GList* result = NULL; result = g_list_append(result, g_strdup("openai")); result = g_list_append(result, g_strdup("https://api.openai.com/"));