* i18n: fill missing Slovenian (sl-SI) translations
About 400 texts showed up in English for Slovenian users, mostly in newer areas like the file browser, terminal, group settings, multi-factor sign-in and the chat slash commands. All of them now have Slovenian text, using the same terms the rest of the Slovenian translation already uses. Texts that show a number without separate plural forms put the number after a colon, for example "Orodja: 5", so they read correctly whatever the count.
* i18n: translate the new authenticator sign-in strings for Slovenian (sl-SI)
* i18n: fill missing Czech translations
Czech users saw 167 texts in English, among them the new group hierarchy, the authenticator and recovery code setup, the file comparison and several web search settings. All of them are now translated, using the words the Czech translation already uses for chats, groups, connections and sign-in. Model parameter names like top_k are left untranslated, as in the other languages.
* i18n: translate the new authenticator sign-in strings for Czech (cs-CZ)
* i18n: fill missing German (de-DE) translations
German users saw English text in the new authenticator and recovery code screens, the parent group settings, the tool server list and a few other recently added places, because 74 labels and messages had no German translation yet. All of them are translated now, using the wording the rest of the German translation already uses for things like tools, groups and signing in.
* i18n: improve wording of new German (de-DE) translations
A few of the German texts for two-factor sign-in, group settings and connections were awkward or misleading. The remaining recovery codes counter used the plural form even for a single code, and the admin button that signs a user out on all devices sounded like it would sign out the admin. Both are fixed, along with smaller wording improvements across the German texts added in the previous commit.
* i18n: translate the new authenticator sign-in strings for German (de-DE)
When a model returned an image, only PNG was saved as a file. JPEG and WebP images stayed as raw base64 data inside the chat in the database, so a 1.5 MB JPEG made the stored chat 1.5 MB larger. These images are now saved as files and the chat keeps only a link to them, the same way PNG already worked.
Fixes#31916
About 2,800 of the 3,600 Romanian strings were still empty, so most of the interface showed in English. They are now all translated, reusing the wording the Romanian file already had for each term. Twelve older strings are also corrected, since they mistranslated three terms: embedding read as encapsulation, pipeline as a water pipe and code interpreter as a human interpreter. Left as they were, the same settings page would have shown two different words for each of these terms.
The inline citation markers in answers from external knowledge bases (Qdrant, Milvus, pgvector) showed the site's domain, for example docs.example.test, instead of the page title saved with each document. They now show that title, the same way a regular knowledge base shows the file name, and still fall back to the domain when a document has no title. Two different pages can share a title, so each marker now looks up its title by the page it points to; before, a repeated title made every later marker show the next page's title and the last one show nothing.
Fixes https://github.com/open-webui/open-webui/issues/31929
With Milvus as the vector database, all chunks of a file were sent to Milvus in one request. Large files exceeded Milvus's default 64 MB request size limit, so processing ran through the whole embedding step and then failed with the error RESOURCE_EXHAUSTED. With a 4096-dimension embedding model this already happened at about 4,000 chunks, which is a few MB of text. Chunks are now sent in batches of 128, with and without ENABLE_MILVUS_MULTITENANCY_MODE.
Fixes#31989
When a reply was paused and then picked up again, either by answering a question from the built-in Ask User tool or by pressing Continue, every tool round from the second one on sent everything from before the pause to the model twice. Providers that reject repeated tool calls, like DeepSeek, then fail with "Duplicate 'call_id'" and the chat stops, while others quietly see the earlier tool calls and text twice. Everything from before the pause is now sent exactly once. Tested against a mock provider that records every request: three tool rounds after an answered question and after Continue send everything once, and replies that were never paused send exactly what they sent before.
Fixes#31991
Create and publish Docker images with specific build args / build (map[arch:linux/amd64 runner:ubuntu-latest], map[build_args: free_disk:false name:main suffix:]) (push) Waiting to run
Create and publish Docker images with specific build args / build (map[arch:linux/amd64 runner:ubuntu-latest], map[build_args:USE_CUDA=true
USE_CUDA_VER=cu126
free_disk:true name:cuda126 suffix:-cuda126]) (push) Waiting to run
Create and publish Docker images with specific build args / build (map[arch:linux/amd64 runner:ubuntu-latest], map[build_args:USE_CUDA=true free_disk:true name:cuda suffix:-cuda]) (push) Waiting to run
Create and publish Docker images with specific build args / build (map[arch:linux/amd64 runner:ubuntu-latest], map[build_args:USE_OLLAMA=true free_disk:false name:ollama suffix:-ollama]) (push) Waiting to run
Create and publish Docker images with specific build args / build (map[arch:linux/amd64 runner:ubuntu-latest], map[build_args:USE_SLIM=true free_disk:false name:slim suffix:-slim]) (push) Waiting to run
Create and publish Docker images with specific build args / build (map[arch:linux/arm64 runner:ubuntu-24.04-arm], map[build_args: free_disk:false name:main suffix:]) (push) Waiting to run
Create and publish Docker images with specific build args / build (map[arch:linux/arm64 runner:ubuntu-24.04-arm], map[build_args:USE_CUDA=true
USE_CUDA_VER=cu126
free_disk:true name:cuda126 suffix:-cuda126]) (push) Waiting to run
Create and publish Docker images with specific build args / build (map[arch:linux/arm64 runner:ubuntu-24.04-arm], map[build_args:USE_CUDA=true free_disk:true name:cuda suffix:-cuda]) (push) Waiting to run
Create and publish Docker images with specific build args / build (map[arch:linux/arm64 runner:ubuntu-24.04-arm], map[build_args:USE_OLLAMA=true free_disk:false name:ollama suffix:-ollama]) (push) Waiting to run
Create and publish Docker images with specific build args / build (map[arch:linux/arm64 runner:ubuntu-24.04-arm], map[build_args:USE_SLIM=true free_disk:false name:slim suffix:-slim]) (push) Waiting to run