diff --git a/CHANGELOG.md b/CHANGELOG.md index 5a6e9f009..4d09d3bf8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,45 @@ 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.14] - 2025-06-10 + +### Added + +- 🤖 **Automatic "Follow Up" Suggestions**: Open WebUI now intelligently generates actionable "Follow Up" suggestions automatically with each message you send, helping you stay productive and inspired without interrupting your flow; you can always disable this in Settings if you prefer a distraction-free experience. +- 🧩 **OpenAI-Compatible Embeddings Endpoint**: Introducing a fully OpenAI-style '/api/embeddings' endpoint—now you can plug in OpenAI-style embeddings workflows with zero hassle, making integrations with external tools and platforms seamless and familiar. +- ↗️ **Model Pinning for Quick Access**: Pin your favorite or most-used models to the sidebar for instant selection—no more scrolling through long model lists; your go-to models are always visible and ready for fast access. +- 📌 **Selector Model Item Menu**: Each model in the selector now features a menu where you can easily pin/unpin to the sidebar and copy a direct link—simplifying collaboration and staying organized in even the busiest environments. +- 🛑 **Reliable Stop for Ongoing Chats in Multi-Replica Setups**: Stopping or cancelling an in-progress chat now works reliably even in clustered deployments—ensuring every user can interrupt AI output at any time, no matter your scale. +- 🧠 **'Think' Parameter for Ollama Models**: Leverage new 'think' parameter support for Ollama—giving you advanced control over AI reasoning process and further tuning model behavior for your unique use cases. +- 💬 **Picture Description Modes for Docling**: Customize how images are described/extracted by Docling Loader for smarter, more detailed, and workflow-tailored image understanding in your document pipelines. +- 🛠 **Settings Modal Deep Linking**: Every tab in Settings now has its own route—making direct navigation and sharing of precise settings faster and more intuitive. +- 🎤 **Audio HTML Component Token**: Easily embed and play audio directly in your chats, improving voice-based workflows and making audio content instantly accessible and manageable from any conversation. +- 🔑 **Support for Secret Key File**: Now you can specify 'WEBUI_SECRET_KEY_FILE' for more secure and flexible key management—ideal for advanced deployments and tighter security standards. +- 💡 **Clarity When Cloning Prompts**: Cloned workspace prompts are clearly labelled with "(Clone)" and IDs have "-clone", keeping your prompt library organized and preventing accidental overwrites. +- 📝 **Dedicated User Role Edit Modal**: Updating user roles now reliably opens a dedicated edit user modal instead of cycling through roles—making it safer and more clear to manage team permissions. +- 🏞️ **Better Handling & Storage of Interpreter-Generated Images**: Code interpreter-generated images are now centrally stored and reliably loaded from the database or cloud storage, ensuring your artifacts are always available. +- 🚀 **Pinecone & Vector Search Optimizations**: Applied latest best practices from Pinecone for smarter timeouts, intelligent retry control, improved connection pooling, faster DNS, and concurrent batch handling—giving you more reliable, faster document search and RAG performance without manual tweaks. +- ⚙️ **Ollama Advanced Parameters Unified**: 'keep_alive' and 'format' options are now integrated into the advanced params section—edit everything from the model editor for flexible model control. +- 🛠️ **CUDA 12.6 Docker Image Support**: Deploy to NVIDIA GPUs with capability 7.0 and below (e.g., V100, GTX1080) via new cuda126 image—broadening your hardware options for scalable AI workloads. +- 🔒 **Experimental Table-Level PGVector Data Encryption**: Activate pgcrypto encryption support for pgvector to secure your vector search table contents, giving organizations enhanced compliance and data protection—perfect for enterprise or regulated environments. +- 👁 **Accessibility Upgrades Across Interface**: Chat buttons and close controls are now labelled and structured for optimal accessibility support, ensuring smoother operation with assistive technologies. +- 🎨 **High-Contrast Mode Expansions**: High-contrast accessibility mode now also applies to menu items, tabs, and search input fields, offering a more readable experience for all users. +- 🛠️ **Tooltip & Translation Clarity**: Improved translation and tooltip clarity, especially over radio buttons, making the UI more understandable for all users. +- 🔠 **Global Localization & Translation Improvements**: Hefty upgrades to Traditional Chinese, Simplified Chinese, Hebrew, Russian, Irish, German, and Danish translation packs—making the platform feel native and intuitive for even more users worldwide. +- ⚡ **General Backend Stability & Security Enhancements**: Refined numerous backend routines to minimize memory use, improve performance, and streamline integration with external APIs—making the entire platform more robust and secure for daily work. + +### Fixed + +- 🏷 **Feedback Score Display Improved**: Addressed overflow and visibility issues with feedback scores for more readable and accessible evaluations. +- 🗂 **Admin Settings Model Edits Apply Immediately**: Changes made in the Model Editor within Admin Settings now take effect instantly, eliminating confusion during model management. +- 🔄 **Assigned Tools Update Instantly on New Chats**: Models assigned with specific tools now consistently update and are available in every new chat—making tool workflows more predictable and robust. +- 🛠 **Document Settings Saved Only on User Action**: Document settings now save only when you press the Save button, reducing accidental changes and ensuring greater control. +- 🔊 **Voice Recording on Older iOS Devices Restored**: Voice input is now fully functional on older iOS devices, keeping voice workflows accessible to all users. +- 🔒 **Trusted Email Header Session Security**: User sessions now strictly verify the trusted email header matches the logged-in user's email, ensuring secure authentication and preventing accidental session switching. +- 🔒 **Consistent User Signout on Email Mismatch**: When the trusted email in the header changes, you will now be properly signed out and redirected, safeguarding your session's integrity. +- 🛠 **General Error & Content Validation Improvements**: Smarter error handling means clearer messages and fewer unnecessary retries—making batch uploads, document handling, and knowledge indexing more resilient. +- 🕵️ **Better Feedback on Chat Title Edits**: Error messages now show clearly if problems occur while editing chat titles. + ## [0.6.13] - 2025-05-30 ### Added diff --git a/backend/open_webui/models/users.py b/backend/open_webui/models/users.py index a5dd9467b..00d504088 100644 --- a/backend/open_webui/models/users.py +++ b/backend/open_webui/models/users.py @@ -370,7 +370,7 @@ class UsersTable: except Exception: return False - def update_user_api_key_by_id(self, id: str, api_key: str) -> str: + def update_user_api_key_by_id(self, id: str, api_key: str) -> bool: try: with get_db() as db: result = db.query(User).filter_by(id=id).update({"api_key": api_key}) diff --git a/backend/open_webui/routers/ollama.py b/backend/open_webui/routers/ollama.py index 490e8bfbb..ea46a1cca 100644 --- a/backend/open_webui/routers/ollama.py +++ b/backend/open_webui/routers/ollama.py @@ -1290,11 +1290,7 @@ async def generate_chat_completion( if params: system = params.pop("system", None) - # Unlike OpenAI, Ollama does not support params directly in the body - payload["options"] = apply_model_params_to_body_ollama( - params, (payload.get("options", {}) or {}) - ) - + payload = apply_model_params_to_body_ollama(params, payload) payload = apply_model_system_prompt_to_body(system, payload, metadata, user) # Check if user has access to the model diff --git a/backend/open_webui/utils/payload.py b/backend/open_webui/utils/payload.py index af4995d1e..9b7f74835 100644 --- a/backend/open_webui/utils/payload.py +++ b/backend/open_webui/utils/payload.py @@ -196,7 +196,11 @@ def apply_model_params_to_body_ollama(params: dict, form_data: dict) -> dict: form_data[key] = value(param) del params[key] - return apply_model_params_to_body(params, form_data, mappings) + # Unlike OpenAI, Ollama does not support params directly in the body + form_data["options"] = apply_model_params_to_body( + params, (form_data.get("options", {}) or {}), mappings + ) + return form_data def convert_messages_openai_to_ollama(messages: list[dict]) -> list[dict]: diff --git a/backend/requirements.txt b/backend/requirements.txt index 507dc5db6..c4f19b61b 100644 --- a/backend/requirements.txt +++ b/backend/requirements.txt @@ -14,7 +14,6 @@ aiocache aiofiles starlette-compress==1.6.0 - sqlalchemy==2.0.38 alembic==1.14.0 peewee==3.18.1 diff --git a/pyproject.toml b/pyproject.toml index ef27260c4..188827c73 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -7,7 +7,7 @@ authors = [ license = { file = "LICENSE" } dependencies = [ "fastapi==0.115.7", - "uvicorn[standard]==0.34.0", + "uvicorn[standard]==0.34.2", "pydantic==2.10.6", "python-multipart==0.0.20", @@ -20,7 +20,6 @@ dependencies = [ "async-timeout", "aiocache", "aiofiles", - "starlette-compress==1.6.0", "sqlalchemy==2.0.38", @@ -83,13 +82,13 @@ dependencies = [ "openpyxl==3.1.5", "pyxlsb==1.0.10", "xlrd==2.0.1", - "validators==0.34.0", + "validators==0.35.0", "psutil", "sentencepiece", "soundfile==0.13.1", - "azure-ai-documentintelligence==1.0.0", + "azure-ai-documentintelligence==1.0.2", - "pillow==11.1.0", + "pillow==11.2.1", "opencv-python-headless==4.11.0.86", "rapidocr-onnxruntime==1.4.4", "rank-bm25==0.2.2", diff --git a/src/lib/components/admin/Settings/Models.svelte b/src/lib/components/admin/Settings/Models.svelte index 875d542ff..20c0948d0 100644 --- a/src/lib/components/admin/Settings/Models.svelte +++ b/src/lib/components/admin/Settings/Models.svelte @@ -75,6 +75,8 @@ }; const init = async () => { + models = null; + workspaceModels = await getBaseModels(localStorage.token); baseModels = await getModels(localStorage.token, null, true); @@ -126,6 +128,7 @@ toast.success($i18n.t('Model updated successfully')); } } + await init(); _models.set( await getModels( @@ -133,7 +136,6 @@ $config?.features?.enable_direct_connections && ($settings?.directConnections ?? null) ) ); - await init(); }; const toggleModelHandler = async (model) => { diff --git a/src/lib/components/admin/Users/UserList/EditUserModal.svelte b/src/lib/components/admin/Users/UserList/EditUserModal.svelte index 19f481e83..91946e3ee 100644 --- a/src/lib/components/admin/Users/UserList/EditUserModal.svelte +++ b/src/lib/components/admin/Users/UserList/EditUserModal.svelte @@ -101,7 +101,7 @@