feat(ai): persist default providers to config on first use
Some checks failed
CI Code / Check spelling (pull_request) Successful in 23s
CI Code / Check coding style (pull_request) Successful in 38s
CI Code / Code Coverage (pull_request) Failing after 1m9s
CI Code / Linux (ubuntu) (pull_request) Failing after 2h57m20s
CI Code / Linux (debian) (pull_request) Failing after 2h57m22s
CI Code / Linux (arch) (pull_request) Failing after 2h57m25s

Fix /ai set provider <name> <url> 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.
This commit is contained in:
2026-05-13 21:44:02 +00:00
parent b21d537e80
commit b28b719d11

View File

@@ -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/"));