From 25282d37a7dfcedb34d535607b8bed26e7f95040 Mon Sep 17 00:00:00 2001 From: ethernet Date: Thu, 24 Sep 2026 15:50:51 -0400 Subject: [PATCH] fix(install.ps1): fast-forward without a diffstat Updating an old checkout ran `git merge --ff-only`, which prints a diffstat plus create/delete-mode summary. From v2026.7.1 to today that is ~27k lines, emitted in under a second. Hermes-Setup.exe forwards every stage line to its window as its own Tauri event; the burst overflows the UI thread's Windows posted-message queue (10k), emits fail with FailedToSendMessage, and afterwards clicking Launch can leave the installer on "Launching" without ever spawning Hermes.exe. This is why both Windows desktop-installer@latest E2E legs from v2026.7.1 timed out waiting for the app window after Launch, while the same routes from v2026.9.24 (small diff) passed. Reproduced on Windows arm64 with the production Hermes-Setup.exe and a protocol-faithful stage script: a 32k-line burst hangs Launch in most runs (with ~14k FailedToSendMessage warnings), 5k lines and no burst always launch. --no-stat reduces the merge to two lines. --- scripts/install.ps1 | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/scripts/install.ps1 b/scripts/install.ps1 index 01c43753b0..e45d6e1be6 100644 --- a/scripts/install.ps1 +++ b/scripts/install.ps1 @@ -773,7 +773,12 @@ function Stage-Repository { } Invoke-Logged "Checking out $Branch" { git -C $InstallDir checkout $Branch } if ($LASTEXITCODE) { Fail "git checkout failed" } - Invoke-Logged -MayFail "Fast-forwarding to origin/$Branch" { git -C $InstallDir merge --ff-only "origin/$Branch" } + # --no-stat: across a large gap (v2026.7.1 -> today is ~27k lines) the + # diffstat arrives as one burst. Hermes-Setup.exe forwards every line + # to its window as a separate event; the burst overflows the Windows + # posted-message queue (10k), events drop, and the installer's Launch + # button can then hang on "Launching" forever. + Invoke-Logged -MayFail "Fast-forwarding to origin/$Branch" { git -C $InstallDir merge --ff-only --no-stat "origin/$Branch" } if ($LASTEXITCODE) { # A release cut off the main line, a force-pushed remote, or the # user's own commits cannot fast-forward. Every stage below reads