Commit Graph

331 Commits

Author SHA1 Message Date
Aleksander Grygier 3df7d7f165 refactor: Cleanup 2026-02-13 14:05:29 +01:00
Aleksander Grygier 2d59005d37 refactor: Move MCP health checks to background process from core layout 2026-02-13 14:05:29 +01:00
Aleksander Grygier cde9d45008 feat: UI improvements 2026-02-13 14:05:29 +01:00
Aleksander Grygier c6e5da11e6 docs: Centralize and enhance service documentation 2026-02-13 14:05:29 +01:00
Aleksander Grygier 530868f5a1 feat: Enable MCP prompt button in chat message edit form 2026-02-13 14:05:29 +01:00
Aleksander Grygier 184cb50148 refactor: Redesign DropdownMenuSearchable as content provider 2026-02-13 14:05:29 +01:00
Aleksander Grygier e55ee82f07 refactor: Cleanup 2026-02-13 14:05:29 +01:00
Aleksander Grygier 853f711896 refactor: Cleanup 2026-02-13 14:05:29 +01:00
Aleksander Grygier d65fdde77d chore: Formatting & linting 2026-02-13 14:05:29 +01:00
Aleksander Grygier ba19e0e4ff fix: Improve word wrapping in resource preview 2026-02-13 14:05:28 +01:00
Aleksander Grygier 1d28b6b1be fix: MCP Resources Browser selection & attaching 2026-02-13 14:05:28 +01:00
Aleksander Grygier 5508ad0bee feat: Implement resource search in MCP Resource browser 2026-02-13 14:05:28 +01:00
Aleksander Grygier e5cbb815aa refactor: Cleanup 2026-02-13 14:05:28 +01:00
Aleksander Grygier aaa0bd432f feat: Minor UI tweaks 2026-02-13 14:05:28 +01:00
Aleksander Grygier 70f67140ae refactor: Cleanup 2026-02-13 14:05:28 +01:00
Aleksander Grygier 3c3d4f28f3 feat: Improve MCP server selection UX in chat form dropdown 2026-02-13 14:05:28 +01:00
Aleksander Grygier 4b752d7113 refactor: Consolidate MCP server settings into ChatSettings 2026-02-13 14:05:28 +01:00
Aleksander Grygier 05d1a47e88 fix: Proper system message deletion logic 2026-02-13 14:05:28 +01:00
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 6d0c86f8b4 fix: Context info fixes & improvements 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 a1897aac12 fix: MCP WebSocket reconnection race conditions 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 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 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 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 9d3818ed7a webui: remove artificial cache limit, let GC handle cleanup on conversation change 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