From 8a2680d474103c204226ce027b7544fe5656af60 Mon Sep 17 00:00:00 2001 From: Aleksander Grygier Date: Wed, 23 Sep 2026 10:39:23 +0200 Subject: [PATCH] ui : group families by name and show their org avatar Assisted-by: pi:llama.cpp/DeepSeek-V4.1-Flash --- .../models/ModelsManager/ModelsManagerModelsTable.svelte | 4 +++- .../src/lib/components/app/models/ModelsManager/utils.ts | 9 +++++---- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/tools/ui/src/lib/components/app/models/ModelsManager/ModelsManagerModelsTable.svelte b/tools/ui/src/lib/components/app/models/ModelsManager/ModelsManagerModelsTable.svelte index ff185aa9ce..243a2fe85b 100644 --- a/tools/ui/src/lib/components/app/models/ModelsManager/ModelsManagerModelsTable.svelte +++ b/tools/ui/src/lib/components/app/models/ModelsManager/ModelsManagerModelsTable.svelte @@ -436,7 +436,9 @@ {:else} - + + + {family.label} {countLabel} diff --git a/tools/ui/src/lib/components/app/models/ModelsManager/utils.ts b/tools/ui/src/lib/components/app/models/ModelsManager/utils.ts index a045623722..22f6f95018 100644 --- a/tools/ui/src/lib/components/app/models/ModelsManager/utils.ts +++ b/tools/ui/src/lib/components/app/models/ModelsManager/utils.ts @@ -198,14 +198,15 @@ export function groupModelQuants(models: ModelOption[]): ModelQuantGroup[] { } /** - * Family a repo belongs to, from its name: `Qwen3.8-27B` and `Qwen3.8-Flash-Next` - * both read as `Qwen3.8`, and a name without a version keeps its first segment. + * Family a repo belongs to, from its name. The version is dropped, so `Qwen3.5`, + * `Qwen3.8-27B` and `Qwen3.8-Flash-Next` all read as `Qwen`. A name that does not + * start with letters keeps its first segment. */ export function modelFamilyKey(repo: string): string { const name = repo.split('/').pop() ?? repo; - const versioned = name.match(/^[A-Za-z]+\d+(?:\.\d+)?/); + const letters = name.match(/^[A-Za-z]+/); - return versioned ? versioned[0] : (name.split(/[-_.]/)[0] ?? name); + return letters ? letters[0] : (name.split(/[-_.]/)[0] ?? name); } /** One family of the table, the repos it covers. */