Commit graph

16453 commits

Author SHA1 Message Date
Shamil
ae0827cec0
style(env): satisfy ruff (datetime alias, line length, identity check) (#24118) 2026-05-09 05:30:09 +09:00
Timothy Jaeryang Baek
064fdecb67 refac 2026-05-09 05:29:15 +09:00
Timothy Jaeryang Baek
bf4f44ee9c refac 2026-05-09 05:27:47 +09:00
Timothy Jaeryang Baek
212bb68a66 refac 2026-05-09 05:27:32 +09:00
Vincent Agra
aff78e4958
i18n: Add Tagalog (Filipino) translation (#24254)
Signed-off-by: Adam Tao <tcx4c70@gmail.com>
Co-authored-by: Tim Baek <tim@openwebui.com>
Co-authored-by: joaoback <156559121+joaoback@users.noreply.github.com>
Co-authored-by: Algorithm5838 <108630393+Algorithm5838@users.noreply.github.com>
Co-authored-by: Kylapaallikko <Kylapaallikko@users.noreply.github.com>
Co-authored-by: Teay <pythontogoplease@gmail.com>
Co-authored-by: tcx4c70 <tcx4c70@gmail.com>
Co-authored-by: goodbey857 <76645482+goodbey857@users.noreply.github.com>
Co-authored-by: Jacob Leksan <63938553+jmleksan@users.noreply.github.com>
Co-authored-by: RomualdYT <romuald@gameurnews.fr>
Co-authored-by: Lucas <lucas@vanosenbruggen.com>
Co-authored-by: Classic298 <27028174+Classic298@users.noreply.github.com>
Co-authored-by: Constantine <Runixer@gmail.com>
2026-05-09 05:25:44 +09:00
Timothy Jaeryang Baek
ae43562b86 refac 2026-05-09 05:24:50 +09:00
Timothy Jaeryang Baek
13693554f1 refac 2026-05-09 05:20:28 +09:00
Classic298
1a3e5ef4c1
perf(prompts): make /tags fetch only the tags column with SQL access filter (#24287)
Non-admin GET /api/v1/prompts/tags went through get_prompts_by_user_id,
which loaded every active prompt with its full content/data/meta plus
owner records and all access grants, then ran one has_access query per
prompt that wasn't owned by the caller - all so the endpoint could
collapse the result to a sorted tag list. With 600 prompts this took
several seconds while the admin path (a single SELECT) returned in <1s.

Add Prompts.get_tags_by_user_id which selects only the tags column and
applies the same EXISTS-based access filter used by /list. Also tighten
the admin get_tags to project just the tags column instead of full rows.
The endpoint is now one DB query (plus one for groups), no row hydration,
no N+1.

Co-authored-by: Claude <noreply@anthropic.com>
2026-05-09 05:20:13 +09:00
Aleix Dorca
26b1a3d7dc
Update catalan translation.json (#24174) 2026-05-09 05:17:48 +09:00
Timothy Jaeryang Baek
3ab7b777b1 refac 2026-05-09 05:15:12 +09:00
Timothy Jaeryang Baek
1789303886 refac 2026-05-09 05:14:55 +09:00
Classic298
41107a34ca
perf(prompts): filter prompt list in SQL instead of N+1 has_access loop (#24288)
get_prompts_by_user_id used to fetch every active prompt (with users +
all access grants), then call AccessGrants.has_access() once per prompt
that the user did not own. With 600+ prompts this issued ~600 extra
round-trips per request and explained the multi-second delay reported in
the GET /api/v1/prompts and /api/v1/prompts/tags endpoints for non-admin
users.

Push the access check into a single SQL query via the existing
AccessGrants.has_permission_filter (EXISTS subquery), so only accessible
rows come back from the DB. Users and access grants for the surviving
rows are still batch-fetched, no N+1 anywhere on this path.

Co-authored-by: Claude <noreply@anthropic.com>
2026-05-09 05:12:51 +09:00
Shirasawa
114c99ae2f
I18n/improve chinese translation (#24194)
* i18n: improve zh-CN translation

* i18n: improve zh-TW translation
2026-05-09 05:11:48 +09:00
Classic298
3746339cfc
refac: apply DOMPurify to excel and office HTML render assignments (#24468) 2026-05-09 05:10:31 +09:00
Timothy Jaeryang Baek
7eeff2fdf9 refac 2026-05-09 05:09:20 +09:00
Timothy Jaeryang Baek
55e7c7854b refac 2026-05-09 05:04:51 +09:00
Timothy Jaeryang Baek
c978a788c8 refac 2026-05-09 05:03:38 +09:00
Timothy Jaeryang Baek
3d48596c9e refac 2026-05-09 04:56:25 +09:00
Timothy Jaeryang Baek
072d2000f3 refac 2026-05-09 04:53:47 +09:00
Timothy Jaeryang Baek
9386fc83a3 refac 2026-05-09 04:49:18 +09:00
Jacob Leksan
b63da90ae4
Enhance CommitSessionMiddleware to allow health probes to bypass session management, ensuring faster and more reliable responses. (#24384) 2026-05-09 04:46:00 +09:00
Timothy Jaeryang Baek
23ff9943a9 refac 2026-05-09 04:44:20 +09:00
Timothy Jaeryang Baek
33e588cf09 refac 2026-05-09 04:39:44 +09:00
Timothy Jaeryang Baek
005df577fe refac 2026-05-09 04:36:43 +09:00
Timothy Jaeryang Baek
1b4cd705d0 refac 2026-05-09 04:36:23 +09:00
Timothy Jaeryang Baek
8ffc3d746f refac 2026-05-09 04:22:46 +09:00
Timothy Jaeryang Baek
c1202a2327 refac 2026-05-09 04:17:58 +09:00
Classic298
55d1db1f38
fix: stream GET /chats/all to prevent OOM on large chat histories (#24461)
Convert the /chats/all endpoint from loading all user chats into memory
at once to a streaming NDJSON response that fetches chats in batches of
100. This prevents Out-of-Memory crashes for users with large chat
histories.

Backend: Added async generator that paginates through chats with
short-lived DB sessions per batch (critical for SQLite lock release).

Frontend: Updated getAllChats to consume the NDJSON stream via
ReadableStream reader, accumulating results for the export file.

Ref: open-webui#22206
2026-05-09 04:11:52 +09:00
Timothy Jaeryang Baek
6082e1adae refac 2026-05-09 04:03:49 +09:00
Timothy Jaeryang Baek
c6763521c0 refac 2026-05-09 03:46:08 +09:00
Timothy Jaeryang Baek
7c398a625a refac 2026-05-09 03:45:56 +09:00
Timothy Jaeryang Baek
cdfcbc4af6 refac 2026-05-09 03:40:23 +09:00
Timothy Jaeryang Baek
4d766a3edf refac 2026-05-09 03:19:48 +09:00
Classic298
d06e6d6ddc
Apply validate_profile_image_url to ChannelWebhookForm.profile_image_url (#24370) 2026-05-09 03:19:25 +09:00
Jacob Leksan
8b78821ba4
Refactor file processing to use asyncio for transcribing, improving concurrency. (#24379) 2026-05-09 03:17:47 +09:00
Timothy Jaeryang Baek
552bbcecfa refac 2026-05-09 03:15:53 +09:00
Timothy Jaeryang Baek
f152ad36b3 refac 2026-05-09 03:06:19 +09:00
Timothy Jaeryang Baek
60ea4214aa refac 2026-05-09 02:58:17 +09:00
Timothy Jaeryang Baek
bc4d6eef33 refac 2026-05-09 02:56:15 +09:00
Timothy Jaeryang Baek
cde72dab71 refac 2026-05-09 02:54:09 +09:00
Timothy Jaeryang Baek
ff791b4814 refac 2026-05-09 02:43:07 +09:00
Timothy Jaeryang Baek
7eaecbad5a refac 2026-05-09 02:38:08 +09:00
Timothy Jaeryang Baek
0103d7e82c refac 2026-05-09 02:31:30 +09:00
Timothy Jaeryang Baek
3309f5d9f1 refac 2026-05-09 02:25:26 +09:00
Athanasios Oikonomou
e451f8f63b
fix: open file content in new window when clicking file name in FileItemModal (#24125)
Previously, clicking the file name link did not open the file content
because the condition checked `!isPDF && item.url`, which failed for
`type === 'file'` items that use an ID-based URL path.

Update the condition to trigger on `item.type === 'file' || item.url`,
and resolve the correct URL by extracting `fileId` from `item.id` or
`item.tempId` instead of using `item.url` directly as the file
identifier.
2026-05-09 02:09:35 +09:00
Timothy Jaeryang Baek
6dff85b9d2 refac 2026-05-09 02:08:08 +09:00
Classic298
7e275c1daa
fix: prevent STT from blocking the uvicorn event loop (#24338)
The transcription endpoint was async but called the synchronous transcribe() function directly, blocking the single-threaded uvicorn event loop for the entire duration of inference. This caused all HTTP and WebSocket connections to stall for every user on the instance during STT processing.

- Add asyncio import

- Use async UploadFile.read() instead of synchronous file.file.read()

- Offload the blocking transcribe() call via asyncio.to_thread()

Closes #24169
2026-05-09 02:05:28 +09:00
Timothy Jaeryang Baek
1c1c8b18e5 refac 2026-05-09 02:04:36 +09:00
Timothy Jaeryang Baek
55a572cd39 refac 2026-05-09 02:04:26 +09:00
Timothy Jaeryang Baek
9adc0c442a refac 2026-05-09 02:02:02 +09:00