mirror of
https://github.com/we-promise/sure.git
synced 2026-05-31 16:29:03 +00:00
Adds the Anthropic panel and the install-wide LLM provider selector to the self-hosting settings page, plus a shared data-retention disclosure that covers both OpenAI and Anthropic. - New _llm_provider_selector partial: select for Setting.llm_provider (openai | anthropic), respects the LLM_PROVIDER env var (disables the control + shows the "configured through environment variables" hint when set, mirroring the existing OpenAI panel behaviour), and renders a compact data-handling block with one-line retention statements for each provider. - New _anthropic_settings partial mirrors _openai_settings exactly: password-field for the API key with **** redaction, optional base_url (for AWS Bedrock / GCP Vertex), optional default model. All three fields disable when their ENV var is set. - show.html.erb renders provider selector + OpenAI panel + Anthropic panel under the same "General" section so users can configure either (or both) without switching pages. - Settings::HostingsController#update now permits and persists anthropic_access_token (ignoring the **** placeholder, same pattern as OpenAI), anthropic_base_url, anthropic_model, and llm_provider (validated against %w[openai anthropic]). On Setting::ValidationError the rescue branch preserves anthropic_base_url / anthropic_model input so the form re-renders with the user's typed values intact — parity with the issue #1824 fix for OpenAI. - Locale keys added under settings.hostings.{llm_provider_selector, anthropic_settings}. Tests cover token update + placeholder redaction, base_url + model update, llm_provider switch to anthropic, and rejection of unknown provider values. The existing GET render test still passes, exercising all three new partials. Closes the 5/5 Anthropic series stacked on #1986.
44 lines
1.6 KiB
Plaintext
44 lines
1.6 KiB
Plaintext
<%= content_for :page_title, t(".title") %>
|
|
<%= settings_section title: t(".ai_assistant") do %>
|
|
<%= render "settings/hostings/assistant_settings" %>
|
|
<% end %>
|
|
<%= settings_section title: t(".general") do %>
|
|
<div class="space-y-6">
|
|
<%= render "settings/hostings/llm_provider_selector" %>
|
|
<%= render "settings/hostings/openai_settings" %>
|
|
<%= render "settings/hostings/anthropic_settings" %>
|
|
<%= render "settings/hostings/brand_fetch_settings" %>
|
|
</div>
|
|
<% end %>
|
|
<%= settings_section title: t(".financial_data_providers") do %>
|
|
<div class="space-y-6">
|
|
<%= render "settings/hostings/provider_selection" %>
|
|
<% if @show_yahoo_finance_settings %>
|
|
<%= render "settings/hostings/yahoo_finance_settings" %>
|
|
<% end %>
|
|
<% if @show_twelve_data_settings %>
|
|
<%= render "settings/hostings/twelve_data_settings" %>
|
|
<% end %>
|
|
<% if @show_tiingo_settings %>
|
|
<%= render "settings/hostings/tiingo_settings" %>
|
|
<% end %>
|
|
<% if @show_eodhd_settings %>
|
|
<%= render "settings/hostings/eodhd_settings" %>
|
|
<% end %>
|
|
<% if @show_alpha_vantage_settings %>
|
|
<%= render "settings/hostings/alpha_vantage_settings" %>
|
|
<% end %>
|
|
</div>
|
|
<% end %>
|
|
<%= settings_section title: t(".sync_settings") do %>
|
|
<%= render "settings/hostings/sync_settings" %>
|
|
<% end %>
|
|
<% if Current.user.super_admin? %>
|
|
<%= settings_section title: t(".invites") do %>
|
|
<%= render "settings/hostings/invite_code_settings" %>
|
|
<% end %>
|
|
<% end %>
|
|
<%= settings_section title: t(".danger_zone") do %>
|
|
<%= render "settings/hostings/danger_zone_settings" %>
|
|
<% end %>
|