Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
908 commits
Select commit Hold shift + click to select a range
e11abb1
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
f645d0c
Merge branch 'owl-bot-update-lock-2069d88011f3616de15f4d6b5c9e0c5eebb…
gcf-owl-bot[bot] Aug 13, 2025
db4b75e
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
f61073c
Merge branch 'owl-bot-update-lock-2069d88011f3616de15f4d6b5c9e0c5eebb…
gcf-owl-bot[bot] Aug 13, 2025
24bfd23
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
ac0fcf1
Merge branch 'owl-bot-update-lock-2069d88011f3616de15f4d6b5c9e0c5eebb…
gcf-owl-bot[bot] Aug 13, 2025
86ff178
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
8c2de77
Merge branch 'owl-bot-update-lock-2069d88011f3616de15f4d6b5c9e0c5eebb…
gcf-owl-bot[bot] Aug 13, 2025
97c40f7
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
edfe641
Merge branch 'owl-bot-update-lock-2069d88011f3616de15f4d6b5c9e0c5eebb…
gcf-owl-bot[bot] Aug 13, 2025
38903b5
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
eb767a1
Merge branch 'owl-bot-update-lock-2069d88011f3616de15f4d6b5c9e0c5eebb…
gcf-owl-bot[bot] Aug 13, 2025
ba290c2
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
a3ecdff
Merge branch 'owl-bot-update-lock-2069d88011f3616de15f4d6b5c9e0c5eebb…
gcf-owl-bot[bot] Aug 13, 2025
7a2b211
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
d741b79
Merge branch 'owl-bot-update-lock-2069d88011f3616de15f4d6b5c9e0c5eebb…
gcf-owl-bot[bot] Aug 13, 2025
b83ca79
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
61fb76b
Merge branch 'owl-bot-update-lock-2069d88011f3616de15f4d6b5c9e0c5eebb…
gcf-owl-bot[bot] Aug 13, 2025
7a4c787
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
2a1a5ce
Merge branch 'owl-bot-update-lock-2069d88011f3616de15f4d6b5c9e0c5eebb…
gcf-owl-bot[bot] Aug 13, 2025
0813aa2
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
87b7a63
Merge branch 'owl-bot-update-lock-2069d88011f3616de15f4d6b5c9e0c5eebb…
gcf-owl-bot[bot] Aug 13, 2025
134ef5a
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
e60baa5
Merge branch 'owl-bot-update-lock-2069d88011f3616de15f4d6b5c9e0c5eebb…
gcf-owl-bot[bot] Aug 13, 2025
56cbcce
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
fd48e24
Merge branch 'owl-bot-update-lock-2069d88011f3616de15f4d6b5c9e0c5eebb…
gcf-owl-bot[bot] Aug 13, 2025
328accb
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
5d99bb3
Merge branch 'owl-bot-update-lock-2069d88011f3616de15f4d6b5c9e0c5eebb…
gcf-owl-bot[bot] Aug 13, 2025
233e6d7
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
f4f542f
Merge branch 'owl-bot-update-lock-2069d88011f3616de15f4d6b5c9e0c5eebb…
gcf-owl-bot[bot] Aug 13, 2025
56daff3
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
303e5ba
Merge branch 'owl-bot-update-lock-2069d88011f3616de15f4d6b5c9e0c5eebb…
gcf-owl-bot[bot] Aug 13, 2025
b2ce662
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
3f97047
Merge branch 'owl-bot-update-lock-2069d88011f3616de15f4d6b5c9e0c5eebb…
gcf-owl-bot[bot] Aug 13, 2025
09e5d86
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
fc8ccb8
Merge branch 'owl-bot-update-lock-2069d88011f3616de15f4d6b5c9e0c5eebb…
gcf-owl-bot[bot] Aug 13, 2025
4b99c05
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
8fbedca
Merge branch 'owl-bot-update-lock-2069d88011f3616de15f4d6b5c9e0c5eebb…
gcf-owl-bot[bot] Aug 13, 2025
29b4285
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
d02f87f
Merge branch 'owl-bot-update-lock-2069d88011f3616de15f4d6b5c9e0c5eebb…
gcf-owl-bot[bot] Aug 13, 2025
db985b7
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
58faf73
Merge branch 'owl-bot-update-lock-2069d88011f3616de15f4d6b5c9e0c5eebb…
gcf-owl-bot[bot] Aug 13, 2025
15615ff
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
8a15dfb
Merge branch 'owl-bot-update-lock-2069d88011f3616de15f4d6b5c9e0c5eebb…
gcf-owl-bot[bot] Aug 13, 2025
21517e3
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
85ebcaf
Merge branch 'owl-bot-update-lock-2069d88011f3616de15f4d6b5c9e0c5eebb…
gcf-owl-bot[bot] Aug 13, 2025
bd47c8b
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
5dc866b
Merge branch 'owl-bot-update-lock-2069d88011f3616de15f4d6b5c9e0c5eebb…
gcf-owl-bot[bot] Aug 13, 2025
e1f47ba
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
1f0f52b
Merge branch 'owl-bot-update-lock-2069d88011f3616de15f4d6b5c9e0c5eebb…
gcf-owl-bot[bot] Aug 13, 2025
e765e03
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
a557975
Merge branch 'owl-bot-update-lock-2069d88011f3616de15f4d6b5c9e0c5eebb…
gcf-owl-bot[bot] Aug 13, 2025
5c0cc97
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
30ca076
Merge branch 'owl-bot-update-lock-2069d88011f3616de15f4d6b5c9e0c5eebb…
gcf-owl-bot[bot] Aug 13, 2025
59b1a3c
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
eedb68c
Merge branch 'owl-bot-update-lock-2069d88011f3616de15f4d6b5c9e0c5eebb…
gcf-owl-bot[bot] Aug 13, 2025
ee48d42
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
fd522a9
Merge branch 'owl-bot-update-lock-2069d88011f3616de15f4d6b5c9e0c5eebb…
gcf-owl-bot[bot] Aug 13, 2025
fa5b9d4
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
c88ca25
Merge branch 'owl-bot-update-lock-2069d88011f3616de15f4d6b5c9e0c5eebb…
gcf-owl-bot[bot] Aug 13, 2025
5570f79
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
7495934
Merge branch 'owl-bot-update-lock-2069d88011f3616de15f4d6b5c9e0c5eebb…
gcf-owl-bot[bot] Aug 13, 2025
d701769
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
2ad2f39
Merge branch 'owl-bot-update-lock-2069d88011f3616de15f4d6b5c9e0c5eebb…
gcf-owl-bot[bot] Aug 13, 2025
236f539
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
67e0209
Merge branch 'owl-bot-update-lock-2069d88011f3616de15f4d6b5c9e0c5eebb…
gcf-owl-bot[bot] Aug 13, 2025
98de004
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
b7546d3
Merge branch 'owl-bot-update-lock-2069d88011f3616de15f4d6b5c9e0c5eebb…
gcf-owl-bot[bot] Aug 13, 2025
efaf590
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
decc939
Merge branch 'owl-bot-update-lock-2069d88011f3616de15f4d6b5c9e0c5eebb…
gcf-owl-bot[bot] Aug 13, 2025
5accd99
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
3c506f1
Merge branch 'owl-bot-update-lock-2069d88011f3616de15f4d6b5c9e0c5eebb…
gcf-owl-bot[bot] Aug 13, 2025
842cc89
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
82ac07b
Merge branch 'owl-bot-update-lock-2069d88011f3616de15f4d6b5c9e0c5eebb…
gcf-owl-bot[bot] Aug 13, 2025
4b2d51c
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
92469c9
Merge branch 'owl-bot-update-lock-2069d88011f3616de15f4d6b5c9e0c5eebb…
gcf-owl-bot[bot] Aug 13, 2025
d62748c
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
78d26e8
Merge branch 'owl-bot-update-lock-2069d88011f3616de15f4d6b5c9e0c5eebb…
gcf-owl-bot[bot] Aug 13, 2025
a93871c
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
6864493
Merge branch 'owl-bot-update-lock-2069d88011f3616de15f4d6b5c9e0c5eebb…
gcf-owl-bot[bot] Aug 13, 2025
075950d
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
bfc0fb4
Merge branch 'owl-bot-update-lock-2069d88011f3616de15f4d6b5c9e0c5eebb…
gcf-owl-bot[bot] Aug 13, 2025
73fc286
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
a51530b
Merge branch 'owl-bot-update-lock-2069d88011f3616de15f4d6b5c9e0c5eebb…
gcf-owl-bot[bot] Aug 13, 2025
fb041bb
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
331953e
Merge branch 'owl-bot-update-lock-2069d88011f3616de15f4d6b5c9e0c5eebb…
gcf-owl-bot[bot] Aug 13, 2025
21d999d
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
056aa3e
Merge branch 'owl-bot-update-lock-2069d88011f3616de15f4d6b5c9e0c5eebb…
gcf-owl-bot[bot] Aug 13, 2025
437ae24
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
a109102
Merge branch 'owl-bot-update-lock-2069d88011f3616de15f4d6b5c9e0c5eebb…
gcf-owl-bot[bot] Aug 13, 2025
cb1a0fb
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
e4d9d60
Merge branch 'owl-bot-update-lock-2069d88011f3616de15f4d6b5c9e0c5eebb…
gcf-owl-bot[bot] Aug 13, 2025
a7c0e8c
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
222d2d4
Merge branch 'owl-bot-update-lock-2069d88011f3616de15f4d6b5c9e0c5eebb…
gcf-owl-bot[bot] Aug 13, 2025
e0dcd98
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
3f8698e
Merge branch 'owl-bot-update-lock-2069d88011f3616de15f4d6b5c9e0c5eebb…
gcf-owl-bot[bot] Aug 13, 2025
f20f89c
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
79864b9
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
1a4d5a2
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
72484e8
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
2063f70
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
f5ef981
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
d161ba3
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
388147c
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
413de4f
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
77f0db2
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
dd82115
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
02e3119
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
4776fd5
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
c1dbcbc
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
40ad1ee
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
d5b09ab
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
a6d826d
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
b7320f8
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
c463b3b
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
93c3974
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
b3fff30
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
0209752
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
93a1421
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
88a24bf
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
0ae06d3
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
704ab93
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
e9c6441
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
7ab8734
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
a343e55
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
10cf1f4
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
449c239
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
b8980c5
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
0c212ce
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
7b28056
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
c6685fa
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
bd3f25f
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
31e9f23
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
bf1edff
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
b5c02fb
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
7792532
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
f60d660
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
c797e4b
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
abca5b7
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
cac217a
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
25ac498
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
3a66be4
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
38a9291
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
69f6b61
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
6f7a5e0
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
48fe8b1
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
75ea02b
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
91098d4
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
84d51e5
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
3ebc445
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
8fbf128
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
826f368
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
9e08924
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
5dd7ae0
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
03f7bb2
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
ef1a974
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
ff69ad2
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
0a1cce5
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
9894f84
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
94b8ac8
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
89644ee
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
a1b921c
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
e307b1e
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
faba610
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
f597f97
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
cc9966a
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
5d8d202
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
cff34ae
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
dfdc766
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
1d12324
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
e8d7718
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
b80684f
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
2cb2007
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
539b283
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
e68f5ed
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
022f6ae
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
4554e9b
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
f601df3
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
938c8d5
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
bd78a0e
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
5376493
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
c5c1f4e
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
7133a8e
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
b13594b
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
80bef3d
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
21dbef7
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
00c7ccc
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
c4aae5a
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
f732c5f
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
e25454a
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
3e5f8d4
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
d3aa0f9
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
9fc9db0
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
36bac93
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
5340784
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
d272403
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
1c88b02
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
622b59c
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
8baaafb
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
8e9009a
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
39b6982
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
aff3586
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
d83d25f
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
d340df8
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
7dba777
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
bece450
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
c5ce44f
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
66c9f2b
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
aea7f54
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
cff7c3c
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
717aaaa
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
c1a45a2
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
fc1b34f
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
5696629
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
4df4bd6
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
a34c617
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
9a758e0
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
56a7ae2
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
8220621
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
fe013a0
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
10da68b
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
992dbe6
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
e7ec227
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
c10708b
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
529c364
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
7cbea71
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
284d660
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
301909e
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
fe2418e
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
9d9f7d0
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
9b95225
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
51520ee
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
af4c6d1
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
ed497f4
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
f68febd
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
7d286e4
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
6dbb58f
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
8f05217
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
2ba25ec
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
bb495d0
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
18ba12d
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
55df530
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
2aa18d0
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
85f0d2e
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
c785f06
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
b764d25
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
7b02575
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
bcb0d6c
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
5442578
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
ee70770
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions .github/.OwlBot.lock.yaml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Copyright 2024 Google LLC
# Copyright 2025 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
Expand All @@ -13,5 +13,5 @@
# limitations under the License.
docker:
image: gcr.io/cloud-devrel-public-resources/owlbot-nodejs:latest
digest: sha256:609822e3c09b7a1bd90b99655904609f162cc15acb4704f1edf778284c36f429
# created: 2024-10-01T19:34:30.797530443Z
digest: sha256:2069d88011f3616de15f4d6b5c9e0c5eebbb39dc18a918e493c356956e23ead5
# created: 2025-08-13T01:17:03.353099594Z
33 changes: 28 additions & 5 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,30 @@
Thank you for opening a Pull Request! Before submitting your PR, there are a few things you can do to make sure it goes smoothly:
- [ ] Make sure to open an issue as a [bug/issue](https://github.com/googleapis/nodejs-logging-winston/issues/new/choose) before writing your code! That way we can discuss the change, evaluate designs, and agree on the general idea
> Thank you for opening a Pull Request! Before submitting your PR, there are a few things you can do to make sure it goes smoothly:

## Description

> Please provide a detailed description for the change.
> As much as possible, please try to keep changes separate by purpose. For example, try not to make a one-line bug fix in a feature request, or add an irrelevant README change to a bug fix.

## Impact

> What's the impact of this change?

## Testing

> Have you added unit and integration tests if necessary?
> Were any tests changed? Are any breaking changes necessary?

## Additional Information

> Any additional details that we should be aware of?

## Checklist

- [ ] Make sure to open an issue as a [bug/issue](https://github.com/googleapis/nodejs-logging-winston/issues/new/choose) before writing your code! That way we can discuss the change, evaluate designs, and agree on the general idea
- [ ] Ensure the tests and linter pass
- [ ] Code coverage does not decrease (if any source code was changed)
- [ ] Appropriate docs were updated (if necessary)
- [ ] Code coverage does not decrease
- [ ] Appropriate docs were updated
- [ ] Appropriate comments were added, particularly in complex areas or places that require background
- [ ] No new warnings or issues will be generated from this change

Fixes #<issue_number_goes_here> 🦕
Fixes #issue_number_goes_here 🦕
1 change: 1 addition & 0 deletions .github/release-trigger.yml
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
enabled: true
multiScmName: nodejs-logging-winston
41 changes: 29 additions & 12 deletions .github/scripts/close-invalid-link.cjs
Original file line number Diff line number Diff line change
Expand Up @@ -12,21 +12,26 @@
// See the License for the specific language governing permissions and
// limitations under the License.

const fs = require('fs');
const yaml = require('js-yaml');
const path = require('path');
const TEMPLATE_FILE_PATH = path.resolve(__dirname, '../ISSUE_TEMPLATE/bug_report.yml')

async function closeIssue(github, owner, repo, number) {
await github.rest.issues.createComment({
owner: owner,
repo: repo,
issue_number: number,
body: 'Issue was opened with an invalid reproduction link. Please make sure the repository is a valid, publicly-accessible github repository, and make sure the url is complete (example: https://github.com/googleapis/google-cloud-node)'
body: "Issue was opened with an invalid reproduction link. Please make sure the repository is a valid, publicly-accessible github repository, and make sure the url is complete (example: https://github.com/googleapis/google-cloud-node)"
});
await github.rest.issues.update({
owner: owner,
repo: repo,
issue_number: number,
state: 'closed'
state: "closed"
});
}
module.exports = async ({github, context}) => {
module.exports = async ({ github, context }) => {
const owner = context.repo.owner;
const repo = context.repo.repo;
const number = context.issue.number;
Expand All @@ -37,20 +42,32 @@ module.exports = async ({github, context}) => {
issue_number: number,
});

const isBugTemplate = issue.data.body.includes('Link to the code that reproduces this issue');
const yamlData = fs.readFileSync(TEMPLATE_FILE_PATH, 'utf8');
const obj = yaml.load(yamlData);
const linkMatchingText = (obj.body.find(x => {return x.type === 'input' && x.validations.required === true && x.attributes.label.includes('link')})).attributes.label;
const isBugTemplate = issue.data.body.includes(linkMatchingText);

if (isBugTemplate) {
console.log(`Issue ${number} is a bug template`)
try {
const link = issue.data.body.split('\n')[18].match(/(https?:\/\/(gist\.)?github.com\/.*)/)[0];
console.log(`Issue ${number} contains this link: ${link}`)
const isValidLink = (await fetch(link)).ok;
console.log(`Issue ${number} has a ${isValidLink ? 'valid' : 'invalid'} link`)
if (!isValidLink) {
await closeIssue(github, owner, repo, number);
}
const text = issue.data.body;
const match = text.indexOf(linkMatchingText);
if (match !== -1) {
const nextLineIndex = text.indexOf('http', match);
if (nextLineIndex == -1) {
await closeIssue(github, owner, repo, number);
return;
}
const link = text.substring(nextLineIndex, text.indexOf('\n', nextLineIndex));
console.log(`Issue ${number} contains this link: ${link}`);
const isValidLink = (await fetch(link)).ok;
console.log(`Issue ${number} has a ${isValidLink ? "valid" : "invalid"} link`)
if (!isValidLink) {
await closeIssue(github, owner, repo, number);
}
}
} catch (err) {
await closeIssue(github, owner, repo, number);
}
}
};
};
108 changes: 54 additions & 54 deletions .github/scripts/close-unresponsive.cjs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Copyright 2024 Google LLC
/// Copyright 2024 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand All @@ -13,57 +13,57 @@
// limitations under the License.

function labeledEvent(data) {
return data.event === 'labeled' && data.label.name === 'needs more info';
}

const numberOfDaysLimit = 15;
const close_message = `This has been closed since a request for information has \
not been answered for ${numberOfDaysLimit} days. It can be reopened when the \
requested information is provided.`;

module.exports = async ({github, context}) => {
const owner = context.repo.owner;
const repo = context.repo.repo;

const issues = await github.rest.issues.listForRepo({
owner: owner,
repo: repo,
labels: 'needs more info',
});
const numbers = issues.data.map((e) => e.number);

for (const number of numbers) {
const events = await github.paginate(
github.rest.issues.listEventsForTimeline,
{
owner: owner,
repo: repo,
issue_number: number,
},
(response) => response.data.filter(labeledEvent)
);

const latest_response_label = events[events.length - 1];

const created_at = new Date(latest_response_label.created_at);
const now = new Date();
const diff = now - created_at;
const diffDays = diff / (1000 * 60 * 60 * 24);

if (diffDays > numberOfDaysLimit) {
await github.rest.issues.update({
owner: owner,
repo: repo,
issue_number: number,
state: 'closed',
});

await github.rest.issues.createComment({
owner: owner,
repo: repo,
issue_number: number,
body: close_message,
});
}
return data.event === "labeled" && data.label.name === "needs more info";
}

const numberOfDaysLimit = 15;
const close_message = `This has been closed since a request for information has \
not been answered for ${numberOfDaysLimit} days. It can be reopened when the \
requested information is provided.`;

module.exports = async ({ github, context }) => {
const owner = context.repo.owner;
const repo = context.repo.repo;

const issues = await github.rest.issues.listForRepo({
owner: owner,
repo: repo,
labels: "needs more info",
});
const numbers = issues.data.map((e) => e.number);

for (const number of numbers) {
const events = await github.paginate(
github.rest.issues.listEventsForTimeline,
{
owner: owner,
repo: repo,
issue_number: number,
},
(response) => response.data.filter(labeledEvent)
);

const latest_response_label = events[events.length - 1];

const created_at = new Date(latest_response_label.created_at);
const now = new Date();
const diff = now - created_at;
const diffDays = diff / (1000 * 60 * 60 * 24);

if (diffDays > numberOfDaysLimit) {
await github.rest.issues.update({
owner: owner,
repo: repo,
issue_number: number,
state: "closed",
});

await github.rest.issues.createComment({
owner: owner,
repo: repo,
issue_number: number,
body: close_message,
});
}
};
}
};
50 changes: 50 additions & 0 deletions .github/scripts/fixtures/invalidIssueBody.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
### Please make sure you have searched for information in the following guides.

- [X] Search the issues already opened: https://github.com/GoogleCloudPlatform/google-cloud-node/issues
- [X] Search StackOverflow: http://stackoverflow.com/questions/tagged/google-cloud-platform+node.js
- [X] Check our Troubleshooting guide: https://googlecloudplatform.github.io/google-cloud-node/#/docs/guides/troubleshooting
- [X] Check our FAQ: https://googlecloudplatform.github.io/google-cloud-node/#/docs/guides/faq
- [X] Check our libraries HOW-TO: https://github.com/googleapis/gax-nodejs/blob/main/client-libraries.md
- [X] Check out our authentication guide: https://github.com/googleapis/google-auth-library-nodejs
- [X] Check out handwritten samples for many of our APIs: https://github.com/GoogleCloudPlatform/nodejs-docs-samples

### A screenshot that you have tested with "Try this API".


N/A

### Link to the code that reproduces this issue. A link to a **public** Github Repository or gist with a minimal reproduction.

not-a-link

### A step-by-step description of how to reproduce the issue, based on the linked reproduction.


Change MY_PROJECT to your project name, add credentials if needed and run.

### A clear and concise description of what the bug is, and what you expected to happen.

The application crashes with the following exception (which there is no way to catch). It should just emit error, and allow graceful handling.
TypeError [ERR_INVALID_ARG_TYPE]: The "chunk" argument must be of type string or an instance of Buffer or Uint8Array. Received an instance of Object
at _write (node:internal/streams/writable:474:13)
at Writable.write (node:internal/streams/writable:502:10)
at Duplexify._write (/project/node_modules/duplexify/index.js:212:22)
at doWrite (/project/node_modules/duplexify/node_modules/readable-stream/lib/_stream_writable.js:390:139)
at writeOrBuffer (/project/node_modules/duplexify/node_modules/readable-stream/lib/_stream_writable.js:381:5)
at Writable.write (/project/node_modules/duplexify/node_modules/readable-stream/lib/_stream_writable.js:302:11)
at Pumpify.<anonymous> (/project/node_modules/@google-cloud/speech/build/src/helpers.js:79:27)
at Object.onceWrapper (node:events:633:26)
at Pumpify.emit (node:events:518:28)
at obj.<computed> [as _write] (/project/node_modules/stubs/index.js:28:22)
at doWrite (/project/node_modules/duplexify/node_modules/readable-stream/lib/_stream_writable.js:390:139)
at writeOrBuffer (/project/node_modules/duplexify/node_modules/readable-stream/lib/_stream_writable.js:381:5)
at Writable.write (/project/node_modules/duplexify/node_modules/readable-stream/lib/_stream_writable.js:302:11)
at PassThrough.ondata (node:internal/streams/readable:1007:22)
at PassThrough.emit (node:events:518:28)
at addChunk (node:internal/streams/readable:559:12) {
code: 'ERR_INVALID_ARG_TYPE'


### A clear and concise description WHY you expect this behavior, i.e., was it a recent change, there is documentation that points to this behavior, etc. **

No library should crash an application this way.
50 changes: 50 additions & 0 deletions .github/scripts/fixtures/validIssueBody.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
### Please make sure you have searched for information in the following guides.

- [X] Search the issues already opened: https://github.com/GoogleCloudPlatform/google-cloud-node/issues
- [X] Search StackOverflow: http://stackoverflow.com/questions/tagged/google-cloud-platform+node.js
- [X] Check our Troubleshooting guide: https://googlecloudplatform.github.io/google-cloud-node/#/docs/guides/troubleshooting
- [X] Check our FAQ: https://googlecloudplatform.github.io/google-cloud-node/#/docs/guides/faq
- [X] Check our libraries HOW-TO: https://github.com/googleapis/gax-nodejs/blob/main/client-libraries.md
- [X] Check out our authentication guide: https://github.com/googleapis/google-auth-library-nodejs
- [X] Check out handwritten samples for many of our APIs: https://github.com/GoogleCloudPlatform/nodejs-docs-samples

### A screenshot that you have tested with "Try this API".


N/A

### Link to the code that reproduces this issue. A link to a **public** Github Repository or gist with a minimal reproduction.

https://gist.github.com/orgads/13cbf44c91923da27d8772b5f10489c9

### A step-by-step description of how to reproduce the issue, based on the linked reproduction.


Change MY_PROJECT to your project name, add credentials if needed and run.

### A clear and concise description of what the bug is, and what you expected to happen.

The application crashes with the following exception (which there is no way to catch). It should just emit error, and allow graceful handling.
TypeError [ERR_INVALID_ARG_TYPE]: The "chunk" argument must be of type string or an instance of Buffer or Uint8Array. Received an instance of Object
at _write (node:internal/streams/writable:474:13)
at Writable.write (node:internal/streams/writable:502:10)
at Duplexify._write (/project/node_modules/duplexify/index.js:212:22)
at doWrite (/project/node_modules/duplexify/node_modules/readable-stream/lib/_stream_writable.js:390:139)
at writeOrBuffer (/project/node_modules/duplexify/node_modules/readable-stream/lib/_stream_writable.js:381:5)
at Writable.write (/project/node_modules/duplexify/node_modules/readable-stream/lib/_stream_writable.js:302:11)
at Pumpify.<anonymous> (/project/node_modules/@google-cloud/speech/build/src/helpers.js:79:27)
at Object.onceWrapper (node:events:633:26)
at Pumpify.emit (node:events:518:28)
at obj.<computed> [as _write] (/project/node_modules/stubs/index.js:28:22)
at doWrite (/project/node_modules/duplexify/node_modules/readable-stream/lib/_stream_writable.js:390:139)
at writeOrBuffer (/project/node_modules/duplexify/node_modules/readable-stream/lib/_stream_writable.js:381:5)
at Writable.write (/project/node_modules/duplexify/node_modules/readable-stream/lib/_stream_writable.js:302:11)
at PassThrough.ondata (node:internal/streams/readable:1007:22)
at PassThrough.emit (node:events:518:28)
at addChunk (node:internal/streams/readable:559:12) {
code: 'ERR_INVALID_ARG_TYPE'


### A clear and concise description WHY you expect this behavior, i.e., was it a recent change, there is documentation that points to this behavior, etc. **

No library should crash an application this way.
Loading
Loading