From 5b59ee04e778d48937ac2b3b754fe90968f2301c Mon Sep 17 00:00:00 2001 From: "Thomas G. Lopes" <26071571+TGlide@users.noreply.github.com> Date: Wed, 18 Jun 2025 11:40:14 +0100 Subject: [PATCH] yay --- src/routes/chat/model-picker.svelte | 28 +++++++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/src/routes/chat/model-picker.svelte b/src/routes/chat/model-picker.svelte index b540b50..1a2e05a 100644 --- a/src/routes/chat/model-picker.svelte +++ b/src/routes/chat/model-picker.svelte @@ -7,7 +7,7 @@ import { Command } from 'bits-ui'; import ChevronDownIcon from '~icons/lucide/chevron-down'; import SearchIcon from '~icons/lucide/search'; - // Company icons from simple-icons + import EyeIcon from '~icons/lucide/eye'; import GoogleIcon from '~icons/simple-icons/google'; import MetaIcon from '~icons/simple-icons/meta'; import MicrosoftIcon from '~icons/simple-icons/microsoft'; @@ -16,7 +16,6 @@ import BrainIcon from '~icons/lucide/brain'; import CpuIcon from '~icons/lucide/cpu'; import ZapIcon from '~icons/lucide/zap'; - // Model-specific icons import Cohere from '$lib/components/icons/cohere.svelte'; import Deepseek from '$lib/components/icons/deepseek.svelte'; import { Popover } from 'melt/builders'; @@ -25,6 +24,10 @@ import LogosMistralAiIcon from '~icons/logos/mistral-ai-icon'; import MaterialIconThemeGeminiAi from '~icons/material-icon-theme/gemini-ai'; import { capitalize } from '$lib/utils/strings'; + import { supportsImages } from '$lib/utils/model-capabilities'; + import { models as modelsState } from '$lib/state/models.svelte'; + import { Provider } from '$lib/types'; + import Tooltip from '$lib/components/ui/tooltip.svelte'; type Props = { class?: string; @@ -38,6 +41,8 @@ const enabledArr = $derived(Object.values(enabledModelsQuery.data ?? {})); + modelsState.init(); + // Company icon mapping const companyIcons: Record = { openai: OpenaiIcon, @@ -252,7 +257,7 @@ onSelect={() => selectModel(model.model_id)} class={cn( 'border-border flex h-40 w-32 flex-col items-center justify-center rounded-lg border p-2', - 'select-none', + 'relative select-none', 'data-selected:bg-accent/50 data-selected:text-accent-foreground', isSelected && 'border-reflect border-none', 'scroll-m-10' @@ -268,6 +273,23 @@

{formatted.secondary}

+ + {@const openRouterModel = modelsState + .from(Provider.OpenRouter) + .find((m) => m.id === model.model_id)} + {#if openRouterModel && supportsImages(openRouterModel)} + + {#snippet trigger(tooltip)} +
+ +
+ {/snippet} + Supports image anaylsis +
+ {/if} {/each}