Commit graph

76 commits

Author SHA1 Message Date
Timothy Jaeryang Baek
260ead64da refac 2026-05-21 14:01:57 +04:00
Classic298
c306a7e16e
refactor: remove unused DELETE /chats/{id}/tags/all endpoint (#24785)
The bulk-clear-chat-tags endpoint's only frontend wrapper,
deleteTagsById in src/lib/apis/chats/index.ts, is dead: nothing imports
or calls it, the path is referenced nowhere else, and the route handler
has no internal caller. Removes the route handler, the dead wrapper, and
the now-orphaned Chats.delete_all_tags_by_id_and_user_id model method
(its sole caller was this route). The shared
Chats.delete_orphan_tags_for_user method is untouched.

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-19 21:03:58 +04:00
Timothy Jaeryang Baek
aa06200f78 refac 2026-05-19 20:37:53 +04:00
Classic298
ba78ebea27
fix: validate folder_id ownership on chat create + folder-update endpoints (#24588)
POST /api/v1/chats/new and POST /api/v1/chats/{id}/folder accepted a
caller-supplied folder_id with no validation — neither ownership, nor
existence, nor UUID format. The row was persisted with the supplied
value verbatim, so the DB ended up with chat rows whose folder_id
referenced another user's folder, a non-existent UUID, or even a
non-UUID string.

No read path surfaces this across users — every chat-folder read is
user_id-filtered on both sides — so this is referential-integrity
hardening rather than a security boundary fix. But there's no reason
to accept dangling references either, and the downstream consumers
shouldn't have to assume the column is clean.

Add a Folders.get_folder_by_id_and_user_id() lookup at both writers:
if a folder_id is supplied, it must match a folder owned by the
caller. None remains allowed (chat-without-folder is the default).
Non-existent and non-UUID values fall through to 404.

Reported by ShigekiTsuchiyama in GHSA-4vrg-2vcq-q7jc.

Co-authored-by: ShigekiTsuchiyama <ShigekiTsuchiyama@users.noreply.github.com>
2026-05-14 02:57:57 +09:00
Timothy Jaeryang Baek
6d0295588e refac: modernize type annotations (PEP 604 / PEP 585) 2026-05-12 17:10:15 +09:00
Timothy Jaeryang Baek
3a21b334cc refac 2026-05-11 02:15:46 +09:00
Timothy Jaeryang Baek
315566064a refac 2026-05-11 01:57:50 +09:00
Timothy Jaeryang Baek
3fcad2f627 refac 2026-05-09 08:28:29 +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
cde21b9f6d refac 2026-05-05 03:33:47 +09:00
Timothy Jaeryang Baek
47329b5032 refac 2026-04-20 08:55:34 +09:00
Timothy Jaeryang Baek
2e52ad8ff2 refac: shared chat 2026-04-17 10:16:32 +09:00
Timothy Jaeryang Baek
cf4218e688 refac 2026-04-13 21:29:03 -05:00
Timothy Jaeryang Baek
25898116ea chore: format 2026-04-12 18:12:59 -05:00
Timothy Jaeryang Baek
27169124f2 refac: async db 2026-04-12 14:22:11 -05:00
Timothy Jaeryang Baek
0e5696de74 refac 2026-04-01 05:55:48 -05:00
Timothy Jaeryang Baek
0638b9f56c refac 2026-04-01 04:00:18 -05:00
Timothy Jaeryang Baek
70285fb6ca refac 2026-03-24 04:53:23 -05:00
Timothy Jaeryang Baek
ade617efa8 refac 2026-03-24 04:49:48 -05:00
Timothy Jaeryang Baek
de3317e26b refac 2026-03-17 17:58:01 -05:00
Ethan T.
a229f9ea42
fix: replace bare except with except Exception (#22473)
Replace bare except clauses with except Exception to follow Python best practices and avoid catching unexpected system exceptions like KeyboardInterrupt and SystemExit.
2026-03-15 17:48:23 -05:00
Timothy Jaeryang Baek
342aa84bbe refac 2026-02-22 17:51:03 -06:00
Classic298
d664922feb
Avoid loading full chat JSON blob for pinned/archived/shared list endpoints (#21591)
Co-authored-by: Tim Baek <tim@openwebui.com>
2026-02-19 16:48:23 -06:00
Classic298
35763a352c
Optimize shared chats list to use column projection (#163) (#21614)
The GET /chats/shared endpoint was loading full Chat rows including
the entire conversation history JSON blob, only to discard it and
return SharedChatResponse (id, title, share_id, timestamps). Now
uses with_entities() to select only the 5 needed columns, avoiding
deserialization of potentially large chat JSON for every shared chat.
2026-02-19 15:50:03 -06:00
Timothy Jaeryang Baek
c748c3ede7 refac 2026-02-16 00:41:36 -06:00
Timothy Jaeryang Baek
a10ac774ab enh: manage shared chats 2026-01-29 18:51:02 +04:00
Timothy Jaeryang Baek
4615e8f92b refac 2026-01-20 22:28:10 +04:00
Timothy Jaeryang Baek
700349064d chore: format 2026-01-08 01:55:56 +04:00
Timothy Jaeryang Baek
71ca25c8ac refac 2025-12-31 20:23:32 +04:00
Classic298
9195d7aeb0
fix: prevent delete_chat_by_id crash when chat is None (#20270)
Add null check after Chats.get_chat_by_id() in both admin and user code paths. When chat doesn't exist, now raises HTTP 404 instead of crashing with AttributeError when accessing chat.meta.
2025-12-31 17:39:33 +04:00
Classic298
c02451178c
init (#20212) 2025-12-30 12:15:31 +04:00
Timothy Jaeryang Baek
b1d0f00d8c refac/enh: db session sharing 2025-12-29 00:21:18 +04:00
Timothy Jaeryang Baek
37b15604de refac 2025-12-27 22:16:10 +04:00
Timothy Jaeryang Baek
a9609585af refac 2025-12-27 01:41:06 +04:00
Timothy Jaeryang Baek
ac0ae2ae20 refac 2025-12-27 01:06:21 +04:00
Timothy Jaeryang Baek
3b0d25ad2b refac 2025-12-27 00:40:08 +04:00
Timothy Jaeryang Baek
adf463059d refac 2025-12-27 00:02:03 +04:00
Timothy Jaeryang Baek
5f20102b33 refac 2025-12-26 23:55:00 +04:00
Timothy Jaeryang Baek
f5c07e317e refac 2025-12-26 16:59:14 +04:00
Timothy Jaeryang Baek
39a2b9789c refac 2025-12-26 16:16:10 +04:00
Timothy Jaeryang Baek
85bbed3ec5 enh: sync stats 2025-12-26 15:13:50 +04:00
Timothy Jaeryang Baek
9c61e95ecb refac 2025-12-26 14:05:16 +04:00
Tim Baek
df106099a1 refac 2025-12-25 18:32:13 -05:00
Tim Baek
4be99174be refac 2025-12-25 18:11:17 -05:00
Classic298
823b9a6dd9
chore/perf: Remove old SRC level log env vars with no impact (#20045)
* Update openai.py

* Update env.py

* Merge pull request open-webui#19030 from open-webui/dev (#119)

Co-authored-by: Tim Baek <tim@openwebui.com>
Co-authored-by: Claude <noreply@anthropic.com>

---------

Co-authored-by: Tim Baek <tim@openwebui.com>
Co-authored-by: Claude <noreply@anthropic.com>
2025-12-20 08:16:14 -05:00
Timothy Jaeryang Baek
a7993f6f4e refac 2025-12-10 12:22:40 -05:00
Timothy Jaeryang Baek
cf6a1300ca enh: experimental chat usage stats endpoint 2025-12-10 02:00:00 -05:00
Timothy Jaeryang Baek
5af5e1d3e4 refac 2025-11-23 21:10:38 -05:00
Timothy Jaeryang Baek
cd008eeb50 refac: folder page chat list 2025-11-23 20:11:55 -05:00
Timothy Jaeryang Baek
5148970ef5 refac 2025-11-23 19:47:21 -05:00