diff --git a/CHANGELOG.md b/CHANGELOG.md index be130ae6de..4915f28376 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,15 @@ 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.43] - 2025-12-22 + +### Fixed + +- 🐍 **Python dependency installation issues** were resolved by correcting pip dependency handling, preventing installation failures in certain environments and improving setup reliability. [Commit](https://github.com/open-webui/open-webui/commit/5c5f87a) +- 🎙️ **Speech-to-Text default content type handling** was fixed and refactored to ensure correct MIME type usage, improving compatibility across STT providers and preventing transcription errors caused by incorrect defaults. [Commit](https://github.com/open-webui/open-webui/commit/4ab917c) +- 🖼️ **Temporary chat image handling** was fixed and refactored, ensuring images generated or edited in temporary chats are correctly processed, stored, and displayed without inconsistencies or missing references. [Commit](https://github.com/open-webui/open-webui/commit/423983f) +- 🎨 **Image action button fixed**, restoring the ability to trigger image generation, editing, and related image actions from the chat UI. [Commit](https://github.com/open-webui/open-webui/commit/def8a00) + ## [0.6.42] - 2025-12-21 ### Added diff --git a/CHANGELOG_EXTRA.md b/CHANGELOG_EXTRA.md index 5361aa69d3..ea216781f3 100644 --- a/CHANGELOG_EXTRA.md +++ b/CHANGELOG_EXTRA.md @@ -5,7 +5,13 @@ 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.42.1] - 2025.12.22 +## [0.6.43.1] - 2025.12.22 + +### Changed + +- 合并官方 0.6.43 改动 + +## [0.6.42.1] - 2025.12.21 ### Added diff --git a/backend/open_webui/env.py b/backend/open_webui/env.py index 57a6cda1ef..ca3f8b28aa 100644 --- a/backend/open_webui/env.py +++ b/backend/open_webui/env.py @@ -85,6 +85,7 @@ log.exception(cuda_error) del cuda_error +SRC_LOG_LEVELS = {} # Legacy variable, do not remove WEBUI_NAME = os.environ.get("WEBUI_NAME", "Open WebUI") if WEBUI_NAME != "Open WebUI": diff --git a/backend/open_webui/routers/audio.py b/backend/open_webui/routers/audio.py index 0816cdcde3..120300d49e 100644 --- a/backend/open_webui/routers/audio.py +++ b/backend/open_webui/routers/audio.py @@ -1151,10 +1151,9 @@ def transcription( user=Depends(get_verified_user), ): log.info(f"file.content_type: {file.content_type}") - stt_supported_content_types = getattr( request.app.state.config, "STT_SUPPORTED_CONTENT_TYPES", [] - ) or ["audio/*", "video/webm"] + ) if not strict_match_mime_type(stt_supported_content_types, file.content_type): raise HTTPException( diff --git a/backend/open_webui/routers/files.py b/backend/open_webui/routers/files.py index 723a150197..7f01537e66 100644 --- a/backend/open_webui/routers/files.py +++ b/backend/open_webui/routers/files.py @@ -114,7 +114,7 @@ def process_uploaded_file(request, file, file_path, file_item, file_metadata, us if file.content_type: stt_supported_content_types = getattr( request.app.state.config, "STT_SUPPORTED_CONTENT_TYPES", [] - ) or ["audio/*", "video/webm"] + ) if strict_match_mime_type(stt_supported_content_types, file.content_type): file_path = Storage.get_file(file_path) diff --git a/backend/open_webui/routers/images.py b/backend/open_webui/routers/images.py index 91bc3f2d40..8037d2077d 100644 --- a/backend/open_webui/routers/images.py +++ b/backend/open_webui/routers/images.py @@ -531,11 +531,17 @@ def upload_image(request, image_data, content_type, metadata, user): @router.post("/generations") +async def generate_images( + request: Request, form_data: CreateImageForm, user=Depends(get_verified_user) +): + return await image_generations(request, form_data, user=user) + + async def image_generations( request: Request, form_data: CreateImageForm, metadata: Optional[dict] = None, - user=Depends(get_verified_user), + user=None, ): # if IMAGE_SIZE = 'auto', default WidthxHeight to the 512x512 default # This is only relevant when the user has set IMAGE_SIZE to 'auto' with an diff --git a/backend/open_webui/utils/misc.py b/backend/open_webui/utils/misc.py index af48b71150..7b98209734 100644 --- a/backend/open_webui/utils/misc.py +++ b/backend/open_webui/utils/misc.py @@ -622,6 +622,10 @@ def strict_match_mime_type(supported: list[str] | str, header: str) -> Optional[ supported = [s for s in supported if s.strip() and "/" in s] + if len(supported) == 0: + # Default to common types if none are specified + supported = ["audio/*", "video/webm"] + match = mimeparse.best_match(supported, header) if not match: return None diff --git a/package-lock.json b/package-lock.json index b19c20ee4a..f62395addc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "open-webui", - "version": "0.6.42.1", + "version": "0.6.43.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "open-webui", - "version": "0.6.42.1", + "version": "0.6.43.1", "dependencies": { "@azure/msal-browser": "^4.5.0", "@codemirror/lang-javascript": "^6.2.2", diff --git a/package.json b/package.json index f88a6d53cb..c9f87db5f8 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "open-webui", - "version": "0.6.42.1", + "version": "0.6.43.1", "private": true, "scripts": { "dev": "npm run pyodide:fetch && vite dev --host", diff --git a/pyproject.toml b/pyproject.toml index f580c6623e..1195bd749e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -52,8 +52,10 @@ dependencies = [ "google-genai==1.56.0", "google-generativeai==0.8.6", - "langchain==0.3.27", - "langchain-community==0.3.29", + "langchain==1.2.0", + "langchain-community==0.4.1", + "langchain-classic==1.0.0", + "langchain-text-splitters==1.1.0", "fake-useragent==2.2.0", "chromadb==1.3.7", diff --git a/src/lib/components/chat/MessageInput.svelte b/src/lib/components/chat/MessageInput.svelte index 5f822dbabb..ab8abd75fb 100644 --- a/src/lib/components/chat/MessageInput.svelte +++ b/src/lib/components/chat/MessageInput.svelte @@ -731,10 +731,20 @@ imageUrl = await compressImageHandler(imageUrl, $settings, $config); } - const blob = await (await fetch(imageUrl)).blob(); - const compressedFile = new File([blob], file.name, { type: file.type }); + if ($temporaryChatEnabled) { + files = [ + ...files, + { + type: 'image', + url: imageUrl + } + ]; + } else { + const blob = await (await fetch(imageUrl)).blob(); + const compressedFile = new File([blob], file.name, { type: file.type }); - uploadFileHandler(compressedFile, false); + uploadFileHandler(compressedFile, false); + } }; reader.readAsDataURL(file['type'] === 'image/heic' ? await convertHeicToJpeg(file) : file);