Skip to content

Commit e3faec6

Browse files
authored
Merge pull request open-webui#19416 from open-webui/dev
0.6.38
2 parents fc05e0a + 0f8729d commit e3faec6

File tree

11 files changed

+70
-16
lines changed

11 files changed

+70
-16
lines changed

.github/workflows/docker-build.yaml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,9 @@ jobs:
141141
platform=${{ matrix.platform }}
142142
echo "PLATFORM_PAIR=${platform//\//-}" >> $GITHUB_ENV
143143
144+
- name: Delete huge unnecessary tools folder
145+
run: rm -rf /opt/hostedtoolcache
146+
144147
- name: Checkout repository
145148
uses: actions/checkout@v5
146149

@@ -243,6 +246,9 @@ jobs:
243246
platform=${{ matrix.platform }}
244247
echo "PLATFORM_PAIR=${platform//\//-}" >> $GITHUB_ENV
245248
249+
- name: Delete huge unnecessary tools folder
250+
run: rm -rf /opt/hostedtoolcache
251+
246252
- name: Checkout repository
247253
uses: actions/checkout@v5
248254

CHANGELOG.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,14 @@ All notable changes to this project will be documented in this file.
55
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
66
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

8+
## [0.6.38] - 2025-11-24
9+
10+
### Fixed
11+
12+
- 🔍 Hybrid search now works reliably after recent changes.
13+
- 🛠️ Tool server saving now handles errors gracefully, preventing failed saves from impacting the UI.
14+
- 🔐 SSO/OIDC code fixed to improve login reliability and better handle edge cases.
15+
816
## [0.6.37] - 2025-11-24
917

1018
### Added

backend/open_webui/config.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -620,6 +620,11 @@ def __getattr__(self, key):
620620
os.environ.get("OAUTH_UPDATE_PICTURE_ON_LOGIN", "False").lower() == "true",
621621
)
622622

623+
OAUTH_ACCESS_TOKEN_REQUEST_INCLUDE_CLIENT_ID = (
624+
os.environ.get("OAUTH_ACCESS_TOKEN_REQUEST_INCLUDE_CLIENT_ID", "False").lower()
625+
== "true"
626+
)
627+
623628

624629
def load_oauth_providers():
625630
OAUTH_PROVIDERS.clear()

backend/open_webui/retrieval/utils.py

Lines changed: 34 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,20 @@ class VectorSearchRetriever(BaseRetriever):
9090
embedding_function: Any
9191
top_k: int
9292

93+
def _get_relevant_documents(
94+
self, query: str, *, run_manager: CallbackManagerForRetrieverRun
95+
) -> list[Document]:
96+
"""Get documents relevant to a query.
97+
98+
Args:
99+
query: String to find relevant documents for.
100+
run_manager: The callback handler to use.
101+
102+
Returns:
103+
List of relevant documents.
104+
"""
105+
return []
106+
93107
async def _aget_relevant_documents(
94108
self,
95109
query: str,
@@ -1231,6 +1245,25 @@ class Config:
12311245
extra = "forbid"
12321246
arbitrary_types_allowed = True
12331247

1248+
def compress_documents(
1249+
self,
1250+
documents: Sequence[Document],
1251+
query: str,
1252+
callbacks: Optional[Callbacks] = None,
1253+
) -> Sequence[Document]:
1254+
"""Compress retrieved documents given the query context.
1255+
1256+
Args:
1257+
documents: The retrieved documents.
1258+
query: The query context.
1259+
callbacks: Optional callbacks to run during compression.
1260+
1261+
Returns:
1262+
The compressed documents.
1263+
1264+
"""
1265+
return []
1266+
12341267
async def acompress_documents(
12351268
self,
12361269
documents: Sequence[Document],
@@ -1241,9 +1274,7 @@ async def acompress_documents(
12411274

12421275
scores = None
12431276
if reranking:
1244-
scores = self.reranking_function(
1245-
[(query, doc.page_content) for doc in documents]
1246-
)
1277+
scores = self.reranking_function(query, documents)
12471278
else:
12481279
from sentence_transformers import util
12491280

backend/open_webui/utils/oauth.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@
5353
OAUTH_ADMIN_ROLES,
5454
OAUTH_ALLOWED_DOMAINS,
5555
OAUTH_UPDATE_PICTURE_ON_LOGIN,
56+
OAUTH_ACCESS_TOKEN_REQUEST_INCLUDE_CLIENT_ID,
5657
WEBHOOK_URL,
5758
JWT_EXPIRES_IN,
5859
AppConfig,
@@ -1273,11 +1274,13 @@ async def handle_callback(self, request, provider, response):
12731274
client = self.get_client(provider)
12741275

12751276
auth_params = {}
1277+
12761278
if client:
1277-
if hasattr(client, "client_id"):
1279+
if (
1280+
hasattr(client, "client_id")
1281+
and OAUTH_ACCESS_TOKEN_REQUEST_INCLUDE_CLIENT_ID
1282+
):
12781283
auth_params["client_id"] = client.client_id
1279-
if hasattr(client, "client_secret"):
1280-
auth_params["client_secret"] = client.client_secret
12811284

12821285
try:
12831286
token = await client.authorize_access_token(request, **auth_params)

package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "open-webui",
3-
"version": "0.6.37",
3+
"version": "0.6.38",
44
"private": true,
55
"scripts": {
66
"dev": "npm run pyodide:fetch && vite dev --host",

src/lib/components/AddToolServerModal.svelte

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -284,6 +284,7 @@
284284
headers = JSON.stringify(_headers, null, 2);
285285
} catch (error) {
286286
toast.error($i18n.t('Headers must be a valid JSON object'));
287+
loading = false;
287288
return;
288289
}
289290
}

src/lib/i18n/locales/it-IT/translation.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -269,7 +269,7 @@
269269
"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.",
270270
"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.",
271271
"Clone": "Clone",
272-
"Clone Chat": "CLona Chat",
272+
"Clone Chat": "Clona Chat",
273273
"Clone of {{TITLE}}": "Clone di {{TITLE}}",
274274
"Close": "Chiudi",
275275
"Close Banner": "",

src/lib/i18n/locales/zh-CN/translation.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@
145145
"Archived Chats": "已归档对话",
146146
"archived-chat-export": "导出已归档对话",
147147
"Are you sure you want to clear all memories? This action cannot be undone.": "您确认要清除所有记忆吗?清除后无法还原。",
148-
"Are you sure you want to delete \"{{NAME}}\"?": "",
148+
"Are you sure you want to delete \"{{NAME}}\"?": "您确认要删除“{{NAME}}”吗?",
149149
"Are you sure you want to delete this channel?": "您确认要删除此频道吗?",
150150
"Are you sure you want to delete this message?": "您确认要删除此消息吗?",
151151
"Are you sure you want to unarchive all archived chats?": "您确认要取消所有已归档的对话吗?",
@@ -406,7 +406,7 @@
406406
"Delete": "删除",
407407
"Delete a model": "删除模型",
408408
"Delete All Chats": "删除所有对话记录",
409-
"Delete all contents inside this folder": "",
409+
"Delete all contents inside this folder": "删除此分组内的所有内容",
410410
"Delete All Models": "删除所有模型",
411411
"Delete Chat": "删除对话记录",
412412
"Delete chat?": "要删除此对话记录吗?",
@@ -1015,7 +1015,7 @@
10151015
"Max Upload Size": "最大上传大小",
10161016
"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "最多可同时下载 3 个模型,请稍后重试。",
10171017
"May": "五月",
1018-
"MBR": "",
1018+
"MBR": "成员",
10191019
"MCP": "MCP",
10201020
"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 团队维护,在兼容性方面更加可靠。",
10211021
"Medium": "",

0 commit comments

Comments
 (0)