From a41240ce6214dc80fbf411280ecc17c29c3818eb Mon Sep 17 00:00:00 2001 From: Kwan Perry <144704328+HeroOfOdyssey@users.noreply.github.com> Date: Sun, 13 Sep 2026 02:25:41 +0000 Subject: [PATCH] fix(cli): reject builds without web client --- apps/server/scripts/cli.ts | 3 ++- apps/server/scripts/cliErrors.ts | 11 +++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/apps/server/scripts/cli.ts b/apps/server/scripts/cli.ts index 1f9fd55be67e..21432a0ca6c8 100644 --- a/apps/server/scripts/cli.ts +++ b/apps/server/scripts/cli.ts @@ -27,6 +27,7 @@ import { ServerCliDevelopmentIconTargetMissingError, ServerCliPublishIconSourceMissingError, ServerCliPublishIconTargetMissingError, + ServerCliWebBuildMissingError, } from "./cliErrors.ts"; interface PackageJson { @@ -170,7 +171,7 @@ const buildCmd = Command.make( yield* applyDevelopmentIconOverrides(repoRoot, serverDir); yield* Effect.log("[cli] Bundled web app into dist/client"); } else { - yield* Effect.logWarning("[cli] Web dist not found — skipping client bundle."); + return yield* new ServerCliWebBuildMissingError({ webDistPath: webDist }); } }), ).pipe(Command.withDescription("Build the server package (tsdown + bundle web client).")); diff --git a/apps/server/scripts/cliErrors.ts b/apps/server/scripts/cliErrors.ts index d384c745f293..ab963320e0b1 100644 --- a/apps/server/scripts/cliErrors.ts +++ b/apps/server/scripts/cliErrors.ts @@ -58,6 +58,17 @@ export class ServerCliDevelopmentIconTargetMissingError extends Schema.TaggedErr } } +export class ServerCliWebBuildMissingError extends Schema.TaggedErrorClass()( + "ServerCliWebBuildMissingError", + { + webDistPath: Schema.String, + }, +) { + override get message(): string { + return `Missing web client build output: ${this.webDistPath}. Build @backplane/web before the CLI.`; + } +} + export class ServerCliBuildAssetMissingError extends Schema.TaggedErrorClass()( "ServerCliBuildAssetMissingError", {