From c3520f1e2c29d2d1ff641d4fca6db98875587274 Mon Sep 17 00:00:00 2001 From: Aleksander Grygier Date: Wed, 1 Apr 2026 02:02:52 +0200 Subject: [PATCH] feat: WIP --- .../app/chat/ChatSettings/ChatSettings.svelte | 5 +- .../app/chat/ChatSidebar/ChatSidebar.svelte | 9 ++- .../ChatSidebar/ChatSidebarActions.svelte | 38 +------------ .../chat/ChatSidebar/ChatSidebarFooter.svelte | 42 ++++++++++++++ .../app/mcp/McpServersSettings.svelte | 10 +++- .../ui/sidebar/sidebar-footer.svelte | 2 +- .../ui/sidebar/sidebar-trigger.svelte | 9 ++- .../lib/components/ui/sidebar/sidebar.svelte | 6 +- .../contexts/chat-settings-dialog.context.ts | 1 + .../contexts/mcp-servers-dialog.context.ts | 1 + tools/server/webui/src/routes/+layout.svelte | 57 ++++++++++++------- tools/server/webui/src/routes/+page.svelte | 2 +- 12 files changed, 113 insertions(+), 69 deletions(-) create mode 100644 tools/server/webui/src/lib/components/app/chat/ChatSidebar/ChatSidebarFooter.svelte diff --git a/tools/server/webui/src/lib/components/app/chat/ChatSettings/ChatSettings.svelte b/tools/server/webui/src/lib/components/app/chat/ChatSettings/ChatSettings.svelte index d41f8a8766..3de3d18029 100644 --- a/tools/server/webui/src/lib/components/app/chat/ChatSettings/ChatSettings.svelte +++ b/tools/server/webui/src/lib/components/app/chat/ChatSettings/ChatSettings.svelte @@ -26,11 +26,12 @@ import type { Component } from 'svelte'; interface Props { + class: string; onSave?: () => void; initialSection?: SettingsSectionTitle; } - let { onSave, initialSection }: Props = $props(); + let { class: className, onSave, initialSection }: Props = $props(); const settingSections: Array<{ fields: SettingsFieldConfig[]; @@ -431,7 +432,7 @@ }); -
+
- {/if}
diff --git a/tools/server/webui/src/lib/components/app/chat/ChatSidebar/ChatSidebarFooter.svelte b/tools/server/webui/src/lib/components/app/chat/ChatSidebar/ChatSidebarFooter.svelte new file mode 100644 index 0000000000..75bc219baf --- /dev/null +++ b/tools/server/webui/src/lib/components/app/chat/ChatSidebar/ChatSidebarFooter.svelte @@ -0,0 +1,42 @@ + + +
+ + + +
diff --git a/tools/server/webui/src/lib/components/app/mcp/McpServersSettings.svelte b/tools/server/webui/src/lib/components/app/mcp/McpServersSettings.svelte index 85232b586e..681fdeaef7 100644 --- a/tools/server/webui/src/lib/components/app/mcp/McpServersSettings.svelte +++ b/tools/server/webui/src/lib/components/app/mcp/McpServersSettings.svelte @@ -9,6 +9,12 @@ import { MCP_SERVER_ID_PREFIX } from '$lib/constants'; import { HealthCheckStatus } from '$lib/enums'; + interface Props { + class?: string; + } + + let { class: className }: Props = $props(); + let servers = $derived(mcpStore.getServersSorted()); let initialLoadComplete = $state(false); @@ -77,7 +83,7 @@ } -
+

Manage Servers

@@ -130,7 +136,7 @@ {/if} {#if servers.length > 0} -
+
{#each servers as server (server.id)} {#if !initialLoadComplete} diff --git a/tools/server/webui/src/lib/components/ui/sidebar/sidebar-footer.svelte b/tools/server/webui/src/lib/components/ui/sidebar/sidebar-footer.svelte index 67be0a484d..69914dfa28 100644 --- a/tools/server/webui/src/lib/components/ui/sidebar/sidebar-footer.svelte +++ b/tools/server/webui/src/lib/components/ui/sidebar/sidebar-footer.svelte @@ -14,7 +14,7 @@ bind:this={ref} data-slot="sidebar-footer" data-sidebar="footer" - class={cn('flex flex-col gap-2 p-2', className)} + class={cn('flex flex-col gap-2 p-3', className)} {...restProps} > {@render children?.()} diff --git a/tools/server/webui/src/lib/components/ui/sidebar/sidebar-trigger.svelte b/tools/server/webui/src/lib/components/ui/sidebar/sidebar-trigger.svelte index 38dfca4996..bc37785a6f 100644 --- a/tools/server/webui/src/lib/components/ui/sidebar/sidebar-trigger.svelte +++ b/tools/server/webui/src/lib/components/ui/sidebar/sidebar-trigger.svelte @@ -3,6 +3,7 @@ import PanelLeftIcon from '@lucide/svelte/icons/panel-left'; import type { ComponentProps } from 'svelte'; import { useSidebar } from './context.svelte.js'; + import { PanelLeftClose } from '@lucide/svelte'; let { ref = $bindable(null), @@ -21,7 +22,7 @@ data-slot="sidebar-trigger" variant="ghost" size="icon-lg" - class="rounded-full backdrop-blur-lg {className} top-1.5 md:left-[14.5rem]" + class="rounded-full backdrop-blur-lg {className} {sidebar.open ? 'top-1.5' : 'top-0'} md:left-[14.5rem]" type="button" onclick={(e) => { onclick?.(e); @@ -29,6 +30,10 @@ }} {...restProps} > - + {#if sidebar.open} + + {:else} + + {/if} Toggle Sidebar diff --git a/tools/server/webui/src/lib/components/ui/sidebar/sidebar.svelte b/tools/server/webui/src/lib/components/ui/sidebar/sidebar.svelte index c27130e553..85995d83e1 100644 --- a/tools/server/webui/src/lib/components/ui/sidebar/sidebar.svelte +++ b/tools/server/webui/src/lib/components/ui/sidebar/sidebar.svelte @@ -78,10 +78,10 @@ diff --git a/tools/server/webui/src/routes/+page.svelte b/tools/server/webui/src/routes/+page.svelte index 949ac273d5..818f59146d 100644 --- a/tools/server/webui/src/routes/+page.svelte +++ b/tools/server/webui/src/routes/+page.svelte @@ -87,7 +87,7 @@ - llama.cpp - AI Chat Interface + llama.cpp