diff --git a/CHANGELOG.md b/CHANGELOG.md index 4761a997f6..f5fef6cf78 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,19 @@ 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.24] - 2025-08-21 + +### Added + +- ♿ **High Contrast Mode in Chat Messages**: Implemented enhanced High Contrast Mode support for chat messages, making text and important details easier to read and improving accessibility for users with visual preferences or requirements. +- 🌎 **Localization & Internationalization Improvements**: Enhanced and expanded translations for a more natural and professional user experience for speakers of these languages across the entire interface. + +### Fixed + +- 🖼️ **ComfyUI Image Generation Restored**: Fixed a critical bug where ComfyUI-based image generation was not functioning, ensuring users can once again effortlessly create and interact with AI-generated visuals in their workflows. +- 🛠️ **Tool Server Loading and Visibility Restored**: Resolved an issue where connected tool servers were not loading or visible, restoring seamless integration and uninterrupted access to all external and custom tools directly within the platform. +- 🛡️ **Redis User Session Reliability**: Fixed a problem affecting the saving of user sessions in Redis, ensuring reliable login sessions, stable authentication, and secure multi-user environments. + ## [0.6.23] - 2025-08-21 ### Added diff --git a/backend/open_webui/routers/images.py b/backend/open_webui/routers/images.py index b970bed664..c28e60da75 100644 --- a/backend/open_webui/routers/images.py +++ b/backend/open_webui/routers/images.py @@ -487,10 +487,13 @@ async def image_generations( # image model other than gpt-image-1, which is warned about on settings save size = "512x512" - if "x" in request.app.state.config.IMAGE_SIZE: + if ( + request.app.state.config.IMAGE_SIZE + and "x" in request.app.state.config.IMAGE_SIZE + ): size = request.app.state.config.IMAGE_SIZE - if "x" in form_data.size: + if form_data.size and "x" in form_data.size: size = form_data.size width, height = tuple(map(int, size.split("x"))) diff --git a/backend/open_webui/socket/main.py b/backend/open_webui/socket/main.py index 49323db975..5570348093 100644 --- a/backend/open_webui/socket/main.py +++ b/backend/open_webui/socket/main.py @@ -266,7 +266,9 @@ async def connect(sid, environ, auth): user = Users.get_user_by_id(data["id"]) if user: - SESSION_POOL[sid] = user.model_dump() + SESSION_POOL[sid] = user.model_dump( + exclude=["date_of_birth", "bio", "gender"] + ) if user.id in USER_POOL: USER_POOL[user.id] = USER_POOL[user.id] + [sid] else: @@ -288,7 +290,7 @@ async def user_join(sid, data): if not user: return - SESSION_POOL[sid] = user.model_dump() + SESSION_POOL[sid] = user.model_dump(exclude=["date_of_birth", "bio", "gender"]) if user.id in USER_POOL: USER_POOL[user.id] = USER_POOL[user.id] + [sid] else: diff --git a/backend/open_webui/utils/middleware.py b/backend/open_webui/utils/middleware.py index d9bcce9272..b991c1b986 100644 --- a/backend/open_webui/utils/middleware.py +++ b/backend/open_webui/utils/middleware.py @@ -740,9 +740,12 @@ async def process_chat_payload(request, form_data, user, metadata, model): system_message = get_system_message(form_data.get("messages", [])) if system_message: - form_data = apply_system_prompt_to_body( - system_message.get("content"), form_data, metadata, user - ) + try: + form_data = apply_system_prompt_to_body( + system_message.get("content"), form_data, metadata, user + ) + except: + pass event_emitter = get_event_emitter(metadata) event_call = get_event_call(metadata) diff --git a/backend/open_webui/utils/tools.py b/backend/open_webui/utils/tools.py index 428b534865..e68124bd5c 100644 --- a/backend/open_webui/utils/tools.py +++ b/backend/open_webui/utils/tools.py @@ -489,14 +489,14 @@ async def get_tool_servers(request: Request): if request.app.state.redis is not None: try: tool_servers = json.loads(await request.app.state.redis.get("tool_servers")) + request.app.state.TOOL_SERVERS = tool_servers except Exception as e: log.error(f"Error fetching tool_servers from Redis: {e}") if not tool_servers: - await set_tool_servers(request) + tool_servers = await set_tool_servers(request) - request.app.state.TOOL_SERVERS = tool_servers - return request.app.state.TOOL_SERVERS + return tool_servers async def get_tool_server_data(token: str, url: str) -> Dict[str, Any]: diff --git a/package-lock.json b/package-lock.json index e1753472d9..e47a722dd3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "open-webui", - "version": "0.6.23", + "version": "0.6.24", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "open-webui", - "version": "0.6.23", + "version": "0.6.24", "dependencies": { "@azure/msal-browser": "^4.5.0", "@codemirror/lang-javascript": "^6.2.2", diff --git a/package.json b/package.json index 87152d3258..dba62ec5ee 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "open-webui", - "version": "0.6.23", + "version": "0.6.24", "private": true, "scripts": { "dev": "npm run pyodide:fetch && vite dev --host", diff --git a/src/lib/components/chat/Artifacts.svelte b/src/lib/components/chat/Artifacts.svelte index a6caa42106..bbe2132b90 100644 --- a/src/lib/components/chat/Artifacts.svelte +++ b/src/lib/components/chat/Artifacts.svelte @@ -204,7 +204,10 @@ }); -