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) {