Commit Graph
5685 Commits
Author SHA1 Message Date
Manish Madan c7b508b5a2 Merge pull request #2848 from arc53/dependabot/npm_and_yarn/extensions/react-widget/flow-bin-0.333.0
Bump flow-bin from 0.331.0 to 0.333.0 in /extensions/react-widget
2026-09-29 18:57:28 +05:30
Manish Madan effd9edb0e Merge pull request #2849 from arc53/dependabot/npm_and_yarn/frontend/prettier-3.9.9
Bump prettier from 3.9.6 to 3.9.9 in /frontend
2026-09-29 18:57:04 +05:30
Manish Madan 38b400e257 Merge pull request #2851 from arc53/dependabot/npm_and_yarn/frontend/typescript-eslint/parser-8.70.1
Bump @typescript-eslint/parser from 8.70.0 to 8.70.1 in /frontend
2026-09-29 18:56:47 +05:30
Manish Madan fa93765b50 Merge pull request #2852 from arc53/dependabot/npm_and_yarn/extensions/react-widget/typescript-eslint/eslint-plugin-8.70.1
Bump @typescript-eslint/eslint-plugin from 8.70.0 to 8.70.1 in /extensions/react-widget
2026-09-29 18:56:21 +05:30
Manish Madan 17a9a860e1 Merge pull request #2853 from arc53/dependabot/npm_and_yarn/extensions/react-widget/babel/preset-env-8.0.6
Bump @babel/preset-env from 8.0.5 to 8.0.6 in /extensions/react-widget
2026-09-29 18:56:03 +05:30
Manish Madan 74ff425649 Merge pull request #2846 from arc53/dependabot/npm_and_yarn/extensions/react-widget/babel/core-8.0.6
Bump @babel/core from 8.0.5 to 8.0.6 in /extensions/react-widget
2026-09-29 18:55:50 +05:30
Alex 7565aa9c4c Merge pull request #2855 from arc53/roles-revamp
Roles revamp
2026-09-29 13:27:59 +01:00
Pavel 258c3fb352 Mcp fix 2026-09-29 16:06:05 +04:00
Pavel 39f636a137 Fix rabbit 2026-09-29 15:33:58 +04:00
Pavel 68c1e12b6f MCP rollback for connectors 2026-09-29 14:48:18 +04:00
Pavel 0622883ce4 fixes rabbit 2026-09-29 12:23:12 +04:00
Pavel 49a3a2a220 fix batch 1 2026-09-29 12:19:06 +04:00
Pavel 7530e54aec Shared resource use 2026-09-29 11:43:43 +04:00
Pavel 38bfb19739 Frontend fixes 2026-09-29 11:11:33 +04:00
Pavel 98afa5d93c Roles audit and revamp 2026-09-29 10:42:39 +04:00
Pavel 208d34abc7 chunk bug 2026-09-29 01:48:22 +04:00
dependabot[bot] 32c5c256e7 Bump @babel/preset-env from 8.0.5 to 8.0.6 in /extensions/react-widget
Bumps [@babel/preset-env](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-env) from 8.0.5 to 8.0.6.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v8.0.6/packages/babel-preset-env)

---
updated-dependencies:
- dependency-name: "@babel/preset-env"
  dependency-version: 8.0.6
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-09-28 20:53:54 +00:00
dependabot[bot] 6fb730b2c0 Bump @typescript-eslint/eslint-plugin in /extensions/react-widget
Bumps [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) from 8.70.0 to 8.70.1.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.70.1/packages/eslint-plugin)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/eslint-plugin"
  dependency-version: 8.70.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-09-28 20:53:44 +00:00
dependabot[bot] 4db53d7a35 Bump @typescript-eslint/parser from 8.70.0 to 8.70.1 in /frontend
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 8.70.0 to 8.70.1.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.70.1/packages/parser)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/parser"
  dependency-version: 8.70.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-09-28 20:53:36 +00:00
dependabot[bot] d9174cbe61 Bump prettier from 3.9.6 to 3.9.9 in /frontend
Bumps [prettier](https://github.com/prettier/prettier) from 3.9.6 to 3.9.9.
- [Release notes](https://github.com/prettier/prettier/releases)
- [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md)
- [Commits](https://github.com/prettier/prettier/compare/3.9.6...3.9.9)

---
updated-dependencies:
- dependency-name: prettier
  dependency-version: 3.9.9
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-09-28 20:53:18 +00:00
dependabot[bot] a6f002a22c Bump flow-bin from 0.331.0 to 0.333.0 in /extensions/react-widget
Bumps [flow-bin](https://github.com/facebook/flow) from 0.331.0 to 0.333.0.
- [Release notes](https://github.com/facebook/flow/releases)
- [Changelog](https://github.com/facebook/flow/blob/main/Changelog.md)
- [Commits](https://github.com/facebook/flow/compare/v0.331.0...v0.333.0)

---
updated-dependencies:
- dependency-name: flow-bin
  dependency-version: 0.333.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-09-28 20:53:15 +00:00
dependabot[bot] 1bc22420f0 Bump @babel/core from 8.0.5 to 8.0.6 in /extensions/react-widget
Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 8.0.5 to 8.0.6.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v8.0.6/packages/babel-core)

---
updated-dependencies:
- dependency-name: "@babel/core"
  dependency-version: 8.0.6
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-09-28 20:53:06 +00:00
Pavel ac7bbd811f Merge pull request #2842 from arc53/Agent-menu-UI
Agent menu UI
2026-09-28 17:20:26 +02:00
Pavel b12f5b6c81 Chunk nav fixed 2026-09-28 19:02:50 +04:00
Pavel f4331cd3a3 rabbit fixes 2026-09-28 18:40:49 +04:00
Alex 335f2af70c Merge pull request #2841 from arc53-machine/default-chunks-6
Default retrieval to 6 chunks instead of 2
2026-09-28 15:19:02 +01:00
arc53-machine 56aebc882c Cover the chunks fallbacks on agent update and YAML import
A blank chunks on update and an unparsable one on import both fall back
to the default.
2026-09-28 14:55:43 +01:00
arc53-machine c40f06e10b Say that chunks can be exceeded when sources outnumber it
Every attached source gets at least one chunk, so eight sources at
chunks: 6 return eight.
2026-09-28 14:45:06 +01:00
Pavel cdbc4695ea main sync 2026-09-28 17:41:29 +04:00
Pavel 706a0cb2b2 Big source revamp 2026-09-28 17:35:16 +04:00
arc53-machine 527880d3b8 Document the 6-chunk default and that chunks is a total
The agent basics page still described the Chunks per query field the form
no longer has.
2026-09-28 14:34:50 +01:00
arc53-machine ab3dbfa1be Default retrieval to 6 chunks instead of 2
chunks is a total per request, split across the attached sources, so an
agent with two sources and the default of 2 got a single chunk from each,
and its answers changed with whichever chunk won. 6 gives three per
source for about 4-5k more input tokens per retrieval turn.

Every literal default moves from 2 to 6: the request default, the
retrievers, the internal search tool, workflow agent nodes, scheduled and
headless runs, agent create/update/import, the source retrieval config and
the frontend forms. Existing agents and sources keep what they store; a
source saved with chunks=2 now counts as configured at 2, which is pinned
by a test.

Headless runs also read chunks=0 as unset (`or 2`), so an agent with
retrieval switched off retrieved anyway on scheduled runs; 0 now stays 0.
2026-09-28 14:34:50 +01:00
Alex 1c19ed8ce2 Merge pull request #2840 from arc53-machine/math-rendering-parser-level
Render chat math in the markdown parser: \( \), \[ \], $x$, mhchem, streaming
2026-09-28 13:50:39 +01:00
arc53-machine 1c9cf7b693 Open the sources list from a citation that has no card
Only the first three sources are shown as cards, so a pill for [4] or
later scrolled to nothing; it now opens the full list.
2026-09-28 13:30:55 +01:00
arc53-machine c0c587de81 Keep answer math in its frame and its case
A display formula wider than the column scrolls in its own box, as code
and tables do, and a formula in a table header is not uppercased: n and N
are different variables.
2026-09-28 13:21:28 +01:00
arc53-machine 845e39969e Link only citations that have a source card to jump to
A pill for [N] beyond the answer's sources, or on an answer whose sources
are hidden, scrolled to nothing.
2026-09-28 13:21:28 +01:00
arc53-machine 2496374904 Parse chat math in the markdown parser, not with string rewrites
Inline \( \) math rendered as a literal $x$ (the rewrite produced single
dollars, which remark-math is told to ignore), a one-line \[ \] shrank to
inline math, model-written $x$ never rendered, and the citation pass
linked [1] inside formulas.

- \( \) and \[ \] are micromark constructs: inline anywhere, display when
  \[ starts a line and its \] ends one. A line such as "\[a\] and more"
  stays inline instead of swallowing the rest of the answer, which is why
  this does not alias micromark-extension-llm-math.
- $x$ follows Pandoc's rules (ported from LibreChat, MIT), so prices stay
  text.
- A paragraph holding only $$ or \[ math, and anything KaTeX can only set in
  display mode (\tag, align, ...), becomes display math.
- mhchem is loaded for \ce and \pu.
- Citations are linked on the syntax tree, so code, math, link text and
  escaped brackets are never touched.
- While streaming, open emphasis, code and $$ / \[ math are closed (remend
  plus a code-aware math pass) and a formula KaTeX cannot set yet shows in
  the muted colour. Each top-level block renders on its own and is
  memoised, so only the growing block is parsed and typeset again.
2026-09-28 13:21:28 +01:00
Manish Madan 0455f37a1d Merge pull request #2774 from arc53/dependabot/npm_and_yarn/frontend/vitest-5.0.0
build(deps-dev): bump vitest from 4.1.11 to 5.0.0 in /frontend
2026-09-28 17:35:16 +05:30
Alex aa0ce42fd7 Merge pull request #2839 from arc53-machine/failed-attachment-never-blocks-send
A failed attachment never blocks Send: drop it and send the question
2026-09-28 12:21:30 +01:00
arc53-machine 3a156ff21d Name the file in the remove button's failure description
The remove button's label is "Remove attachment" and doesn't say which
file. Its failure description now reads "<file>: <reason>", the same text
as the tooltip.
2026-09-28 10:47:30 +01:00
arc53-machine 7e990d4384 Name the file in a failed chip's tooltip and announce failures
Follow-ups to moving the failure reason into a tooltip:

- The tooltip now reads "<file>: <reason>". The name is truncated on the
  chip, and two long names can look the same.
- A polite role="status" region, always mounted and screen-reader only,
  lists the failed files and their reasons. The red line it replaces was
  role="alert", so failures were announced; a hover tooltip is not.
- The reason now describes the remove button (aria-describedby on a
  hidden span), the chip's only focusable control. Before, it was sr-only
  text on a chip that can't take focus.
2026-09-28 10:37:09 +01:00
arc53-machine b8a62cedf9 Show a failed attachment's reason on hover, not as a red line
The composer showed each failed file's reason as a red line of text under
the chips. A failed file no longer blocks the send, since it is dropped
then, so that line was louder than it needed to be. DESIGN.md also says
status text of a sentence or more must not be a coloured paragraph.

The chip's warning icon already marks the failure. The reason is now a
Tooltip on the failed chip. It falls back to "Failed" when no reason is
known. It is also kept as sr-only text so screen readers still read it.
The native title moves from the chip to the truncating file name, where
DESIGN.md keeps title=, and is left off failed chips so the tooltip
doesn't double up.
2026-09-28 10:27:12 +01:00
arc53-machine dc5ebf5bb9 e2e: a failed attachment no longer blocks the send
Aborts /api/store_attachment, attaches a file, waits for the failed
chip's reason, then sends. Checks that one /stream request goes out with
no attachment ids, that the question is in the thread and the chip is
gone, and that the stored message has no attachments.
2026-09-28 10:06:25 +01:00
arc53-machine 2acfa34bc5 Fail stalled attachment uploads and say why an upload failed
Uploads had no timeout, so a stalled XHR could leave a chip on
"uploading" forever, and a queued send waited with it. Network failures
also set no errorMessage, so the failed chip showed no reason.

guardUploadStall aborts an upload once it goes 120 s without progress.
It restarts on every upload progress event and again when the body
finishes sending. A large file on a slow link keeps going; only a silent
stall is cut off. That is why it is not xhr.timeout, which caps the whole
request against a 100 MB file limit. onerror, onabort and ontimeout now
mark the chip failed with "Upload failed. The file couldn't be read or
the connection dropped." (single and multi-file paths). A failed chip is
dropped at send, so a queued question always goes out in the end. The
5-minute processing cap is unchanged.
2026-09-28 10:06:21 +01:00
arc53-machine be6fe8d0c2 Hold a queued send while an answer is streaming
A queued send flushed by calling submitNow directly, which skipped the
loading check in canSubmit. submitNow clears the composer before the
consumer runs, and the consumer ignores a submit while status is
'loading'. If a retry or an edit was streaming when the attachments
settled, the question was cleared and never sent.

useArmedSend takes a canFlush flag. The composer passes whether it can
take a submit right now (not loading, not recording or transcribing).
The armed send stays queued until that holds, then goes out.
2026-09-28 10:05:39 +01:00
arc53-machine a9c0082e9a Send with a failed attachment instead of blocking
A failed attachment made getSendReadiness return 'blocked', so Send was a
no-op until the user found and removed the chip. On a phone the only hint
was a small red line after the tap, and a new user lost their question
that way. A failed file never recovers, so holding the send only costs
the question.

Readiness now ignores failed attachments: it waits only on uploading or
processing files. On submit the composer drops every failed attachment
and sends the text with the completed ones. The payloads already read
completed attachments only, so no failed id reaches the request or the
history. The hero-card path in Conversation also clears failed chips.
The failed chip still shows before Send and can be removed by hand.

Removes the send-blocked alert and its locale key.
2026-09-28 10:05:19 +01:00
Pavel 4070b03053 Workflow revamp 2026-09-27 21:31:01 +04:00
Pavel d4c97a49ce Agent menu in new style 2026-09-27 19:45:05 +04:00
Pavel 20bcd92942 updated drawer 2026-09-27 16:53:18 +04:00
Pavel ed804a14e9 Cards standartization 2026-09-27 16:17:59 +04:00