Commit graph

19901 commits

Author SHA1 Message Date
G30
caae0be19b
fix(a11y): switches, icon buttons, selects and number inputs in Admin Settings have names (#33145) 2026-10-25 13:14:38 +09:00
G30
17065714bc
fix(a11y): Set as default in the model picker is at least 24 pixels tall when Accessibility Mode is on (#32907) 2026-10-25 13:13:33 +09:00
G30
b2108518e7
fix(a11y): the Create button's menu arrow is at least 24 pixels wide when Accessibility Mode is on (#33137) 2026-10-25 12:40:58 +09:00
G30
efb93cea33
fix(a11y): the sidebar's Chat Menu button is 24 pixels square when Accessibility Mode is on (#33139) 2026-10-25 12:40:45 +09:00
G30
656bdeeb6d
fix(a11y): the Note Menu and Delete buttons in the Notes list and grid are 24 pixels square when Accessibility Mode is on (#33141) 2026-10-25 12:40:30 +09:00
G30
9f85c27be7
fix(a11y): the More button on file rows is 24 pixels square when Accessibility Mode is on (#33143) 2026-10-25 12:40:21 +09:00
G30
befd1dcca8
fix(a11y): the note editor's Undo, Redo, Record and Note Menu buttons have names, and Tab reaches both menus (#33113) 2026-10-25 12:17:20 +09:00
G30
4ee756f9da
fix(a11y): Playground's System Instructions button and model selects have names, and the role button's name starts with the word it shows (#33115) 2026-10-25 12:16:55 +09:00
G30
90985382fc
fix(a11y): the channel member count button's name includes the number it shows (#33127) 2026-10-25 12:16:46 +09:00
G30
62084e1eb4
fix(a11y): Calendar's days from other months and today's date pass contrast in Accessibility Mode (#33131) 2026-10-25 12:16:19 +09:00
G30
be0177f1e7
fix(a11y): the code box in the tool and function editors has a name (#33129) 2026-10-25 12:16:07 +09:00
G30
30d0206e71
fix(a11y): the Resize panel handle tells screen readers the panel's width (#33117) 2026-10-25 12:15:57 +09:00
G30
5372577430
fix(a11y): the Visibility button's name includes the choice it shows (#33125) 2026-10-25 12:15:42 +09:00
G30
331b38f875
fix(a11y): the Create knowledge base, Create Prompt and Clone Prompt dialogs have names (#33119) 2026-10-25 12:15:29 +09:00
G30
3cd25f7717
fix(a11y): the div around the phone sidebar button no longer carries aria-expanded (#33111) 2026-10-25 12:15:19 +09:00
G30
0c7e924dfb
fix(a11y): every tab in Settings points to a panel that exists (#33109) 2026-10-25 12:04:17 +09:00
G30
bb08b7ed77
fix(a11y): an attached file's Remove button is no longer inside the file's own button (#33121) 2026-10-25 12:04:06 +09:00
G30
b3606703af
fix(a11y): the model editor's Description, Tools, Skills, Filters and Actions rows are named by what they show (#33123) 2026-10-25 12:03:42 +09:00
G30
9ffc4cc360
fix(a11y): the model editor's JSON Preview row passes contrast in Accessibility Mode (#33133) 2026-10-25 12:03:20 +09:00
G30
ad7ef9aa9a
fix(a11y): code editor placeholders pass contrast in Accessibility Mode (#33135) 2026-10-25 11:56:13 +09:00
Timothy Jaeryang Baek
f21eadbc1a refac 2026-10-25 08:33:40 +09:00
Timothy Jaeryang Baek
0d651a8161 refac 2026-10-25 08:29:18 +09:00
Timothy Jaeryang Baek
52e155019f refac 2026-10-25 08:24:14 +09:00
G30
f86e74e163
fix(a11y): note rows in the Notes list aren't buttons around their menu; each title is a link (#33105) 2026-10-25 08:17:23 +09:00
G30
88f2a78e08
fix(a11y): items in the user menu and chat menu are menu items, so the arrow keys move through them (#33107) 2026-10-25 08:17:14 +09:00
Classic298
0a568f6a81
fix: knowledge base files stay on "Uploading" instead of switching to "Processing" (#32982)
* fix: knowledge base files stay on "Uploading" instead of switching to "Processing"

A file added to a knowledge base is uploaded in a moment, and the long wait after that is the text extraction, which the file list still called "Uploading". Nothing updated on its own either, so the only way to find out whether a file had moved on or finished was to leave the knowledge base and come back. The file now switches to "Processing" as soon as it has reached the server, and the list keeps itself current until the file is ready, so slow text extraction no longer looks like a stuck upload. Adding a folder or a web page goes through a different flow and is not touched here.

* refac: inline the processing status update for knowledge base uploads

Moves the status update straight into the upload call with no change in behaviour.

* refac: drop a stray blank line and comment from the upload handler

Removes a blank line and a comment the previous follow-up added, with no change in behaviour.
2026-10-25 08:11:35 +09:00
Classic298
f32de07dde
fix: pin preshed so the web loader keeps working (#33103)
On fresh installs the web loader and other HTML extraction came back empty because a transitive dependency update started crashing during tokenization. Holding that dependency at its last good version restores extraction. Verified on a clean Python 3.12 install that loading a page returns its text again.
2026-10-25 08:07:57 +09:00
Classic298
c69e5a73c0
fix: "More Concise" and "Add Details" now revise the reply instead of answering the instruction (#33084)
Choosing Add Details, More Concise, or typing a suggestion under a reply sent the model your original question followed straight by the bare instruction, with the reply itself missing, so it answered the instruction on its own (for example "OK, I'll keep answers shorter") instead of rewriting that reply. The model now receives the reply it is being asked to change, so it returns a shorter, more detailed or altered version of it. Plain Try Again and temporary chats were not affected.

Fixes #33083
2026-10-25 08:07:21 +09:00
G30
ece6bc1a55
fix(a11y): list rows in Workspace, Functions and Automations aren't buttons around their controls; each name is a link (#33102) 2026-10-25 08:05:23 +09:00
Classic298
d1776b18a3
refac: record chat messages under the signed-in user on save (#32872)
Chats that are created, imported or saved now record their incoming messages under the signed-in user.
2026-10-25 07:58:36 +09:00
Timothy Jaeryang Baek
91ce3b3358 refac 2026-10-25 07:48:50 +09:00
Classic298
2cf014c7e9
fix: built-in tool toggles show while their feature is off (#32964)
* fix: built-in tool toggles show while their feature is off

The model editor listed the Memory, Notes, Channels, Notifications, Web Search, Image Generation, Code Interpreter, Automations, Calendar and Sub-agents built-in tools even when the admin had turned that feature off for the whole instance, where those toggles do nothing. Each of them is now hidden while its feature is off, and the choices saved on a model are kept for when it is turned back on. The server now also reports whether sub-agents are on, and saving the Sub-agents settings updates the editor without a reload.

Refs #32830

* refac: name the feature switch map like the rest of the codebase

Uses the same name the model capabilities change uses for its matching map.

* refac: keep each tool's feature switch next to its label

Each built-in tool now carries its feature switch alongside its label and description, so the list is defined in one place.
2026-10-25 07:46:22 +09:00
Timothy Jaeryang Baek
1407f83cfc refac 2026-10-25 07:39:02 +09:00
Classic298
758e4f6cc3
fix: built-in tools show while the model's matching capability is off (#32965)
* fix: built-in tools show while the model's matching capability is off

The Files built-in tool showed in the model editor although a model only gets it while File Upload is on and File Context is off, and File Context is on by default. The Memory, Web Search, Image Generation and Code Interpreter tools also showed while the same capability was off on that model. These tools now appear and disappear as the model's capabilities are switched, and the saved tool choices are kept for when the capability is turned back on.

Refs #32830

* refac: filter built-in tools by their capability directly

Same behaviour, with the per-tool capability list folded into the filter.

* fix: treat unset file capabilities as on when showing the Files tool

Matches how the server decides whether a model gets the Files tool.
2026-10-25 07:35:35 +09:00
Classic298
d2e88ba37a
fix: Web Search Query Generation setting shows while web search is off (#32986)
Settings > Interface showed the Web Search Query Generation switch even with web search turned off, where it has no effect. It now only shows while web search is on, and its stored value is kept.

Refs #32830
2026-10-25 07:35:18 +09:00
Classic298
b02ff54459
fix: Call button shows while speech-to-text is unavailable (#32970)
* fix: Call button shows while speech-to-text is unavailable

Unless realtime voice is set up, a call needs the server to turn the user's speech into text. The Call button still showed when the speech-to-text engine is "Web API", where clicking it only answered "Call feature is not supported when using Web STT engine", and to users without the speech-to-text permission, where the call opened but nothing they said was transcribed. The button now shows only when a call can work: realtime voice is on, a call is already running, or the engine is not "Web API" and the user has the speech-to-text permission.

Refs #32830

* fix: keyboard shortcut also needs the speech-to-text permission for calls

The call shortcut and call links now follow the same speech-to-text rule as the Call button.

* refac: keep the whole Call button condition in one place

Also drops the Web API speech-to-text message from the Call button, since the button no longer shows for that engine.

* refac: keep the call permission check unchanged in the call shortcut

The speech-to-text rule for the call shortcut is now its own check after the existing call permission check, which stays as it was.
2026-10-25 07:32:45 +09:00
Classic298
1d6d805587
fix: image engine settings show while image generation is off (#32985)
* fix: image engine settings show while image generation is off

Settings > Images showed the image engine, its credentials and the whole image edit section even with image generation turned off. They now only show while the Image Generation switch is on, and flipping it on shows them right away, so everything can be set up before saving. Stored engine settings and keys are kept.

Refs #32830

* fix: saving image settings without a required key turns image generation off

Saving Settings > Images with Image Generation on but a required URL or API key empty showed an "is required" error and flipped the switch back off, which now also hid the field that needed filling. The switch now stays on with the error, so the missing value can be filled in and saved right away. Nothing is saved until then.

Refs #32830

* refac: always require the Gemini API key while image generation is on

The key field only shows while image generation is on, so it is simply required now.

* refac: drop the stray blank lines left in the image settings save checks

Each missing-setting check now shows its error and stops right away, with no leftover gap from the removed lines.
2026-10-25 07:32:26 +09:00
Timothy Jaeryang Baek
56c570afc3 refac 2026-10-25 07:30:34 +09:00
Classic298
0c684208bb
fix: files selected together for a knowledge base only appear one at a time (#32992)
* fix: files selected together for a knowledge base only appear one at a time

Selecting or dropping several files into a knowledge base showed a row for the first file only. The others got no row at all until the one before them had finished processing, which with slow text extraction can be many minutes per file, so they looked lost. Every selected file now shows up as "Uploading" straight away, in the order they will be uploaded, and keeps its row until it has been added to the knowledge base. Each file still waits for the previous one to finish processing, as before.

* refac: give the upload list a type

The list of files waiting to upload now carries the same type as the rows it holds.
2026-10-25 07:23:46 +09:00
Classic298
499b83fa8d
fix: imported note shows its text twice when two people open it at the same time (#33004)
A note imported from a .md or .txt file on the Notes page and not edited since showed all of its text twice when two people opened it at the same time, and the doubled text was then saved into the note. The shared editing session is now the only place that loads the text of such a note, the same as for notes that were already edited, so it opens once for everyone. Like an edited note, it now needs the live connection to show its text.

Fixes #33002
2026-10-25 07:23:10 +09:00
Classic298
e1e31973f0
perf: renaming a folder or deleting all chats takes seconds when many users are online (#32888)
* perf: renaming a folder or deleting all chats takes seconds when many users are online

Renaming, sharing, moving or deleting a folder, and deleting all chats, each made the server recheck access for every chat that any online user had open in a browser tab, one database lookup at a time, before the request finished, and every one of those open chats reloaded its contents afterwards. Any user can do these, so with a few thousand people online every such click took several seconds and reloaded everyone's open chat. Owners keep access to their own chats (a role change or account deletion already disconnects them), so the recheck now skips owners entirely, with no lookup and no reload, and only checks people viewing someone else's chat and chats that no longer exist. Anyone who lost access is still removed from the chat as before.

Postgres 16, one open chat per online user, 2% of them viewing someone else's chat, time for a folder rename (the other actions above run the same recheck):

| Online users | No Redis, before | No Redis, after | Redis, before | Redis, after |
| --- | --- | --- | --- | --- |
| 1,000 | 2.2 s | 0.12 s | 2.5 s | 0.23 s |
| 3,000 | 6.9 s | 0.60 s | 7.7 s | 0.78 s |

* refac: collect the open chats with a plain loop

Same behaviour, the owner lookup now reads more plainly.

* refac: shorten the owner comment in the chat access sweep
2026-10-25 07:21:47 +09:00
Classic298
e11c1bb38c
fix: web search engine settings show while web search is off (#32984)
* fix: web search engine settings show while web search is off

Settings > Web Search showed the search engine picker and all engine credentials even with web search turned off. They now only show while the Web Search switch is on, and flipping it on shows them right away, so the engine can be set up before saving. An API key the web loader shares with the hidden engine now shows in the loader section instead. Stored engine settings and keys are kept.

Refs #32830

* fix: web search confirmation and Bypass Web Loader show while web search is off

The Web Search Confirmation switch, its text and the Bypass Web Loader switch also showed with web search turned off, although they only act on web searches. They now hide together with the engine settings, and their stored values are kept. Bypass Embedding and Retrieval and Trust Proxy Environment stay visible, since they also apply to web pages attached to a chat.

Refs #32830

* refac: mark web search fields as plainly required

These fields only show while web search is on, so tying their required flag to the toggle no longer does anything.

* refac: write the web search checks inline

Same behaviour, the conditions now sit directly where they are used.
2026-10-25 07:21:11 +09:00
Classic298
f36ed91371
fix: /skills:create shows for models that cannot create skills (#32971)
* fix: /skills:create shows for models that cannot create skills

"/skills:create" showed when the model had the "Builtin Tools" capability or its "Skills" built-in tool turned off, and the model then answered that skill creation is disabled. The command now shows only when every selected model has both turned on.

Refs #32830

* refac: keep the skill creation check with the other model capability checks

Moves the check next to the other per-model capability checks so it reads like them.

* refac: add type annotations to the skill creation check

Restores the type on the new option and types the new check.
2026-10-25 07:20:41 +09:00
Classic298
c4aac6152b
fix: regenerate menu setting shows while regenerating is not allowed (#32974)
Settings > Interface showed "Regenerate Menu" to users without permission to regenerate responses. Those users have no regenerate button, so the setting did nothing. It now only shows to users who can regenerate, and the settings search skips it for everyone else.

Refs #32830
2026-10-25 06:53:01 +09:00
Classic298
11081b1567
fix: terminal settings show while no terminal is available (#32981)
Settings > Interface showed the terminal file display, show files on terminal select and terminal preview settings to users who have no terminal to use, which is the default. They now show once the user can reach a terminal, either one the admin set up or one of their own, the same way the chat input decides whether to offer the terminal picker. In the admin default interface settings they show whenever the instance offers terminals.

Refs #32830
2026-10-25 06:52:48 +09:00
Classic298
98f23b17a5
fix: model capability toggles show while their feature is off (#32963)
* fix: model capability toggles show while their feature is off

In the model editor and the admin model defaults, the Web Search, Image Generation, Code Interpreter and Memory capabilities and the matching Default Features showed even when the admin had turned that feature off for the whole instance, so switching them did nothing. They are now hidden while the feature is off. Values already saved on a model are kept, so turning the feature back on restores each model's settings.

Refs #32830

* refac: use the codebase's name for instance feature switches

Renames the new feature lookup to match how the rest of the frontend refers to instance features.

* refac: keep each feature switch next to its capability

Reads the instance feature switch from the existing capability list instead of a separate map, with no change in behaviour.
2026-10-25 06:52:18 +09:00
Classic298
f3f9af594f
fix: MCP tools whose input has alternative forms are called with no arguments (#32903)
* fix: MCP tools that list their arguments under anyOf are called with no arguments

When an MCP tool described its input as alternatives, for example a page by id or by path and locale, and had no top-level list of fields, every argument the model sent was dropped and the tool was called with nothing, so the server rejected the call. Arguments for MCP tools now reach the server as the model sent them, and the MCP server checks them against its own schema. Other tool types still keep only the arguments their schema lists.

Fixes #32898

* refac: shorten the MCP arguments comment

The comment now only says why MCP tools skip the argument filter.
2026-10-25 06:22:08 +09:00
Classic298
37af63b649
fix: models get an unreadable dump instead of the MCP server's error message (#32942)
* fix: MCP tool errors reach the model as a Python list dump instead of the server's message

When an MCP tool server answered a call with an error, the model got a Python dump of the whole result list, with quotes, annotations and meta fields, instead of the error text the server wrote. Line breaks in the message were escaped as well, so a validation error listing the missing argument was hard to read and models tended to retry the same broken call. The model now gets the server's error text as written, the same way successful results already arrive.

Fixes #32918

* refac: drop the fallback text for MCP errors with no message

The error now carries only the text the server sent.

* fix: keep a readable error when an MCP error has no text

MCP error results that only carry images, audio or resources now give the model a short error message instead of an empty one.
2026-10-25 06:21:30 +09:00
G30
637da15918
fix(a11y): the More and Eject buttons on model picker rows are 24 pixels square when Accessibility Mode is on (#32920) 2026-10-25 06:21:16 +09:00
G30
b085326746
fix(a11y): the version link and See what's new in Settings > About are at least 24 pixels tall when Accessibility Mode is on (#32946) 2026-10-25 06:20:19 +09:00