From 9964dcdb995d0bc055a3677857fea6f962ef1930 Mon Sep 17 00:00:00 2001 From: Bohdan Triapitsyn Date: Sun, 3 May 2026 21:38:45 +0300 Subject: [PATCH] fix(cli): tolerate legacy daemon flag (#1097) --- packages/electron/ssh-manager.mjs | 2 +- packages/web/bin/cli.js | 3 ++- packages/web/bin/cli.test.js | 8 ++++++++ 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/packages/electron/ssh-manager.mjs b/packages/electron/ssh-manager.mjs index e21ab19a..7a8f801d 100644 --- a/packages/electron/ssh-manager.mjs +++ b/packages/electron/ssh-manager.mjs @@ -891,7 +891,7 @@ export class ElectronSshManager { if (secret) { envPrefix += ` OPENCHAMBER_UI_PASSWORD=${shellQuote(secret)}`; } - const output = await runRemoteCommand(parsed, controlPath, `${envPrefix} openchamber serve --daemon --hostname 127.0.0.1 --port ${desiredPort}`); + const output = await runRemoteCommand(parsed, controlPath, `${envPrefix} openchamber serve --hostname 127.0.0.1 --port ${desiredPort}`); const port = output.split(/\s+/).map((token) => Number.parseInt(token, 10)).find((value) => Number.isFinite(value)); return port || desiredPort; } diff --git a/packages/web/bin/cli.js b/packages/web/bin/cli.js index b50e2ed0..82517971 100755 --- a/packages/web/bin/cli.js +++ b/packages/web/bin/cli.js @@ -799,7 +799,8 @@ function parseArgs(argv = process.argv.slice(2)) { break; case 'daemon': case 'd': - removedFlagErrors.push('`--daemon` was removed. OpenChamber now always runs in daemon mode.'); + // Legacy no-op: daemon mode is already the default, but older clients + // may still pass this when starting a remote server. break; case 'try-cf-tunnel': removedFlagErrors.push('`--try-cf-tunnel` was removed. Use: openchamber tunnel start --provider cloudflare --mode quick'); diff --git a/packages/web/bin/cli.test.js b/packages/web/bin/cli.test.js index d45cacfa..78c4fb7a 100644 --- a/packages/web/bin/cli.test.js +++ b/packages/web/bin/cli.test.js @@ -3,6 +3,14 @@ import path from 'path'; import { pathToFileURL } from 'url'; import { isModuleCliExecution, normalizeCliEntryPath } from './cli-entry.js'; +import { parseArgs } from './cli.js'; + +describe('cli args', () => { + it('accepts legacy daemon flags as no-ops', () => { + expect(parseArgs(['serve', '--daemon']).removedFlagErrors).toEqual([]); + expect(parseArgs(['serve', '-d']).removedFlagErrors).toEqual([]); + }); +}); describe('cli entry detection', () => { const modulePath = '/tmp/openchamber/bin/cli.js';