+
{showTaskSwitcher && (
diff --git a/web/default/src/features/wallet/hooks/use-creem-payment.ts b/web/default/src/features/wallet/hooks/use-creem-payment.ts
index 1f833395003..eff94bf11d8 100644
--- a/web/default/src/features/wallet/hooks/use-creem-payment.ts
+++ b/web/default/src/features/wallet/hooks/use-creem-payment.ts
@@ -18,7 +18,7 @@ export function useCreemPayment() {
})
if (isApiSuccess(response) && response.data?.checkout_url) {
- window.open(response.data.checkout_url, '_blank')
+ window.open(response.data.checkout_url, '_blank', 'noopener,noreferrer')
toast.success(i18next.t('Redirecting to Creem checkout...'))
return true
}
diff --git a/web/default/src/features/wallet/hooks/use-payment.ts b/web/default/src/features/wallet/hooks/use-payment.ts
index 41affb0cd72..0c01c68aa78 100644
--- a/web/default/src/features/wallet/hooks/use-payment.ts
+++ b/web/default/src/features/wallet/hooks/use-payment.ts
@@ -83,7 +83,7 @@ export function usePayment() {
// Handle Stripe payment
if (isStripe && response.data?.pay_link) {
- window.open(response.data.pay_link as string, '_blank')
+ window.open(response.data.pay_link as string, '_blank', 'noopener,noreferrer')
toast.success(i18next.t('Redirecting to payment page...'))
return true
}
diff --git a/web/default/src/features/wallet/hooks/use-waffo-payment.ts b/web/default/src/features/wallet/hooks/use-waffo-payment.ts
index e4177773a9b..84f392fd806 100644
--- a/web/default/src/features/wallet/hooks/use-waffo-payment.ts
+++ b/web/default/src/features/wallet/hooks/use-waffo-payment.ts
@@ -43,7 +43,7 @@ export function useWaffoPayment() {
const paymentUrl = getPaymentUrl(response.data)
if (paymentUrl) {
- window.open(paymentUrl, '_blank')
+ window.open(paymentUrl, '_blank', 'noopener,noreferrer')
toast.success(i18next.t('Redirecting to payment page...'))
return true
}
diff --git a/web/default/src/i18n/locales/en.json b/web/default/src/i18n/locales/en.json
index ca8be34712d..db86fde5dab 100644
--- a/web/default/src/i18n/locales/en.json
+++ b/web/default/src/i18n/locales/en.json
@@ -741,6 +741,7 @@
"Configuration for Stripe payment integration": "Configuration for Stripe payment integration",
"Configuration required": "Configuration required",
"Configure": "Configure",
+ "Configure Langfuse LLM observability": "Configure Langfuse LLM observability",
"Configure a Creem product for user recharge options.": "Configure a Creem product for user recharge options.",
"Configure a custom ratio for when users use a specific token group.": "Configure a custom ratio for when users use a specific token group.",
"Configure a group that users can select when creating API keys.": "Configure a group that users can select when creating API keys.",
@@ -1250,6 +1251,14 @@
"Embeddings": "Embeddings",
"Empty value will be saved as {}.": "Empty value will be saved as {}.",
"Enable": "Enable",
+ "Enable Langfuse Tracing": "Enable Langfuse Tracing",
+ "Include full prompt and completion content in traces. Disabling sends only token counts and metadata.": "Include full prompt and completion content in traces. Disabling sends only token counts and metadata.",
+ "Langfuse Host": "Langfuse Host",
+ "Langfuse server URL (cloud or self-hosted)": "Langfuse server URL (cloud or self-hosted)",
+ "Langfuse Tracing": "Langfuse Tracing",
+ "Public Key": "Public Key",
+ "Secret Key": "Secret Key",
+ "Trace Request/Response Content": "Trace Request/Response Content",
"Enable 2FA": "Enable 2FA",
"Enable All": "Enable All",
"Enable check-in feature": "Enable check-in feature",
@@ -1881,6 +1890,7 @@
"Interface Language": "Interface Language",
"Interface Style": "Interface Style",
"Interface style updated. Reloading...": "Interface style updated. Reloading...",
+ "Interface style updated. Redirecting...": "Interface style updated. Redirecting...",
"Internal Notes": "Internal Notes",
"Internal notes (not shown to users)": "Internal notes (not shown to users)",
"Internal Server Error!": "Internal Server Error!",
@@ -3160,7 +3170,6 @@
"seconds": "seconds",
"Secret env (JSON object)": "Secret env (JSON object)",
"Secret environment variables (JSON)": "Secret environment variables (JSON)",
- "Secret Key": "Secret Key",
"Secure & Reliable": "Secure & Reliable",
"Security": "Security",
"Security Check": "Security Check",
@@ -3233,6 +3242,8 @@
"Selected conflicts were overwritten successfully.": "Selected conflicts were overwritten successfully.",
"Self-Use Mode": "Self-Use Mode",
"Send": "Send",
+ "Send LLM usage traces to Langfuse for observability and analytics": "Send LLM usage traces to Langfuse for observability and analytics",
+ "Send request traces to Langfuse for LLM observability": "Send request traces to Langfuse for LLM observability",
"Send code": "Send code",
"Send email alerts when a user falls below this quota": "Send email alerts when a user falls below this quota",
"Sending...": "Sending...",
@@ -3357,6 +3368,7 @@
"Statistical quota": "Statistical quota",
"Statistical tokens": "Statistical tokens",
"Statistics reset": "Statistics reset",
+ "Statistics": "Statistics",
"Status": "Status",
"Status & Sync": "Status & Sync",
"Status Code": "Status Code",
@@ -3555,6 +3567,7 @@
"This project must be used in compliance with the": "This project must be used in compliance with the",
"This record was written by a pre-upgrade instance and lacks audit info. Upgrade the instance to record server IP, callback IP, payment method and system version.": "This record was written by a pre-upgrade instance and lacks audit info. Upgrade the instance to record server IP, callback IP, payment method and system version.",
"This site currently has {{count}} models enabled": "This site currently has {{count}} models enabled",
+ "This site uses Langfuse to record user prompts and other data. Please be aware of security risks.": "This site uses Langfuse to record user prompts and other data. Please be aware of security risks.",
"this token group": "this token group",
"this user group": "this user group",
"This user has no bindings": "This user has no bindings",
diff --git a/web/default/src/i18n/locales/fr.json b/web/default/src/i18n/locales/fr.json
index 28377422d36..436fd8614da 100644
--- a/web/default/src/i18n/locales/fr.json
+++ b/web/default/src/i18n/locales/fr.json
@@ -400,6 +400,7 @@
"Auto-discovers endpoints from the provider": "Découvre automatiquement les points de terminaison du fournisseur",
"Auto-fill when one field exists and another is missing": "Remplissage automatique si un champ existe et l'autre est manquant",
"Auto-retry status codes": "Codes de statut de nouvelle tentative auto",
+ "Automatically bind this subscription plan to new users upon registration": "Lier automatiquement ce plan d'abonnement aux nouveaux utilisateurs lors de l'inscription",
"Automatically disable channel on repeated failures": "Désactiver automatiquement le canal en cas d'échecs répétés",
"Automatically disable channels exceeding this response time": "Désactiver automatiquement les canaux dépassant ce temps de réponse",
"Automatically disable channels when tests fail": "Désactiver automatiquement les canaux lorsque les tests échouent",
@@ -740,6 +741,7 @@
"Configuration for Stripe payment integration": "Configuration pour l'intégration de paiement Stripe",
"Configuration required": "Configuration requise",
"Configure": "Configurer",
+ "Configure Langfuse LLM observability": "Configurer l'observabilité LLM avec Langfuse",
"Configure a Creem product for user recharge options.": "Configurez un produit Creem pour les options de recharge utilisateur.",
"Configure a custom ratio for when users use a specific token group.": "Configurer un ratio personnalisé lorsque les utilisateurs utilisent un groupe de jetons spécifique.",
"Configure a group that users can select when creating API keys.": "Configurer un groupe que les utilisateurs peuvent sélectionner lors de la création de clés API.",
@@ -1249,6 +1251,14 @@
"Embeddings": "Embeddings",
"Empty value will be saved as {}.": "Une valeur vide sera enregistrée comme {}.",
"Enable": "Activer",
+ "Enable Langfuse Tracing": "Activer le traçage Langfuse",
+ "Include full prompt and completion content in traces. Disabling sends only token counts and metadata.": "Inclure le contenu complet des prompts et des complétions dans les traces. La désactivation envoie uniquement les comptes de tokens et les métadonnées.",
+ "Langfuse Host": "Hôte Langfuse",
+ "Langfuse server URL (cloud or self-hosted)": "URL du serveur Langfuse (cloud ou auto-hébergé)",
+ "Langfuse Tracing": "Traçage Langfuse",
+ "Public Key": "Clé publique",
+ "Secret Key": "Clé secrète",
+ "Trace Request/Response Content": "Tracer le contenu des requêtes/réponses",
"Enable 2FA": "Activer 2FA",
"Enable All": "Tout activer",
"Enable check-in feature": "Activer la fonction de connexion",
@@ -1864,6 +1874,7 @@
"Initialize": "Initialiser",
"Initialize system": "Initialiser le système",
"Initializing…": "Initialisation…",
+ "Initial Subscription Plan": "Plan d'abonnement initial",
"Inpaint": "Inpainting",
"Input": "Entrée",
"Input mode": "Mode d'entrée",
@@ -1879,6 +1890,7 @@
"Interface Language": "Langue de l'interface",
"Interface Style": "Style de l'interface",
"Interface style updated. Reloading...": "Style de l'interface mis ? jour. Rechargement...",
+ "Interface style updated. Redirecting...": "Style d'interface mis à jour. Redirection en cours...",
"Internal Notes": "Notes internes",
"Internal notes (not shown to users)": "Notes internes (non visibles par les utilisateurs)",
"Internal Server Error!": "Erreur interne du serveur !",
@@ -3158,7 +3170,6 @@
"seconds": "secondes",
"Secret env (JSON object)": "Environnement secret (objet JSON)",
"Secret environment variables (JSON)": "Variables d'environnement secrètes (JSON)",
- "Secret Key": "Clé secrète",
"Secure & Reliable": "Sécurisé et fiable",
"Security": "Sécurité",
"Security Check": "Vérification de sécurité",
@@ -3231,6 +3242,8 @@
"Selected conflicts were overwritten successfully.": "Les conflits sélectionnés ont été écrasés avec succès.",
"Self-Use Mode": "Mode d'utilisation personnelle",
"Send": "Envoyer",
+ "Send LLM usage traces to Langfuse for observability and analytics": "Envoyer les traces d'utilisation LLM à Langfuse pour l'observabilité et l'analyse",
+ "Send request traces to Langfuse for LLM observability": "Envoyer les traces de requêtes à Langfuse pour l'observabilité LLM",
"Send code": "Envoyer le code",
"Send email alerts when a user falls below this quota": "Envoyer des alertes par e-mail lorsqu'un utilisateur descend en dessous de ce quota",
"Sending...": "Envoi en cours...",
@@ -3355,6 +3368,7 @@
"Statistical quota": "Quota statistique",
"Statistical tokens": "Jetons statistiques",
"Statistics reset": "Statistiques réinitialisées",
+ "Statistics": "Statistiques",
"Status": "Statut",
"Status & Sync": "Statut et synchronisation",
"Status Code": "Code de statut",
@@ -3553,6 +3567,7 @@
"This project must be used in compliance with the": "Ce projet doit être utilisé conformément aux",
"This record was written by a pre-upgrade instance and lacks audit info. Upgrade the instance to record server IP, callback IP, payment method and system version.": "Cet enregistrement provient d’une instance avant la mise à niveau et n’inclut pas d’audits. Mettez à jour l’instance pour enregistrer l’IP du serveur, l’IP de callback, le moyen de paiement et la version du système.",
"This site currently has {{count}} models enabled": "Ce site compte actuellement {{count}} modèles activés",
+ "This site uses Langfuse to record user prompts and other data. Please be aware of security risks.": "Ce site utilise Langfuse pour enregistrer les invites des utilisateurs et d'autres données. Veuillez faire attention à la sécurité.",
"this token group": "ce groupe de jetons",
"this user group": "ce groupe d'utilisateurs",
"This user has no bindings": "Cet utilisateur n'a aucune liaison",
diff --git a/web/default/src/i18n/locales/ja.json b/web/default/src/i18n/locales/ja.json
index c807f1d06df..e2b912db86f 100644
--- a/web/default/src/i18n/locales/ja.json
+++ b/web/default/src/i18n/locales/ja.json
@@ -400,6 +400,7 @@
"Auto-discovers endpoints from the provider": "プロバイダーからエンドポイントを自動検出します",
"Auto-fill when one field exists and another is missing": "一方のフィールドがあり他方が欠けている場合に自動補完",
"Auto-retry status codes": "自動リトライするステータスコード",
+ "Automatically bind this subscription plan to new users upon registration": "新規ユーザー登録時にこのサブスクリプションプランを自動的にバインドする",
"Automatically disable channel on repeated failures": "繰り返しの失敗でチャンネルを自動的に無効にする",
"Automatically disable channels exceeding this response time": "この応答時間を超えるチャネルを自動的に無効にする",
"Automatically disable channels when tests fail": "テストが失敗したときにチャネルを自動的に無効にする",
@@ -740,6 +741,7 @@
"Configuration for Stripe payment integration": "Stripe決済連携のための設定",
"Configuration required": "設定が必要です",
"Configure": "設定",
+ "Configure Langfuse LLM observability": "Langfuse LLM オブザーバビリティを設定",
"Configure a Creem product for user recharge options.": "ユーザー チャージオプション用の Creem 製品を設定。",
"Configure a custom ratio for when users use a specific token group.": "ユーザーが特定のトークングループを使用する際のカスタム倍率を設定します。",
"Configure a group that users can select when creating API keys.": "ユーザーがAPIキー作成時に選択できるグループを設定します。",
@@ -1249,6 +1251,14 @@
"Embeddings": "埋め込み",
"Empty value will be saved as {}.": "空の値は {} として保存されます。",
"Enable": "有効にする",
+ "Enable Langfuse Tracing": "Langfuse トレースを有効にする",
+ "Include full prompt and completion content in traces. Disabling sends only token counts and metadata.": "トレースにプロンプトと補完の完全な内容を含めます。無効にすると、トークン数とメタデータのみが送信されます。",
+ "Langfuse Host": "Langfuse ホスト",
+ "Langfuse server URL (cloud or self-hosted)": "Langfuse サーバー URL(クラウドまたはセルフホスト)",
+ "Langfuse Tracing": "Langfuse トレース",
+ "Public Key": "公開鍵",
+ "Secret Key": "シークレットキー",
+ "Trace Request/Response Content": "リクエスト/レスポンス内容をトレース",
"Enable 2FA": "2FA を有効にする",
"Enable All": "すべて有効にする",
"Enable check-in feature": "チェックイン機能を有効にする",
@@ -1864,6 +1874,7 @@
"Initialize": "初期化",
"Initialize system": "システム初期化",
"Initializing…": "初期化中…",
+ "Initial Subscription Plan": "初期サブスクリプションプラン",
"Inpaint": "インペイント",
"Input": "入力",
"Input mode": "入力モード",
@@ -1879,6 +1890,7 @@
"Interface Language": "インターフェース言語",
"Interface Style": "????????????",
"Interface style updated. Reloading...": "??????????????????????????????...",
+ "Interface style updated. Redirecting...": "インターフェーススタイルが更新されました。リダイレクト中...",
"Internal Notes": "内部メモ",
"Internal notes (not shown to users)": ":内部メモ(ユーザーには表示されません)",
"Internal Server Error!": "内部サーバーエラー!",
@@ -3158,7 +3170,6 @@
"seconds": "秒",
"Secret env (JSON object)": "シークレット env (JSON オブジェクト)",
"Secret environment variables (JSON)": "シークレット環境変数(JSON)",
- "Secret Key": "シークレットキー",
"Secure & Reliable": "セキュア&信頼性",
"Security": "セキュリティ",
"Security Check": "セキュリティチェック",
@@ -3231,6 +3242,8 @@
"Selected conflicts were overwritten successfully.": "選択した競合が正常に上書きされました。",
"Self-Use Mode": "セルフユースモード",
"Send": "送信",
+ "Send LLM usage traces to Langfuse for observability and analytics": "LLM 使用トレースを Langfuse に送信してオブザーバビリティと分析を行う",
+ "Send request traces to Langfuse for LLM observability": "LLM オブザーバビリティのためにリクエストトレースを Langfuse に送信する",
"Send code": "コードを送信",
"Send email alerts when a user falls below this quota": "ユーザーがこのクォータを下回ったときにメールアラートを送信",
"Sending...": "送信中...",
@@ -3355,6 +3368,7 @@
"Statistical quota": "統計クォータ",
"Statistical tokens": "統計トークン",
"Statistics reset": "統計をリセットしました",
+ "Statistics": "統計",
"Status": "ステータス",
"Status & Sync": "ステータスと同期",
"Status Code": "ステータスコード",
@@ -3553,6 +3567,7 @@
"This project must be used in compliance with the": "このプロジェクトは、以下を遵守して使用する必要があります",
"This record was written by a pre-upgrade instance and lacks audit info. Upgrade the instance to record server IP, callback IP, payment method and system version.": "古いバージョンのインスタンスがこの記録を書き込み、監査情報がありません。最新に更新し、サーバーIP・コールバックIP・支払方法・OSバージョンの記録を有効にしてください。",
"This site currently has {{count}} models enabled": "このサイトでは現在 {{count}} 個のモデルが有効です",
+ "This site uses Langfuse to record user prompts and other data. Please be aware of security risks.": "このサイトはLangfuseを使用してユーザーのプロンプトなどのデータを記録しています。セキュリティにご注意ください。",
"this token group": "このトークングループ",
"this user group": "このユーザーグループ",
"This user has no bindings": "このユーザーには連携がありません",
diff --git a/web/default/src/i18n/locales/ru.json b/web/default/src/i18n/locales/ru.json
index 8fc42d4346c..09caf495c35 100644
--- a/web/default/src/i18n/locales/ru.json
+++ b/web/default/src/i18n/locales/ru.json
@@ -400,6 +400,7 @@
"Auto-discovers endpoints from the provider": "Автоматически обнаруживает конечные точки от провайдера",
"Auto-fill when one field exists and another is missing": "Автозаполнение, когда одно поле есть, а другое отсутствует",
"Auto-retry status codes": "Коды авто-повтора",
+ "Automatically bind this subscription plan to new users upon registration": "Автоматически привязывать этот план подписки новым пользователям при регистрации",
"Automatically disable channel on repeated failures": "Автоматически отключать канал при повторных неудачах",
"Automatically disable channels exceeding this response time": "Автоматически отключать каналы, превышающие это время ответа",
"Automatically disable channels when tests fail": "Автоматически отключать каналы при сбое тестов",
@@ -740,6 +741,7 @@
"Configuration for Stripe payment integration": "Конфигурация для интеграции платежей Stripe",
"Configuration required": "Требуется настройка",
"Configure": "Настройка",
+ "Configure Langfuse LLM observability": "Настроить наблюдаемость LLM с Langfuse",
"Configure a Creem product for user recharge options.": "Настройте продукт Creem для опций пополнения пользователя.",
"Configure a custom ratio for when users use a specific token group.": "Настроить пользовательский коэффициент при использовании определённой группы токенов.",
"Configure a group that users can select when creating API keys.": "Настройте группу, которую пользователи могут выбрать при создании ключей API.",
@@ -1249,6 +1251,14 @@
"Embeddings": "Встраивания",
"Empty value will be saved as {}.": "Пустое значение будет сохранено как {}.",
"Enable": "Включить",
+ "Enable Langfuse Tracing": "Включить трассировку Langfuse",
+ "Include full prompt and completion content in traces. Disabling sends only token counts and metadata.": "Включать полное содержимое промптов и дополнений в трассировки. При отключении отправляются только количества токенов и метаданные.",
+ "Langfuse Host": "Хост Langfuse",
+ "Langfuse server URL (cloud or self-hosted)": "URL-адрес сервера Langfuse (облачный или собственный)",
+ "Langfuse Tracing": "Трассировка Langfuse",
+ "Public Key": "Открытый ключ",
+ "Secret Key": "Секретный ключ",
+ "Trace Request/Response Content": "Трассировать содержимое запросов/ответов",
"Enable 2FA": "Включить 2FA",
"Enable All": "Включить все",
"Enable check-in feature": "Включить функцию прибытия",
@@ -1864,6 +1874,7 @@
"Initialize": "Инициализировать",
"Initialize system": "Инициализация системы",
"Initializing…": "Инициализация…",
+ "Initial Subscription Plan": "Начальный план подписки",
"Inpaint": "Инпейнтинг",
"Input": "Ввод",
"Input mode": "Режим ввода",
@@ -1879,6 +1890,7 @@
"Interface Language": "Язык интерфейса",
"Interface Style": "????? ??????????",
"Interface style updated. Reloading...": "????? ?????????? ????????. ????????????...",
+ "Interface style updated. Redirecting...": "Стиль интерфейса обновлён. Перенаправление...",
"Internal Notes": "Внутренние заметки",
"Internal notes (not shown to users)": "Внутренние заметки (не показываются пользователям)",
"Internal Server Error!": "Внутренняя ошибка сервера!",
@@ -3158,7 +3170,6 @@
"seconds": "секунды",
"Secret env (JSON object)": "Секретные переменные окружения (объект JSON)",
"Secret environment variables (JSON)": "Секретные переменные окружения (JSON)",
- "Secret Key": "Секретный ключ",
"Secure & Reliable": "Безопасно и надежно",
"Security": "Безопасность",
"Security Check": "Проверка безопасности",
@@ -3231,6 +3242,8 @@
"Selected conflicts were overwritten successfully.": "Выбранные конфликты успешно перезаписаны.",
"Self-Use Mode": "Режим самоиспользования",
"Send": "Отправить",
+ "Send LLM usage traces to Langfuse for observability and analytics": "Отправлять трассировки использования LLM в Langfuse для наблюдаемости и аналитики",
+ "Send request traces to Langfuse for LLM observability": "Отправлять трассировки запросов в Langfuse для наблюдаемости LLM",
"Send code": "Отправить код",
"Send email alerts when a user falls below this quota": "Отправлять оповещения по электронной почте, когда пользователь опускается ниже этой квоты",
"Sending...": "Отправка...",
@@ -3355,6 +3368,7 @@
"Statistical quota": "Статистическая квота",
"Statistical tokens": "Статистические токены",
"Statistics reset": "Статистика сброшена",
+ "Statistics": "Статистика",
"Status": "Статус",
"Status & Sync": "Статус и синхронизация",
"Status Code": "Код статуса",
@@ -3553,6 +3567,7 @@
"This project must be used in compliance with the": "Этот проект должен использоваться в соответствии с",
"This record was written by a pre-upgrade instance and lacks audit info. Upgrade the instance to record server IP, callback IP, payment method and system version.": "Запись создана экземпляром до обновления и не содержит сведений аудита. Обновите экземпляр, чтобы фиксировать IP сервера, IP callback, способ оплаты и версию ОС.",
"This site currently has {{count}} models enabled": "На этом сайте сейчас включено моделей: {{count}}",
+ "This site uses Langfuse to record user prompts and other data. Please be aware of security risks.": "Этот сайт использует Langfuse для записи пользовательских подсказок и других данных. Обратите внимание на безопасность.",
"this token group": "эта группа токенов",
"this user group": "эта группа пользователей",
"This user has no bindings": "У этого пользователя нет привязок",
diff --git a/web/default/src/i18n/locales/vi.json b/web/default/src/i18n/locales/vi.json
index c2b8096c46b..94a9f0dca51 100644
--- a/web/default/src/i18n/locales/vi.json
+++ b/web/default/src/i18n/locales/vi.json
@@ -400,6 +400,7 @@
"Auto-discovers endpoints from the provider": "Tự động khám phá các điểm cuối từ nhà cung cấp",
"Auto-fill when one field exists and another is missing": "Tự động điền khi một trường có giá trị và trường khác thiếu",
"Auto-retry status codes": "Mã trạng thái tự thử lại",
+ "Automatically bind this subscription plan to new users upon registration": "Tự động liên kết gói đăng ký này với người dùng mới khi đăng ký",
"Automatically disable channel on repeated failures": "Tự động vô hiệu hóa kênh khi xảy ra lỗi lặp lại",
"Automatically disable channels exceeding this response time": "Tự động vô hiệu hóa các kênh vượt quá thời gian phản hồi này",
"Automatically disable channels when tests fail": "Tự động vô hiệu hóa các kênh khi kiểm thử thất bại",
@@ -740,6 +741,7 @@
"Configuration for Stripe payment integration": "Cấu hình cho tích hợp thanh toán Stripe",
"Configuration required": "Cần cấu hình",
"Configure": "Cấu hình",
+ "Configure Langfuse LLM observability": "Cấu hình khả năng quan sát LLM bằng Langfuse",
"Configure a Creem product for user recharge options.": "Cấu hình một sản phẩm Creem cho các tùy chọn nạp tiền người dùng.",
"Configure a custom ratio for when users use a specific token group.": "Cấu hình tỷ lệ tùy chỉnh khi người dùng sử dụng nhóm token cụ thể.",
"Configure a group that users can select when creating API keys.": "Cấu hình một nhóm mà người dùng có thể chọn khi tạo khóa API.",
@@ -1249,6 +1251,14 @@
"Embeddings": "Embeddings",
"Empty value will be saved as {}.": "Giá trị trống sẽ được lưu thành {}.",
"Enable": "Bật",
+ "Enable Langfuse Tracing": "Bật theo dõi Langfuse",
+ "Include full prompt and completion content in traces. Disabling sends only token counts and metadata.": "Bao gồm nội dung đầy đủ của lời nhắc và phần bổ sung trong theo dõi. Tắt sẽ chỉ gửi số lượng token và siêu dữ liệu.",
+ "Langfuse Host": "Máy chủ Langfuse",
+ "Langfuse server URL (cloud or self-hosted)": "URL máy chủ Langfuse (đám mây hoặc tự lưu trữ)",
+ "Langfuse Tracing": "Theo dõi Langfuse",
+ "Public Key": "Khóa công khai",
+ "Secret Key": "Khóa bí mật",
+ "Trace Request/Response Content": "Theo dõi nội dung yêu cầu/phản hồi",
"Enable 2FA": "Bật 2FA",
"Enable All": "Bật tất cả",
"Enable check-in feature": "Bật tính năng điểm danh",
@@ -1864,6 +1874,7 @@
"Initialize": "Khởi tạo",
"Initialize system": "Khởi tạo hệ thống",
"Initializing…": "Đang khởi tạo…",
+ "Initial Subscription Plan": "Gói đăng ký ban đầu",
"Inpaint": "Inpaint",
"Input": "Đầu vào",
"Input mode": "Chế độ nhập",
@@ -1879,6 +1890,7 @@
"Interface Language": "Ngôn ngữ giao diện",
"Interface Style": "Ki?u giao di?n",
"Interface style updated. Reloading...": "?? c?p nh?t ki?u giao di?n. ?ang t?i l?i...",
+ "Interface style updated. Redirecting...": "Kiểu giao diện đã được cập nhật. Đang chuyển hướng...",
"Internal Notes": "Ghi chú nội bộ",
"Internal notes (not shown to users)": "Ghi chú nội bộ (không hiển thị cho người dùng)",
"Internal Server Error!": "Lỗi máy chủ nội bộ!",
@@ -3158,7 +3170,6 @@
"seconds": "giây",
"Secret env (JSON object)": "Biến môi trường bí mật (đối tượng JSON)",
"Secret environment variables (JSON)": "Biến môi trường bí mật (JSON)",
- "Secret Key": "Khóa bí mật",
"Secure & Reliable": "An toàn & Đáng tin cậy",
"Security": "Bảo mật",
"Security Check": "Kiểm tra bảo mật",
@@ -3231,6 +3242,8 @@
"Selected conflicts were overwritten successfully.": "Các xung đột được chọn đã được ghi đè thành công.",
"Self-Use Mode": "Chế độ tự sử dụng",
"Send": "Gửi",
+ "Send LLM usage traces to Langfuse for observability and analytics": "Gửi theo dõi sử dụng LLM đến Langfuse để quan sát và phân tích",
+ "Send request traces to Langfuse for LLM observability": "Gửi theo dõi yêu cầu đến Langfuse để quan sát LLM",
"Send code": "Gửi mã",
"Send email alerts when a user falls below this quota": "Gửi cảnh báo email khi người dùng xuống dưới hạn mức này",
"Sending...": "Đang gửi...",
@@ -3355,6 +3368,7 @@
"Statistical quota": "Chỉ tiêu thống kê",
"Statistical tokens": "Mã thông báo thống kê",
"Statistics reset": "Đã đặt lại thống kê",
+ "Statistics": "Thống kê",
"Status": "Trạng thái",
"Status & Sync": "Trạng thái & Đồng bộ",
"Status Code": "Mã trạng thái",
@@ -3553,6 +3567,7 @@
"This project must be used in compliance with the": "Dự án này phải được sử dụng tuân thủ theo",
"This record was written by a pre-upgrade instance and lacks audit info. Upgrade the instance to record server IP, callback IP, payment method and system version.": "Bản ghi này do bản cũ tạo và thiếu thông tin audit. Nâng cấp bản cài để lưu IP máy chủ, IP callback, hình thức thanh toán và phiên bản hệ thống.",
"This site currently has {{count}} models enabled": "Trang này hiện đã bật {{count}} mô hình",
+ "This site uses Langfuse to record user prompts and other data. Please be aware of security risks.": "Trang web này sử dụng Langfuse để ghi lại các lời nhắc của người dùng và dữ liệu khác. Vui lòng lưu ý về bảo mật.",
"this token group": "nhóm token này",
"this user group": "nhóm người dùng này",
"This user has no bindings": "Người dùng này không có liên kết nào",
diff --git a/web/default/src/i18n/locales/zh.json b/web/default/src/i18n/locales/zh.json
index 192c9141995..456ed4d5955 100644
--- a/web/default/src/i18n/locales/zh.json
+++ b/web/default/src/i18n/locales/zh.json
@@ -3170,7 +3170,6 @@
"seconds": "秒",
"Secret env (JSON object)": "密钥环境 (JSON 对象)",
"Secret environment variables (JSON)": "密钥环境变量 (JSON)",
- "Secret Key": "密钥",
"Secure & Reliable": "安全可靠",
"Security": "安全",
"Security Check": "安全验证",
@@ -3568,6 +3567,7 @@
"This project must be used in compliance with the": "此项目的使用必须遵守",
"This record was written by a pre-upgrade instance and lacks audit info. Upgrade the instance to record server IP, callback IP, payment method and system version.": "该记录由旧版本实例写入,缺少审计信息,建议将实例升级至最新版本以便记录服务器 IP、回调 IP、支付方式与系统版本等审计字段。",
"This site currently has {{count}} models enabled": "本站当前已启用模型,总计 {{count}} 个",
+ "This site uses Langfuse to record user prompts and other data. Please be aware of security risks.": "本站使用Langfuse记录用户提示词等数据,请注意安全。",
"this token group": "此令牌分组",
"this user group": "此用户分组",
"This user has no bindings": "该用户无任何绑定",
diff --git a/web/default/src/lib/oauth.ts b/web/default/src/lib/oauth.ts
index e64f78ba8f6..f52094de4d1 100644
--- a/web/default/src/lib/oauth.ts
+++ b/web/default/src/lib/oauth.ts
@@ -86,7 +86,7 @@ export async function handleGitHubOAuth(clientId: string): Promise {
if (!state) return
const url = buildGitHubOAuthUrl(clientId, state)
- window.open(url, '_blank')
+ window.open(url, '_blank', 'noopener,noreferrer')
}
/**
@@ -97,7 +97,7 @@ export async function handleDiscordOAuth(clientId: string): Promise {
if (!state) return
const url = buildDiscordOAuthUrl(clientId, state)
- window.open(url, '_blank')
+ window.open(url, '_blank', 'noopener,noreferrer')
}
/**
@@ -111,7 +111,7 @@ export async function handleOIDCOAuth(
if (!state) return
const url = buildOIDCOAuthUrl(authUrl, clientId, state)
- window.open(url, '_blank')
+ window.open(url, '_blank', 'noopener,noreferrer')
}
/**
@@ -122,5 +122,5 @@ export async function handleLinuxDOOAuth(clientId: string): Promise {
if (!state) return
const url = buildLinuxDOOAuthUrl(clientId, state)
- window.open(url, '_blank')
+ window.open(url, '_blank', 'noopener,noreferrer')
}
diff --git a/web/default/src/routes/_authenticated/route.tsx b/web/default/src/routes/_authenticated/route.tsx
index fe95ab8c7d9..12dfe6d44a4 100644
--- a/web/default/src/routes/_authenticated/route.tsx
+++ b/web/default/src/routes/_authenticated/route.tsx
@@ -30,7 +30,12 @@ export const Route = createFileRoute('/_authenticated')({
try {
const parsed = JSON.parse(setting) as { frontend_theme?: string }
if (parsed.frontend_theme) {
- setFrontendTheme(normalizeFrontendTheme(parsed.frontend_theme))
+ const normalizedTheme = normalizeFrontendTheme(parsed.frontend_theme)
+ setFrontendTheme(normalizedTheme)
+ if (normalizedTheme === 'classic') {
+ window.location.replace('/console')
+ return
+ }
}
} catch {
/* empty */