Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
51 changes: 48 additions & 3 deletions webview-ui/src/components/settings/ApiOptions.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -243,10 +243,55 @@ const ApiOptions = ({
[selectedProvider],
)

// Base URL for provider documentation
const DOC_BASE_URL = "https://docs.roocode.com/providers"

// Custom URL path mappings for providers with different slugs
const providerUrlSlugs: Record<string, string> = {
"openai-native": "openai",
openai: "openai-compatible",
}

// Helper function to get provider display name from PROVIDERS constant
const getProviderDisplayName = (providerKey: string): string | undefined => {
const provider = PROVIDERS.find((p) => p.value === providerKey)
return provider?.label
}

// Helper function to get the documentation URL and name for the currently selected provider
const getSelectedProviderDocUrl = (): { url: string; name: string } | undefined => {
const displayName = getProviderDisplayName(selectedProvider)
if (!displayName) {
return undefined
}

// Get the URL slug - use custom mapping if available, otherwise use the provider key
const urlSlug = providerUrlSlugs[selectedProvider] || selectedProvider

return {
url: `${DOC_BASE_URL}/${urlSlug}`,
name: displayName,
}
}

return (
<div className="flex flex-col gap-3">
<div>
<label className="block font-medium mb-1">{t("settings:providers.apiProvider")}</label>
<div className="flex flex-col gap-1 relative">
<div className="flex justify-between items-center">
<label className="block font-medium mb-1">{t("settings:providers.apiProvider")}</label>
{getSelectedProviderDocUrl() && (
<div className="text-xs text-vscode-descriptionForeground">
<VSCodeLink
href={getSelectedProviderDocUrl()!.url}
className="hover:text-vscode-foreground"
target="_blank">
{t("settings:providers.providerDocumentation", {
provider: getSelectedProviderDocUrl()!.name,
})}
</VSCodeLink>
</div>
)}
</div>
<Select
value={selectedProvider}
onValueChange={(value) => setApiConfigurationField("apiProvider", value as ApiProvider)}>
Expand All @@ -256,7 +301,7 @@ const ApiOptions = ({
<SelectContent>
<SelectItem value="openrouter">OpenRouter</SelectItem>
<SelectSeparator />
{PROVIDERS.map(({ value, label }) => (
{PROVIDERS.filter((p) => p.value !== "openrouter").map(({ value, label }) => (
<SelectItem key={value} value={value}>
{label}
</SelectItem>
Expand Down
1 change: 1 addition & 0 deletions webview-ui/src/components/settings/constants.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ export const MODELS_BY_PROVIDER: Partial<Record<ApiProvider, Record<string, Mode
}

export const PROVIDERS = [
{ value: "openrouter", label: "OpenRouter" },
{ value: "anthropic", label: "Anthropic" },
{ value: "gemini", label: "Google Gemini" },
{ value: "deepseek", label: "DeepSeek" },
Expand Down
1 change: 1 addition & 0 deletions webview-ui/src/i18n/locales/ca/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,7 @@
},
"providers": {
"configProfile": "Perfil de configuració",
"providerDocumentation": "Documentació de {{provider}}",
"description": "Deseu diferents configuracions d'API per canviar ràpidament entre proveïdors i configuracions.",
"apiProvider": "Proveïdor d'API",
"openRouterApiKey": "Clau API d'OpenRouter",
Expand Down
1 change: 1 addition & 0 deletions webview-ui/src/i18n/locales/de/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,7 @@
},
"providers": {
"configProfile": "Konfigurationsprofil",
"providerDocumentation": "{{provider}}-Dokumentation",
"description": "Speichern Sie verschiedene API-Konfigurationen, um schnell zwischen Anbietern und Einstellungen zu wechseln.",
"apiProvider": "API-Anbieter",
"model": "Modell",
Expand Down
1 change: 1 addition & 0 deletions webview-ui/src/i18n/locales/en/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,7 @@
}
},
"providers": {
"providerDocumentation": "{{provider}} documentation",
"configProfile": "Configuration Profile",
"description": "Save different API configurations to quickly switch between providers and settings.",
"apiProvider": "API Provider",
Expand Down
1 change: 1 addition & 0 deletions webview-ui/src/i18n/locales/es/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,7 @@
},
"providers": {
"configProfile": "Perfil de configuración",
"providerDocumentation": "Documentación de {{provider}}",
"description": "Guarde diferentes configuraciones de API para cambiar rápidamente entre proveedores y ajustes.",
"apiProvider": "Proveedor de API",
"model": "Modelo",
Expand Down
1 change: 1 addition & 0 deletions webview-ui/src/i18n/locales/fr/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,7 @@
},
"providers": {
"configProfile": "Profil de configuration",
"providerDocumentation": "Documentation {{provider}}",
"description": "Enregistrez différentes configurations d'API pour basculer rapidement entre les fournisseurs et les paramètres.",
"apiProvider": "Fournisseur d'API",
"model": "Modèle",
Expand Down
1 change: 1 addition & 0 deletions webview-ui/src/i18n/locales/hi/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,7 @@
},
"providers": {
"configProfile": "कॉन्फिगरेशन प्रोफाइल",
"providerDocumentation": "{{provider}} दस्तावेज़ीकरण",
"description": "विभिन्न API कॉन्फ़िगरेशन सहेजें ताकि प्रदाताओं और सेटिंग्स के बीच त्वरित रूप से स्विच कर सकें।",
"apiProvider": "API प्रदाता",
"model": "मॉडल",
Expand Down
1 change: 1 addition & 0 deletions webview-ui/src/i18n/locales/it/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,7 @@
},
"providers": {
"configProfile": "Profilo di configurazione",
"providerDocumentation": "Documentazione {{provider}}",
"description": "Salva diverse configurazioni API per passare rapidamente tra fornitori e impostazioni.",
"apiProvider": "Fornitore API",
"model": "Modello",
Expand Down
1 change: 1 addition & 0 deletions webview-ui/src/i18n/locales/ja/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,7 @@
},
"providers": {
"configProfile": "設定プロファイル",
"providerDocumentation": "{{provider}}のドキュメント",
"description": "異なるAPI設定を保存して、プロバイダーと設定をすばやく切り替えることができます。",
"apiProvider": "APIプロバイダー",
"model": "モデル",
Expand Down
1 change: 1 addition & 0 deletions webview-ui/src/i18n/locales/ko/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,7 @@
},
"providers": {
"configProfile": "구성 프로필",
"providerDocumentation": "{{provider}} 문서",
"description": "다양한 API 구성을 저장하여 제공자와 설정 간에 빠르게 전환할 수 있습니다.",
"apiProvider": "API 제공자",
"model": "모델",
Expand Down
1 change: 1 addition & 0 deletions webview-ui/src/i18n/locales/pl/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,7 @@
},
"providers": {
"configProfile": "Profil konfiguracji",
"providerDocumentation": "Dokumentacja {{provider}}",
"description": "Zapisz różne konfiguracje API, aby szybko przełączać się między dostawcami i ustawieniami.",
"apiProvider": "Dostawca API",
"model": "Model",
Expand Down
1 change: 1 addition & 0 deletions webview-ui/src/i18n/locales/pt-BR/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,7 @@
},
"providers": {
"configProfile": "Perfil de configuração",
"providerDocumentation": "Documentação do {{provider}}",
"description": "Salve diferentes configurações de API para alternar rapidamente entre provedores e configurações.",
"apiProvider": "Provedor de API",
"model": "Modelo",
Expand Down
1 change: 1 addition & 0 deletions webview-ui/src/i18n/locales/tr/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,7 @@
},
"providers": {
"configProfile": "Yapılandırma Profili",
"providerDocumentation": "{{provider}} Dokümantasyonu",
"description": "Sağlayıcılar ve ayarlar arasında hızlıca geçiş yapmak için farklı API yapılandırmalarını kaydedin.",
"apiProvider": "API Sağlayıcı",
"model": "Model",
Expand Down
1 change: 1 addition & 0 deletions webview-ui/src/i18n/locales/vi/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,7 @@
},
"providers": {
"configProfile": "Hồ sơ cấu hình",
"providerDocumentation": "Tài liệu {{provider}}",
"description": "Lưu các cấu hình API khác nhau để nhanh chóng chuyển đổi giữa các nhà cung cấp và cài đặt.",
"apiProvider": "Nhà cung cấp API",
"model": "Mẫu",
Expand Down
1 change: 1 addition & 0 deletions webview-ui/src/i18n/locales/zh-CN/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,7 @@
},
"providers": {
"configProfile": "配置文件",
"providerDocumentation": "{{provider}} 文档",
"description": "保存不同的 API 配置以快速切换提供商和设置。",
"apiProvider": "API 提供商",
"model": "模型",
Expand Down
1 change: 1 addition & 0 deletions webview-ui/src/i18n/locales/zh-TW/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,7 @@
},
"providers": {
"configProfile": "配置設定檔",
"providerDocumentation": "{{provider}} 文件",
"description": "儲存不同的 API 設定以快速切換提供者和設定。",
"apiProvider": "API 提供者",
"model": "模型",
Expand Down