From b74bfb4c922e6faaec870b5bdf8e6a547b3d993e Mon Sep 17 00:00:00 2001 From: Lucas Date: Thu, 5 Feb 2026 16:09:06 +0800 Subject: [PATCH 1/2] Throw friendly error when listing install fails --- packages/host/app/commands/listing-install.ts | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/packages/host/app/commands/listing-install.ts b/packages/host/app/commands/listing-install.ts index 9e7c7fb0c3f..b5740e60294 100644 --- a/packages/host/app/commands/listing-install.ts +++ b/packages/host/app/commands/listing-install.ts @@ -150,7 +150,17 @@ export default class ListingInstallCommand extends HostBaseCommand< new URL(realmUrl), ); - let atomicResults: AtomicOperationResult[] = results['atomic:results']; + let atomicResults: AtomicOperationResult[] | undefined = + results['atomic:results']; + if (!Array.isArray(atomicResults)) { + let detail = (results as { errors?: Array<{ detail?: string }> }) + .errors?.[0]?.detail; + throw new Error( + detail + ? `Please make sure your listing has all required specs linked. ${detail}` + : 'Please make sure your listing has all required specs linked', + ); + } let writtenFiles = atomicResults.map((r) => r.data.id); log.debug('=== Final Results ==='); log.debug(JSON.stringify(writtenFiles, null, 2)); From cf074d74ed85bd7816788ca42ac59c2e8e2cd98e Mon Sep 17 00:00:00 2001 From: Lucas Date: Fri, 6 Feb 2026 12:16:03 +0800 Subject: [PATCH 2/2] update err message --- packages/host/app/commands/listing-install.ts | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/packages/host/app/commands/listing-install.ts b/packages/host/app/commands/listing-install.ts index b5740e60294..d6db2fec678 100644 --- a/packages/host/app/commands/listing-install.ts +++ b/packages/host/app/commands/listing-install.ts @@ -155,11 +155,12 @@ export default class ListingInstallCommand extends HostBaseCommand< if (!Array.isArray(atomicResults)) { let detail = (results as { errors?: Array<{ detail?: string }> }) .errors?.[0]?.detail; - throw new Error( - detail - ? `Please make sure your listing has all required specs linked. ${detail}` - : 'Please make sure your listing has all required specs linked', - ); + if (detail?.includes('filter refers to a nonexistent type')) { + throw new Error( + 'Please click "Update Specs" on the listing and make sure all specs are linked.', + ); + } + throw new Error(detail); } let writtenFiles = atomicResults.map((r) => r.data.id); log.debug('=== Final Results ===');