From def8a0027d48f7cbabc1139f8ebe7c901e1114b9 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Mon, 22 Dec 2025 09:41:12 +0400 Subject: [PATCH 1/8] refac --- backend/open_webui/env.py | 1 + 1 file changed, 1 insertion(+) diff --git a/backend/open_webui/env.py b/backend/open_webui/env.py index 36860a0bee..1e977906c4 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": From 5c5f87a63cabaf12fd568207eec466743be79366 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Mon, 22 Dec 2025 09:42:50 +0400 Subject: [PATCH 2/8] fix: python pip install dep issue --- pyproject.toml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) 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", From 7f0ca8c4b783c9780936247f2e0f66c7db24c06a Mon Sep 17 00:00:00 2001 From: joaoback <156559121+joaoback@users.noreply.github.com> Date: Mon, 22 Dec 2025 02:43:25 -0300 Subject: [PATCH 3/8] Merge pull request #20085 from joaoback/patch-19 Update translation.json (pt-BR) --- src/lib/i18n/locales/pt-BR/translation.json | 48 ++++++++++----------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/src/lib/i18n/locales/pt-BR/translation.json b/src/lib/i18n/locales/pt-BR/translation.json index 73c844fa4d..91a8250118 100644 --- a/src/lib/i18n/locales/pt-BR/translation.json +++ b/src/lib/i18n/locales/pt-BR/translation.json @@ -12,10 +12,10 @@ "{{COUNT}} Available Tools": "{{COUNT}} Ferramentas disponíveis", "{{COUNT}} characters": "{{COUNT}} caracteres", "{{COUNT}} extracted lines": "{{COUNT}} linhas extraídas", - "{{COUNT}} files": "", + "{{COUNT}} files": "{COUNT}} arquivos", "{{COUNT}} hidden lines": "{{COUNT}} linhas ocultas", "{{COUNT}} Replies": "{{COUNT}} Respostas", - "{{COUNT}} Rows": "", + "{{COUNT}} Rows": "{{COUNT}} Linhas", "{{COUNT}} Sources": "{{COUNT}} Origens", "{{COUNT}} words": "{{COUNT}} palavras", "{{LOCALIZED_DATE}} at {{LOCALIZED_TIME}}": "{{LOCALIZED_DATE}} às {{LOCALIZED_TIME}}", @@ -69,7 +69,7 @@ "Add text content": "Adicionar conteúdo de texto", "Add User": "Adicionar Usuário", "Add User Group": "Adicionar grupo de usuários", - "Add webpage": "", + "Add webpage": "Adicionar página web", "Additional Config": "Configuração adicional", "Additional configuration options for marker. This should be a JSON string with key-value pairs. For example, '{\"key\": \"value\"}'. Supported keys include: disable_links, keep_pageheader_in_output, keep_pagefooter_in_output, filter_blank_pages, drop_repeated_text, layout_coverage_threshold, merge_threshold, height_tolerance, gap_threshold, image_threshold, min_line_length, level_count, default_level": "Opções de configuração adicionais para o marcador. Deve ser uma string JSON com pares chave-valor. Por exemplo, '{\"key\": \"value\"}'. As chaves suportadas incluem: disable_links, keep_pageheader_in_output, keep_pagefooter_in_output, filter_blank_pages, drop_repeated_text, layout_coverage_threshold, merge_threshold, height_tolerance, gap_threshold, image_threshold, min_line_length, level_count, default_level", "Additional Parameters": "Parâmetros adicionais", @@ -138,7 +138,7 @@ "API keys": "Chaves API", "API Keys": "Chaves API", "API Mode": "Modo API", - "API Timeout": "", + "API Timeout": "Tempo limite da API", "API Version": "Versão da API", "API Version is required": "Versão da API é obrigatória", "Application DN": "DN da Aplicação", @@ -223,7 +223,7 @@ "Call feature is not supported when using Web STT engine": "O recurso de chamada não é suportado ao usar o mecanismo Web STT", "Camera": "Câmera", "Cancel": "Cancelar", - "Cannot create an empty note.": "", + "Cannot create an empty note.": "Não é possível criar uma nota vazia.", "Capabilities": "Capacidades", "Capture": "Capturar", "Capture Audio": "Capturar Audio", @@ -233,7 +233,7 @@ "Channel deleted successfully": "Canal apagado com sucesso", "Channel Name": "Nome do canal", "Channel name cannot be empty.": "O nome do canal não pode estar vazio.", - "Channel name must be less than 128 characters": "", + "Channel name must be less than 128 characters": "O nome do canal deve ter menos de 128 caracteres.", "Channel Type": "Tipo de canal", "Channel updated successfully": "Canal atualizado com sucesso", "Channels": "Canais", @@ -303,7 +303,7 @@ "Collaboration channel where people join as members": "Canal de colaboração onde as pessoas se juntam como membros.", "Collapse": "Recolher", "Collection": "Coleção", - "Collections": "", + "Collections": "Coleções", "Color": "Cor", "ComfyUI": "ComfyUI", "ComfyUI API Key": "Chave de API do ComfyUI", @@ -372,7 +372,7 @@ "Create Model": "Criar modelo", "Create new key": "Criar nova chave", "Create new secret key": "Criar nova chave secreta", - "Create note": "", + "Create note": "Criar nota", "Create Note": "Criar Nota", "Create your first note by clicking on the plus button below.": "Crie sua primeira nota clicando no botão de adição abaixo.", "Created at": "Criado em", @@ -630,7 +630,7 @@ "Enter SearchApi API Key": "Digite a Chave API do SearchApi", "Enter SearchApi Engine": "Digite o Motor do SearchApi", "Enter Searxng Query URL": "Digite a URL de Consulta do Searxng", - "Enter Searxng search language": "", + "Enter Searxng search language": "Digite o idioma de pesquisa do Searxng", "Enter Seed": "Digite a Seed", "Enter SerpApi API Key": "Insira a chave da API SerpApi", "Enter SerpApi Engine": "Digite o mecanismo/engine SerpApi", @@ -738,7 +738,7 @@ "Failed to load chat preview": "Falha ao carregar a pré-visualização do chat", "Failed to load file content.": "Falha ao carregar o conteúdo do arquivo.", "Failed to move chat": "Falha ao mover o chat", - "Failed to process URL: {{url}}": "", + "Failed to process URL: {{url}}": "Falha ao processar URL: {{url}}", "Failed to read clipboard contents": "Falha ao ler o conteúdo da área de transferência", "Failed to remove member": "Falha ao remover membro", "Failed to render diagram": "Falha ao renderizar o diagrama", @@ -840,7 +840,7 @@ "Google PSE API Key": "Chave API do Google PSE", "Google PSE Engine Id": "ID do Motor do Google PSE", "Gravatar": "", - "Grid": "", + "Grid": "Grade", "Group": "Grupo", "Group Channel": "Canal do grupo", "Group created successfully": "Grupo criado com sucesso", @@ -998,8 +998,8 @@ "License": "Licença", "Lift List": "", "Light": "Claro", - "Limit concurrent search queries. 0 = unlimited (default). Set to 1 for sequential execution (recommended for APIs with strict rate limits like Brave free tier).": "", - "List": "", + "Limit concurrent search queries. 0 = unlimited (default). Set to 1 for sequential execution (recommended for APIs with strict rate limits like Brave free tier).": "Limitar consultas de pesquisa simultâneas. 0 = ilimitado (padrão). Defina como 1 para execução sequencial (recomendado para APIs com limites de taxa rígidos, como o nível gratuito do Brave).", + "List": "Lista", "Listening...": "Escutando...", "Llama.cpp": "", "LLMs can make mistakes. Verify important information.": "LLMs podem cometer erros. Verifique informações importantes.", @@ -1105,14 +1105,14 @@ "Name and ID are required, please fill them out": "Nome e documento de identidade são obrigatórios, por favor preencha-os", "Name your knowledge base": "Nome da sua base de conhecimento", "Native": "Nativo", - "New": "", + "New": "Novo", "New Button": "Novo Botão", "New Chat": "Novo Chat", "New Folder": "Nova Pasta", "New Function": "Nova Função", "New Knowledge": "Novo Conhecimento", "New Model": "Novo Modelo", - "New Note": "", + "New Note": "Nova nota", "New Password": "Nova Senha", "New Prompt": "Novo Prompt", "New Temporary Chat": "Novo chat temporário", @@ -1131,12 +1131,12 @@ "No expiration can pose security risks.": "Nenhuma expiração pode representar riscos de segurança.", "No feedbacks found": "Comentários não encontrados", "No file selected": "Nenhum arquivo selecionado", - "No files in this knowledge base.": "", + "No files in this knowledge base.": "Não existem arquivos nesta base de conhecimento.", "No functions found": "Nenhuma função encontrada", "No groups with access, add a group to grant access": "Nenhum grupo com acesso, adicione um grupo para dar acesso", "No HTML, CSS, or JavaScript content found.": "Nenhum conteúdo HTML, CSS ou JavaScript encontrado.", "No inference engine with management support found": "Nenhum mecanismo de inferência com suporte de gerenciamento encontrado", - "No knowledge bases found.": "", + "No knowledge bases found.": "Nenhuma base de conhecimento encontrada.", "No knowledge found": "Nenhum conhecimento encontrado", "No memories to clear": "Nenhuma memória para limpar", "No model IDs": "Nenhum ID de modelo", @@ -1323,8 +1323,8 @@ "Read": "Ler", "Read Aloud": "Ler em Voz Alta", "Read more →": "Leia mais →", - "Read Only": "", - "Read-Only Access": "", + "Read Only": "Somente leitura", + "Read-Only Access": "Acesso somente leitura", "Reason": "Razão", "Reasoning Effort": "Esforço de raciocínio", "Reasoning Tags": "Tags de raciocínio", @@ -1434,7 +1434,7 @@ "Searching Knowledge for \"{{searchQuery}}\"": "Buscando conhecimento para \"{{searchQuery}}\"", "Searching the web": "Pesquisando na Internet...", "Searxng Query URL": "URL da Consulta Searxng", - "Searxng search language (all, en, es, de, fr, etc.)": "", + "Searxng search language (all, en, es, de, fr, etc.)": "Idioma de pesquisa de pesquisa (all, en, es, de, fr, etc.)", "See readme.md for instructions": "Veja readme.md para instruções", "See what's new": "Veja o que há de novo", "Seed": "Seed", @@ -1509,7 +1509,7 @@ "Show": "Mostrar", "Show \"What's New\" modal on login": "Mostrar \"O que há de Novo\" no login", "Show Admin Details in Account Pending Overlay": "Mostrar Detalhes do Administrador na Sobreposição de Conta Pendentes", - "Show Files": "", + "Show Files": "Mostrar arquivos", "Show Formatting Toolbar": "Mostrar barra de ferramentas de formatação", "Show image preview": "Mostrar pré-visualização da imagem", "Show Model": "Mostrar modelo", @@ -1534,7 +1534,7 @@ "Sonar Pro": "", "Sonar Reasoning": "", "Sonar Reasoning Pro": "", - "Sort": "", + "Sort": "Organizar", "Sougou Search API sID": "", "Sougou Search API SK": "", "Source": "Fonte", @@ -1789,7 +1789,7 @@ "Web Search in Chat": "Pesquisa na Web no Chat", "Web Search Query Generation": "Geração de consulta de pesquisa na Web", "Webhook URL": "URL do Webhook", - "Webpage URLs": "", + "Webpage URLs": "URLs de páginas da web", "WebUI Settings": "Configurações da WebUI", "WebUI URL": "", "WebUI will make requests to \"{{url}}\"": "A WebUI fará requisições para \"{{url}}\"", @@ -1826,7 +1826,7 @@ "You cannot upload an empty file.": "Você não pode carregar um arquivo vazio.", "You do not have permission to send messages in this channel.": "Você não tem permissão para enviar mensagens neste canal.", "You do not have permission to send messages in this thread.": "Você não tem permissão para enviar mensagens neste tópico.", - "You do not have permission to upload files to this knowledge base.": "", + "You do not have permission to upload files to this knowledge base.": "Você não tem permissão para enviar arquivos para esta base de conhecimento.", "You do not have permission to upload files.": "Você não tem permissão para fazer upload de arquivos.", "You have no archived conversations.": "Você não tem conversas arquivadas.", "You have shared this chat": "Você compartilhou este chat", From 4ab917c74bc39d710a678d924724fc33a4a3b3fb Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Mon, 22 Dec 2025 09:45:55 +0400 Subject: [PATCH 4/8] fix/refac: stt default content type --- backend/open_webui/routers/audio.py | 3 +-- backend/open_webui/routers/files.py | 2 +- backend/open_webui/utils/misc.py | 4 ++++ 3 files changed, 6 insertions(+), 3 deletions(-) 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/utils/misc.py b/backend/open_webui/utils/misc.py index 85f47719b6..e293f3d257 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 From 423983f5a7a9217ce5a0e4e37db05e87c8c635a8 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Mon, 22 Dec 2025 09:48:53 +0400 Subject: [PATCH 5/8] fix/refac: temp chat image handling --- src/lib/components/chat/MessageInput.svelte | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) 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); From 0a783234067b22c6d3f4e694de061afdb03f560f Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Mon, 22 Dec 2025 09:56:44 +0400 Subject: [PATCH 6/8] fix/refac: image action button --- backend/open_webui/routers/images.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) 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 From 5088583721e30971a6453b90e164db76317613e4 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Mon, 22 Dec 2025 10:02:57 +0400 Subject: [PATCH 7/8] chore: bump --- CHANGELOG.md | 9 +++++++++ package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 12 insertions(+), 3 deletions(-) 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/package-lock.json b/package-lock.json index 0c7c0f8bea..17baf5042a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "open-webui", - "version": "0.6.42", + "version": "0.6.43", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "open-webui", - "version": "0.6.42", + "version": "0.6.43", "dependencies": { "@azure/msal-browser": "^4.5.0", "@codemirror/lang-javascript": "^6.2.2", diff --git a/package.json b/package.json index 411c83d985..f0a599274c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "open-webui", - "version": "0.6.42", + "version": "0.6.43", "private": true, "scripts": { "dev": "npm run pyodide:fetch && vite dev --host", From 671ec762abc7c1986fa460454fc76edbb02229dd Mon Sep 17 00:00:00 2001 From: U8F69 Date: Mon, 22 Dec 2025 14:10:58 +0800 Subject: [PATCH 8/8] chore(repo): merge from remote --- CHANGELOG_EXTRA.md | 8 +++++++- package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 10 insertions(+), 4 deletions(-) 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/package-lock.json b/package-lock.json index 280b0b0e67..f62395addc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "open-webui", - "version": "0.6.43", + "version": "0.6.43.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "open-webui", - "version": "0.6.43", + "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 e3c3a5d41a..c9f87db5f8 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "open-webui", - "version": "0.6.43", + "version": "0.6.43.1", "private": true, "scripts": { "dev": "npm run pyodide:fetch && vite dev --host",