Commit Graph

619 Commits

Author SHA1 Message Date
Aleksander Grygier c50f191a0d chore: update webui build output 2026-02-07 02:51:55 +01:00
Aleksander Grygier ccadd26024 fix: Syntax highlight for `svelte` and `vue` 2026-02-07 02:50:18 +01:00
Aleksander Grygier 3287a41af9 feat: MCP Resources 2026-02-07 02:49:49 +01:00
Aleksander Grygier c21bd358ce chore: update webui build output 2026-02-06 14:55:52 +01:00
Aleksander Grygier 9ea59333b8 fix: Context info fixes & improvements 2026-02-06 14:55:32 +01:00
Aleksander Grygier 2d8d094eaf chore: update webui build output 2026-02-06 04:14:53 +01:00
Aleksander Grygier 0e89fd9938 feat: Navigation UI improvements 2026-02-06 04:12:29 +01:00
Aleksander Grygier 315448b0bc fix: UI improvements 2026-02-06 04:12:29 +01:00
Aleksander Grygier 3a64334f6c feat: Prompt Picker and Prompt Attachment UI/UX improvements 2026-02-06 04:11:57 +01:00
Aleksander Grygier 5fe03b2bdc feat: Improve prompt picker keyboard navigation 2026-02-06 04:10:26 +01:00
Aleksander Grygier c5fa3634bc feat: Enable added MCP Server by default 2026-02-06 04:10:26 +01:00
Aleksander Grygier 84090b0272 refactor: Constants 2026-02-06 04:10:25 +01:00
Aleksander Grygier 242bc082dd feat: Add McpServersSettings to Chat Settings "MCP" section 2026-02-06 04:10:25 +01:00
Aleksander Grygier 6c7c597066 feat: Improve Stop button UI 2026-02-06 04:10:25 +01:00
Pascal 178597971d chore: update webui build output 2026-02-05 15:31:18 +01:00
Pascal cc752d0d21 fix: MCP WebSocket reconnection race conditions 2026-02-05 15:31:08 +01:00
Pascal 63db73b576 chore: update webui build output 2026-02-04 21:48:23 +01:00
Pascal c451faad8b 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-04 21:46:39 +01:00
Pascal bba8f64e0f fix: handle MCP WebSocket disconnections with auto-reconnect (SDK provides no native reconnection) 2026-02-04 20:56:56 +01:00
Aleksander Grygier 58e3a1890b chore: update webui build output 2026-02-03 16:58:54 +01:00
Aleksander Grygier 77c96cf7b6 fix: Storybook 2026-02-03 16:54:25 +01:00
Aleksander Grygier fcae4b3a1b refactor: Componentize MCP Resource Browser 2026-02-03 16:35:21 +01:00
Aleksander Grygier 983b279724 refactor: Use `UrlPrefix` enum for data stream parsing 2026-02-03 16:32:51 +01:00
Aleksander Grygier 6489c33dd5 feat: Add `createBase64DataUrl` utility and `MimeTypeApplication.OCTET_STREAM`
refactor: Apply `createBase64DataUrl` utility and clarify service comment
2026-02-03 16:32:51 +01:00
Aleksander Grygier 67e04c92db refactor: Cleanup 2026-02-03 16:10:02 +01:00
Aleksander Grygier 7ca66f5fa4 refactor: MarkdownContent props API 2026-02-03 15:56:30 +01:00
Aleksander Grygier 28c8df00ba refactor: Cleanup 2026-02-03 15:51:28 +01:00
Aleksander Grygier 240cab076d refactor: Cleanup 2026-02-03 15:49:31 +01:00
Aleksander Grygier 72ef132465 refactor: Cleanup 2026-02-03 15:15:57 +01:00
Aleksander Grygier 3120a9fc94 refactor: Cleanup 2026-02-03 14:48:45 +01:00
Aleksander Grygier 16f333e4ec refactor: Cleanup 2026-02-03 14:42:42 +01:00
Aleksander Grygier 70efc41eb1 refactor: Cleanup 2026-02-03 14:27:39 +01:00
Aleksander Grygier bb4253ae20 refactor: Cleanup 2026-02-03 14:27:39 +01:00
Aleksander Grygier 4383644951 refactor: Cleanup 2026-02-03 14:01:28 +01:00
Pascal 796fd1a62e chore: update webui build output 2026-02-03 14:01:09 +01:00
Pascal ec604a03e1 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-03 14:01:05 +01:00
Pascal 65e8bb6df4 chore: update webui build output 2026-02-02 12:02:14 +01:00
Pascal 4fca9bfe16 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-02 12:00:19 +01:00
Pascal 1d2ff059da chore: update webui build output 2026-02-02 08:39:14 +01:00
Pascal 4642664c1a webui: remove artificial cache limit, let GC handle cleanup on conversation change 2026-02-02 08:37:38 +01:00
Pascal 965655fafb chore: update webui build output 2026-02-01 20:35:35 +01:00
Pascal 7953c18967 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-01 20:34:08 +01:00
Pascal 2884ef46b3 chore: update webui build output 2026-02-01 19:45:54 +01:00
Pascal 0dbaeaf6c7 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-01 19:44:16 +01:00
Pascal 1ab2e45684 chore: update webui build output 2026-02-01 12:10:06 +01:00
Pascal 82f6094aa2 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-01 12:06:25 +01:00
Pascal be96423ae9 feat: render images below attachment markers in tool results 2026-02-01 04:56:21 +01:00
Pascal 5a4e4f4189 chore: update webui build output 2026-02-01 04:13:48 +01:00
Pascal 42244c0162 fix: also skip image attachments in message history for non-vision backends 2026-02-01 04:13:37 +01:00
Pascal 6b7e6f18a6 chore: update webui build output 2026-02-01 03:22:09 +01:00