Skip to content

fix(deps): upgrade electron-builder security patches - #243

Merged
EtienneLescot merged 2 commits into
getopenscreen:mainfrom
arhxam:codex/upgrade-electron-builder-security
Aug 4, 2026
Merged

fix(deps): upgrade electron-builder security patches#243
EtienneLescot merged 2 commits into
getopenscreen:mainfrom
arhxam:codex/upgrade-electron-builder-security

Conversation

@arhxam

@arhxam arhxam commented Aug 4, 2026

Copy link
Copy Markdown

Summary

  • upgrade electron-builder from 26.14.0 resolved to 26.15.3
  • pull in app-builder-lib@26.15.3 and builder-util-runtime@9.7.0
  • patch the AppImage uncontrolled-search-path issue (GHSA-7g7r-gx96-252g) and updater credential-leak issue (GHSA-p2f4-r6v6-j797)
  • refresh the stale lockfile with the repository-pinned Node 22.22.1 / npm 10.9.4 toolchain

The audit drops from 21 findings (4 critical, 15 high, 2 low) to 7 findings (1 critical, 4 high, 2 low), with no remaining builder/publisher findings.

Related issue

No linked issue; this follows currently published npm/GitHub advisories.

Type of change

  • Bug fix
  • Feature
  • Enhancement
  • Documentation
  • Refactor / maintenance
  • Performance
  • Security

Release impact

  • Patch
  • Minor
  • Major / breaking change
  • No release note needed

Desktop impact

  • Windows
  • macOS
  • Linux
  • Installer / packaging
  • Not platform-specific

Screenshots / video

Not applicable; packaging dependency update only.

Testing

  • npm exec -- electron-builder --version26.15.3
  • npm audit --json → no remaining electron-builder/app-builder-lib/builder-util findings
  • full Vitest run: 1,531 passed; the 6 existing electron/recording/webm-seek-index.test.ts assertions are Windows-only and return unsupported-platform on macOS
  • npm run build-vite
  • npm run wb:typecheck
  • npm run lint (passes with the repository's 11 existing warnings)

Summary by CodeRabbit

  • Chores
    • Updated the desktop application packaging process to improve compatibility and reliability when creating application builds.
    • This maintenance update helps ensure smoother, more consistent packaging across supported platforms without changing the app’s features or user-facing functionality.

@arhxam
arhxam requested a review from EtienneLescot as a code owner August 4, 2026 00:25
@coderabbitai

coderabbitai Bot commented Aug 4, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

@EtienneLescot, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 8 minutes

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 4d3badb1-e6e4-4d16-8d8b-340997761c84

📥 Commits

Reviewing files that changed from the base of the PR and between 4d86d74 and d9abdd0.

📒 Files selected for processing (1)
  • nix/package.nix
📝 Walkthrough

Walkthrough

The pull request updates the electron-builder development dependency from ^26.8.1 to ^26.15.3.

Changes

Electron Builder Dependency Update

Layer / File(s) Summary
Update electron-builder version
package.json
The development dependency changes from ^26.8.1 to ^26.15.3.

Estimated code review effort: 1 (Trivial) | ~2 minutes

Suggested reviewers: etiennelescot

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly identifies the electron-builder dependency upgrade and its security purpose.
Description check ✅ Passed The description covers the change, security impact, release impact, platform impact, and testing, with no linked issue identified.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches 💡 1
🛠️ Fix failing CI checks 💡
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@EtienneLescot EtienneLescot left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

The security case holds and the lockfile is honest — I checked both rather than taking them on faith.

26.15.3 remediates GHSA-7g7r-gx96-252g, and electron-builder.json5:99 builds an AppImage that build.yml ships on every GitHub Release, so this lands on an artifact users actually download. Not hygiene.

I was more worried about the 975-line lockfile churn, so I diffed the package set against the live registry. 7zip-bin, app-builder-bin, dmg-license and iconv-corefoundation drop out; pkijs, asn1js, unzipper and @noble/hashes come in. That is upstream moving code signing off native binaries onto JS, not a bad regeneration. Your ajv 6→8 jump falls out of the same chain. Good.

Three things before this can land:

  1. npmDepsHash in nix/package.nix was not regenerated — nix-check.yml will fail. Details inline.
  2. This conflicts with #244 on both package.json and package-lock.json. #244 goes first; rebase on top of it.
  3. The body says the upgrade is "from 26.14.0". Main's lockfile resolves electron-builder and app-builder-lib at 26.8.1 (builder-util-runtime at 9.5.1). Worth correcting — the real jump is bigger than advertised, which is also why I want the packaging check below.

One packaging risk I'd like verified by hand before merge, flagged inline.

Comment thread package-lock.json
Comment thread package.json
Comment thread package-lock.json Outdated
@EtienneLescot

Copy link
Copy Markdown
Collaborator

I approved CI on this branch and the Nix job failed exactly where I expected, so here is the value rather than making you run the prefetch:

recorded in nix/package.nix: sha256-SggSPoDnKzmvgXpIGP11y6h390SkoZszeMjFTaokRjQ=
expected from package-lock.json: sha256-xgwPvamqM385V2OhEXcpV4XXR3ptsoO8h7T8ll6eWr4=

Set npmDepsHash in nix/package.nix:40 to sha256-xgwPvamqM385V2OhEXcpV4XXR3ptsoO8h7T8ll6eWr4=.

One caveat: do this after rebasing on #244, not now. That PR rewrites the same lockfile, so this hash will be stale the moment it lands and the Nix job will just fail again on the new resolution.

26.8.1 -> 26.15.3 remediates GHSA-7g7r-gx96-252g, which is a property of the
AppImage this project builds and ships on every GitHub Release and downstream to
AUR — so it lands on an artifact users actually download, not just on the build
host.

The lockfile churn is upstream moving code signing off vendored native binaries
onto JS: 7zip-bin, app-builder-bin, dmg-license and iconv-corefoundation drop
out, pkijs, asn1js, unzipper and @noble/hashes come in. Verified against the
registry rather than taken on faith — dmg-builder and builder-util at 26.15.3
declare exactly what the lockfile records, and every resolved URL is
registry.npmjs.org.

Regenerated on top of the dev-toolchain bump rather than merged with it: the two
PRs re-resolve the same file independently, so combining the two lockfiles
textually would have produced a tree neither of them describes. package.json
carries both sets of bumps and npm resolved the result. Audit goes 15 -> 4.

electron-builder.json5's deb.depends copies app-builder-lib's
FpmTarget.getDefaultDepends verbatim, and `depends` replaces rather than appends,
so the .deb and pacman artifacts want a build-and-install smoke test before this
ships — that list was written against 26.8.x and this crosses seven minors.
@EtienneLescot
EtienneLescot force-pushed the codex/upgrade-electron-builder-security branch from b9aa61a to 4d86d74 Compare August 4, 2026 13:59
The value getopenscreen#244 left behind describes the dependency set before electron-builder
moved to 26.15.3, and that upgrade re-resolves a lot: 7zip-bin, app-builder-bin,
dmg-license and iconv-corefoundation drop out while pkijs, asn1js, unzipper and
@noble/hashes come in, because upstream moved code signing off vendored native
binaries onto JS. So the recorded hash no longer matches and `nix build` fails
outright for anyone installing through that channel.

Taken from the Nix job's own output on this branch rather than computed blind.

@EtienneLescot EtienneLescot left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Threads cleared, npmDepsHash refreshed, rebased onto #244 with the lockfile regenerated rather than textually merged. Approving.

The security case is real and I verified it rather than taking the title on faith: 26.15.3 remediates GHSA-7g7r-gx96-252g, and electron-builder.json5 builds an AppImage that ships on every GitHub Release and downstream to AUR. The 800-line lockfile churn is upstream moving code signing off vendored native binaries onto JS, checked against the registry — not a bad regeneration.

Audit across both dependency PRs: 21 on main, 15 after #244, 4 with this on top.

Carrying forward one thing that is not resolved by merging: deb.depends in electron-builder.json5 copies app-builder-lib defaults verbatim and replaces rather than appends, and that copy was made against 26.8.x. The .deb and pacman artifacts want an install smoke test before the next release.

@EtienneLescot
EtienneLescot merged commit 1749d84 into getopenscreen:main Aug 4, 2026
18 of 20 checks passed
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.

3 participants