Commit Graph
9796 Commits
Author SHA1 Message Date
Timothy Jaeryang Baek 52c5e3b20d refac 2026-08-13 15:43:27 -06:00
Timothy Jaeryang Baek c93c6d6fc4 refac 2026-08-13 15:42:54 -06:00
Timothy Jaeryang Baek c1f914a626 refac 2026-08-13 15:38:25 -06:00
Timothy Jaeryang Baek bfb68feea7 refac 2026-08-13 15:33:42 -06:00
Timothy Jaeryang Baek 2befa8f796 refac 2026-08-13 15:26:19 -06:00
Timothy Jaeryang Baek 7dfbdd221a refac 2026-08-13 15:20:59 -06:00
Timothy Jaeryang Baek 8d25ad00e2 refac 2026-08-13 14:52:30 -06:00
Timothy Jaeryang Baek 60feca71a6 refac 2026-08-13 14:50:43 -06:00
Timothy Jaeryang Baek a17cb174ad refac 2026-08-13 14:46:08 -06:00
Classic298 5cb87e6630 fix: announce toggle state of integrations menu rows to screen readers (#27667)
Every toggle row in the chat integrations menu (filters, Web Search, Image, Code Interpreter, Tools, Skills) is a button whose on/off state was carried only by the decorative Switch inside it. Screen readers announced the row name and nothing else, so there was no way to tell whether a tool or feature was active without looking at it.

Each row button now carries aria-pressed, and the Switch wrapper is marked inert so the nested role=switch stops competing with the row for the announcement and stops adding a nameless tab stop. Hit testing skips inert content, so clicking the switch still toggles the row.

Tool rows that are not yet authenticated omit aria-pressed: activating those starts an OAuth redirect rather than toggling, so announcing them as an unpressed toggle would be wrong.

The Web Search, Image and Code Interpreter rows also had a state-flipping aria-label ("Disable Web Search") on top of aria-pressed, which announces as "Disable Web Search, pressed" and reads as the opposite of the truth. Removed: the visible row text already names each control.

Fixes #17150
2026-08-13 13:04:13 -06:00
Timothy Jaeryang Baek ba885d0026 refac 2026-08-13 13:03:56 -06:00
Timothy Jaeryang Baek 17c190bf99 refac 2026-08-13 02:07:02 -06:00
Timothy Jaeryang Baek f8c5fda283 refac 2026-08-13 02:03:13 -06:00
Timothy Jaeryang Baek 31c1ffd55a refac 2026-08-13 00:45:02 -06:00
Timothy Jaeryang Baek e1acd7e7ca refac 2026-08-13 00:38:32 -06:00
Timothy Jaeryang Baek 25802c048e refac 2026-08-13 00:34:10 -06:00
Timothy Jaeryang Baek 8260d527ee refac 2026-08-13 00:22:58 -06:00
Timothy Jaeryang Baek 85c3d0ae2f refac 2026-08-13 00:07:31 -06:00
Timothy Jaeryang Baek 3813fd4cdc refac 2026-08-12 23:20:19 -06:00
Timothy Jaeryang Baek 4e03d89414 refac 2026-08-12 23:17:37 -06:00
Timothy Jaeryang Baek 86b7bf1f7e refac 2026-08-12 18:10:51 -06:00
Timothy Jaeryang Baek 2e93987490 refac 2026-08-12 17:54:10 -06:00
G30 783e87c0c5 fix: dock the thread reply input below the scroll area instead of inside it (#27768) 2026-08-12 02:06:20 -05:00
Timothy Jaeryang Baek e44e16cb59 refac 2026-08-12 01:02:02 -06:00
Timothy Jaeryang Baek c086b80313 refac 2026-08-12 00:51:12 -06:00
Timothy Jaeryang Baek ab41dcc487 refac 2026-08-11 17:44:34 -06:00
Timothy Jaeryang Baek 9c21d4ed3b refac 2026-08-11 17:42:25 -06:00
G30 e17dfae72e fix: enforce the image generation flag on the legacy chat feature path (#27759)
* fix: enforce the image generation flag on the legacy chat feature path

* fix: refresh the config store when image generation is disabled in admin settings

* fix: hide active feature pills when the feature is no longer available
2026-08-11 17:38:10 -06:00
Timothy Jaeryang Baek 1744b63f16 refac 2026-08-11 17:35:24 -06:00
Timothy Jaeryang Baek 4f9a0ebf71 refac 2026-08-11 17:35:05 -06:00
Timothy Jaeryang Baek 1674e5a9ef refac 2026-08-11 12:50:50 -06:00
Timothy Jaeryang Baek 724d2ebbf1 refac 2026-08-11 11:46:12 -06:00
Timothy Jaeryang Baek ac0368b4ab refac 2026-08-11 11:40:29 -06:00
Timothy Jaeryang Baek f79b443c22 refac 2026-08-11 11:40:24 -06:00
G30 e58245d5b4 fix: place model editor capability checkboxes directly before their labels (#27788) 2026-08-11 11:13:04 -06:00
G30 25455e943d fix(ui): resolve owner avatars against the API base url and add a fallback (#28272) 2026-08-11 11:05:35 -06:00
Timothy Jaeryang Baek 29541cbb52 refac 2026-08-11 01:27:50 -06:00
Timothy Jaeryang BaekandClassic298 c8f8fa451a a11y
Co-Authored-By: Classic298 <27028174+Classic298@users.noreply.github.com>
2026-08-11 01:25:20 -06:00
Timothy Jaeryang Baek f0bfcd4097 refac 2026-08-11 01:15:05 -06:00
Timothy Jaeryang Baek be4afd7545 refac 2026-08-11 01:11:56 -06:00
Timothy Jaeryang Baek e963d36e39 refac 2026-08-11 01:08:58 -06:00
KastenMonsterandKastenMonster 2ac01a42be feat: Add openserp as a provider in the ui (#27594)
* add OpenSerp Option

* fix: change input label to the docs label

---------

Co-authored-by: KastenMonster <kastenmonster@groundonline.de>
2026-08-11 00:21:05 -06:00
Timothy Jaeryang Baek 9122c24ea2 refac 2026-08-11 00:06:21 -06:00
G30 79382d1b19 fix: stop profile preview avatars from squashing in narrow flex rows (#28000) 2026-08-10 23:49:45 -06:00
Timothy Jaeryang BaekandG30 68c67a1e0f refac
Co-Authored-By: G30 <50341825+silentoplayz@users.noreply.github.com>
2026-08-10 23:48:02 -06:00
Timothy Jaeryang Baek bd250a0e24 refac 2026-08-10 23:37:45 -06:00
G30 d959e3e312 fix: scale the settings modal height with tall viewports instead of capping at 54rem (#27615) 2026-08-10 23:34:04 -06:00
Classic298 4eb0394511 fix: merged response receiving empty model responses after reload (#27673)
Clicking "Merged Response" in a multi-model chat often made the merging model answer with "It appears that the responses provided from the other models were empty".

The merge handler collected each model's answer via `history.messages[id].content`. Assistant messages are persisted by the backend with `output` only (`upsert_message_to_chat_by_id_and_message_id` writes `done`/`role`/`output`, never `content`), so `content` is only populated in the browser session that generated the responses, where the streaming handler mirrors it. Once the chat is reloaded from the database, every assistant message has `content: ''` and the merge request is sent with a list of empty strings, which is exactly what the merging model then reports. That is why the failure looks random: merging works right after generating, and fails after a refresh or when reopening the chat.

Read the responses through `getOutputText(message.output) || message.content`, the same fallback already used by every other read site (`ResponseMessage`, `Overview/Node`, `SearchModal`, `ChatItem`, `ChatMenu`, `Navbar/Menu`).

Fixes #26962
2026-08-10 23:31:21 -06:00
Classic298 fcc130c9bb fix: send stream_options.include_usage for backend-initiated chats (#27661)
Only the frontend added `stream_options: {include_usage: true}` to the completion payload, gated on the model's `usage` capability. Every backend-initiated run builds its own payload (automations, timers, subagents, channels) and omitted it, so those responses came back without token counts and never rendered the usage block, even with the capability enabled on the model.

Set it in `chat_completion` instead, the single handler all of those callers go through, and drop the two duplicate copies (the Anthropic-compat handler and the frontend). Capabilities are read from the resolved model before the custom-model fallback can rebind it, and the flag is applied after the model's `stream_response` override so a non-streaming model is unaffected.

Fixes #27653
2026-08-10 23:30:46 -06:00
G30andTim Baek 085f1b5ca4 feat: add a user setting to toggle sidebar chat hover previews (#27632)
Co-authored-by: Tim Baek <tim@openwebui.com>
2026-08-10 23:29:51 -06:00