0.6.43 (#20093)
Some checks failed
Release to PyPI / release (push) Has been cancelled
Release / release (push) Has been cancelled
Deploy to HuggingFace Spaces / check-secret (push) Has been cancelled
Create and publish Docker images with specific build args / build-main-image (linux/amd64, ubuntu-latest) (push) Has been cancelled
Create and publish Docker images with specific build args / build-main-image (linux/arm64, ubuntu-24.04-arm) (push) Has been cancelled
Create and publish Docker images with specific build args / build-cuda-image (linux/amd64, ubuntu-latest) (push) Has been cancelled
Create and publish Docker images with specific build args / build-cuda-image (linux/arm64, ubuntu-24.04-arm) (push) Has been cancelled
Create and publish Docker images with specific build args / build-cuda126-image (linux/amd64, ubuntu-latest) (push) Has been cancelled
Create and publish Docker images with specific build args / build-cuda126-image (linux/arm64, ubuntu-24.04-arm) (push) Has been cancelled
Create and publish Docker images with specific build args / build-ollama-image (linux/amd64, ubuntu-latest) (push) Has been cancelled
Create and publish Docker images with specific build args / build-ollama-image (linux/arm64, ubuntu-24.04-arm) (push) Has been cancelled
Create and publish Docker images with specific build args / build-slim-image (linux/amd64, ubuntu-latest) (push) Has been cancelled
Create and publish Docker images with specific build args / build-slim-image (linux/arm64, ubuntu-24.04-arm) (push) Has been cancelled
Python CI / Format Backend (push) Has been cancelled
Frontend Build / Format & Build Frontend (push) Has been cancelled
Frontend Build / Frontend Unit Tests (push) Has been cancelled
Deploy to HuggingFace Spaces / deploy (push) Has been cancelled
Create and publish Docker images with specific build args / merge-main-images (push) Has been cancelled
Create and publish Docker images with specific build args / merge-cuda-images (push) Has been cancelled
Create and publish Docker images with specific build args / merge-cuda126-images (push) Has been cancelled
Create and publish Docker images with specific build args / merge-ollama-images (push) Has been cancelled
Create and publish Docker images with specific build args / merge-slim-images (push) Has been cancelled

* refac

* fix: python pip install dep issue

* Merge pull request #20085 from joaoback/patch-19

Update translation.json (pt-BR)

* fix/refac: stt default content type

* fix/refac: temp chat image handling

* fix/refac: image action button

* chore: bump

---------

Co-authored-by: joaoback <156559121+joaoback@users.noreply.github.com>
This commit is contained in:
Tim Baek 2025-12-22 01:03:34 -05:00 committed by GitHub
commit a7271532f8
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
11 changed files with 67 additions and 36 deletions

View file

@ -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

View file

@ -85,6 +85,7 @@ if "cuda_error" in locals():
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":

View file

@ -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(

View file

@ -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)

View file

@ -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

View file

@ -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

4
package-lock.json generated
View file

@ -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",

View file

@ -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",

View file

@ -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",

View file

@ -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);

View file

@ -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",