Skip to content

fix(deps): bump tar, hono, @hono/node-server, adm-zip, sharp and postcss-selector-parser - #7656

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

joelgallardoclippy-lgtm merged 1 commit into
mainfrom
clippy/runtime-direct-sec-bumps

Conversation

@joelgallardoclippy-lgtm

Copy link
Copy Markdown
Contributor

What

Bumps six runtime dependencies that bun audit flags in the workspace:

Package Before After Fix release published Manifests
tar 7.5.15 7.5.22 (^7.5.22) 2026-07-24 aws-lambda, gcp-cloud-run (also dedupes onnxruntime-node's tar)
hono 4.12.18 4.13.16 (^4.13.16) 2026-11-01 cli, engine, producer, gcp-cloud-run, studio-server
@hono/node-server 2.0.12 2.1.6 (^2.1.6) 2026-11-02 cli, engine, producer, gcp-cloud-run
adm-zip 0.6.0 0.6.1 (^0.6.1) 2026-09-11 cli
sharp (optional) 0.35.3 0.35.5 (^0.35.5) 2026-09-27 cli, studio-server
postcss-selector-parser 7.1.4 7.1.7 (^7.1.7) 2026-10-20 lint, studio-server

The CLI's on-demand sharp install (SHARP_VERSION, used when a host bundles the CLI without sharp) moves from 0.35.3 to 0.35.5 too, and the dependency-compat test floors follow the new ranges.

Why

Dependabot reads only the package.json ranges for the bun workspace, so it doesn't flag these: every existing range already admitted a patched version, but bun.lock still resolves vulnerable ones. Raising the ranges also means consumers of the published @hyperframes/* packages can't resolve the vulnerable versions.

Advisories cleared (all 45 bun audit entries for these six packages):

bun audit on the workspace: 117 → 72 (3 → 2 critical, 48 → 39 high, 57 → 24 moderate, 9 → 7 low). None of the six packages appear in the after report.

Related work

Refs #3933. That Renovate "prod patch updates" PR has merge conflicts. It raises tar only in aws-lambda (not gcp-cloud-run) and covers adm-zip, but not hono, @hono/node-server, sharp or postcss-selector-parser. Because hono and @hono/node-server need minor bumps, its patch-only group can't reach them. This PR supersedes it for these packages. The rest of #3933 is unrelated and stays for maintainers to decide.

How

  • Raised each direct range to the resolved fix version, in every manifest that declares it. Within each major, I picked the lowest release that clears every advisory and is at least 7 days old: tar 7.5.22 rather than 7.5.23 (2 days old), hono 4.13.16 rather than 4.13.17/18, and postcss-selector-parser 7.1.7 rather than 7.1.8/7.2.x.
  • bun install (bun 1.4.4 per engines.bun), then dropped the unrelated workspace version churn bun wrote into bun.lock. The lock diff is now only these packages and sharp's @img/* platform binaries. bun install --frozen-lockfile accepts it.
  • No runtime lock changes are needed. None of the six packages appear in the aws-lambda runtime-lock/*/package-lock.json files, the registry source locks, or packages/studio/frontend/bun.lock.

hono 4.12 → 4.13 review. I read the release notes from 4.12.19 to 4.13.16 against the hono APIs we use: Hono routing, streamSSE, bodyLimit, HTTPException, and @hono/node-server serve/createAdaptorServer/HttpBindings. Changes with behavioral impact:

  • CORS default allow-methods gains QUERY. We don't use cors().
  • RegExpRouter throws UnsupportedPathError when a route is registered rather than on first match. Every route table is built in tests, and none threw.
  • serveStatic serves only GET/HEAD and rejects a % left after decoding. Not used; the file servers are custom handlers.
  • app.mount() is deprecated, getPath is disallowed with strict: false, and the cache-key format changed. None of these are used.
  • @hono/node-server 2.1.6 returns 400 for a raw backslash in the request path. The engine/producer file servers are loaded by Chrome, which normalizes \ to / before sending. The Windows render jobs exercise this path.

Test plan

Run locally with NODE_ENV=test after bun run build:

  • bun install --frozen-lockfile; bun why for each package shows a single resolution at the new version
  • bun audit before/after (above)
  • studio-server: 1862 passed, 0 failed
  • producer: test:unit passes; the bun:test server and fileServer* files pass 107/107
  • engine: fileServer tests pass 27/27
  • gcp-cloud-run: 102 passed, 0 failed
  • lint: 1309 passed, 0 failed
  • cli: the server/, optionalPackages and dependency-compat suites pass. The failures left are environmental: their errors point to ffmpeg/ffprobe, Chrome and lsof, none of which this sandbox has (init, whisper/transcribe, the |chrome| browser tests, portUtils PID provenance). Hosted CI covers them
  • aws-lambda: 251 passed. The 5 stageArm64Image failures come from zip not being installed here
  • typecheck for cli, engine, producer, studio-server, gcp-cloud-run, aws-lambda and lint; bun run lint; bun run format:check
  • Hosted CI, including the Windows render jobs

🤖 Generated with Claude Code

…css-selector-parser

Raise the direct ranges so the workspace and published packages resolve
patched releases: tar 7.5.22, hono 4.13.16, @hono/node-server 2.1.6,
adm-zip 0.6.1, sharp 0.35.5 and postcss-selector-parser 7.1.7. The CLI's
on-demand sharp install moves to 0.35.5 with them.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown
Contributor

Edit accuracy: accurate 267 (base branch 267), smooth 92 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)

Unstable (1)

  • seqplainkeys-none-px-r0-root-z100: tracking 0.06, pressJump 0, drop 0, reload 0, render 0.03, renderKey -, undo true, teleport true / tracking 0.06, pressJump 0, drop 0, reload 0, render 0.03, renderKey -, undo true, teleport true / tracking 0.06, pressJump 0, drop 0, reload 0, render 0.03, renderKey -, undo true, teleport true

@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 85655b9bfd98c295c5194c2bf24ddfe139e006d5. No blockers found in the code review.

The patch raises the six dependency floors in every declaring workspace manifest, keeps Sharp optional, and updates the on-demand Sharp pin to the same 0.35.5 version. Parsed lock comparison is limited to those packages and Sharp's matching platform binaries; no major-version changes or unrelated additions. The changed dependency edges satisfy parent ranges. The Lambda runtime locks contain none of these packages and remain unchanged.

The Hono/node-server changes fit the actual routing, SSE, body-limit and Node adapter uses. The application does not use Hono's mount, CORS or serveStatic APIs; its static handlers are custom. Per upstream release notes, node-server rejects raw backslashes in paths while still accepting percent-encoded backslashes and backslashes in query strings. The ZIP preflight and bounded Lottie validation remain in place. Tar's new default 1000× decompression-ratio ceiling intentionally rejects extreme archives; both transport roundtrips pass. Hono release, node-server release.

Validation at this head: frozen install and full build pass; changed source lint and source/manifest formatting pass. CLI regression selection: 122/122; AWS/GCP transport tests: 40/40; engine file-server tests: 27/27; full studio-server suite: 1872 passed, 2 skipped. bun audit --json reproduces 117→72, with none of the six target packages remaining. Hosted CI: 95 successful, eight skipped, no pending or failed jobs. Native Sharp 0.35.5/libvips 8.18.7 also passes SVG rasterization, resize and PNG decoding on this Linux host. I did not test native binaries on other platforms or rerun every package suite locally.

Need: yes, security floors for published runtime dependencies · Size: ok · Reuse: existing optional-package loader, transport and server helpers · Simpler: already minimal · Structure: fine (checked shared optional installer and existing route/transport boundaries; no split)
Risk: medium — runtime server, archive and native image dependency updates.

Verdict: COMMENT — no blockers found.
Reasoning: The dependency contracts and install pins remain consistent, with relevant build, routing and archive coverage.

— Rames

@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 85655b9bfd98c295c5194c2bf24ddfe139e006d5. Approved; no blockers found.

The head is unchanged from my detailed review below. Rechecked the full review/comment lists and current CI: 95 successful checks, eight skipped, none failed or pending. No new findings were raised. The existing validation applies to this exact head: frozen install, full build, lint/format, 2,061 local tests passed (two skipped), native Sharp SVG/resize/PNG smoke, and audit 117→72. The dependency and lockfile changes remain scoped, including the matching on-demand Sharp pin. Tar’s new 1,000× decompression ceiling is an intentional behavior change covered by normal transport roundtrips.

Need: yes, security floors for published runtime dependencies · Size: ok · Reuse: existing optional-package loader, transport and server helpers · Simpler: already minimal · Structure: fine (checked shared optional installer and existing route/transport boundaries; no split)
Risk: medium — runtime server, archive and native image dependency updates.

Verdict: APPROVE.
Reasoning: Dependency contracts and install pins are consistent; the earlier compatibility review and validation remain valid at the unchanged head. Native binaries on other platforms were not tested locally.

— Rames

@joelgallardoclippy-lgtm
joelgallardoclippy-lgtm added this pull request to the merge queue Nov 13, 2026
Merged via the queue into main with commit f01209d Nov 13, 2026
163 of 167 checks passed
@joelgallardoclippy-lgtm
joelgallardoclippy-lgtm deleted the clippy/runtime-direct-sec-bumps branch November 13, 2026 18:34
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