Commit Graph

8296 Commits

Author SHA1 Message Date
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
Pascal 26bc18d7e3 chore: update webui build output 2026-02-13 14:00:05 +01:00
Pascal 2f97e59e25 fix: responsive MCP server cards, prioritize server name over version 2026-02-13 14:00:05 +01:00
Pascal 7da99d3c77 fix: responsive MCP server cards for mobile viewports 2026-02-13 14:00:05 +01:00
Pascal ea44b276a5 chore: update webui build output 2026-02-13 14:00:05 +01:00
Pascal 3b549e6015 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-02-13 14:00:05 +01:00
Aleksander Grygier 4ec405441c chore: update webui build output 2026-02-13 14:00:05 +01:00
Aleksander Grygier 8fbed10bf6 refactor: Use CORS Proxy for favicons calls 2026-02-13 14:00:05 +01:00
Aleksander Grygier c9ba41f540 refactor: Proxy utility 2026-02-13 14:00:05 +01:00
Aleksander Grygier 670f5fa6bf chore: update webui build output 2026-02-13 14:00:05 +01:00
Aleksander Grygier be09ff9f4a feat: Integrate with `llama-server` proxy + improve MCP Server Edit Form 2026-02-13 14:00:05 +01:00
Xuan Son Nguyen 93378a5a5f https working 2026-02-13 14:00:05 +01:00
Xuan Son Nguyen 8a36b615ce download: use httplib and boringssl by default 2026-02-13 14:00:05 +01:00
Xuan Son Nguyen 7df625f8f8 fix 2026-02-13 14:00:05 +01:00
Xuan Son Nguyen a145e44838 demo cors proxy 2026-02-13 14:00:05 +01:00
Aleksander Grygier e2534783c2 chore: update webui build output 2026-02-13 14:00:05 +01:00
Aleksander Grygier c4e2ccdff7 fix: Checking for capabilities from store 2026-02-13 14:00:05 +01:00
Aleksander Grygier 874de71573 refactor: Cleanup 2026-02-13 14:00:05 +01:00
Aleksander Grygier 59d5da4541 chore: update webui build output 2026-02-13 14:00:05 +01:00
Aleksander Grygier a47b9e4d99 fix: Linter errors 2026-02-13 14:00:05 +01:00
Aleksander Grygier aa4fb786a2 refactor: Refine Chat Message Processing State Display 2026-02-13 14:00:05 +01:00
Aleksander Grygier 6047da3f72 feat: Chat logic improvements 2026-02-13 13:59:23 +01:00
Aleksander Grygier 2ee54f431a feat: Integrate Resource Attachments into Chat Form UI 2026-02-13 13:59:23 +01:00