Commit Graph
9136 Commits
Author SHA1 Message Date
G30 a3e5d0b362 fix(chat): attribute shared chat messages to their author, not the viewer (#28274) 2026-08-10 21:40:54 -06:00
Timothy Jaeryang Baek 8edab5020e refac 2026-08-10 21:39:27 -06:00
Timothy Jaeryang Baek 3c010951db refac 2026-08-10 21:21:52 -06:00
Timothy Jaeryang Baek 48a5696042 refac 2026-08-10 21:06:40 -06:00
Timothy Jaeryang Baek d6679082e5 refac 2026-08-10 21:00:01 -06:00
Timothy Jaeryang Baek 943294df9a refac 2026-08-10 20:46:38 -06:00
G30 d10d552117 fix(chats): surface the error message instead of [object Object] (#28260) 2026-08-10 20:44:32 -06:00
Timothy Jaeryang Baek 178ccb30e1 refac 2026-08-10 20:37:53 -06:00
G30 148283f974 fix: release a queued message once an attached URL finishes (#28381)
A message sent while an attachment is still uploading is held in the chat
queue until the file settles. For files that release works, because the
message input calls onUpdate once the upload completes, which refreshes the
queued entry and asks the queue to run.

Attaching a URL takes a different path. uploadWeb sets the item to uploaded
but calls neither onUpdate nor processNextInQueue, and the queue is
otherwise only revisited when a generation finishes or when the chat is
mounted while idle. In a new chat with nothing generating, none of those
happen, so a message queued behind a URL waits with no event able to
release it until the chat is reloaded.

uploadWeb now asks the queue to run when it is done, the same way the file
path already does.
2026-08-10 20:24:35 -06:00
Timothy Jaeryang Baek b20bcdbba7 refac 2026-08-10 20:22:29 -06:00
Classic298 eff5c4a2d9 feat: parse :::writing block metadata and use the subject as the block title (#28280)
Newer OpenAI chat models put metadata on the opening line of a colon fence block, like :::writing{variant="email" id="48173" subject="Short question" recipient="mail@example.com"}. The tokenizer matched that line and discarded it, so every block rendered under the same generic "Writing" heading no matter what it contained.

The opening line is now parsed into an attributes map on the token and the header uses it: the subject becomes the title, the recipient follows it and the full string is reachable on hover when the row is too narrow for it. Blocks without metadata render exactly as before, and the other fence types get the parsed attributes for free.

Attributes are read only from inside the {...} braces, not from the whole opening line. Scanning the whole line turned ordinary prose containing key="value" into metadata, and it backtracked quadratically: a 40k character opening line took 586ms to parse, and that runs again on every re-lex while the message streams. Anchored to the braces it is 0.0ms.

Nothing here turns the recipient into a link or a send action. That metadata is model output and can be steered by whatever is in the context, so a prefilled mail action is a separate decision rather than a side effect of parsing.
2026-08-10 19:44:06 -06:00
Timothy Jaeryang Baek 385d08bea5 refac 2026-08-10 19:42:05 -06:00
Timothy Jaeryang Baek e4dd6c4bf1 refac 2026-08-10 19:33:48 -06:00
Classic298 e5b24a22d0 fix: model ID whitelists accepting duplicate entries (#28251)
Adding a model ID that was already on the list in the connection settings modal simply appended it again, so the same model could sit in the whitelist any number of times. The arena model modal had the same flaw, its dropdown kept offering models that were already selected.

The connection modal now rejects a duplicate with a toast and trims the input first; surrounding whitespace renders invisibly in the list, so an untrimmed ID would slip past the duplicate check and still show up as a visually identical row. The arena modal instead filters already-added models out of the dropdown, matching the existing model selector in the admin settings, so a duplicate can no longer be picked at all. Both modals also drop duplicates when loading a stored list, so configs that already contain them are cleaned on their next save.

Until such a config is re-saved, one residual effect of old data remains: a duplicated ID in an arena model's stored list keeps double weight in the random model draw. New duplicates can no longer be created through the UI.

Fixes #28249
2026-08-10 19:27:12 -06:00
G30 8836dcb59f fix(ui): fall back to the default avatar when a profile image fails to load (#28270) 2026-08-10 19:18:32 -06:00
Timothy Jaeryang Baek 72a909fd2f refac 2026-08-10 19:16:21 -06:00
Timothy Jaeryang Baek ec03e88144 refac 2026-08-10 19:08:46 -06:00
Timothy Jaeryang Baek b5f86e6a43 refac 2026-08-10 19:08:06 -06:00
Timothy Jaeryang Baek 30d08a42f8 refac 2026-08-10 18:52:58 -06:00
Timothy Jaeryang Baek 407c40f72c refac 2026-08-10 18:52:34 -06:00
Timothy Jaeryang Baek b4d3b27caf refac 2026-08-10 18:52:27 -06:00
Timothy Jaeryang Baek d4461bd6f3 refac 2026-08-10 18:52:18 -06:00
Timothy Jaeryang Baek 90a0e61cef refac 2026-08-10 18:50:43 -06:00
Timothy Jaeryang Baek 13346c5f16 refac 2026-08-10 18:43:55 -06:00
Timothy Jaeryang Baek 8fbfd14a8b refac 2026-08-10 01:38:32 -06:00
Timothy Jaeryang Baek 060648f939 refac 2026-08-10 01:36:09 -06:00
Timothy Jaeryang Baek 61110677d4 refac 2026-08-10 01:32:34 -06:00
Timothy Jaeryang Baek f9cd49443c refac 2026-08-10 01:32:29 -06:00
Timothy Jaeryang Baek 4e69166017 refac 2026-08-10 01:32:11 -06:00
Timothy Jaeryang Baek 048c063993 refac 2026-08-10 01:26:04 -06:00
Timothy Jaeryang Baek ff7467b4c5 refac 2026-08-10 01:14:53 -06:00
Timothy Jaeryang Baek 8dd23f74c9 refac 2026-08-10 00:52:14 -06:00
Timothy Jaeryang Baek 2dadc5435a refac 2026-08-09 13:22:46 -06:00
Timothy Jaeryang Baek 009999f363 refac 2026-08-08 15:47:10 -06:00
Timothy Jaeryang Baek c1c07cbe0f refac 2026-08-05 07:57:55 -05:00
Timothy Jaeryang Baek 6c4d0ace16 refac 2026-08-05 07:44:06 -05:00
Timothy Jaeryang Baek 29eeda9f9a refac 2026-08-05 07:12:28 -05:00
Timothy Jaeryang Baek 9c7ce154e7 refac 2026-08-05 07:04:30 -05:00
Timothy Jaeryang Baek cbb3aade2b refac 2026-08-05 06:41:30 -05:00
G30 b67804f2b6 fix: do not auto-open artifacts from the sidebar chat hover preview (#27773) 2026-07-31 17:58:02 -04:00
Timothy Jaeryang Baek 3becec6ccf refac 2026-07-31 17:35:34 -04:00
Timothy Jaeryang Baek 5b333d75c6 refac 2026-07-31 17:34:39 -04:00
joaoback 8d333335b9 i18n: add pt-BR translations for newly added UI items and consistency pass (#27814)
New **pt-BR** translations for items introduced in the latest releases, plus a consistency/quality pass across existing strings (grammar, tone, capitalization, pluralization). Placeholders and hotkeys preserved. No logic changes.
2026-07-31 17:25:10 -04:00
Timothy Jaeryang Baek 810378c0b8 refac 2026-07-27 19:39:36 -04:00
Timothy Jaeryang Baek b6b16d5871 refac 2026-07-27 19:24:03 -04:00
Timothy Jaeryang Baek faeba7c17a refac 2026-07-27 05:28:33 -04:00
Timothy Jaeryang Baek c004b4ecb5 chore: format 2026-07-27 04:38:46 -04:00
Timothy Jaeryang Baek e8fda1c7a0 refac 2026-07-27 03:59:12 -04:00
G30 867006acce fix: keep admin access to connections without access grants when admin bypass is disabled (#27581) 2026-07-27 03:39:40 -04:00
Timothy Jaeryang Baek db2d24896b refac 2026-07-27 03:32:21 -04:00