Commit Graph

16430 Commits

Author SHA1 Message Date
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
Timothy Jaeryang Baek
fd3368c0bf refac 2026-05-09 01:55:51 +09:00
Timothy Jaeryang Baek
ef6d4f2d6c refac 2026-05-09 01:50:58 +09:00
Timothy Jaeryang Baek
6bdc2ffa79 refac 2026-05-09 01:31:42 +09:00
Timothy Jaeryang Baek
b72019db39 refac 2026-05-09 01:31:04 +09:00
Timothy Jaeryang Baek
2977910ffd refac 2026-05-09 01:25:01 +09:00
Timothy Jaeryang Baek
f39f4a86ae refac 2026-05-09 01:22:25 +09:00
Timothy Jaeryang Baek
1dee67b64d refac 2026-05-09 01:21:17 +09:00
Jacob Leksan
2a18dc98ac Implement asynchronous database ping for health checks (#24380) 2026-05-09 01:20:11 +09:00
Classic298
1f977d072e chore: Update SECURITY.md (#24363)
* Update SECURITY.md

* Update SECURITY.md
2026-05-09 01:19:30 +09:00
Timothy Jaeryang Baek
4754ece4a2 refac 2026-05-09 01:17:57 +09:00
Timothy Jaeryang Baek
5c3edc2539 refac 2026-05-09 01:17:33 +09:00
Timothy Jaeryang Baek
4fe2de7864 refac 2026-05-09 01:13:16 +09:00
Timothy Jaeryang Baek
a32d26e61d refac 2026-05-05 04:21:23 +09:00
Timothy Jaeryang Baek
989d5fd4e2 refac 2026-05-05 04:05:15 +09:00
Classic298
4e6a7baab7 Merge pull request #24356 from Classic298/patch-1
doc/chore: Update SECURITY.md
2026-05-05 03:45:57 +09:00
Timothy Jaeryang Baek
cde21b9f6d refac 2026-05-05 03:33:47 +09:00
Timothy Jaeryang Baek
86df8bf27e refac 2026-05-05 02:41:22 +09:00
Timothy Jaeryang Baek
5bc80b145f refac 2026-05-04 23:57:20 +09:00
Timothy Jaeryang Baek
4e2240aada refac 2026-04-24 18:55:39 +09:00
Timothy Jaeryang Baek
f93d20ac42 chore: i18n 2026-04-24 18:48:45 +09:00
Timothy Jaeryang Baek
8ff7ff459b chore: format 2026-04-24 18:48:21 +09:00
Timothy Jaeryang Baek
f48b8ffbf0 refac 2026-04-24 18:38:57 +09:00
Constantine
3560d2f630 perf(chats): drop redundant db.refresh after commit in update_chat_by_id (#24024)
The chat table has no computed columns (no DEFAULT, SERIAL/IDENTITY,
or TRIGGER that populate server-side values on UPDATE), and every
column modified by update_chat_by_id is set explicitly from Python
values earlier in the function. db.refresh therefore issues a SELECT
that replaces those just-written Python values with the round-tripped
database representation of the same values, which is a no-op for
functional purposes but pulls the entire chat.chat JSON blob back over
the network and through the driver's JSON decoder.

On large, active chats where chat.chat can reach tens of megabytes,
skipping the refresh measurably reduces latency and eliminates one
~JSON-sized transient allocation per write.
2026-04-24 18:34:57 +09:00