Skip to content
Merged

Dev #249

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
8 changes: 7 additions & 1 deletion CHANGELOG_EXTRA.md
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
1 change: 1 addition & 0 deletions backend/open_webui/env.py
Original file line number Diff line number Diff line change
Expand Up @@ -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":
Expand Down
3 changes: 1 addition & 2 deletions backend/open_webui/routers/audio.py
Original file line number Diff line number Diff line change
Expand Up @@ -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(
Expand Down
2 changes: 1 addition & 1 deletion backend/open_webui/routers/files.py
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
8 changes: 7 additions & 1 deletion backend/open_webui/routers/images.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
4 changes: 4 additions & 0 deletions backend/open_webui/utils/misc.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
4 changes: 2 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -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",
Expand Down
6 changes: 4 additions & 2 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down
16 changes: 13 additions & 3 deletions src/lib/components/chat/MessageInput.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
Loading