From cfbec0b757b4c8bef01a09f2375a062e63548b7f Mon Sep 17 00:00:00 2001 From: Andre Padez Date: Wed, 19 Aug 2026 06:29:34 +0100 Subject: [PATCH] plugins: a splash is part of a plugin, like its icon MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit assets/splash.png is discovered by presence, published by the same copy that already took the whole assets directory, and carried on DiscoveredPlugin beside icon. The platform draws no splash — a plugin has no launch. It is carried because the plugin repository is where a product's artwork lives now, and the phone app that fronts the same product needs somewhere to read it from that is not a designer's folder. The pair is the point: the icon is a reduction of the splash's world, and keeping them together is what stops them drifting. Publishing no longer gates on the icon alone, which left a plugin shipping only a splash serving nothing. Co-Authored-By: Claude Opus 5 --- src/servers/app-store/assets.ts | 3 +++ src/servers/plugins/discover.ts | 3 +++ src/servers/plugins/install.ts | 4 +++- src/servers/plugins/manifest.ts | 12 ++++++++++++ src/servers/plugins/public-paths.test.ts | 1 + 5 files changed, 22 insertions(+), 1 deletion(-) diff --git a/src/servers/app-store/assets.ts b/src/servers/app-store/assets.ts index 1839fd58..4ef1a281 100644 --- a/src/servers/app-store/assets.ts +++ b/src/servers/app-store/assets.ts @@ -32,6 +32,9 @@ export const assetPublicDir = (sidecarId: string): string => join(process.cwd(), /** The URL a manifest should use for a shipped icon. */ export const iconUrl = (sidecarId: string): string => `/plugins/${sidecarId}/icon.png`; +/** The URL for a shipped splash. Published by the same copy — `publishAssets` takes the whole dir. */ +export const splashUrl = (sidecarId: string): string => `/plugins/${sidecarId}/splash.png`; + const exists = async (path: string): Promise => { try { await stat(path); diff --git a/src/servers/plugins/discover.ts b/src/servers/plugins/discover.ts index fbdee19c..2ca3ad92 100644 --- a/src/servers/plugins/discover.ts +++ b/src/servers/plugins/discover.ts @@ -106,6 +106,9 @@ export async function loadPlugin(dir: string, appName: string): Promise_`. */ diff --git a/src/servers/plugins/public-paths.test.ts b/src/servers/plugins/public-paths.test.ts index 9ac0a57a..437f589d 100644 --- a/src/servers/plugins/public-paths.test.ts +++ b/src/servers/plugins/public-paths.test.ts @@ -30,6 +30,7 @@ const plugin = (appName: string, unauthenticatedPaths?: string[], publisher = 'o ...(unauthenticatedPaths ? { unauthenticatedPaths } : {}), }, icon: null, + splash: null, api: null, schema: null, sidecar: null,