)]}'
{
  "log": [
    {
      "commit": "a1882401b61518440c900c1f15857a341b2de4da",
      "tree": "03b2e53d584977705ad50c6b731aafe6ffc6c249",
      "parents": [
        "6bf7598c31c973682a92ca53c7c1ca8a46c93fd9"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Fri Sep 18 22:35:50 2026"
      },
      "committer": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Fri Sep 18 22:43:53 2026"
      },
      "message": "[py] skip clean_driver fixture under --remote since it always builds a local driver\n"
    },
    {
      "commit": "6bf7598c31c973682a92ca53c7c1ca8a46c93fd9",
      "tree": "2ec6e403522bd40389dec153fe8fcc1d8eed6492",
      "parents": [
        "c2a00cf5ddccc87a6e9ce0be01dc71e875581546"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Fri Sep 18 20:54:23 2026"
      },
      "committer": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Fri Sep 18 21:14:56 2026"
      },
      "message": "[rb] tag the Grid BiDi specs {browser}-grid so the scheduled Grid jobs run them on Windows\n"
    },
    {
      "commit": "c2a00cf5ddccc87a6e9ce0be01dc71e875581546",
      "tree": "4641e89fde4396539e9ddeead69d1ea5cfb6bbe3",
      "parents": [
        "9f2588771e9443e8e20910b28a37685d46f5fea2"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Fri Sep 18 20:48:21 2026"
      },
      "committer": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Fri Sep 18 21:12:52 2026"
      },
      "message": "[build] fix bug that prevented binding jobs from running on schedule and dispatch\n"
    },
    {
      "commit": "9f2588771e9443e8e20910b28a37685d46f5fea2",
      "tree": "005eef847ec1d058eb075d4dc4274daa620e007f",
      "parents": [
        "cd1f515b5391dba2fdaaa280486f7bde759dd9c4"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Fri Sep 18 18:26:32 2026"
      },
      "committer": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Fri Sep 18 18:27:06 2026"
      },
      "message": "[build] rename the Bot workflow prefix to Webhook so the group sorts after CI\n"
    },
    {
      "commit": "cd1f515b5391dba2fdaaa280486f7bde759dd9c4",
      "tree": "dc86b44e20e84e2c8d67c889db33281b7116d9b9",
      "parents": [
        "56de7635c8864a3c492490bfd8bf409d6fb392c9"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titusfortner@users.noreply.github.com",
        "time": "Fri Sep 18 17:59:26 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Sep 18 17:59:26 2026"
      },
      "message": "[build] prefix workflow names by how they run so the Actions sidebar groups them (#18053)"
    },
    {
      "commit": "56de7635c8864a3c492490bfd8bf409d6fb392c9",
      "tree": "78f7e07344f8a41337c3c766ea4a9eaf612900d2",
      "parents": [
        "fd91308216389fbe628d080d384abbee3f9a73a3"
      ],
      "author": {
        "name": "Selenium CI Bot",
        "email": "diemol+selenium-ci@gmail.com",
        "time": "Fri Sep 18 07:40:47 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Sep 18 07:40:47 2026"
      },
      "message": "[build] Automated Browser Version Update (#18050)\n\nUpdate pinned browser versions\n\nCo-authored-by: Selenium CI Bot \u003cselenium-ci@users.noreply.github.com\u003e"
    },
    {
      "commit": "fd91308216389fbe628d080d384abbee3f9a73a3",
      "tree": "42a6984281caf1083b467e99d7e3c21bc9c31e46",
      "parents": [
        "cc812b244e38360c6d3d71b2e4ccf5d792b67458"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titusfortner@users.noreply.github.com",
        "time": "Thu Sep 17 18:39:35 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 17 18:39:35 2026"
      },
      "message": "[build] fetch the changelog history since the previous release tag instead of computing a depth (#18044)\n\n* [build] fetch the changelog history since the previous release tag instead of computing a depth\n\n* [build] pass full language names to update_changelog so patch releases find the previous release tag\n\n* [build] move the release history fetch into a script called from the pre-release jobs"
    },
    {
      "commit": "cc812b244e38360c6d3d71b2e4ccf5d792b67458",
      "tree": "fc589374b34cb426310a7ed58c41abc8dc11bd12",
      "parents": [
        "833ca3b832c5d519be22511918c1d7b3604bb374"
      ],
      "author": {
        "name": "Nikolay Borisenko",
        "email": "22616990+nvborisenko@users.noreply.github.com",
        "time": "Thu Sep 17 18:35:44 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 17 18:35:44 2026"
      },
      "message": "[build] Ignore exec.log recursively (#18049)"
    },
    {
      "commit": "833ca3b832c5d519be22511918c1d7b3604bb374",
      "tree": "5087bc6680051933cb8a120683bfaba65c5391b9",
      "parents": [
        "9b69c7c165f0e9525285ba1bfb4550580e94eee3"
      ],
      "author": {
        "name": "joerg1985",
        "email": "16140691+joerg1985@users.noreply.github.com",
        "time": "Thu Sep 17 15:11:14 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 17 15:11:14 2026"
      },
      "message": "[java] Use one HttpClient.Factory inside one RemoteWebDriver instance (#18038)"
    },
    {
      "commit": "9b69c7c165f0e9525285ba1bfb4550580e94eee3",
      "tree": "40b49f4926b49c232b5e6a6d37ea2eec61ec00dc",
      "parents": [
        "d889f2366525816a25026a97d3f25e71e2b8cf49"
      ],
      "author": {
        "name": "Selenium CI Bot",
        "email": "diemol+selenium-ci@gmail.com",
        "time": "Thu Sep 17 08:04:52 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 17 08:04:52 2026"
      },
      "message": "[build] Automated Browser Version Update (#18045)\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": "d889f2366525816a25026a97d3f25e71e2b8cf49",
      "tree": "83d45e4d11efc6046f18650464fbb42c9df351b7",
      "parents": [
        "c6dd1c4cb7acf34e4fdbc176e37fd7fdda0a6ea2"
      ],
      "author": {
        "name": "Selenium CI Bot",
        "email": "diemol+selenium-ci@gmail.com",
        "time": "Thu Sep 17 07:16:43 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 17 07:16:43 2026"
      },
      "message": "[build] Automated CDDL Spec Update (#18046)\n\nupdate cddl spec files\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": "c6dd1c4cb7acf34e4fdbc176e37fd7fdda0a6ea2",
      "tree": "5f8b6b0eb1f4ceb9e4ae14cffbd26d127d101ca3",
      "parents": [
        "4d1ea36332104733a3a002af820985d91d5532c3"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Thu Sep 17 01:10:12 2026"
      },
      "committer": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Thu Sep 17 01:32:48 2026"
      },
      "message": "[build] patch rules_ruby so rb_gem_push bundles the interpreter in runfiles\n"
    },
    {
      "commit": "4d1ea36332104733a3a002af820985d91d5532c3",
      "tree": "7474b1e3d87e11ea3d64c5c935a2a5b463f824d4",
      "parents": [
        "527d509fb50000e189448aa4b54df9286f8ab8c8"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Wed Sep 16 18:51:10 2026"
      },
      "committer": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Thu Sep 17 01:12:42 2026"
      },
      "message": "[build] run Ruby Grid specs on Windows and macOS nightly instead of all beta browser Grid targets\n\nRBE tests provide Grid coverage on Linux. The remote package\u0027s specs are tagged grid, which the test macro emits on their remote targets as {browser}-grid, so the scheduled full jobs can test Grid operation itself on Mac and Windows without running every Grid target.\n"
    },
    {
      "commit": "527d509fb50000e189448aa4b54df9286f8ab8c8",
      "tree": "89dcb18350d0fffb07e3822970dce5c2bba77ac5",
      "parents": [
        "4fd11e186332d1f46484572db0cc0b4ac2835cc3"
      ],
      "author": {
        "name": "Adam Dangoor",
        "email": "adamdangoor@gmail.com",
        "time": "Wed Sep 16 22:02:09 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 16 22:02:09 2026"
      },
      "message": "[py] Type BaseOptions.set_capability parameters (#18027)\n\nType BaseOptions.set_capability parameters\n\nCo-authored-by: Diego Molina \u003cdiemol@users.noreply.github.com\u003e"
    },
    {
      "commit": "4fd11e186332d1f46484572db0cc0b4ac2835cc3",
      "tree": "6f71f4e90b8d70d0d5ab31a4b1d249c2f1534367",
      "parents": [
        "2c20592378f919d4dadba0ee854a01225c0b785c"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titusfortner@users.noreply.github.com",
        "time": "Wed Sep 16 21:56:17 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 16 21:56:17 2026"
      },
      "message": "[py] move complete GitHub Actions test suite to nightly and run only high value smoke tests for PRs (#18040)\n\n* [py] split CI into per-OS smoke and scheduled full tiers\n\n* [py] fix tests to scroll the input into view before sending keys through actions\n\n* [py] run os-sensitive smoke targets only where RBE cannot, not on ubuntu\n\n* [py] drop the GHA remote job; RBE runs the Grid suite\n\n* [py] make the full tier filter the exact complement of the smoke filter"
    },
    {
      "commit": "2c20592378f919d4dadba0ee854a01225c0b785c",
      "tree": "194adbe52cc9b2e35cc050c21f4c4bdb86375ad1",
      "parents": [
        "718adc8e8273e31bc70074268b1693ae533d7dc3"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titusfortner@users.noreply.github.com",
        "time": "Wed Sep 16 21:40:19 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 16 21:40:19 2026"
      },
      "message": "[build] use RBE to prepare and build the artifacts for releases (#18041)\n\n* [build] build the publish jobs on RBE and warm the release config on the release-preparation PR\n\n* [build] require the Prepare Release check to merge release-preparation PRs\n\n* [build] build only the release zip in dotnet:package"
    },
    {
      "commit": "718adc8e8273e31bc70074268b1693ae533d7dc3",
      "tree": "5d362c88afa2c36d171134fc282ad8c55ede933a",
      "parents": [
        "03002c9d7765684d447af7bde52bbf511b4fa3b1"
      ],
      "author": {
        "name": "Nikolay Borisenko",
        "email": "22616990+nvborisenko@users.noreply.github.com",
        "time": "Wed Sep 16 19:44:24 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 16 19:44:24 2026"
      },
      "message": "[dotnet] [bidi] Add Emulation.SetTextLayoutModeOverride command (#18043)"
    },
    {
      "commit": "03002c9d7765684d447af7bde52bbf511b4fa3b1",
      "tree": "2ba6a7ed75d1008db708e5ef8c37d6435e02b9a0",
      "parents": [
        "603fe2936308dd1452744a9da7ec808d6e506b46"
      ],
      "author": {
        "name": "Nikolay Borisenko",
        "email": "22616990+nvborisenko@users.noreply.github.com",
        "time": "Wed Sep 16 19:44:13 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 16 19:44:13 2026"
      },
      "message": "[dotnet] [bidi] Support DestinationFolder optional arg in StartScreencast (#18042)"
    },
    {
      "commit": "603fe2936308dd1452744a9da7ec808d6e506b46",
      "tree": "01193d7db7b4f62b895059d035abfb39c4565070",
      "parents": [
        "e5a451f7919dd84f4a8daa1c999f52a712717a2b"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titusfortner@users.noreply.github.com",
        "time": "Wed Sep 16 17:55:41 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 16 17:55:41 2026"
      },
      "message": "[py] run the requirements lock check on RBE with a platform-agnostic lock (#18039)\n\n* [py] allow the requirements lock check to run on RBE since it can use the host network\n\n* [py] make requirements lock check platform-agnostic"
    },
    {
      "commit": "e5a451f7919dd84f4a8daa1c999f52a712717a2b",
      "tree": "381309a5b4c39126f66c6c8851c83d6f1ca879f7",
      "parents": [
        "cbe7243c926c364d979dc6d8d0d16b289dfb01cb"
      ],
      "author": {
        "name": "Selenium CI Bot",
        "email": "diemol+selenium-ci@gmail.com",
        "time": "Wed Sep 16 15:50:07 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 16 15:50:07 2026"
      },
      "message": "[build] Automated Browser Version Update (major) (#18035)\n\n* Update pinned browser versions\n\n* [rb] Remove stale Firefox/Linux guard for browsingContext.startScreencast\n\nFirefox 156 (pinned in this PR) fixes the NS_ERROR_FAILURE startScreencast\nbug on Linux, so the guard now causes CI to fail with \"Expected pending ...\nto fail. No error was raised.\"\n\nCo-Authored-By: Claude Sonnet 5 \u003cnoreply@anthropic.com\u003e\n\n---------\n\nCo-authored-by: Selenium CI Bot \u003cselenium-ci@users.noreply.github.com\u003e\nCo-authored-by: Diego Molina \u003cdiemol@gmail.com\u003e\nCo-authored-by: Claude Sonnet 5 \u003cnoreply@anthropic.com\u003e\nCo-authored-by: Diego Molina \u003cdiemol@users.noreply.github.com\u003e"
    },
    {
      "commit": "cbe7243c926c364d979dc6d8d0d16b289dfb01cb",
      "tree": "3924495a81338685bfc2c631d68e4256439aafa8",
      "parents": [
        "212056475f8b470b24005f8934b4f8eaea31d6da"
      ],
      "author": {
        "name": "Puja Jagani",
        "email": "puja.jagani93@gmail.com",
        "time": "Wed Sep 16 04:22:24 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 16 04:22:24 2026"
      },
      "message": "[java] Parse each BiDi command response only once (#18011)"
    },
    {
      "commit": "212056475f8b470b24005f8934b4f8eaea31d6da",
      "tree": "948d234961b39d2d51ae14ad39ce774d6e10f72d",
      "parents": [
        "d32c5f25684ff513753661480ac3e18739f3b0e5"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Tue Sep 15 19:37:37 2026"
      },
      "committer": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Tue Sep 15 21:28:32 2026"
      },
      "message": "[build] remove the Unlock Trunk workflow; Manage Trunk Restrictions now unlocks by default when dispatched\n"
    },
    {
      "commit": "d32c5f25684ff513753661480ac3e18739f3b0e5",
      "tree": "137bc136f738d36a702211e5abc901a1e4b9050a",
      "parents": [
        "7f0606581f1d29a22ac8da73aa3252538f3aa6ab"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titusfortner@users.noreply.github.com",
        "time": "Tue Sep 15 19:24:41 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 15 19:24:41 2026"
      },
      "message": "[rb] Implement driver methods for installing and uninstalling web extensions via BiDi (#17879)\n\n* [rb] add cross-browser Driver#install_web_extension, deprecating the Firefox classic install_addon methods\n\n* [rb] install web extensions on a Grid node by uploading the unpacked directory via se/file"
    },
    {
      "commit": "7f0606581f1d29a22ac8da73aa3252538f3aa6ab",
      "tree": "4637bff8264bd219fd81e27ff47c57a461c599e5",
      "parents": [
        "6c63e70ab7bb940f4b22d716711bd510641fc44f"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Tue Sep 15 19:08:10 2026"
      },
      "committer": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Tue Sep 15 19:22:44 2026"
      },
      "message": "[build] fail release workflows for unauthorized actors instead of requesting approval\n"
    },
    {
      "commit": "6c63e70ab7bb940f4b22d716711bd510641fc44f",
      "tree": "b23156cb1664031ae5b061ed0dc3abff7d5df2dc",
      "parents": [
        "4a2ca991c2cc207b3c4ff60d396baab19ced391e"
      ],
      "author": {
        "name": "Ikraam Ghoor",
        "email": "ikraamghoor@gmail.com",
        "time": "Tue Sep 15 19:17:51 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 15 19:17:51 2026"
      },
      "message": "[rb] render WebSocket debug log lines lazily (#18033)\n\nWebSocketConnection#send_cmd and #process_frame build the\n\"WebSocket -\u003e ...\" and \"WebSocket \u003c- ...\" strings before handing\nthem to WebDriver.logger.debug, so every frame pays a deep\nHash#inspect even though the logger discards the line at its\ndefault level. A BiDi session receives one frame per network\nevent, so a page with many assets renders each of them for\nnothing; profiling a Firefox BiDi worker showed the inspect at\nabout 3% of on-CPU time.\n\nPass the frame to the logger as a block instead. Logger#debug\nalready documents the block as appended to the message and only\nyields once the level check has passed, so the output at debug\nlevel is unchanged.\n\nCo-authored-by: Titus Fortner \u003ctitusfortner@users.noreply.github.com\u003e"
    },
    {
      "commit": "4a2ca991c2cc207b3c4ff60d396baab19ced391e",
      "tree": "edc9e7fac8fbf0d4e6d2ee7d9bdd6c5c2d336e06",
      "parents": [
        "071b77c106da4423bd6e07e127f1b70df1094f49"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Tue Sep 15 18:54:08 2026"
      },
      "committer": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Tue Sep 15 19:02:43 2026"
      },
      "message": "[build] use --build_tests_only for all Ruby CI test jobs\n"
    },
    {
      "commit": "071b77c106da4423bd6e07e127f1b70df1094f49",
      "tree": "125d264cf5fc6fcd4ba70eab1d681cd9360b7ab6",
      "parents": [
        "f9c29f7d5617938b04544d808cb04c1f849737ed"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Sat Sep 12 18:53:16 2026"
      },
      "committer": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Tue Sep 15 19:01:49 2026"
      },
      "message": "[build] skip the affected-target job when every target runs anyway\n"
    },
    {
      "commit": "f9c29f7d5617938b04544d808cb04c1f849737ed",
      "tree": "0fd75a6fbea4b5906d2e4c96f5a79e2c937ff85e",
      "parents": [
        "e5fc7732c433cf52da23088f58738291e462ddf7"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Tue Sep 15 17:22:55 2026"
      },
      "committer": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Tue Sep 15 17:31:16 2026"
      },
      "message": "[build] only flag major browser bumps for stable pins, not beta\n"
    },
    {
      "commit": "e5fc7732c433cf52da23088f58738291e462ddf7",
      "tree": "3eea48919f60876a01f8c720e710d24e56b82972",
      "parents": [
        "da30f926e424b98bd8da5a10bbbbca63898caed7"
      ],
      "author": {
        "name": "Selenium CI Bot",
        "email": "selenium-ci@users.noreply.github.com",
        "time": "Tue Sep 15 17:08:45 2026"
      },
      "committer": {
        "name": "Selenium CI Bot",
        "email": "selenium-ci@users.noreply.github.com",
        "time": "Tue Sep 15 17:08:45 2026"
      },
      "message": "[build] Automated Selenium Manager Update\n"
    },
    {
      "commit": "da30f926e424b98bd8da5a10bbbbca63898caed7",
      "tree": "963b174a2d6fa288df0ab38be7a7d632b370c682",
      "parents": [
        "8d1433af8923288c0db0596a47fd53c56a44619b"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titusfortner@users.noreply.github.com",
        "time": "Tue Sep 15 17:01:10 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 15 17:01:10 2026"
      },
      "message": "[build] add bazel flag to support cross-compiling all Selenium Manager binaries from Linux or Mac (#18029)\n\n[build] add --manager\u003dall to cross-compile every Selenium Manager binary from one host"
    },
    {
      "commit": "8d1433af8923288c0db0596a47fd53c56a44619b",
      "tree": "0d4ad6a6ce1ebdcb0d4cebf274b059033095cd1f",
      "parents": [
        "436022cc2211b51acea14c332e58aa1a4e81cb59"
      ],
      "author": {
        "name": "Navin Chandra",
        "email": "navinchandra772@gmail.com",
        "time": "Tue Sep 15 13:56:06 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 15 13:56:06 2026"
      },
      "message": "[py]: Apply ClientConfig `user_agent` and `extra_headers` per connection (#17944)"
    },
    {
      "commit": "436022cc2211b51acea14c332e58aa1a4e81cb59",
      "tree": "b8981e6b5a2050afa631e19c3591115f1bf0932b",
      "parents": [
        "b39d1c270006fa8ac0d1df240e3f47cec9bef40c"
      ],
      "author": {
        "name": "Selenium CI Bot",
        "email": "selenium-ci@users.noreply.github.com",
        "time": "Mon Sep 14 08:45:55 2026"
      },
      "committer": {
        "name": "Selenium CI Bot",
        "email": "selenium-ci@users.noreply.github.com",
        "time": "Mon Sep 14 08:45:55 2026"
      },
      "message": "[build] Automated Selenium Manager Update\n"
    },
    {
      "commit": "b39d1c270006fa8ac0d1df240e3f47cec9bef40c",
      "tree": "4cff12a7085276ee2e797e1fd549cdee676dfd52",
      "parents": [
        "413306e545029a3ee830db4580de40c5f754d654"
      ],
      "author": {
        "name": "Selenium CI Bot",
        "email": "diemol+selenium-ci@gmail.com",
        "time": "Mon Sep 14 08:39:31 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 14 08:39:31 2026"
      },
      "message": "[build] Automated Dependency Update (#18032)\n\nupdate dependencies and pinned binaries\n\nCo-authored-by: Selenium CI Bot \u003cselenium-ci@users.noreply.github.com\u003e"
    },
    {
      "commit": "413306e545029a3ee830db4580de40c5f754d654",
      "tree": "a3ecb40ad0c03d95ca6313f9671d80d7478ee354",
      "parents": [
        "f648460001ea0869e7bcce746df74dcd39b56cf3"
      ],
      "author": {
        "name": "Alex Popov",
        "email": "iampopovich@gmail.com",
        "time": "Sun Sep 13 23:47:35 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Sep 13 23:47:35 2026"
      },
      "message": "[py] cleanup for ruff b904 raise from  (#18030)\n\n* [py] chain the exception context in remote webdriver raises\n\n`_get_cdp_details` re-raised as WebDriverException without a cause, hiding\nwhich capabilities key (`goog:chromeOptions` or `ms:edgeOptions`) returned\nNone, so chain the AttributeError.\n\n`execute_script` suppresses the KeyError instead -- it carried nothing the\nmessage did not already say -- but the script id it did carry is now part of\nthe message, so a caller with several pinned scripts can tell which one is\nmissing.\n\n* [py] chain the OSError context when the service path is None\n\nThe sibling raise a few lines down already passed `from err`; this branch is\nreached from the same EACCES handler and should report the same cause.\n\n* [py] make the --driver fixture errors self-explanatory\n\n`clean_driver` collapsed two unrelated failures into one message: no --driver\npassed (TypeError from subscripting None) and a --driver that SupportedDrivers\ndoes not know (AttributeError from getattr). The second case reported \"This\ntest requires a --driver to be specified\", which is untrue.\n\nargparse `choices\u003ddrivers` currently makes the second case unreachable, but\nonly for as long as `drivers` and SupportedDrivers stay in sync, and the\nmerged handler gave no hint when they drift. Split the two, and name the\noffending driver in the message.\n\nThe other two fixtures do not call getattr, so their message is accurate;\nthey just suppress the context.\n\n* [py] chain the exception context in cdp, utils, firefox profile and server\n\nCauses that carry information are chained with `from err`. Two are suppressed\ninstead: the LookupError from a ContextVar carries nothing beyond \"unset\", and\nthe ConnectionRefusedError in Server.start is the success path -- it means the\nport was free -- so it would only mislead in a startup-timeout traceback.\n\n* [py] enforce ruff B904 (raise ... from) in the Python bindings\n\nPart of #17989. All 17 findings are addressed by the preceding commits, so\nthe carve-out can go and the rule keeps new ones from landing.\n\n* [py] drop the hand-rolled traceback argument from AddonFormatError\n\n`AddonFormatError` has no `__init__`, so the second positional argument never\nbecame `__traceback__` -- it just landed in `args`, and with two args\n`Exception.__str__` prints the whole tuple. Every add-on parsing failure ended\nits traceback with a memory address:\n\n    AddonFormatError: (\"[Errno 2] ... install.rdf\", \u003ctraceback object at 0x7f..\u003e)\n\nThe pattern dates to 983d5b2e62 (2014), a port of Python 2\u0027s three-argument\n`raise`, which was the only way to keep the original traceback back then. The\npreceding commit added `from e`, so `__cause__` now carries the cause properly\nand the argument is redundant as well as noisy. It also kept every frame of\nthe caught exception alive for as long as the AddonFormatError was referenced.\n\nThis changes `str(exc)` and `exc.args` for the two raises that passed it. The\nclass is not re-exported from any package `__init__`, and the third raise in\nthe same file already passed a single argument.\n\n`import sys` goes with them; nothing else in the file used it.\n\n* fix: use a variable for script ID in JavascriptException message"
    },
    {
      "commit": "f648460001ea0869e7bcce746df74dcd39b56cf3",
      "tree": "400e8a79487c08dded086575362cf95aa3c19cb3",
      "parents": [
        "68d8d738606315948771f0d9c3241cbb3cd88da9"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Sat Sep 12 18:41:23 2026"
      },
      "committer": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Sat Sep 12 18:44:54 2026"
      },
      "message": "[build] generate nightly versions at release approval instead of after publish\n"
    },
    {
      "commit": "68d8d738606315948771f0d9c3241cbb3cd88da9",
      "tree": "26221f90e9aca0e6e1873b92e06b65f5df01a77f",
      "parents": [
        "fc33fe1bc2afbb4bda972799122890d2f7ee7c2e"
      ],
      "author": {
        "name": "Selenium CI Bot",
        "email": "selenium-ci@users.noreply.github.com",
        "time": "Sat Sep 12 13:12:07 2026"
      },
      "committer": {
        "name": "Selenium CI Bot",
        "email": "selenium-ci@users.noreply.github.com",
        "time": "Sat Sep 12 13:12:07 2026"
      },
      "message": "[build] Automated Selenium Manager Update\n"
    },
    {
      "commit": "fc33fe1bc2afbb4bda972799122890d2f7ee7c2e",
      "tree": "8f9230cbd7d160ce5a6a2aba6825111230e5c2cf",
      "parents": [
        "141e9b8f551dc555e1812917b323edbb054139be"
      ],
      "author": {
        "name": "Selenium CI Bot",
        "email": "diemol+selenium-ci@gmail.com",
        "time": "Sat Sep 12 13:08:40 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Sep 12 13:08:40 2026"
      },
      "message": "[build] Automated Browser Version Update (#18026)\n\nUpdate pinned browser versions\n\nCo-authored-by: Selenium CI Bot \u003cselenium-ci@users.noreply.github.com\u003e"
    },
    {
      "commit": "141e9b8f551dc555e1812917b323edbb054139be",
      "tree": "5798144b593515b49b3b08a2e79ea8bb6b951ba3",
      "parents": [
        "ea152c5e3d2152def398f2626ca58fb404cdc182"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titusfortner@users.noreply.github.com",
        "time": "Sat Sep 12 13:04:28 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Sep 12 13:04:28 2026"
      },
      "message": "[build] always use the latest Selenium Manager code when needed for tests (#18024)\n\n* [build] decouple Selenium Manager compilation from pin_browsers\n\n* [build] commit the Selenium Manager pin to trunk after each snapshot\n\n* [build] select the Selenium Manager source with --//common:manager"
    },
    {
      "commit": "ea152c5e3d2152def398f2626ca58fb404cdc182",
      "tree": "130d92910b447a96f32c284faba0388cc8d4c919",
      "parents": [
        "2aa90e832940d5f4d1c8fc3eacb8ce0a0a57b23f"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Fri Sep 11 21:17:04 2026"
      },
      "committer": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Sat Sep 12 12:52:26 2026"
      },
      "message": "[build] start the nightly grid build at release approval instead of after publish\n"
    },
    {
      "commit": "2aa90e832940d5f4d1c8fc3eacb8ce0a0a57b23f",
      "tree": "f307960abe4da9b70ff660aa0358243e0aa03429",
      "parents": [
        "ca4a42ab98ddde53d904692db8e1621b8026bee2"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titusfortner@users.noreply.github.com",
        "time": "Fri Sep 11 20:25:05 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Sep 11 20:25:05 2026"
      },
      "message": "[py] replace the blanket remote BiDi test suite with an opt-in list (#18023)\n\n* [py] remove the remote BiDi test targets and their CI job\n\n* [py] add an opt-in list for BiDi tests that also run through Grid\n\n* [py] source the opt-in remote BiDi suite only from REMOTE_BIDI_TESTS"
    },
    {
      "commit": "ca4a42ab98ddde53d904692db8e1621b8026bee2",
      "tree": "df55cee9b0a97b115de12e888780decd2887b4bb",
      "parents": [
        "27096ee1d8c016f3d1f2a6638b4c22df2aaf512f"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Fri Sep 11 18:54:07 2026"
      },
      "committer": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Fri Sep 11 19:04:00 2026"
      },
      "message": "[py] remove the webkitgtk and wpewebkit test targets\n\nthese tests require browsers that are not accessible to our build system\nwebkit team runs our tests with pytest instead of with bazel\n"
    },
    {
      "commit": "27096ee1d8c016f3d1f2a6638b4c22df2aaf512f",
      "tree": "38e58d64bb0c7493298197263618472d2b8962db",
      "parents": [
        "c959fe9216ab0a867ed6b549853af5c2ba44c17e"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titusfortner@users.noreply.github.com",
        "time": "Fri Sep 11 17:59:50 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Sep 11 17:59:50 2026"
      },
      "message": "[rb] cover BiDi key, wheel, release, and setFiles scenarios in the Input spec (#18022)"
    },
    {
      "commit": "c959fe9216ab0a867ed6b549853af5c2ba44c17e",
      "tree": "772741d5b5a3910d3eb9fa11ed7e61ac2c546f71",
      "parents": [
        "520392173ad5a4d62a48343ea5f0eea5caadb12f"
      ],
      "author": {
        "name": "joerg1985",
        "email": "16140691+joerg1985@users.noreply.github.com",
        "time": "Fri Sep 11 12:44:27 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Sep 11 12:44:27 2026"
      },
      "message": "[java] remove deprecated methods from the HttpClient interface (#17993)\n\nCo-authored-by: Diego Molina \u003cdiemol@users.noreply.github.com\u003e"
    },
    {
      "commit": "520392173ad5a4d62a48343ea5f0eea5caadb12f",
      "tree": "e8c556dedc05a4f0a2a0100ce76b6b5e1f7999fd",
      "parents": [
        "bce93ba48bf7abbadc446cf04b82c9f0b5e1debd"
      ],
      "author": {
        "name": "Selenium CI Bot",
        "email": "diemol+selenium-ci@gmail.com",
        "time": "Fri Sep 11 10:11:01 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Sep 11 10:11:01 2026"
      },
      "message": "[build] Automated Browser Version Update (#18021)\n\n* Update pinned browser versions\n\n* [java] ignore strict file interactability upload test on Edge 153+\n\nEdge 153+ raises a JavaScript focus error instead of\nElementNotInteractable for a hidden file input under\nstrictFileInteractability, mirroring the same regression already\nworked around for Chrome 153+ in this PR cycle (same Chromium base).\n\nCo-Authored-By: Claude Sonnet 5 \u003cnoreply@anthropic.com\u003e\nClaude-Session: https://claude.ai/code/session_01J37Z3wdLYFrgVhJjMma3Wr\n\n---------\n\nCo-authored-by: Selenium CI Bot \u003cselenium-ci@users.noreply.github.com\u003e\nCo-authored-by: Diego Molina \u003cdiemol@gmail.com\u003e\nCo-authored-by: Claude Sonnet 5 \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "bce93ba48bf7abbadc446cf04b82c9f0b5e1debd",
      "tree": "d3ec99b8f3fd70a14b73a866d0a7f50b79263361",
      "parents": [
        "08046d5a53f212973a4c93525a5e1fcf74d4bdd8"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Thu Sep 10 18:51:32 2026"
      },
      "committer": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Thu Sep 10 18:54:48 2026"
      },
      "message": "[docs] ADR 17786: mark accepted, link tracking issue #18020\n"
    },
    {
      "commit": "08046d5a53f212973a4c93525a5e1fcf74d4bdd8",
      "tree": "23e0dfebcba1233939fc0b088feb26e74959fa36",
      "parents": [
        "d5d21d0efd513239cb4c43301ad5ed16fd6263ab"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titusfortner@users.noreply.github.com",
        "time": "Thu Sep 10 18:48:09 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 10 18:48:09 2026"
      },
      "message": "[adr] Low-level WebDriver BiDi layer (#17786)\n\n* [docs] add ADR for binding-neutral BiDi low-level behavioral contract\n\n* drop envelope/body item from BiDi contract\n\n* drop shared-error-category requirement from BiDi contract; require only that malformed input raises\n\n* restructure decisions into representation, outbound, and inbound\n\n* allow a shared union carrier, define unresolvable as an undeclared discriminator\n\n* clarify fidelity is of the value, not its byte-form\n\n* value-based integer rule, simplify numeric range rule, clarify null-vs-omitted and error-response\n\n* define \"the spec\" as all published BiDi specs plus vendor-defined extensions\n\n* reject missing required inbound field, relaxable via project schema overrides\n\n* reject a scalar matching none of a union\u0027s literal variants"
    },
    {
      "commit": "d5d21d0efd513239cb4c43301ad5ed16fd6263ab",
      "tree": "90d706dd748cc823410af4e819c63540dfb662ee",
      "parents": [
        "4d27eb346cdda889df68b562d248dce9907630a3"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Thu Sep 10 18:35:55 2026"
      },
      "committer": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Thu Sep 10 18:38:47 2026"
      },
      "message": "[docs] ADR 17685: mark accepted, link tracking issue #18019, link record from Selenium 5 plan\n"
    },
    {
      "commit": "4d27eb346cdda889df68b562d248dce9907630a3",
      "tree": "d1f052a059b873a7693020a45d65d79f6feb5f0b",
      "parents": [
        "ea36522220ac43b898bc0f9b5a8e0d86801223ed"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titusfortner@users.noreply.github.com",
        "time": "Thu Sep 10 18:31:53 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 10 18:31:53 2026"
      },
      "message": "[adr] Network async/event API (#17685)\n\n* [adr] network handler behavior proposal\n\n* add handler registration surface\n\n* align URL-pattern names with existing UrlPattern class\n\n* settle url pattern inputs and split auth credentials\n\n* clarify auth handle removal and qualify body readability\n\n* specify interception, defer observation\n\n* error on double disposition, leave wire outcome unspecified on handler throw\n\n* update to intercept-by-default, URL pattern passthrough, context scoping, request-only body collection\n\n* clarify bindings may serialize URL patterns but not match or expand them\n\n* error locally on invalid URL pattern; note Playwright hangs on handler throw\n\n* scope handlers by top-level browsing context or user context, never both\n\n* fail the event on an uncaught handler exception instead of submitting it\n\n---------\n\nCo-authored-by: AutomatedTester \u003cdavid.burns@theautomatedtester.co.uk\u003e"
    },
    {
      "commit": "ea36522220ac43b898bc0f9b5a8e0d86801223ed",
      "tree": "1b0fddb0c6eaa930f3f608775b31756a10173e9a",
      "parents": [
        "98908d4a4a3fca87b2671b78d8b05c8918a6b393"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Thu Sep 10 16:39:03 2026"
      },
      "committer": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Thu Sep 10 16:40:02 2026"
      },
      "message": "[rb] register BiDi event callbacks on the bridge connection instead of driver.bidi in Protocol specs\n"
    },
    {
      "commit": "98908d4a4a3fca87b2671b78d8b05c8918a6b393",
      "tree": "f085693334ffcd0b64e269a1d12a5e42e6905a7c",
      "parents": [
        "3221998a079c074ffbdd5b9d999da1787e3c70a9"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Thu Sep 10 15:13:00 2026"
      },
      "committer": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Thu Sep 10 16:37:57 2026"
      },
      "message": "[build] only open the CDDL update PR when the projected BiDi schema changes\n"
    },
    {
      "commit": "3221998a079c074ffbdd5b9d999da1787e3c70a9",
      "tree": "6d46a6ec3b45ddc8dfcb2b156aa0a1ddb7aade75",
      "parents": [
        "133a66a119c7f5ff612e6098712ab0a1f91cd42e"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titusfortner@users.noreply.github.com",
        "time": "Thu Sep 10 15:55:56 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 10 15:55:56 2026"
      },
      "message": "[build] move Selenium Manager publishing into sm-snapshot.yml so releases no longer skip it (#18017)\n\n* [build] move Selenium Manager publishing into sm-snapshot.yml so releases no longer skip it\n\n* [build] queue sm-snapshot runs per branch so a slower older run cannot publish over a newer one"
    },
    {
      "commit": "133a66a119c7f5ff612e6098712ab0a1f91cd42e",
      "tree": "a481efb32408c3be30bb48ced3108acf48f72505",
      "parents": [
        "84b08bcc576ab8232a5266d6513418aea4cf261a"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titusfortner@users.noreply.github.com",
        "time": "Thu Sep 10 15:54:18 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 10 15:54:18 2026"
      },
      "message": "[build] merge the release PR automatically once required checks pass (#18018)\n\n* [build] merge the release PR automatically once required checks pass\n\n* [build] notify when the release PR cannot be merged and only auto-merge the bot\u0027s PR"
    },
    {
      "commit": "84b08bcc576ab8232a5266d6513418aea4cf261a",
      "tree": "3798cf9aa12dec2ad0c10a57ff453d1ea13b6795",
      "parents": [
        "b946ffcc00a9f1d6edcc58abe553eb611c0bb82b"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titusfortner@users.noreply.github.com",
        "time": "Thu Sep 10 15:14:07 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 10 15:14:07 2026"
      },
      "message": "[build] only need to run nightly Grid release after production release (#18013)\n\n* [build] recreate the nightly Grid release from the release packages instead of running the full nightly after a release\n\n* [build] package the nightly Grid under the nightly version so the mirror and Selenium Manager still find it"
    },
    {
      "commit": "b946ffcc00a9f1d6edcc58abe553eb611c0bb82b",
      "tree": "24e55cdbc924832efd0c7a52c04ef88d9b59a136",
      "parents": [
        "754c31eef72da365a77e2c80dbbf162d34bcad8e"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Wed Sep 09 20:47:04 2026"
      },
      "committer": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Thu Sep 10 13:38:53 2026"
      },
      "message": "[build] reorder packaging task to be more logically consistent\n"
    },
    {
      "commit": "754c31eef72da365a77e2c80dbbf162d34bcad8e",
      "tree": "c20d20d31e6cb812f2f14a1bd4fa25ffbd6b9e8b",
      "parents": [
        "6724d9563d5db09cd0c64d406fc2f992327b8cfa"
      ],
      "author": {
        "name": "Selenium CI Bot",
        "email": "diemol+selenium-ci@gmail.com",
        "time": "Thu Sep 10 08:48:19 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 10 08:48:19 2026"
      },
      "message": "[build] Automated Browser Version Update (#18014)\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": "6724d9563d5db09cd0c64d406fc2f992327b8cfa",
      "tree": "6895515c5d5049112c83f5c12d6a0dd1191c944c",
      "parents": [
        "971e8bf33858f7661fd03bcdb0ae1bfc45c965a0"
      ],
      "author": {
        "name": "Nikolay Borisenko",
        "email": "22616990+nvborisenko@users.noreply.github.com",
        "time": "Thu Sep 10 08:34:29 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 10 08:34:29 2026"
      },
      "message": "[dotnet] [bidi] Add image size to capture screenshots (#18016)"
    },
    {
      "commit": "971e8bf33858f7661fd03bcdb0ae1bfc45c965a0",
      "tree": "8386d7df55e1a47f2400de8aef8085980e4a9c93",
      "parents": [
        "e56ba7da570a1c7d08aaec771e69a4491771b156"
      ],
      "author": {
        "name": "Selenium CI Bot",
        "email": "diemol+selenium-ci@gmail.com",
        "time": "Thu Sep 10 08:24:11 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 10 08:24:11 2026"
      },
      "message": "[build] Automated CDDL Spec Update (#18015)\n\nupdate cddl spec files\n\nCo-authored-by: Selenium CI Bot \u003cselenium-ci@users.noreply.github.com\u003e"
    },
    {
      "commit": "e56ba7da570a1c7d08aaec771e69a4491771b156",
      "tree": "723c8d60001863570045e827181c93fe3c99cef2",
      "parents": [
        "abc6eec11ae4284e1f1c51b89f0e89dc4f82d28c"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Wed Sep 09 17:34:13 2026"
      },
      "committer": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Wed Sep 09 20:01:45 2026"
      },
      "message": "[build] start the Selenium Manager release build after the CDP check instead of after the trunk lock\n"
    },
    {
      "commit": "abc6eec11ae4284e1f1c51b89f0e89dc4f82d28c",
      "tree": "2656b318502587d4acc45ff3bb4c3c602dc2828f",
      "parents": [
        "eebe911f8d3728d97661b1b5ef9030fa45f9704c"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Wed Sep 09 19:50:01 2026"
      },
      "committer": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Wed Sep 09 19:50:01 2026"
      },
      "message": "[build] build all Java release targets in one Bazel invocation\n"
    },
    {
      "commit": "eebe911f8d3728d97661b1b5ef9030fa45f9704c",
      "tree": "c592b1b65a9bc0822151bf8b6aaadb5d56ecb076",
      "parents": [
        "135dd70a8da854e1d7fa1cbd00260fe01a739af7"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Wed Sep 09 19:48:14 2026"
      },
      "committer": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Wed Sep 09 19:48:14 2026"
      },
      "message": "[build] support passing multiple targets to bazel execute\n"
    },
    {
      "commit": "135dd70a8da854e1d7fa1cbd00260fe01a739af7",
      "tree": "4ae1ca9c3057a3165ffd35b4b075064fb183bcf6",
      "parents": [
        "ca5effb3a231b033b7540a732baca908f43d795f"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Wed Sep 09 17:34:13 2026"
      },
      "committer": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Wed Sep 09 19:35:31 2026"
      },
      "message": "[build] do not compute test targets for a release\n"
    },
    {
      "commit": "ca5effb3a231b033b7540a732baca908f43d795f",
      "tree": "42cc4d007daa9059f5bc35fc0317770cc4bdb4d9",
      "parents": [
        "e44e60b4f7710b7df923ac3382c2bddebb6e381f"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Wed Sep 09 19:02:45 2026"
      },
      "committer": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Wed Sep 09 19:13:30 2026"
      },
      "message": "[rust] drop stale note that Selenium Manager cannot be built locally on Windows\n"
    },
    {
      "commit": "e44e60b4f7710b7df923ac3382c2bddebb6e381f",
      "tree": "2d5db304948c2b67d4fd7c58bd6a6167d597f3a2",
      "parents": [
        "cec4b033007c300de9880e89d0430a5cad892f98"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Wed Sep 09 15:59:29 2026"
      },
      "committer": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Wed Sep 09 17:38:49 2026"
      },
      "message": "[build] pass secrets to the release verify job so it can query Sonatype\n"
    },
    {
      "commit": "cec4b033007c300de9880e89d0430a5cad892f98",
      "tree": "9eb859f03e77df96c3bd4048d74c8ebcc7dfafe1",
      "parents": [
        "56636caafb3e7f7b0cb06c2ef4a994efc7c05b19"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Wed Sep 09 15:26:54 2026"
      },
      "committer": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Wed Sep 09 17:32:20 2026"
      },
      "message": "[build] retry the Bazel run once after a transient download failure\n"
    },
    {
      "commit": "56636caafb3e7f7b0cb06c2ef4a994efc7c05b19",
      "tree": "7cc6fcabdf87e47a485f0464f0be43401a636e1e",
      "parents": [
        "60238b408a048d5e48f7b5a3c989e6436269cd73"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Wed Sep 09 15:26:54 2026"
      },
      "committer": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Wed Sep 09 16:10:59 2026"
      },
      "message": "[build] key the repository cache on its trigger files and cache the Selenium Manager binaries\n"
    },
    {
      "commit": "60238b408a048d5e48f7b5a3c989e6436269cd73",
      "tree": "2c0cc4117e151fed8febc2abb086743eddbc7f6e",
      "parents": [
        "0a5e0e73a688360ac3cdfe4af8be7a5c91b23878"
      ],
      "author": {
        "name": "Selenium CI Bot",
        "email": "selenium-ci@users.noreply.github.com",
        "time": "Wed Sep 09 15:45:10 2026"
      },
      "committer": {
        "name": "Selenium CI Bot",
        "email": "selenium-ci@users.noreply.github.com",
        "time": "Wed Sep 09 15:45:10 2026"
      },
      "message": "Update mirror info (Wed Sep  9 15:45:10 UTC 2026)\n"
    },
    {
      "commit": "0a5e0e73a688360ac3cdfe4af8be7a5c91b23878",
      "tree": "18ba60aef0d63a0f96d32a15b6add59bd3bbaeea",
      "parents": [
        "bedb24f6f703876e7e4c5d506f0d697eb358c720"
      ],
      "author": {
        "name": "Selenium CI Bot",
        "email": "selenium-ci@users.noreply.github.com",
        "time": "Wed Sep 09 15:37:36 2026"
      },
      "committer": {
        "name": "Selenium CI Bot",
        "email": "selenium-ci@users.noreply.github.com",
        "time": "Wed Sep 09 15:37:36 2026"
      },
      "message": "[build] Reset versions to nightly after selenium-4.49.0 release\n"
    },
    {
      "commit": "bedb24f6f703876e7e4c5d506f0d697eb358c720",
      "tree": "38bc06fac98487c501c95d95130557ca9959c609",
      "parents": [
        "2cd4ec2aae79f3aeaf6947c63182a3a022f0e9f4"
      ],
      "author": {
        "name": "Selenium CI Bot",
        "email": "diemol+selenium-ci@gmail.com",
        "time": "Wed Sep 09 15:27:34 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 09 15:27:34 2026"
      },
      "message": "[build] Prepare for release of selenium-4.49.0 (#18012)\n\n* bump versions\n\n* changelogs updated\n\n* rust changelogs updated\n\n* update selenium manager versions\n\n* update authors file\n\n---------\n\nCo-authored-by: Selenium CI Bot \u003cselenium-ci@users.noreply.github.com\u003e"
    },
    {
      "commit": "2cd4ec2aae79f3aeaf6947c63182a3a022f0e9f4",
      "tree": "2c9de5f18863ad979aee9bbb27e04872677a149a",
      "parents": [
        "db9eac2aa72e28a2817fb9c29395aa446d64d305"
      ],
      "author": {
        "name": "David Burns",
        "email": "david.burns@theautomatedtester.co.uk",
        "time": "Wed Sep 09 13:41:50 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 09 13:41:50 2026"
      },
      "message": "[py] adopt the worthwhile ruff 0.16 rule families (tranches 1 and 2) (#17992)\n\n* [py] enforce the mechanical ruff rule families from ruff 0.16 (#17989)\n\nTranche 1 of #17989. Adds the rule families whose findings are pure local\nrewrites, and fixes the 20 findings so //py:ruff-check stays green.\n\nAdopted as whole families (verified clean at full-family scope): C4, FLY, W.\nAdopted as individual rules, because the rest of their family is far noisier\nthan the subset ruff 0.16 enables by default: FURB122, FURB167, FURB188,\nFURB192, PERF102. For scale, whole-family PLR is 332 findings (251 of them\nPLR2004) against 4 in the default set, and whole-family FURB/PERF are 29/19\nagainst 10/2 -- so select entries have to be rule codes there, not family\nnames.\n\nFixes:\n- FURB188 x4 generate_bidi.py: removeprefix/removesuffix\n- FURB122 x2 generate.py, firefox_profile.py: writelines\n- FURB167 x2 update_cddl.py: re.S -\u003e re.DOTALL\n- FURB192 x2 pinned_browsers.py, update_cdp.py: sorted(...)[-1] -\u003e max(...)\n- C400 x2, C408 x2, C417, C419, C420: comprehension rewrites\n- PERF102 x2 cdp.py: .items() -\u003e .values()\n- FLY002 remote_server_tests.py: static join -\u003e literal\n\nNote on FURB192: sorted(...)[-1] and max(...) disagree when two entries tie on\nthe sort key -- a stable sort returns the last tied element, max the first.\nBoth call sites pick the newest chrome-for-testing build within a milestone,\nwhere version strings are unique, so this is inert in practice. Calling it out\nbecause it is the only behavioural change in the commit.\n\nThe comprehension rewrites in webdriver.py touch _wrap_value/_unwrap_value and\nthe one in _script_handlers.py feeds a BiDi preload script, so those were\nchecked for equivalence against the pre-change code over a generated input\ncorpus before being applied. bazel test --test_size_filters\u003dsmall //py:unit\npasses 32/32; //py:ruff-check and //py:ruff-format --check are clean.\n\nDeliberately not adopted here: FURB110 (18, if-exp -\u003e or, a readability\nregression as often as not) and the rest of PERF (PERF401/403 comprehension\nrewrites, PERF203 try-except-in-loop), which are loop-shape changes rather\nthan mechanical ones.\n\n* [py] settle shebang/exec-bit consistency and enforce ruff EXE (#17989)\n\nTranche 1 of #17989, split out from the mechanical-rewrite commit because it is\nthe only part that changes git file modes.\n\nSix files disagreed with themselves about whether they are directly\nexecutable. All six are py_binary srcs, invoked through Bazel\n(./go update_cddl -\u003e bazel run //scripts:update_cddl) or with an explicit\ninterpreter (py/tox.ini uses {envpython} ./generate_api_module_listing.py), so\nnone of them ever relies on its shebang. Resolved all six the same way -- not\ndirectly executable:\n\n- chmod -x (100755 -\u003e 100644), which clears EXE002:\n  py/generate_api_module_listing.py, py/generate_bidi.py, py/run_mypy.py,\n  py/run_sphinx_autogen.py\n- drop the now-unused shebang, which clears EXE001:\n  scripts/update_cddl.py, scripts/update_docfx.py\n\n//scripts:update_cddl, //scripts:update_docfx, //py:generate-api-listing,\n//py:generate_bidi, //py:mypy and //py:sphinx-autogen all still build.\n\n* [py] replace the assert 1 \u003d\u003d 0 idiom with pytest.raises and enforce PLR0133 (#17989)\n\nTranche 1 of #17989. All four PLR0133 (comparison-of-constant) findings are the\nsame shape in visibility_tests.py:\n\n    try:\n        element.click()\n        assert 1 \u003d\u003d 0, \"should have thrown an exception\"\n    except (ElementNotVisibleException, ElementNotInteractableException):\n        pass\n\nwhich is pytest.raises spelled the long way round, and reports \"assert 1 \u003d\u003d 0\"\nrather than \"DID NOT RAISE\" when the expectation is not met. Converted all four\nto a with pytest.raises(...) block. PT011 and PT012 are already in\nextend-ignore, so the tuple form and the trailing assert in the send_keys test\nneed no further exemption.\n\nAdds PLR0133 as an individual rule rather than the PLR family: whole-family PLR\nis 332 findings (251 of them PLR2004 magic-value-comparison), and it also\ncarries PLR0913/PLR0917 (too-many-arguments / -positional-arguments, 45 hits)\nwhich land on public constructor signatures the API-compatibility invariant\nprotects.\n\n//py:test/selenium/webdriver/common/visibility_tests-chrome passes 15/15, with\nall four converted tests confirmed as run rather than skipped.\n\n* [py] enforce ruff PIE and PLE (#17989)\n\nTranche 1 of #17989. Both families are small and clean at whole-family scope,\nso they go in as bare family names.\n\nPIE790 x5 -- dropped the unnecessary `pass` after a docstring in cdp.py,\nwebdriver.py (start_client/stop_client), webelement.py (BaseWebElement) and\nthe test webserver. Safe autofix.\n\nThe remaining four findings are false positives, suppressed with a `noqa` and\na reason rather than \"fixed\":\n\n- PIE796 x3, generate_bidi.py CddlType: the duplicate Enum values are\n  deliberate aliases (TEXT-\u003eTSTR, INT/NINT-\u003eUINT), and get_annotation already\n  resolves them through `__members__`, which includes aliases. The bug this\n  rule would have caught was fixed in 9d0ae9e68f; what is left is the intended\n  pattern, so the comment now says so explicitly.\n- PLE0605 x1, webdriver/__init__.py: `__all__ \u003d sorted(_LAZY_IMPORTS.keys())`.\n  sorted() returns a list, so this is correct at runtime; the rule only accepts\n  a literal. The usual argument for a literal is static readability, but\n  __init__.pyi already re-exports every name explicitly with `as` aliases, so\n  type checkers never read this line. Deriving __all__ from _LAZY_IMPORTS is\n  what stops the two from drifting at runtime, so it stays.\n\nNote for reviewers: nothing currently asserts that __init__.pyi\u0027s re-export\nlist and _LAZY_IMPORTS agree. That gap is worth its own change; it is not\nintroduced here.\n\nVerified: regenerating the BiDi sources with this generator produces output\nbyte-identical to trunk\u0027s across all 22 files, apart from the one\n_script_handlers.py line changed deliberately in the mechanical commit.\n//py:unit passes 32/32, including BaseWebElement\u0027s ABC subclass/register\nbehaviour and the start_client/stop_client no-op hooks whose `pass` was\nremoved.\n\n* [py] enforce ruff bugbear (B) with carve-outs (#17989)\n\nTranche 2 of #17989. Adopts B as a family rather than a list of rule codes, so\nthat new bugbear rules in a future ruff release surface as one review decision\ninstead of arriving silently. Whole-family B is 59 findings against the 33 ruff\n0.16 enables by default, so four rules are listed in extend-ignore.\n\nFixed (7):\n- B009 x5 / B010 x1 -- constant getattr/setattr in print_page_options.py,\n  proxy.py and timeouts.py. Safe autofix. proxy.py\u0027s is inside a descriptor\u0027s\n  __set__; proxyType is a plain class attribute rather than another descriptor,\n  so direct assignment is equivalent, and the dynamic setattr(obj, self.name, ...)\n  on the next line is left alone.\n- B006 x1 -- javascript/private/gen_file.py `def main(argv\u003d[])`. The default is\n  unreachable in practice (the only caller is `main(sys.argv)`) and would\n  IndexError on argv[1] if it were ever used, so it is dropped rather than\n  replaced with a None sentinel.\n- B018 x1 -- click_scrolling_tests.py accessed `.size` for its side effect to\n  prove that reading it does not scroll; now `_ \u003d ...` so the intent is explicit.\n\nCarved out via per-file-ignores (18):\nB018 under py/test/** and in py/conftest.py. 17 of the 19 findings are a\nproperty access inside `with pytest.raises(...)`, which is the idiomatic way to\nassert that reading a property raises; the 19th is the driver-liveness probe in\nconftest.py. Note that conftest.py is not under py/test/**, so the pattern\nsuggested on the issue would have missed it. Both globs resolve against the\nworking directory rather than this file, which is why they are spelled\n\"py/...\" -- there is now a comment saying so, because they silently stop\nmatching if ruff is invoked from inside py/.\n\nDeferred via extend-ignore:\n- B904 (17) raise-without-from-inside-except. This is the highest-value rule in\n  the whole 184-finding set for a library -- it materially improves user\n  tracebacks -- but it is 16 findings in py/selenium and deserves its own change\n  rather than being bundled into a lint-config commit.\n- B017 (7) pytest.raises(Exception). Narrowing each site needs the actual\n  exception type confirmed against a live browser (three are BiDi tests, where\n  8cbf4bfa2d\u0027s typed errors make narrowing most valuable), so it is deferred\n  rather than guessed.\n- B028 (4), B007 (3), B024 (2).\n\n//py:unit passes 32/32. //javascript/chrome-driver:header, :source and\n//javascript/ie-driver:header build clean, covering the gen_file.py change.\n\n* [py] narrow pytest.raises(Exception) and enforce B017 (#17989)\n\nTranche 2 of #17989, completing the bugbear adoption by dropping B017 from\nextend-ignore. Each exception type was confirmed by running the Bazel test\ntarget with a deliberately wrong assertion and reading the type back out of the\nfailure, rather than by guessing:\n\n- proxy_tests.py x2 -\u003e ValueError, from Proxy._verify_proxy_type_compatibility.\n- executing_javascript_tests.py -\u003e TypeError. Passing the driver as a script\n  argument is rejected by json.dumps client-side, before any command is sent.\n- _bidi/browsing_context_tests.py x2 -\u003e NoSuchFrameException, for get_tree on a\n  closed context.\n- _bidi/script_tests.py -\u003e NoSuchHandleException, for call_function on a\n  disowned handle.\n\nThe two BiDi files are where this is most worth having: 8cbf4bfa2d added typed\nerrors for BiDi wire error codes, so these assertions now pin the exact code\nthe spec requires instead of accepting anything at all.\n\nquit_tests.py needed a tuple. Which error surfaces after driver.quit() depends\non what is left listening -- against a local driver the process is gone and\nurllib3 raises MaxRetryError, while against a Grid the server is still up and\nthe session lookup fails with InvalidSessionIdException. Both were confirmed by\nrunning quit_tests-chrome and quit_tests-chrome-remote. Worth noting for a\nseparate change: MaxRetryError is a raw urllib3 error escaping the public API,\nand arguably ought to be wrapped in a WebDriverException.\n\nVerified: proxy_tests-chrome, quit_tests-chrome, quit_tests-chrome-remote and\nexecuting_javascript_tests-chrome all pass. In the BiDi suites the four\nnarrowed tests passed 6/6 across repeat runs; the one failure in those files is\ntest_activate_browsing_context, which fails roughly one run in two both here\nand on trunk (asynchronous focus handover) and is unrelated to this change.\n//py:ruff-check clean, //py:unit 32/32."
    },
    {
      "commit": "db9eac2aa72e28a2817fb9c29395aa446d64d305",
      "tree": "4d3b3587547840664c4670ff12b2b42a6132fb00",
      "parents": [
        "595708021794b6f74719d42cbf374116b29e0b2f"
      ],
      "author": {
        "name": "joerg1985",
        "email": "16140691+joerg1985@users.noreply.github.com",
        "time": "Wed Sep 09 13:18:52 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 09 13:18:52 2026"
      },
      "message": "[java] remove let\u0027s guess URI encoding (#17995)\n\nCo-authored-by: Titus Fortner \u003ctitusfortner@users.noreply.github.com\u003e\nCo-authored-by: Diego Molina \u003cdiemol@users.noreply.github.com\u003e"
    },
    {
      "commit": "595708021794b6f74719d42cbf374116b29e0b2f",
      "tree": "e966d128d01deac463f97d51e14110d075c90f83",
      "parents": [
        "0536451d5b340478614e5a2fdba898dec3e59e3a"
      ],
      "author": {
        "name": "Dennis Ameling",
        "email": "dennis@dennisameling.com",
        "time": "Wed Sep 09 13:01:07 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 09 13:01:07 2026"
      },
      "message": "[rust] Add support for Chrome arm64 on Linux (#17915)\n\n* [rust] Add support for Chrome arm64 on Linux\n\n* move arm from ARM64 to ARMV7\n\n---------\n\nCo-authored-by: Corey Goldberg \u003c1113081+cgoldberg@users.noreply.github.com\u003e"
    },
    {
      "commit": "0536451d5b340478614e5a2fdba898dec3e59e3a",
      "tree": "69a8c3058fc8bb004bc127ef15956584da6b29f2",
      "parents": [
        "27d2cb1fc4c468ae39d9e389e630125ac748328c"
      ],
      "author": {
        "name": "Selenium CI Bot",
        "email": "diemol+selenium-ci@gmail.com",
        "time": "Wed Sep 09 12:41:06 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 09 12:41:06 2026"
      },
      "message": "[build] Automated Browser Version Update (major) with CDP (#18005)\n\n* Update pinned browser versions\n\n* [java][js] ignore strict file interactability upload tests on Chrome 153+ which raises a focus error instead of ElementNotInteractable\n\n---------\n\nCo-authored-by: Selenium CI Bot \u003cselenium-ci@users.noreply.github.com\u003e\nCo-authored-by: Titus Fortner \u003ctitusfortner@users.noreply.github.com\u003e\nCo-authored-by: Titus Fortner \u003ctitus.fortner@gmail.com\u003e\nCo-authored-by: Diego Molina \u003cdiemol@users.noreply.github.com\u003e"
    },
    {
      "commit": "27d2cb1fc4c468ae39d9e389e630125ac748328c",
      "tree": "2f57243cd5bbe7b80be79cd0e3bfb16919f892c6",
      "parents": [
        "589fab920dfcd48462aafc9e35ca941598223d15"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Wed Sep 09 12:10:39 2026"
      },
      "committer": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Wed Sep 09 12:15:48 2026"
      },
      "message": "[build] clear the restored repository cache before populating so saves are not additive\n"
    },
    {
      "commit": "589fab920dfcd48462aafc9e35ca941598223d15",
      "tree": "456d260451be3ff0d56c802c3e4ca0ffe13bc934",
      "parents": [
        "92394dcf7b0effa4d0a2791c9f5885eb0827bb19"
      ],
      "author": {
        "name": "shubmittal",
        "email": "shubhra.goel@gmail.com",
        "time": "Wed Sep 09 11:25:12 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 09 11:25:12 2026"
      },
      "message": "[rust] Add license and notice links to Selenium Manager help (#17986)\n\n* [rust] Add legal links to manager help\n\nExpose the Selenium LICENSE and NOTICE URLs in --help and cover the output with a focused regression test.\n\nRelated to #16113\n\n* [rust] Embed legal texts in manager binary\n\nAdd --license to print the full embedded LICENSE and NOTICE texts without requiring network access.\n\nRelated to #16113\n\n* [rust] Make embedded legal files package-safe\n\nInclude package-local LICENSE and NOTICE copies for Cargo archives and\nverify they stay synchronized with the canonical repository files.\n\nRelated to #16113\n\n---------\n\nCo-authored-by: shubmittal \u003c11534734+shubmittal@users.noreply.github.com\u003e\nCo-authored-by: Diego Molina \u003cdiemol@users.noreply.github.com\u003e"
    },
    {
      "commit": "92394dcf7b0effa4d0a2791c9f5885eb0827bb19",
      "tree": "274ab1347692b22daff563f83e5dff496f379fab",
      "parents": [
        "b79578a5847724e6068c2b398ddb031489b82f21"
      ],
      "author": {
        "name": "David Burns",
        "email": "david.burns@theautomatedtester.co.uk",
        "time": "Wed Sep 09 10:03:02 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 09 10:03:02 2026"
      },
      "message": "[py] add BiDi upload tests that verify files actually reach the server (#18007)\n\nThe existing `input.setFiles` tests stop at the file input\u0027s `value`\nproperty, which only shows the filename string was accepted. Classic\n`upload_tests.py` submits the form and reads what the endpoint echoed\nback, so it proves the bytes were transmitted; the BiDi tests did not.\n\nAdd three tests to the `_bidi` input suite:\n\n- `test_set_files_posts_file_to_server` and its two-file variant mirror\n  the classic upload tests, asserting the endpoint echoed back both the\n  filename and the file content.\n- `test_type_and_set_files_in_same_form` covers filling a form the way a\n  user does, typing into a text field and attaching a file in one flow.\n  It also asserts `#fileResults` changed, so a real `change` event has\n  to fire rather than just a value write.\n\n\nCopse-Models: acp:claude-agent-acp#opus[1m]\n\nCo-authored-by: Copse \u003cnoreply@copse.dev\u003e"
    },
    {
      "commit": "b79578a5847724e6068c2b398ddb031489b82f21",
      "tree": "f95efde46c877a49df1940a795cbe5dc0a747074",
      "parents": [
        "dfea91ab61180f0a99d20e7b1a65239b111ae34b"
      ],
      "author": {
        "name": "David Burns",
        "email": "david.burns@theautomatedtester.co.uk",
        "time": "Wed Sep 09 10:02:40 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 09 10:02:40 2026"
      },
      "message": "[build] Upgrade rules_rs to 0.0.109 and @llvm to 0.8.19 (#17929)\n\nFollow-on to #17997 (0.0.108/0.8.18). Bumps rules_rs (which vendors\nrules_rust) and @llvm (LLVM 23.1.0). Trunk\u0027s rules_rust\ndebug-prefix-map patch still applies against 0.0.109\u0027s vendored\nrules_rust. Validated with a clean //rust:selenium-manager build on\nmacOS."
    },
    {
      "commit": "dfea91ab61180f0a99d20e7b1a65239b111ae34b",
      "tree": "971be322a1bbb076179e8a52e373bdb88677027e",
      "parents": [
        "786f89ce87324f94015bb44633ce3c0ae8045d12"
      ],
      "author": {
        "name": "David Burns",
        "email": "david.burns@theautomatedtester.co.uk",
        "time": "Wed Sep 09 08:58:55 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 09 08:58:55 2026"
      },
      "message": "[build] add Launchpad fallback for the rules_rs zlib .deb fetch (#18006)\n\nrules_rs downloads a version-pinned zlib1g .deb from a single\nsnapshot.ubuntu.com URL while setting up the Linux Rust toolchain.\nWhen that host returns 502/503/timeouts the failure happens during\nrepository setup and aborts Bazel analysis, red-lining every\nRust-touching job at once.\n\nAdd a downloader config that keeps snapshot.ubuntu.com primary and\nfalls back to Launchpad, which serves the identical, sha256-matching\n.deb by filename. The sha256 check is unchanged, and the rewrite is\nversion-independent so it survives future rules_rs bumps."
    },
    {
      "commit": "786f89ce87324f94015bb44633ce3c0ae8045d12",
      "tree": "0d76be0db32b463d3f8f8f9cbca4a434e997afab",
      "parents": [
        "70689a4d53aad0a1bf2002d28024db75b83ea8ce"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Wed Sep 09 00:50:55 2026"
      },
      "committer": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Wed Sep 09 00:55:42 2026"
      },
      "message": "[dotnet] use Fetch domain in CDP interception test since Network.setRequestInterception deprecated\n"
    },
    {
      "commit": "70689a4d53aad0a1bf2002d28024db75b83ea8ce",
      "tree": "702191078e98681d8b33d36ca723b387f41616d8",
      "parents": [
        "96a38b5715c50861c5bdce5f3b4b71d04ac5b256"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Tue Sep 08 23:27:45 2026"
      },
      "committer": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Tue Sep 08 23:43:32 2026"
      },
      "message": "[build] fetch CDP protocol files through the GitHub API when a token is available\n"
    },
    {
      "commit": "96a38b5715c50861c5bdce5f3b4b71d04ac5b256",
      "tree": "9c3220a348e733951e34219249ec9c239b738f67",
      "parents": [
        "52cc0e8ae0325cf2581c4f13010428d4645d1b44"
      ],
      "author": {
        "name": "joerg1985",
        "email": "16140691+joerg1985@users.noreply.github.com",
        "time": "Tue Sep 08 22:41:30 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 08 22:41:30 2026"
      },
      "message": "[java] remove try-catch while opening a new window #17754 (#17996)\n\n* [java] remove try-catch while opening a new window #17754\n\n* [java] fix the unit test"
    },
    {
      "commit": "52cc0e8ae0325cf2581c4f13010428d4645d1b44",
      "tree": "c01ec0b77b3ad0d8147e37d2a0229b93802a82bc",
      "parents": [
        "0aaee1e6a990a8383ae04dfb607924f2cd1bc19f"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Tue Sep 08 19:50:26 2026"
      },
      "committer": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Tue Sep 08 20:58:25 2026"
      },
      "message": "[build] update Selenium Manager pins to the arm64-named release\n"
    },
    {
      "commit": "0aaee1e6a990a8383ae04dfb607924f2cd1bc19f",
      "tree": "609fb0643f95ac94422526c740c633eabe0ef957",
      "parents": [
        "438558bea676913a4d901c9930678ef660d79799"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titusfortner@users.noreply.github.com",
        "time": "Tue Sep 08 19:22:58 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 08 19:22:58 2026"
      },
      "message": "[build] ship prebuilt Selenium Manager Linux arm64 binary in all bindings (#17999)\n\n* [build] ship prebuilt Selenium Manager Linux arm64 binary in all bindings\n\n* [build] run the Ruby Selenium Manager smoke tests on a Linux arm64 runner"
    },
    {
      "commit": "438558bea676913a4d901c9930678ef660d79799",
      "tree": "5acea05dabda200f5f715466fcd7a84d4879d13b",
      "parents": [
        "e92d6a3eae5c015fa4fe539ccd1047e41d37c66b"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titusfortner@users.noreply.github.com",
        "time": "Tue Sep 08 19:21:03 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 08 19:21:03 2026"
      },
      "message": "[build] run Rust tests and build Selenium Manager from source on Windows (#17998)\n\n* [build] use an msvc exec platform with the autoconfigured cc toolchain on Windows\n\n* [build] shorten rules_rs toolchain directory names to stay under Windows MAX_PATH\n\n* [build] build Selenium Manager from source on Windows again"
    },
    {
      "commit": "e92d6a3eae5c015fa4fe539ccd1047e41d37c66b",
      "tree": "98a822d1a8bd6c6a4e3660ed93af955da7cfc041",
      "parents": [
        "c7562874337c9a202a84dcc0fae215a811d95aa3"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Tue Sep 08 18:05:20 2026"
      },
      "committer": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Tue Sep 08 18:06:18 2026"
      },
      "message": "[build] verify Java releases by Sonatype deployment state instead of Maven Central sync\n"
    },
    {
      "commit": "c7562874337c9a202a84dcc0fae215a811d95aa3",
      "tree": "cc6d9bb2824132ae6d5abb1b67aeea643a231fff",
      "parents": [
        "59ea9e026420a20e952b734fc5e07d985f363af8"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titusfortner@users.noreply.github.com",
        "time": "Tue Sep 08 17:27:40 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 08 17:27:40 2026"
      },
      "message": "[dotnet] only embed the git revision in SourceLink metadata when stamping (#18004)"
    },
    {
      "commit": "59ea9e026420a20e952b734fc5e07d985f363af8",
      "tree": "276ff1b5f6a5edfd186b1212af5fafa54edf189a",
      "parents": [
        "fb8ae461e1b213ae93fe9273ad49131c9a460878"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Tue Sep 08 16:37:27 2026"
      },
      "committer": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Tue Sep 08 16:38:06 2026"
      },
      "message": "[rb] stop serializing BiDi and DevTools specs under remote execution\n"
    },
    {
      "commit": "fb8ae461e1b213ae93fe9273ad49131c9a460878",
      "tree": "129c29123b09ff89f951d156acb9a773db7e3b3f",
      "parents": [
        "6147f47ca1bcc222f74722fb9f15d1cd5411ca7c"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titusfortner@users.noreply.github.com",
        "time": "Tue Sep 08 16:33:38 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 08 16:33:38 2026"
      },
      "message": "[build] populate linux bazel cache from gh-cache workflow instead of RBE (#18003)"
    },
    {
      "commit": "6147f47ca1bcc222f74722fb9f15d1cd5411ca7c",
      "tree": "7afb295c21a70a9e583bb628ee9979e21abceec8",
      "parents": [
        "2914f739469c97ba179a023d2443d3ac801bb681"
      ],
      "author": {
        "name": "aayushisabharwal",
        "email": "aayushi.sabharwal@gmail.com",
        "time": "Tue Sep 08 15:00:21 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 08 15:00:21 2026"
      },
      "message": "[py] remove stale xfail markers from python tests (#18002)\n\n[py] remove stale xfail markers from window size/position tests\n\nThe xfail_edge markers on the window size/position tests were added in\n#15638 without a reason or linked issue, and the xfail_chrome,\nxfail_firefox and xfail_remote markers next to them cite a geckodriver\nwindow-positioning bug that no longer reproduces on CI.\n\nWith all of these markers removed, window_tests.py and\napi_example_tests.py pass on chrome, firefox and edge on Windows and\non chrome and firefox through a Grid on Linux, across several runs.\nThe Edge tests also pass locally on macOS.\n\nThe xfail_safari markers are untouched, as are the markers on the two\nlogging tests, which still raise AttributeError outside Chromium.\n\nCo-authored-by: aayushisabharwal \u003c174711043+aayushisabharwal@users.noreply.github.com\u003e\nCo-authored-by: Diego Molina \u003cdiemol@users.noreply.github.com\u003e"
    },
    {
      "commit": "2914f739469c97ba179a023d2443d3ac801bb681",
      "tree": "7a385cc191ea28c3375a9a01c203a68975745e58",
      "parents": [
        "6776d3704981cd39df18046739bfea3b1e6795fa"
      ],
      "author": {
        "name": "Selenium CI Bot",
        "email": "diemol+selenium-ci@gmail.com",
        "time": "Tue Sep 08 12:19:10 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 08 12:19:10 2026"
      },
      "message": "[build] Automated Browser Version Update (#18000)\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": "6776d3704981cd39df18046739bfea3b1e6795fa",
      "tree": "03042d053cc1f7428b8557934230a79b7fd98275",
      "parents": [
        "f4721fddc0158a20d0e31397e89ca1c1bbe72991"
      ],
      "author": {
        "name": "Selenium CI Bot",
        "email": "diemol+selenium-ci@gmail.com",
        "time": "Tue Sep 08 11:13:03 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 08 11:13:03 2026"
      },
      "message": "[build] Automated CDDL Spec Update (#17990)\n\nupdate cddl spec files\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": "f4721fddc0158a20d0e31397e89ca1c1bbe72991",
      "tree": "d37be6ab6647bb26fb37a89972e33f380af16da2",
      "parents": [
        "1303bd5282e36adb47c4605792e48a61c12752c7"
      ],
      "author": {
        "name": "Selenium CI Bot",
        "email": "diemol+selenium-ci@gmail.com",
        "time": "Tue Sep 08 09:28:06 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 08 09:28:06 2026"
      },
      "message": "[build] Automated Dependency Update (#17991)\n\nupdate dependencies and pinned binaries\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": "1303bd5282e36adb47c4605792e48a61c12752c7",
      "tree": "4fec8a75ae8d9022b2be8766c99b7f0fcdcef372",
      "parents": [
        "58ddb0356569f15c459feb17c37e6864ac13b4cb"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titusfortner@users.noreply.github.com",
        "time": "Mon Sep 07 21:21:53 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 07 21:21:53 2026"
      },
      "message": "[build] bump rules_rs to 0.0.108 (#17997)"
    },
    {
      "commit": "58ddb0356569f15c459feb17c37e6864ac13b4cb",
      "tree": "7eb4b3503ece57b5955507c94de6657ed7e04a31",
      "parents": [
        "507b67e1634f0cba23c13d83346243ecf5aa88ea"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Mon Sep 07 19:20:16 2026"
      },
      "committer": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Mon Sep 07 19:20:16 2026"
      },
      "message": "[py] fix linting issue\n"
    },
    {
      "commit": "507b67e1634f0cba23c13d83346243ecf5aa88ea",
      "tree": "9d1d39834b2e866270fbb7f1fb81ea197d7acf29",
      "parents": [
        "4eaa35b280da8a53c0821205c4bd7c3f2d024eee"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Mon Sep 07 18:22:28 2026"
      },
      "committer": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Mon Sep 07 18:56:20 2026"
      },
      "message": "[rb] guard the Firefox Linux screencast failure to stable only\n"
    },
    {
      "commit": "4eaa35b280da8a53c0821205c4bd7c3f2d024eee",
      "tree": "28107607bf88bd55d626af106215b7f4dc7203e5",
      "parents": [
        "4704bc5ef277e56b541f18a71d136830b55d64f0"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Mon Sep 07 17:46:20 2026"
      },
      "committer": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Mon Sep 07 17:57:58 2026"
      },
      "message": "[rb] request the configured browser version when finding drivers\n"
    },
    {
      "commit": "4704bc5ef277e56b541f18a71d136830b55d64f0",
      "tree": "efda2ca31c5b714556ef7cad90fe533d1da3d7f3",
      "parents": [
        "825b0d175d0e2b6872fa0256d3e4a7b5bc98b71b"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Mon Sep 07 17:04:18 2026"
      },
      "committer": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Mon Sep 07 17:46:21 2026"
      },
      "message": "[py] tolerate Safari\u0027s mid-navigation window errors in click and window tests\n"
    },
    {
      "commit": "825b0d175d0e2b6872fa0256d3e4a7b5bc98b71b",
      "tree": "f322f044f9afd84274184a0d922ee9dec5490608",
      "parents": [
        "f7f60f942ee07238d9e31a37d1cfdb0cbd9c1f36"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Mon Sep 07 16:56:43 2026"
      },
      "committer": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Mon Sep 07 17:01:27 2026"
      },
      "message": "[java] give Grid deployments more time to become ready in router tests\n"
    },
    {
      "commit": "f7f60f942ee07238d9e31a37d1cfdb0cbd9c1f36",
      "tree": "9f48f640e458747a01e211ce0b713c95caa333d8",
      "parents": [
        "dc4fc25ac86b79379859f6a32aee2938b917a7c5"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Mon Sep 07 16:44:22 2026"
      },
      "committer": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Mon Sep 07 17:00:10 2026"
      },
      "message": "[rb] wait for both downloads to finish before listing them\n"
    },
    {
      "commit": "dc4fc25ac86b79379859f6a32aee2938b917a7c5",
      "tree": "9319faad91a909d3f170f255d07c67b650591f57",
      "parents": [
        "9461d1b98c5a6598dca93c1d963f090f977e79a7"
      ],
      "author": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Mon Sep 07 16:44:22 2026"
      },
      "committer": {
        "name": "Titus Fortner",
        "email": "titus.fortner@gmail.com",
        "time": "Mon Sep 07 16:46:23 2026"
      },
      "message": "[rb] give the Grid two minutes to become ready in remote specs\n"
    },
    {
      "commit": "9461d1b98c5a6598dca93c1d963f090f977e79a7",
      "tree": "84f1a0ba2d2eaa19e49eff7b6ea2802de603b14d",
      "parents": [
        "fa44e74a6ff1faaa6ff1ff2dd2bc976fa8095750"
      ],
      "author": {
        "name": "Selenium CI Bot",
        "email": "diemol+selenium-ci@gmail.com",
        "time": "Mon Sep 07 16:16:33 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 07 16:16:33 2026"
      },
      "message": "[build] Automated Browser Version Update (major) (#17923)\n\n* Update pinned browser versions\n\n* [rb] update BiDi guards for Edge 152 and Firefox 156 beta\n\n* [java] skip strict file interactability upload test on Chrome 154\n\n---------\n\nCo-authored-by: Selenium CI Bot \u003cselenium-ci@users.noreply.github.com\u003e\nCo-authored-by: Titus Fortner \u003ctitus.fortner@gmail.com\u003e"
    }
  ],
  "next": "fa44e74a6ff1faaa6ff1ff2dd2bc976fa8095750"
}
