Background
PR #34 resolves 14 of the 15 open Dependabot alerts (tar, adm-zip, fast-uri). The remaining alert — sharp (high severity) — was intentionally split out because it cannot be landed mechanically.
Why sharp needs its own PR
Bumping sharp ^0.34.5 → ^0.35.x also bumps the bundled libvips native library (@img/sharp-libvips-*) from 1.2.4 → 1.3.2. This trips the deliberate license-compliance gate:
third_party/compliance-policy.json pins the exact reviewed versions (sharp: 0.34.5, sharpLibvips.version: 1.2.4).
scripts/compliance.mjs (validateReviewedVersions) fails CI with sharp versions have not been reviewed: 0.35.x; expected 0.34.5.
RELEASING.md documents that Sharp / sharp-libvips bumps require human review of licenses, native dependency versions, patches, source archives, and relinking.
What the sharp PR must do
References
Background
PR #34 resolves 14 of the 15 open Dependabot alerts (tar, adm-zip, fast-uri). The remaining alert — sharp (high severity) — was intentionally split out because it cannot be landed mechanically.
Why sharp needs its own PR
Bumping
sharp ^0.34.5 → ^0.35.xalso bumps the bundled libvips native library (@img/sharp-libvips-*) from 1.2.4 → 1.3.2. This trips the deliberate license-compliance gate:third_party/compliance-policy.jsonpins the exact reviewed versions (sharp: 0.34.5,sharpLibvips.version: 1.2.4).scripts/compliance.mjs(validateReviewedVersions) fails CI withsharp versions have not been reviewed: 0.35.x; expected 0.34.5.RELEASING.mddocuments that Sharp / sharp-libvips bumps require human review of licenses, native dependency versions, patches, source archives, and relinking.What the sharp PR must do
sharpto the target 0.35.x inpackage.jsonand add"sharp": "$sharp"tooverrides(forces the transitive copy under@huggingface/transformersto match).third_party/compliance-policy.json:sharpversion,sharpLibvips.version(1.3.2), and the ~40sourceMaterialsSHA-256 hashes for the new libvips component versions (aom, cairo, glib, vips, etc.).THIRD-PARTY-NOTICES.md.electron/frames/extractor.tsneedstype Sharp = (typeof import("sharp"))["default"];(0.35 splits theimport/requireexport conditions, so the namespace form is no longer callable).electron/frames/extractor.test.tsguarding thecreateRequireload path stays a callable factory (.extract().jpeg()pipeline).npm run typecheck,npm test, andnpm run compliance:licenses; confirm the version-review gate passes.References