Aleksander Grygier
3287a41af9
feat: MCP Resources
2026-02-07 02:49:49 +01:00
Aleksander Grygier
9ea59333b8
fix: Context info fixes & improvements
2026-02-06 14:55:32 +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
cc752d0d21
fix: MCP WebSocket reconnection race conditions
2026-02-05 15:31:08 +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
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
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
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
4642664c1a
webui: remove artificial cache limit, let GC handle cleanup on conversation change
2026-02-02 08:37:38 +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
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
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
42244c0162
fix: also skip image attachments in message history for non-vision backends
2026-02-01 04:13:37 +01:00
Pascal
893dbb058a
fix: skip sending image attachments to non-vision backends
2026-02-01 03:20:36 +01:00
Pascal
1384352484
fix: responsive MCP server cards, prioritize server name over version
2026-01-31 08:22:41 +01:00
Pascal
1615b1c58c
fix: responsive MCP server cards for mobile viewports
2026-01-31 07:58:47 +01:00
Pascal
b872838329
webui: adaptive model selector dropdown width
...
Make model selector dropdown responsive:
- Mobile: full width (w-full max-w-[100vw])
- Desktop: adapts to longest model name (sm:w-max)
- Replace TruncatedText with responsive span (truncate on mobile, full text on desktop via sm:overflow-visible sm:whitespace-nowrap)
- Center status icons in fixed 24px wrapper to prevent layout shifts
- Add sm:pr-2 padding between text and icon zone on desktop
Fixes dropdown cutting off long model names on desktop while maintaining full-width display on mobile with proper text truncation
2026-01-30 20:21:05 +01:00
Aleksander Grygier
e41f70bb47
refactor: Use CORS Proxy for favicons calls
2026-01-29 16:30:10 +01:00
Aleksander Grygier
46c5bca942
refactor: Proxy utility
2026-01-29 16:29:04 +01:00
Aleksander Grygier
536c6866e3
feat: Integrate with `llama-server` proxy + improve MCP Server Edit Form
2026-01-29 14:59:28 +01:00
Aleksander Grygier
6793c7daac
fix: Checking for capabilities from store
2026-01-29 12:45:10 +01:00
Aleksander Grygier
2aa704b821
refactor: Cleanup
2026-01-29 11:44:08 +01:00
Aleksander Grygier
d9e82b7c29
fix: Linter errors
2026-01-28 19:55:44 +01:00
Aleksander Grygier
7c9be63a74
refactor: Refine Chat Message Processing State Display
2026-01-28 18:31:37 +01:00
Aleksander Grygier
5a176d1893
feat: Chat logic improvements
2026-01-28 18:31:37 +01:00
Aleksander Grygier
aa7089d598
feat: Integrate Resource Attachments into Chat Form UI
2026-01-28 18:31:37 +01:00
Aleksander Grygier
23e4ef7495
feat: MCP Resources UI
...
feat: Implement MCP Resource Selection Dialog
2026-01-28 18:31:37 +01:00
Aleksander Grygier
1623547e2b
feat: Integrate Resource Store into Main MCP Store
2026-01-28 18:31:36 +01:00