Repository navigation
fix(desktop): pin the NSIS artifact name so the Windows updater stops 404ing (#10947) - #10958
Merged
diegosouzapw merged 1 commit intoAug 21, 2026
Conversation
… 404ing (cheaper-inference#10947) GitHub rewrites spaces in an uploaded asset name to '.', while electron-builder writes the same artifact name into latest.yml with '-'. NSIS carried the one default artifact name that contains spaces, so the two never agreed. On the published v3.8.49 release: latest.yml url: OmniRoute-Setup-3.8.49.exe uploaded asset OmniRoute.Setup.3.8.49.exe (identical size, 340441395) latest-linux.yml url: OmniRoute-3.8.49.AppImage -> asset matches verbatim latest-mac.yml url: OmniRoute-3.8.49.dmg -> asset matches verbatim Only Windows breaks: the AppImage, dmg and deb defaults are already hyphen/underscore separated. Pinned to the DOT form, not a hyphen one, so the published asset keeps the exact name it has today. The dashboard's manual 'Download EXE' link (HomePageClient.tsx) and the TROUBLESHOOTING guides all hardcode OmniRoute.Setup.<version>.exe, and a hyphen rename would have broken the very workaround the issue reports as still working.
Contributor
Author
|
CI ran the four new cases on Linux and all four pass (shard 3/4): The shard failures are the same base-red set documented on #10935 —
|
diegosouzapw
merged commit Aug 21, 2026
1c1e45c
into
cheaper-inference:release/v3.8.50
9 of 16 checks passed
muhamadgalihsaputra
pushed a commit
to niyatna/NiyatnaRoute
that referenced
this pull request
Sep 27, 2026
… 404ing (cheaper-inference#10947) (cheaper-inference#10958) Validado no worktree combinado: mesmos gates + teste focado verde. Root cause medido na release publicada v3.8.49 (nome de artefato NSIS com espaço vs. hífen no manifest). CI vermelho é o base-red já rastreado em cheaper-inference#9985.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #10947.
Problem
GitHub rewrites spaces in an uploaded asset name to
.. electron-builder writes that same artifact name intolatest.ymlwith-. NSIS carries the one default artifact name that contains spaces —${productName} Setup ${version}.${ext}— so the manifest and the published asset can never agree, and the in-app updater 404s on every release.Measured on the published v3.8.49 release, not inferred:
urllatest.ymlOmniRoute-Setup-3.8.49.exeOmniRoute.Setup.3.8.49.exe❌latest-linux.ymlOmniRoute-3.8.49.AppImageOmniRoute-3.8.49.AppImage✅latest-linux.ymlomniroute-desktop_3.8.49_amd64.debomniroute-desktop_3.8.49_amd64.deb✅latest-mac.ymlOmniRoute-3.8.49.dmgOmniRoute-3.8.49.dmg✅The Windows entry's
size: 340441395matches the uploadedOmniRoute.Setup.3.8.49.exebyte for byte — same file, two spellings. Linux and macOS are unaffected because the AppImage, deb and dmg defaults are already hyphen/underscore separated.That closes the chain end to end: electron-builder emits
OmniRoute Setup 3.8.49.exelocally → writes-into the manifest →softprops/action-gh-releaseuploads it → GitHub stores.→electron-updaterrequests the-name → 404.Change
One line — an explicit
nsis.artifactName.Pinned to the dot form on purpose, not a hyphen one. A hyphen name would also fix the updater, but it would rename the published asset, and three places hardcode the current name:
src/app/(dashboard)/dashboard/HomePageClient.tsx:151— the manual Download EXE (Windows) button, which is the workaround the issue reports as still workingdocs/guides/TROUBLESHOOTING.mdand itszh-TW/plmirrors — the sha512 verification snippetelectron/README.mdWith the dot form the asset name is byte-identical to what ships today; only
latest.ymlchanges, from the wrong name to the right one. Nothing that currently works breaks.docs/guides/ELECTRON_GUIDE.md(and itsplmirror) listed the local build output asOmniRoute Setup X.Y.Z.exe; that line is now correct for the new name.Verification, and its limit
Stated plainly: I could not run the release pipeline. Producing the artifact needs a full electron-builder Windows build plus a GitHub upload, so the fix is verified by the naming chain above rather than by a built installer. What makes it conclusive is that
latest.ymlin v3.8.49 already containsOmniRoute-Setup-3.8.49.exe— that string is the manifest writer's output for a space-containing name. Removing the spaces makes the file name and the manifest name the same string by construction, and the manifest value stops changing under GitHub's rewrite.What I did verify,
tests/unit/electron-artifact-name-10947.test.ts(new, 4 cases):nsis.artifactNameis set and contains no whitespace, with the reason in the assertion messageSetup— the release workflow picks the portable exe viacase "$file" in *Setup*) continue ;;, so renaming it away fromSetupwould silently publish the installer asOmniRoute.exeHomePageClient.tsxbuilds its download URL from — two independent sources of truth for the same string, which is exactly the invariant that was brokenReverting only
electron/package.json: 3 of 4 fail. All 4 pass with the change. The 4th passes either way — no other target has a whitespace name today, and it is there to keep it that way.Regression sweep: all 33 unit test files matching
electron— 282 tests. Comparing failing test names against the same run with the config reverted:(The 9 shared failures are pre-existing Windows/symlink environment ones —
materializeBundledSymlinks,resolveServerEntry,#7302 DATA_DIR/server.env.)typecheck:coreexit 0,eslintclean,check:changelog-integrityOK.The next release is the real test. If you would rather verify before merging, a
--winbuild alone is enough — the name appears inelectron/dist-electron/without publishing anything.