MAINT: Bump brace-expansion, js-yaml, postcss, and setuptools for Dependabot alerts - #2323
Merged
Merged
Conversation
Resolves Dependabot alerts for GHSA-3jxr-9vmj-r5cp (DoS via exponential-time expansion of consecutive non-expanding {} groups). Each of the three transitive copies is bumped within its own major line, so no API-breaking major upgrades are involved: - node_modules/brace-expansion 5.0.6 -> 5.0.8 (minimatch@10 wants ^5.0.5) - node_modules/glob/.../brace-expansion 2.1.1 -> 2.1.2 (minimatch@9 wants ^2.0.2) - node_modules/test-exclude/.../brace-expansion 1.1.15 -> 1.1.16 (minimatch@3 wants ^1.1.7) Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 9009f005-342b-41a1-8513-74cbf282a9a4
Resolves Dependabot alerts: - js-yaml 4.2.0 -> 4.3.0 (GHSA: quadratic CPU via YAML merge-key chains) - postcss 8.5.13 -> 8.5.23 (GHSA: path traversal via sourceMappingURL) Both are dev-only transitive deps already pinned via the overrides block, so this only widens the existing pins. nanoid moves with postcss. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 9009f005-342b-41a1-8513-74cbf282a9a4
Resolves the Dependabot alert for the sdist MANIFEST.in exclusion bypass via Unicode normalization collision (NFC/NFD) on macOS APFS/HFS+. setuptools is transitive here (jupyterlab, spacy, thinc, torch), so only the locked version moves; pyproject.toml's build-system pin is untouched. The upload-time field is dropped because the index used to resolve this does not publish it; it will be restored on the next unrestricted relock. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 9009f005-342b-41a1-8513-74cbf282a9a4
jsong468
approved these changes
Aug 4, 2026
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.
Description
Resolves six open Dependabot alerts by bumping locked dependency versions. All six are transitive; only lockfiles and the existing
overridesblock infrontend/package.jsonchange, so there are no source or API changes.brace-expansion
The tree had three separate copies, each pinned by a different
minimatchmajor (v1 undertest-exclude, v2 underglob, v5 top level). The usual fear here is that collapsing them onto one version breaks things, since the v1/v2/v5 APIs differ. That is not needed: each patched release lives inside its own major line, so a plainnpm update brace-expansionbumped all three with no newoverridesentry and no major upgrades.js-yaml and postcss
Both were already pinned in the
overridesblock for earlier advisories, so this only widens the existing pins.setuptools
Transitive via jupyterlab, spacy, thinc, and torch. Only the locked version moves; the
setuptools>=64.0.0build-system pin inpyproject.tomlis untouched.One thing to flag for reviewers: the setuptools entry in
uv.lockloses itsupload-timefield. The package index used to resolve this bump does not publish that field, souv lockomits it. The URLs, sha256 hashes, and byte sizes are all correct and point atfiles.pythonhosted.orgas before;upload-timewill come back on the next relock. Theuv.lockdiff is deliberately scoped to just the 3 lines of the setuptools block.Not included
Dependabot also flags react-router (alert #216, GHSA-qwww-vcr4-c8h2, RSC mode CSRF bypass). That one is intentionally left out of this PR because it is a genuine breaking upgrade rather than a version bump: v8 removes the
react-router-dompackage entirely, is ESM-only, and declaresengines: node >=22.22.0whilefrontend_tests.ymlpinsNODE_VERSION: "20". The advisory itself notes it "only affects your application if you are using the unstable RSC APIs", and this frontend is a plain client-side SPA with no RSC, so the vulnerability is not reachable. It has been done separately and will come as its own PR.Tests and Documentation
No documentation changes; this is a dependency-only PR, so JupyText was not run.
Validation performed locally:
npm ci(lockfile integrity verified),npm test(984/984 passing across 50 suites),npm run build,npm run lintall clean.uv lock --checkpasses with no drift, anduv run pytest tests/unit -k "converter or memory"gives 2191 passed, 49 skipped.Note on a pre-existing flake:
InitializerParametersDialog > submits toggled boolean and selected multiselect values, and occasionally other tests such asCreateTargetDialog > should hide the Authentication field until a target type is selected, fail intermittently. This reproduces on unmodifiedmain, so it is not a regression from these bumps. It shows up most often undernpm run test:coveragebut has also been observed on a plainnpm testrun. The affected tests pass reliably when run in isolation. Worth fixing separately.