Commit graph

18450 commits

Author SHA1 Message Date
spoofy
02efa6ed10
i18n: ru uk new UI strings (#29794)
* i18n: translate new UI strings into Russian and Ukrainian

* i18n: preserve established Ukrainian Valves terminology

* i18n: shorten Russian Modified label

* i18n: shorten Ukrainian Modified label

* i18n: shorten Russian and Ukrainian default labels
2026-09-08 13:23:41 -04:00
Timothy Jaeryang Baek
254e29b9af refac 2026-09-08 13:19:14 -04:00
Timothy Jaeryang Baek
ba34bee2d1 refac 2026-09-08 12:45:11 -04:00
Timothy Jaeryang Baek
aaaf26fb8e refac 2026-09-08 12:38:07 -04:00
Timothy Jaeryang Baek
9a4b643130 chore: i18n 2026-09-08 11:39:57 -04:00
Timothy Jaeryang Baek
e723dcda58 refac 2026-09-08 01:45:35 -04:00
Timothy Jaeryang Baek
3572e01a71 refac 2026-09-08 01:04:12 -04:00
Timothy Jaeryang Baek
98a920168e refac 2026-09-07 14:46:52 -04:00
Timothy Jaeryang Baek
675b9839f1 refac 2026-09-07 13:26:30 -04:00
G30
d49e424874
fix: enable ask_user submit when the last question uses the other field (#29494) 2026-09-07 13:21:12 -04:00
G30
2f2f4c872f
fix(retrieval): drain playwright route handlers before the page closes (#29325) 2026-09-07 13:20:59 -04:00
G30
2823bf64e1
fix: scale dropdown menu item text with the UI scale setting (#29493) 2026-09-07 13:20:43 -04:00
Timothy Jaeryang Baek
9e634c0c56 refac 2026-09-07 13:19:16 -04:00
Timothy Jaeryang Baek
e1bfefdf9f refac 2026-09-07 13:13:25 -04:00
Timothy Jaeryang Baek
f5fcf4c89f refac 2026-09-07 12:40:44 -04:00
Timothy Jaeryang Baek
f9f815c862 refac 2026-09-07 12:21:23 -04:00
Timothy Jaeryang Baek
b141fdc49e refac 2026-09-07 12:18:23 -04:00
Timothy Jaeryang Baek
3cda47cdb4 refac 2026-09-07 12:16:09 -04:00
Timothy Jaeryang Baek
b71744b178 refac 2026-09-07 12:15:20 -04:00
G30
3aabbfebfe
fix: wait for a pending note save before navigating away (#29745) 2026-09-07 11:26:45 -04:00
Timothy Jaeryang Baek
57acc2b68f refac
Some checks failed
Python CI / Ruff Format (3.11) (push) Has been cancelled
Python CI / Ruff Format (3.12) (push) Has been cancelled
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) Has been cancelled
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) Has been cancelled
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) Has been cancelled
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) Has been cancelled
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) Has been cancelled
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) Has been cancelled
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) Has been cancelled
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) Has been cancelled
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) Has been cancelled
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) Has been cancelled
Frontend Build / Format & Build (push) Has been cancelled
Frontend Build / Unit Tests (push) Has been cancelled
Create and publish Docker images with specific build args / copy-to-dockerhub (-cuda126, cuda126) (push) Has been cancelled
Create and publish Docker images with specific build args / copy-to-dockerhub (-ollama, ollama) (push) Has been cancelled
Create and publish Docker images with specific build args / copy-to-dockerhub (-slim, slim) (push) Has been cancelled
Create and publish Docker images with specific build args / merge (map[name:cuda suffix:-cuda]) (push) Has been cancelled
Create and publish Docker images with specific build args / notify-helm-charts (push) Has been cancelled
Create and publish Docker images with specific build args / merge (map[name:cuda126 suffix:-cuda126]) (push) Has been cancelled
Create and publish Docker images with specific build args / merge (map[name:main suffix:]) (push) Has been cancelled
Create and publish Docker images with specific build args / merge (map[name:ollama suffix:-ollama]) (push) Has been cancelled
Create and publish Docker images with specific build args / merge (map[name:slim suffix:-slim]) (push) Has been cancelled
Create and publish Docker images with specific build args / copy-to-dockerhub (, main) (push) Has been cancelled
Create and publish Docker images with specific build args / copy-to-dockerhub (-cuda, cuda) (push) Has been cancelled
2026-09-06 23:23:59 -04:00
Timothy Jaeryang Baek
3795d5b292 refac 2026-09-06 19:37:59 -04:00
Timothy Jaeryang Baek
d418840aa9 refac 2026-09-06 19:36:17 -04:00
Timothy Jaeryang Baek
7eefeef4f1 refac 2026-09-06 19:32:31 -04:00
Timothy Jaeryang Baek
6c7aa3543d refac 2026-09-06 19:02:44 -04:00
Classic298
4b10190096
refac: move the connection index role check into the listing handlers (#29619)
The Ollama and OpenAI model listing handlers now check the caller's role themselves instead of declaring it as a route-level dependency.
2026-09-06 18:30:31 -04:00
Timothy Jaeryang Baek
57fc344873 refac 2026-09-06 18:30:00 -04:00
Timothy Jaeryang Baek
77d2000eb7 refac 2026-09-06 18:29:46 -04:00
Classic298
ae01ef9c95
fix: skip image, media and font requests in the Playwright web loader (#29742)
Fetching a page with many media files through the Playwright web loader was extremely slow or timed out, while raw Playwright loaded the same page in a couple of seconds. The loader routes every request the page makes through the backend HTTP client and downloads the full body before the browser sees any of it, and the browser cancelling a media request once it has enough never reaches that download. On a page with a few dozen audio players every file was pulled in full for a text extraction that never reads it.

Image, media and font requests are now aborted in the interceptor before any fetch is made. None of them feed the text extraction. Measured on the page from the report with the default timeout on the same connection:

| | requests fetched | bytes downloaded | elapsed |
|---|---|---|---|
| before | 151 | 55.0 MB | 10.1 s |
| after | 45 | 3.9 MB | 2.6 s |

Fixes #29741
2026-09-06 17:01:00 -05:00
Timothy Jaeryang Baek
649c012ecf refac 2026-09-06 17:53:02 -04:00
Timothy Jaeryang Baek
de1203f9b5 refac 2026-09-06 17:46:35 -04:00
Classic298
2e16a761ee
refactor: scope tool export to tools the caller can write (#29310)
The bulk tool export returned every tool the caller could read, while the per-tool export path returns only what the caller can write. This aligns the two, matching how model export already scopes its query.

Callers still export their own tools and any tool shared with them for writing; admins running with BYPASS_ADMIN_ACCESS_CONTROL are unaffected.
2026-09-06 17:44:45 -04:00
Timothy Jaeryang Baek
f3eade42ae refac 2026-09-06 17:43:17 -04:00
Timothy Jaeryang Baek
30eed12513 refac 2026-09-06 17:38:21 -04:00
Timothy Jaeryang Baek
a1c02098aa refac 2026-09-06 17:35:49 -04:00
Timothy Jaeryang Baek
508de20779 refac 2026-09-06 17:27:30 -04:00
Timothy Jaeryang Baek
98fcb844e1 refac 2026-09-06 17:24:23 -04:00
Timothy Jaeryang Baek
0fa4dea5ff refac 2026-09-06 17:21:57 -04:00
Timothy Jaeryang Baek
f1c803d36b refac 2026-09-06 17:18:16 -04:00
Timothy Jaeryang Baek
d27aa72ab4 refac 2026-09-06 17:13:32 -04:00
Timothy Jaeryang Baek
c4a349651e refac 2026-09-06 17:10:01 -04:00
Classic298
1932ca649e
fix: stop sending OpenAPI tool server path and query parameters in the request body (#29717)
Tool calls to an OpenAPI tool server put every argument the model returned into the JSON request body, including the parameters that were already substituted into the URL. Servers that validate their input strictly (additionalProperties: false) answered 422 "unexpected property", so reads worked and every write through an endpoint with a path or query parameter failed.

The body is now built from the model's arguments minus the operation's declared parameters, keeping any name the requestBody schema declares as a property of its own, so an endpoint that wants the resource id in the body as well as in the path still gets it.

The filter only runs when the resolved body schema lists its properties. A free-form, composed or non-JSON body offers nothing to check a name against, so those requests go out exactly as before.

src/lib/apis/index.ts carries the same request builder for direct tool server connections and had the same bug, so it gets the same fix.

Fixes #29716
2026-09-06 17:01:26 -04:00
Classic298
66e021a926
fix: normalize a tool call name sent as null (#29690)
Some endpoints stream a tool call whose function name is JSON null instead of a string. Nothing normalized it, so the null stayed on the tool call, was written into the stored message, and was sent back to the endpoint in the assistant message on the next turn, where a null is not a valid function name.

The delta accumulator now replaces a null name with an empty string, at the same point it already normalizes the arguments field. The call still fails as an unknown tool, which is the right outcome for a call that has no name, so the result is one failed tool call instead of a follow-up request the endpoint has to reject.

This is done where the delta enters the accumulator rather than at the consumers, because the name is emitted to the client and persisted while the response is still streaming, before anything downstream could clean it up.

Checked against 1261 streaming delta sequences: behaviour is unchanged except where the delta that creates the tool call carries a null name.

Seen in #29686 with a custom sglang build.
2026-09-06 17:00:03 -04:00
Timothy Jaeryang Baek
3361a972b3 refac 2026-09-06 16:59:40 -04:00
Classic298
cd68a66fba
Gate the channel webhook profile image endpoint on channel access (#29703)
Any authenticated user could fetch a channel webhook's avatar, or be redirected to its external profile image URL, without belonging to the channel or holding any read access to it. This was the only webhook route with neither a channel check nor the channels feature gate.

The route now applies the same read gate every other route in this router uses: active membership for group and direct message channels, admin or a channel read grant otherwise, answering with 403 on denial and 404 when the webhook's channel row no longer exists. It also runs the channels feature and permission gate, so with channels disabled, or the permission withdrawn from regular users, the endpoint now refuses where it previously served the image.

Avatars keep rendering for channel members, and a denied request shows the default logo rather than a broken image, because the avatar component already falls back on an image error.
2026-09-06 16:58:50 -04:00
Classic298
517617b601
chore: stop shipping uv in the Docker image (#29728)
The Docker image gets about 50 MB smaller on disk (about 20 MB off the pull). uv is only needed to run the requirements install, but it is pip-installed into the image and stays there. It is now bind-mounted from the uv image for that RUN only, pinned to 0.12.10, so the runtime image never contains it. This is the pattern uv's own Docker guide recommends for the case.

Uninstalling uv at the end of the same RUN would also keep it out of the layer; the mount was preferred because it fixes the uv version and the mounted layer is cached by the builder across rebuilds.

pip stays available in the container, so hand-installing optional packages the way requirements.txt describes keeps working; only running uv inside the container goes away. The build now requires BuildKit (the syntax directive alone was a comment to the classic builder, this line makes it mandatory), needs access to ghcr.io next to PyPI, and the uv version is a pin to bump by hand, like the base images.

Part of #29721.
2026-09-06 16:58:05 -04:00
Timothy Jaeryang Baek
91f8775b28 refac 2026-09-06 16:55:28 -04:00
joaoback
53cc969e64
i18n: add pt-BR translations for newly added UI items and consistency pass (#29740)
New **pt-BR** translations for items introduced in the latest releases, plus a consistency/quality pass across existing strings (grammar, tone, capitalization, pluralization). Placeholders and hotkeys preserved. No logic changes.
2026-09-06 16:55:06 -04:00
Classic298
831b3b0df2
refac: validate the citation embed URL before use (#29701)
A citation's embed_url now has to be an http or https URL, or protocol-relative, before it is opened or handed to the embed panel. Anything else falls back to the citation modal, which already renders the source.
2026-09-06 16:54:44 -04:00
Timothy Jaeryang Baek
cb942bb94c refac 2026-09-06 16:48:30 -04:00