Commit Graph

8318 Commits

Author SHA1 Message Date
Aleksander Grygier 6979586b69 fix: Syntax highlight for `svelte` and `vue` 2026-02-13 14:05:28 +01:00
Aleksander Grygier 6cba8e0a35 feat: MCP Resources 2026-02-13 14:05:28 +01:00
Aleksander Grygier ae5212d0fd chore: update webui build output 2026-02-13 14:05:28 +01:00
Aleksander Grygier 6d0c86f8b4 fix: Context info fixes & improvements 2026-02-13 14:05:28 +01:00
Aleksander Grygier 7881cf00c9 chore: update webui build output 2026-02-13 14:05:28 +01:00
Aleksander Grygier 7d66311107 feat: Navigation UI improvements 2026-02-13 14:05:28 +01:00
Aleksander Grygier d81e7d3a3a fix: UI improvements 2026-02-13 14:05:28 +01:00
Aleksander Grygier 906fede1e6 feat: Prompt Picker and Prompt Attachment UI/UX improvements 2026-02-13 14:05:28 +01:00
Aleksander Grygier 5bb2577aae feat: Improve prompt picker keyboard navigation 2026-02-13 14:05:28 +01:00
Aleksander Grygier dcdcc9aa6a feat: Enable added MCP Server by default 2026-02-13 14:05:28 +01:00
Aleksander Grygier d3f08bb4ec refactor: Constants 2026-02-13 14:05:28 +01:00
Aleksander Grygier e83d440a0d feat: Add McpServersSettings to Chat Settings "MCP" section 2026-02-13 14:05:28 +01:00
Aleksander Grygier 2d78b16859 feat: Improve Stop button UI 2026-02-13 14:05:28 +01:00
Pascal 757881221b chore: update webui build output 2026-02-13 14:05:28 +01:00
Pascal a1897aac12 fix: MCP WebSocket reconnection race conditions 2026-02-13 14:05:28 +01:00
Pascal bbad4376de chore: update webui build output 2026-02-13 14:05:28 +01:00
Pascal d584b00446 webui: improve when lacking vertical space on mobile with keyboard open
consider removing all nested scrolls from reasoning/toolcall and make a simple
timeline that opens entirely in one click?
2026-02-13 14:05:28 +01:00
Pascal f925fa369f fix: handle MCP WebSocket disconnections with auto-reconnect (SDK provides no native reconnection) 2026-02-13 14:05:28 +01:00
Aleksander Grygier 5657574b5b chore: update webui build output 2026-02-13 14:05:28 +01:00
Aleksander Grygier 3d94b896c3 fix: Storybook 2026-02-13 14:05:28 +01:00
Aleksander Grygier 3c8af32d0d refactor: Componentize MCP Resource Browser 2026-02-13 14:05:28 +01:00
Aleksander Grygier 4eac9f6bab refactor: Use `UrlPrefix` enum for data stream parsing 2026-02-13 14:05:28 +01:00
Aleksander Grygier 8fc28e249d feat: Add `createBase64DataUrl` utility and `MimeTypeApplication.OCTET_STREAM`
refactor: Apply `createBase64DataUrl` utility and clarify service comment
2026-02-13 14:05:27 +01:00
Aleksander Grygier dd39ec6f0b refactor: Cleanup 2026-02-13 14:05:27 +01:00
Aleksander Grygier 17472c3c7a refactor: MarkdownContent props API 2026-02-13 14:05:27 +01:00
Aleksander Grygier c6549188c0 refactor: Cleanup 2026-02-13 14:05:27 +01:00
Aleksander Grygier 6c61742d54 refactor: Cleanup 2026-02-13 14:05:07 +01:00
Aleksander Grygier 5871923ffe refactor: Cleanup 2026-02-13 14:05:07 +01:00
Aleksander Grygier 394c012a58 refactor: Cleanup 2026-02-13 14:02:25 +01:00
Aleksander Grygier 626bb47e9d refactor: Cleanup 2026-02-13 14:02:25 +01:00
Aleksander Grygier f2fcfcd394 refactor: Cleanup 2026-02-13 14:01:41 +01:00
Aleksander Grygier 48a757bc0a refactor: Cleanup 2026-02-13 14:01:41 +01:00
Aleksander Grygier c591b45399 refactor: Cleanup 2026-02-13 14:00:06 +01:00
Pascal 2bbfd6537f chore: update webui build output 2026-02-13 14:00:06 +01:00
Pascal 401c53fa2e Update tools/server/webui/src/lib/components/app/chat/ChatAttachments/ChatAttachmentsList.svelte
Co-authored-by: Aleksander Grygier <aleksander.grygier@gmail.com>
Update tools/server/webui/src/lib/components/app/chat/ChatForm/ChatFormActions/ChatFormActionAttachmentsDropdown.svelte

Co-authored-by: Aleksander Grygier <aleksander.grygier@gmail.com>
Update tools/server/webui/src/lib/components/app/chat/ChatForm/ChatFormActions/ChatFormActions.svelte

Co-authored-by: Aleksander Grygier <aleksander.grygier@gmail.com>
Update tools/server/webui/src/lib/components/app/chat/ChatForm/ChatFormActions/ChatFormActions.svelte

Co-authored-by: Aleksander Grygier <aleksander.grygier@gmail.com>
Update tools/server/webui/src/lib/components/app/chat/ChatForm/ChatFormPromptPicker/ChatFormPromptPicker.svelte

Co-authored-by: Aleksander Grygier <aleksander.grygier@gmail.com>
Update tools/server/webui/src/lib/components/app/chat/ChatForm/ChatFormPromptPicker/ChatFormPromptPicker.svelte

Co-authored-by: Aleksander Grygier <aleksander.grygier@gmail.com>
Update tools/server/webui/src/lib/components/app/chat/ChatForm/ChatFormPromptPicker/ChatFormPromptPickerArgumentForm.svelte

Co-authored-by: Aleksander Grygier <aleksander.grygier@gmail.com>
Update tools/server/webui/src/lib/components/app/chat/ChatMessages/ChatMessages.svelte

Co-authored-by: Aleksander Grygier <aleksander.grygier@gmail.com>
Update tools/server/webui/src/lib/components/app/chat/ChatMessages/ChatMessageStatistics.svelte

Co-authored-by: Aleksander Grygier <aleksander.grygier@gmail.com>
Update tools/server/webui/src/lib/components/app/chat/index.ts

Co-authored-by: Aleksander Grygier <aleksander.grygier@gmail.com>
Update tools/server/webui/src/lib/components/app/chat/index.ts

Co-authored-by: Aleksander Grygier <aleksander.grygier@gmail.com>
Update tools/server/webui/src/lib/components/app/chat/index.ts

Co-authored-by: Aleksander Grygier <aleksander.grygier@gmail.com>
Update tools/server/webui/src/lib/components/app/content/CollapsibleContentBlock.svelte

Co-authored-by: Aleksander Grygier <aleksander.grygier@gmail.com>
Update tools/server/webui/src/lib/components/app/content/CollapsibleContentBlock.svelte

Co-authored-by: Aleksander Grygier <aleksander.grygier@gmail.com>
Update tools/server/webui/src/lib/components/app/content/MarkdownContent.svelte

Co-authored-by: Aleksander Grygier <aleksander.grygier@gmail.com>
Update tools/server/webui/src/lib/components/app/content/MarkdownContent.svelte

Co-authored-by: Aleksander Grygier <aleksander.grygier@gmail.com>
Update tools/server/webui/src/lib/components/app/content/MarkdownContent.svelte

Co-authored-by: Aleksander Grygier <aleksander.grygier@gmail.com>
Update tools/server/webui/src/lib/components/app/dialogs/DialogMcpResources.svelte

Co-authored-by: Aleksander Grygier <aleksander.grygier@gmail.com>
Update tools/server/webui/src/lib/components/app/dialogs/DialogMcpResources.svelte

Co-authored-by: Aleksander Grygier <aleksander.grygier@gmail.com>
Update tools/server/webui/src/lib/components/app/dialogs/DialogMcpResources.svelte

Co-authored-by: Aleksander Grygier <aleksander.grygier@gmail.com>
Update tools/server/webui/src/lib/components/app/dialogs/DialogMcpResources.svelte

Co-authored-by: Aleksander Grygier <aleksander.grygier@gmail.com>
Update tools/server/webui/src/lib/components/app/dialogs/DialogMcpResources.svelte

Co-authored-by: Aleksander Grygier <aleksander.grygier@gmail.com>
Update tools/server/webui/src/lib/components/app/dialogs/DialogMcpResources.svelte

Co-authored-by: Aleksander Grygier <aleksander.grygier@gmail.com>
Update tools/server/webui/src/lib/components/app/dialogs/DialogMcpResources.svelte

Co-authored-by: Aleksander Grygier <aleksander.grygier@gmail.com>
Update tools/server/webui/src/lib/components/app/dialogs/DialogMcpResources.svelte

Co-authored-by: Aleksander Grygier <aleksander.grygier@gmail.com>
Update tools/server/webui/src/lib/components/app/dialogs/DialogMcpResources.svelte

Co-authored-by: Aleksander Grygier <aleksander.grygier@gmail.com>
Update tools/server/webui/src/lib/components/app/mcp/McpServerCard/McpServerCardDeleteDialog.svelte

Co-authored-by: Aleksander Grygier <aleksander.grygier@gmail.com>
Update tools/server/webui/src/lib/components/app/mcp/McpCapabilitiesBadges.svelte

Co-authored-by: Aleksander Grygier <aleksander.grygier@gmail.com>
Update tools/server/webui/src/lib/components/app/mcp/McpConnectionLogs.svelte

Co-authored-by: Aleksander Grygier <aleksander.grygier@gmail.com>
Update tools/server/webui/src/lib/components/app/mcp/McpResourcePreview.svelte

Co-authored-by: Aleksander Grygier <aleksander.grygier@gmail.com>
Update tools/server/webui/src/lib/components/app/mcp/McpResourcePreview.svelte

Co-authored-by: Aleksander Grygier <aleksander.grygier@gmail.com>
Update tools/server/webui/src/lib/components/app/mcp/McpResourcePreview.svelte

Co-authored-by: Aleksander Grygier <aleksander.grygier@gmail.com>
Update tools/server/webui/src/lib/components/app/mcp/McpServerForm.svelte

Co-authored-by: Aleksander Grygier <aleksander.grygier@gmail.com>
Update tools/server/webui/src/lib/components/app/mcp/McpServerSelector.svelte

Co-authored-by: Aleksander Grygier <aleksander.grygier@gmail.com>
Update tools/server/webui/src/lib/components/app/mcp/McpServersSettings.svelte

Co-authored-by: Aleksander Grygier <aleksander.grygier@gmail.com>
Update tools/server/webui/src/lib/components/app/mcp/McpServersSettings.svelte

Co-authored-by: Aleksander Grygier <aleksander.grygier@gmail.com>
Update tools/server/webui/src/lib/components/app/mcp/McpServersSettings.svelte

Co-authored-by: Aleksander Grygier <aleksander.grygier@gmail.com>
Update tools/server/webui/src/lib/components/app/mcp/McpServersSettings.svelte

Co-authored-by: Aleksander Grygier <aleksander.grygier@gmail.com>
Update tools/server/webui/src/lib/components/app/misc/index.ts

Co-authored-by: Aleksander Grygier <aleksander.grygier@gmail.com>
Update tools/server/webui/src/lib/components/app/misc/TruncatedText.svelte

Co-authored-by: Aleksander Grygier <aleksander.grygier@gmail.com>
Update tools/server/webui/src/lib/components/app/misc/TruncatedText.svelte

Co-authored-by: Aleksander Grygier <aleksander.grygier@gmail.com>
Update tools/server/webui/src/lib/components/app/misc/TruncatedText.svelte

Co-authored-by: Aleksander Grygier <aleksander.grygier@gmail.com>
Update tools/server/webui/src/lib/services/mcp.service.ts

Co-authored-by: Aleksander Grygier <aleksander.grygier@gmail.com>
Update tools/server/webui/src/lib/services/mcp.service.ts

Co-authored-by: Aleksander Grygier <aleksander.grygier@gmail.com>
Update tools/server/webui/src/lib/services/mcp.service.ts

Co-authored-by: Aleksander Grygier <aleksander.grygier@gmail.com>
Update tools/server/webui/src/lib/services/mcp.service.ts

Co-authored-by: Aleksander Grygier <aleksander.grygier@gmail.com>
Update tools/server/webui/src/lib/services/mcp.service.ts

Co-authored-by: Aleksander Grygier <aleksander.grygier@gmail.com>
Update tools/server/webui/src/lib/services/mcp.service.ts

Co-authored-by: Aleksander Grygier <aleksander.grygier@gmail.com>
Update tools/server/webui/src/lib/services/mcp.service.ts

Co-authored-by: Aleksander Grygier <aleksander.grygier@gmail.com>
Update tools/server/webui/src/lib/services/mcp.service.ts

Co-authored-by: Aleksander Grygier <aleksander.grygier@gmail.com>
Load more...
2026-02-13 14:00:06 +01:00
Pascal 52ee296e20 chore: update webui build output 2026-02-13 14:00:06 +01:00
Pascal c81732e4d7 webui: add early exit for unchanged content in markdown processing
Skip redundant processing when coalesced chunks result in identical
content. During rapid streaming, multiple chunks may arrive and coalesce
into pendingMarkdown while processing is ongoing. When the final
coalesced content equals what was just processed, we can skip entirely.

Also clarify the RAF yield comment: the key insight is that chunks
arriving during the yield naturally coalesce, so we always render
the latest state without explicitly tracking what to skip.
2026-02-13 14:00:06 +01:00
Pascal 023dd54b57 chore: update webui build output 2026-02-13 14:00:06 +01:00
Pascal 9d3818ed7a webui: remove artificial cache limit, let GC handle cleanup on conversation change 2026-02-13 14:00:06 +01:00
Pascal e61a2c235d chore: update webui build output 2026-02-13 14:00:06 +01:00
Pascal 1c9085c9a6 webui: fix UI freeze at high token rates with RAF yield
The markdown coalescing loop was processing chunks back-to-back without
yielding to the browser's paint cycle. At high token rates (250+ tok/s),
this caused complete UI freeze as the main thread was perpetually busy.

Add a requestAnimationFrame yield between processing batches. This allows
the browser to paint at screen FPS regardless of token throughput. Chunks
arriving during the yield are coalesced and processed together, so we
skip intermediate states and jump straight to the latest content.

Before: Chunk->process->Chunk->process->... (browser never paints = freeze)
After:  Chunk->process->[RAF]->coalesced chunks->process->[RAF]->... (screen FPS)

Tested with 250 tok/s streams on 50K+ token contexts: smooth scrolling
and responsive UI throughout.
2026-02-13 14:00:06 +01:00
Pascal e4bb6fdbf1 chore: update webui build output 2026-02-13 14:00:06 +01:00
Pascal e7140051b7 webui: incremental MDAST transform caching for streaming performance
Replace full AST re-transformation with per-block caching strategy.
Previously, each streaming chunk triggered processor.run() on the entire
document (12 rehype/remark plugins including KaTeX and highlight.js).

Now transforms individual MDAST nodes and caches results by position hash.
In append-only streaming mode, stable blocks are reused directly from cache,
only the unstable trailing block is re-transformed.

- Add SvelteMap FIFO cache (5000 blocks, evicts oldest 1000 on overflow)
- Add getMdastNodeHash() for MDAST node fingerprinting by position
- Add isAppendMode() to detect streaming append patterns
- Add transformMdastNode() for single-node transformation with cache lookup
- Remove stringifyProcessedNode() (dead code after refactor)

Reduces streaming complexity from O(N × transforms) to O(1) for stable blocks.
Targets 200K token contexts without UI degradation on mobile devices.
2026-02-13 14:00:06 +01:00
Pascal 6eeb611d51 chore: update webui build output 2026-02-13 14:00:05 +01:00
Pascal feb1565914 feat: render images inline below attachment markers in tool results
Parse tool results line-by-line to display images immediately after their
[Attachment saved: xxx.png] markers. Fixes previous commit where all images
from all tool calls were shown in every section. Each tool call now displays
only its own images.

Uses Svelte derived for memoization to avoid re-parsing on every streaming
chunk. Parsing only occurs when section.toolResult or message.extra changes
2026-02-13 14:00:05 +01:00
Pascal 62965b4717 feat: render images below attachment markers in tool results 2026-02-13 14:00:05 +01:00
Pascal 1fbf50713e chore: update webui build output 2026-02-13 14:00:05 +01:00
Pascal 8a00e70064 fix: also skip image attachments in message history for non-vision backends 2026-02-13 14:00:05 +01:00
Pascal 46aad7fad0 chore: update webui build output 2026-02-13 14:00:05 +01:00
Pascal 441d6b8d64 fix: skip sending image attachments to non-vision backends 2026-02-13 14:00:05 +01:00