Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
340 commits
Select commit Hold shift + click to select a range
c63aa33
crypto: optimize key slot caching
panva Aug 24, 2026
9adc87b
crypto: harden X509Certificate state
panva Aug 23, 2026
b71c4c0
fs: fix rmSync error messages for non-ASCII paths
Yeaseen Aug 27, 2026
5468337
quic: release stream arenas before cleanup
trivikr Aug 27, 2026
79509c2
crypto: correct CCM decryption FIPS error message
kyungrae2002 Aug 21, 2026
847fe4d
permission: block FileHandle fsync and fdatasync
RafaelGSS Aug 27, 2026
b6d7ed3
crypto: fix private SPKI export error
panva Aug 25, 2026
212f6c6
util: canonicalize namespaced tags in inspect()
Renegade334 Aug 27, 2026
e3f52b8
src: report libuv error when openAsBlob cannot stat
bitpshr Aug 28, 2026
f6b4793
events: fix weak listener retention overwrite
aryansaves Aug 28, 2026
742b4bf
http: coalesce chunked writes during auto-corking
GetThatCookie Aug 4, 2026
f67ed99
typings: add encodeIntoResults to EncodingBinding
greenheadHQ Aug 29, 2026
e0c7ba8
benchmark: add --analyze option to benchmark/scatter.js
jasnell Aug 29, 2026
676e15c
build: define V8_CONTIGUOUS_COMPRESSED_RO_SPACE for shared cage
codebytere Aug 29, 2026
10b1a0f
benchmark: fix max-regressions detection in compare.js
jasnell Aug 27, 2026
191ebfb
crypto: fix public PKCS8 export error
koreahghg Aug 30, 2026
024bef2
quic: remove unused fin flag from blob reader wakeup
trivenay Aug 30, 2026
49232db
src: reuse cached strings in CompileSerializeMain
agape1225 Aug 31, 2026
47b3f6a
stream: fix early drain after Utf8Stream reopen
mcollina Aug 31, 2026
33b8d6e
src: add re-entrancy guard to TriggerUncaughtException
themuuln Jul 6, 2026
ba5ca5a
fs: fix recursive watch error handling
panva Aug 31, 2026
f3b9f13
test: update streams WPT
standard-Chan Aug 31, 2026
7804bfb
fs: preserve directory timestamps in cp
abhi128nandan Aug 25, 2026
ac4cf54
fs: watch directories, not files, in recursive fs.watch fallback
codebytere Aug 31, 2026
dd5662e
fs: do not descend into symlinks for ** unless following symlinks
RafaelGSS Aug 4, 2026
61ca3ba
src: apply IsolateSettings when using a snapshot
codebytere Aug 31, 2026
ba65bb1
test: fix recursive fs.watch error fixture
panva Aug 31, 2026
ffd3de2
tls: read the peer certificate chain without consuming it
tgies Aug 31, 2026
a28aad9
test: update WPT for url to c23755a144
nodejs-github-bot Sep 1, 2026
6345c6d
url: align URLPatternInit dictionary conversion with WebIDL
piyushrajyadav Sep 2, 2026
cd04cb1
net: recognize bare IPv6 loopback addresses in isLoopback
watilde Sep 2, 2026
b282765
src: fix live lock between environments with blocked requests
IlyasShabi Sep 2, 2026
d983942
node-api: make object property arrays const
umuoy1 Sep 2, 2026
748adc6
stream: fixup cancelation handling in pull()
jasnell Aug 29, 2026
2130738
stream: ensure iterator cleanup on done, reject, etc
jasnell Aug 29, 2026
f499d6f
stream: fixup writer to terminate on consumer return/throw
jasnell Aug 29, 2026
1e215c4
stream: ensure full-close semantics when closed
jasnell Aug 30, 2026
24d8799
stream: fix merge settlement tagging and falsy error tracking
jasnell Aug 30, 2026
9c22c41
stream: cancel active stream/iter pulls
jasnell Aug 30, 2026
6952928
stream: replace object sentinel with symbol
jasnell Aug 30, 2026
80568f6
stream: address stream/iter review feedback
jasnell Aug 30, 2026
127cb31
perf_hooks: add missing resource timing attributes
greenheadHQ Sep 2, 2026
c2bb3ae
lib: defer source map payload decoding until first use
codebytere Aug 22, 2026
2203ac9
src: fix startup snapshot reproducibility of InternalFieldInfo
legendecas Sep 2, 2026
b7b18fd
sqlite: run backup completion in callback scope
panva Sep 2, 2026
bc431c8
fs: apply nocase to literal glob exclude patterns
yhay81 Sep 3, 2026
1dfb047
fs: handle recursive watch setup races
panva Sep 3, 2026
466f1f8
net: fix BlockList.fromJSON for IPv4-mapped IPv6 rules
watilde Sep 3, 2026
536ccc7
https: limit proxy CONNECT response headers
mcollina Jul 16, 2026
75456a3
perf_hooks: implement Histogram meanCI API
jasnell Aug 27, 2026
b23928a
typings: add types for performance binding
sjungwon03 Sep 4, 2026
c65fafe
errors: validate constructor name
christianaurichzm Sep 4, 2026
d535859
stream: avoid per-chunk promises in webstream adapters
mcollina Sep 4, 2026
96d4c23
http: fast-forward teardown of unread messages
mcollina Aug 29, 2026
3882929
stream: skip unobserved 'readable' emission at EOF
mcollina Sep 4, 2026
f2af511
test: zero-fill buffers before the string length limit check
christianaurichzm Sep 5, 2026
a082916
stream: ensure factory signals remain active through closing
jasnell Aug 30, 2026
6d8e643
stream: ensure async dispoal after endSync awaits for drain
jasnell Aug 30, 2026
d7d0440
stream: pre-aborted pipeTo now applies dest failure handling
jasnell Aug 30, 2026
49ee85b
stream: make pipeTo source normalization independent of Writer
jasnell Aug 30, 2026
fd68d5c
stream: apply source normalization once at call time
jasnell Aug 30, 2026
2e54186
stream: ensure from() observes returned rejecting promise correctly
jasnell Aug 30, 2026
4b29051
stream: fix nested async flushing with infinite sources
jasnell Aug 30, 2026
02c776a
stream: ensure that stateful transforms preserve this
jasnell Aug 30, 2026
97516fc
quic: stop guarding ngtcp2_recv_stop_sending callback field
Renegade334 Sep 6, 2026
4b23a44
build: enable the V8 sandbox in shared-cage builds
codebytere Aug 21, 2026
d659dd8
fs: give directories created by cpSync the source directory's mode
codebytere Aug 22, 2026
c280d65
build: allow linking shared dependencies in the GN build
codebytere Sep 4, 2026
d520b96
http2: fix write deadlock exposed by larger window sizes
pimterry Aug 26, 2026
c47feb0
deps: update zlib to 1.3.2.1-motley-285e94b
nodejs-github-bot Sep 8, 2026
8a5b125
deps: update simdjson to 4.6.11
nodejs-github-bot Sep 8, 2026
4396c9b
deps: update googletest to 283c17563fe7a1111cd7f581aa5d541e8baeff2f
nodejs-github-bot Sep 8, 2026
5a46a9a
crypto: improve SubtleCrypto.supports() accuracy
panva Sep 19, 2026
51aad5a
crypto: enable SIV and GCM-SIV modes in Cipher/Decipher APIs
panva Sep 19, 2026
c2f1e82
crypto: discover hashes from OpenSSL providers
panva Sep 19, 2026
a4ab3d8
crypto: discover ciphers from OpenSSL providers
panva Sep 19, 2026
ec7819d
crypto: fix RSA-PSS oversized salt handling
panva Sep 19, 2026
2b62aaf
crypto: validate JWK usages before key_ops
panva Sep 19, 2026
c162c68
crypto: add a generic MAC API
panva Sep 19, 2026
adbc757
sqlite: add StatementSync.prototype[Symbol.dispose]()
araujogui Sep 19, 2026
41161dd
sqlite: add StatementSync.prototype.close()
araujogui Sep 19, 2026
be849bc
sqlite: reject connection access from authorizer callbacks
TrevorBurnham Sep 19, 2026
f58a55b
sqlite: add diagnostic channel
araujogui Sep 19, 2026
db6ea13
crypto: add FIPS indicator diagnostics channel
panva Sep 19, 2026
c61953e
crypto: add strict mode to --force-fips
panva Sep 19, 2026
022ac83
crypto: cache valid ECDH key pairs
panva Sep 19, 2026
db8a916
crypto: fix multi-prime RSA JWKs
panva Sep 19, 2026
e4d916f
crypto: add mgf1Hash for RSA-OAEP
adamjmcgrath Sep 19, 2026
99e41eb
http2: error for incomplete reads on RST, auto-drain, deprecate aborted
pimterry Jun 1, 2026
22f47ff
test: update WPT WebCrypto, WebIDL and interfaces
panva Sep 19, 2026
abe1b67
src: keep global list of addon-provided cleanup hooks
addaleax Jun 18, 2026
5570a84
src: fix use-after-free in CleanupHookThunkRun
everett1992 Sep 4, 2026
aed7344
test: fix flaky cleanup in http2 test
pimterry Sep 3, 2026
7331f5c
src: stop leaking a CppHeap in CommonEnvironmentSetup
codebytere Sep 7, 2026
0f0566d
stream: allocate stream read buffers from a slab
mcollina Jul 12, 2026
6262e0b
stream: create write request objects lazily
mcollina Jul 12, 2026
7a2f322
build: fix quiet default for make builds
codebytere Sep 7, 2026
843a277
inspector: fix crash when the IsolateData has no platform
codebytere Sep 7, 2026
a3ababc
src: fix null pointer call when running without a startup snapshot
codebytere Sep 7, 2026
98486dd
quic: reject zero addressLRUSize
christianaurichzm Sep 7, 2026
c8ac916
doc: note that FreeEnvironment() runs a shared event loop
codebytere Sep 8, 2026
3d9177b
typings: add missing sea binding properties
hyemimi Sep 8, 2026
ac37bbe
typings: add timeoutInfo to TimersBinding
greenheadHQ Sep 8, 2026
cd10114
fs: support removing read-only files in rmSync on Windows
SparshGarg999 Sep 8, 2026
7cc02b1
lib: validate sequence iterator objects
panva Sep 8, 2026
414b6bf
doc: expand revert commit collaborator instructions
MikeMcC399 Sep 8, 2026
624abbe
crypto: use primordials in HKDF info validation
panva Sep 1, 2026
f4665f1
crypto: validate the limit of PBKDF2 iterations
panva Sep 1, 2026
a7f8de6
net: support sending net.BoundSocket to threads and child processes
guybedford Jul 27, 2026
55db777
typings: add task_queue internal binding types
leah-1ee Sep 8, 2026
230a7fc
lib: optimize internal Web IDL dictionaries
panva Sep 8, 2026
593b40e
meta: add web-standards as webidl owners
panva Sep 8, 2026
c97d09c
tools: apply feedback to and simplify contributor guidance workflow
panva Sep 8, 2026
faa16f6
stream: amortize writable buffer compaction
gurgunday Sep 8, 2026
7bf048a
doc: add DOMException section to errors API reference
zeexzeex Sep 8, 2026
ee80bea
quic: fix crash in onStreamClose
martenrichter Sep 8, 2026
d7e7308
zlib: improve zstd decoding across chunk boundaries
jasnell Sep 6, 2026
6076111
doc: qualify directory read ordering for native fs
trivikr Sep 9, 2026
ab3c2a8
tools: unlabel author ready on base branch conflicts
panva Sep 9, 2026
cc12439
path: remove `StringPrototypeCharCodeAt` from some methods of `posix`
HBSPS Sep 9, 2026
ff25d0a
tools: lint PR commit messages without approval
panva Sep 9, 2026
c2620d0
doc: document windowsHide for child_process.fork
christopher-buss Sep 9, 2026
60a9a28
lib: avoid unsafe array iteration in cli table
HoonDongKang Sep 9, 2026
fa91224
buffer: fix unaligned UTF-16LE decoding
mcollina Sep 10, 2026
9f88c6f
doc: add inoway46 as triager
inoway46 Sep 10, 2026
e04210b
test: try fixing windows build replacing WMIC
jasnell Sep 10, 2026
a1649b3
tools: fix commit queue error summary matching
panva Sep 10, 2026
684008b
crypto: read EC curve metadata directly
panva Sep 7, 2026
ee956ae
crypto: export EC JWK coordinates directly
panva Sep 7, 2026
5b592b7
crypto: avoid EC raw export reconstruction
panva Sep 7, 2026
80a6ad5
crypto: avoid EC reconstruction for signature sizing
panva Sep 7, 2026
0b6d945
test: skip C++ symbols in tick-processor-arguments
pipobscure Sep 10, 2026
3c814e8
src: fix Stop() terminating the next Environment on the isolate
codebytere Sep 2, 2026
9a1d47b
tools: bump js-yaml from 4.3.1 to 4.3.2 in /tools/lint-md
dependabot[bot] Sep 11, 2026
1cb899f
tools: bump js-yaml from 4.3.1 to 4.3.2 in /tools/eslint
dependabot[bot] Sep 11, 2026
de1074d
zlib: fix zstd reset
jasnell Sep 6, 2026
2e1772a
doc: fill in missing zstd docs
jasnell Sep 6, 2026
b44c072
zlib: reject invalid zstd dictionaries
jasnell Sep 6, 2026
64649ab
src: keep the first snapshot blob alive for later isolates
codebytere Sep 2, 2026
21aec3f
tls: defer re-entrant calls to SSL state machine from JS
pimterry Sep 11, 2026
4c702e4
test: deflake node-api test-free-called
christianaurichzm Sep 10, 2026
f3019b5
fs: throw on existing dir in cpSync with errorOnExist
watilde Sep 12, 2026
54d7743
url: add Symbol.toStringTag to URLPattern
XadillaX Sep 12, 2026
7011764
src: don't kill own process group on failed spawn
lazerg Sep 12, 2026
f8737b8
stream: fix ERR_INVALID_STATE when cancelling Readable.toWeb()
richardscarrott Sep 12, 2026
70c1415
stream: reject closed only after sink abort settles
lazerg Sep 12, 2026
01032f4
lib: fix for FileHandle.readableWebStream
pdaehne Jun 25, 2025
9cfbfae
perf_hooks: validate import normalization offset
mcollina Sep 12, 2026
3216bc3
stream: keep webstream stream states in fast-mode objects
mcollina Aug 28, 2026
bbb0055
stream: avoid promise allocation for parked transform writes
mcollina Aug 28, 2026
aa549fe
meta: expand on collaborator restoration process
legendecas Sep 12, 2026
eff5d15
meta: add joyeecheung as v8 currency strategic initiative champion
joyeecheung Sep 12, 2026
e6832b2
assert: fix TypeError on deepStrictEqual with null Map key or Set member
semx Sep 12, 2026
b376622
test_runner: fix quote escaping in JUnit
hanityx Sep 12, 2026
2bde683
test: close WebAssembly test HTTP servers
panva Sep 11, 2026
f5edf1c
tools: reduce test runner timing overhead
panva Sep 11, 2026
6252905
test: avoid idle HTTP/HTTPS connections
panva Sep 11, 2026
c732384
test: synchronize ordered runner events
panva Sep 11, 2026
384d4fe
test: skip retries in DNS timeout coverage
panva Sep 11, 2026
b29154d
test: collect timeout signals explicitly
panva Sep 11, 2026
bfdf207
test: unref cancelled broadcast source timer
panva Sep 11, 2026
a578933
test: overlap SLH-DSA signature checks
panva Sep 11, 2026
a079177
benchmark: add --csv option to compare.js with --analyze
jasnell Sep 9, 2026
13a2982
test: improve sequential test performance
jasnell Sep 9, 2026
b4b8593
test_runner: avoid reusing v8 serializers
inoway46 Sep 14, 2026
9a2f77a
http2: fix onread assert when destroying session from stream handler
sankalpsthakur Sep 2, 2026
ffd47a7
doc: clarify permission model scope for output paths
RafaelGSS Sep 14, 2026
8aa8709
perf_hooks: reuse buffer for uv metrics
HoonDongKang Sep 14, 2026
0a9e844
tools: pass author to commit message validator
panva Sep 15, 2026
b8c5283
test: fix stderr Buffer assertion in exec encoding test
greenheadHQ Sep 13, 2026
d55d303
tools: make checkout credential use explicit
panva Sep 13, 2026
bfa329d
tools: correct Slack action version comments
panva Sep 13, 2026
160d44e
doc: clarify QUIC async write backpressure
johnfinnerty-nz Sep 15, 2026
2faca50
deps: update googletest to 8eff9e336692fc95961e096564f1044c600b881d
nodejs-github-bot Sep 15, 2026
33775d2
test: prevent parser reuse across close scenarios
panva Sep 15, 2026
7ae0855
lib: fix AbortSignal.any() abort propagation
inoway46 Sep 16, 2026
fe61478
inspector: fix abort when two Environments own the inspector
codebytere Sep 2, 2026
67cb305
doc: note that default signal handling resets the signal mask
codebytere Sep 3, 2026
53b4700
http: don't destroy socket after request completes
barathraj048 Sep 16, 2026
241339f
src,lib: add util.markPromiseAsHandled
jasnell Sep 7, 2026
047d7c5
test: implement low-risk test optimizations
jasnell Sep 9, 2026
6b3e6f9
perf_hooks: implement qrde analysis support in Histogram
jasnell Sep 5, 2026
60c3eb6
perf_hooks: implement SlidingWindowHistogram
jasnell Sep 5, 2026
b4a6719
test: expand histogram test coverage
jasnell Sep 5, 2026
a3bbb5a
util: implement debounce
jasnell Sep 8, 2026
63b0974
util: implement util.throttle
jasnell Sep 13, 2026
1019f62
test: deflake util.throttle tests
panva Sep 15, 2026
8921108
http2: settle pending write callbacks on destroy
mcollina Sep 15, 2026
253784f
crypto: optimize and benchmark key preparation
panva Sep 9, 2026
0f62f2b
src: print exception thrown during primordial initialization
joyeecheung Sep 16, 2026
ec37f93
tls: propagate singleUse to the secure context
ViniciusDev26 Sep 17, 2026
d1c60d8
stream: update broadcast to retain buffered data with zero consumers
jasnell Aug 30, 2026
5f06def
stream: make share budget failures detach before throwing
jasnell Aug 30, 2026
d319fa7
doc: remove obsolete mentioning of cl.exe on windows
legendecas Sep 17, 2026
94e1213
build: derive V8_LOGGING_LEVEL from dcheck_always_on
joyeecheung Sep 17, 2026
0f27bd2
test: unskip `test-watch-create-isolation-none`
aduh95 Sep 17, 2026
d004d95
tools: update pgo build doc for linux
legendecas Sep 17, 2026
2428b13
meta: bump github/codeql-action/autobuild from 4.37.9 to 4.38.0
dependabot[bot] Sep 18, 2026
b3c5c2b
meta: bump github/codeql-action/analyze from 4.37.9 to 4.38.0
dependabot[bot] Sep 18, 2026
9c2abc1
meta: bump github/codeql-action/init from 4.37.9 to 4.38.0
dependabot[bot] Sep 18, 2026
499fe73
tools: bump the eslint group in /tools/eslint with 6 updates
dependabot[bot] Sep 18, 2026
a794e36
sqlite: throw on invalid URL path instead of abort
araujogui Sep 18, 2026
1260642
stream: destroy Duplex.from async function on early return
ac-mmi Sep 18, 2026
a27db42
fs: coerce FileHandle.read length like fs.read
xia-chao Sep 18, 2026
146f00f
child_process: clear timeout timer on spawn-time error too
kishore280 Sep 18, 2026
b653813
doc: clarify sub-1000ms behavior in socket.setKeepAlive
haramj Sep 18, 2026
a6bd0c1
build: suppress OpenSSL asm warnings with clang
richardlau Sep 14, 2026
fa9188b
quic: fix two small bugs in HTTP/3 stream internals
pimterry Sep 10, 2026
b2252b4
tools: summarize auto-start-ci failures
panva Sep 18, 2026
7a481eb
tools: group CodeQL GHA updates
aduh95 Sep 18, 2026
0a4a8d6
doc: fix duplicate 'the' typo in `node_platform.cc`
almuzahidseyam Sep 18, 2026
693e890
meta: bump github/codeql-action/upload-sarif from 4.37.9 to 4.38.0
dependabot[bot] Sep 18, 2026
b351ac9
meta: bump step-security/harden-runner from 2.21.0 to 2.21.1
dependabot[bot] Sep 18, 2026
d11c65d
doc: add araujogui to collaborators
araujogui Sep 17, 2026
dc6b9ba
test: deflake test-run-watch-cwd-isolation-none-*
aduh95 Sep 18, 2026
ebc028d
trace_events: fix abort when Node.js does not own the V8 platform
codebytere Sep 18, 2026
aafff27
tools: bump eslint-plugin-jsdoc in /tools/eslint in the eslint group
dependabot[bot] Sep 20, 2026
e198aa0
crypto: read RSA-PSS restrictions from provider
panva Sep 8, 2026
c555ba0
tools: update `tools/v8` for Python 3.13
richardlau Sep 20, 2026
810a6b0
test: update tests to run with OpenSSL >= 3.0 FIPS mode
panva Aug 2, 2026
c2ec40c
crypto: disable non-FIPS WebCrypto paths in FIPS mode
panva Aug 11, 2026
e790713
lib: use Web IDL interface brand checks
panva Sep 8, 2026
0039479
lib: fix shared buffer growability validation
panva Sep 9, 2026
3f0b6d3
lib: avoid repeat internal receiver checks
panva Sep 10, 2026
5c51129
crypto: optimize private EC JWK import
panva Sep 7, 2026
a0fd0a8
test: use named parameters in DH stress test
panva Sep 11, 2026
d9f4a3e
test: reuse fixed primes in DH tests
panva Sep 11, 2026
61a73d3
test: fix RSA/DSA wrong-passphrase flake
panva Sep 14, 2026
8e631aa
crypto: add Hybrid KEMs to Web Cryptography
panva Sep 5, 2026
cb93d40
test,benchmark: use OpenSSL feature helpers
panva Sep 5, 2026
e7ed436
doc,test: account for OpenSSL 4.1 behaviours
panva Sep 12, 2026
ddbf974
crypto: add crypto.parsePKCS12()
bmuenzenmeyer Sep 12, 2026
a4effe6
crypto: use names for asymmetric key algorithms
panva Sep 17, 2026
612db6d
test: deflake user timing WPT assertions
panva Sep 18, 2026
56c16b2
crypto: derive keys through EVP_KDF
panva Sep 18, 2026
50ffed1
crypto: decode PKCS#1 keys through providers
panva Sep 18, 2026
764e0d1
crypto: fetch ciphers for private-key encoding
panva Sep 18, 2026
8feccc5
crypto: use provider EC group names
panva Sep 18, 2026
ef957ac
crypto: skip private RSA parameters in key details
panva Sep 7, 2026
95d9a25
test: consolidate crypto provider cache coverage
panva Sep 18, 2026
13987f4
crypto: remove redundent `std::move` call
aduh95 Sep 20, 2026
fb0d0ca
deps: V8: backport 0b94a9fd23ba
ruangustavo Sep 3, 2026
6dab541
test: skip RSA-PSS keygen deprecation tests with BoringSSL
codebytere Oct 6, 2026
249e9a1
build,src: gate jspi flag on V8_ENABLE_WEBASSEMBLY
pkubaj Oct 6, 2026
13ed7e3
src: list scripts when `--run` has no command
Cherry Aug 24, 2026
83b3431
src: detach cppgc wrappers from their Realm before it is freed
codebytere Sep 3, 2026
9ce8ef4
deps: V8: backport 8901c793e439
verwaest Apr 24, 2025
ba09b53
deps: V8: backport c3553509f460
schuay Jan 13, 2026
b8db004
deps: V8: cherry-pick ea9c016f26ad
sravani1510 Aug 4, 2026
a5d0eb9
2026-10-14, Version 24.22.0 'Krypton' (LTS)
nodejs-github-bot Oct 11, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
1 change: 1 addition & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
Expand Up @@ -190,6 +190,7 @@
# Web Standards
/lib/internal/bootstrap/web/* @nodejs/web-standards
/lib/internal/navigator.js @nodejs/web-standards
/lib/internal/webidl.js @nodejs/web-standards
/test/fixtures/wpt/ @nodejs/web-standards
/test/wpt/ @nodejs/web-standards

Expand Down
5 changes: 5 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,11 @@ updates:
commit-message:
prefix: meta
open-pull-requests-limit: 10
groups:
codeql-action:
applies-to: version-updates
patterns:
- github/codeql-action

- package-ecosystem: npm
directory: /tools/eslint
Expand Down
48 changes: 48 additions & 0 deletions .github/workflows/author-ready-conflicts.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
name: Unlabel not-ready pull requests

on:
schedule:
- cron: 15 3 * * *

permissions:
contents: read

jobs:
remove-label:
name: Remove author ready
if: github.repository == 'nodejs/node'
runs-on: ubuntu-slim
permissions:
pull-requests: write
steps:
- name: Remove the label and comment
env:
GH_TOKEN: ${{ github.token }}
MESSAGE: >-
This pull request has conflicts with its base branch, removing the
`author ready` label.

Please
[rebase](https://github.com/nodejs/node/blob/HEAD/doc/contributing/pull-requests.md#step-5-rebase)
your branch onto the latest base branch, resolve the conflicts
locally, and force-push.

Afterwards the pull request needs a fresh collaborator approval,
and a collaborator will add the label back once it is
[author ready](https://github.com/nodejs/node/blob/HEAD/doc/contributing/collaborator-guide.md#author-ready-pull-requests)
again.
run: |
# Requesting the mergeable field makes GitHub compute the merge state,
# pull requests still reported as UNKNOWN are picked up by a later run.
gh pr list \
--repo "$GITHUB_REPOSITORY" \
--label 'author ready' \
--state open \
--limit 100 \
--json number,mergeable \
--jq '.[] | select(.mergeable == "CONFLICTING") | .number' |
while read -r number; do
gh pr edit "$number" --repo "$GITHUB_REPOSITORY" --remove-label 'author ready'
printf '%s\n' "$MESSAGE" |
gh pr comment "$number" --repo "$GITHUB_REPOSITORY" --body-file -
done
4 changes: 2 additions & 2 deletions .github/workflows/auto-start-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ on:
# optimistic, it can take longer to run.
# To understand why `schedule` is used instead of other events, refer to
# ./doc/contributing/commit-queue.md
- cron: '*/5 * * * *'
- cron: 3/5 * * * *

concurrency: ${{ github.workflow }}

Expand Down Expand Up @@ -51,7 +51,7 @@ jobs:
runs-on: ubuntu-slim
steps:
- name: Install Node.js
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: ${{ env.NODE_VERSION }}

Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/build-tarball.yml
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ jobs:
if: github.event.pull_request.draft == false
runs-on: ubuntu-slim
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
- name: Set up Python ${{ env.PYTHON_VERSION }}
Expand All @@ -68,7 +68,7 @@ jobs:
SCCACHE_GHA_ENABLED: ${{ github.base_ref == 'main' || github.ref_name == 'main' }}
SCCACHE_IDLE_TIMEOUT: '0'
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
sparse-checkout: .github/actions/install-clang
Expand Down
10 changes: 6 additions & 4 deletions .github/workflows/codeql.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,19 +24,21 @@ jobs:

steps:
- name: Checkout repository
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false

# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@e4fba868fa4b1b91e1fdab776edc8cfbe6e9fb81 # v4.37.3
uses: github/codeql-action/init@b96794f015dfd88f77b49b1c93e0fa7110f94c63 # v4.38.0
with:
languages: ${{ matrix.language }}
config-file: ./.github/codeql-config.yml

- name: Autobuild
uses: github/codeql-action/autobuild@e4fba868fa4b1b91e1fdab776edc8cfbe6e9fb81 # v4.37.3
uses: github/codeql-action/autobuild@b96794f015dfd88f77b49b1c93e0fa7110f94c63 # v4.38.0

- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@e4fba868fa4b1b91e1fdab776edc8cfbe6e9fb81 # v4.37.3
uses: github/codeql-action/analyze@b96794f015dfd88f77b49b1c93e0fa7110f94c63 # v4.38.0
with:
category: /language:${{matrix.language}}
13 changes: 0 additions & 13 deletions .github/workflows/commit-lint-problem-matcher.json

This file was deleted.

55 changes: 38 additions & 17 deletions .github/workflows/commit-lint.yml
Original file line number Diff line number Diff line change
@@ -1,35 +1,56 @@
name: First commit message adheres to guidelines

on:
pull_request:
pull_request_target:
branches:
- main

env:
NODE_VERSION: lts/*

permissions:
contents: read
pull-requests: read

concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number }}
cancel-in-progress: true

jobs:
lint-commit-message:
name: lint-commit-message
runs-on: ubuntu-slim
steps:
- name: Compute number of commits in the PR
id: nb-of-commits
run: |
echo "plusOne=$((${{ github.event.pull_request.commits }} + 1))" >> $GITHUB_OUTPUT
echo "minusOne=$((${{ github.event.pull_request.commits }} - 1))" >> $GITHUB_OUTPUT
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
fetch-depth: ${{ steps.nb-of-commits.outputs.plusOne }}
persist-credentials: false
- run: git reset HEAD^2
- name: Install Node.js
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: ${{ env.NODE_VERSION }}
- name: Validate commit message
run: |
echo "::add-matcher::.github/workflows/commit-lint-problem-matcher.json"
git rev-parse HEAD~${{ steps.nb-of-commits.outputs.minusOne }} | xargs npx -q core-validate-commit --no-validate-metadata --tap
- name: Validate first commit message
uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
with:
script: |
const { data: [commit] } = await github.rest.pulls.listCommits({
...context.repo,
pull_number: context.issue.number,
per_page: 1,
});
if (!commit) {
throw new Error('No commits found in pull request');
}
const { exitCode, stdout, stderr } = await exec.getExecOutput('npx', [
'-q', '--yes', '--ignore-scripts', 'core-validate-commit@6.0.0',
'--no-validate-metadata', '--tap', '-',
], {
cwd: process.env.RUNNER_TEMP,
input: Buffer.from(JSON.stringify([{
id: commit.sha,
message: commit.commit.message,
author: commit.commit.author,
}])),
silent: true,
ignoreReturnCode: true,
});
if (exitCode !== 0) {
core.setFailed(stdout + stderr || 'Commit message validation failed');
} else {
core.info('First commit message passes validation');
}
34 changes: 31 additions & 3 deletions .github/workflows/commit-queue.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ on:
# be read-only, and the Action won't have access to any other repository
# secrets, which it needs to access Jenkins API.
schedule:
- cron: '*/5 * * * *'
- cron: 3/5 * * * *

concurrency: ${{ github.workflow }}

Expand All @@ -28,6 +28,7 @@ jobs:
if: github.repository == 'nodejs/node'
runs-on: ubuntu-slim
outputs:
aged_prs: ${{ steps.get_candidate_prs.outputs.aged_prs }}
candidates: ${{ steps.get_candidate_prs.outputs.candidates }}
steps:
- name: Get Pull Request Candidates
Expand All @@ -50,6 +51,7 @@ jobs:
--search "-label:blocked")
candidates=$(printf '%s %s\n' "$fast_track_prs" "$aged_prs" |
jq -r -s 'reduce .[] as $pr ([]; if index($pr) then . else . + [$pr] end) | join(" ")')
echo "aged_prs=$aged_prs" >> "$GITHUB_OUTPUT"
echo "candidates=$candidates" >> "$GITHUB_OUTPUT"
env:
GH_TOKEN: ${{ github.token }}
Expand All @@ -64,7 +66,7 @@ jobs:
runs-on: ubuntu-slim
steps:
- name: Install Node.js
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: ${{ env.NODE_VERSION }}

Expand Down Expand Up @@ -93,6 +95,7 @@ jobs:
curl -fsSLo "$readme" "https://github.com/${GITHUB_REPOSITORY}/raw/${GITHUB_SHA}/README.md"

numbers=
lacks_second_approval_prs=
# shellcheck disable=SC2086
for pr in $CANDIDATES; do
metadata="${RUNNER_TEMP}/metadata-${pr}.json"
Expand Down Expand Up @@ -139,6 +142,14 @@ jobs:
if [ "$metadata_status" -ge 20 ] && [ "$metadata_status" -le 29 ]; then
echo "pr ${pr} skipped, not ready to land"
echo "reason codes: ${metadata_reason_codes}"
if jq -e '
(.reasonCodes | index("wait-time")) and
(.pullRequest.labels | index("lacks-second-approval") | not)
' "$metadata" > /dev/null; then
case " $AGED_PRS " in
*" $pr "*) lacks_second_approval_prs="$lacks_second_approval_prs $pr" ;;
esac
fi
continue
fi

Expand All @@ -148,19 +159,36 @@ jobs:
done

numbers=$(echo "$numbers" | xargs)
lacks_second_approval_prs=$(echo "$lacks_second_approval_prs" | xargs)
echo "numbers=$numbers" >> "$GITHUB_OUTPUT"
echo "lacks_second_approval_prs=$lacks_second_approval_prs" >> "$GITHUB_OUTPUT"
env:
AGED_PRS: ${{ needs.get_candidate_prs.outputs.aged_prs }}
CANDIDATES: ${{ needs.get_candidate_prs.outputs.candidates }}
GH_TOKEN: ${{ github.token }}

- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: Label Pull Requests Lacking a Second Approval
if: steps.get_mergeable_prs.outputs.lacks_second_approval_prs != ''
run: |
# shellcheck disable=SC2086
for pr in $PULL_REQUESTS; do
if ! gh -R "$GITHUB_REPOSITORY" pr edit "$pr" --add-label 'lacks-second-approval'; then
echo "::warning::Failed to add lacks-second-approval to PR ${pr}"
fi
done
env:
GH_TOKEN: ${{ secrets.GH_USER_TOKEN }}
PULL_REQUESTS: ${{ steps.get_mergeable_prs.outputs.lacks_second_approval_prs }}

- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
if: steps.get_mergeable_prs.outputs.numbers != ''
with:
# A personal token is required because pushing with GITHUB_TOKEN will
# prevent commits from running CI after they land. It needs
# to be set here because `checkout` configures GitHub authentication
# for push as well.
token: ${{ secrets.GH_USER_TOKEN }}
persist-credentials: true

- name: Start the Commit Queue
if: steps.get_mergeable_prs.outputs.numbers != ''
Expand Down
Loading