diff --git a/cli/src/commands/dev/dev.ts b/cli/src/commands/dev/dev.ts index 7fa588f971..0ee46410f2 100644 --- a/cli/src/commands/dev/dev.ts +++ b/cli/src/commands/dev/dev.ts @@ -108,6 +108,7 @@ function restorePathScripts(flowValue: any) { export interface DevOpts { proxyPort?: number; path?: string; + noBrowser?: boolean; } export async function dev(opts: GlobalOptions & SyncOptions & DevOpts) { @@ -146,7 +147,6 @@ export async function dev(opts: GlobalOptions & SyncOptions & DevOpts) { } else { opts.path = relPath; } - opts.proxyPort = opts.proxyPort ?? 3100; log.info(`Detected flow folder, path: ${opts.path}`); process.chdir(workspaceRoot); } @@ -515,6 +515,22 @@ export async function dev(opts: GlobalOptions & SyncOptions & DevOpts) { }); } + function maybeOpenBrowser(url: string) { + if (opts.noBrowser) return; + try { + open.default(url).catch((error) => { + console.error( + `Failed to open browser, please navigate to ${url}, error: ${error}` + ); + }); + console.log(`Opened browser at ${url}`); + } catch (error) { + console.error( + `Failed to open browser, please navigate to ${url}, ${error}` + ); + } + } + // --- Reverse proxy (when --proxy-port is set) --- async function startProxyServer(proxyPort: number) { @@ -629,6 +645,7 @@ export async function dev(opts: GlobalOptions & SyncOptions & DevOpts) { return new Promise((resolve) => { proxyServer.listen(proxyPort, () => { console.log(`Dev proxy listening on http://localhost:${proxyPort}`); + maybeOpenBrowser(`http://localhost:${proxyPort}/`); resolve(); }); }); @@ -651,18 +668,7 @@ export async function dev(opts: GlobalOptions & SyncOptions & DevOpts) { (opts.path ? `&path=${opts.path}` : ""); console.log(`Go to ${url}`); - try { - open.default(url).catch((error) => { - console.error( - `Failed to open browser, please navigate to ${url}, error: ${error}` - ); - }); - console.log("Opened browser for you"); - } catch (error) { - console.error( - `Failed to open browser, please navigate to ${url}, ${error}` - ); - } + maybeOpenBrowser(url); console.log( "Dev server will automatically point to the last script edited locally" @@ -702,6 +708,10 @@ const command = new Command() "--path ", "Watch a specific windmill path (e.g., u/admin/my_script or f/my_flow)" ) + .option( + "--no-browser", + "Do not open the browser automatically" + ) .action(dev as any); export default command; diff --git a/cli/src/commands/flow/flow.ts b/cli/src/commands/flow/flow.ts index 46bc7a2041..3b320d5987 100644 --- a/cli/src/commands/flow/flow.ts +++ b/cli/src/commands/flow/flow.ts @@ -744,7 +744,7 @@ export async function bootstrap( configurations: [{ name: "windmill", runtimeExecutable: "bash", - runtimeArgs: ["-c", "wmill dev --proxy-port ${PORT:-4000}"], + runtimeArgs: ["-c", "wmill dev --proxy-port ${PORT:-4000} --no-browser"], port: 4000, autoPort: true, }], diff --git a/cli/src/commands/init/init.ts b/cli/src/commands/init/init.ts index b10d5e36eb..3647604d29 100644 --- a/cli/src/commands/init/init.ts +++ b/cli/src/commands/init/init.ts @@ -282,7 +282,7 @@ async function initAction(opts: InitOptions) { configurations: [{ name: "windmill", runtimeExecutable: "bash", - runtimeArgs: ["-c", "wmill dev --proxy-port ${PORT:-4000}"], + runtimeArgs: ["-c", "wmill dev --proxy-port ${PORT:-4000} --no-browser"], port: 4000, autoPort: true, }], diff --git a/cli/src/guidance/skills.ts b/cli/src/guidance/skills.ts index d955db93eb..67f1f20438 100644 --- a/cli/src/guidance/skills.ts +++ b/cli/src/guidance/skills.ts @@ -5335,6 +5335,7 @@ Launch a dev server that watches for local file changes and auto-pushes them to - \`--includes \` - Filter paths givena glob pattern or path - \`--proxy-port \` - Port for a localhost reverse proxy to the remote Windmill server - \`--path \` - Watch a specific windmill path (e.g., u/admin/my_script or f/my_flow) +- \`--no-browser\` - Do not open the browser automatically ### docs diff --git a/system_prompts/auto-generated/cli/cli-commands.md b/system_prompts/auto-generated/cli/cli-commands.md index cb2bf51fea..15a5ca7a92 100644 --- a/system_prompts/auto-generated/cli/cli-commands.md +++ b/system_prompts/auto-generated/cli/cli-commands.md @@ -77,6 +77,7 @@ Launch a dev server that watches for local file changes and auto-pushes them to - `--includes ` - Filter paths givena glob pattern or path - `--proxy-port ` - Port for a localhost reverse proxy to the remote Windmill server - `--path ` - Watch a specific windmill path (e.g., u/admin/my_script or f/my_flow) +- `--no-browser` - Do not open the browser automatically ### docs diff --git a/system_prompts/auto-generated/prompts.ts b/system_prompts/auto-generated/prompts.ts index b2f062d0d7..3765557abd 100644 --- a/system_prompts/auto-generated/prompts.ts +++ b/system_prompts/auto-generated/prompts.ts @@ -1836,6 +1836,7 @@ Launch a dev server that watches for local file changes and auto-pushes them to - \`--includes \` - Filter paths givena glob pattern or path - \`--proxy-port \` - Port for a localhost reverse proxy to the remote Windmill server - \`--path \` - Watch a specific windmill path (e.g., u/admin/my_script or f/my_flow) +- \`--no-browser\` - Do not open the browser automatically ### docs diff --git a/system_prompts/auto-generated/skills/cli-commands/SKILL.md b/system_prompts/auto-generated/skills/cli-commands/SKILL.md index 1caaba8f66..16e497fa29 100644 --- a/system_prompts/auto-generated/skills/cli-commands/SKILL.md +++ b/system_prompts/auto-generated/skills/cli-commands/SKILL.md @@ -82,6 +82,7 @@ Launch a dev server that watches for local file changes and auto-pushes them to - `--includes ` - Filter paths givena glob pattern or path - `--proxy-port ` - Port for a localhost reverse proxy to the remote Windmill server - `--path ` - Watch a specific windmill path (e.g., u/admin/my_script or f/my_flow) +- `--no-browser` - Do not open the browser automatically ### docs