diff --git a/tools/server/webui/src/lib/components/app/dialogs/DialogModelInformation.svelte b/tools/server/webui/src/lib/components/app/dialogs/DialogModelInformation.svelte index eac83f234d..3b9b9864cc 100644 --- a/tools/server/webui/src/lib/components/app/dialogs/DialogModelInformation.svelte +++ b/tools/server/webui/src/lib/components/app/dialogs/DialogModelInformation.svelte @@ -2,32 +2,41 @@ import * as Dialog from '$lib/components/ui/dialog'; import * as Table from '$lib/components/ui/table'; import { BadgeModality, ActionIconCopyToClipboard } from '$lib/components/app'; - import { serverStore } from '$lib/stores/server.svelte'; import { modelsStore, modelOptions, modelsLoading } from '$lib/stores/models.svelte'; import { formatFileSize, formatParameters, formatNumber } from '$lib/utils'; interface Props { open?: boolean; onOpenChange?: (open: boolean) => void; + modelId?: string | null; // Neue Prop für das gewählte Modell } - let { open = $bindable(), onOpenChange }: Props = $props(); + let { open = $bindable(), onOpenChange, modelId = null }: Props = $props(); - let serverProps = $derived(serverStore.props); - let modelName = $derived(modelsStore.singleModelName); let models = $derived(modelOptions()); let isLoadingModels = $derived(modelsLoading()); - // Get the first model for single-model mode display - let firstModel = $derived(models[0] ?? null); - - // Get modalities from modelStore using the model ID from the first model - let modalities = $derived.by(() => { - if (!firstModel?.id) return []; - return modelsStore.getModelModalitiesArray(firstModel.id); + // Finde das spezifische Modell anhand der ID oder nimm das erste als Fallback + let selectedModel = $derived.by(() => { + if (modelId) { + return models.find(m => m.id === modelId) || models[0]; + } + return models[0] ?? null; + }); + + // Hol die spezifischen Server-Props für dieses Modell aus dem modelStore + let serverProps = $derived.by(() => { + if (!selectedModel) return null; + return modelsStore.getModelProps(selectedModel.model); + }); + + let modelName = $derived(selectedModel?.model ?? ''); + + let modalities = $derived.by(() => { + if (!selectedModel?.id) return []; + return modelsStore.getModelModalitiesArray(selectedModel.id); }); - // Ensure models are fetched when dialog opens $effect(() => { if (open && models.length === 0) { modelsStore.fetch(); @@ -56,8 +65,8 @@
Loading model information...
- {:else if firstModel} - {@const modelMeta = firstModel.meta} + {:else if selectedModel} + {@const modelMeta = selectedModel.meta} {#if serverProps} 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 a40501e2cc..9f57f444d5 100644 --- a/tools/server/webui/src/lib/components/app/models/ModelsSelector.svelte +++ b/tools/server/webui/src/lib/components/app/models/ModelsSelector.svelte @@ -53,6 +53,7 @@ let activeId = $derived(selectedModelId()); let isRouter = $derived(isRouterMode()); let serverModel = $derived(singleModelName()); + let infoModelId = $state(null); let isHighlightedCurrentModelActive = $derived.by(() => { if (!isRouter || !currentModel) return false; @@ -95,7 +96,6 @@ items: { option: ModelOption; flatIndex: number }[]; }[] = []; - // Loaded models group (top) const loadedItems: { option: ModelOption; flatIndex: number }[] = []; for (let i = 0; i < filteredOptions.length; i++) { if (modelsStore.isModelLoaded(filteredOptions[i].model)) { @@ -112,7 +112,6 @@ }); } - // Favourites group const loadedModelIds = new Set(loadedItems.map((item) => item.option.model)); const favItems: { option: ModelOption; flatIndex: number }[] = []; for (let i = 0; i < filteredOptions.length; i++) { @@ -130,7 +129,6 @@ }); } - // Org groups (excluding loaded and favourites) const orgGroups = new SvelteMap(); for (let i = 0; i < filteredOptions.length; i++) { const option = filteredOptions[i]; @@ -399,7 +397,6 @@ >
{#if !isCurrentModelInCache && currentModel} -
-{#if showModelDialog && !isRouter} - +{#if showModelDialog} + {/if} diff --git a/tools/server/webui/src/lib/components/app/models/ModelsSelectorOption.svelte b/tools/server/webui/src/lib/components/app/models/ModelsSelectorOption.svelte index d4239fb1a1..c0a992ba77 100644 --- a/tools/server/webui/src/lib/components/app/models/ModelsSelectorOption.svelte +++ b/tools/server/webui/src/lib/components/app/models/ModelsSelectorOption.svelte @@ -1,5 +1,5 @@