From 4e03d89414a7be1203579f45225ca64f1221205f Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Wed, 12 Aug 2026 23:17:37 -0600 Subject: [PATCH] refac --- .../chat/ModelSelector/Selector.svelte | 32 ++++++++++++++++--- 1 file changed, 27 insertions(+), 5 deletions(-) diff --git a/src/lib/components/chat/ModelSelector/Selector.svelte b/src/lib/components/chat/ModelSelector/Selector.svelte index 10b74676da..d2aa26833a 100644 --- a/src/lib/components/chat/ModelSelector/Selector.svelte +++ b/src/lib/components/chat/ModelSelector/Selector.svelte @@ -339,6 +339,14 @@ }) ).filter((item) => includeHidden || !(item.model?.info?.meta?.hidden ?? false)); + $: showPullModelButton = !!( + !selectionOnly && + !(searchValue.trim() in $MODEL_DOWNLOAD_POOL) && + searchValue && + ollamaVersion && + $user?.role === 'admin' + ); + $: if ( selectedTag !== undefined || selectedConnectionType !== undefined || @@ -804,12 +812,19 @@ autocomplete="off" aria-label={$i18n.t('Search In Models')} on:keydown={(e) => { - if (e.code === 'Enter' && filteredItems.length > 0) { - selectItem(filteredItems[selectedModelIdx], selectedModelIdx); + if (e.code === 'Enter') { + if (showPullModelButton && selectedModelIdx === filteredItems.length) { + pullModelHandler(); + } else if (filteredItems[selectedModelIdx]) { + selectItem(filteredItems[selectedModelIdx], selectedModelIdx); + } return; // dont need to scroll on selection } else if (e.code === 'ArrowDown') { e.stopPropagation(); - selectedModelIdx = Math.min(selectedModelIdx + 1, filteredItems.length - 1); + selectedModelIdx = Math.min( + selectedModelIdx + 1, + Math.max(filteredItems.length - 1 + (showPullModelButton ? 1 : 0), 0) + ); } else if (e.code === 'ArrowUp') { e.stopPropagation(); selectedModelIdx = Math.max(selectedModelIdx - 1, 0); @@ -932,7 +947,7 @@ {/if} - {#if !selectionOnly && !(searchValue.trim() in $MODEL_DOWNLOAD_POOL) && searchValue && ollamaVersion && $user?.role === 'admin'} + {#if showPullModelButton}