Skip to content

fix(engine): a render on Windows opens no console windows - #6613

Merged
miguel-heygen merged 19 commits into
mainfrom
osswin/windows-no-console-window
Oct 28, 2026
Merged

miguel-heygen merged 19 commits into
mainfrom
osswin/windows-no-console-window

Conversation

@miguel-heygen

@miguel-heygen miguel-heygen commented Oct 28, 2026 •

Copy link
Copy Markdown
Collaborator

On Windows, render and snapshot opened a visible console window for every Chrome process (28 for a two-worker render of the blank example, 8 for snapshot), as reported in #5653. Nothing in the CLI or engine spawned them: the engine loads the full puppeteer package, which the lockfile had at 25.8.0, and that release pins @puppeteer/browsers 3.2.1. 3.2.1 starts Chrome detached on every platform; on Windows a detached Chrome has no console, so Windows Terminal gives each Chrome process its own window. 3.2.2 stopped doing that on Windows.

What changed:

  • puppeteer in the engine and producer is now ~25.11.0 (the line the CLI's puppeteer-core is already on), so the lock holds one launcher, 3.2.2.
  • The CLI now sets windowsHide: true by default for every child process it or its dependencies start on Windows (docker, whisper, tts, media tools, workers), and the two launchers that must show a window (the user's browser, the desktop app) opt out with windowsHide: false. Three engine library spawns that lacked it now pass it.
  • A windows-latest job renders, runs check twice, snapshot, doctor and preview from a launcher with no console, and fails if any of them opens a visible window.

Measured on windows-latest, same commands, before and after: render 28 to 0 windows, snapshot 8 to 0; check, doctor and preview opened none either way.

fails without the fix: packages/engine/src/services/puppeteerLauncher.test.ts ("does not start Chrome detached on Windows") fails on the old lock; packages/cli/src/utils/hideChildConsoles.test.ts covers the default; the Windows window job fails on main with 28 windows.

Refs #5653.

@github-actions

github-actions Bot commented Oct 28, 2026 •

Copy link
Copy Markdown
Contributor

Edit accuracy: accurate 271 (base branch 271), smooth 131 of those

The gate passes.
Smoothness is reported in the artifact, not gated. A case fails only if it fails 2 of 3 runs.

Quarantined, measured but not gated (0)

Unstable (2)

  • seqplainkeys-none-pct-r0-root-z100: tracking 0.06, pressJump 0, drop 0, reload 0, render 0.03, renderKey -, undo false, teleport true / tracking 0.06, pressJump 0, drop 0, reload 0, render 0.03, renderKey -, undo true, teleport true / tracking 0.06, pressJump 0, drop 0, reload 0, render 0.03, renderKey -, undo true, teleport true
  • seqplainkeys-none-pct-r0-nested-z100: tracking 0.05, pressJump 0, drop 0, reload 0, render 0.02, renderKey -, undo false, teleport true / tracking 0.05, pressJump 0, drop 0, reload 0, render 0.02, renderKey -, undo true, teleport true / tracking 0.05, pressJump 0, drop 0, reload 0, render 0.02, renderKey -, undo true, teleport true

@miguel-heygen miguel-heygen changed the title ci(windows): probe that a render opens no visible window fix(engine): a render on Windows opens no console windows Oct 28, 2026

@heygengenesis heygengenesis Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Verdict: APPROVE · 0 blocker · 0 important · 0 nits · head 155fe9fb

The lock now holds a single @puppeteer/browsers 3.2.2, and its launch.js sets detached ??= platform !== 'win32' with windowsHide: true. The hideChildConsoles default leaves an explicit windowsHide: false alone (openBrowser, desktopApp), and the Chrome watchdog already set it.

Scope

Read the full diff. Ran hideChildConsoles.test.ts, openBrowser.test.ts and puppeteerLauncher.test.ts locally: all pass. CI attempt 1 failed only Producer: integration tests (lottie chunk-boundary test: page.goto Navigation timeout 60000 ms on the last chunk, after earlier chunks navigated in about 100 ms). Rerunning the failed jobs passed. Windows render verification, Windows window probe and regression are green. Not exercised: the open-package fallback (PowerShell Start, now hidden) actually showing the default browser on Windows, because the probe's preview run opens no browser.

— Genesis reviewer

@miguel-heygen
miguel-heygen added this pull request to the merge queue Oct 28, 2026
Merged via the queue into main with commit 6cf4b56 Oct 28, 2026
127 of 129 checks passed
@miguel-heygen
miguel-heygen deleted the osswin/windows-no-console-window branch October 28, 2026 08:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant