From 001da5f2053acfe91a9b2317ee8ba6466bb68dbb Mon Sep 17 00:00:00 2001 From: Aleksander Grygier Date: Tue, 29 Sep 2026 13:48:27 +0200 Subject: [PATCH] ui : fix badge guard for draft sidecars, keep parameter precision hasBadges now counts draft sidecar badges, so a sidecar-only model still renders. Billions keep one decimal for hub counts and stay bare for whole values. Avatar failures track the org instead of the instance, and the download progress bar no longer pulses while determinate. Assisted-by: pi:zai-org/GLM-5.3-Flash --- tools/ui/src/lib/components/app/models/ModelId.svelte | 1 + .../app/models/discover/DownloadProgressBar.svelte | 4 ++-- .../app/models/discover/ModelsDiscoverAvatar.svelte | 9 ++------- tools/ui/src/lib/utils/formatters.ts | 8 +++++--- 4 files changed, 10 insertions(+), 12 deletions(-) diff --git a/tools/ui/src/lib/components/app/models/ModelId.svelte b/tools/ui/src/lib/components/app/models/ModelId.svelte index d346cffa18..ba3a976aef 100644 --- a/tools/ui/src/lib/components/app/models/ModelId.svelte +++ b/tools/ui/src/lib/components/app/models/ModelId.svelte @@ -95,6 +95,7 @@ let hasBadges = $derived( parsed.sidecar || + uniqueDraftSidecars.length > 0 || (parsed.params && !hideParameters) || (parsed.quantization && !resolvedHideQuantization) || primaryAlias || diff --git a/tools/ui/src/lib/components/app/models/discover/DownloadProgressBar.svelte b/tools/ui/src/lib/components/app/models/discover/DownloadProgressBar.svelte index c3a89c0ba4..6f4973c12e 100644 --- a/tools/ui/src/lib/components/app/models/discover/DownloadProgressBar.svelte +++ b/tools/ui/src/lib/components/app/models/discover/DownloadProgressBar.svelte @@ -18,14 +18,14 @@ {#if overlay}
{:else}
diff --git a/tools/ui/src/lib/components/app/models/discover/ModelsDiscoverAvatar.svelte b/tools/ui/src/lib/components/app/models/discover/ModelsDiscoverAvatar.svelte index 8523f0685b..f78e745864 100644 --- a/tools/ui/src/lib/components/app/models/discover/ModelsDiscoverAvatar.svelte +++ b/tools/ui/src/lib/components/app/models/discover/ModelsDiscoverAvatar.svelte @@ -29,11 +29,8 @@ size = 'h-9 w-9' }: Props = $props(); - let avatarError = $state(false); - let quantError = $state(false); - - let orgAvatarFailed = $derived(avatarError || failedAvatarOrgs.has(org)); - let quantAvatarFailed = $derived(quantError || failedAvatarOrgs.has(quantOrg ?? '')); + let orgAvatarFailed = $derived(failedAvatarOrgs.has(org)); + let quantAvatarFailed = $derived(failedAvatarOrgs.has(quantOrg ?? '')); let invertAvatar = $derived(DARK_INVERT_AVATAR_ORGS.includes(org)); let invertQuant = $derived(DARK_INVERT_AVATAR_ORGS.includes(quantOrg ?? '')); @@ -76,7 +73,6 @@ loading="lazy" onerror={() => { failedAvatarOrgs.add(org); - avatarError = true; }} src={HuggingFaceService.getAvatarUrl(org)} /> @@ -104,7 +100,6 @@ loading="lazy" onerror={() => { failedAvatarOrgs.add(quantOrg ?? ''); - quantError = true; }} src={HuggingFaceService.getAvatarUrl(quantOrg)} /> diff --git a/tools/ui/src/lib/utils/formatters.ts b/tools/ui/src/lib/utils/formatters.ts index f9f6477dcb..03e6279846 100644 --- a/tools/ui/src/lib/utils/formatters.ts +++ b/tools/ui/src/lib/utils/formatters.ts @@ -28,8 +28,8 @@ export function formatFileSize(bytes: number | unknown): string { /** * Format parameter count to human-readable format (B, M, K) * - * Billions render as whole numbers (`176.94e9` -> `177B`): the decimals are - * noise at badge sizes and id-parsed counts are whole anyway (`Qwen3-8B`). + * Billions keep one decimal for hub counts (`15.2B`) and none for whole + * values (id-parsed counts are integers anyway, e.g. `8B`). * * @param params - Parameter count * @returns Human-readable parameter count @@ -38,7 +38,9 @@ export function formatParameters(params: number | unknown): string { if (typeof params !== 'number') return 'Unknown'; if (params >= 1e9) { - return `${Math.round(params / 1e9)}B`; + const billions = params / 1e9; + + return `${Number.isInteger(billions) ? billions : billions.toFixed(1)}B`; } if (params >= 1e6) {