What's Changed
- feat(updater): robust PowerShell invocation for Windows code-signature verification by @mmaietta in #9764
- fix(test): throw on legacy test signature; case-insensitive PSModulePath removal in updater verifier by @claude[bot] in #10159
- fix(electron-updater): keep cached blockmap consistent with cached installer to avoid stale sha512 mismatches by @claude[bot] in #10098
- fix(mac): Retain Electron and Chromium license files on macOS by @mmaietta in #10174
- refactor(electron-updater)!: return DownloadExecutorResult from downloadUpdate() by @claude[bot] in #10164
- feat(toolsets):
toolsets.wine: "system"+ fix(msi): icon-less MSI builds by @mmaietta in #10184 - feat(squirrel-windows): inline installer logic; remove electron-winstaller dependency and its vendored binaries by @mmaietta in #9830
- fix: normalize Snap Store channels by @OskarEichler in #10155
- fix: log dynamic import failures by @OskarEichler in #10154
- fix: parse GitHub repo shorthand correctly by @OskarEichler in #10153
- fix(runtime): stop oversized buffer downloads by @OskarEichler in #10123
- fix: pnpm collector: transitive deps of a
link:ed package in an isolated store by @mmaietta in #10185 - feat: v27 upgrade guardrails: make every breaking change self-announcing by @mmaietta in #10182
- fix(updater): preserve fractional staged rollouts by @OskarEichler in #10114
- fix: Ensure arch is passed to blockmap path macro expansion by @eliotschu in #10075
- feat(nsis): flexible custom script includes (array
include, portable support, sibling includes, plugin dirs) by @claude[bot] in #10161 - fix: detect pnpm workspace root on Windows without shelling out to pwd by @claude[bot] in #10188
- test: add arch to blockmap snapshots for NSIS custom-include tests by @claude[bot] in #10194
- test: update globTest snapshot for moment 2.31.0 locale files by @claude[bot] in #10197
- fix(pkg): add rootVolumeOnly to to avoid the macOS 26 Insta… by @FE-Acmen in #10193
- fix: clean up publish SIGINT listeners by @OskarEichler in #10147
- fix: detach DMGs after mount parsing failures by @OskarEichler in #10151
- feat(nsis): "store-asar" mode for proportional differential updates by @imlucas in #10186
- test: bump package manager pins and disable dependency lifecycle scripts in fixture installs by @claude[bot] in #10199
- feat(dmg): allow "position" as a dmg.contents type by @Laruxo in #10183
- fix(app-builder-lib): resolve pnpm deps omitted from deduped list output by declared range by @claude[bot] in #10200
- fix(nsis): select ARM64 web installer packages consistently by @davej in #10196
- test: add internal afterPackTestHook to skip target builds in packaging tests by @claude[bot] in #10202
- test: split installer-reading packaging tests into *.e2e.ts files (TEST_MODE=all|unit|e2e) by @claude[bot] in #10204
- test: skip needless AppImage builds in linuxPackager suite and unit-test web installer URL computation by @claude[bot] in #10205
- feat: signed update manifests (Ed25519) by @mmaietta in #9877
- fix(node-module-collector): clear error on empty output and fall back to traversal when a collector throws by @claude[bot] in #10210
- docs: EV certificates no longer skip the SmartScreen reputation period by @mnaza in #10190
- chore(deps): update dependency toml to v4 [security] by @renovate[bot] in #10175
- fix(updater): make multi-range differential downloads work on real servers by @yi-ge in #10192
- docs(website): show a version banner on prerelease docs builds by @claude[bot] in #10216
- test(updater): use tmpDir fixture and close old-file fd in differential multipart test by @claude[bot] in #10218
- ci: run the flatpak e2e suite on a native ubuntu runner by @claude[bot] in #10217
- fix(app-builder-lib): evaluate node_modules directory filter once per directory and await async onNodeModuleFile hook by @claude[bot] in #10178
- fix(snap): stop emitting a duplicate desktop entry for core24 snaps by @atirna in #10176
- fix(flatpak): don't let linux.files corrupt the flatpak files tuple list by @oalfroukh in #10209
- fix(flatpak): read flatpak.files from the flatpak config instead of the merged target options by @claude[bot] in #10227
- build(deps-dev): upgrade vitest to v5 by @claude[bot] in #10231
- test: pin pnpm 11 in pack tester with allowBuilds limited to electron by @claude[bot] in #10212
- chore(deps): update dependency js-yaml to v4.3.2 [security] by @renovate[bot] in #10001
- test: skip vitest report merge when no blob reports exist by @claude[bot] in #10233
- chore(deps): update dependency tar to v7.5.21 [security] by @renovate[bot] in #9974
- chore(deps): update dependency undici to v7.29.0 [security] by @renovate[bot] in #9976
- feat(mac): tighten default macOS entitlements [BREAKING] by @mmaietta in #10181
- fix: restore console logger after asar failures by @OskarEichler in #10136
- perf: deduplicate concurrent module cache lookups by @OskarEichler in #10148
- chore(deps): update dependency form-data to v4.0.6 [security] by @renovate[bot] in #9973
- chore(node-module-collector): remove unused pnpm config-list hoisted detection by @claude[bot] in #10232
- chore(deps): update resedit to v3 by @mmaietta in #9967
- fix(pnpm-collector): find nested deps in pnpm hoisted workspaces by @claude[bot] in #10234
- fix(cli): cover all v27 breaking config changes in migrate-schema by @claude[bot] in #10241
- chore(deploy): Release (next) (alpha) by @electron-builder-release-bot[bot] in #10160
New Contributors
- @OskarEichler made their first contribution in #10155
- @FE-Acmen made their first contribution in #10193
- @imlucas made their first contribution in #10186
- @Laruxo made their first contribution in #10183
- @mnaza made their first contribution in #10190
- @yi-ge made their first contribution in #10192
- @oalfroukh made their first contribution in #10209
Full Changelog: https://github.com/electron-userland/electron-builder/compare/electron-builder@27.0.0-alpha.8...electron-builder@27.0.0-alpha.9