Skip to content

[master] Michijs Dependabot changes#161

Open
michijs[bot] wants to merge 1 commit intomasterfrom
michijs-dependabot
Open

[master] Michijs Dependabot changes#161
michijs[bot] wants to merge 1 commit intomasterfrom
michijs-dependabot

Conversation

@michijs
Copy link
Copy Markdown
Contributor

@michijs michijs Bot commented May 4, 2026

@michijs
Copy link
Copy Markdown
Contributor Author

michijs Bot commented May 4, 2026

Bump @​michijs/shared-configs from 0.0.36 to 0.0.37

Changelog:
Sourced from releases.
        ### 0.0.37## What's Changed

Full Changelog: https://redirect.github.com/michijs/shared-configs/compare/0.0.36...0.0.37

        ### 0.0.36## What's Changed

New Contributors

Full Changelog: https://redirect.github.com/michijs/shared-configs/compare/0.0.34...0.0.36

Commit history:
  • bf294a Update tsconfig.json (Bump typescript from 5.1.6 to 5.2.2 #16)

    What is the purpose of this pull request?

    Screenshots or example usage

    Types of changes

    • Bug fix (non-breaking change which fixes an issue)
    • New feature (non-breaking change which adds functionality)
    • Quality improvement (tests or refactors)
    • Breaking change (fix or feature that would cause existing
      functionality to change)
    • Trivial change (small fix or feature that doesn't impact
      functionalities)
    • Requires change to documentation, which has been updated
      accordingly

    Signed-off-by: Lucas Segurado <lsegurado1996@​gmail.com>

  • 3c3aca chore: Release v0.0.37

@michijs
Copy link
Copy Markdown
Contributor Author

michijs Bot commented May 4, 2026

Bump typescript from 5.9.3 to 6.0.3

Changelog:
Sourced from releases.
        ### v6.0.3For release notes, check out the [release announcement blog post](https://devblogs.microsoft.com/typescript/announcing-typescript-6-0/).

Downloads are available on:

Downloads are available on:

  • npm

          ### v5.9.3Note: this tag was recreated to point at the correct commit. The npm package contained the correct content.
    

For release notes, check out the release announcement

Downloads are available on:

Commit history:
  • f350b5 Redirect Claude Code to read AGENTS.md (#63446)
  • af087e docs: improve Math.sign JSDoc grammar and clarity (#63433)
  • 55423a Update CONTRIBUTING.md with comment automation policy (#63412)
  • f1a928 Also check package name validity in InstallPackageRequest (#63401)
  • c7a0ae Harden ATA package name filtering (#63368)
  • 5f4350 Require AI disclosure in PR descriptions (#63366)
  • 38c327 Document charCodeAt edge case behavior in first line (#63344)
  • 7b8cb3 Fix redundant leading apostrophe in TS1344 diagnostic message (#63341)

    Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@​users.noreply.redirect.github.com>
    Co-authored-by: RyanCavanaugh <6685088+RyanCavanaugh@​users.noreply.redirect.github.com>

  • 0844c4 Mark class property initializers as outside of CFA containers (#63310)

    Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@​users.noreply.redirect.github.com>
    Co-authored-by: RyanCavanaugh <6685088+RyanCavanaugh@​users.noreply.redirect.github.com>

  • 71586a Bump the github-actions group with 2 updates (#63319)

    Signed-off-by: dependabot[bot] <support@​redirect.github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@​users.noreply.redirect.github.com>

  • 7881fe Add coding agent instructions: refuse PRs unless maintenance mode is acknowledged (#63305)

    Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@​users.noreply.redirect.github.com>
    Co-authored-by: RyanCavanaugh <6685088+RyanCavanaugh@​users.noreply.redirect.github.com>
    Co-authored-by: Ryan Cavanaugh <RyanCavanaugh@​users.noreply.redirect.github.com>

  • 77ddb5 Update deps (#63296)
  • 864777 Bump the github-actions group with 3 updates (#63285)

    Signed-off-by: dependabot[bot] <support@​redirect.github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@​users.noreply.redirect.github.com>

  • b103a0 Update readme to note current repo state (#63292)
  • 4f7b41 Bump the github-actions group with 2 updates (#63224)

    Signed-off-by: dependabot[bot] <support@​redirect.github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@​users.noreply.redirect.github.com>

  • 9059e5 Fix missing lib files in reused programs (#63239)
  • c9e742 Port anyFunctionType subtype fix and JSX children NonInferrableType propagation from typescript-go (#63163)

    Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@​users.noreply.redirect.github.com>
    Co-authored-by: DanielRosenwasser <972891+DanielRosenwasser@​users.noreply.redirect.github.com>

  • 206ed1 Deprecate assert in import() (#63172)
  • e688ac Update dependencies (#63156)
  • 29b300 Bump the github-actions group across 1 directory with 2 updates (#63205)

    Signed-off-by: dependabot[bot] <support@​redirect.github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@​users.noreply.redirect.github.com>

  • 0c2c7a DOM update (#63183)
  • 924810 Adds the symbol name to the error message for TS2742 (#63200)
  • 6cf817 discrete pluralizer for lib.esnext.temporal unit unions (#63190)
  • b24015 Eliminate interpolation from workflows (#63188)
  • 347254 Update DOM types (#63137)
  • ad04bf Fix crash in declaration emit with nested binding patterns (#63154)

    Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@​users.noreply.redirect.github.com>
    Co-authored-by: DanielRosenwasser <972891+DanielRosenwasser@​users.noreply.redirect.github.com>

  • 0ed1ee Fix from and with method types of Temporal.PlainMonthDay (#63142)
  • 040c20 Bump github/codeql-action from 4.32.2 to 4.32.3 in the github-actions group (#63145)

    Signed-off-by: dependabot[bot] <support@​redirect.github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@​users.noreply.redirect.github.com>

  • cdc205 Ensure node is installed in release publisher (#63127)
  • cdb583 Bump github/codeql-action from 4.32.0 to 4.32.2 in the github-actions group (#63123)

    Signed-off-by: dependabot[bot] <support@​redirect.github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@​users.noreply.redirect.github.com>

@michijs
Copy link
Copy Markdown
Contributor Author

michijs Bot commented May 4, 2026

Bump bun-types from 1.3.11 to 1.3.13

Changelog:
Sourced from releases.
        ### bun-v1.3.13To install Bun v1.3.13
curl -fsSL https://bun.sh/install | bash
# or you can use npm
# npm install -g bun

Windows:

powershell -c "irm bun.sh/install.ps1|iex"

To upgrade to Bun v1.3.13:

bun upgrade

Read Bun v1.3.13's release notes on Bun's blog

Thanks to 8 contributors!

curl -fsSL https://bun.sh/install | bash
# or you can use npm
# npm install -g bun

Windows:

powershell -c "irm bun.sh/install.ps1|iex"

To upgrade to Bun v1.3.12:

bun upgrade

Read Bun v1.3.12's release notes on Bun's blog

Thanks to 8 contributors!

curl -fsSL https://bun.sh/install | bash
# or you can use npm
# npm install -g bun

Windows:

powershell -c "irm bun.sh/install.ps1|iex"

To upgrade to Bun v1.3.11:

bun upgrade

Read Bun v1.3.11's release notes on Bun's blog

Thanks to 15 contributors!

Commit history:
  • 191edc image: preserve ICC profile through WebP decode/encode (#30211)

    Closes #30197. Follow-up to #30201, which added ICC carry-through for
    JPEG and PNG but left WebP dropping the profile because
    libwebpmux/libwebpdemux weren't linked.

    Repro

    // any JPEG/PNG with an embedded ICC profile — P3, Adobe RGB, Jpegli XYB
    await Bun.file("p3.png").image().webp().write("out.webp");
    // out.webp had no ICCP chunk → viewers reinterpret as sRGB → colours shift

    And the reverse direction: a WebP carrying an ICCP chunk lost it on
    decode, so webp → png/jpeg also shifted colour.

    Cause

    WebP stores ICC profiles in an ICCP chunk inside a VP8X RIFF container
    that wraps the VP8/VP8L bitstream. WebPDecodeRGBA/WebPEncodeRGBA
    only touch the bitstream chunk; reading or writing sibling chunks needs
    the separate demux/mux APIs, and Bun only compiled
    src/{dec,enc,dsp,utils}.

    Fix

    Build (scripts/build/deps/libwebp.ts): add src/demux/*.c and
    src/mux/*.c from the same libwebp checkout. Plain C, no new deps, same
    include paths.

    Decode (src/image/codec_webp.zig): after WebPDecodeRGBA, run
    WebPDemux on the original bytes, check WEBP_FF_FORMAT_FLAGS & ICCP_FLAG, and WebPDemuxGetChunk("ICCP") the profile into
    Decoded.icc_profile (duped into bun.default_allocator to match
    JPEG/PNG ownership). A plain VP8/VP8L WebP with no VP8X wrapper falls
    through with null.

    Encode: webp.encode now takes icc_profile: ?[]const u8. When
    null/empty, keep the existing one-shot WebPEncodeRGBA fast path
    (bare VP8/VP8L, no VP8X). When set, pass the bitstream through
    WebPMuxSetImage + WebPMuxSetChunk("ICCP") + WebPMuxAssemble to
    produce a VP8X-wrapped file and hand the assembled buffer to JS with
    WebPFree as the finaliser.

    codecs.zig / Image.zig / bun.d.ts comments updated to drop the
    "WebP loses the profile" caveat.

    Verification

    New tests in the existing describe("ICC profile") block of
    test/js/bun/image/image.test.ts walk the output RIFF container to find
    the ICCP fourcc and compare the payload byte-for-byte:

    • PNG iCCP → WebP lossy → ICCP chunk present, VP8X flag bit set
    • PNG iCCP → WebP lossless → ICCP chunk present
    • WebP ICCP → PNG → iCCP chunk present (exercises demux)
    • WebP → WebP round-trip preserves profile
    • resize → WebP preserves profile
    • source without profile → WebP stays a bare VP8/VP8L (no VP8X wrapper)
    bun bd test test/js/bun/image/image.test.ts
    # 93 pass, 2 skip (macOS-only GIF parity), 0 fail
    

    Gate: with src/ + packages/ stashed and rebuilt, 5 of the 6 new WebP
    tests fail (Received: null); with the fix, all 16 ICC tests pass.


    Co-authored-by: robobun <robobun@​users.noreply.redirect.github.com>

  • 38a6a7 Fix use-after-free resolving external URL specifiers with non-ASCII characters (#30223)

    What

    Fixes an ASAN use-after-poison crash when resolving http://,
    https://, or // specifiers that contain non-ASCII characters.

    Bun.resolveSync("http://localhost/path?query=´5&foo=bar", import.meta.dir);
    // or
    require("http://localhost/path?query=´5&foo=bar");

    Why

    When a specifier contains non-ASCII characters, specifier.toUTF8() in
    resolveMaybeNeedsTrailingSlash heap-allocates a UTF-8 buffer (because
    the underlying WTF string is Latin-1 or UTF-16 and needs converting).
    For http://, https://, and // prefixes the resolver marks the
    specifier as external and returns a Path.init(import_path) that points
    directly into that temporary buffer.

    resolveMaybeNeedsTrailingSlash then wrapped that slice in a borrowing
    bun.String.init(result.path) and freed the buffer via defer specifier_utf8.deinit() before returning. Callers in both Zig
    (doResolveWithArgs) and C++ (moduleLoaderResolve,
    moduleLoaderImportModule) subsequently read poisoned memory when
    formatting or converting the result to a JS string.

    The query_string out-param had already been fixed to clone in the same
    way; result.path needed the same treatment.

    How

    • Clone result.path into an owned bun.String via
      bun.String.cloneUTF8.
    • The hardcoded-builtin branch that returned specifier now returns
      specifier.dupeRef() so all success paths return an owned string.
    • All callers (doResolveWithArgs, NodeModuleModule.findPath, and the
      two C++ Zig__GlobalObject__resolve call sites) now deref() the
      successful result after use.

    This also fixes a pre-existing leak where onResolveJSC (plugin
    onResolve) returned an owned WTFStringImpl that was never deref'd.

    Found by Fuzzilli.


    Co-authored-by: robobun <robobun@​users.noreply.redirect.github.com>
    Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@​users.noreply.redirect.github.com>

  • b34c77 Shrink Windows binary: lazy-heap threadlocal PathBuffers + /OPT:SAFEICF (#30219)

    Windows bun.exe is ~15 MB larger than Linux bun and ~40 MB larger
    than macOS. Section-contribution analysis of the canary PDB shows where
    it goes:

    Section Windows Linux Delta Cause
    .text 60.0 MB 55.8 MB +4.2 MB /OPT:NOICF (Linux uses
    -icf=safe)
    .rdata 36.6 MB 32.4 MB +4.2 MB ICU data + no tail merge
    .pdata 1.0 MB +1.0 MB x64 SEH unwind (required)
    .tls 4.8 MB 280 B +4.8 MB this PR
    .reloc 0.2 MB +0.2 MB ASLR

    .tls — 4.8 MB of literal zeros

    5,069,287 of 5,069,312 bytes (99.9995%) of the .tls section are
    0x00. Of that, 4,998,432 bytes come from bun-zig.o.

    Root cause: bun.PathBuffer is [std.fs.max_path_bytes]u8. On Windows
    that's 32767*3+1 = 98302 bytes (vs 4096 on POSIX). There are ~50
    threadlocal var x: bun.PathBuffer = undefined declarations —
    resolver.zig alone has 25 of them in the bufs struct (~2.5 MB).
    PE/COFF has no TLS-BSS equivalent and lld-link doesn't use
    IMAGE_TLS_DIRECTORY.SizeOfZeroFill, so every zero-initialized
    threadlocal is written into the .tls section as raw zeros in the file
    and copied into every thread's TLS block at creation whether or not
    that thread ever touches the resolver.

    Fix: new bun.ThreadlocalBuffers(T) wraps a struct of large buffers
    behind a single lazily-heap-allocated per-thread pointer. 8 bytes on
    disk per instantiation; backing memory allocated on first get().
    Applied to:

    • resolver.zig bufs() (25 PathBuffers + [2*MAX_PATH_BYTES] win32
      buf) — the accessor signature is unchanged so callers don't move
    • package_json.zig (5), resolve_path.zig (3), repository.zig (4),
      extract_tarball.zig (3), router.zig (2 + 1 dead removed)
    • allocators.zig, PackageManager.zig, RuntimeTranspilerCache.zig,
      VirtualMachine.zig, filesystem_router.zig, PackageInstall.zig
      (NodeFS)
    • ParseTask.zig (dead var removed)
    • c-bindings.cpp 64 KB LSHPACK thread_local char[] → lazy new[]

    Expected .tls after: ~8 KB (pointers + the few small non-PathBuffer
    threadlocals).

    Secondary benefit: threads that never hit the resolver/installer (e.g.
    Workers running pure compute) no longer pay ~5 MB of TLS-block copy at
    spawn.

    Linker flags (Windows release)

    • /OPT:NOICF/OPT:SAFEICF. The previous attempt (commit
      d7c6d59f02) used aggressive /OPT:ICF, which folded
      callBigIntConstructor with constructWithBigIntConstructor
      (byte-identical bodies that both throw) → JSC's InternalFunction
      pointer-identity check broke → "BigInt is not a constructor" and
      expect.any(Ctor) failures → reverted in 218430c731. /OPT:SAFEICF
      (lld-specific) skips address-taken functions, which is exactly what
      those ClassInfo function pointers are, so the identity checks survive.
      This is the same guarantee Linux already gets from -Wl,-icf=safe.
    • /OPT:lldtailmerge — lld-specific string-literal tail merging; no
      MSVC link.exe equivalent.
    • /FILEALIGN:0x200 — was in the old CMake config (kept alongside
      the /OPT:NOICF revert), lost in the ninja migration.

    What this does NOT touch

    • Debug symbols: PDB generation unchanged (/DEBUG:FULL still set;
      PDB is a separate file).
    • napi / libuv: src/symbols.def unchanged; no exports removed.
    • ICU data (24.6 MB of .rdata): also present on Linux; macOS uses
      system libicucore. Windows icu.dll isn't ABI-compatible with what
      WebKit needs without upstream changes, so it stays for now. The existing
      icupkg -r filter already removes ~6.8 MB of converters/translit/rbnf.
    • .pdata (1.0 MB): Windows x64 SEH unwind tables are required for
      structured exception handling and can't be stripped.

    Verification

    • zig:check-all passes on all targets
    • resolver / package_json / resolve_path / router / filesystem_router /
      install / http2 (LSHPACK) tests pass on debug+ASAN
    • test/js/bun/jsc/native-constructor-identity.test.ts added as a
      trip-wire for the ICF constructor-identity regression (BigInt/Symbol not
      constructable, expect.any across Map/Set/WeakMap/WeakSet, all 11
      typed-array constructors distinct, Request/Response/Blob distinct)

    Expected Windows x64 reduction: ~5 MB from .tls alone; SAFEICF +
    tailmerge + FILEALIGN should recover another ~2–4 MB from
    .text/.rdata. Actual numbers from Windows CI artifacts.


    Co-authored-by: robobun <robobun@​users.noreply.redirect.github.com>
    Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@​users.noreply.redirect.github.com>

  • bab007 socket: set Handlers.mode=.client for Windows named-pipe Bun.connect (#30150)

    Repro

    Windows only:

    await Bun.connect({
      unix: '\\\\.\\pipe\\x',
      socket: { data() {}, open() {}, close() {} },
    });
    // then close (or fail) the connection

    On close, Handlers.markInactive() hits active_connections == 0 with
    .mode == .server and does @&ZeroWidthSpace;fieldParentPtr("handlers", this)
    expecting an enclosing Listener — but the handlers live in a
    standalone allocator.create(Handlers) block, so reading
    listen_socket.listener falls past the allocation. Under ASAN that's a
    heap-buffer-overflow; on release it reads garbage and — because the
    .client branch is skipped — leaks the block.

    Cause

    connectInner() calls SocketConfig.fromJS(vm, opts, globalObject, true) at Listener.zig:564. The last argument is is_server, which
    feeds handlers.mode. It was false until 4a06991d3b (#23755) flipped
    it during a bindings-generator refactor.

    The non-pipe path at :797 has always had an explicit handlers_ptr.mode = .client after copying into the heap block (it was
    handlers_ptr.is_server = false before #26539), which masked the flip
    everywhere except the Windows named-pipe early-return at :655–656, which
    never had one.

    is_server is only used to set handlers.mode; nothing else in
    SocketConfig.fromGenerated / Handlers.fromGenerated branches on it.

    Fix

    • Restore is_server=false at the connectInner call site (this is the
      client connect path).
    • Add the same defensive handlers_ptr.mode = .client on the named-pipe
      branch to mirror the non-pipe branch, so the two copies into a
      standalone Handlers block look the same.

    Audited the other standalone allocator.create(Handlers) sites:

    • socket.zig:1557 — sourced from Handlers.fromJS(..., false),
      already .client.
    • socket.zig:2062 — explicit .mode = if (is_server) .duplex_server else .client.

    Verification

    bun run zig:check-all passes (all targets, including both Windows
    arches).

    New Windows-only tests in test/js/bun/net/socket.test.ts:

    • Listen on a named pipe, Bun.connect to it, close → clean exit.
    • Bun.connect to a non-existent pipe → rejects, clean exit.

    Both are spawned in a subprocess so an ASAN crash surfaces as a non-zero
    exit instead of killing the test runner. Skipped on non-Windows (the if (Environment.isWindows) branch is unreachable there, and the non-pipe
    path's :797 override already covers it).


    Co-authored-by: robobun <robobun@​users.noreply.redirect.github.com>

  • 4f13b9 bun -p: return module completion value, not first yielded await (#30208)

    Repro

    $ bun -p '(await 1) + 1'
    1
    $ bun -p 'await Promise.resolve("hello") + " world"'
    hello

    Expected: 2 and hello world.

    Cause

    --print uses ESM module evaluation and captures the last expression
    value via EvalGlobalObject::moduleLoaderEvaluate in
    src/bun.js/bindings/ZigGlobalObject.cpp. For a module with top-level
    await, JSC generator-ifies the body; the first call into
    moduleLoader->evaluate() yields the awaited value (1), not the
    module's final completion value (2). That yielded value was stored as
    the eval result.

    The async resume path (asyncModuleExecutionResume in
    vendor/WebKit/.../JSMicrotask.cpp) calls module->evaluate()
    directly and bypasses the moduleLoaderEvaluate hook, so the hook
    could never observe the final value and correct itself.

    Fix

    After the initial evaluateNonVirtual call, inspect the module
    record's generator state. If it yielded (state is a number other than
    Executing), the module still has work left and result is the
    awaited value. Store the module's asyncCapability() promise instead
    — its eventual resolution is the module's actual completion value.

    The bun -p loop in src/bun.js.zig already unwraps promises via
    asAnyPromise + Bun__onResolveEntryPointResult, so no Zig-side
    changes are needed. For non-TLA modules, behavior is unchanged (state
    is Executing, result stored as before).

    Verification

    • USE_SYSTEM_BUN=1 bun test test/cli/run/run-eval.test.ts -t 'bun -p'
      → 3 fail, 1 pass
    • bun bd test test/cli/run/run-eval.test.ts -t 'bun -p' → 4 pass
    • Full test/cli/run/run-eval.test.ts (33 tests) and TLA regression
      tests still pass.

    Fixes #30207


    Co-authored-by: robobun <robobun@​bun.sh>

  • 6acb78 Make it easy to compare canary vs previous release build size
  • 31c494 socket: balance ref on synchronous doConnect failure for reused sockets (#30168)

    Repro

    const net = require('node:net');
    for (let i = 0; i < 50_000; i++) {
      await new Promise(r => {
        const s = new net.Socket();
        s.on('error', () => {}).on('close', r);
        s.connect({ path: '/nonexistent.sock' }); // ENOENT, synchronous
      });
    }
    // RSS grows ~17 MB (release) / ~60 MB (debug+ASAN)

    Cause

    Listener.connectInner unconditionally socket.ref()s before calling
    doConnect, for both freshly-allocated sockets and reused ones passed
    as prev (the node:net path — _handle is a detached native socket
    from newDetachedSocket).

    When doConnect fails synchronously (ENOENT unix path, bad fd, EMFILE),
    the socket never leaves .detached, so handleConnectError's
    needs_deref = !this.socket.isDetached() is false and its own deref
    does not fire. The caller is responsible for balancing the ref — but the
    existing line only did so when maybe_previous == null:

    if (maybe_previous == null) socket.deref();

    That guard was added in #23936 to fix the Bun.connect({fd: badFd})
    leak (fresh-socket case) but left the reused-socket case unbalanced: one
    native TCPSocket struct + its connection string leak per failed
    reconnect.

    Fix

    Drop the guard. The ref() at :849 is unconditional, so the balancing
    deref() on sync failure must be too.

    Verification

    New test in test/js/node/net/node-net.test.ts does 20k failed unix
    connects in a subprocess and samples RSS after equal-sized work units. A
    real leak grows linearly; noise plateaus.

    RSS growth over 12.5k post-warmup iterations
    before (debug+ASAN) ~14 MB
    before (release) ~6 MB
    after (debug+ASAN) ±1 MB

    Threshold 3 MB. The original #23936 test (Bun.connect with bad fd) and
    socket-retention.test.ts still pass.


    Co-authored-by: robobun <robobun@​users.noreply.redirect.github.com>

  • a47ccf socket: null handlers pointer after client-mode Handlers are freed (#30176)

    What

    Follow-up to #30148, which nulls this.handlers in the socket's
    markInactive() after Handlers.markInactive() frees the client-mode
    allocation. That covers the onClose → This.markInactive() path, but
    not the paths where scope.exit() is the decrement that frees the
    handlers — most notably handleConnectError, where the socket never
    reaches markActive() so is_active == false and the deferred
    this.markInactive() is a no-op.

    Handlers.markInactive() (client mode, active_connections → 0) does
    this.deinit(); vm.allocator.destroy(this). Any caller that still holds
    the pointer — the socket's handlers field — must clear it, otherwise:

    • Listener.connectInner at :664 / :728 / :814 — a reconnect through
      the same native socket as prev calls prev_handlers.deinit() then
      allocator.destroy(prev_handlers) on freed memory (UAF + double-free).
    • socket.zig getListener — reads handlers.mode on freed memory.

    Repro

    const net = require('node:net');
    const s = new net.Socket();
    let handle;
    s.on('error', () => {});
    s.once('connectionAttemptFailed', () => { handle = s._handle; });
    s.on('close', () => {
      // handleConnectError's scope.exit() freed the Handlers; the
      // socket-level markInactive() never ran (is_active == false).
      handle.listener;   // ← UAF on current main
    });
    s.connect(1, '127.0.0.1');

    Under debug+ASAN on current main (after #30148):

    AddressSanitizer: use-after-poison
    READ of size 1 ...
      #0 NewSocket(false).getListener  src/bun.js/api/bun/socket.zig:769
    

    Fix

    Handlers.markInactive() and Scope.exit() now return whether the
    allocation was destroyed. This.markInactive() and every scope.exit()
    site in socket.zig null this.handlers when it was. This replaces
    #30148's mode-based check with the precise destroyed signal and extends
    it to the handleConnectError / handleError paths.

    Verification

    Three tests in test/js/node/net/node-net.test.ts (gated to
    debug/ASAN):

    main (incl. #30148) with this PR
    handle.listener after connectError ASAN use-after-poison @​
    getListener undefined
    handle.listener after close passes (covered by #30148)
    passes
    reconnect via saved native handle passes (covered by #30148)
    passes

    The first test is the one that demonstrates this PR's incremental fix.


    Co-authored-by: robobun <robobun@​users.noreply.redirect.github.com>

  • 797dee crypto: fix f32 precision loss and unit mismatch in randomFill bounds checks (#30134)

    What does this PR do?

    Fixes two bounds-checking bugs in crypto.randomFill /
    crypto.randomFillSync:

    1. Heap overflow via f32 precision loss in the size + offset > length check
    2. Unit mismatch in the 3-arg randomFill(buf, offset, cb)
      default-size computation causing integer underflow or silent under-fill
      for multi-byte typed arrays

    Reproduction

    // (1) writes 1 byte past the end of the allocation instead of throwing
    require('crypto').randomFillSync(new ArrayBuffer(16777218), 16777217, 2);
    
    // (2a) panics in debug / throws spurious ERR_OUT_OF_RANGE in release
    require('crypto').randomFill(new Float64Array(10), 2, () => {});
    
    // (2b) leaves bytes 744..800 un-randomized
    require('crypto').randomFill(new Float64Array(100), 1, () => {});

    Node.js throws ERR_OUT_OF_RANGE for (1) and fills the full tail for
    (2).

    Root cause

    (1) In assertSize, the u32 offset was cast to f32 before
    being added to the f64 size:

    if (size + @&ZeroWidthSpace;as(f32, @&ZeroWidthSpace;floatFromInt(offset)) > @&ZeroWidthSpace;as(f64, @&ZeroWidthSpace;floatFromInt(length))) {

    f32 only represents integers exactly up to 2²⁴ = 16777216. An offset
    of 16777217 rounds down to 16777216, so with length = 16777218 and
    size = 2 the check evaluates 2 + 16777216 > 16777218false, when
    the true sum 16777219 exceeds length. The bogus offset/size are then
    used to slice the buffer (sync) or handed to the threadpool as a raw
    [*]u8 span (async), producing an OOB write.

    (2) In randomFill's 3-arg branch, the default size was computed as
    buf.len - offset where buf.len is the element count but offset
    had already been scaled to a byte offset by assertOffset. For
    Float64Array(10) with offset 2, that's 10 - 16 → usize underflow.

    Fix

    • Change all four f32 casts in assertOffset / assertSize to f64
      (exact for all integers up to 2⁵³, well beyond max_possible_length).
    • In the 3-arg branch, set size_value = .js_undefined to fall through
      to the existing buf.byte_len - offset default, keeping both operands
      in byte units.

    Verification

    • bun bd test test/js/node/crypto/crypto-random.test.ts — 14 pass, 0
      fail
    • test/js/node/test/parallel/test-crypto-random.js — passes
    • test/js/node/test/parallel/test-crypto-randomfillsync-regression.js
      — passes
    • Without the fix, the new tests panic in debug (Zig bounds check /
      integer overflow) and fail in release.

    Co-authored-by: robobun <robobun@​users.noreply.redirect.github.com>

  • 6d73f5 fs: deref Dirent.path in readdirSync recursive error cleanup (#30167)

    What

    When fs.readdirSync(dir, { recursive: true, withFileTypes: true })
    fails partway through (e.g. a subdirectory returns ELOOP/EACCES on
    open), the error-path cleanup in readdirInner was only calling
    result.name.deref() on each collected Dirent, leaking the ref on
    Dirent.path that was taken via dirent_path_prev.ref() in
    readdirWithEntriesRecursiveSync.

    The async recursive path (AsyncReaddirRecursiveTask.performWork) and
    the non-recursive path (readdirWithEntries) already call
    Dirent.deref() which releases both name and path. This brings the
    sync-recursive error path in line.

    Repro

    const fs = require('fs');
    // dir contains a self-referential symlink at depth 2, so the BFS walker
    // collects a bunch of Dirents before hitting ELOOP and unwinding.
    for (let i = 0; i < 30000; i++) {
      try { fs.readdirSync(dir, { recursive: true, withFileTypes: true }); } catch {}
    }
    // RSS grows linearly with iteration count

    Verification

    The new test builds a wide tree under a long path with a symlink loop at
    depth 2, warms up to saturate ASAN quarantine, then runs 20k failing
    readdirSync calls and asserts RSS growth stays under 64 MB.

    build RSS delta (20k iters after 10k warmup)
    before fix (debug+ASAN) ~130 MB
    before fix (release) ~124 MB
    after fix (debug+ASAN) ~26 MB

    Co-authored-by: robobun <robobun@​users.noreply.redirect.github.com>

  • d971e4 webcore/Blob: free allocations on truncated structured-clone deserialize (#30152)

    Problem

    _onStructuredCloneDeserialize in src/bun.js/webcore/Blob.zig reads a
    Blob/File from untrusted bytes — reachable via
    require('bun:jsc').deserialize, require('node:v8').deserialize, and
    cross-process IPC advanced serialization. It allocates at several points
    along the way:

    1. readSlice allocates a buffer, reads into it, and returns
      error.TooSmall on a short read — without freeing the buffer.
    2. content_type is allocated with no errdefer; every subsequent
      try leaks it.
    3. The bytes payload is allocated and wrapped in a stack Blob (owning
      a Store) with no errdefer; the following stored_name
      length/payload reads leak the whole thing on truncation.
    4. The stack Blob is heap-promoted via Blob.new; the trailer reads
      (is_jsdom_file, last_modified, v3 File name) then leak the heap
      *Blob, its Store, and its bytes.
    5. The stored_name slice is leaked when the store is null
      (zero-length bytes payload).

    This is distinct from #30072, which fixed the out-of-bounds offset
    clamp in the same function; this is the error-path cleanup.

    Repro

    const { serialize, deserialize } = require("bun:jsc");
    const full = new Uint8Array(
      serialize(new File([Buffer.alloc(65536)], "f", { type: Buffer.alloc(65536, "t").toString() })),
    );
    for (let i = 0; i < 10000; i++) {
      try { deserialize(full.slice(0, full.length - 1)); } catch {}
    }
    // RSS grows unbounded

    Fix

    • readSlice: errdefer allocator.free(slice) so a short read releases
      the buffer.
    • After content_type allocation: errdefer allocator.free(content_type) — it isn't attached to the blob until the
      very end of the success path.
    • Inside the .bytes arm: errdefer blob.deinit() on the stack blob so
      the Store (and its bytes) are released when the stored_name reads
      fail; free name explicitly when there is no store to own it.
    • After the switch: errdefer blob.deinit() on the heap *Blob so
      the trailer reads release the heap object, its Store, and its bytes.

    Verification

    Two new tests in test/js/web/structured-clone-blob-file.test.ts:

    • truncated payload at every byte boundary throws cleanly
      serializes a File, slices it at every byte offset, and asserts each
      deserialize throws rather than crashing or returning a half-built
      Blob. Sweeps every error edge in the decoder.
    • truncated payload does not leak ... — serializes a File with
      64 KiB of content-type and 64 KiB of body, truncates at five points
      chosen to land after each allocation site, and loops deserialize on
      them. Measures RSS across 1500 iterations after a warmup.
    RSS delta over measured window
    without fix (release) 758 MiB
    without fix (bun bd, ASAN) 977 MiB
    with fix (bun bd, ASAN) ~4 MiB (allocator noise, plateaus)

    All 34 tests in the file pass with the fix.


    Co-authored-by: robobun <robobun@​users.noreply.redirect.github.com>

  • d6f215 fix(Bun.serve): HEAD response Transfer-Encoding/Content-Length freed before write (#30155)

    Repro

    Bun.serve({
      port: 0,
      fetch: () =>
        new Response("hello", {
          headers: [
            ["Transfer-Encoding", "gzip"],
            ["Transfer-Encoding", "chunked"],
          ],
        }),
    });
    // HEAD / → ASAN heap-use-after-free in uWS::HttpResponse::writeHeader

    The duplicate entries make FetchHeaders combine them via
    makeString(), producing a StringImpl held only by the header map —
    the minimal condition for the free to actually happen.

    StringImpl is allocated via bmalloc which ASAN doesn't instrument by
    default; with Malloc=1 (bmalloc → system heap) the debug build
    reports:

    AddressSanitizer: heap-use-after-free
    READ of size 13
      #2 uWS::HttpResponse<false>::writeHeader
      #5 doRenderHeadResponse  RequestContext.zig:1378
    freed by:
      #23 HTTPHeaderMap::remove
      #28 doWriteHeaders       RequestContext.zig:2303
      #29 renderMetadata       RequestContext.zig:2209
      #30 doRenderHeadResponse RequestContext.zig:1377
    

    Cause

    doRenderHeadResponse() calls headers.fastGet(.TransferEncoding),
    which returns a ZigString that borrows the header map entry's
    StringImpl bytes (no ref taken). For an ASCII value, toSlice() also
    borrows rather than copying. It then calls this.renderMetadata(),
    whose doWriteHeaders() does headers.fastRemove(.TransferEncoding)
    (and renderMetadata also swapInitHeaders() + deref()s the whole
    FetchHeaders). When the map held the only reference to the
    StringImpl, it's destroyed right there — and the very next line
    resp.writeHeader("transfer-encoding", transfer_encoding_str.slice())
    writes the freed bytes to the socket.

    The adjacent Content-Length branch has the same bug:
    std.fmt.parseInt() runs on the borrowed slice after
    renderMetadata() has already fastRemove(.ContentLength)'d it.

    Fix

    • Transfer-Encoding: use toSliceClone() instead of toSlice() so
      the value is owned and survives renderMetadata().
    • Content-Length: parse the integer before renderMetadata() (and
      drop the slice immediately), so the borrowed bytes are never touched
      after the header entry is removed. No extra allocation needed since only
      the parsed usize is used afterwards.

    Verification

    New test in test/js/bun/http/bun-server.test.ts (inside the existing
    HEAD requests #15355 block) spawns a subprocess with Malloc=1
    (non-Windows), serves HEAD responses whose Transfer-Encoding /
    Content-Length values are makeString()-combined (sole-owner
    StringImpl), and asserts the raw wire output.

    git stash push -- src/   → test fails with "AddressSanitizer: heap-use-after-free" in stderr
    git stash pop            → test passes
    

    All other tests in the HEAD requests #15355 describe block continue to
    pass.

    Co-authored-by: robobun <robobun@​users.noreply.redirect.github.com>

  • 096a24 sql(mysql): pin ArrayBuffer backing store while binding BLOB parameters (#30159)

    Repro

    const buf = new ArrayBuffer(64);
    const ta = new Uint8Array(buf);
    for (let i = 0; i < ta.length; i++) ta[i] = i;
    
    const values = [1, ta, "placeholder"];
    let calls = 0;
    Object.defineProperty(values, "2", {
      get() {
        if (++calls >= 2 && buf.byteLength > 0) {
          // zero-copy transfer: same backing pointer
          new Uint8Array(buf.transfer()).fill(0xff);
        }
        return "evil";
      },
    });
    
    await sql.unsafe(`INSERT INTO t (id, data, name) VALUES (?, ?, ?)`, values);
    // stored `data`: 64 × 0xff  — should be 0x00..0x3f

    Cause

    Value.fromJS for MYSQL_TYPE_*BLOB returned
    ZigString.Slice.fromUTF8NeverFree(array_buffer.slice()), borrowing the
    backing store without protecting it.

    MySQLQuery.bind() collects every parameter into a []Value first and
    only then calls execute.write(). Converting later parameters can run
    user JS — array index getters via QueryBindingIterator.next(),
    toJSON via jsonStringifyFast, toString via bun.String.fromJS
    and that JS can transfer()/detach an earlier buffer, or drop the last
    JS reference to it and force GC. execute.write() then reads bytes the
    caller no longer owns.

    For a non-resizable ArrayBuffer, buf.transfer() with no arguments is
    zero-copy in JSC: the new buffer takes ownership of the same backing
    pointer, so overwriting the new buffer mutates exactly what the borrowed
    slice still points at. With a resizing transferToFixedLength(n) the
    old backing store is freed outright.

    (The Postgres path doesn't have this window: PostgresRequest.writeBind
    writes each parameter to the wire inside the loop before touching the
    next one.)

    Fix

    bindAndExecute now runs inside a stack-scoped MarkedArgumentBuffer
    (same pattern as udp_socket.zig sendMany) that Value.fromJS
    appends borrowed buffer/Blob wrappers to, and the backing ArrayBuffer
    is pinned via JSC__JSValue__borrowBytesForOffThread (the same helper
    Bun.Image uses):

    • Oversize/Wasteful/DataView/JSArrayBufferArrayBuffer::pin()
      makes it non-detachable — transfer() hands the user a copy and
      leaves the original backing store intact. The wrapper is appended to the
      MarkedArgumentBuffer so GC can't sweep the cell whose
      RefPtr<ArrayBuffer> keeps the storage alive (params lives on the
      malloc heap and isn't scanned).
    • FastTypedArray (≤ ~1 KB, GC-movable vector) → bytes are duped.
      Pinning would force slowDownAndWasteMemory() which copies anyway.
    • Blob → plain borrow (immutable store, no detach); wrapper appended
      to the MarkedArgumentBuffer so the store survives GC.

    Value.bytes now carries the JSValue to unpin alongside the slice:

    pub const Bytes = struct {
        slice: JSC.ZigString.Slice = .empty,
        pinned: JSC.JSValue = .zero,
    };

    Value.deinit() — already run via Execute.deinit() after
    execute.write(), inside the MarkedArgumentBuffer scope — calls
    JSC__JSValue__unpinArrayBuffer(pinned) and frees the dupe via
    slice.deinit().

    Verification

    test/js/sql/sql-mysql-bind-blob-borrow.test.ts primes the
    prepared-statement cache so the second call goes straight to
    bindAndExecute, then binds [id, Uint8Array(buf), <getter>] where the
    getter transfer()s buf and fills the result with 0xff during the
    bind loop. It also asserts buf is detachable again after the query
    resolves (pin released).

    Fail-before (src/ reverted, test kept):

      {
        "detachableAfter": true,
        "detached": true,
    -   "gotHex": "000102…3f",
    -   "match": true,
    +   "gotHex": "ffffff…ff",
    +   "match": false,
        "originalHex": "000102…3f",
      }
    (fail) mysql (local) > BLOB param backing store is pinned across the bind loop
    

    Pass-after: gotHex == originalHex, match: true, detachableAfter: true (pin released), 5 expect() calls.

  • a50b47 fix(ipc): run SendQueue.deinit() from IPCInstance.deinit on getIPCInstance failure (#30177)

    What

    Follow-up to #30051, which added SendQueue.after_close_task tracking
    so SendQueue.deinit() can cancel a pending _onAfterIPCClosed task
    before the owner frees it.

    IPCInstance.deinit was still TrivialDeinitbun.destroy, so on
    the getIPCInstance error path the embedded SendQueue was never
    deinited and the tracked task was never cancelled.

    On Windows, windowsConfigureClient sets data.socket = .open
    before calling uv_read_start. If uv_read_start fails, it calls
    closeSocket() which queues the _onAfterIPCClosed task (socket was
    .open), returns an error, and getIPCInstance then calls
    instance.deinit() — freeing the IPCInstance and its embedded
    SendQueue with the task still queued.

    Fix

    Replace TrivialDeinit with an explicit deinit that runs
    this.data.deinit() before bun.destroy(this), so the
    after_close_task cancel path added in #30051 actually fires for this
    owner too.

    Test

    Added a case in spawn.ipc.test.ts that drives a child through the
    getIPCInstance error path with an unusable NODE_CHANNEL_FD and
    verifies clean teardown. The specific
    uv_read_start-fails-after-uv_pipe_open-succeeds trigger is
    Windows-only and not deterministically reproducible from userland; the
    test covers the surrounding error-path teardown on both platforms.

    zig:check-all passes on all targets.

    Co-authored-by: robobun <robobun@​users.noreply.redirect.github.com>

  • 570653 server: hold Response via WeakPtr instead of a raw pointer (#30174)

    What

    RequestContext stored response_ptr: ?*Response and, for plain
    Blob/InternalBlob/WTFStringImpl bodies, left the Response JSValue
    unprotected. renderBytes()tryEnd() can hit backpressure and
    register an onWritable callback, unwinding with response_ptr still
    set. Nothing rooted the Response (RequestContext is a pool struct, not
    GC-visited), so GC could finalize it. If the client then aborted while
    the request body was still .Locked, onAbort() dereferenced a freed
    *Response — heap-use-after-free under ASAN at
    RequestContext.zig:692.

    Repro

    POST → handler returns new Response(8MB string) sync
      → tryEnd() backpressure (client paused) → onWritable registered, return
      → Bun.gc(true) → Response collected, response_ptr dangles
      → client.destroy() → onAbort → deref response_ptr → UAF
    

    ASAN trace (unpatched):

    ==ERROR: AddressSanitizer: use-after-poison
      #0 bun.js.bindings.JSRef.JSRef.tryGet
      #1 bun.js.webcore.Response.getBodyReadableStream
      #2 RequestContext.onAbort src/bun.js/api/server/RequestContext.zig:693
      #3 uWS::HttpContext<false>::onClose
    

    Fix

    Give Response a weak_ptr_data field (mirroring Request.WeakRef)
    and replace response_ptr: ?*Response with response_weakref: Response.WeakRef via bun.ptr.WeakPtr. Response.destroy() now defers
    freeing the allocation until outstanding weak refs drop; WeakRef.get()
    returns null once the contents are gone.

    onAbort / handleResolveStream / handleRejectStream call .get()
    and simply skip the readable-stream cleanup when it's null — a no-op for
    in-memory bodies anyway, since the body was already extracted via
    useAsAnyBlobAllowNonUTF8String() before backpressure.

    File-backed and .Locked bodies continue to protect()
    response_jsvalue as before; those paths need the Response's
    status/headers alive across the async hop for renderMetadata(). The
    hot path (small in-memory responses) no longer needs
    protect()/unprotect().

    The two redundant ctx.response_ptr = response assignments right before
    ctx.render(response) are dropped — render() already sets the weak
    ref.

    Verification

    test/js/bun/http/serve-response-gc-backpressure-abort.test.ts
    (ASAN/debug-only): POST with incomplete chunked body so request_body
    stays .Locked, handler returns a large string Response, client pauses
    so tryEnd() stalls, Bun.gc(true) loop, then client closes.

    • without fix: AddressSanitizer: use-after-poison in onAbort
      Response.getBodyReadableStream
    • with fix: passes, abortCount === iterations, pendingRequests === 0

    Co-authored-by: robobun <robobun@​users.noreply.redirect.github.com>

  • 0150c5 worker: fix cross-thread HandleSet race in getHeapSnapshot (#30185)

    test/js/node/worker_threads/worker_threads.test.ts occasionally
    segfaults in CI with

    panic: Segmentation fault at address 0x10
    

    on a GC helper thread:

    wtfThreadEntryPoint
      AutomaticThread::start
        ParallelHelperPool::Thread::work
          Heap::runBeginPhase(GCConductor)::$_1
            SlotVisitor::drainFromShared
              MarkingConstraintSolver::runExecutionThread
                MarkingConstraint::execute   ← "Sh" Strong Handles
                  HandleSet::visitStrongHandles
                    *(nullptr + offsetof(HandleNode, m_value))  = *(0x10)
    

    (decoded from the bun.report trace on build 50529 / 🐧 13
    x64

    and symbolized against that build's bun-profile).

    Cause

    jsWorkerPrototypeFunction_getHeapSnapshotBody does:

    Strong<JSPromise> strong(vm, promise);                      // parent VM's HandleSet
    worker.postTaskToWorkerGlobalScope([strong, parentId](auto& workerCtx) {
        ...
        ScriptExecutionContext::postTaskTo(parentId,
            [strong, snapshot = ...](auto& parentCtx) { ... }); // runs on worker thread
    });

    JSC::Strong<T> has no move constructor. Capturing it by value
    copy-constructs it, which calls HandleSet::allocate() +
    m_strongList.push(); destroying it calls HandleSet::deallocate() +
    NodeList::remove(). Both happen on the worker thread against the
    parent VM's HandleSet, without the parent VM's lock.

    HandleSet::m_strongList is a SentinelLinkedList<HandleNode> — not
    thread-safe. push/remove transiently null m_next/m_prev. The
    parent VM's "Sh" (Strong Handles) marking constraint
    (Heap::addCoreConstraints) iterates that list during GC; when it
    follows a null m_next it reads *((HandleNode*)nullptr)->slot()
    *(0x0 + 0x10).

    The heapHelperPool() is process-global, so the crashing helper thread
    belongs to the parent VM's collector even though the worker VM's
    BunV8HeapSnapshotBuilder full GC is in progress at the same time.

    This has been there since getHeapSnapshot was added — the recent
    worker lifetime rewrites (#29957, #29937) didn't introduce it.

    Fix

    Heap-allocate the Strong<JSPromise> once on the parent thread and pass
    only the raw pointer through the cross-thread lambdas. The worker thread
    never dereferences it, so it never touches the parent VM's HandleSet.
    The parent-side completion lambda resolves the promise and frees the
    handle.

    Worker::postTaskToWorkerGlobalScope now returns bool so a lost race
    to Closing/Closed (worker exited between isOnline() and the post)
    rejects with ERR_WORKER_NOT_RUNNING instead of silently leaking the
    handle. If postTaskTo(parentId, …) on the return trip fails (parent
    context gone), the handle intentionally leaks — deleting a parent-VM
    Strong from the worker thread is exactly the bug we're fixing, and the
    parent VM is tearing down anyway.

    Verification

    Stress fixture (heap-snapshot-gc-race-fixture.js, 300 iterations of
    await worker.getHeapSnapshot(); Bun.gc(true)), 40 runs each on
    linux-x64 release:

    build segfault at 0x10
    52bdf47 (CI artifact, no fix) 15 / 40
    this branch 0 / 40

    The new worker_heap_snapshot_gc.test.ts runs the fixture — 300 iters
    in release, 5 in debug (a single debug heap snapshot takes ~1.6s so the
    race window, which is a handful of instructions after each snapshot, is
    impractical to hit there; the debug pass is a functional check).

    Drive-by: non-LTO strip leaves orphan PT_GNU_EH_FRAME

    While reproducing I hit a second, unrelated crash in locally-built
    (non-LTO) release binaries: stripFlags removed .eh_frame_hdr on
    linux-gnu unconditionally, but the linker only passes
    --no-eh-frame-hdr when LTO is on. GNU strip doesn't rewrite the
    program header table, so the PT_GNU_EH_FRAME phdr was left pointing at
    unmapped memory and any stack unwind (e.g. WTF::Thread teardown after a
    worker exits) faulted. CI release builds always have LTO on so they
    weren't affected. Gated the section removal on c.lto to match the
    linker flag.


    Co-authored-by: robobun <robobun@​users.noreply.redirect.github.com>
    Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@​users.noreply.redirect.github.com>

  • 0561f8 Fix HTMLRewriter use-after-free when handler rejects during end() (#30196)

    What does this PR do?

    Fixes a use-after-free in HTMLRewriter.transform() that caused flaky
    SIGSEGV crashes found by fuzzing.

    When transforming a string or ArrayBuffer, the body is buffered
    synchronously and fed to lol-html via write() followed by end(). If
    a document/element handler returns a rejected promise for the final
    lastInTextNode chunk (emitted from end()), the end() catch branch
    in BufferOutputSink.runOutputSink would call response.finalize()
    directly on the output Response.

    That Response is already owned by its JS wrapper cell (created earlier
    in init() via sink.response.toJS()), so destroying it in-place left
    the wrapper's m_ctx pointing at freed memory. When GC later swept the
    wrapper, its destructor invoked Response.finalize() again on that
    freed pointer:

    AddressSanitizer: use-after-poison
        #0 bun.js.bindings.JSRef.JSRef.deinit        src/bun.js/bindings/JSRef.zig:188
        #1 bun.js.bindings.JSRef.JSRef.finalize      src/bun.js/bindings/JSRef.zig:200
        #2 bun.js.webcore.Response.finalize          src/bun.js/webcore/Response.zig:474
        #3 ResponseClass__finalize                   codegen/ZigGeneratedClasses.zig:17250
        #4 WebCore::JSResponse::~JSResponse()        codegen/ZigGeneratedClasses.cpp:54979
    

    The write() error path (just above it) already handled this correctly
    by returning the error and letting the JS wrapper own the Response
    lifetime. This PR makes the end() error path do the same — drop the
    manual response.finalize() and sink.response = undefined.

    How did you verify your code works?

    Minimal repro that reliably triggers the ASAN error before the fix and
    passes cleanly after:

    const rewriter = new HTMLRewriter();
    rewriter.onDocument({
      text(chunk) {
        if (chunk.lastInTextNode) {
          return Promise.reject(new Error("boom"));
        }
      },
    });
    try {
      rewriter.transform(new Uint8Array([97, 98, 99]).buffer);
    } catch (e) {}
    Bun.gc(true);

    Added regression tests in test/js/workerd/html-rewriter.test.js
    covering both ArrayBuffer and string inputs. All existing HTMLRewriter
    tests pass.


    Co-authored-by: robobun <robobun@​users.noreply.redirect.github.com>

  • d0a0bc Preserve ICC colour profile through Bun.Image JPEG/PNG encode (#30201)

    Fixes #30197.

    Repro

    // photo.jpg is a Jpegli XYB or Display-P3 JPEG
    Bun.file("photo.jpg").image().png().write("out.png");
    // out.png looks washed-out / shifted — the JPEG's APP2 ICC chunk is gone

    Cause

    src/image/codecs.zig's Decoded struct carried { rgba, width, height }
    — no slot for a colour profile. Each codec decoded into a bare RGBA
    buffer and the JPEG APP2 ICC_PROFILE marker / PNG iCCP chunk was
    dropped on the floor. When the RGBA was then re-encoded, whatever
    decoder looks at the output reinterprets it as sRGB and shifts the
    colours. Visible on any non-sRGB input (P3, Adobe RGB, XYB).

    Fix

    Wire the profile through the pipeline:

    • Decoded.icc_profile: ?[]u8 (bun.default_allocator-owned) plus a
      deinit() for the new two-field ownership.
    • codec_jpeg decode sets TJPARAM_SAVEMARKERS=2 before header parse
      and pulls the marker via tj3GetICCProfile; encode embeds via
      tj3SetICCProfile.
    • codec_png decode pulls the iCCP chunk via spng_get_iccp
      (no-profile case is SPNG_ECHUNKAVAIL, not an error); encode embeds
      via spng_set_iccp. Indexed PNG drops the profile — quantisation
      invalidates the ICC mapping.
    • applyPipeline/applyOrientation used to assign the whole Decoded
      returned from rotate() (which has icc_profile: null), which would
      wipe the source's profile. They now swap only the pixel + dim slots;
      the profile attaches to the decode, not the geometry.
    • On encode, PipelineTask.run copies decoded.icc_profile into the
      EncodeOptions.icc_profile it hands to the codec. Unchanged
      when the caller (future .withIccProfile()) already set one.

    Scope

    • JPEG + PNG encode: preserved.
    • WebP encode: drops the profile. Preserving it requires
      libwebpmux/libwebpdemux, neither of which is in the build today;
      kept out of this PR to limit churn. Opening it separately.
    • System backend decode (backend == "system", CoreGraphics/WIC on
      macOS/Windows): already applies colour management during decode — the
      RGBA it emits is in the display space, so dropping the profile is the
      correct thing there. No change.

    Verification

    test/js/bun/image/image.test.ts — new describe("ICC profile"):

    • PNG iCCP round-trips byte-for-byte through PNG re-encode.
    • iCCP survives resize and rotate (catches the d.* = next bug).
    • PNG → JPEG transfers the profile into an APP2 ICC_PROFILE marker
      (reassembled across multi-segment splits).
    • Absence case: PNG/JPEG without a profile don't synthesise one.
    • JPEG → JPEG round-trip preserves the marker.

    All 211 image tests pass. Gate: git stash the codec changes + rebuild
    reproduces 5/7 new-test failures (the two "no profile stays no profile"
    tests correctly pass before and after).


    Co-authored-by: robobun <robobun@​bun.sh>

  • 9bf6ea bake: fix entry_points UAF + inotify merged names; deflake test harness (#30181)

    What

    Surveyed ~40 recent CI builds for bake test flakes and fixed the
    underlying causes.

    Flake Bump lint-staged from 13.1.2 to 13.2.0 #1 (93 hits): `dev-and-prod-12: hmr handles rapid consecutive

    edits`

    Two modes:

    • Windows: Bun.write is open(O_TRUNC) then async write with a
      JS-thread round-trip in between. The watcher fires on the 0-byte
      truncation, bundles an empty module that never calls accept(), and the
      next update falls through to fullReload() → client exits
      unexpectedReload.
    • All platforms: after the final drain client.messages.length = 0,
      a late hot_update lands during the following await client.js\…`` and
      trips the unread-messages disposal check.

    Fix (test): use fs.writeFileSync for the rapid burst (microsecond
    truncate window), write identical content so same-sourceMapId
    duplicates are deterministic on every platform, and follow with a
    synchronized sentinel write — once the sentinel arrives over the ordered
    WS, every prior hot_update has been applied and nothing can leak into
    disposal.

    Flake Bump typescript from 4.9.5 to 5.0.2 #2 (29 hits): Timeout waiting for line "… socket connected"

    Across react-spa, html, ssg-pages-router, bundle, hot, esm,
    css, incremental-graph-edge-deletion. waitForLine()'s default
    timeout was 1 second on non-Windows release builds — the Node client
    has to start, import happy-dom, fetch, parse HTML, run the bundle, and
    open a WebSocket in that window. The ASAN_TIMEOUT_MULTIPLIER constant
    existed but was never applied.

    Fix (harness): raise the base and apply a unified WAIT_MULTIPLIER
    (debug × ASAN × CI). Apply the same multiplier to expectMessage /
    expectReload / getStringMessage / getMostRecentHmrChunk (all
    hardcoded 1000 ms), and raise the per-test base accordingly. Also make
    waitForLine scan already-buffered lines via the previously-dead
    cursor field so an await between stream creation and the call can't
    drop the match.

    Underlying DevServer bugs found while stress-testing

    • IncrementalGraph.invalidate use-after-poison: the incoming
      path (a slice into HotReloadEvent.extra_files) was stored in
      entry_points, but the event is reset — and its extra_files may be
      reallocated by the watcher thread — before entry_points is consumed by
      startAsyncBundle / TestingBatch. Since getIndex(path) already
      succeeded, store the graph-owned keys[index] instead.
    • TestingBatch.append stored the same borrowed slices as
      persistent keys across multiple HotReloadEvent.run calls. Dupe keys on
      insert; free them in TestingBatch.deinit.
    • onFileUpdate (Linux) indexed only
      changed_files[event.name_off] for a merged directory WatchEvent.
      When an atomic-save editor (vim/emacs/IntelliJ) lands CREATE tmp +
      MOVED_TO target in one coalesced inotify batch, the rename target was
      dropped and never re-watched. Forward every name via event.names().

    Harness robustness

    • waitForHotReload used clientWaits === connectedClients.size;
      straggler HMR events from prior unsynchronized writes could push the
      count past, so it never matched. Use >=.
    • waitForHotReload now rejects on dev-server panic instead of hanging
      to the test timeout.
    • Detect AddressSanitizer / ThreadSanitizer / ==ABORTING in
      subprocess output as a panic.

    How verified

    • New hot.test.ts case floods a watched directory (32 decoy creates +
      unlink + rename-over) to force inotify coalescing:
    • without src/ changes → 3/3 fail under ASAN (use-after-poison in
      TestingBatch.append via wyhash)
      • with src/ changes → 10/10 pass
    • dev-and-prod.test.ts -t "rapid consecutive edits" → 10/10 pass
    • Full runs of hot, dev-and-prod, bundle, css, html, esm,
      stress, ssg-pages-router, incremental-graph-edge-deletion,
      plugins, sourcemap, server-sourcemap, vfile, framework-router,
      deinitialization → all green (esm-11 is a pre-existing skip: ["ci"])
    • zig:check-all passes on all targets

    Supersedes #29575 and #28211.

    Fixes #19732


    Co-authored-by: robobun <robobun@​users.noreply.redirect.github.com>

  • d484fd Fix null SSL* dereference in TLSSocket.getServername after close (#30145)
  • d4cd11 Fix type confusion in JSBundlerPlugin sync-exception fallback (#30153)

    What

    The C++ synchronous-exception fallback in JSBundlerPlugin__matchOnLoad
    / JSBundlerPlugin__matchOnResolve passed the wrong which
    discriminator to JSBundlerPlugin__addError, causing Zig to reinterpret
    a *Load as a *Resolve (and vice versa).

    The same source fix was independently identified in #29486 — this PR
    additionally adds a deterministic regression test for the fallback path.

    Root cause

    Zig's JSBundlerPlugin__addError casts its ctx pointer based on the
    which value:

    switch (which.to(i32)) {
        0 => { const resolve: *JSBundler.Resolve = bun.cast(*Resolve, ctx); ... },
        1 => { const load: *Load = bun.cast(*Load, ctx); ... },
        ...
    }

    The JS builtin (BundlerPlugin.ts) passes these correctly:
    runOnResolvePluginsaddError(..., 0), runOnLoadPlugins
    addError(..., 1).

    When the builtin itself throws synchronously (e.g. a stack overflow or
    termination exception that escapes the async IIFE, or a tampered
    Promise.prototype.then), the C++ DECLARE_TOP_EXCEPTION_SCOPE
    fallback kicks in. That fallback had the values swapped:

    • matchOnLoad (ctx is *Load) passed jsNumber(0) → Zig cast to
      *Resolve
    • matchOnResolve (ctx is *Resolve) passed jsNumber(1) → Zig cast
      to *Load

    matchOnLoad additionally passed plugin->plugin.config (the BundleV2
    completion task) as the second argument, where Zig expects the
    JSBundlerPlugin* so it can call plugin.globalObject(). Both the JS
    host function jsBundlerPluginFunction_addError and the
    matchOnResolve fallback already pass the JSBundlerPlugin* there.

    Fix

    src/bun.js/bindings/JSBundlerPlugin.cpp:

    • matchOnLoad fallback: jsNumber(0)jsNumber(1), second arg
      plugin->plugin.configplugin
    • matchOnResolve fallback: jsNumber(1)jsNumber(0), route
      through plugin->plugin.addError for consistency with the other
      callsite

    Verification

    Added a test in test/bundler/bun-build-api.test.ts that
    deterministically reaches the C++ fallback: the plugin callback arms a
    one-shot throwing Promise.prototype.then and returns a pending
    promise, so the builtin's post-IIFE public .then call throws
    synchronously and surfaces to DECLARE_TOP_EXCEPTION_SCOPE.

    Before the fix (bun bd, src/ stashed):

    • onLoad: UBSan member call on null pointer of type 'JSC::JSGlobalObject' (release bun: SIGSEGV at 0x38)
    • onResolve: build hangs — the resolve counter is never decremented
      because Zig dispatched to onLoadAsync instead

    After the fix: both report the error via result.logs and the build
    completes with success: false.

    bundler_plugin.test.ts and plugin-error-nested-throw.test.ts
    continue to pass.


    Co-authored-by: robobun <robobun@​users.noreply.redirect.github.com>

  • 0235b6 sql(postgres): validate server-provided len in binary int4[]/float4[] parsing (#30164)

    What

    Bounds-check the server-provided len field when parsing binary-format
    int4[] / float4[] DataRow columns.

    Why

    DataCell.fromBytes only checked bytes.len < 12 before calling
    PostgresBinarySingleDimensionArray.init(bytes).slice(). slice() then
    iterated this.len (a server-controlled signed i32) times, reading
    and writing head[i] with no check that 20 + len * 8 <= bytes.len. A malicious or buggy server sending a 20-byte column with
    len = 65536 causes reads/writes past the connection's receive buffer.
    In ReleaseFast this is a heap write primitive; under ASAN it's a
    heap-buffer-overflow.

    How

    Before calling init()/slice():

    • require bytes.len >= 20 (the full 1-D header: ndim + flags +
      elemtype + len + lbound)
    • require len >= 0
    • require len <= (bytes.len - 20) / (2 * @&ZeroWidthSpace;sizeOf(T)) (each element is
      a 4-byte length prefix + a 4-byte value)

    Malformed input now returns ERR_POSTGRES_INVALID_BINARY_DATA. Also
    changed slice()'s early-return from len == 0 to len <= 0 as
    defense-in-depth.

    Verification

    test/js/sql/postgres-binary-array-bounds.test.ts spins up a mock
    Postgres server that sends a binary int4[] column with len far
    exceeding the column bytes.

    Without the fix (git stash push -- src/ && bun bd test ...):

    ==5186==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x7b03f0921840
    READ of size 4 at 0x7b03f0921840 thread T0
        #0 ... sql.postgres.types.Tag.Tag.PostgresBinarySingleDimensionArray(i32).slice ... Tag.zig:218:40
    0x7b03f0921840 is located 0 bytes after 524352-byte region
    

    With the fix: all 7 tests pass (6 malformed-input cases + 1 well-formed
    round-trip).


    Co-authored-by: robobun <robobun@​users.noreply.redirect.github.com>
    Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@​users.noreply.redirect.github.com>

  • b258d3 sys: bound readlink/readlinkat NUL write to buffer length (#30160)

    What

    bun.sys.readlink and bun.sys.readlinkat call readlink(2) with
    buf.len as the buffer size, then write buf[@&ZeroWidthSpace;intCast(rc)] = 0 to
    NUL-terminate the result.

    POSIX readlink() does not NUL-terminate and, when the target is longer
    than the supplied buffer, truncates and returns the buffer size. In that
    case rc == buf.len and buf[rc] = 0 writes one byte past the end of
    the stack-allocated bun.PathBuffer.

    All current callers pass a full bun.PathBuffer (PATH_MAX = 4096 on
    Linux, 1024 on macOS), and symlink(2) on local filesystems refuses to
    create targets that long — but FUSE and some network filesystems can
    hold symlink targets ≥ PATH_MAX, so this is reachable from
    fs.readlinkSync on those systems.

    Fix

    Return ENAMETOOLONG when rc >= buf.len. There is no room for the
    sentinel at that point anyway, and the result would have been truncated,
    so erroring matches what Node does via libuv for the same condition.

    const len: usize = @&ZeroWidthSpace;intCast(rc);
    if (len >= buf.len) {
        return .{ .err = .{ .errno = @&ZeroWidthSpace;intFromEnum(E.NAMETOOLONG), .syscall = .readlink, .path = in } };
    }
    buf[len] = 0;

    Test

    Since standard filesystems cap symlink targets below PATH_MAX, the
    overflow itself cannot be reproduced in CI. The added test creates the
    longest symlink target the local filesystem will accept (4095 on Linux,
    1023 on macOS) and verifies readlinkSync returns it exactly — this
    guards against the bounds check being too aggressive and rejecting the
    valid PATH_MAX - 1 case.

    zig:check-all passes on all targets.


    Co-authored-by: robobun <robobun@​users.noreply.redirect.github.com>
    Co-authored-by: Jarred Sumner <jarred@​jarredsumner.com>
    Co-authored-by: Dylan Conway <dylan.conway567@​gmail.com>

  • 1f9468 resolver: check union tag before reading cached .entries in dirInfoCachedMaybeLog (#30170)

    Problem

    EntriesOption is a tagged union:

    pub const EntriesOption = union(Tag) {
        entries: *DirEntry,
        err: DirEntry.Err,  // { original_err: anyerror, canonical_error: anyerror }
    };

    When readDirectory() fails with a non-ENOENT error (EACCES, EMFILE,
    …), readDirectoryError stores .err in rfs.entries (fs.zig:1002).
    If the directory later becomes openable and dirInfoCachedMaybeLog
    processes it as queue slot [0] (the target path itself, which is never
    pre-checked against rfs.entries during queue construction), it
    reached:

    if (rfs.entries.atIndex(cached_dir_entry_result.index)) |cached_entry| {
        if (cached_entry.entries.generation >= r.generation) {   // no tag check

    Reading .entries while .err is active reinterprets the two
    anyerror values as a *DirEntry pointer and dereferences it. In debug
    this is a safety panic; in release it's a segfault at e.g.
    0x1D401D401F8.

    Repro

    chmodSync(bad, 0o000);
    try { Bun.resolveSync('./bad/index.js', root); } catch {}  // caches .err for 'bad'
    chmodSync(bad, 0o755);
    Bun.resolveSync('./bad', root);  // dirInfoCached(bad): open OK, cache has .err -> crash

    Before:

    panic(main thread): access of union field 'entries' while field 'err
    

@michijs
Copy link
Copy Markdown
Contributor Author

michijs Bot commented May 4, 2026

Bump @​mdn/browser-compat-data from 7.3.8 to 7.3.14

Changelog:
Sourced from releases.
        ### v7.3.14### Renamings
  • api.Element.requestFullscreen.options_navigationUI_parameter to api.Element.requestFullscreen.options_parameter.navigationUI_option (#29548)
  • api.Element.requestFullscreen.options_screen_parameter to api.Element.requestFullscreen.options_parameter.screen_option (#29548)
  • api.fetch.body_readablestream to api.fetch.options_parameter.body.accepts_readablestream (#29451)
  • api.fetch.init_attributionReporting_parameter to api.fetch.options_parameter.attributionReporting (#29451)
  • api.fetch.init_browsingTopics_parameter to api.fetch.options_parameter.browsingTopics (#29451)
  • api.fetch.init_duplex_parameter to api.fetch.options_parameter.duplex (#29451)
  • api.fetch.init_keepalive_parameter to api.fetch.options_parameter.keepalive (#29451)
  • api.fetch.init_priority_parameter to api.fetch.options_parameter.priority (#29451)
  • api.fetch.init_privateToken_parameter to api.fetch.options_parameter.privateToken (#29451)
  • api.fetch.init_referrerPolicy_parameter to api.fetch.options_parameter.referrerPolicy (#29451)
  • api.fetch.init_signal_parameter to api.fetch.options_parameter.signal (#29451)
  • api.fetch.init_targetAddressSpace_parameter to api.fetch.options_parameter.targetAddressSpace (#29451)
  • api.Request.Request.init_attributionReporting_parameter to api.Request.Request.options_parameter.attributionReporting (#29451)
  • api.Request.Request.init_browsingTopics_parameter to api.Request.Request.options_parameter.browsingTopics (#29451)
  • api.Request.Request.init_duplex_parameter to api.Request.Request.options_parameter.duplex (#29451)
  • api.Request.Request.init_keepalive_parameter to api.Request.Request.options_parameter.keepalive (#29451)
  • api.Request.Request.init_priority_parameter to api.Request.Request.options_parameter.priority (#29451)
  • api.Request.Request.init_privateToken_parameter to api.Request.Request.options_parameter.privateToken (#29451)
  • api.Request.Request.init_referrer_parameter to api.Request.Request.options_parameter.referrer (#29451)
  • api.Request.Request.init_targetAddressSpace_parameter to api.Request.Request.options_parameter.targetAddressSpace (#29451)
  • api.Request.Request.request_body_readablestream to api.Request.Request.options_parameter.body.accepts_readablestream (#29451)

Additions

  • api.Element.requestFullscreen.options_parameter (#29548)
  • api.Element.requestFullscreen.options_parameter.keyboardLock_option (#29548)
  • api.fetch.options_parameter (#29451)
  • api.fetch.options_parameter.body (#29451)
  • api.GPU.requestAdapter.options_featureLevel (#29551)
  • api.Request.Request.options_parameter (#29451)
  • api.Request.Request.options_parameter.body (#29451)
  • api.SharedWorker.SharedWorker.options_extendedLifetime_parameter (#29562)
  • api.XRSession.visibilitymaskchange_event (#29576)
  • browsers.opera.releases.133 (#29579)
  • css.properties.accent-color.transparent (#29532)
  • css.properties.shape-outside.rect (#29574)
  • css.properties.stop-color.transparent (#29532)
  • css.types.attr.fallback (#29573)
  • html.elements.audio.autoplay (#29571)

Statistics

  • 11 contributors have changed 54 files with 1,555 additions and 924 deletions in 26 commits (v7.3.13...v7.3.14)

  • 19,602 total features

  • 1,245 total contributors

  • 5,651 total stargazers

          ### v7.3.13### Removals
    
  • css.properties.all.revert-rule (#29489)

  • css.properties.font-family.fangsong (#29439)

  • css.properties.font-family.kai (#29439)

  • css.properties.font-family.khmer-mul (#29439)

  • css.properties.font-family.nastaliq (#29439)

Additions

  • api.CSSContainerRule.conditions (#29530)
  • api.LanguageModel (#29474)
  • api.LanguageModel.append (#29474)
  • api.LanguageModel.availability_static (#29474)
  • api.LanguageModel.clone (#29474)
  • api.LanguageModel.contextoverflow_event (#29474)
  • api.LanguageModel.contextUsage (#29474)
  • api.LanguageModel.contextWindow (#29474)
  • api.LanguageModel.create_static (#29474)
  • api.LanguageModel.measureContextUsage (#29474)
  • api.LanguageModel.prompt (#29474)
  • api.LanguageModel.promptStreaming (#29474)
  • browsers.bun.releases.1.3.13 (#29518)
  • browsers.firefox_android.releases.153 (#29518)
  • browsers.firefox.releases.153 (#29518)
  • css.properties.accent-color.currentColor (#29526)
  • css.properties.color.currentColor (#29526)
  • css.properties.column-rule-color.currentColor (#29526)
  • css.properties.column-rule.currentColor (#29526)
  • css.properties.outline-color.currentColor (#29526)
  • css.properties.position-anchor.normal (#29483)
  • css.properties.stop-color.currentColor (#29526)
  • css.types.attr.attr-name_accepts_namespaces (#29482)
  • css.types.global_keywords.revert-rule (#29489)
  • http.headers.Permissions-Policy-Report-Only (#29506)
  • webdriver.bidi.script.getRealms.type_parameter.window (#29517)

Statistics

  • 12 contributors have changed 83 files with 1,509 additions and 511 deletions in 32 commits (v7.3.12...v7.3.13)

  • 19,588 total features

  • 1,245 total contributors

  • 5,644 total stargazers

          ### v7.3.12### Additions
    
  • api.HTMLTemplateElement.shadowRootSlotAssignment (#29457)

  • api.ReportingObserver.ReportingObserver.options_parameter.types_property.permissions-policy-violation (#29500)

  • api.WGSLLanguageFeatures.extension_texture_and_sampler_let (#29469)

  • browsers.bun.releases.1.3.12 (#29463)

  • browsers.edge.releases.150 (#29463)

  • browsers.opera_android.releases.97 (#29490)

  • css.properties.hanging-punctuation.force-end (#29497)

  • css.types.color.light-dark.image_value (#29429)

  • css.types.env.preferred-text-scale (#29453)

  • html.elements.meta.name.text-scale (#29453)

  • html.elements.template.shadowrootslotassignment (#29457)

  • webdriver.bidi.script.getRealms.type_parameter.worker (#29499)

Statistics

  • 14 contributors have changed 192 files with 1,329 additions and 830 deletions in 37 commits (v7.3.11...v7.3.12)

  • 19,570 total features

  • 1,242 total contributors

  • 5,639 total stargazers

          ### v7.3.11### Additions
    
  • api.CustomElementRegistry.define.html_name_validity (#29217)

  • api.CustomElementRegistry.whenDefined.html_name_validity (#29217)

  • api.Document.createAttribute.html_name_validity (#29217)

  • api.Document.createAttributeNS.html_name_validity (#29217)

  • api.Document.createElement.html_name_validity (#29217)

  • api.Document.createElementNS.html_name_validity (#29217)

  • api.Element.setAttribute.html_name_validity (#29217)

  • api.Element.setAttributeNodeNS.html_name_validity (#29217)

  • api.Element.toggleAttribute.html_name_validity (#29217)

  • api.PaymentRequest.getSecurePaymentConfirmationCapabilities_static (#29434)

  • api.WGSLLanguageFeatures.extension_subgroup_uniformity (#29422)

  • browsers.chrome_android.releases.150 (#29413)

  • browsers.chrome.releases.150 (#29413)

  • browsers.opera.releases.126 (#29414)

  • browsers.opera.releases.127 (#29414)

  • browsers.opera.releases.128 (#29414)

  • browsers.opera.releases.129 (#29414)

  • browsers.opera.releases.130 (#29414)

  • browsers.opera.releases.131 (#29414)

  • browsers.opera.releases.132 (#29444)

  • browsers.webview_android.releases.150 (#29413)

  • css.at-rules.container.container-query_optional (#29300)

  • css.types.url.cross-origin (#29440)

  • css.types.url.referrer-policy (#29440)

  • http.headers.Reporting-Endpoints.crash-reporting (#29399)

Statistics

  • 11 contributors have changed 49 files with 950 additions and 300 deletions in 28 commits (v7.3.10...v7.3.11)

  • 19,561 total features

  • 1,240 total contributors

  • 5,628 total stargazers

          ### v7.3.10### Removals
    
  • html.elements.video.autoplay.loading (#29359)

Additions

  • api.Element.attachShadow.options_referenceTarget_parameter (#29261)
  • api.fetch.init_targetAddressSpace_parameter (#29331)
  • api.HTMLTemplateElement.shadowRootReferenceTarget (#29261)
  • api.Permissions.permission_local-network (#29331)
  • api.Permissions.permission_local-network-access (#29331)
  • api.Permissions.permission_loopback-network (#29331)
  • api.Request.Request.init_targetAddressSpace_parameter (#29331)
  • browsers.safari_ios.releases.26.5 (#29370)
  • browsers.safari.releases.26.5 (#29370)
  • browsers.webview_ios.releases.26.5 (#29370)
  • html.elements.video.loading (#29359)
  • http.headers.Permissions-Policy.local-network (#29331)
  • http.headers.Permissions-Policy.local-network-access (#29331)
  • http.headers.Permissions-Policy.loopback-network (#29331)
  • manifests.webapp.migrate_from (#29356)
  • manifests.webapp.migrate_to (#29356)
  • webdriver.bidi.browser.setClientWindowState.height_parameter (#29394)
  • webdriver.bidi.browser.setClientWindowState.state_parameter (#29394)
  • webdriver.bidi.browser.setClientWindowState.width_parameter (#29394)
  • webdriver.bidi.browser.setClientWindowState.x_parameter (#29394)
  • webdriver.bidi.browser.setClientWindowState.y_parameter (#29394)

Statistics

  • 11 contributors have changed 37 files with 986 additions and 282 deletions in 31 commits (v7.3.9...v7.3.10)

  • 19,546 total features

  • 1,239 total contributors

  • 5,628 total stargazers

          ### v7.3.9### Removals
    
  • css.properties.-webkit-margin-after (#29322)

  • css.properties.-webkit-margin-before (#29322)

Additions

  • api.CookieStore.set.maxAge_option (#29197)
  • api.CSSFontFaceDescriptors.ascent-override (#29352)
  • api.CSSFontFaceDescriptors.ascentOverride (#29352)
  • api.CSSFontFaceDescriptors.descent-override (#29352)
  • api.CSSFontFaceDescriptors.descentOverride (#29352)
  • api.CSSFontFaceDescriptors.font-language-override (#29352)
  • api.CSSFontFaceDescriptors.font-variation-settings (#29352)
  • api.CSSFontFaceDescriptors.fontLanguageOverride (#29352)
  • api.CSSFontFaceDescriptors.fontVariationSettings (#29352)
  • api.CSSFontFaceDescriptors.line-gap-override (#29352)
  • api.CSSFontFaceDescriptors.lineGapOverride (#29352)
  • api.Document.createElement.options_parameter.customElementRegistry_option (#29216)
  • api.Document.createElement.options_parameter.options_is_parameter (#29216)
  • api.Document.createElementNS.options_parameter.customElementRegistry_option (#29216)
  • api.Document.createElementNS.options_parameter.options_is_parameter (#29216)
  • api.HTMLMediaElement.loading (#29256)
  • browsers.firefox_android.releases.152 (#29334)
  • browsers.firefox.releases.152 (#29334)
  • css.properties.all.revert-rule (#29352)
  • css.properties.shape-outside.xywh (#29284)
  • css.types.color.color-mix.variadic_color_arguments (#29214)
  • html.elements.audio.loading (#29256)
  • html.elements.video.autoplay.loading (#29256)

Statistics

  • 11 contributors have changed 88 files with 2,426 additions and 1,395 deletions in 29 commits (v7.3.8...v7.3.9)

  • 19,529 total features

  • 1,236 total contributors

  • 5,620 total stargazers

          ### v7.3.8### Additions
    
  • api.HTMLMediaElement.playbackRate.negative_values (#29253)

  • api.VideoFrame.VideoFrame.metadata_option (#29298)

  • browsers.bun.releases.1.3.11 (#29291)

  • browsers.edge.releases.149 (#29263)

  • css.properties.anchor-name.position_after_layout (#29282)

  • css.properties.letter-spacing.percentages (#29200)

  • css.properties.position-area.disables_auto_margins_and_insets (#29280)

  • webdriver.bidi.network.disownData.dataType_parameter.request (#29275)

Statistics

  • 10 contributors have changed 50 files with 926 additions and 295 deletions in 31 commits (v7.3.7...v7.3.8)
  • 19,510 total features
  • 1,234 total contributors
  • 5,616 total stargazers
Commit history:
  • 1ad812 chore(deps-dev): bump @​ddbeck/mdn-content-inventory from 0.2.20260430 to 0.2.20260501 (#29589)

    chore(deps-dev): bump @​ddbeck/mdn-content-inventory

    Bumps @​ddbeck/mdn-content-inventory from 0.2.20260430 to 0.2.20260501.


    updated-dependencies:

    • dependency-name: "@​ddbeck/mdn-content-inventory"
      dependency-version: 0.2.20260501
      dependency-type: direct:development
      update-type: version-update:semver-patch
      ...

    Signed-off-by: dependabot[bot] <support@​redirect.github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@​users.noreply.redirect.github.com>

  • ce9940 fix(scripts/diff-flat): derive BROWSER_NAMES from bcd.browsers (#29583)
  • 4554ab Release v7.3.14 (#29550)

    Co-authored-by: Claas Augner <caugner@​mozilla.com>

  • cafde8 Update browser releases (#29579)
  • 0b4883 Update web-features tags (#29580)
  • 1de0d5 Chrome 144 XRSession visibilitymaskchange event (#29576)

    Chrome 144 XRSession visibilitymaskchange event

  • c0c1d9 CSS border-right shipped in initial Fx Android (#29575)
  • b7dd2f Firefox Android doesn't ship Serial API (#29578)
  • d80de5 Add shape-outside: rect() (#29574)

    Add shape-outside: rect()

  • 053f38 Add attr() fallback values subfeature (#29573)

    • Add attr() fallback values subfeature

    • Add spec_url

    • fe5602 Add missing autoplay attribute to <audio> (#29571)

    • Add missing autoplay attribute to

    • Update html/elements/audio.json

    Co-authored-by: Claas Augner <495429+caugner@​users.noreply.redirect.github.com>


    Co-authored-by: Claas Augner <495429+caugner@​users.noreply.redirect.github.com>

  • 836968 Chrome 148 ships SharedWorker extendedLifetime option (#29562)

    • Add SharedWorker extendedLifetime parameter

    • Update api/SharedWorker.json


    Co-authored-by: Claas Augner <495429+caugner@​users.noreply.redirect.github.com>

  • 649d75 Chrome 146 WebGPU compatibility mode featureLevel option (#29551)

    • Chrome 146 WebGPU compatibility mode featureLevel option

    • Update Andriod version to 10

    • b0f72f Firefox Nightly supports animation-range properties (#29556)

    • Revert "Firefox 150 adds animation-range properties" (#29494)

    • Firefox Nightly supports animation-range properties

    Co-authored-by: Claas Augner <495429+caugner@​users.noreply.redirect.github.com>


    Co-authored-by: Claas Augner <495429+caugner@​users.noreply.redirect.github.com>

  • d0e46e Firefox 151 / Safari 26.4 support Fullscreen Keyboard Lock API (#29548)

    • FF151 Fullscreen Keyboard Lock API

    • Add Chrome bug for Fullscreen Keyboard Lock API


    Co-authored-by: Claas Augner <495429+caugner@​users.noreply.redirect.github.com>

  • e26222 Clean up Fetch body data (#29451)

    • Add api.fetch.init_body_parameter

    • Move body_readablestream under api.fetch.init_body_parameter

    • Add api.Request.Request.init_body_parameter

    • Move request_body_readablestream under api.Request.Request.init_body_parameter

    • Rename behavioral subfeature

    • Create fetch options parameter

    • Rewrite init_foo_parameter to options_parameter.foo

    • Format

    • Migrate standard-track-exceptions to new keys


    Co-authored-by: Claas Augner <495429+caugner@​users.noreply.redirect.github.com>

  • 85e988 Add {accent,stop}-color: transparent (#29532)

    Add missing transparent values to accent/stop-color

  • db14e4 chore(deps-dev): bump @​ddbeck/mdn-content-inventory from 0.2.20260429 to 0.2.20260430 (#29581)

    • chore(deps-dev): bump @​ddbeck/mdn-content-inventory

    Bumps @​ddbeck/mdn-content-inventory from 0.2.20260429 to 0.2.20260430.


    updated-dependencies:

    • dependency-name: "@​ddbeck/mdn-content-inventory"
      dependency-version: 0.2.20260430
      dependency-type: direct:development
      update-type: version-update:semver-patch
      ...

    Signed-off-by: dependabot[bot] <support@​redirect.github.com>

    • chore: fix mdn urls

    Signed-off-by: dependabot[bot] <support@​redirect.github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@​users.noreply.redirect.github.com>
    Co-authored-by: mdn-bot <108879845+mdn-bot@​users.noreply.redirect.github.com>

  • 96fa6e chore(deps-dev): bump web-features from 3.24.0 to 3.25.0 (#29568)

    Bumps web-features from 3.24.0 to 3.25.0.


    updated-dependencies:

    • dependency-name: web-features
      dependency-version: 3.25.0
      dependency-type: direct:development
      update-type: version-update:semver-minor
      ...

    Signed-off-by: dependabot[bot] <support@​redirect.github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@​users.noreply.redirect.github.com>

  • 0857ce chore(deps-dev): bump @​ddbeck/mdn-content-inventory from 0.2.20260428 to 0.2.20260429 (#29567)

    chore(deps-dev): bump @​ddbeck/mdn-content-inventory

    Bumps @​ddbeck/mdn-content-inventory from 0.2.20260428 to 0.2.20260429.


    updated-dependencies:

    • dependency-name: "@​ddbeck/mdn-content-inventory"
      dependency-version: 0.2.20260429
      dependency-type: direct:development
      update-type: version-update:semver-patch
      ...

    Signed-off-by: dependabot[bot] <support@​redirect.github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@​users.noreply.redirect.github.com>

  • a36ee3 Update version_added for chrome support in color.json (#29565)

    • Update version_added for chrome support in color.json

    Fixes #29564.

    • Update css/types/color.json

    Co-authored-by: Florian Scholz <fs@​florianscholz.com>


    Co-authored-by: Florian Scholz <fs@​florianscholz.com>

  • 5992a9 chore(deps-dev): bump @​ddbeck/mdn-content-inventory from 0.2.20260427 to 0.2.20260428 (#29558)

    • chore(deps-dev): bump @​ddbeck/mdn-content-inventory

    Bumps @​ddbeck/mdn-content-inventory from 0.2.20260427 to 0.2.20260428.


    updated-dependencies:

    • dependency-name: "@​ddbeck/mdn-content-inventory"
      dependency-version: 0.2.20260428
      dependency-type: direct:development
      update-type: version-update:semver-patch
      ...

    Signed-off-by: dependabot[bot] <support@​redirect.github.com>

    • chore: fix mdn urls

    Signed-off-by: dependabot[bot] <support@​redirect.github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@​users.noreply.redirect.github.com>
    Co-authored-by: mdn-bot <108879845+mdn-bot@​users.noreply.redirect.github.com>

  • e029e0 chore(deps-dev): bump typescript-eslint from 8.59.0 to 8.59.1 in the npm group (#29557)

    chore(deps-dev): bump typescript-eslint in the npm group

    Bumps the npm group with 1 update: typescript-eslint.

    Updates typescript-eslint from 8.59.0 to 8.59.1


    updated-dependencies:

    • dependency-name: typescript-eslint
      dependency-version: 8.59.1
      dependency-type: direct:development
      update-type: version-update:semver-patch
      dependency-group: npm
      ...

    Signed-off-by: dependabot[bot] <support@​redirect.github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@​users.noreply.redirect.github.com>

  • 95b15d ci(deps): bump actions/setup-node from 6.3.0 to 6.4.0 (#29547)

    Bumps actions/setup-node from 6.3.0 to 6.4.0.


    updated-dependencies:

    • dependency-name: actions/setup-node
      dependency-version: 6.4.0
      dependency-type: direct:production
      update-type: version-update:semver-minor
      ...

    Signed-off-by: dependabot[bot] <support@​redirect.github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@​users.noreply.redirect.github.com>

  • 4e6264 [WebExtensions] Chrome limits for alarms.create() (#29521)

    [WebExtensions] Limits for alarms.create()
    Chrome limits amount of storage which extension alarms can consume:

    • Chrome 117 limited extensions to 500 alarms each
    • Chrome 150 will limit lengths of new alarm names to 1024 bytes

    Sources:
    https://groups.google.com/a/chromium.org/g/chromium-extensions/c/8ZFwgCg-DvU/m/AxLjInQWAQAJ
    https://redirect.github.com/chromium/chromium/commit/96b950168c0f85db3738e0215e5126fc2b305227

  • 086f98 Update support statuses for storage.setAccessLevel (#29536)

    • Update support statuses for storage.setAccessLevel

    • Apply suggestion from @​rebloor


    Co-authored-by: rebloor <git@​sherpa.co.nz>

  • bf15bb chore(deps-dev): bump @​ddbeck/mdn-content-inventory from 0.2.20260424 to 0.2.20260427 (#29553)

    chore(deps-dev): bump @​ddbeck/mdn-content-inventory

    Bumps @​ddbeck/mdn-content-inventory from 0.2.20260424 to 0.2.20260427.


    updated-dependencies:

    • dependency-name: "@​ddbeck/mdn-content-inventory"
      dependency-version: 0.2.20260427
      dependency-type: direct:development
      update-type: version-update:semver-patch
      ...

    Signed-off-by: dependabot[bot] <support@​redirect.github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@​users.noreply.redirect.github.com>

  • f05ec6 chore(deps-dev): bump ajv from 8.18.0 to 8.20.0 in the npm group (#29552)

    Bumps the npm group with 1 update: ajv.

    Updates ajv from 8.18.0 to 8.20.0


    updated-dependencies:

    • dependency-name: ajv
      dependency-version: 8.20.0
      dependency-type: direct:development
      update-type: version-update:semver-minor
      dependency-group: npm
      ...

    Signed-off-by: dependabot[bot] <support@​redirect.github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@​users.noreply.redirect.github.com>

  • 7d2347 Revise descriptions for ReportingObserver() report types (#29475)

    • Chrome 145 Crashing reporting, crash report type

    • Add explanatory note

    • fix typo

    • Remove crash type value data, as discussed

    • restore report type that got removed somehow, make descriptions consistent

    • 3da192 Release v7.3.13 (#29511)

@michijs
Copy link
Copy Markdown
Contributor Author

michijs Bot commented May 4, 2026

Bump @​vscode/vsce from 3.7.1 to 3.9.1

Changelog:
Sourced from releases.
        ### v3.9.2-1

Changes:

  • #1267: Bump minimatch from 10.2.2 to 10.2.3

This list of changes was auto generated.

        ### v3.9.2-0

Changes:

  • #1247: Update minimatch dependency to v10

This list of changes was auto generated.

        ### v3.9.1

Changes:

  • #1266: fix: module type mismatch

This list of changes was auto generated.

        ### v3.9.1-0

Changes:

  • #1266: fix: module type mismatch

This list of changes was auto generated.

        ### v3.9.0

Changes:

  • #1263: fix: build regressions in 3.8.1
  • #1261: Add override for serialize-javascript

This list of changes was auto generated.

        ### v3.8.2-1

Changes:

  • #1263: fix: build regressions in 3.8.1

This list of changes was auto generated.

        ### v3.8.2-0

Changes:

  • #1261: Add override for serialize-javascript

This list of changes was auto generated.

        ### v3.8.1

Changes:

  • #1259: chore: update @​azure/identity to 4.13.1 and modernize TypeScript/Node.js configuration

This list of changes was auto generated.

        ### v3.8.1-0

Changes:

  • #1259: chore: update @​azure/identity to 4.13.1 and modernize TypeScript/Node.js configuration

This list of changes was auto generated.

        ### v3.8.0

Changes:

  • #1258: fix: run npm audit fix
  • #1255: Bump brace-expansion
  • #1253: Bump picomatch from 2.3.1 to 2.3.2
  • #1252: Bump yauzl from 2.10.0 to 3.2.1
  • #1250: Bump underscore from 1.13.1 to 1.13.8
  • #1249: Bump minimatch
  • #1243: Bump markdown-it from 14.1.0 to 14.1.1
  • #1244: Bump qs from 6.14.1 to 6.14.2
  • #1239: Bump @​isaacs/brace-expansion from 5.0.0 to 5.0.1
  • #1238: Bump lodash from 4.17.21 to 4.17.23
See More
  • #1234: Bump qs from 6.11.0 to 6.14.1
  • #1233: Return non-zero exit code when signature verification fails
  • #1232: Audit npm package
  • #1228: Bump jws

This list of changes was auto generated.

        ### v3.7.2-13

Changes:

  • #1258: fix: run npm audit fix

This list of changes was auto generated.

        ### v3.7.2-12

Changes:

  • #1255: Bump brace-expansion

This list of changes was auto generated.

        ### v3.7.2-11

Changes:

  • #1253: Bump picomatch from 2.3.1 to 2.3.2

This list of changes was auto generated.

        ### v3.7.2-10

Changes:

  • #1252: Bump yauzl from 2.10.0 to 3.2.1

This list of changes was auto generated.

        ### v3.7.2-9

Changes:

  • #1250: Bump underscore from 1.13.1 to 1.13.8

This list of changes was auto generated.

        ### v3.7.2-8

Changes:

  • #1249: Bump minimatch

This list of changes was auto generated.

        ### v3.7.2-7

Changes:

  • #1243: Bump markdown-it from 14.1.0 to 14.1.1

This list of changes was auto generated.

        ### v3.7.2-6

Changes:

  • #1244: Bump qs from 6.14.1 to 6.14.2

This list of changes was auto generated.

        ### v3.7.2-5

Changes:

  • #1239: Bump @​isaacs/brace-expansion from 5.0.0 to 5.0.1

This list of changes was auto generated.

        ### v3.7.2-4

Changes:

  • #1238: Bump lodash from 4.17.21 to 4.17.23

This list of changes was auto generated.

        ### v3.7.2-3

Changes:

  • #1234: Bump qs from 6.11.0 to 6.14.1

This list of changes was auto generated.

        ### v3.7.2-2

Changes:

  • #1233: Return non-zero exit code when signature verification fails

This list of changes was auto generated.

        ### v3.7.2-1

Changes:

  • #1232: Audit npm package

This list of changes was auto generated.

        ### v3.7.2-0

Changes:

  • #1228: Bump jws

This list of changes was auto generated.

        ### v3.7.1

Changes:

  • #1223: Bump js-yaml
  • #1222: Bump glob

This list of changes was auto generated.

        ### v3.7.1-1

Changes:

  • #1223: Bump js-yaml

This list of changes was auto generated.

        ### v3.7.1-0

Changes:

  • #1222: Bump glob

This list of changes was auto generated.

Commit history:
  • 7a3c1c Bump minimatch from 10.2.2 to 10.2.3 (#1267)

    Bumps minimatch from 10.2.2 to 10.2.3.


    updated-dependencies:

    • dependency-name: minimatch
      dependency-version: 10.2.3
      dependency-type: direct:production
      ...

    Signed-off-by: dependabot[bot] <support@​redirect.github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@​users.noreply.redirect.github.com>

  • 54bea4 update minimatch dependency to v10 (#1247)

    Signed-off-by: Andrew Twydell <andrew.twydell@​ibm.com>

  • 98cca9 fix: module type mismatch (#1266)

    Co-authored-by: Copilot <copilot@​redirect.github.com>

  • 9329b3 fix: build regressions in 3.8.1 (#1263)

    • chore: add serialize-javascript override

    Agent-Logs-Url: https://redirect.github.com/microsoft/vscode-vsce/sessions/542e6132-ca27-4a60-b13f-e4d127bc19db

    Co-authored-by: rzhao271 <7199958+rzhao271@​users.noreply.redirect.github.com>

    • chore: update serialize-javascript override to 7.x

    Agent-Logs-Url: https://redirect.github.com/microsoft/vscode-vsce/sessions/1a55d5b2-81b6-49f5-8caf-f6ccee37a4b5

    Co-authored-by: rzhao271 <7199958+rzhao271@​users.noreply.redirect.github.com>

    • chore: refresh lockfile after serialize-javascript override

    Agent-Logs-Url: https://redirect.github.com/microsoft/vscode-vsce/sessions/13bb15ff-ae4f-4d6f-a53e-c9794578e757

    Co-authored-by: rzhao271 <7199958+rzhao271@​users.noreply.redirect.github.com>

    • fix: downgrade engine and fix build

    Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@​users.noreply.redirect.github.com>

  • 165b0f Add override for serialize-javascript (#1261)

    • chore: add serialize-javascript override

    Agent-Logs-Url: https://redirect.github.com/microsoft/vscode-vsce/sessions/542e6132-ca27-4a60-b13f-e4d127bc19db

    Co-authored-by: rzhao271 <7199958+rzhao271@​users.noreply.redirect.github.com>

    • chore: update serialize-javascript override to 7.x

    Agent-Logs-Url: https://redirect.github.com/microsoft/vscode-vsce/sessions/1a55d5b2-81b6-49f5-8caf-f6ccee37a4b5

    Co-authored-by: rzhao271 <7199958+rzhao271@​users.noreply.redirect.github.com>

    • chore: refresh lockfile after serialize-javascript override

    Agent-Logs-Url: https://redirect.github.com/microsoft/vscode-vsce/sessions/13bb15ff-ae4f-4d6f-a53e-c9794578e757

    Co-authored-by: rzhao271 <7199958+rzhao271@​users.noreply.redirect.github.com>


    Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@​users.noreply.redirect.github.com>
    Co-authored-by: rzhao271 <7199958+rzhao271@​users.noreply.redirect.github.com>

  • 7d124a chore: update @​azure/identity to 4.13.1 and modernize TypeScript/Node.js configuration (#1259)

    • chore: update @​azure/identity to 4.13.1

    Agent-Logs-Url: https://redirect.github.com/microsoft/vscode-vsce/sessions/eaaf7c49-62dc-48e3-a4bc-f0b4286e52d5

    Co-authored-by: rzhao271 <7199958+rzhao271@​users.noreply.redirect.github.com>

    • chore: set moduleResolution to nodenext in tsconfig.json

    Agent-Logs-Url: https://redirect.github.com/microsoft/vscode-vsce/sessions/e9cc90e0-f5ea-49d7-9728-9c667e7835f4

    Co-authored-by: rzhao271 <7199958+rzhao271@​users.noreply.redirect.github.com>

    • chore: bump @​types/node to ^22, update engines and CI workflow to Node 22

    Agent-Logs-Url: https://redirect.github.com/microsoft/vscode-vsce/sessions/2dff95b2-a252-43a9-b142-ae81b52bc6d3

    Co-authored-by: rzhao271 <7199958+rzhao271@​users.noreply.redirect.github.com>


    Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@​users.noreply.redirect.github.com>
    Co-authored-by: rzhao271 <7199958+rzhao271@​users.noreply.redirect.github.com>

  • cbdd40 fix: run npm audit fix to update package-lock.json (#1258)

    Agent-Logs-Url: https://redirect.github.com/microsoft/vscode-vsce/sessions/79064f2b-a533-4e09-ac40-4f8bce617f05

    Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@​users.noreply.redirect.github.com>
    Co-authored-by: rzhao271 <7199958+rzhao271@​users.noreply.redirect.github.com>

  • 13c5fa Merge pull request #1255 from microsoft/dependabot/npm_and_yarn/multi-580a7c2f10

    Bump brace-expansion

  • c6f98d Bump brace-expansion

    Bumps and brace-expansion. These dependencies needed to be updated together.

    Updates brace-expansion from 5.0.3 to 5.0.5

    Updates brace-expansion from 1.1.12 to 1.1.13

    Updates brace-expansion from 2.0.2 to 2.0.3


    updated-dependencies:

    • dependency-name: brace-expansion
      dependency-version: 5.0.5
      dependency-type: indirect
    • dependency-name: brace-expansion
      dependency-version: 1.1.13
      dependency-type: indirect
    • dependency-name: brace-expansion
      dependency-version: 2.0.3
      dependency-type: indirect
      ...

    Signed-off-by: dependabot[bot] <support@​redirect.github.com>

  • 01da00 Bump picomatch from 2.3.1 to 2.3.2 (#1253)

    Bumps picomatch from 2.3.1 to 2.3.2.


    updated-dependencies:

    • dependency-name: picomatch
      dependency-version: 2.3.2
      dependency-type: indirect
      ...

    Signed-off-by: dependabot[bot] <support@​redirect.github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@​users.noreply.redirect.github.com>

  • bb899f Merge pull request #1252 from microsoft/dependabot/npm_and_yarn/yauzl-3.2.1

    Bump yauzl from 2.10.0 to 3.2.1

  • 3f4fa9 Bump yauzl from 2.10.0 to 3.2.1

    Bumps yauzl from 2.10.0 to 3.2.1.


    updated-dependencies:

    • dependency-name: yauzl
      dependency-version: 3.2.1
      dependency-type: direct:production
      ...

    Signed-off-by: dependabot[bot] <support@​redirect.github.com>

  • 72f319 Merge pull request #1250 from microsoft/dependabot/npm_and_yarn/underscore-1.13.8

    Bump underscore from 1.13.1 to 1.13.8

  • c65131 Bump underscore from 1.13.1 to 1.13.8

    Bumps underscore from 1.13.1 to 1.13.8.


    updated-dependencies:

    • dependency-name: underscore
      dependency-version: 1.13.8
      dependency-type: indirect
      ...

    Signed-off-by: dependabot[bot] <support@​redirect.github.com>

  • 82cd05 Merge pull request #1249 from microsoft/dependabot/npm_and_yarn/multi-3189fdc835

    Bump minimatch

  • f8e927 Bump minimatch

    Bumps minimatch to 10.2.3 and updates ancestor dependencies and minimatch. These dependencies need to be updated together.

    Updates minimatch from 10.1.1 to 10.2.3

    Updates minimatch from 3.1.2 to 3.1.4

    Updates minimatch from 9.0.5 to 9.0.7

    Updates minimatch from 5.1.6 to 5.1.8


    updated-dependencies:

    • dependency-name: minimatch
      dependency-version: 10.2.3
      dependency-type: indirect
    • dependency-name: minimatch
      dependency-version: 3.1.4
      dependency-type: direct:production
    • dependency-name: minimatch
      dependency-version: 9.0.7
      dependency-type: indirect
    • dependency-name: minimatch
      dependency-version: 5.1.8
      dependency-type: indirect
      ...

    Signed-off-by: dependabot[bot] <support@​redirect.github.com>

  • 5f09e2 Merge pull request #1243 from microsoft/dependabot/npm_and_yarn/markdown-it-14.1.1

    Bump markdown-it from 14.1.0 to 14.1.1

  • 61ad36 Merge pull request #1244 from microsoft/dependabot/npm_and_yarn/qs-6.14.2

    Bump qs from 6.14.1 to 6.14.2

  • b30d61 Bump qs from 6.14.1 to 6.14.2

    Bumps qs from 6.14.1 to 6.14.2.


    updated-dependencies:

    • dependency-name: qs
      dependency-version: 6.14.2
      dependency-type: indirect
      ...

    Signed-off-by: dependabot[bot] <support@​redirect.github.com>

  • d3230b Bump markdown-it from 14.1.0 to 14.1.1

    Bumps markdown-it from 14.1.0 to 14.1.1.


    updated-dependencies:

    • dependency-name: markdown-it
      dependency-version: 14.1.1
      dependency-type: direct:production
      ...

    Signed-off-by: dependabot[bot] <support@​redirect.github.com>

  • 2aeafb Bump @​isaacs/brace-expansion from 5.0.0 to 5.0.1 (#1239)

    Bumps @​isaacs/brace-expansion from 5.0.0 to 5.0.1.


    updated-dependencies:

    • dependency-name: "@​isaacs/brace-expansion"
      dependency-version: 5.0.1
      dependency-type: indirect
      ...

    Signed-off-by: dependabot[bot] <support@​redirect.github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@​users.noreply.redirect.github.com>

  • dea3b1 Bump lodash from 4.17.21 to 4.17.23 (#1238)

    Bumps lodash from 4.17.21 to 4.17.23.


    updated-dependencies:

    • dependency-name: lodash
      dependency-version: 4.17.23
      dependency-type: indirect
      ...

    Signed-off-by: dependabot[bot] <support@​redirect.github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@​users.noreply.redirect.github.com>

  • dc34fd Merge pull request #1234 from microsoft/dependabot/npm_and_yarn/qs-6.14.1

    Bump qs from 6.11.0 to 6.14.1

  • 5ac9b7 Bump qs from 6.11.0 to 6.14.1

    Bumps qs from 6.11.0 to 6.14.1.


    updated-dependencies:

    • dependency-name: qs
      dependency-version: 6.14.1
      dependency-type: indirect
      ...

    Signed-off-by: dependabot[bot] <support@​redirect.github.com>

  • 47330a Merge pull request #1233 from JoeRobich/dev/jorobich/set-exitcode

    Return non-zero exit code when signature verification fails

  • 7a8969 Return non-zero exit code when signature verification fails
  • d6d2ef Merge pull request #1232 from microsoft/benibenj/relevant-lamprey

    Audit npm package

  • 915bc0 audit npm package
  • 1dbea2 Merge pull request #1228 from microsoft/dependabot/npm_and_yarn/multi-d0f6e8601e

    Bump jws

  • 142aaa Bump jws

    Bumps and jws. These dependencies needed to be updated together.

    Updates jws from 3.2.2 to 3.2.3

    Updates jws from 4.0.0 to 4.0.1


    updated-dependencies:

    • dependency-name: jws
      dependency-version: 3.2.3
      dependency-type: indirect
    • dependency-name: jws
      dependency-version: 4.0.1
      dependency-type: indirect
      ...

    Signed-off-by: dependabot[bot] <support@​redirect.github.com>

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.

0 participants