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 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_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_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:USE_OLLAMA=true free_disk:false name:ollama suffix:-ollama]) (push) Waiting to run
The view_file and view_knowledge_file built-in tools let a model ask for a start and end line, but passing only the end line did nothing: the tool returned the first block of characters and dropped the end line without a word. Models that asked for "up to line N" kept getting the same opening slice and no error, so they retried the call over and over. An end line on its own now reads from line 1 up to that line, the same result as passing start line 1 explicitly.
Fixes#33100
When a model reads a file or knowledge-base file in pages with line numbers turned on, the position it was told to continue from pointed past the end of the previous page, so a chunk of text between pages was silently skipped and never returned. The gap grew with every page, dropping a few percent of a large file. Reading now continues from the right place and returns every character exactly once; paging with line numbers off is unchanged.
Fixes#33099
* fix: knowledge, note and chat attach entries open while file upload is off
When a user may not attach files (no file upload permission, or a selected model without "File Upload"), the "+" menu greys out "Attach Knowledge", "Reference Chats" and "Attach Notes", but they still opened, and the picked item vanished from the input without a message. Knowledge picked from the "#" and "@" lists vanished the same way, and the "#" list offered a pasted link to users without the web upload permission, which only answered "You do not have permission to upload web content". The greyed entries now do nothing on click, like "Attach Files" next to them, and the "#" and "@" lists leave out what the user cannot attach.
Refs #32830
* refac: drop type annotations on the upload flag to match neighbours
The new upload flag declarations now follow the untyped style of the lines around them.
* fix: hide attach entries in the # and @ lists from the first keystroke
The chat input now works out on its own whether files can be attached, so the lists no longer wait for the + menu to report it.
* fix: knowledge base files stay on "Uploading" instead of switching to "Processing"
A file added to a knowledge base is uploaded in a moment, and the long wait after that is the text extraction, which the file list still called "Uploading". Nothing updated on its own either, so the only way to find out whether a file had moved on or finished was to leave the knowledge base and come back. The file now switches to "Processing" as soon as it has reached the server, and the list keeps itself current until the file is ready, so slow text extraction no longer looks like a stuck upload. Adding a folder or a web page goes through a different flow and is not touched here.
* refac: inline the processing status update for knowledge base uploads
Moves the status update straight into the upload call with no change in behaviour.
* refac: drop a stray blank line and comment from the upload handler
Removes a blank line and a comment the previous follow-up added, with no change in behaviour.
On fresh installs the web loader and other HTML extraction came back empty because a transitive dependency update started crashing during tokenization. Holding that dependency at its last good version restores extraction. Verified on a clean Python 3.12 install that loading a page returns its text again.
Choosing Add Details, More Concise, or typing a suggestion under a reply sent the model your original question followed straight by the bare instruction, with the reply itself missing, so it answered the instruction on its own (for example "OK, I'll keep answers shorter") instead of rewriting that reply. The model now receives the reply it is being asked to change, so it returns a shorter, more detailed or altered version of it. Plain Try Again and temporary chats were not affected.
Fixes#33083
* fix: built-in tool toggles show while their feature is off
The model editor listed the Memory, Notes, Channels, Notifications, Web Search, Image Generation, Code Interpreter, Automations, Calendar and Sub-agents built-in tools even when the admin had turned that feature off for the whole instance, where those toggles do nothing. Each of them is now hidden while its feature is off, and the choices saved on a model are kept for when it is turned back on. The server now also reports whether sub-agents are on, and saving the Sub-agents settings updates the editor without a reload.
Refs #32830
* refac: name the feature switch map like the rest of the codebase
Uses the same name the model capabilities change uses for its matching map.
* refac: keep each tool's feature switch next to its label
Each built-in tool now carries its feature switch alongside its label and description, so the list is defined in one place.
* fix: built-in tools show while the model's matching capability is off
The Files built-in tool showed in the model editor although a model only gets it while File Upload is on and File Context is off, and File Context is on by default. The Memory, Web Search, Image Generation and Code Interpreter tools also showed while the same capability was off on that model. These tools now appear and disappear as the model's capabilities are switched, and the saved tool choices are kept for when the capability is turned back on.
Refs #32830
* refac: filter built-in tools by their capability directly
Same behaviour, with the per-tool capability list folded into the filter.
* fix: treat unset file capabilities as on when showing the Files tool
Matches how the server decides whether a model gets the Files tool.
Settings > Interface showed the Web Search Query Generation switch even with web search turned off, where it has no effect. It now only shows while web search is on, and its stored value is kept.
Refs #32830
* fix: Call button shows while speech-to-text is unavailable
Unless realtime voice is set up, a call needs the server to turn the user's speech into text. The Call button still showed when the speech-to-text engine is "Web API", where clicking it only answered "Call feature is not supported when using Web STT engine", and to users without the speech-to-text permission, where the call opened but nothing they said was transcribed. The button now shows only when a call can work: realtime voice is on, a call is already running, or the engine is not "Web API" and the user has the speech-to-text permission.
Refs #32830
* fix: keyboard shortcut also needs the speech-to-text permission for calls
The call shortcut and call links now follow the same speech-to-text rule as the Call button.
* refac: keep the whole Call button condition in one place
Also drops the Web API speech-to-text message from the Call button, since the button no longer shows for that engine.
* refac: keep the call permission check unchanged in the call shortcut
The speech-to-text rule for the call shortcut is now its own check after the existing call permission check, which stays as it was.
* fix: image engine settings show while image generation is off
Settings > Images showed the image engine, its credentials and the whole image edit section even with image generation turned off. They now only show while the Image Generation switch is on, and flipping it on shows them right away, so everything can be set up before saving. Stored engine settings and keys are kept.
Refs #32830
* fix: saving image settings without a required key turns image generation off
Saving Settings > Images with Image Generation on but a required URL or API key empty showed an "is required" error and flipped the switch back off, which now also hid the field that needed filling. The switch now stays on with the error, so the missing value can be filled in and saved right away. Nothing is saved until then.
Refs #32830
* refac: always require the Gemini API key while image generation is on
The key field only shows while image generation is on, so it is simply required now.
* refac: drop the stray blank lines left in the image settings save checks
Each missing-setting check now shows its error and stops right away, with no leftover gap from the removed lines.
* fix: files selected together for a knowledge base only appear one at a time
Selecting or dropping several files into a knowledge base showed a row for the first file only. The others got no row at all until the one before them had finished processing, which with slow text extraction can be many minutes per file, so they looked lost. Every selected file now shows up as "Uploading" straight away, in the order they will be uploaded, and keeps its row until it has been added to the knowledge base. Each file still waits for the previous one to finish processing, as before.
* refac: give the upload list a type
The list of files waiting to upload now carries the same type as the rows it holds.