Commit Graph
18195 Commits
Author SHA1 Message Date
Timothy Jaeryang Baek ca4e07a40b refac 2026-08-25 11:07:54 -04:00
Timothy Jaeryang BaekandClassic298 6330350a40 refac
Co-Authored-By: Classic298 <27028174+Classic298@users.noreply.github.com>
2026-08-25 10:39:49 -04:00
Timothy Jaeryang BaekandClassic298 176fa46212 refac
Co-Authored-By: Classic298 <27028174+Classic298@users.noreply.github.com>
2026-08-25 10:03:53 -04:00
Timothy Jaeryang Baek 2f97c9fce3 refac 2026-08-25 10:00:43 -04:00
Timothy Jaeryang Baek aa3d569610 refac 2026-08-25 09:59:07 -04:00
Timothy Jaeryang Baek eadce55e34 refac 2026-08-25 09:55:18 -04:00
Timothy Jaeryang Baek 5078d987f8 refac 2026-08-24 21:15:54 -04:00
Timothy Jaeryang Baek 2a0274a0a0 refac 2026-08-24 20:34:59 -04:00
Timothy Jaeryang Baek f3f7659da7 refac 2026-08-24 19:56:07 -04:00
Timothy Jaeryang Baek 170ad0595d refac 2026-08-24 19:48:49 -04:00
Timothy Jaeryang Baek a9a802d95f refac 2026-08-24 19:48:12 -04:00
Timothy Jaeryang Baek 18bf0ade7b refac 2026-08-24 19:25:03 -04:00
Timothy Jaeryang Baek 11db926a7b refac 2026-08-24 19:20:24 -04:00
Timothy Jaeryang Baek 0169b10979 refac 2026-08-24 19:15:10 -04:00
Classic298 dc03e7e595 refac: keep external connections until their last knowledge base is removed (#28113)
Deleting an external knowledge base now clears its connection only when an admin removes the last knowledge base referencing it, matching the connection delete route.
2026-08-24 19:11:40 -04:00
Classic298 6b438f1a79 refac: stream web-fetched documents to disk instead of buffering them (#28945)
The binary branch of the web fetch read the entire response body into memory
before writing it out. It now streams in blocks, applies the configured file
size limit the same way the sibling URL endpoint already does, and removes the
temporary file when a download fails partway instead of leaving it behind.
2026-08-24 19:06:13 -04:00
Timothy Jaeryang Baek 06e7aac219 refac 2026-08-24 19:05:21 -04:00
G30 2978a03c68 fix: restore the model avatar reset option in the model editor (#29007) 2026-08-24 19:02:22 -04:00
Timothy Jaeryang Baek d5b66533e7 refac 2026-08-24 18:56:39 -04:00
G30 e6648aefb5 fix: honor the terminal file browser filesystem root instead of clamping to home (#29006) 2026-08-24 17:55:51 -05:00
Sven Horvath 5735123f50 fix: keep the pending note save when an update carries no content snapshot (#28669)
stop_item_tasks() ran unconditionally while create_task() only ran when the
update carried data, so an update without a content snapshot cancelled the
pending save without scheduling a replacement and the edits were never
written.
2026-08-24 18:47:43 -04:00
Classic298 bf08835d6f perf: allow disabling websocket per-message-deflate (#28613)
With delta streaming most websocket frames are tiny per-token deltas, and
per-message-deflate pays zlib work on every outgoing frame per subscriber for
near-zero gain there; under heavy streaming that shows up as measurable server
CPU. The frames that still benefit are the rare large ones (final message,
sources), and even a 100k token message is only a few hundred KB uncompressed,
which any network delivers without noticeable delay.

UVICORN_WS_PER_MESSAGE_DEFLATE=false (default true, current behavior) disables
the extension in every entry point: open-webui serve and dev, start.sh both
invocations, start_windows.bat and dev.sh. Verified against a running
instance: with the flag off the server declines the client-offered
permessage-deflate extension, with defaults it still negotiates it.
2026-08-24 18:46:07 -04:00
Timothy Jaeryang Baek 97466deea1 refac 2026-08-24 18:38:29 -04:00
Timothy Jaeryang Baek 9dff5e9327 refac 2026-08-24 18:37:39 -04:00
Timothy Jaeryang Baek 536b9edec0 refac 2026-08-24 18:35:04 -04:00
Timothy Jaeryang Baek b96d2b12da refac 2026-08-24 18:29:36 -04:00
Timothy Jaeryang Baek e3e82b1471 refac 2026-08-24 18:29:19 -04:00
Timothy Jaeryang Baek e9efb95a9c refac 2026-08-24 18:17:11 -04:00
Timothy Jaeryang Baek 7a533d0d5b refac 2026-08-24 18:14:30 -04:00
Timothy Jaeryang Baek 6cb2449ab7 refac 2026-08-24 18:10:08 -04:00
Timothy Jaeryang Baek cf4ac9c8db refac 2026-08-24 18:07:03 -04:00
Timothy Jaeryang Baek fd8cc2ba4a refac 2026-08-24 18:06:59 -04:00
Timothy Jaeryang Baek 98ee2bdfd3 refac 2026-08-24 17:56:11 -04:00
Classic298 043cf330d2 perf: throttle last_active_at writes by default (#28177)
Presence tracking writes each user's last_active_at on every authenticated request, every API key request and every websocket heartbeat. The throttle for it already exists but ships unset, and unset means no throttle at all, so a stock deployment pays one UPDATE plus COMMIT per user per request. The 30 second frontend heartbeat alone is 2 write transactions per minute per open tab, before any actual UI traffic.

Defaulting the throttle to 60 seconds collapses that to at most one write per user per worker per minute. Presence is only ever read at minute granularity, so nothing visible changes.

60 rather than the 300 to 500 the docs currently suggest, because a user counts as active for 3 minutes after their last write and that window is hardcoded in the backend and again in the frontend. Any interval at or above 180 seconds makes people who are actively using the instance drop out of the active user count. Letting the window follow the interval instead would need the value shipped to the client, so that is a separate change.

0 still disables the throttle, and now costs nothing at all: the decorator returns the undecorated function instead of a wrapper that re-checks a constant on every call.

Closes #28165
2026-08-24 17:53:31 -04:00
G30 da9245626e fix: keep the viewport in place when older messages load above it (#28657) 2026-08-24 17:51:20 -04:00
G30 683c92d064 fix: fetch sidebar folders once per refresh instead of three times (#28662) 2026-08-24 17:50:46 -04:00
Timothy Jaeryang Baek a6834f089b refac 2026-08-24 17:47:10 -04:00
Timothy Jaeryang Baek 9e7c9360b7 refac 2026-08-24 17:43:43 -04:00
Timothy Jaeryang Baek 8c1f3d3824 refac 2026-08-24 17:39:30 -04:00
G30 f2313d0c72 fix: keep the workspace tab counts in sync with each section's list (#28983) 2026-08-24 17:36:12 -04:00
Timothy Jaeryang Baek a914868e3c refac 2026-08-24 17:25:33 -04:00
G30 83d049a465 fix: skip the sidebar refresh when a chat is dropped back where it already is (#28664) 2026-08-24 17:20:44 -04:00
SebastianandClaude Opus 5 4d5084025f fix: download nltk data somewhere a non-root UID can read (#28866)
nltk.download picks the first entry of nltk.data.path that already exists and is
writable. None do here, so punkt_tab lands in /root/nltk_data, and /root is mode
0700. The corpus is then unreachable whenever the container does not run as
root:

    nltk.data.find('tokenizers/punkt_tab')
    LookupError: Resource punkt_tab not found.

/usr/local/share/nltk_data is already on nltk.data.path, so nothing changes at
the read side.

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-24 17:19:15 -04:00
Timothy Jaeryang Baek ecad20b77f refac 2026-08-24 17:17:53 -04:00
Timothy Jaeryang Baek 91917b2395 refac 2026-08-24 17:16:01 -04:00
Timothy Jaeryang Baek 363ad352fe refac 2026-08-24 17:12:56 -04:00
Classic298 23b3a69bc2 fix: keep folder parent references acyclic (#28748)
Moving a folder under one of its own subfolders was accepted. A folder in a parent loop is never a root, so it and everything under it silently disappeared from the sidebar, and there was no way to get it back from the UI.

The move is now rejected with a 400, folders whose parent chain loops are put back at the root on the next folder list, and the folder tree traversals skip ids they have already visited so existing data in that state stays workable.
2026-08-24 17:06:19 -04:00
G30 18edfff2d6 fix: discard unsaved group settings and key the groups list (#28076)
* fix: stop unsaved group settings from persisting into the group list state

* fix: key the groups list so an open modal cannot rebind to another group
2026-08-24 16:31:39 -04:00
Timothy Jaeryang Baek aeda6ff13a refac 2026-08-24 16:29:57 -04:00
G30 336d8841f4 fix: make embedded message content inert in the sidebar chat hover preview (#27770) 2026-08-24 07:36:44 -04:00