From 460875345b416ac0d63e9c91ceda1bc28fcfd4ab Mon Sep 17 00:00:00 2001 From: Thomas Camlong Date: Wed, 27 May 2026 16:28:04 +0200 Subject: [PATCH] fix(onboarding): fallback to CDN icon URL when icons table is empty During fresh onboarding the icons DB table hasn't been populated by the cron job yet. Fall back to a dashboard-icons CDN URL guess based on the container image name so apps still get icons for popular services. --- packages/api/src/router/onboard/onboard-router.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/api/src/router/onboard/onboard-router.ts b/packages/api/src/router/onboard/onboard-router.ts index 306f42d94..380c9361c 100644 --- a/packages/api/src/router/onboard/onboard-router.ts +++ b/packages/api/src/router/onboard/onboard-router.ts @@ -185,10 +185,14 @@ export const onboardRouter = createTRPCRouter({ const discoveredIntegrations = emptyResult.integrations; const discoveredApps = emptyResult.apps; + const cdnIconUrl = (slug: string) => + `https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons@master/svg/${slug}.svg`; + for (const container of containers) { const imageName = extractContainerImageName(container.Image); const containerName = container.Names[0]?.split("/")[1] ?? "Unknown"; - const iconUrl = bestMatch(imageName, dbIcons, (icon) => icon.name)?.url ?? null; + const iconUrl = + bestMatch(imageName, dbIcons, (icon) => icon.name)?.url ?? cdnIconUrl(imageName.toLowerCase()); const { url: suggestedUrl, publishedPort } = buildSuggestedUrl(container.Ports, container.host);