From 02fc3546866f34210ea9fab8162ca3e37d682fd1 Mon Sep 17 00:00:00 2001 From: Mohamed Boudra Date: Wed, 22 Apr 2026 15:42:36 +0700 Subject: [PATCH] Gate desktop daemon dev providers in production --- .../daemon/node-entrypoint-launcher.test.ts | 21 +++++++++++++++++++ .../src/daemon/node-entrypoint-launcher.ts | 8 +++++-- 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/packages/desktop/src/daemon/node-entrypoint-launcher.test.ts b/packages/desktop/src/daemon/node-entrypoint-launcher.test.ts index 93e3fb02f..7c34a1f4e 100644 --- a/packages/desktop/src/daemon/node-entrypoint-launcher.test.ts +++ b/packages/desktop/src/daemon/node-entrypoint-launcher.test.ts @@ -109,6 +109,7 @@ describe("node-entrypoint-launcher", () => { env: { PATH: "/usr/bin", ELECTRON_RUN_AS_NODE: "1", + NODE_ENV: "production", }, }); }); @@ -134,6 +135,25 @@ describe("node-entrypoint-launcher", () => { }); }); + it("forces packaged launches to production even when NODE_ENV is inherited as development", () => { + expect( + createNodeEntrypointInvocation({ + execPath: "/Applications/Paseo.app/Contents/MacOS/Paseo", + isPackaged: true, + packagedRunnerPath: + "/Applications/Paseo.app/Contents/Resources/app.asar/dist/daemon/node-entrypoint-runner.js", + entrypoint: CLI_ENTRYPOINT, + argvMode: "node-script", + args: [], + baseEnv: { PATH: "/usr/bin", NODE_ENV: "development" }, + }).env, + ).toMatchObject({ + PATH: "/usr/bin", + ELECTRON_RUN_AS_NODE: "1", + NODE_ENV: "production", + }); + }); + it("keeps node-style argv for packaged script entrypoints", () => { expect( createNodeEntrypointInvocation({ @@ -158,6 +178,7 @@ describe("node-entrypoint-launcher", () => { env: { PATH: "/usr/bin", ELECTRON_RUN_AS_NODE: "1", + NODE_ENV: "production", }, }); }); diff --git a/packages/desktop/src/daemon/node-entrypoint-launcher.ts b/packages/desktop/src/daemon/node-entrypoint-launcher.ts index b2626efcc..06975f418 100644 --- a/packages/desktop/src/daemon/node-entrypoint-launcher.ts +++ b/packages/desktop/src/daemon/node-entrypoint-launcher.ts @@ -31,10 +31,14 @@ type ParseCliPassthroughArgsFromArgvInput = { forceCli: boolean; }; -export function createElectronNodeEnv(baseEnv: NodeJS.ProcessEnv): NodeJS.ProcessEnv { +export function createElectronNodeEnv( + baseEnv: NodeJS.ProcessEnv, + options?: { isPackaged?: boolean }, +): NodeJS.ProcessEnv { return { ...baseEnv, ELECTRON_RUN_AS_NODE: "1", + ...(options?.isPackaged === true ? { NODE_ENV: "production" } : {}), }; } @@ -61,7 +65,7 @@ export function parseCliPassthroughArgsFromArgv( export function createNodeEntrypointInvocation( input: CreateNodeEntrypointInvocationInput, ): NodeEntrypointInvocation { - const env = createElectronNodeEnv(input.baseEnv); + const env = createElectronNodeEnv(input.baseEnv, { isPackaged: input.isPackaged }); if (input.isPackaged) { if (!input.packagedRunnerPath) {