From 49b98e02716b640b608ee009086be13817a55ee4 Mon Sep 17 00:00:00 2001 From: archipelago Date: Thu, 23 Apr 2026 06:58:12 -0400 Subject: [PATCH] fix(rpc): empty icon in transient install entry to avoid broken-image flicker create_installing_entry hardcoded /assets/img/app-icons/.png for every new install. About half the app icons ship as .svg or .webp (lnd.svg, vaultwarden.webp, bitcoin-knots.webp, mempool.webp), so the browser 404s on the wrong extension and renders the default broken-image glyph for the 10-30s window before the scanner refreshes with real manifest data. Send empty icon. The frontend's icon computed in AppCard.vue falls through to curatedMap which has correct extensions for bundled apps, and handleImageError still guards any remaining misses with a placeholder SVG. --- core/archipelago/src/api/rpc/package/progress.rs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/core/archipelago/src/api/rpc/package/progress.rs b/core/archipelago/src/api/rpc/package/progress.rs index 904d01d6..96d3a72c 100644 --- a/core/archipelago/src/api/rpc/package/progress.rs +++ b/core/archipelago/src/api/rpc/package/progress.rs @@ -69,7 +69,11 @@ fn create_installing_entry(package_id: &str) -> PackageDataEntry { static_files: StaticFiles { license: String::new(), instructions: String::new(), - icon: format!("/assets/img/app-icons/{}.png", package_id), + // Empty icon: hardcoding `.png` is wrong for apps that use + // `.svg` or `.webp` assets and produces a broken-image flicker. + // The frontend's `icon` computed falls through to the curated + // map which has correct extensions for known apps. + icon: String::new(), }, manifest: Manifest { id: package_id.to_string(),