)]}'
{
  "log": [
    {
      "commit": "7b17d222830909cd3d0d26b3dd1719c70d053ff1",
      "tree": "bd9b2d1242ac8e54631ccc3c4204cf2646fdc1e5",
      "parents": [
        "2279f8ec6cc12c73e9741295a137898c6b941d94"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Mon Jun 01 03:10:14 2026"
      },
      "committer": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Mon Jun 01 03:10:14 2026"
      },
      "message": "[rb] update test guards\n"
    },
    {
      "commit": "2279f8ec6cc12c73e9741295a137898c6b941d94",
      "tree": "7f75e9ae65885945885359347ad26f22974f3ea7",
      "parents": [
        "b02c5f224ea6ac1c4cf0ee8d19f7a92bc92a9766"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Mon Jun 01 02:41:29 2026"
      },
      "committer": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Mon Jun 01 02:49:44 2026"
      },
      "message": "[build] allow bazel workflow to pass when rerun step is successful\n"
    },
    {
      "commit": "b02c5f224ea6ac1c4cf0ee8d19f7a92bc92a9766",
      "tree": "ad05132f0efb00418d0c90e979552583f90ae331",
      "parents": [
        "a1e0af7abb7ed1cec2bbff5e8806d582162888d2"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titusfortner@users.noreply.github.com",
        "time": "Mon Jun 01 02:21:08 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 01 02:21:08 2026"
      },
      "message": "[build] allow ruby and python to run remote tests on windows (#17603)\n\n[rb][py] resolve runfiles JDK realpath on Windows to avoid lib\\modules symlink bug"
    },
    {
      "commit": "a1e0af7abb7ed1cec2bbff5e8806d582162888d2",
      "tree": "437851179c41dfb851b907b3f8f77600bab2f686",
      "parents": [
        "4a6290ce976f6cfe9d1574298845654f85e7cd43"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titusfortner@users.noreply.github.com",
        "time": "Mon Jun 01 00:36:57 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 01 00:36:57 2026"
      },
      "message": "[rb] add driver finder tests to use selenium manager when applicable (#17597)\n\n* [rb] improve selenium manager testing\n\n* [build] delete pre-installed browsers in CI to force SM to fetch them\n\n* [rb] add os-sensitive tag for driver_finder"
    },
    {
      "commit": "4a6290ce976f6cfe9d1574298845654f85e7cd43",
      "tree": "fabcace0e9b8599eb0460206ebd18b9c29ffbb1c",
      "parents": [
        "09d8f84fc2856c03c665f0e17ad70dfb073a2280"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titusfortner@users.noreply.github.com",
        "time": "Sun May 31 22:19:49 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun May 31 22:19:49 2026"
      },
      "message": "[build] use Bazel repo contents cache instead of external-cache (#17602)"
    },
    {
      "commit": "09d8f84fc2856c03c665f0e17ad70dfb073a2280",
      "tree": "129b0a6b6480f5b6b404bf008e14bc43de2ef267",
      "parents": [
        "f70c926f6b4f57bd282328d6e6f6b5fde8a5be8c"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titusfortner@users.noreply.github.com",
        "time": "Sun May 31 15:12:17 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun May 31 15:12:17 2026"
      },
      "message": "[java] support driving Electron apps with ElectronOptions and ElectronDriver (#17559)\n\n* [java] Add ElectronDriver and ElectronOptions for testing Electron apps\n\n* improved null checking and matching existing conventions\n\n* use a custom capability instead of string parsing the class name\n\n* fix potential ClassCastException\n\n---------\n\nCo-authored-by: Diego Molina \u003cdiemol@users.noreply.github.com\u003e"
    },
    {
      "commit": "f70c926f6b4f57bd282328d6e6f6b5fde8a5be8c",
      "tree": "173409785fb7febbd2edd8cf2a89450495395889",
      "parents": [
        "2b360813b1f3e247fdf8844d59df4c21c3283179"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titusfortner@users.noreply.github.com",
        "time": "Sun May 31 09:52:44 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun May 31 09:52:44 2026"
      },
      "message": "[java] publish selenium-devtools-latest artifact (#17562)\n\n* [java] publish selenium-devtools-latest alias artifact\n\n* remove redundant runtime_deps\n\n---------\n\nCo-authored-by: Diego Molina \u003cdiemol@users.noreply.github.com\u003e"
    },
    {
      "commit": "2b360813b1f3e247fdf8844d59df4c21c3283179",
      "tree": "1428db7c86d9f28f98ba563b7c2374778ab6d7f1",
      "parents": [
        "3e3fb1982f9445fa6b22749f1f3ac5511c4dac46"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titusfortner@users.noreply.github.com",
        "time": "Sun May 31 09:07:36 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun May 31 09:07:36 2026"
      },
      "message": "[build] only build debug artifacts when releasing (#17595)\n\nCo-authored-by: Diego Molina \u003cdiemol@users.noreply.github.com\u003e"
    },
    {
      "commit": "3e3fb1982f9445fa6b22749f1f3ac5511c4dac46",
      "tree": "a5605d90a9b2af742b610c6f325aacea41d5a8e5",
      "parents": [
        "8264ad79a64fc48941b52833d65006522d31e2c1"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titusfortner@users.noreply.github.com",
        "time": "Sun May 31 08:42:44 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun May 31 08:42:44 2026"
      },
      "message": "[build] surface failures from archive rules (#17594)\n\n* [build] surface failures from archive rules\n\n* [build] address review feedback on archive rules\n\n---------\n\nCo-authored-by: Diego Molina \u003cdiemol@users.noreply.github.com\u003e"
    },
    {
      "commit": "8264ad79a64fc48941b52833d65006522d31e2c1",
      "tree": "47e2c02680149419b0538c02bb43e4143dfc0d3a",
      "parents": [
        "99ddba6a6003e5d90e449b0a16ddb09806d1df46"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titusfortner@users.noreply.github.com",
        "time": "Sun May 31 07:39:50 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun May 31 07:39:50 2026"
      },
      "message": "[build] reduce downloaded artifacts (#17598)\n\nCo-authored-by: Diego Molina \u003cdiemol@users.noreply.github.com\u003e"
    },
    {
      "commit": "99ddba6a6003e5d90e449b0a16ddb09806d1df46",
      "tree": "63e7d340c713d483fbe0e38f8ddd005f496b3345",
      "parents": [
        "830044998ce0273ceb6578f80063ff77676ef0a3"
      ],
      "author": {
        "name": "Selenium CI Bot",
        "email": "diemol+selenium-ci@gmail.com",
        "time": "Sun May 31 06:24:31 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun May 31 06:24:31 2026"
      },
      "message": "[build] Automated Browser Version Update (#17596)\n\nUpdate pinned browser versions\n\nCo-authored-by: Selenium CI Bot \u003cselenium-ci@users.noreply.github.com\u003e"
    },
    {
      "commit": "830044998ce0273ceb6578f80063ff77676ef0a3",
      "tree": "fe7b7c1e436f35c9f4612ad26e378275262e0789",
      "parents": [
        "d59db6d9a91c0add575a46d8f033fb33923da7e5"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Sat May 30 16:48:00 2026"
      },
      "committer": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Sat May 30 16:48:29 2026"
      },
      "message": "[build] only build target index from trunk\n"
    },
    {
      "commit": "d59db6d9a91c0add575a46d8f033fb33923da7e5",
      "tree": "fd3093e6e2d48f02ed838f230d86374862882d2b",
      "parents": [
        "ad4bbc3cbb811eb4827bbe79d8cc2aaa89dc5f4e"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Sat May 30 03:05:46 2026"
      },
      "committer": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Sat May 30 03:05:46 2026"
      },
      "message": "[build] prevent ci-rbe job from restarting bazel between test and build commands\n"
    },
    {
      "commit": "ad4bbc3cbb811eb4827bbe79d8cc2aaa89dc5f4e",
      "tree": "01f7e83bf8c1f7304f4dede2ffee617bafb38f96",
      "parents": [
        "a222cf2fae4cdca2d343e606bc961793b841e973"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titusfortner@users.noreply.github.com",
        "time": "Sat May 30 00:15:09 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat May 30 00:15:09 2026"
      },
      "message": "[rb] only run pending tests on schedule or dispatch (#17593)"
    },
    {
      "commit": "a222cf2fae4cdca2d343e606bc961793b841e973",
      "tree": "0a9009c1d8d039ba182094dc1403afd924348d76",
      "parents": [
        "29635350e9fd6a56e1f1d6ff823e57e1d86b0b27"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titusfortner@users.noreply.github.com",
        "time": "Fri May 29 20:58:42 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 29 20:58:42 2026"
      },
      "message": "[build] add GitHub Cache workflow to generate and save bazel repository-cache (#17575)\n\n* [build] add Github Cache workflow and cancel-on-failure guard in bazel.yml\n\n* [build] remove cancel-on-failure guard "
    },
    {
      "commit": "29635350e9fd6a56e1f1d6ff823e57e1d86b0b27",
      "tree": "890b6ca172cca278677bc3fe1996b2f5c78d1bd4",
      "parents": [
        "50613c290e4ddc1d39376f0a7935b61bab4bac75"
      ],
      "author": {
        "name": "David Burns",
        "email": "david.burns@theautomatedtester.co.uk",
        "time": "Fri May 29 11:49:04 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 29 11:49:04 2026"
      },
      "message": "[py] Improve ruff linting DX and CI speed (#17588)\n\n- Unify ruff_check.py + ruff_format.py into a single ruff.py that\n  accepts check/format/both modes; eliminates duplicated dirs, excludes,\n  and config references. Adds //py:ruff target for running both at once.\n- Fix --exit-non-zero-on-fix footgun: ruff_check now exits 0 when all\n  issues are auto-fixed. CI verification mode uses --no-fix explicitly.\n- Add ruff check to scripts/format.sh (always, not just with --lint),\n  resolving the ruff binary once via --run_under\u003decho to halve Bazel\n  startup overhead. Auto-fixable lint issues are now committed by the\n  CI bot alongside formatting fixes.\n- Update py:lint to use --no-fix (pure verification, no side effects).\n- Split ci-python.yml lint job into parallel lint-ruff / lint-mypy /\n  lint-docs jobs so mypy does not block ruff feedback."
    },
    {
      "commit": "50613c290e4ddc1d39376f0a7935b61bab4bac75",
      "tree": "e8b3440f23233d195897f969de0015d09c3b8ed1",
      "parents": [
        "abd7aa29444443c581e96ccaef3901f7c4587c18"
      ],
      "author": {
        "name": "David Burns",
        "email": "david.burns@theautomatedtester.co.uk",
        "time": "Fri May 29 10:51:23 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 29 10:51:23 2026"
      },
      "message": "[rust] Improve SM error messages when browser/driver version not found (#17584)\n\n[rust] Improve SM error messages when browser/driver version is not found\n\nAdd per-browser links to canonical version lists in error messages so\nusers know where to find valid versions when a lookup fails."
    },
    {
      "commit": "abd7aa29444443c581e96ccaef3901f7c4587c18",
      "tree": "2cb0a31619511de42ac215e3ada885261622fa2f",
      "parents": [
        "3c94e5c1796c5132bd34638d77f9a79cd373fe65"
      ],
      "author": {
        "name": "Selenium CI Bot",
        "email": "diemol+selenium-ci@gmail.com",
        "time": "Fri May 29 08:42:41 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 29 08:42:41 2026"
      },
      "message": "[build] Automated Browser Version Update (#17587)\n\nUpdate pinned browser versions\n\nCo-authored-by: Selenium CI Bot \u003cselenium-ci@users.noreply.github.com\u003e"
    },
    {
      "commit": "3c94e5c1796c5132bd34638d77f9a79cd373fe65",
      "tree": "9878fbcad24ce951bd95f3c561614a4a0f521c79",
      "parents": [
        "d850933a4bbbd813b50ab1d14b5ed7073141c39c"
      ],
      "author": {
        "name": "David Burns",
        "email": "david.burns@theautomatedtester.co.uk",
        "time": "Thu May 28 14:18:49 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 28 14:18:49 2026"
      },
      "message": "[py] Handle Data URLs when doing .continue_request() (#17583)\n\n* [py] Handle Data URLs when doing .continue_request(). Fixes #16279\n\n* [py] Remove xfail marks from data URL network test\n\nThe xfail marks were added when continue_request() would throw for\ndata: URLs. Now that continue_request() silently skips data: URLs,\nthe test should pass in all browsers that fire network.beforeRequestSent\nfor data URL sub-resources.\n\n* Fix the other linting way"
    },
    {
      "commit": "d850933a4bbbd813b50ab1d14b5ed7073141c39c",
      "tree": "90b40450f84c8a9ca275df732611fea9d1d69510",
      "parents": [
        "62f911a02df257058278eda9543126c036c4f864"
      ],
      "author": {
        "name": "David Burns",
        "email": "david.burns@theautomatedtester.co.uk",
        "time": "Thu May 28 14:18:03 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 28 14:18:03 2026"
      },
      "message": "[js] Reduce GC pressure in TypeScript getAttribute and isDisplayed atoms (#17582)\n\n* [js] Reduce GC pressure in TypeScript getAttribute and isDisplayed atoms\n\ngetAttribute: convert BOOLEAN_PROPERTIES from Array to Set for O(1) .has()\nlookup instead of O(n) .indexOf(), and call element.getAttribute(name)\ndirectly at the three call sites that already hold the lowercased name,\navoiding a redundant .toLowerCase() in the wrapper.\n\nisDisplayed: replace findImageUsingMap\u0027s full-DOM getElementsByTagName(\u0027*\u0027)\nscan with a single querySelector(\u0027[usemap\u003d\"#...\"]\u0027) call, using the same\nCSS attribute-value escaping pattern applied to nameMany in find-elements.\n\n* [js] Memoize computed style, client rect, and displayed in isDisplayed atom\n\nAdd three per-call Maps inside isShownElement, scoped to the single\nsynchronous invocation so there is no stale-data risk and no GC pressure\nbetween calls:\n\n- computedStyleCache: getEffectiveStyle now fetches getComputedStyle once\n  per element and reuses the CSSStyleDeclaration for subsequent property\n  reads. A typical isShown call queries 5-8 properties on the same element.\n\n- clientRectCache: getClientRect caches the Rect after the first\n  getBoundingClientRect (or imageMap rect) computation. Overflow checking\n  and positiveSize both query ancestor rects, so shared containers are\n  only laid out once.\n\n- displayedCache: displayed() walks the full ancestor chain on every call.\n  positiveSize iterates all children calling displayedFn on each, so\n  shared ancestors were re-walked N times for N siblings. The cache makes\n  each ancestor node free after the first traversal.\n\n* [js] Remove bogus async boolean-property test\n\ndocument.createElement(\u0027script\u0027).async returns true by default (browser\nsets the \u0027force async\u0027 flag on script elements created via JS), so the\ntest expecting null was never correct. The absent-boolean-returns-null\nbehaviour is already covered by the existing disabled and readonly tests."
    },
    {
      "commit": "62f911a02df257058278eda9543126c036c4f864",
      "tree": "770c3ea72ad23d4c14d43485276cb1d2cd115044",
      "parents": [
        "74f73c9891a0fdedbb64e3d144eb059aa8edbd3f"
      ],
      "author": {
        "name": "Simon Mavi Stewart",
        "email": "simon.m.stewart@gmail.com",
        "time": "Thu May 28 10:30:19 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 28 10:30:19 2026"
      },
      "message": "[grid] Skip the TCP tunnel read-idle close when reads are paused (#17578)\n\nThe read-idle close that TcpUpgradeTunnelHandler installs after the\ntunnel is established (introduced by db9b07aa5a, 2026-03-11,\n\"[grid] Router WebSocket handle dropped close frames, idle disconnects,\nhigh-latency proxying\", #17197) tears down both tunnel channels when no\nbytes have been received for 120 seconds. That is the right behaviour\nwhen an intermediate load balancer has silently dropped the TCP\nconnection, but it interacts badly with the backpressure mirroring\nadded in 5cf2e2a871 (2026-05-26, \"[grid] Apply TCP backpressure across\nthe WebSocket tunnel handler\", #17543): when the peer\u0027s outbound buffer\ncrosses its high-water mark, TcpTunnelHandler sets autoRead\u003dfalse on\nthis side, no channelRead events fire, and the read-idle timer reaches\nits threshold even though the stall is by design. A sustained slow\nconsumer for more than two minutes will therefore have the tunnel torn\ndown underneath it.\n\nGate the close in IdleCloseHandler.userEventTriggered on the channel\u0027s\nautoRead flag: while reads are paused by backpressure, log at FINE and\nignore the event. As soon as the peer drains and TcpTunnelHandler\nrestores autoRead\u003dtrue the read-idle clock starts again from a fresh\nread, so a legitimately dropped connection is still detected within\nthe same window once traffic resumes.\n\nIdleCloseHandler is promoted from a private nested class to\npackage-private so a focused EmbeddedChannel unit test can exercise\nboth branches: the close-both-channels behaviour on a normal idle\nevent, and the ignored-while-paused behaviour with autoRead\u003dfalse."
    },
    {
      "commit": "74f73c9891a0fdedbb64e3d144eb059aa8edbd3f",
      "tree": "c1701d5900b07ebcb790fbfb68cf82da482ee7d0",
      "parents": [
        "030745db5c324f1883c86267ee593a0cb4fbc7f0"
      ],
      "author": {
        "name": "Selenium CI Bot",
        "email": "diemol+selenium-ci@gmail.com",
        "time": "Thu May 28 06:36:07 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 28 06:36:07 2026"
      },
      "message": "[build] Automated Browser Version Update (#17573)\n\nUpdate pinned browser versions\n\nCo-authored-by: Selenium CI Bot \u003cselenium-ci@users.noreply.github.com\u003e"
    },
    {
      "commit": "030745db5c324f1883c86267ee593a0cb4fbc7f0",
      "tree": "b9a0d2b19ce7acfde25b9171450713e0445049c3",
      "parents": [
        "4749fd62fcdf8725719956a6707bc00745eef62a"
      ],
      "author": {
        "name": "David Burns",
        "email": "david.burns@theautomatedtester.co.uk",
        "time": "Wed May 27 17:26:45 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 27 17:26:45 2026"
      },
      "message": "[js] Reducing GC pressure in the TypeScript find-elements atom (#17580)"
    },
    {
      "commit": "4749fd62fcdf8725719956a6707bc00745eef62a",
      "tree": "8c72858fd0fade949f465670bec35babfed71244",
      "parents": [
        "624a1946d04e9f2ec7144496e1a77d8c035dc10b"
      ],
      "author": {
        "name": "David Burns",
        "email": "david.burns@theautomatedtester.co.uk",
        "time": "Wed May 27 17:26:09 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 27 17:26:09 2026"
      },
      "message": "[py] Allow MAX_WS_MESSAGE_SIZE to be configurable (#17581)\n\nfixes #16546"
    },
    {
      "commit": "624a1946d04e9f2ec7144496e1a77d8c035dc10b",
      "tree": "977f4722f85dd8c4170e770bfbddae1bea32d451",
      "parents": [
        "83b0c35e90e0ccbd2505e806617e89469d8f4d71"
      ],
      "author": {
        "name": "David Burns",
        "email": "david.burns@theautomatedtester.co.uk",
        "time": "Wed May 27 17:25:56 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 27 17:25:56 2026"
      },
      "message": "[js] Move JS bindings to use typescript atoms for isDisplayed and Find-Element (#17547)\n\n* fix the IIFE so the JS bindings can use the new atoms\n\n* [js] Fix wrap-as-global scripts to accept named function expressions\n\nThe is-displayed and find-elements atoms were restructured from\nIIFE-returning-closure to named function expressions so all helper\nfunctions are in scope when the atom is serialized via toString() for\nbrowser injection. The wrap-as-global scripts had a format guard\nchecking for the old parameterless IIFE prefix \"(function ()\" which\nnow fails. Relax the check to \"(function \" to accept both patterns.\n\n* whitespace change\n\n* whitespace change\n\n* fix readtest"
    },
    {
      "commit": "83b0c35e90e0ccbd2505e806617e89469d8f4d71",
      "tree": "ca9e642633304d53d516baefe6083c55f8a8a288",
      "parents": [
        "73019cd6f690d6bc7ad4a759736663ebc35a099a"
      ],
      "author": {
        "name": "Simon Mavi Stewart",
        "email": "simon.m.stewart@gmail.com",
        "time": "Wed May 27 17:18:46 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 27 17:18:46 2026"
      },
      "message": "[grid] Apply the WebSocket frame fast path on the Node (#17545)\n\nThe Router has had a direct frame-forwarding path between the Netty\npipeline and the upstream JDK WebSocket since db9b07aa5a (2026-03-11,\n\"[grid] Router WebSocket handle dropped close frames, idle disconnects,\nhigh-latency proxying\", #17197). Once the client-side handshake\ncompletes, an inbound WebSocketFrameProxy forwards each Netty\nWebSocketFrame straight to the upstream WebSocket, and the outbound\nDirectForwardingListener writes upstream replies directly to the\nclient channel. Together those removed the per-frame Message\nallocation and the executor hop in WebSocketMessageHandler on the\nRouter side.\n\nThe Node still did the full round-trip through MessageInboundConverter,\nWebSocketMessageHandler, the registered Consumer\u003cMessage\u003e, and\nMessageOutboundConverter in both directions for every frame. Each\nframe allocated a TextMessage or BinaryMessage and hopped onto the\nchannel executor on delivery. For a busy CDP or VNC session that is\nmeasurable allocation and executor-queue pressure on the Node.\n\nApply the same PostUpgradeHook pattern on the Node side: the consumer\nreturned from ProxyNodeWebsockets installs a WebSocketFrameProxy after\nthe handshake so inbound frames forward straight to the browser-side\nWebSocket, and a DirectForwardingListener writes outbound frames\ndirectly to the client channel. Frames received before the handshake\nare buffered in arrival order and drained on handover, so a frame\ncannot land in a pipeline that has already had its Message-layer\nhandlers removed.\n\nThe hardening that the Router-side listener picked up in 8d8cf6463a\n(2026-05-14, \"[grid] Close pre-handshake race in WebSocket proxy\",\n#17435) is mirrored on the Node listener: the pre-handshake buffer is\ncapped at 128 frames with a 1009 close recorded on overflow; the\nclose code and reason are recorded on pre-handshake close or error so\na late onUpgrade can write a clean close frame to the client and tear\nthe channel down rather than leaving it open; and the buffer is\nreleased on close so ref-counted frames cannot leak if the handshake\nnever completes.\n\nClose-frame reasons coming from the upstream are now truncated to the\n123-byte UTF-8 cap that RFC 6455 §5.5.1 imposes. The truncation uses\na CharsetEncoder writing into a 120-byte buffer so it stops at a\nclean character boundary on overflow — a naive byte-truncate-then-\ndecode could split a multi-byte sequence, produce a U+FFFD replacement\non decode, and re-encode back over 123 bytes, breaking the close\nframe. The helper lives as a public static on WebSocketFrameProxy\nbecause both DirectForwardingListener classes already depend on that\nclass. The Router-side listener that landed in #17435 had the same\nunchecked path; apply the helper there too so both proxies share the\nsame safe behaviour.\n\nThe Node-specific behaviour is preserved:\n\n- Session-activity heartbeats (sessionConsumer.accept(sessionId)) fire\n  per frame, both pre- and post-handshake.\n- The connectionReleased CAS still guards a single\n  node.releaseConnection call across the close and error paths,\n  including the overflow path introduced here.\n- VNC sessions still install a no-op heartbeat consumer so VNC\n  traffic does not mark the session as recently active.\n\nThe existing ProxyNodeWebsocketsTest continues to exercise the slot\naccounting, including the regression from #17197 where onError without\na follow-on onClose used to leak the slot. New unit tests in\nNodeDirectForwardingListenerTest pin the per-frame heartbeat, the\nbuffer-then-drain ordering, the surface-and-teardown behaviour on a\npre-handshake close, the overflow path\u0027s clean release of the session\nslot, and the safe truncation of an overlong upstream close reason\nthat contains multi-byte UTF-8 characters. The shared helper has a\nfocused unit test alongside it in WebSocketFrameProxyTest."
    },
    {
      "commit": "73019cd6f690d6bc7ad4a759736663ebc35a099a",
      "tree": "33bcdbec502dfca97cbdaec27f2923d2962ce169",
      "parents": [
        "4a530c5f6050c3058bc7125ab16911334a346350"
      ],
      "author": {
        "name": "Boni García",
        "email": "boni.garcia@uc3m.es",
        "time": "Wed May 27 12:00:34 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 27 12:00:34 2026"
      },
      "message": "[rust] Reuse constant for --version"
    },
    {
      "commit": "4a530c5f6050c3058bc7125ab16911334a346350",
      "tree": "c974eb9458e4bf585415c43472019b0e63631587",
      "parents": [
        "ab453da22cf1166daa27f4fc7445694ffe2f784d"
      ],
      "author": {
        "name": "Simon Mavi Stewart",
        "email": "simon.m.stewart@gmail.com",
        "time": "Wed May 27 09:29:19 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 27 09:29:19 2026"
      },
      "message": "[grid] Add BinaryMessage.wrap for transferring an owned byte array (#17544)\n\nAdd BinaryMessage.wrap for transferring an owned byte array\n\nBinaryMessage\u0027s two public constructors both copy their input\ndefensively: the byte[] constructor calls System.arraycopy, and the\nByteBuffer constructor copies into a freshly allocated array. That is\nthe right default when the caller cannot promise ownership, but several\ncall sites already produce a fresh array via\nByteArrayOutputStream.toByteArray() and then immediately have it copied\na second time by the constructor. For a multi-megabyte payload the\nsecond copy is wasted work and a wasted allocation.\n\nAdd a static BinaryMessage.wrap(byte[]) factory that takes ownership of\nthe array without copying. Its javadoc explicitly states that the\ncaller must not mutate the array afterwards. The two public\nconstructors keep their copy semantics, so existing callers that pass\nin a borrowed array are unaffected.\n\nUse the new factory at two slow-path reassemblers that already produce\na fresh array we own:\n\n- MessageInboundConverter, when a fragmented binary message finishes\n  via buffer.toByteArray() before being forwarded to\n  WebSocketMessageHandler.\n- WebSocketFrameProxy, when the inbound frame proxy reassembles a\n  fragmented message for an upstream WebSocket that does not support\n  per-frame sends.\n\nThe hot path through the Router and Node proxies no longer touches\nBinaryMessage at all — frames travel end-to-end as Netty\nWebSocketFrame objects — so the saving here is on the fallback paths\nthat handle fragmented binary messages.\n\nA focused unit test pins both the copying behaviour of the existing\nconstructor and the no-copy behaviour of the new factory."
    },
    {
      "commit": "ab453da22cf1166daa27f4fc7445694ffe2f784d",
      "tree": "2202e75fa97da890cef297d138ddb5fe2f855f10",
      "parents": [
        "9045e3bbaec4ac220d64e9e9def06546f1d81f37"
      ],
      "author": {
        "name": "Boni García",
        "email": "boni.garcia@uc3m.es",
        "time": "Wed May 27 09:25:18 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 27 09:25:18 2026"
      },
      "message": "[rust] Change command execution to argv (#17576)\n\n* [rust] Change command execution to argv\n\n* [rust] Fix dash version constants\n\n* [rust] Include trace log in browser path\n\n* [rust] Check browser path in driver error logic\n\n* [rust] Check fallback flag\n\n* [rust] Fix condition for checking fallback"
    },
    {
      "commit": "9045e3bbaec4ac220d64e9e9def06546f1d81f37",
      "tree": "c0073b3f394349c714512e58514cfb8fad727b7a",
      "parents": [
        "8f3b261209fbe97c0284468ddcdff288bbf6b087"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Tue May 26 21:51:33 2026"
      },
      "committer": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Tue May 26 21:51:33 2026"
      },
      "message": "[build] fix incorrect flag name for repo content cache\n"
    },
    {
      "commit": "8f3b261209fbe97c0284468ddcdff288bbf6b087",
      "tree": "7706a0e6eba53dd2b26eeeeb8da9f2330ca2c89c",
      "parents": [
        "000ded7d88ee54ea98f5a878da960c1490da7c58"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Tue May 26 21:34:49 2026"
      },
      "committer": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Tue May 26 21:34:49 2026"
      },
      "message": "[build] add github cache workflow with cache-save parameter\n"
    },
    {
      "commit": "000ded7d88ee54ea98f5a878da960c1490da7c58",
      "tree": "0fbb046659f8a843f9a095b301789f2485a53ec7",
      "parents": [
        "fd3c084d186db5b8d8bbbaec169f703c65b7eaa5"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titusfortner@users.noreply.github.com",
        "time": "Tue May 26 21:16:13 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 26 21:16:13 2026"
      },
      "message": "[rb] fix using environment variables to set drivers (#17571)\n\n* let selenium manager handle safari paths instead of hard coding\n\n* move env path coverage to DriverFinder spec; drop service env_path"
    },
    {
      "commit": "fd3c084d186db5b8d8bbbaec169f703c65b7eaa5",
      "tree": "892bbae9819cc73ced89e3ef79d321d26e3c96d5",
      "parents": [
        "6f5004c4c691c2f698353d2087a0d6a9f2e2d108"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Tue May 26 20:59:13 2026"
      },
      "committer": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Tue May 26 20:59:13 2026"
      },
      "message": "[build] fix script not executable\n"
    },
    {
      "commit": "6f5004c4c691c2f698353d2087a0d6a9f2e2d108",
      "tree": "bb4d1e543a1df6da86849187d7a8d23f7bc37b8a",
      "parents": [
        "5f7df0d29882f76b52a95b7df506100a644512bd"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Tue May 26 19:50:15 2026"
      },
      "committer": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Tue May 26 20:10:41 2026"
      },
      "message": "[build] delete all CodeQL caches instead of keeping newest\n"
    },
    {
      "commit": "5f7df0d29882f76b52a95b7df506100a644512bd",
      "tree": "a040b175b8c1aa4d1dbe8d39085751f16e521446",
      "parents": [
        "5cf2e2a8713a8af01b6313fa4c81f266436d0783"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Tue May 26 19:49:59 2026"
      },
      "committer": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Tue May 26 20:07:26 2026"
      },
      "message": "[build] enable caching for ci-rbe\n"
    },
    {
      "commit": "5cf2e2a8713a8af01b6313fa4c81f266436d0783",
      "tree": "a453e53f31a39e52682d3e215b05885c1219b780",
      "parents": [
        "5aade0240dc5a7fca05c706b1aa9c7c5d978be48"
      ],
      "author": {
        "name": "Simon Mavi Stewart",
        "email": "simon.m.stewart@gmail.com",
        "time": "Tue May 26 15:51:52 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 26 15:51:52 2026"
      },
      "message": "[grid] Apply TCP backpressure across the WebSocket tunnel handler (#17543)\n\nThe optional transparent TCP tunnel introduced in 9a2df3a0aa (2026-02-27,\n\"[grid] Router bypass WebSocket data path via transparent TCP tunnel\",\n#17146) forwarded inbound bytes from one channel to the other with no\nflow control. A slow drain on one leg let the opposite leg keep\nshipping bytes, which Netty queued in the outbound buffer indefinitely.\nA session with sustained bidirectional traffic and a slow client could\ngrow the Router\u0027s heap until the per-channel outbound queue was many\nmegabytes.\n\nHook channelWritabilityChanged on each tunnel handler and mirror the\nstate onto the peer\u0027s read side via setAutoRead. When this channel\u0027s\noutbound buffer crosses the high-water mark Netty fires the event and\nthe peer stops reading; when the buffer drains below the low-water mark\nthe peer resumes. The two legs of the tunnel each watch their own\nwritability and toggle the other\u0027s read side, so backpressure\npropagates in both directions.\n\nThe thresholds come from the channel\u0027s existing WriteBufferWaterMark\n(Netty\u0027s default of 32 KiB low / 64 KiB high, or whatever an operator\nconfigures). No new numeric cap is introduced.\n\nA small EmbeddedChannel test drives the writability transitions both\nways and asserts the peer\u0027s autoRead flag tracks them. The existing\nend-to-end TunnelWebsocketTest continues to cover the happy path."
    },
    {
      "commit": "5aade0240dc5a7fca05c706b1aa9c7c5d978be48",
      "tree": "535649fbc96c3a99aa7e66dda8bc79c5bb3fb65f",
      "parents": [
        "3b1c490aca11e8d821b7504ac1f22afd2e86997a"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titusfortner@users.noreply.github.com",
        "time": "Mon May 25 16:23:16 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon May 25 16:23:16 2026"
      },
      "message": "[rb] separate concerns between Service, DriverFinder, and Options (#17564)"
    },
    {
      "commit": "3b1c490aca11e8d821b7504ac1f22afd2e86997a",
      "tree": "e9d25bc18f50f559f988d21ef3e7708bd7cba00d",
      "parents": [
        "312e586c285f774fd8678445aa04442dd94ee5d0"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titusfortner@users.noreply.github.com",
        "time": "Mon May 25 14:30:27 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon May 25 14:30:27 2026"
      },
      "message": "[rb] update bazel test tags (#17558)\n\n* [rb] update bazel test tags\n\n* add no_grid parameter to avoid generating noop -remote targets\n\n* split se-manager from os-sensitive tags\n\n* apply os-sensitive tags to specific local browser runs\n\n* split devtools and bidi definitions"
    },
    {
      "commit": "312e586c285f774fd8678445aa04442dd94ee5d0",
      "tree": "ba69d6d060cb0de47539599be1831f4642886f20",
      "parents": [
        "32edfbec987819679b63bef43250d3ad8da6ea10"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titusfortner@users.noreply.github.com",
        "time": "Mon May 25 13:56:35 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon May 25 13:56:35 2026"
      },
      "message": "[build] prune old codeql caches (#17570)\n\n* [build] prune old codeql caches\n\n* bump limit to 1000"
    },
    {
      "commit": "32edfbec987819679b63bef43250d3ad8da6ea10",
      "tree": "c29afaa7edd94cbae247b54b0f2347138803e2d3",
      "parents": [
        "26794a0678d94ce550d6f600d6e0ee121407ae4b"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titusfortner@users.noreply.github.com",
        "time": "Mon May 25 13:35:41 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon May 25 13:35:41 2026"
      },
      "message": "[rb] update safari tests (#16768)\n\n* [rb] update guards for safari tests\n\n* [rb] guard safari tests broken by Safari 26.5 regression\n\n* automatically retry safari pairing attempts"
    },
    {
      "commit": "26794a0678d94ce550d6f600d6e0ee121407ae4b",
      "tree": "4aadb16623c38fe549bcc3066b86c4133cee9cee",
      "parents": [
        "a2b2a433291a436e627e84d0038dc977079a4b6a"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titusfortner@users.noreply.github.com",
        "time": "Mon May 25 12:39:47 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon May 25 12:39:47 2026"
      },
      "message": "[build] monitor disk and cache usage throughout a bazel job (#17569)\n\n* [build] monitor disk and cache usage throughout a bazel job\n\n* make the build not need android"
    },
    {
      "commit": "a2b2a433291a436e627e84d0038dc977079a4b6a",
      "tree": "b441b4f2f4ac89deca3db79adecacc97813c5812",
      "parents": [
        "17168d50ef08fde5db91984ffbd5420fa20645a5"
      ],
      "author": {
        "name": "Selenium CI Bot",
        "email": "diemol+selenium-ci@gmail.com",
        "time": "Mon May 25 09:12:23 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon May 25 09:12:23 2026"
      },
      "message": "[build] Automated Browser Version Update (#17551)\n\nUpdate pinned browser versions\n\nCo-authored-by: Selenium CI Bot \u003cselenium-ci@users.noreply.github.com\u003e\nCo-authored-by: Diego Molina \u003cdiemol@users.noreply.github.com\u003e"
    },
    {
      "commit": "17168d50ef08fde5db91984ffbd5420fa20645a5",
      "tree": "4a28a36489e9ef21692e3d6c68bd5bdc51d188c5",
      "parents": [
        "b4ec34ea6bcfb5b96329468821b68e5b653095de"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titusfortner@users.noreply.github.com",
        "time": "Mon May 25 02:14:09 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon May 25 02:14:09 2026"
      },
      "message": "[build] Use target_compatible_with to gate IE/Safari tests  (#17566)\n\n[build] Use target_compatible_with to gate IE/Safari tests"
    },
    {
      "commit": "b4ec34ea6bcfb5b96329468821b68e5b653095de",
      "tree": "e091b760bc8ab524f3cd8a9fba860c5e9cff2456",
      "parents": [
        "221ac0df145126481882506909fa0a4683d1a9f3"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Mon May 25 00:18:28 2026"
      },
      "committer": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Mon May 25 00:18:28 2026"
      },
      "message": "[rb] make flaky test a unit test\n"
    },
    {
      "commit": "221ac0df145126481882506909fa0a4683d1a9f3",
      "tree": "4ed38661450f2bb33e0f3c4fc5b3b5645e08dc6b",
      "parents": [
        "bd1d9c7ca84930d2574ab88b6001bf3b2f98aeeb"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Sun May 24 21:44:04 2026"
      },
      "committer": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Sun May 24 21:44:04 2026"
      },
      "message": "[rb] fix flaky test\n"
    },
    {
      "commit": "bd1d9c7ca84930d2574ab88b6001bf3b2f98aeeb",
      "tree": "f88313d5267bd7d0663493a3aaee2fe23b73a848",
      "parents": [
        "04497d5342dc3f996020cc4ae51e3ac9a6f84c80"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Sun May 24 15:16:48 2026"
      },
      "committer": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Sun May 24 15:16:48 2026"
      },
      "message": "[rb] allow tests to run with RubyMine debugger\n"
    },
    {
      "commit": "04497d5342dc3f996020cc4ae51e3ac9a6f84c80",
      "tree": "c8b07a0175183060dbff3d4b3a1d4f78bcdb92e4",
      "parents": [
        "9d4ef39c30a82c7e56864bb37a7f52032faef0e2"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titusfortner@users.noreply.github.com",
        "time": "Sun May 24 11:12:10 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun May 24 11:12:10 2026"
      },
      "message": "[java] skip browser-restricted ports when picking a free port (#17561)"
    },
    {
      "commit": "9d4ef39c30a82c7e56864bb37a7f52032faef0e2",
      "tree": "7abff18f9f0ad8ccb24f885f7e69d02e0093ad5a",
      "parents": [
        "c481fc3f37dca8f1e91002665406cbe572cea49d"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titusfortner@users.noreply.github.com",
        "time": "Sun May 24 11:10:28 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun May 24 11:10:28 2026"
      },
      "message": "[py] mark Safari tests broken by SafariDriver 26.5 as xfail (#17560)"
    },
    {
      "commit": "c481fc3f37dca8f1e91002665406cbe572cea49d",
      "tree": "b9454ac76227f15fdb3f54934476e3d5c79c47c1",
      "parents": [
        "5f4ed4fc9e2147d090e28a4b4adb556b8c7b8bc8"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Sun May 24 02:33:57 2026"
      },
      "committer": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Sun May 24 02:50:15 2026"
      },
      "message": "[rb] do not send browser_version to local driver when browser is pinned\n"
    },
    {
      "commit": "5f4ed4fc9e2147d090e28a4b4adb556b8c7b8bc8",
      "tree": "3ae4a8578e046997c7de98431c3f377cc61ba5c3",
      "parents": [
        "6d77e1bfe29f964d579df1b4a8b0d6d65fcbdd88"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Sun May 24 01:39:01 2026"
      },
      "committer": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Sun May 24 01:39:21 2026"
      },
      "message": "[build] restore rules_jvm_external maven publisher patch\n"
    },
    {
      "commit": "6d77e1bfe29f964d579df1b4a8b0d6d65fcbdd88",
      "tree": "1ad557641f0e0104ff573d0b6c916ee9530e1666",
      "parents": [
        "301563bcaf287f99197e10a6d44b7be19f2e2cd4"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Sun May 24 01:38:10 2026"
      },
      "committer": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Sun May 24 01:38:10 2026"
      },
      "message": "[build] fix format script so it compares to remote when pushing from trunk\n"
    },
    {
      "commit": "301563bcaf287f99197e10a6d44b7be19f2e2cd4",
      "tree": "2d3389d2a33bbe8cde0442bebf0195fa0b64f166",
      "parents": [
        "af5497a4e0e54d740a0999e84a802d332b9a3a12"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Sun May 24 01:34:29 2026"
      },
      "committer": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Sun May 24 01:34:29 2026"
      },
      "message": "[rb] fix failing test\n"
    },
    {
      "commit": "af5497a4e0e54d740a0999e84a802d332b9a3a12",
      "tree": "2ba1402f3aa46a436931764e12146b2cbc734ec5",
      "parents": [
        "6307e6a5fae91590c08429e0112b90deb8fbc2ee"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Sun May 24 01:08:39 2026"
      },
      "committer": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Sun May 24 01:08:39 2026"
      },
      "message": "[rb] fix linting error\n"
    },
    {
      "commit": "6307e6a5fae91590c08429e0112b90deb8fbc2ee",
      "tree": "ec51085e8db592f86650c7b5d0235bdaf5766b33",
      "parents": [
        "ddd0bbda1004055e6fea62637971b91e02533fb0"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Sun May 24 00:01:40 2026"
      },
      "committer": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Sun May 24 00:11:49 2026"
      },
      "message": "[rb] allow running beta versions on grid by passing stereotype\n"
    },
    {
      "commit": "ddd0bbda1004055e6fea62637971b91e02533fb0",
      "tree": "f3e578a04e906eaebd8cbf99f3a36aa8fbff584a",
      "parents": [
        "4ad560f1e01abd37e20b292460197c4ff67c6f9a"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Sun May 24 00:11:38 2026"
      },
      "committer": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Sun May 24 00:11:49 2026"
      },
      "message": "[rb] when browser path is specified browser version should not get sent to the driver\n"
    },
    {
      "commit": "4ad560f1e01abd37e20b292460197c4ff67c6f9a",
      "tree": "3f7a3fea86fe810207d6c2503d156e164d051010",
      "parents": [
        "979a1172f72ddb72c9c201a62788f40c561ce305"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Sat May 23 23:34:58 2026"
      },
      "committer": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Sat May 23 23:34:58 2026"
      },
      "message": "[rb] fix test failures - cannot specify browser version on grid without registering stereotype\n"
    },
    {
      "commit": "979a1172f72ddb72c9c201a62788f40c561ce305",
      "tree": "9df4ba3187ff308b7b37a0b0099f7599a13b5a41",
      "parents": [
        "6996b5465938e7909370346eced775b4e60eab2d"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Sat May 23 22:13:38 2026"
      },
      "committer": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Sat May 23 22:15:55 2026"
      },
      "message": "[rb] rescue grid connection errors during test example cleanup\n"
    },
    {
      "commit": "6996b5465938e7909370346eced775b4e60eab2d",
      "tree": "33504f9d92fa72f176cf09921fa5ea906cb40b0d",
      "parents": [
        "8fdbf1bbfe77dc5e09ccae5f7e7433f4bd7d6249"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Sat May 23 21:27:02 2026"
      },
      "committer": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Sat May 23 21:27:02 2026"
      },
      "message": "[rb] skip creating safari preview test targets\n"
    },
    {
      "commit": "8fdbf1bbfe77dc5e09ccae5f7e7433f4bd7d6249",
      "tree": "a4f279fed697c91fba079ce3dce608e201911202",
      "parents": [
        "031ec77217ce1cf0b28d02630061bcea45d69567"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Sat May 23 21:25:14 2026"
      },
      "committer": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Sat May 23 21:25:14 2026"
      },
      "message": "[rb] fix firefox test failure - selenium manager doesn\u0027t clear browser version when binary specified\n"
    },
    {
      "commit": "031ec77217ce1cf0b28d02630061bcea45d69567",
      "tree": "8ffaca348c4efc52f71317168c876bb4921370b9",
      "parents": [
        "40e01cb39894aebed7ad2215a07b4e24208663db"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Sat May 23 20:33:47 2026"
      },
      "committer": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Sat May 23 20:35:42 2026"
      },
      "message": "[rb] remove duplicate deprecation warning\n"
    },
    {
      "commit": "40e01cb39894aebed7ad2215a07b4e24208663db",
      "tree": "89f87d604a030b2e1086b7f91172519ff80dc018",
      "parents": [
        "b8b2c08b13800c809b5f37821b728b74c5d9c49c"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Sat May 23 19:48:18 2026"
      },
      "committer": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Sat May 23 19:48:18 2026"
      },
      "message": "[rb] fix bug so ruby runs tests with beta version of browsers when not pinned\n"
    },
    {
      "commit": "b8b2c08b13800c809b5f37821b728b74c5d9c49c",
      "tree": "260787c39862cfb6dbf3fb0b5659fcd93250f5d1",
      "parents": [
        "5b65356f6dc57123d03d9767d547b07ae90ab3a4"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titusfortner@users.noreply.github.com",
        "time": "Sat May 23 18:52:24 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat May 23 18:52:24 2026"
      },
      "message": "[rb] deprecate Chromium Profile classes (#17557)"
    },
    {
      "commit": "5b65356f6dc57123d03d9767d547b07ae90ab3a4",
      "tree": "a247e323376ac7f85921a42895c84165b68446ad",
      "parents": [
        "9f79f48c9407e2475ad439f2e9903ecb28c27c7d"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titusfortner@users.noreply.github.com",
        "time": "Sat May 23 14:15:12 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat May 23 14:15:12 2026"
      },
      "message": "[build] do not create targets for IE for browser tests (#17548)"
    },
    {
      "commit": "9f79f48c9407e2475ad439f2e9903ecb28c27c7d",
      "tree": "59a1787dc27e9041c2f71921cc3c0dcddb80bd4a",
      "parents": [
        "9a97bcd9bc9e6e4f4bc1a04001da5b155c021057"
      ],
      "author": {
        "name": "David Burns",
        "email": "david.burns@theautomatedtester.co.uk",
        "time": "Fri May 22 08:21:18 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 22 08:21:18 2026"
      },
      "message": "[js] Use the typescript atom for get attribute (#17526)"
    },
    {
      "commit": "9a97bcd9bc9e6e4f4bc1a04001da5b155c021057",
      "tree": "a34b7ea75aba0f239df982f17e3d7edad661dd5d",
      "parents": [
        "6ecc8ee890cd9d8f49b01659e27f2551f0555a62"
      ],
      "author": {
        "name": "David Burns",
        "email": "david.burns@theautomatedtester.co.uk",
        "time": "Fri May 22 08:19:46 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 22 08:19:46 2026"
      },
      "message": "[build] Surface Bazel cache failures with diagnostics and graceful fallback (#17541)\n\n[build] surface Bazel cache failures with diagnostics and fall back gracefully"
    },
    {
      "commit": "6ecc8ee890cd9d8f49b01659e27f2551f0555a62",
      "tree": "17c422f16b2978b5ab39e75a023ccd2d3611bd85",
      "parents": [
        "0c2ea9dacff29e25017c3f478c5060ade875c8b3"
      ],
      "author": {
        "name": "Selenium CI Bot",
        "email": "diemol+selenium-ci@gmail.com",
        "time": "Fri May 22 07:52:17 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 22 07:52:17 2026"
      },
      "message": "[build] Automated Browser Version Update (#17535)\n\nUpdate pinned browser versions\n\nCo-authored-by: Selenium CI Bot \u003cselenium-ci@users.noreply.github.com\u003e"
    },
    {
      "commit": "0c2ea9dacff29e25017c3f478c5060ade875c8b3",
      "tree": "469e2cf38bc110303dd8a99f4e0e87413d8d950a",
      "parents": [
        "6891613fde855fb7fdace79c2d67b91cf2585ba6"
      ],
      "author": {
        "name": "David Burns",
        "email": "david.burns@theautomatedtester.co.uk",
        "time": "Thu May 21 18:26:08 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 21 18:26:08 2026"
      },
      "message": "[build] Expand machine disk cleanup and add pre-build space checks in CI (#17538)"
    },
    {
      "commit": "6891613fde855fb7fdace79c2d67b91cf2585ba6",
      "tree": "da22e0872271aa5fff823ce553e67464ed99e0b8",
      "parents": [
        "05fc9b55230a8e38a123fe4a94100db4bc4c0908"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Thu May 21 16:10:22 2026"
      },
      "committer": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Thu May 21 16:10:22 2026"
      },
      "message": "[build] fix renovate configuration migration warning\n"
    },
    {
      "commit": "05fc9b55230a8e38a123fe4a94100db4bc4c0908",
      "tree": "5c0d30bf7f1f1ca72f31cd050a88dbb5b96d6779",
      "parents": [
        "8ab150a57cedc9628c2693a577eefc2f12dc34ea"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Thu May 21 15:53:03 2026"
      },
      "committer": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Thu May 21 15:53:03 2026"
      },
      "message": "[build] have renovate skip dotnet updates because it only looks at csproj and only paket matters\n"
    },
    {
      "commit": "8ab150a57cedc9628c2693a577eefc2f12dc34ea",
      "tree": "598caf69633946c368557b9cf65a729494d40a15",
      "parents": [
        "d6063edabcddb9b08ce3d80b59cefc56c82d0323"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Thu May 21 12:47:26 2026"
      },
      "committer": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Thu May 21 12:47:26 2026"
      },
      "message": "[build] fix base commit comparison for non-trunk branches in ci workflow\n"
    },
    {
      "commit": "d6063edabcddb9b08ce3d80b59cefc56c82d0323",
      "tree": "2982060f16395b95f4a8ec2d2cf2ceb57e0c67c9",
      "parents": [
        "b221fb88ccbe7b658119fb98418eea47c2807bea"
      ],
      "author": {
        "name": "Viet Nguyen Duc",
        "email": "nguyenducviet4496@gmail.com",
        "time": "Thu May 21 04:39:33 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 21 04:39:33 2026"
      },
      "message": "[grid] Bundle Redis-backed SessionMap by default (#17441)\n\nSigned-off-by: Viet Nguyen Duc \u003cnguyenducviet4496@gmail.com\u003e"
    },
    {
      "commit": "b221fb88ccbe7b658119fb98418eea47c2807bea",
      "tree": "136b2ecf5e51fda0c7eef26808db3f274fedd079",
      "parents": [
        "f51fc9af6bc84e4ff499e30ae374cf45cb0d786d"
      ],
      "author": {
        "name": "David Burns",
        "email": "david.burns@theautomatedtester.co.uk",
        "time": "Wed May 20 22:15:28 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 20 22:15:28 2026"
      },
      "message": "[java] Move Java bindings to use Typescript atoms for isShown, getAtt… (#17530)"
    },
    {
      "commit": "f51fc9af6bc84e4ff499e30ae374cf45cb0d786d",
      "tree": "bd469473a48c6672daf7f15e1de6a2d561e8eb40",
      "parents": [
        "8436d4c6e7e39ef9197e2b4d7d2889cabab35ab7"
      ],
      "author": {
        "name": "David Burns",
        "email": "david.burns@theautomatedtester.co.uk",
        "time": "Wed May 20 22:14:58 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 20 22:14:58 2026"
      },
      "message": "[rb] Move atoms to use the typescript versions (#17532)"
    },
    {
      "commit": "8436d4c6e7e39ef9197e2b4d7d2889cabab35ab7",
      "tree": "8b319af69971357ac656f0a55207c16b900fb077",
      "parents": [
        "d25b21566bcfff608eac4e401b134317752fdb4d"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Wed May 20 21:47:59 2026"
      },
      "committer": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Wed May 20 21:47:59 2026"
      },
      "message": "[build] restore correct commit-changes behavior not to force push to current branch\n"
    },
    {
      "commit": "d25b21566bcfff608eac4e401b134317752fdb4d",
      "tree": "d2fe798e58c4d508619f7c51f442a952b3cc6e31",
      "parents": [
        "751ec74de57d4dcfcfb1f10eb8f934b87a162880"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titusfortner@users.noreply.github.com",
        "time": "Wed May 20 21:35:37 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 20 21:35:37 2026"
      },
      "message": "[build] dependency changes should run CI tests for given binding (#17534)\n\n* [build] dependency changes should run CI tests for given binding\n\n* [build] filter overridden targets from index results instead of files"
    },
    {
      "commit": "751ec74de57d4dcfcfb1f10eb8f934b87a162880",
      "tree": "2e879c65588ed1b7a9e891d1635f2791cc5c2d18",
      "parents": [
        "10ca9b5d88e81723d0b00706a71a934060856706"
      ],
      "author": {
        "name": "Nikolay Borisenko",
        "email": "22616990+nvborisenko@users.noreply.github.com",
        "time": "Wed May 20 21:00:09 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 20 21:00:09 2026"
      },
      "message": "[dotnet] [bidi] Immutable user facing collections (#17533)"
    },
    {
      "commit": "10ca9b5d88e81723d0b00706a71a934060856706",
      "tree": "2d5f15963095ab50e63d2f9525c9e0c5a225eaa6",
      "parents": [
        "774189f1702e1938678feb408633b6c21c97a690"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Wed May 20 18:45:08 2026"
      },
      "committer": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Wed May 20 18:45:08 2026"
      },
      "message": "[build] add same java maven package restrictions to renovate that we have in java.rake\n"
    },
    {
      "commit": "774189f1702e1938678feb408633b6c21c97a690",
      "tree": "02d7b9c4788812d4156bddbd7c2166262131f803",
      "parents": [
        "edf79a5a2d13a1ae4c54f5cc021b0ce1b0dc8a32"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Wed May 20 18:26:28 2026"
      },
      "committer": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Wed May 20 18:26:28 2026"
      },
      "message": "[build] run windows commands with bash\n"
    },
    {
      "commit": "edf79a5a2d13a1ae4c54f5cc021b0ce1b0dc8a32",
      "tree": "6bf42ba283cce3969eecaae8834cc6f6830b1e55",
      "parents": [
        "c771d383b78fe6dadcee8b4a153b9e3d1f70e45e"
      ],
      "author": {
        "name": "Nikolay Borisenko",
        "email": "22616990+nvborisenko@users.noreply.github.com",
        "time": "Wed May 20 13:21:09 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 20 13:21:09 2026"
      },
      "message": "[dotnet] [bidi] Add Download ID in events for downloading begin/end (#17531)"
    },
    {
      "commit": "c771d383b78fe6dadcee8b4a153b9e3d1f70e45e",
      "tree": "a5db2f249ed0d58279a5303f15cb13a2efe5171c",
      "parents": [
        "1bc8aaed39ae11d81e20134ad51179a5e8b22ddd"
      ],
      "author": {
        "name": "David Burns",
        "email": "david.burns@theautomatedtester.co.uk",
        "time": "Wed May 20 10:12:17 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 20 10:12:17 2026"
      },
      "message": "[dotnet] Move .NET bindings to use new Typescript atoms for isShown,g… (#17529)\n\n[dotnet] Move .NET bindings to use new Typescript atoms for isShown,getAttribute,\nand relative locators"
    },
    {
      "commit": "1bc8aaed39ae11d81e20134ad51179a5e8b22ddd",
      "tree": "9a9f0b4faf5b34efb5b218a3f9495964127eb891",
      "parents": [
        "432b8a189755cb53f451a98d459bb91b44989402"
      ],
      "author": {
        "name": "Selenium CI Bot",
        "email": "diemol+selenium-ci@gmail.com",
        "time": "Wed May 20 07:56:17 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 20 07:56:17 2026"
      },
      "message": "[build] Automated Browser Version Update (#17527)\n\nUpdate pinned browser versions\n\nCo-authored-by: Selenium CI Bot \u003cselenium-ci@users.noreply.github.com\u003e"
    },
    {
      "commit": "432b8a189755cb53f451a98d459bb91b44989402",
      "tree": "eaf16c241f53479c63905071f38d5387d1303a2f",
      "parents": [
        "77ea13b733f6d22c1053cf6902622bb056ae8d08"
      ],
      "author": {
        "name": "Pierluigi Lenoci",
        "email": "pierluigi.lenoci@gmail.com",
        "time": "Tue May 19 21:23:16 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 19 21:23:16 2026"
      },
      "message": "[java] Prevent byte-buddy -jdkN variant from being picked by dependency updates (#17523)\n\nAdd a guard in the java:update Rake task that detects net.bytebuddy:*\nartifacts whose proposed version carries a -jdkN suffix and falls back\nto the latest stable release returned by maven_stable_release (which\nalready filters to versions matching `\\A\\d+\\.\\d+(\\.\\d+)*\\z`).\n\nAlso revert MODULE.bazel and re-pin maven_install.json so the current\nstate is consistent again.\n\nFixes #17355\n\nSigned-off-by: Pierluigi Lenoci \u003cpierluigi.lenoci@gmail.com\u003e"
    },
    {
      "commit": "77ea13b733f6d22c1053cf6902622bb056ae8d08",
      "tree": "3c857548f669a174d2fc9f0d91123f24644ad751",
      "parents": [
        "3ba2c7ac318c606d7117c5ad18882558323f3872"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Tue May 19 20:23:14 2026"
      },
      "committer": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Tue May 19 20:23:14 2026"
      },
      "message": "[build] fix concurrency issue when renovate workflow calls both ci and ci-rbe workflows\n"
    },
    {
      "commit": "3ba2c7ac318c606d7117c5ad18882558323f3872",
      "tree": "4adced94f2b90cfff3abe2b60706ca3749eaa1f1",
      "parents": [
        "be01cdbeece3da2a231107d09c2de8de5db094b8"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Tue May 19 19:28:39 2026"
      },
      "committer": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Tue May 19 19:28:39 2026"
      },
      "message": "[build] fix renovate workflow permissions\n"
    },
    {
      "commit": "be01cdbeece3da2a231107d09c2de8de5db094b8",
      "tree": "0105a52119339793fef2a47841ac44e88f080142",
      "parents": [
        "25e47a7b9df48d88501480e7063ae8ffb1250171"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Tue May 19 18:54:02 2026"
      },
      "committer": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Tue May 19 18:54:02 2026"
      },
      "message": "[build] renovate needs dependencyDashboardApproval to be false in packageRules\n"
    },
    {
      "commit": "25e47a7b9df48d88501480e7063ae8ffb1250171",
      "tree": "bc83a60256694d48262c199084afcbf03186509e",
      "parents": [
        "6f90d8e1337148669fa3af5e50f4e75f07f96f94"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Tue May 19 18:47:06 2026"
      },
      "committer": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Tue May 19 18:47:06 2026"
      },
      "message": "[build] renovate needs dependencyDashboardApproval to be false to create branches\n"
    },
    {
      "commit": "6f90d8e1337148669fa3af5e50f4e75f07f96f94",
      "tree": "111d8aa44b52564b4aa5567dc31d718aa1d00802",
      "parents": [
        "eda6e0b53bd40259e7d8622ed07fe3f337f682e2"
      ],
      "author": {
        "name": "David Burns",
        "email": "david.burns@theautomatedtester.co.uk",
        "time": "Tue May 19 18:07:48 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 19 18:07:48 2026"
      },
      "message": "[rb] move Ruby bindings to use typescript get attribute atom (#17524)"
    },
    {
      "commit": "eda6e0b53bd40259e7d8622ed07fe3f337f682e2",
      "tree": "90fefaefc0d6ee6c063b598c34953b132d505c4c",
      "parents": [
        "72a6efd16277c95ca60dae3b0b1009f1116c51d8"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Tue May 19 18:06:48 2026"
      },
      "committer": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Tue May 19 18:06:48 2026"
      },
      "message": "[build] renovate needs to set automerge to true in order to create branches\n"
    },
    {
      "commit": "72a6efd16277c95ca60dae3b0b1009f1116c51d8",
      "tree": "76fea6589635aa4a414c1ddabea005e01e35b5b2",
      "parents": [
        "f5601cdce330ca1716b8f70d58deb6d1dfa68563"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titusfortner@users.noreply.github.com",
        "time": "Tue May 19 17:14:41 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 19 17:14:41 2026"
      },
      "message": "[build] remove overly complicated renovate workflow (#17525)\n\n* [build] remove overly complicated renovate workflow and replace with built-in features\n\n* add concurrency to prevent race conditions"
    },
    {
      "commit": "f5601cdce330ca1716b8f70d58deb6d1dfa68563",
      "tree": "c450b8a4e76fb5f52608a32015b4e38e6f15a0a7",
      "parents": [
        "e7a1e432af4022f6c102d44cdae72797cbfcb32c"
      ],
      "author": {
        "name": "Nikolay Borisenko",
        "email": "22616990+nvborisenko@users.noreply.github.com",
        "time": "Tue May 19 16:29:03 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 19 16:29:03 2026"
      },
      "message": "[dotnet] [test] Add NUnit analyzer (#17522)"
    },
    {
      "commit": "e7a1e432af4022f6c102d44cdae72797cbfcb32c",
      "tree": "8c53db07241b8d38cdce19c177941b3a9cedc182",
      "parents": [
        "c75a12b03531f993ddb403c529a975cc5a94e4f0"
      ],
      "author": {
        "name": "Nikolay Borisenko",
        "email": "22616990+nvborisenko@users.noreply.github.com",
        "time": "Tue May 19 15:30:35 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 19 15:30:35 2026"
      },
      "message": "[dotnet] Direct dependency on Microsoft.Bcl.AsyncInterfaces (#17519)"
    },
    {
      "commit": "c75a12b03531f993ddb403c529a975cc5a94e4f0",
      "tree": "ced39632d1456d597a781179b055fbf9d941b5df",
      "parents": [
        "4fea2dd7d59fcfad74add404b268f45bf8ab95d6"
      ],
      "author": {
        "name": "Nikolay Borisenko",
        "email": "22616990+nvborisenko@users.noreply.github.com",
        "time": "Tue May 19 14:04:59 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 19 14:04:59 2026"
      },
      "message": "[dotnet] [test] Resolve obsolete warning about NUnit TestDelegate (#17520)"
    },
    {
      "commit": "4fea2dd7d59fcfad74add404b268f45bf8ab95d6",
      "tree": "6a13e57103dbb277fbb7ef8ecc334548abb072d8",
      "parents": [
        "411634bffdcb6a729df2b6ee9fd08c72cbaa1df6"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titusfortner@users.noreply.github.com",
        "time": "Tue May 19 01:41:34 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 19 01:41:34 2026"
      },
      "message": "[py] update python dependencies (#17490)\n\n* [py] update python dependencies\n\n* move tox requirements inline\n\n* bump multitool versions as well for parity"
    },
    {
      "commit": "411634bffdcb6a729df2b6ee9fd08c72cbaa1df6",
      "tree": "d2ec4d5809f93852b68906b513b759b17caa9a3d",
      "parents": [
        "60204c40cd06309b05e7ca5061b0dd12e4036754"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Tue May 19 01:36:34 2026"
      },
      "committer": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Tue May 19 01:36:34 2026"
      },
      "message": "[build] fix renovate reported issues with configuration\n"
    },
    {
      "commit": "60204c40cd06309b05e7ca5061b0dd12e4036754",
      "tree": "00cade58556b95c3d02370f4f5eff59425278c4a",
      "parents": [
        "370fa0d334a184cbcd9e338fe908573de907a3ce"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Tue May 19 00:34:09 2026"
      },
      "committer": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Tue May 19 00:34:09 2026"
      },
      "message": "[build] remove base-ref from renovate workflows it does not work for the use case I had for them\n"
    },
    {
      "commit": "370fa0d334a184cbcd9e338fe908573de907a3ce",
      "tree": "b247814eb8d01a6f03e1f436e2c5e40610c068fb",
      "parents": [
        "3cc0c406f3b8bf06f2f07f7612ed1d3e79a99593"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titusfortner@users.noreply.github.com",
        "time": "Tue May 19 00:18:44 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 19 00:18:44 2026"
      },
      "message": "[build] add renovate dependency workflow (#17504)\n\n* [build] add renovate dependency workflow\n\n* [build] simplify renovate orchestration and apply renovate.json rules"
    },
    {
      "commit": "3cc0c406f3b8bf06f2f07f7612ed1d3e79a99593",
      "tree": "c73bca1e0d1b33c14658c56b67e3fc469844dfa1",
      "parents": [
        "e9bfc1f6f3d4229c4c80281eba5609b5b53c5ffc"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titusfortner@users.noreply.github.com",
        "time": "Mon May 18 22:35:06 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon May 18 22:35:06 2026"
      },
      "message": "[build] simplify commit-changes workflow (#17503)\n\n* [build] simplify commit-changes workflow\n\n* [build] only push from commit-changes when a commit was made\n\n* [build] drop unused changes-committed output from commit-changes"
    },
    {
      "commit": "e9bfc1f6f3d4229c4c80281eba5609b5b53c5ffc",
      "tree": "54e496937603f2ffad150876c73d63c88c7df047",
      "parents": [
        "6a9dd292f4479a4d3262997c5c2b6334ee3003a2"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titusfortner@users.noreply.github.com",
        "time": "Mon May 18 22:10:02 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon May 18 22:10:02 2026"
      },
      "message": "[build] clarify dependency pin and update tasks (#17463)\n\n* [build] clarify dependency pin and update tasks\n\n* remove upgrade tasks as out of scope"
    },
    {
      "commit": "6a9dd292f4479a4d3262997c5c2b6334ee3003a2",
      "tree": "92612724fba78f850750251daac655d2a808c60e",
      "parents": [
        "b338c0572e9e926a5e3f3168ac06668c70cead6f"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Mon May 18 22:06:25 2026"
      },
      "committer": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Mon May 18 22:06:25 2026"
      },
      "message": "[build] do not rerun or attempt to upload logs unless workflow failure is from the Bazel step\n"
    },
    {
      "commit": "b338c0572e9e926a5e3f3168ac06668c70cead6f",
      "tree": "f38c1f50a4055c283e89e849420ef25fddc5fff8",
      "parents": [
        "2725ef4d3048485171a562402b5b5189014c2ccb"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Mon May 18 16:51:27 2026"
      },
      "committer": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Mon May 18 16:51:27 2026"
      },
      "message": "[build] fix renovate ignore rules_python to v2 until upstream fixed\n"
    }
  ],
  "next": "2725ef4d3048485171a562402b5b5189014c2ccb"
}
