diff --git a/tools/server/webui/src/app.css b/tools/server/webui/src/app.css index 59c525d8c7..ecaae22857 100644 --- a/tools/server/webui/src/app.css +++ b/tools/server/webui/src/app.css @@ -14,11 +14,11 @@ --popover-foreground: oklch(0.145 0 0); --primary: oklch(0.205 0 0); --primary-foreground: oklch(0.985 0 0); - --secondary: oklch(0.97 0 0); + --secondary: oklch(0.95 0 0); --secondary-foreground: oklch(0.205 0 0); --muted: oklch(0.97 0 0); --muted-foreground: oklch(0.556 0 0); - --accent: oklch(0.97 0 0); + --accent: oklch(0.95 0 0); --accent-foreground: oklch(0.205 0 0); --destructive: oklch(0.577 0.245 27.325); --border: oklch(0.875 0 0); @@ -51,7 +51,7 @@ --popover-foreground: oklch(0.985 0 0); --primary: oklch(0.922 0 0); --primary-foreground: oklch(0.205 0 0); - --secondary: oklch(0.269 0 0); + --secondary: oklch(0.29 0 0); --secondary-foreground: oklch(0.985 0 0); --muted: oklch(0.269 0 0); --muted-foreground: oklch(0.708 0 0); diff --git a/tools/server/webui/src/lib/components/app/chat/ChatForm/ChatForm.svelte b/tools/server/webui/src/lib/components/app/chat/ChatForm/ChatForm.svelte index c17bdb715a..c0e459b5c5 100644 --- a/tools/server/webui/src/lib/components/app/chat/ChatForm/ChatForm.svelte +++ b/tools/server/webui/src/lib/components/app/chat/ChatForm/ChatForm.svelte @@ -289,11 +289,11 @@ />
{ - return !hasVisionModality - ? 'Text files and PDFs supported. Images, audio, and video require vision models.' - : 'Add files, prompts and MCP Servers'; - }); + const fileUploadTooltipText = 'Add files, system prompt or MCP Servers';
@@ -46,8 +42,9 @@ +{/if} diff --git a/tools/server/webui/src/lib/components/app/mcp/McpSelector.svelte b/tools/server/webui/src/lib/components/app/mcp/McpSelector.svelte index b94aaf7101..3c3d156b65 100644 --- a/tools/server/webui/src/lib/components/app/mcp/McpSelector.svelte +++ b/tools/server/webui/src/lib/components/app/mcp/McpSelector.svelte @@ -1,13 +1,13 @@ {#if hasMcpServers} @@ -112,7 +79,7 @@ bind:searchValue={searchQuery} placeholder="Search servers..." emptyMessage="No servers found" - isEmpty={filteredMcpServers().length === 0} + isEmpty={filteredMcpServers.length === 0} {disabled} onOpenChange={handleDropdownOpen} > @@ -154,37 +121,58 @@ {/snippet} - {#each filteredMcpServers() as server (server.id)} - {@const healthState = mcpStore.getHealthCheckState(server.id)} - {@const hasError = healthState.status === HealthCheckStatus.Error} - {@const isEnabledForChat = isServerEnabledForChat(server.id)} +
+ {#if isLoading} + {#each mcpServers as server (server.id)} +
+
+ + +
+ +
+ {/each} + {:else} + {#each filteredMcpServers as server (server.id)} + {@const healthState = mcpStore.getHealthCheckState(server.id)} + {@const hasError = healthState.status === HealthCheckStatus.Error} + {@const isEnabledForChat = isServerEnabledForChat(server.id)} -
-
- {#if getFaviconUrl(server.url)} - { - (e.currentTarget as HTMLImageElement).style.display = 'none'; - }} +
- toggleServerForChat(server.id)} - disabled={hasError} - /> -
- {/each} + + {/each} + {/if} +
{#snippet footer()} diff --git a/tools/server/webui/src/lib/components/app/mcp/McpServerCard/McpServerCard.svelte b/tools/server/webui/src/lib/components/app/mcp/McpServerCard/McpServerCard.svelte index c44249acc9..e39a11d341 100644 --- a/tools/server/webui/src/lib/components/app/mcp/McpServerCard/McpServerCard.svelte +++ b/tools/server/webui/src/lib/components/app/mcp/McpServerCard/McpServerCard.svelte @@ -18,12 +18,13 @@ interface Props { server: MCPServerSettingsEntry; faviconUrl: string | null; + enabled?: boolean; onToggle: (enabled: boolean) => void; onUpdate: (updates: Partial) => void; onDelete: () => void; } - let { server, faviconUrl, onToggle, onUpdate, onDelete }: Props = $props(); + let { server, faviconUrl, enabled, onToggle, onUpdate, onDelete }: Props = $props(); let healthState = $derived(mcpStore.getHealthCheckState(server.id)); let displayName = $derived(getMcpServerLabel(server, healthState)); @@ -116,7 +117,7 @@ + +
{/if} - {#if servers.length > 0} + {#if rawServers.length > 0}
- {#each servers as server (server.id)} - mcpStore.updateServer(server.id, { enabled })} - onUpdate={(updates) => mcpStore.updateServer(server.id, updates)} - onDelete={() => mcpStore.removeServer(server.id)} - /> - {/each} + {#if isLoading} + + {#each rawServers as server (server.id)} + + +
+
+ + + +
+ +
+ + +
+ + + +
+ + +
+ + +
+ + + + + +
+ + + +
+
+ {/each} + {:else} + {#each servers as server (server.id)} + await conversationsStore.toggleMcpServerForChat(server.id)} + onUpdate={(updates) => mcpStore.updateServer(server.id, updates)} + onDelete={() => mcpStore.removeServer(server.id)} + /> + {/each} + {/if}
{/if}
diff --git a/tools/server/webui/src/lib/components/app/misc/SearchInput.svelte b/tools/server/webui/src/lib/components/app/misc/SearchInput.svelte index 15cd6abaa9..9a8088d9da 100644 --- a/tools/server/webui/src/lib/components/app/misc/SearchInput.svelte +++ b/tools/server/webui/src/lib/components/app/misc/SearchInput.svelte @@ -46,7 +46,7 @@
-
+
{@render children()} {#if isEmpty} diff --git a/tools/server/webui/src/lib/components/app/models/ModelsSelector.svelte b/tools/server/webui/src/lib/components/app/models/ModelsSelector.svelte index 7e183bd979..cdbb294125 100644 --- a/tools/server/webui/src/lib/components/app/models/ModelsSelector.svelte +++ b/tools/server/webui/src/lib/components/app/models/ModelsSelector.svelte @@ -277,7 +277,7 @@