Skip to content

fix(deps): patch dev toolchain vulnerabilities - #244

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

fix(deps): patch dev toolchain vulnerabilities#244
EtienneLescot merged 2 commits into
getopenscreen:mainfrom
arhxam:codex/upgrade-dev-toolchain-security

Conversation

@arhxam

@arhxam arhxam commented Aug 4, 2026

Copy link
Copy Markdown

Summary

  • upgrade Vitest to 4.1.10 to patch the browser-mode script injection, permission-bypass, and exposed-command/RCE advisories
  • upgrade Vite 7 to 7.3.6 to patch Windows path-deny bypass and UNC credential disclosure
  • upgrade PostCSS to 8.5.25 to complete the source-map arbitrary-file-read fixes
  • upgrade esbuild to 0.28.1 to patch its Windows development-server file-read issue
  • refresh the lockfile with the repository-pinned Node 22.22.1 / npm 10.9.4 toolchain

npm audit reports all four direct dependencies and @vitest/browser clear. The total drops from 21 findings to 15; the remaining builder findings are addressed independently in #243.

Related issue

Related to #243 (independent security update for the packaging toolchain).

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; development dependency update only.

Testing

  • npm audit --json → Vitest, @vitest/browser, Vite, PostCSS, and esbuild clear
  • broad Vitest run excluding the Windows-only WebM reindex file: 1,529 passed; the one pre-existing WSOLA test exceeded its 5s timeout only under full parallel load
  • focused src/lib/exporter/audioTimeStretch.test.ts: 8/8 passed
  • npm run build-vite using Vite 7.3.6
  • npm run wb:typecheck
  • npm run lint (passes with the repository's 11 existing warnings)

Summary by CodeRabbit

  • Chores
    • Updated development tooling to newer versions.
    • Refreshed package dependency metadata for more consistent builds.

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

coderabbitai Bot commented Aug 4, 2026

Copy link
Copy Markdown

Review Change Stack

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 45210ab9-6d29-4164-b12a-f3f0c984c372

📥 Commits

Reviewing files that changed from the base of the PR and between 53242cf and bad0ce9.

⛔ Files ignored due to path filters (1)
  • package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (2)
  • nix/package.nix
  • package.json

📝 Walkthrough

Walkthrough

The pull request updates four development dependency versions in package.json and replaces the matching npmDepsHash in nix/package.nix.

Changes

Development dependency updates

Layer / File(s) Summary
Update dependency versions and Nix hash
package.json, nix/package.nix
esbuild, postcss, vite, and vitest are updated. The Nix package uses a new npmDepsHash value.

Estimated code review effort: 2 (Simple) | ~10 minutes

Possibly related PRs

Suggested reviewers: etiennelescot

✨ Finishing Touches
🧪 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.

Cleanly scoped and correct in substance: four devDependency bumps, nothing in dependencies moves, and the lockfile ends up with a single deduped esbuild because vite 7.3.6 widened its range to ^0.27.0 || ^0.28.0 — so 0.28.1 doesn't drag in a second copy. 21 → 15 findings with the remainder explicitly deferred to #243 is the honest framing, and the regeneration also quietly fixes a real bug on main (see the inline note on deepagents).

One blocking one-liner, one ordering issue.

Blocking: nix/package.nix still records sha256-SggSPoDnKzmvgXpIGP11y6h390SkoZszeMjFTaokRjQ=, byte-identical to main, while this PR re-resolves the dependency set (39 new resolved entries, 48 removed). .github/workflows/nix-check.yml triggers on pull_request with paths: [package-lock.json], recomputes the hash and exits 1 on mismatch. Run nix run nixpkgs#prefetch-npm-deps -- package-lock.json and paste the result into npmDepsHash.

Ordering: this conflicts with #243 in both package.json and package-lock.json (confirmed with git merge-tree). I want to land this one first since it's the larger regeneration, then have #243 rebase on top and re-run the prefetch there.

Note that no CI has run on this branch yet — the first-time-contributor gate — so the esbuild 0.27 → 0.28 major hasn't been exercised on a real build. I'll approve the run once the hash lands.

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

Copy link
Copy Markdown
Collaborator

I approved CI on this branch and the Nix job failed on the npmDepsHash check, as flagged. Here is the value so you do not need to run the prefetch yourself:

recorded in nix/package.nix: sha256-SggSPoDnKzmvgXpIGP11y6h390SkoZszeMjFTaokRjQ=
expected from package-lock.json: sha256-appTO8HilRS3R5ngGTzIp/txHyjui6z0Q+l1Vf36dHs=

Set npmDepsHash in nix/package.nix:40 to sha256-appTO8HilRS3R5ngGTzIp/txHyjui6z0Q+l1Vf36dHs= and this one is good to go from my side.

arhxam and others added 2 commits August 4, 2026 15:43
nix-check.yml exists precisely to catch this: it triggers on any PR touching
package-lock.json, recomputes the hash with prefetch-npm-deps and fails when the
recorded one disagrees. This lockfile re-resolves 39 packages, so the hash main
recorded no longer describes the dependency set, and `nix build` would fail
outright for anyone installing through that channel.

Value taken from the Nix job's own output on this branch rather than recomputed
blind, and the lockfile has not moved since — main touched only package.json and
nix/package.nix in the meantime.
@EtienneLescot
EtienneLescot force-pushed the codex/upgrade-dev-toolchain-security branch from 296d292 to bad0ce9 Compare August 4, 2026 13:50

@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, branch flattened so it can actually rebase-merge. Approving.

Four devDependency bumps, nothing in dependencies moves, and the lockfile ends up with a single deduped esbuild because vite 7.3.6 widened its range to ^0.27.0 || ^0.28.0. 21 advisories down to 15, with the remainder explicitly deferred to #243 rather than papered over.

@EtienneLescot
EtienneLescot merged commit 0effa7b into getopenscreen:main Aug 4, 2026
17 of 20 checks passed
EtienneLescot pushed a commit to arhxam/openscreen that referenced this pull request Aug 4, 2026
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 pushed a commit that referenced this pull request Aug 4, 2026
The value #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.
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