From 1f89bfe475339bf6b33651240f0fbe99ef24c10c Mon Sep 17 00:00:00 2001 From: Aleksander Grygier Date: Sun, 20 Sep 2026 01:36:33 +0200 Subject: [PATCH] ui : manage backends in their own dialog Assisted-by: pi:llama.cpp/DeepSeek-V4.1-Flash --- .../app/dialogs/DialogBackends.svelte | 35 ++++++++++++ .../src/lib/components/app/dialogs/index.ts | 1 + .../ModelsSelectorDropdown.svelte | 15 +++--- .../ModelsSelector/ModelsSelectorSheet.svelte | 2 +- .../SidebarNavigation.svelte | 5 ++ .../SidebarNavigationActions.svelte | 54 ++++++++++--------- .../settings/SettingsChat/SettingsChat.svelte | 3 -- .../src/lib/constants/settings.constants.ts | 25 --------- tools/ui/src/lib/constants/ui.constants.ts | 7 ++- tools/ui/src/lib/enums/ui.enums.ts | 1 + 10 files changed, 87 insertions(+), 61 deletions(-) create mode 100644 tools/ui/src/lib/components/app/dialogs/DialogBackends.svelte diff --git a/tools/ui/src/lib/components/app/dialogs/DialogBackends.svelte b/tools/ui/src/lib/components/app/dialogs/DialogBackends.svelte new file mode 100644 index 0000000000..301643127a --- /dev/null +++ b/tools/ui/src/lib/components/app/dialogs/DialogBackends.svelte @@ -0,0 +1,35 @@ + + + + + + + + + Backends + + + + Endpoints this UI can talk to. The built-in backend is the llama.cpp server serving it. + + + + + + diff --git a/tools/ui/src/lib/components/app/dialogs/index.ts b/tools/ui/src/lib/components/app/dialogs/index.ts index 5f05f91750..037d255558 100644 --- a/tools/ui/src/lib/components/app/dialogs/index.ts +++ b/tools/ui/src/lib/components/app/dialogs/index.ts @@ -106,6 +106,7 @@ export { default as DialogExportSettings } from './DialogExportSettings.svelte'; * /> * ``` */ +export { default as DialogBackends } from './DialogBackends.svelte'; export { default as DialogConfirmation } from './DialogConfirmation.svelte'; /** diff --git a/tools/ui/src/lib/components/app/models/ModelsSelector/ModelsSelectorDropdown.svelte b/tools/ui/src/lib/components/app/models/ModelsSelector/ModelsSelectorDropdown.svelte index 9142c12a4d..51bcdc6a5f 100644 --- a/tools/ui/src/lib/components/app/models/ModelsSelector/ModelsSelectorDropdown.svelte +++ b/tools/ui/src/lib/components/app/models/ModelsSelector/ModelsSelectorDropdown.svelte @@ -244,7 +244,7 @@ > - + {#if selectedOption} {#snippet footer()} - + + + +
- -
+ > {/snippet} diff --git a/tools/ui/src/lib/components/app/models/ModelsSelector/ModelsSelectorSheet.svelte b/tools/ui/src/lib/components/app/models/ModelsSelector/ModelsSelectorSheet.svelte index 2add96ba63..23f95f31cd 100644 --- a/tools/ui/src/lib/components/app/models/ModelsSelector/ModelsSelectorSheet.svelte +++ b/tools/ui/src/lib/components/app/models/ModelsSelector/ModelsSelectorSheet.svelte @@ -204,7 +204,7 @@ /> -
+
diff --git a/tools/ui/src/lib/components/app/navigation/SidebarNavigation/SidebarNavigation.svelte b/tools/ui/src/lib/components/app/navigation/SidebarNavigation/SidebarNavigation.svelte index 375461cc57..0f881076cd 100644 --- a/tools/ui/src/lib/components/app/navigation/SidebarNavigation/SidebarNavigation.svelte +++ b/tools/ui/src/lib/components/app/navigation/SidebarNavigation/SidebarNavigation.svelte @@ -4,6 +4,7 @@ import { page } from '$app/state'; import { ActionIcon, + DialogBackends, DialogConversationRename, DialogModelsDiscover, DialogSettingsChat, @@ -94,6 +95,7 @@ let renameDialogOpen = $state(false); let settingsDialogOpen = $state(false); + let backendsDialogOpen = $state(false); let modelsDiscoverOpen = $state(false); let renameTargetConversationId = $state(null); let renameDraft = $state(''); @@ -391,6 +393,7 @@ bind:searchQuery class="px-2" isExpandedMode={innerWidth > 768 ? uiStore.isSidebarExpanded : true} + onBackendsClick={() => (backendsDialogOpen = true)} onDiscoverModelsClick={() => (modelsDiscoverOpen = true)} onNewChat={() => { if (deviceStore.isMobile) { @@ -455,6 +458,8 @@ + +