Commit Graph
5656 Commits
Author SHA1 Message Date
Pavel f4331cd3a3 rabbit fixes 2026-09-28 18:40:49 +04: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
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
Alex d37e0bd1ad Merge pull request #2834 from arc53/iphone-modal-fixes
Iphone modal fixes
2026-09-27 10:42:34 +01:00
Pavel 231849c957 Design additions 2026-09-27 13:00:11 +04:00
Pavel a63234e7d9 theme switch fox 2026-09-27 12:54:51 +04:00
Pavel 4e03bc0388 bottom color on modal 2026-09-27 12:37:41 +04:00
Pavel 4e6f1bf9e4 focus fixes 2026-09-27 11:58:51 +04:00
Alex 420b4d33b9 Merge pull request #2833 from arc53/ui-polish 2026-09-26 21:04:02 +01:00
Pavel eb95304315 Rabbit fixes 2026-09-26 23:02:30 +04:00
Pavel 8390c1f275 Fix skeleton 2026-09-26 22:36:02 +04:00
Pavel 3d5b0cae89 Button bug 2026-09-26 22:31:36 +04:00
Pavel a6abc8cd3c Code block fixes 2026-09-26 21:59:05 +04:00
Pavel 93beca6c02 description polish 2026-09-26 21:48:11 +04:00
Pavel 325c841e3b Fix vertical mobile overflow 2026-09-26 21:25:21 +04:00
Pavel 44b7059075 Mobile modal standartisation 2026-09-26 21:20:24 +04:00
Pavel b54081f9b4 mobile top nav 2026-09-26 20:09:30 +04:00
Alex 431a069d4c Merge pull request #2832 from arc53/shadcn-linter
Shadcn linter
2026-09-26 11:52:09 +01:00
Pavel 10dbca8177 Fix logo 2026-09-26 14:18:15 +04:00
Pavel 6bc5467c08 sync with main 2026-09-26 14:03:40 +04:00
Pavel c4b1b2767f Real UI fixes 2026-09-26 14:02:19 +04:00
Pavel f66dc50eed Phase 2 2026-09-26 12:18:05 +04:00
Alex 9e0272c33f Merge pull request #2830 from arc53-machine/chore/docs-widget-0.8.0
Update docs widget to docsgpt-react 0.8.0
2026-09-25 10:54:15 +01:00
arc53-machine 9a8653367c Update docs widget to docsgpt-react 0.8.0 2026-09-25 10:47:49 +01:00
Alex 7b93e67fea Merge pull request #2829 from arc53/chore/bump-npm-v0.8.0
chore: bump npm libraries to v0.8.0
2026-09-25 10:46:38 +01:00
github-actions[bot] 013631c755 chore: bump npm libraries to v0.8.0 2026-09-25 09:39:16 +00:00
Alex f0aa6ae275 Merge pull request #2826 from ManishMadan2882/main
(fix:widget/ui): mobile keyboard, back button
2026-09-25 10:36:39 +01:00
Pavel 0dd379c271 phase 3 2026-09-25 12:26:39 +04:00
GH Action - Upstream Sync 192bf40001 Merge branch 'main' of https://github.com/arc53/DocsGPT 2026-09-25 03:51:15 +00:00
Pavel 2c57472d0a sync with main 2026-09-24 22:05:31 +04:00
Pavel d5f1e47593 pre app check 2026-09-24 21:05:39 +04:00
Alex a17ebf2fc9 Merge pull request #2828 from arc53-machine/chore/banner-secure-oss-fund
Point the dev banner at the Secure Open Source Fund post
2026-09-24 16:46:55 +01:00