From a470f6149feb6e06bfddb5eb88fa5fe5cf017f5f Mon Sep 17 00:00:00 2001 From: Shirasawa <764798966@qq.com> Date: Mon, 24 Nov 2025 07:11:52 +0000 Subject: [PATCH 1/9] i18n: improve Chinese translation --- src/lib/i18n/locales/zh-CN/translation.json | 6 +++--- src/lib/i18n/locales/zh-TW/translation.json | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/lib/i18n/locales/zh-CN/translation.json b/src/lib/i18n/locales/zh-CN/translation.json index 290ecd6f31..da756b1ffa 100644 --- a/src/lib/i18n/locales/zh-CN/translation.json +++ b/src/lib/i18n/locales/zh-CN/translation.json @@ -145,7 +145,7 @@ "Archived Chats": "已归档对话", "archived-chat-export": "导出已归档对话", "Are you sure you want to clear all memories? This action cannot be undone.": "您确认要清除所有记忆吗?清除后无法还原。", - "Are you sure you want to delete \"{{NAME}}\"?": "", + "Are you sure you want to delete \"{{NAME}}\"?": "您确认要删除“{{NAME}}”吗?", "Are you sure you want to delete this channel?": "您确认要删除此频道吗?", "Are you sure you want to delete this message?": "您确认要删除此消息吗?", "Are you sure you want to unarchive all archived chats?": "您确认要取消所有已归档的对话吗?", @@ -406,7 +406,7 @@ "Delete": "删除", "Delete a model": "删除模型", "Delete All Chats": "删除所有对话记录", - "Delete all contents inside this folder": "", + "Delete all contents inside this folder": "删除此分组内的所有内容", "Delete All Models": "删除所有模型", "Delete Chat": "删除对话记录", "Delete chat?": "要删除此对话记录吗?", @@ -1015,7 +1015,7 @@ "Max Upload Size": "最大上传大小", "Maximum of 3 models can be downloaded simultaneously. Please try again later.": "最多可同时下载 3 个模型,请稍后重试。", "May": "五月", - "MBR": "", + "MBR": "成员", "MCP": "MCP", "MCP support is experimental and its specification changes often, which can lead to incompatibilities. OpenAPI specification support is directly maintained by the Open WebUI team, making it the more reliable option for compatibility.": "MCP 支持仍处于实验阶段,因其规范变化频繁,可能会出现不兼容的情况。而 OpenAPI 规范由 Open WebUI 团队维护,在兼容性方面更加可靠。", "Medium": "中", diff --git a/src/lib/i18n/locales/zh-TW/translation.json b/src/lib/i18n/locales/zh-TW/translation.json index 09601f22f1..4ac8405b09 100644 --- a/src/lib/i18n/locales/zh-TW/translation.json +++ b/src/lib/i18n/locales/zh-TW/translation.json @@ -145,7 +145,7 @@ "Archived Chats": "封存的對話紀錄", "archived-chat-export": "archived-chat-export", "Are you sure you want to clear all memories? This action cannot be undone.": "您確定要清除所有記憶嗎?此操作無法復原。", - "Are you sure you want to delete \"{{NAME}}\"?": "", + "Are you sure you want to delete \"{{NAME}}\"?": "您確定要刪除「{{NAME}}」嗎?", "Are you sure you want to delete this channel?": "您確定要刪除此頻道嗎?", "Are you sure you want to delete this message?": "您確定要刪除此訊息嗎?", "Are you sure you want to unarchive all archived chats?": "您確定要解除封存所有封存的對話記錄嗎?", @@ -406,7 +406,7 @@ "Delete": "刪除", "Delete a model": "刪除模型", "Delete All Chats": "刪除所有對話紀錄", - "Delete all contents inside this folder": "", + "Delete all contents inside this folder": "刪除此資料夾內的所有內容", "Delete All Models": "刪除所有模型", "Delete Chat": "刪除對話紀錄", "Delete chat?": "刪除對話紀錄?", @@ -1015,7 +1015,7 @@ "Max Upload Size": "最大上傳大小", "Maximum of 3 models can be downloaded simultaneously. Please try again later.": "最多同時下載 3 個模型。請稍後再試。", "May": "5 月", - "MBR": "", + "MBR": "成員", "MCP": "MCP", "MCP support is experimental and its specification changes often, which can lead to incompatibilities. OpenAPI specification support is directly maintained by the Open WebUI team, making it the more reliable option for compatibility.": "MCP 支援為實驗性功能,其規範經常變更,可能導致不相容問題。OpenAPI 規範支援直接由 Open WebUI 團隊維護,是相容性更可靠的選擇。", "Medium": "中", From 662a1fac472efdf784870aa6169d9175242eb343 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Mon, 24 Nov 2025 05:52:18 -0500 Subject: [PATCH 2/9] fix: hybrid search --- backend/open_webui/retrieval/utils.py | 31 +++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/backend/open_webui/retrieval/utils.py b/backend/open_webui/retrieval/utils.py index 0587317bf6..b9053b5ccf 100644 --- a/backend/open_webui/retrieval/utils.py +++ b/backend/open_webui/retrieval/utils.py @@ -90,6 +90,19 @@ class VectorSearchRetriever(BaseRetriever): embedding_function: Any top_k: int + def _get_relevant_documents( + self, query: str, *, run_manager: CallbackManagerForRetrieverRun + ) -> list[Document]: + """Get documents relevant to a query. + + Args: + query: String to find relevant documents for. + run_manager: The callback handler to use. + + Returns: + List of relevant documents. + """ + async def _aget_relevant_documents( self, query: str, @@ -1231,6 +1244,24 @@ class RerankCompressor(BaseDocumentCompressor): extra = "forbid" arbitrary_types_allowed = True + def compress_documents( + self, + documents: Sequence[Document], + query: str, + callbacks: Optional[Callbacks] = None, + ) -> Sequence[Document]: + """Compress retrieved documents given the query context. + + Args: + documents: The retrieved documents. + query: The query context. + callbacks: Optional callbacks to run during compression. + + Returns: + The compressed documents. + + """ + async def acompress_documents( self, documents: Sequence[Document], From 06f0bfd9f5c786c560484b1651f1f4fc58db0a88 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Mon, 24 Nov 2025 05:58:22 -0500 Subject: [PATCH 3/9] fix --- backend/open_webui/retrieval/utils.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/backend/open_webui/retrieval/utils.py b/backend/open_webui/retrieval/utils.py index b9053b5ccf..e8dc97209e 100644 --- a/backend/open_webui/retrieval/utils.py +++ b/backend/open_webui/retrieval/utils.py @@ -102,6 +102,7 @@ class VectorSearchRetriever(BaseRetriever): Returns: List of relevant documents. """ + return [] async def _aget_relevant_documents( self, @@ -1261,6 +1262,7 @@ class RerankCompressor(BaseDocumentCompressor): The compressed documents. """ + return [] async def acompress_documents( self, @@ -1272,9 +1274,7 @@ class RerankCompressor(BaseDocumentCompressor): scores = None if reranking: - scores = self.reranking_function( - [(query, doc.page_content) for doc in documents] - ) + scores = self.reranking_function(query, documents) else: from sentence_transformers import util From 286a5ad0db7bda6faab5e0e99b21f4f9cd0cd2ac Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Mon, 24 Nov 2025 06:03:19 -0500 Subject: [PATCH 4/9] refac/fix: oauth --- backend/open_webui/utils/oauth.py | 2 -- src/lib/i18n/locales/it-IT/translation.json | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/backend/open_webui/utils/oauth.py b/backend/open_webui/utils/oauth.py index 5add660bdf..d3240b49a9 100644 --- a/backend/open_webui/utils/oauth.py +++ b/backend/open_webui/utils/oauth.py @@ -1276,8 +1276,6 @@ class OAuthManager: if client: if hasattr(client, "client_id"): auth_params["client_id"] = client.client_id - if hasattr(client, "client_secret"): - auth_params["client_secret"] = client.client_secret try: token = await client.authorize_access_token(request, **auth_params) diff --git a/src/lib/i18n/locales/it-IT/translation.json b/src/lib/i18n/locales/it-IT/translation.json index 11a8e222b1..f87c4c6edb 100644 --- a/src/lib/i18n/locales/it-IT/translation.json +++ b/src/lib/i18n/locales/it-IT/translation.json @@ -269,7 +269,7 @@ "Click on the user role button to change a user's role.": "Clicca sul pulsante del ruolo utente per modificare il ruolo di un utente.", "Clipboard write permission denied. Please check your browser settings to grant the necessary access.": "Autorizzazione di scrittura negli appunti negata. Controlla le impostazioni del browser per concedere l'accesso necessario.", "Clone": "Clone", - "Clone Chat": "CLona Chat", + "Clone Chat": "Clona Chat", "Clone of {{TITLE}}": "Clone di {{TITLE}}", "Close": "Chiudi", "Close Banner": "", From b2a65976177dfe86d0d0b2487e03a8310f19a16b Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Mon, 24 Nov 2025 06:10:21 -0500 Subject: [PATCH 5/9] fix: tool server save error handling --- src/lib/components/AddToolServerModal.svelte | 1 + 1 file changed, 1 insertion(+) diff --git a/src/lib/components/AddToolServerModal.svelte b/src/lib/components/AddToolServerModal.svelte index 5515910a18..a2098de912 100644 --- a/src/lib/components/AddToolServerModal.svelte +++ b/src/lib/components/AddToolServerModal.svelte @@ -284,6 +284,7 @@ headers = JSON.stringify(_headers, null, 2); } catch (error) { toast.error($i18n.t('Headers must be a valid JSON object')); + loading = false; return; } } From b004a4a2c1c0172e7b37d9eeabfde02fb755d83c Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Mon, 24 Nov 2025 06:13:21 -0500 Subject: [PATCH 6/9] chore: bump --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 19e4faca55..c2a27915b4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "open-webui", - "version": "0.6.37", + "version": "0.6.38", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "open-webui", - "version": "0.6.37", + "version": "0.6.38", "dependencies": { "@azure/msal-browser": "^4.5.0", "@codemirror/lang-javascript": "^6.2.2", diff --git a/package.json b/package.json index 7b87463aef..3ee4b5680d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "open-webui", - "version": "0.6.37", + "version": "0.6.38", "private": true, "scripts": { "dev": "npm run pyodide:fetch && vite dev --host", From 5183eaab4db5917800d554537b5b57aaf7978c2c Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Mon, 24 Nov 2025 06:16:17 -0500 Subject: [PATCH 7/9] doc: changelog --- CHANGELOG.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0f756a5e1e..72ffba1114 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,14 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [0.6.38] - 2025-11-24 + +### Fixed + +- 🔍 Hybrid search now works reliably after recent changes. +- 🛠️ Tool server saving now handles errors gracefully, preventing failed saves from impacting the UI. +- 🔐 SSO/OIDC code fixed to improve login reliability and better handle edge cases. + ## [0.6.37] - 2025-11-24 ### Added From 7ad549b4fbad9cbfdd6a6fd80eb0fd228a05aef0 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Mon, 24 Nov 2025 06:27:52 -0500 Subject: [PATCH 8/9] Update docker-build.yaml --- .github/workflows/docker-build.yaml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/docker-build.yaml b/.github/workflows/docker-build.yaml index a8f9266e9d..7a5dc651c4 100644 --- a/.github/workflows/docker-build.yaml +++ b/.github/workflows/docker-build.yaml @@ -141,6 +141,9 @@ jobs: platform=${{ matrix.platform }} echo "PLATFORM_PAIR=${platform//\//-}" >> $GITHUB_ENV + - name: Delete huge unnecessary tools folder + run: rm -rf /opt/hostedtoolcache + - name: Checkout repository uses: actions/checkout@v5 @@ -243,6 +246,9 @@ jobs: platform=${{ matrix.platform }} echo "PLATFORM_PAIR=${platform//\//-}" >> $GITHUB_ENV + - name: Delete huge unnecessary tools folder + run: rm -rf /opt/hostedtoolcache + - name: Checkout repository uses: actions/checkout@v5 From 0f8729dea2bd079c5a17b3fb5d193dd56ad06c56 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Mon, 24 Nov 2025 06:42:12 -0500 Subject: [PATCH 9/9] refac --- backend/open_webui/config.py | 5 +++++ backend/open_webui/utils/oauth.py | 7 ++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/backend/open_webui/config.py b/backend/open_webui/config.py index 4070e03376..d0e693e319 100644 --- a/backend/open_webui/config.py +++ b/backend/open_webui/config.py @@ -620,6 +620,11 @@ OAUTH_UPDATE_PICTURE_ON_LOGIN = PersistentConfig( os.environ.get("OAUTH_UPDATE_PICTURE_ON_LOGIN", "False").lower() == "true", ) +OAUTH_ACCESS_TOKEN_REQUEST_INCLUDE_CLIENT_ID = ( + os.environ.get("OAUTH_ACCESS_TOKEN_REQUEST_INCLUDE_CLIENT_ID", "False").lower() + == "true" +) + def load_oauth_providers(): OAUTH_PROVIDERS.clear() diff --git a/backend/open_webui/utils/oauth.py b/backend/open_webui/utils/oauth.py index d3240b49a9..77a2ebd46e 100644 --- a/backend/open_webui/utils/oauth.py +++ b/backend/open_webui/utils/oauth.py @@ -53,6 +53,7 @@ from open_webui.config import ( OAUTH_ADMIN_ROLES, OAUTH_ALLOWED_DOMAINS, OAUTH_UPDATE_PICTURE_ON_LOGIN, + OAUTH_ACCESS_TOKEN_REQUEST_INCLUDE_CLIENT_ID, WEBHOOK_URL, JWT_EXPIRES_IN, AppConfig, @@ -1273,8 +1274,12 @@ class OAuthManager: client = self.get_client(provider) auth_params = {} + if client: - if hasattr(client, "client_id"): + if ( + hasattr(client, "client_id") + and OAUTH_ACCESS_TOKEN_REQUEST_INCLUDE_CLIENT_ID + ): auth_params["client_id"] = client.client_id try: