Skip to content

Commit 2d049c3

Browse files
Add custom provider editor to API modes
Split provider management from API mode saving so users can add and edit custom OpenAI-compatible providers in a dedicated editor. Require a full chat-completions endpoint URL for provider setup and derive the paired completions endpoint with shared popup utilities backed by unit tests. Keep API mode provider binding explicit at save time and preserve provider-secret synchronization in General settings for backward compatibility. Add provider-related locale keys across supported locales.
1 parent 26f595d commit 2d049c3

29 files changed

+6919
-243
lines changed

src/_locales/de/main.json

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@
7979
"ChatGPT (GPT-4-32k)": "ChatGPT (GPT-4-32k)",
8080
"GPT-3.5": "GPT-3.5",
8181
"Custom Model": "Benutzerdefiniertes Modell",
82+
"Custom Provider": "Benutzerdefinierter Anbieter",
8283
"Balanced": "Ausgeglichen",
8384
"Creative": "Kreativ",
8485
"Precise": "Präzise",
@@ -96,6 +97,7 @@
9697
"Pin": "Anheften",
9798
"Unpin": "Loslösen",
9899
"Delete Conversation": "Konversation löschen",
100+
"Delete": "Löschen",
99101
"Clear conversations": "Konversationen löschen",
100102
"Settings": "Einstellungen",
101103
"Feature Pages": "Funktionsseiten",
@@ -115,6 +117,7 @@
115117
"Modules": "Module",
116118
"API Params": "API-Parameter",
117119
"API Url": "API-URL",
120+
"Provider": "Anbieter",
118121
"Others": "Andere",
119122
"API Modes": "API-Modi",
120123
"Disable web mode history for better privacy protection, but it will result in unavailable conversations after a period of time": "Deaktivieren Sie die Verlaufsfunktion im Webmodus für besseren Datenschutz. Beachten Sie jedoch, dass die Gespräche nach einer gewissen Zeit nicht mehr verfügbar sind",
@@ -138,13 +141,19 @@
138141
"Anthropic API Key": "Anthropic-API-Schlüssel",
139142
"Cancel": "Abbrechen",
140143
"Name is required": "Name ist erforderlich",
144+
"Please enter a full Chat Completions URL": "Bitte geben Sie eine vollständige Chat Completions URL ein",
141145
"Prompt template should include {{selection}}": "Die Vorlage sollte {{selection}} enthalten",
142146
"Save": "Speichern",
143147
"Name": "Name",
144148
"Icon": "Symbol",
145149
"Prompt Template": "Vorlagen-Template",
146150
"Explain this: {{selection}}": "Erkläre das: {{selection}}",
147151
"New": "Neu",
152+
"Edit": "Bearbeiten",
153+
"This provider is still used by other API modes": "Dieser Anbieter wird noch von anderen API-Modi verwendet",
154+
"Loading saved conversations…": "Gespeicherte Unterhaltungen werden geladen…",
155+
"Select a provider": "Anbieter auswählen",
156+
"Please select a provider": "Bitte einen Anbieter auswählen",
148157
"Always display floating window, disable sidebar for all site adapters": "Immer das schwebende Fenster anzeigen, die Seitenleiste für alle Website-Adapter deaktivieren",
149158
"Allow ESC to close all floating windows": "ESC-Taste zum Schließen aller schwebenden Fenster zulassen",
150159
"Export All Data": "Alle Daten exportieren",
@@ -199,5 +208,9 @@
199208
"OpenAI (GPT-5.4)": "OpenAI (GPT-5.4)",
200209
"OpenAI (GPT-5.4 mini)": "OpenAI (GPT-5.4 mini)",
201210
"OpenAI (GPT-5.4 nano)": "OpenAI (GPT-5.4 nano)",
202-
"Anthropic (Claude Sonnet 4.6)": "Anthropic (Claude Sonnet 4.6)"
211+
"Anthropic (Claude Sonnet 4.6)": "Anthropic (Claude Sonnet 4.6)",
212+
"This provider is still used by other API modes or saved conversations": "Dieser Anbieter wird noch von anderen API-Modi oder gespeicherten Unterhaltungen verwendet",
213+
"This API key is set on the selected custom mode. Editing it here will create a dedicated provider for that mode.": "Dieser API-Schlüssel ist für den ausgewählten benutzerdefinierten Modus festgelegt. Wenn Sie ihn hier bearbeiten, wird ein dedizierter Provider für diesen Modus erstellt.",
214+
"Use shared key": "Gemeinsamen Schlüssel verwenden",
215+
"This provider endpoint is still needed by saved conversations": "Dieser Anbieter-Endpunkt wird noch von gespeicherten Unterhaltungen benötigt"
203216
}

src/_locales/en/main.json

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@
7979
"ChatGPT (GPT-4-32k)": "ChatGPT (GPT-4-32k)",
8080
"GPT-3.5": "GPT-3.5",
8181
"Custom Model": "Custom Model",
82+
"Custom Provider": "Custom Provider",
8283
"Balanced": "Balanced",
8384
"Creative": "Creative",
8485
"Precise": "Precise",
@@ -96,6 +97,7 @@
9697
"Pin": "Pin",
9798
"Unpin": "Unpin",
9899
"Delete Conversation": "Delete Conversation",
100+
"Delete": "Delete",
99101
"Clear conversations": "Clear conversations",
100102
"Settings": "Settings",
101103
"Feature Pages": "Feature Pages",
@@ -115,6 +117,7 @@
115117
"Modules": "Modules",
116118
"API Params": "API Params",
117119
"API Url": "API Url",
120+
"Provider": "Provider",
118121
"Others": "Others",
119122
"API Modes": "API Modes",
120123
"Disable web mode history for better privacy protection, but it will result in unavailable conversations after a period of time": "Disable web mode history for better privacy protection, but it will result in unavailable conversations after a period of time",
@@ -138,13 +141,19 @@
138141
"Anthropic API Key": "Anthropic API Key",
139142
"Cancel": "Cancel",
140143
"Name is required": "Name is required",
144+
"Please enter a full Chat Completions URL": "Please enter a full Chat Completions URL",
141145
"Prompt template should include {{selection}}": "Prompt template should include {{selection}}",
142146
"Save": "Save",
143147
"Name": "Name",
144148
"Icon": "Icon",
145149
"Prompt Template": "Prompt Template",
146150
"Explain this: {{selection}}": "Explain this: {{selection}}",
147151
"New": "New",
152+
"Edit": "Edit",
153+
"This provider is still used by other API modes": "This provider is still used by other API modes",
154+
"Loading saved conversations…": "Loading saved conversations…",
155+
"Select a provider": "Select a provider",
156+
"Please select a provider": "Please select a provider",
148157
"Always display floating window, disable sidebar for all site adapters": "Always display floating window, disable sidebar for all site adapters",
149158
"Allow ESC to close all floating windows": "Allow ESC to close all floating windows",
150159
"Export All Data": "Export All Data",
@@ -200,5 +209,9 @@
200209
"OpenAI (GPT-5.4)": "OpenAI (GPT-5.4)",
201210
"OpenAI (GPT-5.4 mini)": "OpenAI (GPT-5.4 mini)",
202211
"OpenAI (GPT-5.4 nano)": "OpenAI (GPT-5.4 nano)",
203-
"Anthropic (Claude Sonnet 4.6)": "Anthropic (Claude Sonnet 4.6)"
212+
"Anthropic (Claude Sonnet 4.6)": "Anthropic (Claude Sonnet 4.6)",
213+
"This provider is still used by other API modes or saved conversations": "This provider is still used by other API modes or saved conversations",
214+
"This API key is set on the selected custom mode. Editing it here will create a dedicated provider for that mode.": "This API key is set on the selected custom mode. Editing it here will create a dedicated provider for that mode.",
215+
"Use shared key": "Use shared key",
216+
"This provider endpoint is still needed by saved conversations": "This provider endpoint is still needed by saved conversations"
204217
}

src/_locales/es/main.json

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@
7979
"ChatGPT (GPT-4-32k)": "ChatGPT (GPT-4-32k)",
8080
"GPT-3.5": "GPT-3.5",
8181
"Custom Model": "Modelo personalizado",
82+
"Custom Provider": "Proveedor personalizado",
8283
"Balanced": "Equilibrado",
8384
"Creative": "Creativo",
8485
"Precise": "Preciso",
@@ -96,6 +97,7 @@
9697
"Pin": "Fijar",
9798
"Unpin": "Desfijar",
9899
"Delete Conversation": "Eliminar conversación",
100+
"Delete": "Eliminar",
99101
"Clear conversations": "Borrar todas las conversaciones",
100102
"Settings": "Configuración",
101103
"Feature Pages": "Páginas de características",
@@ -115,6 +117,7 @@
115117
"Modules": "Módulos",
116118
"API Params": "Parámetros de la API",
117119
"API Url": "URL de la API",
120+
"Provider": "Proveedor",
118121
"Others": "Otros",
119122
"API Modes": "Modos de la API",
120123
"Disable web mode history for better privacy protection, but it will result in unavailable conversations after a period of time": "Desactivar el historial del modo web para una mejor protección de la privacidad, pero esto resultará en conversaciones no disponibles después de un período de tiempo.",
@@ -138,13 +141,19 @@
138141
"Anthropic API Key": "Clave API de Anthropic",
139142
"Cancel": "Cancelar",
140143
"Name is required": "Se requiere un nombre",
144+
"Please enter a full Chat Completions URL": "Introduzca una URL completa de Chat Completions",
141145
"Prompt template should include {{selection}}": "La plantilla de sugerencias debe incluir {{selection}}",
142146
"Save": "Guardar",
143147
"Name": "Nombre",
144148
"Icon": "Icono",
145149
"Prompt Template": "Plantilla de sugerencias",
146150
"Explain this: {{selection}}": "Explicar esto: {{selection}}",
147151
"New": "Nuevo",
152+
"Edit": "Editar",
153+
"This provider is still used by other API modes": "Este proveedor aún está siendo utilizado por otros modos de API",
154+
"Loading saved conversations…": "Cargando conversaciones guardadas…",
155+
"Select a provider": "Selecciona un proveedor",
156+
"Please select a provider": "Selecciona un proveedor",
148157
"Always display floating window, disable sidebar for all site adapters": "Mostrar siempre la ventana flotante, desactivar la barra lateral para todos los adaptadores de sitios",
149158
"Allow ESC to close all floating windows": "Permitir que ESC cierre todas las ventanas flotantes",
150159
"Export All Data": "Exportar todos los datos",
@@ -199,5 +208,9 @@
199208
"OpenAI (GPT-5.4)": "OpenAI (GPT-5.4)",
200209
"OpenAI (GPT-5.4 mini)": "OpenAI (GPT-5.4 mini)",
201210
"OpenAI (GPT-5.4 nano)": "OpenAI (GPT-5.4 nano)",
202-
"Anthropic (Claude Sonnet 4.6)": "Anthropic (Claude Sonnet 4.6)"
211+
"Anthropic (Claude Sonnet 4.6)": "Anthropic (Claude Sonnet 4.6)",
212+
"This provider is still used by other API modes or saved conversations": "Este proveedor todavía está siendo utilizado por otros modos de API o conversaciones guardadas",
213+
"This API key is set on the selected custom mode. Editing it here will create a dedicated provider for that mode.": "Esta clave de API está configurada en el modo personalizado seleccionado. Si la editas aquí, se creará un proveedor dedicado para ese modo.",
214+
"Use shared key": "Usar clave compartida",
215+
"This provider endpoint is still needed by saved conversations": "Las conversaciones guardadas todavía necesitan este endpoint del proveedor"
203216
}

src/_locales/fr/main.json

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@
7979
"ChatGPT (GPT-4-32k)": "ChatGPT (GPT-4-32k)",
8080
"GPT-3.5": "GPT-3.5",
8181
"Custom Model": "Modèle personnalisé",
82+
"Custom Provider": "Fournisseur personnalisé",
8283
"Balanced": "Équilibré",
8384
"Creative": "Créatif",
8485
"Precise": "Précis",
@@ -96,6 +97,7 @@
9697
"Pin": "Épingler",
9798
"Unpin": "Détacher",
9899
"Delete Conversation": "Supprimer la conversation",
100+
"Delete": "Supprimer",
99101
"Clear conversations": "Effacer les conversations",
100102
"Settings": "Paramètres",
101103
"Feature Pages": "Pages de fonctionnalités",
@@ -115,6 +117,7 @@
115117
"Modules": "Modules",
116118
"API Params": "Paramètres de l'API",
117119
"API Url": "URL de l'API",
120+
"Provider": "Fournisseur",
118121
"Others": "Autres",
119122
"API Modes": "Modes de l'API",
120123
"Disable web mode history for better privacy protection, but it will result in unavailable conversations after a period of time": "Désactivez l'historique du mode web pour une meilleure protection de la vie privée, mais cela entraînera des conversations non disponibles après un certain temps",
@@ -138,13 +141,19 @@
138141
"Anthropic API Key": "Clé API Anthropic",
139142
"Cancel": "Annuler",
140143
"Name is required": "Le nom est requis",
144+
"Please enter a full Chat Completions URL": "Veuillez saisir une URL complète de Chat Completions",
141145
"Prompt template should include {{selection}}": "Le modèle de suggestion doit inclure {{selection}}",
142146
"Save": "Enregistrer",
143147
"Name": "Nom",
144148
"Icon": "Icône",
145149
"Prompt Template": "Modèle de suggestion",
146150
"Explain this: {{selection}}": "Expliquer ceci : {{selection}}",
147151
"New": "Nouveau",
152+
"Edit": "Modifier",
153+
"This provider is still used by other API modes": "Ce fournisseur est encore utilisé par d’autres modes API",
154+
"Loading saved conversations…": "Chargement des conversations enregistrées…",
155+
"Select a provider": "Sélectionnez un fournisseur",
156+
"Please select a provider": "Veuillez sélectionner un fournisseur",
148157
"Always display floating window, disable sidebar for all site adapters": "Toujours afficher la fenêtre flottante, désactiver la barre latérale pour tous les adaptateurs de site",
149158
"Allow ESC to close all floating windows": "Autoriser la touche ESC pour fermer toutes les fenêtres flottantes",
150159
"Export All Data": "Exporter toutes les données",
@@ -199,5 +208,9 @@
199208
"OpenAI (GPT-5.4)": "OpenAI (GPT-5.4)",
200209
"OpenAI (GPT-5.4 mini)": "OpenAI (GPT-5.4 mini)",
201210
"OpenAI (GPT-5.4 nano)": "OpenAI (GPT-5.4 nano)",
202-
"Anthropic (Claude Sonnet 4.6)": "Anthropic (Claude Sonnet 4.6)"
211+
"Anthropic (Claude Sonnet 4.6)": "Anthropic (Claude Sonnet 4.6)",
212+
"This provider is still used by other API modes or saved conversations": "Ce fournisseur est encore utilise par d'autres modes d'API ou des conversations enregistrees",
213+
"This API key is set on the selected custom mode. Editing it here will create a dedicated provider for that mode.": "Cette clé API est définie sur le mode personnalisé sélectionné. La modifier ici créera un fournisseur dédié pour ce mode.",
214+
"Use shared key": "Utiliser la clé partagée",
215+
"This provider endpoint is still needed by saved conversations": "Ce point de terminaison du fournisseur est encore nécessaire pour les conversations enregistrées"
203216
}

src/_locales/in/main.json

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@
7979
"ChatGPT (GPT-4-32k)": "ChatGPT (GPT-4-32k)",
8080
"GPT-3.5": "GPT-3.5",
8181
"Custom Model": "Model Kustom",
82+
"Custom Provider": "Penyedia Kustom",
8283
"Balanced": "Seimbang",
8384
"Creative": "Kreatif",
8485
"Precise": "Tepat",
@@ -96,6 +97,7 @@
9697
"Pin": "Sematkan",
9798
"Unpin": "Lepas Sematan",
9899
"Delete Conversation": "Hapus Percakapan",
100+
"Delete": "Hapus",
99101
"Clear conversations": "Hapus Percakapan",
100102
"Settings": "Pengaturan",
101103
"Feature Pages": "Halaman Fitur",
@@ -115,6 +117,7 @@
115117
"Modules": "Modul",
116118
"API Params": "Parameter API",
117119
"API Url": "URL API",
120+
"Provider": "Penyedia",
118121
"Others": "Lainnya",
119122
"API Modes": "Mode API",
120123
"Disable web mode history for better privacy protection, but it will result in unavailable conversations after a period of time": "Nonaktifkan riwayat mode web untuk perlindungan privasi yang lebih baik, tetapi ini akan menyebabkan percakapan tidak tersedia setelah jangka waktu tertentu",
@@ -138,13 +141,19 @@
138141
"Anthropic API Key": "Kunci API Anthropic",
139142
"Cancel": "Batal",
140143
"Name is required": "Nama diperlukan",
144+
"Please enter a full Chat Completions URL": "Masukkan URL Chat Completions lengkap",
141145
"Prompt template should include {{selection}}": "Template prompt harus mencakup {{selection}}",
142146
"Save": "Simpan",
143147
"Name": "Nama",
144148
"Icon": "Ikon",
145149
"Prompt Template": "Template Prompt",
146150
"Explain this: {{selection}}": "Jelaskan ini: {{selection}}",
147151
"New": "Baru",
152+
"Edit": "Edit",
153+
"This provider is still used by other API modes": "Penyedia ini masih digunakan oleh mode API lain",
154+
"Loading saved conversations…": "Memuat percakapan tersimpan…",
155+
"Select a provider": "Pilih penyedia",
156+
"Please select a provider": "Silakan pilih penyedia",
148157
"Always display floating window, disable sidebar for all site adapters": "Selalu tampilkan jendela mengambang, nonaktifkan sidebar untuk semua adapter situs",
149158
"Allow ESC to close all floating windows": "Izinkan ESC untuk menutup semua jendela mengambang",
150159
"Export All Data": "Ekspor Semua Data",
@@ -199,5 +208,9 @@
199208
"OpenAI (GPT-5.4)": "OpenAI (GPT-5.4)",
200209
"OpenAI (GPT-5.4 mini)": "OpenAI (GPT-5.4 mini)",
201210
"OpenAI (GPT-5.4 nano)": "OpenAI (GPT-5.4 nano)",
202-
"Anthropic (Claude Sonnet 4.6)": "Anthropic (Claude Sonnet 4.6)"
211+
"Anthropic (Claude Sonnet 4.6)": "Anthropic (Claude Sonnet 4.6)",
212+
"This provider is still used by other API modes or saved conversations": "Penyedia ini masih digunakan oleh mode API lain atau percakapan yang tersimpan",
213+
"This API key is set on the selected custom mode. Editing it here will create a dedicated provider for that mode.": "Kunci API ini ditetapkan pada mode kustom yang dipilih. Mengeditnya di sini akan membuat provider khusus untuk mode tersebut.",
214+
"Use shared key": "Gunakan kunci bersama",
215+
"This provider endpoint is still needed by saved conversations": "Endpoint penyedia ini masih diperlukan oleh percakapan yang tersimpan"
203216
}

src/_locales/it/main.json

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@
7979
"ChatGPT (GPT-4-32k)": "ChatGPT (GPT-4-32k)",
8080
"GPT-3.5": "GPT-3.5",
8181
"Custom Model": "Modello personalizzato",
82+
"Custom Provider": "Provider personalizzato",
8283
"Balanced": "Bilanciato",
8384
"Creative": "Creativo",
8485
"Precise": "Preciso",
@@ -96,6 +97,7 @@
9697
"Pin": "Fissa",
9798
"Unpin": "Sblocca",
9899
"Delete Conversation": "Elimina la conversazione",
100+
"Delete": "Elimina",
99101
"Clear conversations": "Pulisci le conversazioni",
100102
"Settings": "Impostazioni",
101103
"Feature Pages": "Pagine delle funzionalità",
@@ -115,6 +117,7 @@
115117
"Modules": "Moduli",
116118
"API Params": "Parametri API",
117119
"API Url": "URL API",
120+
"Provider": "Provider",
118121
"Others": "Altri",
119122
"API Modes": "Modalità API",
120123
"Disable web mode history for better privacy protection, but it will result in unavailable conversations after a period of time": "Disabilita la cronologia della modalità web per una migliore protezione della privacy, ma ciò comporterà conversazioni non disponibili dopo un certo periodo di tempo",
@@ -138,13 +141,19 @@
138141
"Anthropic API Key": "Chiave API Anthropic",
139142
"Cancel": "Annulla",
140143
"Name is required": "Il nome è obbligatorio",
144+
"Please enter a full Chat Completions URL": "Inserisci un URL completo di Chat Completions",
141145
"Prompt template should include {{selection}}": "Il modello di prompt dovrebbe includere {{selection}}",
142146
"Save": "Salva",
143147
"Name": "Nome",
144148
"Icon": "Icona",
145149
"Prompt Template": "Modello di prompt",
146150
"Explain this: {{selection}}": "Spiega questo: {{selection}}",
147151
"New": "Nuovo",
152+
"Edit": "Modifica",
153+
"This provider is still used by other API modes": "Questo provider è ancora utilizzato da altre modalità API",
154+
"Loading saved conversations…": "Caricamento delle conversazioni salvate…",
155+
"Select a provider": "Seleziona un provider",
156+
"Please select a provider": "Seleziona un provider",
148157
"Always display floating window, disable sidebar for all site adapters": "Mostra sempre la finestra flottante, disabilita la barra laterale per tutti gli adattatori del sito",
149158
"Allow ESC to close all floating windows": "Consenti ESC per chiudere tutte le finestre flottanti",
150159
"Export All Data": "Esporta tutti i dati",
@@ -199,5 +208,9 @@
199208
"OpenAI (GPT-5.4)": "OpenAI (GPT-5.4)",
200209
"OpenAI (GPT-5.4 mini)": "OpenAI (GPT-5.4 mini)",
201210
"OpenAI (GPT-5.4 nano)": "OpenAI (GPT-5.4 nano)",
202-
"Anthropic (Claude Sonnet 4.6)": "Anthropic (Claude Sonnet 4.6)"
211+
"Anthropic (Claude Sonnet 4.6)": "Anthropic (Claude Sonnet 4.6)",
212+
"This provider is still used by other API modes or saved conversations": "Questo provider è ancora utilizzato da altre modalità API o conversazioni salvate",
213+
"This API key is set on the selected custom mode. Editing it here will create a dedicated provider for that mode.": "Questa chiave API è impostata nella modalità personalizzata selezionata. Modificandola qui verrà creato un provider dedicato per quella modalità.",
214+
"Use shared key": "Usa la chiave condivisa",
215+
"This provider endpoint is still needed by saved conversations": "L'endpoint di questo provider è ancora necessario per le conversazioni salvate"
203216
}

0 commit comments

Comments
 (0)