Skip to content

chore(deps): override tinypool to 2.1.2, bump vite 6.4.5 and vitest 4.1.12 - #7653

Merged
joelgallardoclippy-lgtm merged 1 commit into
mainfrom
clippy/tinypool-sec
Nov 13, 2026
Merged

joelgallardoclippy-lgtm merged 1 commit into
mainfrom
clippy/tinypool-sec

Conversation

@joelgallardoclippy-lgtm

@joelgallardoclippy-lgtm joelgallardoclippy-lgtm commented Nov 13, 2026 •

Copy link
Copy Markdown
Contributor

What

Dev-only dependency security fixes:

  • tinypool 2.1.0 → 2.1.2 via a root overrides/resolutions entry. It is only pulled in by [email protected], which pins tinypool exactly to 2.1.0.
  • vite ^6.4.2 → ^6.4.5 (studio, sdk-playground). Resolves to 6.4.5.
  • vitest / @vitest/coverage-v8 ^4.1.11 → ^4.1.12 in all workspaces. This also brings @vitest/mocker to 4.1.12.

Why

Package Advisory Severity Fixed in Fix published
tinypool GHSA-5gmw-xhrv-c9v3 (CVE-2026-104848) critical 2.1.1 2026-08-23
tinypool GHSA-85c8-ppgw-ccpr (CVE-2026-104849) critical 2.1.2 2026-08-23
vite / launch-editor GHSA-587h-7wmj-h5pm high 6.4.4 2026-10-06
vite / launch-editor GHSA-v6wh-96g9-6wx3, GHSA-r825-w8mm-5pxw, GHSA-698v-4r3x-3vcv medium 6.4.3 / 6.4.4
vite GHSA-fx2h-pf6j-xcff, GHSA-rq7h-c2jc-7f22, GHSA-9jrq-w75r-8gcw medium/low 6.4.3 / 6.4.4
vite GHSA-8g5g-mxqh-grgj (affects 6.4.4 only) medium 6.4.5 2026-10-21
@vitest/mocker GHSA-qxg6-89mg-rqv8, GHSA-xp26-3454-mjgp medium 4.1.12 2026-10-15

6.4.5 is the lowest vite 6.4.x that clears all of the above. vitest 4.1.12 has no tinypool dependency, so the only tinypool consumer is oxfmt.

Related work

Refs #4244. That Renovate PR bumps oxfmt to 0.78, which also clears tinypool, but it conflicts and fails the Format check because newer oxfmt reformats files. This PR clears the critical advisories without changing formatter output, so it can land first. Once #4244 (or any oxfmt ≥ 0.67) lands, the tinypool override should be removed, since oxfmt 0.67–0.70 pin 2.1.2 and 0.71+ pin 2.2.0.

How

Options considered, smallest first:

  1. Newer oxfmt with an unchanged format. ^0.41.0 only admits 0.41.x. Every oxfmt release from 0.41 to 0.66 pins tinypool: 2.1.0. The first with ≥2.1.2 is 0.67.0, and [email protected] --check . flags 66 files on main. Rejected.
  2. Lock-only refresh. Not possible because oxfmt pins tinypool to an exact version.
  3. Override (chosen). 2.1.0 → 2.1.2 is a drop-in security patch. The only code change wraps option objects in withNullPrototype(...) in the Tinypool constructor, run() and recycleWorkers(). The public API is unchanged and there are no dependency or engine changes. The override follows the existing overrides + resolutions convention in the root package.json.
  4. Bump oxfmt and reformat. Unnecessary given (3).

vite and vitest are patch bumps inside their current ranges. The lock was pinned to vite 6.4.5 instead of the newest 6.4.6, which is only 4 days old. Workspace version churn that bun wrote into the lock was dropped. The lock also dedupes away a nested vite/[email protected] and [email protected].

No visible change

Dev-dependency bump only. Studio's package.json changes vite/vitest ranges, and no source, styles or runtime dependencies change.

Test plan

  • bun install → bun install --frozen-lockfile passes on a fresh node_modules.
  • bun why: [email protected] (only via [email protected]), [email protected], [email protected], @vitest/[email protected], @vitest/[email protected].
  • bun audit before → after: 117 (3 critical, 48 high) → 102 (1 critical, 44 high). Cleared: tinypool, vite, @vitest/mocker, plus [email protected] and [email protected] through dedupe. The remaining critical is tar via onnxruntime-node, which is out of scope.
  • bun run format:check with oxfmt 0.41 on tinypool 2.1.2 passes (7497 files). A Markdown file with an embedded TS block was formatted through the oxfmt worker pool.
  • bun run lint passes.
  • Full bun run build passes, including the vite 6.4.5 builds for studio and sdk-playground. typecheck passes for studio, sdk-playground and core. sdk-playground vitest passes (5 tests).
  • Hosted CI on b4e72b5: Build, Typecheck, Test (all shards), Test: runtime contract, Format, Lint, regression, Studio edit accuracy gate, and Windows render and tests all pass. Heavy films: Safari vs Chrome failed on one Safari heavy-alpha-webm run. It is a non-required perf benchmark that also fails intermittently on main nightlies.
  • No runtime lock (packages/aws-lambda/scripts/runtime-lock/**) resolves tinypool, vite or vitest.

🤖 Generated with Claude Code

oxfmt 0.41 pins tinypool 2.1.0 (GHSA-5gmw-xhrv-c9v3, GHSA-85c8-ppgw-ccpr).
Every oxfmt release before 0.67 pins 2.1.0, and 0.67+ reformats 66 files,
so override tinypool to the drop-in 2.1.2 patch instead of bumping oxfmt.

Also bump vite ^6.4.2 -> ^6.4.5 and vitest/@vitest/coverage-v8
^4.1.11 -> ^4.1.12 (pulls @vitest/mocker 4.1.12).

Co-Authored-By: Claude Opus 5.5 <[email protected]>
@github-actions

Copy link
Copy Markdown
Contributor

Edit accuracy: accurate 267 (base branch 267), smooth 91 of those

The gate passes.
Smoothness is reported in the artifact, not gated. A case fails only if it fails 2 of 3 runs.

Quarantined, measured but not gated (8)

@jrusso1020 jrusso1020 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.

Reviewed at b4e72b5501e0b2e4e07739d23781cd5b8d9b42bd. No blockers found.

The tinypool override reaches the sole consumer, oxfmt 0.41.0, without changing formatter versions. Upstream 2.1.0→2.1.2 preserves the API and copies options onto null-prototype objects. Vite and the Vitest/coverage family stay on their existing major/minor lines. The only other lock changes remove nested postcss/nanoid copies in favor of satisfying hoisted versions. Source and runtime Lambda locks are unchanged. Remove the override when upgrading to an oxfmt version that already supplies the fix.

Validation: frozen install, full build, changed-manifest format check and formatting README through oxfmt's worker path pass. SDK-playground tests pass 5/5 with Vitest 4.1.12. bun audit --json reports 102 entries versus 117 on the base; tinypool, vite and @vitest/mocker no longer appear. CI includes successful build/typecheck/test jobs; the capture-description check and Safari benchmark have failures, so CI is not wholly green. The description check requests capture headings despite this dependency-only change; neither result demonstrates a source defect in this diff.

Need: yes, security fixes in existing tooling · Size: ok · Reuse: existing overrides/resolutions convention · Simpler: already minimal · Structure: fine (checked shared formatter setup and Vitest/coverage version alignment; no split)
Risk: low — development dependency patches with unchanged application source.

Verdict: APPROVE
Reasoning: The narrowly scoped updates preserve tooling contracts and the relevant build/test/formatter checks pass.

— Rames

@joelgallardoclippy-lgtm
joelgallardoclippy-lgtm added this pull request to the merge queue Nov 13, 2026
Merged via the queue into main with commit 7603215 Nov 13, 2026
190 of 192 checks passed
@joelgallardoclippy-lgtm
joelgallardoclippy-lgtm deleted the clippy/tinypool-sec branch November 13, 2026 17:50
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.

2 participants