From 9be754cdbfe40bcd84a9eab9dc072f2b15e6a50b Mon Sep 17 00:00:00 2001 From: Mohamed Boudra Date: Sun, 22 Mar 2026 18:52:01 +0700 Subject: [PATCH] fix(desktop): filter --no-sandbox from CLI arg parsing on Linux The Linux wrapper injects --no-sandbox for Electron sandboxing, but the CLI parser was treating it as an unknown Paseo option. Filter it out alongside the existing macOS -psn_ prefix. --- .../daemon/node-entrypoint-launcher.test.ts | 20 +++++++++++++++++++ .../src/daemon/node-entrypoint-launcher.ts | 4 ++-- 2 files changed, 22 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 0336ec38b..a85511cc2 100644 --- a/packages/desktop/src/daemon/node-entrypoint-launcher.test.ts +++ b/packages/desktop/src/daemon/node-entrypoint-launcher.test.ts @@ -32,6 +32,26 @@ describe("node-entrypoint-launcher", () => { ).toBeNull(); }); + it("ignores --no-sandbox injected by Linux wrapper", () => { + expect( + parseCliPassthroughArgsFromArgv({ + argv: ["/usr/bin/Paseo", "--no-sandbox", "status"], + isDefaultApp: false, + forceCli: false, + }), + ).toEqual(["status"]); + }); + + it("returns null when only --no-sandbox is present", () => { + expect( + parseCliPassthroughArgsFromArgv({ + argv: ["/usr/bin/Paseo", "--no-sandbox"], + isDefaultApp: false, + forceCli: false, + }), + ).toBeNull(); + }); + it("preserves CLI flags for direct app invocations", () => { expect( parseCliPassthroughArgsFromArgv({ diff --git a/packages/desktop/src/daemon/node-entrypoint-launcher.ts b/packages/desktop/src/daemon/node-entrypoint-launcher.ts index 27750740a..4b54cf7d8 100644 --- a/packages/desktop/src/daemon/node-entrypoint-launcher.ts +++ b/packages/desktop/src/daemon/node-entrypoint-launcher.ts @@ -1,4 +1,4 @@ -const IGNORED_GUI_LAUNCH_ARG_PREFIX = "-psn_"; +const IGNORED_ARG_PREFIXES = ["-psn_", "--no-sandbox"]; export const DESKTOP_CLI_ENV = "PASEO_DESKTOP_CLI"; @@ -44,7 +44,7 @@ export function parseCliPassthroughArgsFromArgv( const startIndex = input.isDefaultApp ? 2 : 1; const effective = input.argv .slice(startIndex) - .filter((arg) => !arg.startsWith(IGNORED_GUI_LAUNCH_ARG_PREFIX)); + .filter((arg) => !IGNORED_ARG_PREFIXES.some((p) => arg.startsWith(p))); if (input.forceCli) { return effective;