)]}'
{
  "log": [
    {
      "commit": "b2b856131e36c99e9de9c419fe8ca02f857082ba",
      "tree": "58a9fdc579d499aad8bb528953bc86e0a9e41e51",
      "parents": [
        "f0780fa58712bae1bba9479e859ffcb6a1805a8d"
      ],
      "author": {
        "name": "Victor Hugo Vianna Silva",
        "email": "victorvianna@google.com",
        "time": "Fri May 15 17:36:46 2026"
      },
      "committer": {
        "name": "Victor Vianna",
        "email": "victorvianna@google.com",
        "time": "Mon May 18 11:40:41 2026"
      },
      "message": "Delete scripts/upload_new_binaries.py\n\nFollowing changes in catapult, crossbench and chromium, prebuilt\nbinaries are unused.\n\nBug: 495366518\nChange-Id: Ia47ed1292c1643d3f7d32dec49855a068c0eb0ef\nReviewed-on: https://chromium-review.googlesource.com/c/webpagereplay/+/7837180\nReviewed-by: Mikhail Khokhlov \u003ckhokhlov@google.com\u003e\n"
    },
    {
      "commit": "f0780fa58712bae1bba9479e859ffcb6a1805a8d",
      "tree": "f1745f23312df3d3af878b2f886b0e057653c74c",
      "parents": [
        "37d0659fffd59623e5af01ebee1e4552ffac6078"
      ],
      "author": {
        "name": "Victor Hugo Vianna Silva",
        "email": "victorvianna@google.com",
        "time": "Fri May 15 10:56:28 2026"
      },
      "committer": {
        "name": "catapult-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "catapult-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Fri May 15 10:59:27 2026"
      },
      "message": "Add scripts/run_httparchive.py\n\nSame as scripts/run_wpr.py but for httparchive.\n\nBug: 495366518\nChange-Id: I4aad4e59ba5bd66d8562d59bd5ea442ab7d03935\nReviewed-on: https://chromium-review.googlesource.com/c/webpagereplay/+/7852475\nReviewed-by: Mikhail Khokhlov \u003ckhokhlov@google.com\u003e\nAuto-Submit: Victor Vianna \u003cvictorvianna@google.com\u003e\nCommit-Queue: Mikhail Khokhlov \u003ckhokhlov@google.com\u003e\n"
    },
    {
      "commit": "37d0659fffd59623e5af01ebee1e4552ffac6078",
      "tree": "4cd0d7fdf3c2557f4b10b3060da050e6c6003e5f",
      "parents": [
        "9fd18f7352322372b8b48c430b9b059939863f27"
      ],
      "author": {
        "name": "Victor Hugo Vianna Silva",
        "email": "victorvianna@google.com",
        "time": "Wed May 13 11:19:31 2026"
      },
      "committer": {
        "name": "catapult-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "catapult-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Wed May 13 14:15:21 2026"
      },
      "message": "Handle dual-arch Mac bots in scripts/build.py and add run_wpr.py\n\nFor some mac bots, the orchestration is done in an arm machine but the\nactual tests are run on an intel machine. Before this CL, DEPS would\nchoose an arm go compiler for such bots, which is the wrong choice.\n\nThe solution is to pull both architectures on mac and decide which one\nto use at runtime (not `gclient sync` time).\n\nThe CL also introduces a run_wpr.py script which is a drop-in\nreplacement for any code that relied on prebuilt binaries. The script\nhas comments regarding why direct `go run` might be subpar as an\nalternative.\n\nBug: 495366518\nChange-Id: Iadb1d174c56a9f3550b5200b21e003b732767766\nReviewed-on: https://chromium-review.googlesource.com/c/webpagereplay/+/7837782\nAuto-Submit: Victor Vianna \u003cvictorvianna@google.com\u003e\nCommit-Queue: Mikhail Khokhlov \u003ckhokhlov@google.com\u003e\nReviewed-by: Mikhail Khokhlov \u003ckhokhlov@google.com\u003e\n"
    },
    {
      "commit": "9fd18f7352322372b8b48c430b9b059939863f27",
      "tree": "ad0efaa5d42c317d69052e3e6a7c7e092046c20e",
      "parents": [
        "b7ac48f52cd298e966a76eb054412915c3e445d4"
      ],
      "author": {
        "name": "Victor Hugo Vianna Silva",
        "email": "victorvianna@google.com",
        "time": "Tue May 12 01:12:47 2026"
      },
      "committer": {
        "name": "catapult-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "catapult-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Tue May 12 09:03:30 2026"
      },
      "message": "Add scripts/build.py\n\nDrive-by: fix the ruff presubmit check.\n\nBug: 495366518\nChange-Id: I5237d77db587de56ce61bedd1091810aaa2965a9\nReviewed-on: https://chromium-review.googlesource.com/c/webpagereplay/+/7838218\nReviewed-by: Mikhail Khokhlov \u003ckhokhlov@google.com\u003e\nCommit-Queue: Mikhail Khokhlov \u003ckhokhlov@google.com\u003e\nAuto-Submit: Victor Vianna \u003cvictorvianna@google.com\u003e\n"
    },
    {
      "commit": "b7ac48f52cd298e966a76eb054412915c3e445d4",
      "tree": "e9158d9c626965159acf5bf4c14f27b8615d3bd3",
      "parents": [
        "933a307d48de242c057715c9baece494b35c718f"
      ],
      "author": {
        "name": "Mikhail Khokhlov",
        "email": "khokhlov@google.com",
        "time": "Thu Apr 30 16:17:18 2026"
      },
      "committer": {
        "name": "catapult-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "catapult-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Thu Apr 30 16:20:09 2026"
      },
      "message": "Restore constant replacement in all injected scripts\n\nChromium captured-sites tests rely on this replacement in their\ncustom injected script.\n\nBug: 503865765\nChange-Id: I73f2788eda240710d557bba721cd938c5cf9fd48\nReviewed-on: https://chromium-review.googlesource.com/c/webpagereplay/+/7806509\nCommit-Queue: Mikhail Khokhlov \u003ckhokhlov@google.com\u003e\nReviewed-by: Victor Vianna \u003cvictorvianna@google.com\u003e\n"
    },
    {
      "commit": "933a307d48de242c057715c9baece494b35c718f",
      "tree": "2d0090ee98583f1bb6f5876998403fe08d9f6dcf",
      "parents": [
        "04bf7955af253356cf18a8e88afca4d8211ff209"
      ],
      "author": {
        "name": "Victor Hugo Vianna Silva",
        "email": "victorvianna@google.com",
        "time": "Thu Apr 30 15:54:10 2026"
      },
      "committer": {
        "name": "catapult-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "catapult-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Thu Apr 30 16:09:24 2026"
      },
      "message": "Fix prebuilt binaries presubmit check\n\n1. This was running on dry-run too because the presubmit bot does\n   `git cl presubmit` and that exercises OnCommit checks. Fix by\n   guarding with `not input_api.dry_run`.\n2. With the previous setup, most CLs would have to be re-stamped after\n   review, when the user finally realized a change to the JSON was\n   needed. Address this by adding a check that ensures some change to\n   the JSON upon initial upload.\n\nBug: 495366518\nChange-Id: Ice9de1b67a345335f6d92587c64285e20553dd98\nReviewed-on: https://chromium-review.googlesource.com/c/webpagereplay/+/7806507\nReviewed-by: Mikhail Khokhlov \u003ckhokhlov@google.com\u003e\nCommit-Queue: Victor Vianna \u003cvictorvianna@google.com\u003e\n"
    },
    {
      "commit": "04bf7955af253356cf18a8e88afca4d8211ff209",
      "tree": "e3977ebdf3af57b51de46901fed93c816567eb8c",
      "parents": [
        "c6952af47a231bc828f107d9dec0d3a29c54a870"
      ],
      "author": {
        "name": "Victor Hugo Vianna Silva",
        "email": "victorvianna@google.com",
        "time": "Thu Apr 30 11:17:31 2026"
      },
      "committer": {
        "name": "catapult-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "catapult-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Thu Apr 30 14:40:47 2026"
      },
      "message": "Run go tests directly in PRESUBMIT.py\n\nFollowing the addition of the golang CIPD package in\ncrrev.com/c/7800167, even the presubmit bot can run go functionality\nvia third_party/golang/bin/go. So let\u0027s move all the go tests to that\nbot. See also crrev.com/c/7806673 in catapult and\ncrrev.com/c/7806632 in recipes.\n\nCheckPrebuiltBinaryUpdated() is updated to run only on submission\n(by adding OnCommit to the name), similar to what was initially\nimplemented in crrev.com/c/7802746. One interesting note is that,\nalthough this doesn\u0027t run on `git cl upload`, it runs on explicit\n`git cl presubmit` (TIL).\n\nThis CL also removes CheckBuildpWpr() and CheckBuildHttpArchive(),\nwhich are redundant with CheckGoTests().\n\nBug: 495366518\nChange-Id: Ie8e441a76f9722d13aab4a006f804460fc2d681a\nReviewed-on: https://chromium-review.googlesource.com/c/webpagereplay/+/7807226\nAuto-Submit: Victor Vianna \u003cvictorvianna@google.com\u003e\nCommit-Queue: Mikhail Khokhlov \u003ckhokhlov@google.com\u003e\nReviewed-by: Mikhail Khokhlov \u003ckhokhlov@google.com\u003e\n"
    },
    {
      "commit": "c6952af47a231bc828f107d9dec0d3a29c54a870",
      "tree": "10c9c3fd4442249c04a91757a2557200c705ae35",
      "parents": [
        "d06aed33ffa93bd6ed58a189df10020d69555ba0"
      ],
      "author": {
        "name": "Victor Hugo Vianna Silva",
        "email": "victorvianna@google.com",
        "time": "Thu Apr 30 10:07:06 2026"
      },
      "committer": {
        "name": "catapult-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "catapult-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Thu Apr 30 10:12:55 2026"
      },
      "message": "Use fixed go toolchain from CIPD in upload_new_binaries.py\n\nThis is the only way to have deterministic, stable builds.\n\nBug: 495366518\nChange-Id: If2b013d6042ae2e2e4d1ad12699a2be5db07204f\nReviewed-on: https://chromium-review.googlesource.com/c/webpagereplay/+/7800167\nCommit-Queue: Victor Vianna \u003cvictorvianna@google.com\u003e\nReviewed-by: Mikhail Khokhlov \u003ckhokhlov@google.com\u003e\n"
    },
    {
      "commit": "d06aed33ffa93bd6ed58a189df10020d69555ba0",
      "tree": "bae526477e46fb37836f25f06ccaee130e02a0a1",
      "parents": [
        "86fc4403e3feeedc6d13592a09311528711cec6b"
      ],
      "author": {
        "name": "Victor Hugo Vianna Silva",
        "email": "victorvianna@google.com",
        "time": "Wed Apr 29 19:11:37 2026"
      },
      "committer": {
        "name": "catapult-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "catapult-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Thu Apr 30 10:02:03 2026"
      },
      "message": "Add `scripts/upload_new_binaries.py --check-only`\n\nThis command succeeds if the binaries are up-to-date and fails\notherwise. It will be used by CQ.\n\nBug: 495366518\nChange-Id: I2d9c5c0d60b60db76490e28d4cdaeed5b55d72f6\nReviewed-on: https://chromium-review.googlesource.com/c/webpagereplay/+/7801681\nReviewed-by: Mikhail Khokhlov \u003ckhokhlov@google.com\u003e\nCommit-Queue: Victor Vianna \u003cvictorvianna@google.com\u003e\n"
    },
    {
      "commit": "86fc4403e3feeedc6d13592a09311528711cec6b",
      "tree": "26354e6de929495783138b376c857404c1eb227f",
      "parents": [
        "b187c86968b387750a428e55e8f421b24d406088"
      ],
      "author": {
        "name": "Victor Hugo Vianna Silva",
        "email": "victorvianna@google.com",
        "time": "Wed Apr 29 19:33:50 2026"
      },
      "committer": {
        "name": "catapult-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "catapult-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Thu Apr 30 09:57:40 2026"
      },
      "message": "More improvements to scripts/upload_new_binaries.py\n\n* --help.\n* If using the default flags, little logging. If using --verbose, copy\n  pastable commands, to help investigate bugs.\n* Download the module dependencies only once, instead of doing it for\n  every [platform, architecture] pair.\n* Read and write the JSON file only once, instead of doing it for\n  every [platform, architecture] pair.\n* Skip upload commands if the computed hashes are the same as the ones\n  in the JSON, so no-ops are faster.\n* Use `pathlib` instead of `os.path`.\n* Add -buildvcs\u003dfalse to build command, which is important for\n  deterministic builds.\n\nChange-Id: I3de504ac3453e3de07c3f5080cf220e86929b02f\nReviewed-on: https://chromium-review.googlesource.com/c/webpagereplay/+/7802745\nReviewed-by: Mikhail Khokhlov \u003ckhokhlov@google.com\u003e\nAuto-Submit: Victor Vianna \u003cvictorvianna@google.com\u003e\nCommit-Queue: Mikhail Khokhlov \u003ckhokhlov@google.com\u003e\n"
    },
    {
      "commit": "b187c86968b387750a428e55e8f421b24d406088",
      "tree": "5ef6959e02c6870cbd0592c62f0cd7fa97d9aced",
      "parents": [
        "f94aab4954226fff35f02c0e8d8e85cc1dfee214"
      ],
      "author": {
        "name": "Victor Hugo Vianna Silva",
        "email": "victorvianna@google.com",
        "time": "Wed Apr 29 15:47:22 2026"
      },
      "committer": {
        "name": "catapult-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "catapult-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Wed Apr 29 15:58:21 2026"
      },
      "message": "More clean-ups in scripts/upload_new_binaries.py\n\n- check_go_version() -\u003e Remove, this redundant with the\n  `go build` commands [1].\n- Remove unreached unsupported platform in _build_and_upload_go_binary.\n- Remove `go clean` commands. Given we use a temporary dir as GOPATH,\n  these are unnecessary.\n\n[1] https://source.chromium.org/chromium/chromium/src/+/main:third_party/webpagereplay/go.mod;l\u003d3;drc\u003d58ec1a40c45b54f49b075d5c8e45ebb524eaeee8\n\nChange-Id: I832509e4472be6b4a090728464e0029d63787eaf\nReviewed-on: https://chromium-review.googlesource.com/c/webpagereplay/+/7801680\nReviewed-by: Mikhail Khokhlov \u003ckhokhlov@google.com\u003e\nCommit-Queue: Victor Vianna \u003cvictorvianna@google.com\u003e\n"
    },
    {
      "commit": "f94aab4954226fff35f02c0e8d8e85cc1dfee214",
      "tree": "458c9ac241f8eb82888c513f96413ac8d8c5ea05",
      "parents": [
        "882392b6400da60797f006e2951f20194d81f5ca"
      ],
      "author": {
        "name": "Victor Hugo Vianna Silva",
        "email": "victorvianna@google.com",
        "time": "Wed Apr 29 15:12:14 2026"
      },
      "committer": {
        "name": "catapult-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "catapult-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Wed Apr 29 15:53:50 2026"
      },
      "message": "Add python ruff checks to presubmit\n\nRequires:\n```\npython3 -m ruff check \\\n  --unsafe-fixes \\\n  --fix scripts/upload_new_binaries.py \\\n  --select E,F,W,B,I,UP\n```\nPlus some manual fixes. Also mark helper functions in\nscripts/upload_new_binaries.py as private.\n\nChange-Id: Id4b075c45933dad7e2cbb31e30b24c81f267544d\nReviewed-on: https://chromium-review.googlesource.com/c/webpagereplay/+/7801240\nCommit-Queue: Victor Vianna \u003cvictorvianna@google.com\u003e\nReviewed-by: Mikhail Khokhlov \u003ckhokhlov@google.com\u003e\n"
    },
    {
      "commit": "882392b6400da60797f006e2951f20194d81f5ca",
      "tree": "2f2013fca0e9f8faa3ef1be1c46f9d7fd868795a",
      "parents": [
        "6d1c05bb789110e4c6f57d117598eaa21ca3f0e8"
      ],
      "author": {
        "name": "Victor Hugo Vianna Silva",
        "email": "victorvianna@google.com",
        "time": "Tue Apr 28 11:44:41 2026"
      },
      "committer": {
        "name": "catapult-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "catapult-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Tue Apr 28 11:46:39 2026"
      },
      "message": "Update binaries\n\nThese were out-of-date.\n\nBug: 503865765\nChange-Id: I793da7979e6439cb6dd640a3e84a939055f73fb5\nReviewed-on: https://chromium-review.googlesource.com/c/webpagereplay/+/7795747\nCommit-Queue: Victor Vianna \u003cvictorvianna@google.com\u003e\nReviewed-by: Mikhail Khokhlov \u003ckhokhlov@google.com\u003e\nAuto-Submit: Victor Vianna \u003cvictorvianna@google.com\u003e\nCommit-Queue: Mikhail Khokhlov \u003ckhokhlov@google.com\u003e\n"
    },
    {
      "commit": "6d1c05bb789110e4c6f57d117598eaa21ca3f0e8",
      "tree": "ea03a87bbb1d4e6f338bafe193b4e2b9f059ec1b",
      "parents": [
        "d9735875031648c13afb86b72090dd89d3b5ac9b"
      ],
      "author": {
        "name": "Victor Hugo Vianna Silva",
        "email": "victorvianna@google.com",
        "time": "Fri Apr 24 11:54:43 2026"
      },
      "committer": {
        "name": "catapult-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "catapult-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Fri Apr 24 11:59:20 2026"
      },
      "message": "[docs] Add missing line continuations (\\) to some commands in README.md\n\nThe real goal is to test if the commit-queue can submit CLs following\ncrrev.com/c/7789706.\n\nChange-Id: Ie2c07a37e2a32bced161f812f0e76a23c342f423\nReviewed-on: https://chromium-review.googlesource.com/c/webpagereplay/+/7789707\nReviewed-by: Elad Alon \u003celadalon@chromium.org\u003e\nAuto-Submit: Victor Vianna \u003cvictorvianna@google.com\u003e\nCommit-Queue: Elad Alon \u003celadalon@chromium.org\u003e\n"
    },
    {
      "commit": "d9735875031648c13afb86b72090dd89d3b5ac9b",
      "tree": "2bd2f94186c813d36ec7773c1531c082cbb71bae",
      "parents": [
        "088a0a17fe12aef0ccc4bae79169cfa8ad92e742"
      ],
      "author": {
        "name": "Elad Alon",
        "email": "eladalon@google.com",
        "time": "Thu Apr 23 23:12:02 2026"
      },
      "committer": {
        "name": "Victor Vianna",
        "email": "victorvianna@google.com",
        "time": "Fri Apr 24 11:12:39 2026"
      },
      "message": "Add command-line flags to control script injection.\n\nI0ec29061dee178fa0f4b4c45193f560f992aeee9 introduced script-injection\ninto JavaScript responses. This behavior was introduced without\nany control knobs.\n\nThe current CL adds flags to make this behavior configurable.\n\nFlags added:\n- --html-injection\u003dBOOL (defaults to true)\n- --js-injection\u003dBOOL (defaults to false)\n\nThe default values chosen reflect the behavior before the aforementioned\nCL (I0ec29061dee178fa0f4b4c45193f560f992aeee9) was landed.\n\nChange-Id: If0f6ad7ef9d26b4bdb2c64f9daf3b5271f7b345f\nReviewed-on: https://chromium-review.googlesource.com/c/webpagereplay/+/7790082\nReviewed-by: Mikhail Khokhlov \u003ckhokhlov@google.com\u003e\n"
    },
    {
      "commit": "088a0a17fe12aef0ccc4bae79169cfa8ad92e742",
      "tree": "821f7bb79fa8344605bf901f3c15fa4ad8e5de86",
      "parents": [
        "947e67d240e463f85e76215a044ba5a239a08100"
      ],
      "author": {
        "name": "Victor Hugo Vianna Silva",
        "email": "victorvianna@google.com",
        "time": "Mon Apr 20 19:10:17 2026"
      },
      "committer": {
        "name": "Victor Vianna",
        "email": "victorvianna@google.com",
        "time": "Mon Apr 20 19:36:19 2026"
      },
      "message": "Temporarily skip PRESUBMIT.py go checks on bots (but not locally)\n\nThe presubmit bot set by crrev.com/c/7768617 doesn\u0027t contain `go`, so\ngo-related checks are failing. We should fix by moving these tests to a\nseparate builder or installing go in the builder. For now, keep the\ntests running locally in the author\u0027s machine but skip them on the bots.\n\nBug: 495366518\nChange-Id: Ic9f9d26ebcf74a22b4b90150cd793cc677cf678a\nReviewed-on: https://chromium-review.googlesource.com/c/webpagereplay/+/7776938\nReviewed-by: John Chen \u003cjohnchen@chromium.org\u003e\n"
    },
    {
      "commit": "947e67d240e463f85e76215a044ba5a239a08100",
      "tree": "78c7926f75cd2601c036d628de583bebf44bb93f",
      "parents": [
        "35ca067ff4da6d6ed1c52107b1cc25d8d6c72c70"
      ],
      "author": {
        "name": "Elad Alon",
        "email": "eladalon@google.com",
        "time": "Tue Apr 14 15:31:48 2026"
      },
      "committer": {
        "name": "Elad Alon",
        "email": "eladalon@google.com",
        "time": "Tue Apr 14 15:36:41 2026"
      },
      "message": "Change default value of --inject-archive-scripts to false\n\nChange the default value of the `--inject-archive-scripts` flag from\ntrue to false in WebPageReplay. This means that by default, scripts\nstored in the archive will NOT be injected during replay. Users can\nstill enable this behavior by explicitly setting\n`--inject-archive-scripts\u003dtrue`.\n\nThis change helps avoid issues like duplicate script injections (e.g.,\ndeterministic.js) when running replays where archive scripts are not\ndesired or are supplied via other mechanisms.\n\nChange-Id: I82d0b459f4be3524c21b567b79ddc580f3a1beeb\nReviewed-on: https://chromium-review.googlesource.com/c/webpagereplay/+/7761784\nReviewed-by: Victor Vianna \u003cvictorvianna@google.com\u003e\n"
    },
    {
      "commit": "35ca067ff4da6d6ed1c52107b1cc25d8d6c72c70",
      "tree": "05e3f410a11f1b66b8fe54ed7637987663f46b87",
      "parents": [
        "aa7ace8040f81cd93808899ea9b15c08b36d7bb4"
      ],
      "author": {
        "name": "Elad Alon",
        "email": "eladalon@google.com",
        "time": "Tue Apr 14 13:24:19 2026"
      },
      "committer": {
        "name": "Elad Alon",
        "email": "eladalon@google.com",
        "time": "Tue Apr 14 15:08:18 2026"
      },
      "message": "Add ls-scripts command to httparchive\n\nThis allows user and external tools (like Crossbench) to inspect the\narchive and determine if specific scripts (like deterministic.js) are\nalready present, avoiding duplicate injection errors.\n\nNote: This command only lists the script names for now. Follow-up\nwork could be done to allow printing out the actual contents of the\nscripts if needed.\n\nChange-Id: I526387d9f1655b3a0ab0ecaf28086fcc0c810d3c\nReviewed-on: https://chromium-review.googlesource.com/c/webpagereplay/+/7758967\nReviewed-by: Victor Vianna \u003cvictorvianna@google.com\u003e\n"
    },
    {
      "commit": "aa7ace8040f81cd93808899ea9b15c08b36d7bb4",
      "tree": "532c210e9d268c7c6c8f06ffff5b16f46c467b5c",
      "parents": [
        "a5d4b9b6e4afcfe69aa83172f0a63654195eebed"
      ],
      "author": {
        "name": "Elad Alon",
        "email": "eladalon@google.com",
        "time": "Tue Apr 14 13:21:05 2026"
      },
      "committer": {
        "name": "Victor Vianna",
        "email": "victorvianna@google.com",
        "time": "Tue Apr 14 14:34:51 2026"
      },
      "message": "Move httparchive_test.go to src directory\n\nThis moves the tests for the `httparchive` command from the library\npackage `webpagereplay` (in `src/webpagereplay/`) to the `main`\npackage in the `src/` directory, where the command itself resides.\n\nThis change enables:\n1. Co-location of tests with the command implementation they verify.\n2. Adding tests for new subcommands (like `ls-scripts`) without\n   triggering package boundary issues or circular dependency conflicts\n   between the library and the command (since the library cannot import\n   the command).\n\nThe tests have been updated to import the `webpagereplay` package and\nuse exported symbols as needed.\n\nChange-Id: I50b2b6255897f5512f818b5322ea9ee25d67306a\nReviewed-on: https://chromium-review.googlesource.com/c/webpagereplay/+/7761327\nReviewed-by: Victor Vianna \u003cvictorvianna@google.com\u003e\n"
    },
    {
      "commit": "a5d4b9b6e4afcfe69aa83172f0a63654195eebed",
      "tree": "301e02ebb577c586f357f68d562cc685822f5e64",
      "parents": [
        "285833c8a279648f9068acb78d4eca57b1cc22df"
      ],
      "author": {
        "name": "Elad Alon",
        "email": "eladalon@google.com",
        "time": "Fri Apr 10 00:21:05 2026"
      },
      "committer": {
        "name": "Elad Alon",
        "email": "eladalon@google.com",
        "time": "Mon Apr 13 15:27:53 2026"
      },
      "message": "Add dismisser utility script for WPR replays\n\nThis CL adds a new directory `scripts/injected_utils` containing\n`dismisser.js` and a README.\n\n`dismisser.js` is an example script that can be injected during\nreplay to automatically dismiss cookie banners or similar overlays.\nIt uses a MutationObserver to wait for the target element to appear\nand then clicks it.\n\nUsers are expected to modify this script to suit their specific\ntarget sites.\n\nChange-Id: If2714c31307399e6ed9fca1e0e37709fe262d72a\nReviewed-on: https://chromium-review.googlesource.com/c/webpagereplay/+/7746127\nReviewed-by: Victor Vianna \u003cvictorvianna@google.com\u003e\nReviewed-by: Mikhail Khokhlov \u003ckhokhlov@google.com\u003e\n"
    },
    {
      "commit": "285833c8a279648f9068acb78d4eca57b1cc22df",
      "tree": "734ecaded51c24726d94271519516d0046a3c7f5",
      "parents": [
        "401defe7a464af17d24130f3b8fbbc814e6c9bad"
      ],
      "author": {
        "name": "Elad Alon",
        "email": "eladalon@google.com",
        "time": "Mon Apr 13 15:23:06 2026"
      },
      "committer": {
        "name": "Elad Alon",
        "email": "eladalon@google.com",
        "time": "Mon Apr 13 15:27:14 2026"
      },
      "message": "Add --inject-scripts-by-url flag to wpr replay\n\nThis CL adds the --inject-scripts-by-url flag to wpr replay. This\nallows injecting specific scripts based on the target URL of the\nrequest (as opposed to having scripts injected throughout).\n\nSimilar functionality existed through --rules-files, but that required\nadding an auxiliary file, which could occasionally get tedious.\n\nChange-Id: I316b6b1ff648876dd41a394b305ec98a471bd01c\nReviewed-on: https://chromium-review.googlesource.com/c/webpagereplay/+/7746126\nReviewed-by: Mikhail Khokhlov \u003ckhokhlov@google.com\u003e\nReviewed-by: Victor Vianna \u003cvictorvianna@google.com\u003e\n"
    },
    {
      "commit": "401defe7a464af17d24130f3b8fbbc814e6c9bad",
      "tree": "437152c086c20f77312cd5e4ecc677a18fa54b1b",
      "parents": [
        "ceefaf49bf33443313709d1783db0ca8cfa1f223"
      ],
      "author": {
        "name": "Elad Alon",
        "email": "eladalon@google.com",
        "time": "Thu Apr 09 23:24:42 2026"
      },
      "committer": {
        "name": "Elad Alon",
        "email": "eladalon@google.com",
        "time": "Mon Apr 13 13:32:21 2026"
      },
      "message": "Refactor RuleBasedTransformer and --rules-file handling\n\nThis CL refactors RuleBasedTransformer to separate rule compilation\nfrom file reading. This allows creating a transformer directly from\na list of rules in memory, which will be used in a follow-up CL to\nsupport injecting scripts by host.\n\nIt also centralizes the handling of --rules-file into\nProcessInjectedScriptsForReplay, aligning it with other script\ninjection flags.\n\nFinally, it adds unit tests for --rules-file functionality\nto ensure correctness, which were previously missing.\n\nChange-Id: I2f38d0d51e0668d7fc58562feb0a574d01c44d95\nReviewed-on: https://chromium-review.googlesource.com/c/webpagereplay/+/7746445\nReviewed-by: Victor Vianna \u003cvictorvianna@google.com\u003e\nReviewed-by: Mikhail Khokhlov \u003ckhokhlov@google.com\u003e\n"
    },
    {
      "commit": "ceefaf49bf33443313709d1783db0ca8cfa1f223",
      "tree": "59eaee6713618d90279ae00f3b4d15a340f6cb69",
      "parents": [
        "41792dafa88ddbc69a462fafd7dd86e3627dc2e3"
      ],
      "author": {
        "name": "Elad Alon",
        "email": "eladalon@google.com",
        "time": "Thu Apr 09 23:21:05 2026"
      },
      "committer": {
        "name": "Elad Alon",
        "email": "eladalon@google.com",
        "time": "Mon Apr 13 13:32:11 2026"
      },
      "message": "Fix duplicate script error in WPR replay\n\nWhen running `wpr replay`, if the archive already contains\n`deterministic.js` and the default flag value also requests it,\nan error occurred due to duplicate script names.\n\nThis change skips the default file-system injection of\n`deterministic.js` if it is already present in the archive and\nthe flag was not explicitly set by the user. This preserves\nreplay fidelity and avoids errors.\n\nChange-Id: I5349881b7298c4551af66e5837bae7d82f8abf55\nReviewed-on: https://chromium-review.googlesource.com/c/webpagereplay/+/7746444\nReviewed-by: Mikhail Khokhlov \u003ckhokhlov@google.com\u003e\nReviewed-by: Victor Vianna \u003cvictorvianna@google.com\u003e\n"
    },
    {
      "commit": "41792dafa88ddbc69a462fafd7dd86e3627dc2e3",
      "tree": "7da6af7897a90ba256ccaeb83987949c3a6012f2",
      "parents": [
        "2d8b3259ca0f02e897f6c8318b8b01b7cd3f5008"
      ],
      "author": {
        "name": "Elad Alon",
        "email": "eladalon@google.com",
        "time": "Thu Apr 09 14:40:01 2026"
      },
      "committer": {
        "name": "Elad Alon",
        "email": "eladalon@google.com",
        "time": "Thu Apr 09 15:56:51 2026"
      },
      "message": "Add --inject-archive-scripts flag to replay command\n\nThis flag allows controlling whether scripts stored in the archive\nare injected during replay. It defaults to true, which is a\nslight change of behavior when used in conjunction with\n--inject-scripts (previously, archive scripts were ignored if\ndisk scripts were provided).\n\nNow, by default, both archive scripts and disk scripts are\ninjected. If --inject-archive-scripts\u003dfalse is specified,\narchive scripts are skipped.\n\nAlso added name collision checking between archive scripts and disk\nscripts. If a script provided via --inject-scripts has the same\nname as a script stored in the archive, replay will fail with\nan error, unless --inject-archive-scripts\u003dfalse is set (in\nwhich case the disk script effectively overrides the archive\nscript).\n\nChange-Id: I7ab826eda42b6ff8d9753367b052351ad5cba3a3\nReviewed-on: https://chromium-review.googlesource.com/c/webpagereplay/+/7743276\nReviewed-by: Victor Vianna \u003cvictorvianna@google.com\u003e\n"
    },
    {
      "commit": "2d8b3259ca0f02e897f6c8318b8b01b7cd3f5008",
      "tree": "262a6b05055d8b5ab8777f63c2afbb0e9b64964a",
      "parents": [
        "be48b5e3387780790ecc7723434b6ea6733bcc33"
      ],
      "author": {
        "name": "Elad Alon",
        "email": "eladalon@google.com",
        "time": "Thu Apr 09 14:11:15 2026"
      },
      "committer": {
        "name": "Elad Alon",
        "email": "eladalon@google.com",
        "time": "Thu Apr 09 14:12:55 2026"
      },
      "message": "Add .DS_Store to .gitignore\n\nChange-Id: I854843c5478d29cd48d30b4593b5cc64279f32b5\nReviewed-on: https://chromium-review.googlesource.com/c/webpagereplay/+/7743268\nAuto-Submit: Elad Alon \u003celadalon@chromium.org\u003e\nReviewed-by: Victor Vianna \u003cvictorvianna@google.com\u003e\n"
    },
    {
      "commit": "be48b5e3387780790ecc7723434b6ea6733bcc33",
      "tree": "3e1c6498ffbb2a9548b7a6c1af6ac82fc06d8f69",
      "parents": [
        "bba60a961bcb94bec5103269758012e411b32e17"
      ],
      "author": {
        "name": "Victor Hugo Vianna Silva",
        "email": "victorvianna@google.com",
        "time": "Thu Apr 02 16:56:15 2026"
      },
      "committer": {
        "name": "Elad Alon",
        "email": "eladalon@chromium.org",
        "time": "Thu Apr 02 16:58:56 2026"
      },
      "message": "Revert \"Starting server on ...\" line to old format\n\ncrrev.com/c/7702792 changed the format of this string but consumers\nparse this.\n\nChange-Id: I0f55d42fb7d1f057e14ba0cef787cbf76d3685cc\nReviewed-on: https://chromium-review.googlesource.com/c/webpagereplay/+/7725943\nReviewed-by: Mikhail Khokhlov \u003ckhokhlov@google.com\u003e\nReviewed-by: Elad Alon \u003celadalon@chromium.org\u003e\n"
    },
    {
      "commit": "bba60a961bcb94bec5103269758012e411b32e17",
      "tree": "7c9b4376ab8da29938053037f5da6d78139843a4",
      "parents": [
        "31f1228cba52b095d314bdb5af9b7a7c43fb6ca0"
      ],
      "author": {
        "name": "Victor Hugo Vianna Silva",
        "email": "victorvianna@google.com",
        "time": "Thu Apr 02 11:34:27 2026"
      },
      "committer": {
        "name": "Victor Vianna",
        "email": "victorvianna@google.com",
        "time": "Thu Apr 02 11:35:24 2026"
      },
      "message": "Support full file JS formatting and apply it to deterministic.js\n\nThe goal is to support `git cl format --full --js deterministic.js`.\n--full causes the command to format the entire file, not only the lines\nchanged by the current CL. This is useful for one-off instances, it\nshouldn\u0027t be used most of the time.\n\nThere are various ingredients at play:\n\n1) An unsolved issue: currently, the command only takes effect if the\nfile was already modified. This is an issue in a different layer (most\nlikely third_party/clang-format/script) and deserves separate\ninvestigation and fixing.\n\n2) After making artificial changes to deterministic.js to account for\n(1), the command still fails with:\n```\nProblem while looking for clang-format in Chromium source tree:\nFile does not exist in either path: [\n  \u0027.../buildtools/linux64-format/clang-format\u0027,\n  \u0027.../buildtools/linux64/format/clang-format\u0027,\n  \u0027.../buildtools/linux64/clang-format\u0027\n]\n```\n\nThis CL fixes that issue by adding the GCS deps from [1]. The original\nbuildtools/ dependency apparently becomes redundant, so it is removed.\nNote that `gclient sync -D` is not smart enough to delete the leftover\nfiles - because the outer directory was kept - so I rm-ed the entire\ndirectory manually and ran `gclient sync`.\n\n3) At this point, the command works but reformats replacement constants\nlike `{{WPR_TIME_SEED_TIMESTAMP}}` into `{{ WPR_TIME_SEED_TIMESTAMP }}`,\nwhich does not match the corresponding go code. One option would be to\ndisable formatting for those specific deterministic.js lines with\n`clang-format off` and `clang-format on` comments. Instead, I opted for\nremoving the braces everywhere. The code keeps handling the braces\nversion too for backwards compatibility.\n\n[1] https://source.chromium.org/chromium/chromium/src/+/main:DEPS;l\u003d715-770;drc\u003d96c536897c703e01b2d89b97182d057f9eb6d322\n\nChange-Id: Ibb0ef846ffb02802406c0acaa0a7eda6df43620b\nReviewed-on: https://chromium-review.googlesource.com/c/webpagereplay/+/7720623\nReviewed-by: Elad Alon \u003celadalon@chromium.org\u003e\n"
    },
    {
      "commit": "31f1228cba52b095d314bdb5af9b7a7c43fb6ca0",
      "tree": "8526d54f13f10b48d0eae7f4115268a5a9c34b42",
      "parents": [
        "f00d1ca2cfad9a3f557597604d681b08a72da34f"
      ],
      "author": {
        "name": "Victor Hugo Vianna Silva",
        "email": "victorvianna@google.com",
        "time": "Thu Apr 02 11:25:18 2026"
      },
      "committer": {
        "name": "Victor Vianna",
        "email": "victorvianna@google.com",
        "time": "Thu Apr 02 11:26:48 2026"
      },
      "message": "Concentrate logic for deterministic.js constant replacements\n\nNo behavior change. Before this CL, the work of replacing\ndeterministic.js magic constants was done by the generic:\n```\nfunc NewScriptInjector(\n\tscript []byte, replacements map[string]string) ...\n\nfunc NewScriptInjectorFromFile(\n\tfilename string, replacements map[string]string) ...\n```\n\nIn practice, most places passed an empty replacements map. Move the\nreplacement logic to the one specific place where it\u0027s needed and\nclarify that it is specific to deterministic.js.\n\nChange-Id: Ib6675740244f575718074a80ca968b8b50e54b97\nReviewed-on: https://chromium-review.googlesource.com/c/webpagereplay/+/7719062\nReviewed-by: Elad Alon \u003celadalon@chromium.org\u003e\n"
    },
    {
      "commit": "f00d1ca2cfad9a3f557597604d681b08a72da34f",
      "tree": "aea713aedfb0ad278c92c82737d7a4c3ff2470bf",
      "parents": [
        "16fcdce07d8c9a92fc2a5312f1513e9e0569664d"
      ],
      "author": {
        "name": "Victor Hugo Vianna Silva",
        "email": "victorvianna@google.com",
        "time": "Wed Apr 01 15:44:31 2026"
      },
      "committer": {
        "name": "Victor Vianna",
        "email": "victorvianna@google.com",
        "time": "Wed Apr 01 15:44:59 2026"
      },
      "message": "Drop dependency on special deterministic.js constants from some tests\n\nOut of these 2 tests:\n- TestDoNotSaveDeterministicJS doesn\u0027t care about replacement logic at\n  all, so we can just pass an empty map.\n- TestReplaceTimeStamp tests replacement logic but not the specific one\n  for deterministic.js. Note: test coverage can be improved for this\n  logic, that\u0027s coming in next CLs.\n\nChange-Id: Idddfa5664390069cd010e0d3410a4dc139bcb9c7\nReviewed-on: https://chromium-review.googlesource.com/c/webpagereplay/+/7719061\nReviewed-by: Elad Alon \u003celadalon@chromium.org\u003e\n"
    },
    {
      "commit": "16fcdce07d8c9a92fc2a5312f1513e9e0569664d",
      "tree": "34ad9dfff79722b7c08710fcc8df6933a2921490",
      "parents": [
        "e76a800835240ff30bb5c23ca2a797a4031fc173"
      ],
      "author": {
        "name": "Victor Hugo Vianna Silva",
        "email": "victorvianna@google.com",
        "time": "Wed Apr 01 10:55:36 2026"
      },
      "committer": {
        "name": "Victor Vianna",
        "email": "victorvianna@google.com",
        "time": "Wed Apr 01 14:21:43 2026"
      },
      "message": "Decouple formatting configuration from any embedder repository\n\nThis guarantees that `git cl format` still works even when webpagereplay\nis in chromium\u0027s third_party/ directory [1]. Similar to [2].\n\n[1] https://source.chromium.org/chromium/chromium/src/+/main:third_party/.clang-format-ignore;l\u003d1;drc\u003dc822490a82cdb6ad479159683a92858f7c6f0a58\n[2] https://source.chromium.org/chromium/chromium/src/+/main:third_party/crossbench/.clang-format-ignore;l\u003d1;drc\u003db0474fac434c54396bd46e9132a720b8f4f372e5\n\nChange-Id: Idd41ecf526e7e54f32dfb49bbeba1d832bc5a38b\nReviewed-on: https://chromium-review.googlesource.com/c/webpagereplay/+/7720622\nReviewed-by: Elad Alon \u003celadalon@chromium.org\u003e\n"
    },
    {
      "commit": "e76a800835240ff30bb5c23ca2a797a4031fc173",
      "tree": "c49c898bbfabb421491392600f7ea4a783087b50",
      "parents": [
        "0ab0f89986107cae55e317ecb46335877c91683f"
      ],
      "author": {
        "name": "Victor Hugo Vianna Silva",
        "email": "victorvianna@google.com",
        "time": "Wed Apr 01 13:57:19 2026"
      },
      "committer": {
        "name": "Victor Vianna",
        "email": "victorvianna@google.com",
        "time": "Wed Apr 01 14:17:37 2026"
      },
      "message": "Drop support for deterministic.js replacements from `httparchive inject`\n\nThe deterministic.js file shipped with this repository has special\nconstants that are replaced during injection. Since crrev.com/c/7666181,\nthe `wpr` binary tries to ensure they are only replaced in that one\nscript (via a filename check). But turns out the `httparchive` binary\nalso had some similar logic.\n\nBefore this CL:\n- `httparchive inject in.wprgo out.wprgo deterministic.js`:\n  constants replaced.\n- `httparchive inject in.wprgo out.wprgo foo.js`: constants replaced.\n\nAfter this CL:\n- `httparchive inject in.wprgo out.wprgo deterministic.js`:\n  constants not replaced.\n- `httparchive inject in.wprgo out.wprgo foo.js`: constants not\n   replaced. If the user really wants to control the constants, they\n   can create a copy of the script, edit and inject.\n\nChange-Id: Ic5bdcb4f28f0c69c5beaefbed98f92bf1b30fcaa\nReviewed-on: https://chromium-review.googlesource.com/c/webpagereplay/+/7718206\nReviewed-by: Elad Alon \u003celadalon@chromium.org\u003e\n"
    },
    {
      "commit": "0ab0f89986107cae55e317ecb46335877c91683f",
      "tree": "6c05c3e3e726b203c707513a0b56f3e56eef9e22",
      "parents": [
        "b95b19bfb4b321b3ec9d0909ed9abf7f2a3335a2"
      ],
      "author": {
        "name": "Elad Alon",
        "email": "eladalon@google.com",
        "time": "Wed Apr 01 13:12:16 2026"
      },
      "committer": {
        "name": "Elad Alon",
        "email": "eladalon@google.com",
        "time": "Wed Apr 01 13:48:45 2026"
      },
      "message": "Refactor getCSPScriptSrcDirectiveFromHeaders to use a helper function\n\nAvoid code duplication between the loops for \"script-src\" and\n\"default-src\" by extracting the common logic into a separate\n`getCSPDirective` helper function.\n\nChange-Id: I0b7170a181b4fc31d8101f824506d34817483c9e\nReviewed-on: https://chromium-review.googlesource.com/c/webpagereplay/+/7718202\nReviewed-by: Victor Vianna \u003cvictorvianna@google.com\u003e\n"
    },
    {
      "commit": "b95b19bfb4b321b3ec9d0909ed9abf7f2a3335a2",
      "tree": "dbd3305424ffb86bf160db8ccc2985ab9f3d2794",
      "parents": [
        "7c8d22559fef9ccce668ce2380e61e282fca043f"
      ],
      "author": {
        "name": "Elad Alon",
        "email": "eladalon@google.com",
        "time": "Fri Mar 27 16:43:18 2026"
      },
      "committer": {
        "name": "Elad Alon",
        "email": "eladalon@google.com",
        "time": "Fri Mar 27 17:24:38 2026"
      },
      "message": "Move AddLegacyAliases to a separate file and add unit tests.\n\nMoved AddLegacyAliases from httparchive_config.go to cli.go as it is\na general CLI utility.\n\nAdded comprehensive unit tests in cli_test.go to verify correct alias\ncreation, visibility settings, and destination pointer preservation.\n\nChange-Id: Ia366b7ae0adcd0a21fd76c7a6b14905d35df31bc\nReviewed-on: https://chromium-review.googlesource.com/c/webpagereplay/+/7706401\nReviewed-by: Victor Vianna \u003cvictorvianna@google.com\u003e\n"
    },
    {
      "commit": "7c8d22559fef9ccce668ce2380e61e282fca043f",
      "tree": "29f4bfeed32c6fcb309662fb046b8bb559781897",
      "parents": [
        "8fb3ef617f39a179c37bc95fad7ac32610440460"
      ],
      "author": {
        "name": "Victor Hugo Vianna Silva",
        "email": "victorvianna@google.com",
        "time": "Fri Mar 27 15:53:19 2026"
      },
      "committer": {
        "name": "Victor Vianna",
        "email": "victorvianna@google.com",
        "time": "Fri Mar 27 15:56:28 2026"
      },
      "message": "Remove in-house presubmit git hooks\n\nPartial revert of crrev.com/c/7706635. Chromium projects should be using\n`git cl upload` to ensure presubmits are run.\n\nChange-Id: Ie6cff0b42fa3954e87d546b0f7fd892946b3dae6\nReviewed-on: https://chromium-review.googlesource.com/c/webpagereplay/+/7706302\nReviewed-by: Elad Alon \u003celadalon@chromium.org\u003e\nAuto-Submit: Victor Vianna \u003cvictorvianna@google.com\u003e\n"
    },
    {
      "commit": "8fb3ef617f39a179c37bc95fad7ac32610440460",
      "tree": "380fd7b8cac1587fba9df638eedf36a9287a21a6",
      "parents": [
        "82328858a7c3d45ba86cadd24f6e708255e37e42"
      ],
      "author": {
        "name": "Victor Hugo Vianna Silva",
        "email": "victorvianna@google.com",
        "time": "Fri Mar 27 15:11:09 2026"
      },
      "committer": {
        "name": "Elad Alon",
        "email": "eladalon@chromium.org",
        "time": "Fri Mar 27 15:47:14 2026"
      },
      "message": "Adverstise flag versions with underscore instead of dash in README.md\n\nFollow-up to crrev.com/c/7705194.\n\nChange-Id: I7a41b31019cebbdd2c343aa47c8ddf61fbda5246\nReviewed-on: https://chromium-review.googlesource.com/c/webpagereplay/+/7705316\nReviewed-by: Elad Alon \u003celadalon@chromium.org\u003e\n"
    },
    {
      "commit": "82328858a7c3d45ba86cadd24f6e708255e37e42",
      "tree": "0e23150d59e8b8c8120a2b880762b347e76705c1",
      "parents": [
        "e9cc68b5738d7d901acc25cb85e1c43de5e91947"
      ],
      "author": {
        "name": "Elad Alon",
        "email": "eladalon@google.com",
        "time": "Thu Mar 26 17:05:34 2026"
      },
      "committer": {
        "name": "Elad Alon",
        "email": "eladalon@google.com",
        "time": "Fri Mar 27 15:46:35 2026"
      },
      "message": "Change flags from underscores to dashes\n\nPreviously flags assumed the form of `--decode_response_body`, using\nunderscores. We replace these with flags of the form\n`--decode-response-body`, using dashes.\n\nTo avoid breaking dependent projects, we retain the underscore-based\nflags as hidden flags. These can be phased out in the future.\n\nChange-Id: I29c612afb1393f9da6d50490deab364ef3068b9e\nReviewed-on: https://chromium-review.googlesource.com/c/webpagereplay/+/7705194\nReviewed-by: Mikhail Khokhlov \u003ckhokhlov@google.com\u003e\nReviewed-by: Victor Vianna \u003cvictorvianna@google.com\u003e\n"
    },
    {
      "commit": "e9cc68b5738d7d901acc25cb85e1c43de5e91947",
      "tree": "c46b3c987c29ae050a2af2f75cf959379022aaec",
      "parents": [
        "7050d6899f70ebf98932491f069f9fc9cbe5fb0f"
      ],
      "author": {
        "name": "Victor Hugo Vianna Silva",
        "email": "victorvianna@google.com",
        "time": "Fri Mar 27 15:30:57 2026"
      },
      "committer": {
        "name": "Victor Vianna",
        "email": "victorvianna@google.com",
        "time": "Fri Mar 27 15:33:03 2026"
      },
      "message": "Remove unnecessary CheckChangeOnUpload() from PRESUBMIT.py\n\nPresubmit 2.0 doesn\u0027t need this, see below.\n\nhttps://chromium.googlesource.com/website/+/fb527ddd68a83a128cb15abfd4e8c718297da6a4/site/developers/how-tos/depottools/presubmit-scripts/index.md#version-1\n\nChange-Id: Ia12e3a872347e2555e6a85d3b5b3ced1227fe812\nReviewed-on: https://chromium-review.googlesource.com/c/webpagereplay/+/7705317\nReviewed-by: Elad Alon \u003celadalon@chromium.org\u003e\nAuto-Submit: Victor Vianna \u003cvictorvianna@google.com\u003e\n"
    },
    {
      "commit": "7050d6899f70ebf98932491f069f9fc9cbe5fb0f",
      "tree": "4f25768bbc50b78532f75a74f1fb3df9319f9b1f",
      "parents": [
        "1ab8f8973c719bf37569bf647acbc0a6fef51c54"
      ],
      "author": {
        "name": "Elad Alon",
        "email": "eladalon@google.com",
        "time": "Fri Mar 27 13:50:00 2026"
      },
      "committer": {
        "name": "Elad Alon",
        "email": "eladalon@google.com",
        "time": "Fri Mar 27 14:37:31 2026"
      },
      "message": "httparchive: Initialize default log level to \"INFO\"\n\nThe httparchive utility uses a global \"Before\" hook to configure the\nlogger using cfg.LogLevel. However, several subcommands (such as add,\nmerge, and edit-metadata) do not include the --log_level flag in their\ndefinitions. For these subcommands, cfg.LogLevel remained an empty\nstring, causing the logging library to return an \"unknown name\" error\nduring initialization.\n\nThis CL initializes cfg.LogLevel to \"INFO\" in main(), providing a safe\ndefault for all subcommands while still allowing those that define the\nflag to override it.\n\nTEST\u003dgo run src/httparchive.go edit-metadata \u003cin\u003e \u003cout\u003e no longer fails\nwith log_level error.\n\nChange-Id: I445f42d4d5df2a6826e9761f1f99e172c370e66e\nReviewed-on: https://chromium-review.googlesource.com/c/webpagereplay/+/7707864\nReviewed-by: Mikhail Khokhlov \u003ckhokhlov@google.com\u003e\nAuto-Submit: Elad Alon \u003celadalon@chromium.org\u003e\n"
    },
    {
      "commit": "1ab8f8973c719bf37569bf647acbc0a6fef51c54",
      "tree": "e6c267007ee671149758e8a49218ff76f66175ff",
      "parents": [
        "b0050cdc8d68357d8f9651f6a6d65be52f1c2b9f"
      ],
      "author": {
        "name": "Elad Alon",
        "email": "eladalon@google.com",
        "time": "Fri Mar 27 12:51:49 2026"
      },
      "committer": {
        "name": "Elad Alon",
        "email": "eladalon@google.com",
        "time": "Fri Mar 27 13:47:23 2026"
      },
      "message": "Fix issue with !BADKEY in logs\n\nSample log before fix:\n  time\u003d\u003ctime\u003e level\u003dINFO msg\u003d\"Proxy: SERVING response\" ServeHTTP:\u003durl !BADKEY\u003d\u003cURL\u003e ...\n\nSameple log after fix:\n  time\u003d\u003ctime\u003e level\u003dINFO msg\u003d\"Proxy: SERVING response\" url\u003d\u003cURL\u003e ...\n\nChange-Id: Id31a2578b45e068fa8e02258d1c44dde4a4ea07f\nReviewed-on: https://chromium-review.googlesource.com/c/webpagereplay/+/7706298\nReviewed-by: Mikhail Khokhlov \u003ckhokhlov@google.com\u003e\nAuto-Submit: Elad Alon \u003celadalon@chromium.org\u003e\n"
    },
    {
      "commit": "b0050cdc8d68357d8f9651f6a6d65be52f1c2b9f",
      "tree": "acd8dfc2078dfa55a960019f6fabf041c5df39c8",
      "parents": [
        "31dec1177a2b42f0aff21c858563e0bccf79843c"
      ],
      "author": {
        "name": "Elad Alon",
        "email": "eladalon@google.com",
        "time": "Thu Mar 26 21:30:27 2026"
      },
      "committer": {
        "name": "Elad Alon",
        "email": "eladalon@google.com",
        "time": "Fri Mar 27 11:24:10 2026"
      },
      "message": "Add presubmit Go test checks\n\nEnsure go test passes before `git cl upload` or `git push`.\n- Update PRESUBMIT.py to run Go tests on `git cl upload`,\n  adding missing tests.\n- Add a Git pre-push hook for standard git push users. This hook\n  can be installed by running `scripts/setup_hooks.sh` once.\n\nChange-Id: I86db79d9065d626a9ea8516f46eea576a45b6067\nReviewed-on: https://chromium-review.googlesource.com/c/webpagereplay/+/7706635\nReviewed-by: Mikhail Khokhlov \u003ckhokhlov@google.com\u003e\n"
    },
    {
      "commit": "31dec1177a2b42f0aff21c858563e0bccf79843c",
      "tree": "6abf64d3df331a642abe4a71c33dcdc6b1163f23",
      "parents": [
        "622573a6437283053fb85da80ef0e6e8c6ff1ca1"
      ],
      "author": {
        "name": "Elad Alon",
        "email": "eladalon@google.com",
        "time": "Thu Mar 26 20:51:36 2026"
      },
      "committer": {
        "name": "Elad Alon",
        "email": "eladalon@google.com",
        "time": "Fri Mar 27 11:24:10 2026"
      },
      "message": "Fix test (TestFlags in httparchive_test.go)\n\nPrevious CLs (1, 2) failed to update tests with the newly introduced\nflags (--log_level, --relative_timestamps) and new logging format.\nThis CL fixes those issues.\n\n1. I8020e8e5a18912a9098a120cb2859b47d0f7ff7f\n2. I9136e00ef2b6a054ed864cd5cc195c23f4a661c5\n\nChange-Id: Ib647bd74fbcd44a739a7a146621f0ccb74ca863a\nReviewed-on: https://chromium-review.googlesource.com/c/webpagereplay/+/7706634\nReviewed-by: Mikhail Khokhlov \u003ckhokhlov@google.com\u003e\n"
    },
    {
      "commit": "622573a6437283053fb85da80ef0e6e8c6ff1ca1",
      "tree": "170e72ce3c011897a7daa8aea62fe68d504ce9af",
      "parents": [
        "99a9003c9cbae6edccb4ec6023294bde3b126028"
      ],
      "author": {
        "name": "Elad Alon",
        "email": "eladalon@google.com",
        "time": "Wed Mar 25 15:40:56 2026"
      },
      "committer": {
        "name": "Elad Alon",
        "email": "eladalon@google.com",
        "time": "Thu Mar 26 16:54:19 2026"
      },
      "message": "Timestamp logs as MM:SS.mmm from WPR start time\n\nWhen the user specifies --relative_timestamps, calculate and display\nthe time delta since program start.\n\nExample output: time\u003d01:23.456 level\u003dINFO msg\u003d\"Starting server\"\n\nChange-Id: I9136e00ef2b6a054ed864cd5cc195c23f4a661c5\nReviewed-on: https://chromium-review.googlesource.com/c/webpagereplay/+/7702812\nReviewed-by: Victor Vianna \u003cvictorvianna@google.com\u003e\nReviewed-by: Mikhail Khokhlov \u003ckhokhlov@google.com\u003e\n"
    },
    {
      "commit": "99a9003c9cbae6edccb4ec6023294bde3b126028",
      "tree": "c5aff8103da2dc8e7089f5b8631a78f4505d5fd7",
      "parents": [
        "59d97c4bac4333c4554e16aa11636eb0e328aa50"
      ],
      "author": {
        "name": "Elad Alon",
        "email": "eladalon@google.com",
        "time": "Wed Mar 25 11:05:35 2026"
      },
      "committer": {
        "name": "Elad Alon",
        "email": "eladalon@google.com",
        "time": "Thu Mar 26 16:19:12 2026"
      },
      "message": "Refactor logging\n\nThis change updates the Web Page Replay (WPR) logging infrastructure\nto use the standard library\u0027s slog package. Using --log_level\u003dLEVEL,\nusers can ensure logs are only printed starting from a given level\nand above, with levels being DEBUG, INFO, WARN and ERROR. The default\nlevel is INFO (unlike previously, when it was ERROR).\n\nWe avoid using slog directly so that we may more easily introduce\nadditional changes in the future, such as further filtering of logs\nbased on URL or topic; also, NullLogger.\n\nChange-Id: I8020e8e5a18912a9098a120cb2859b47d0f7ff7f\nReviewed-on: https://chromium-review.googlesource.com/c/webpagereplay/+/7702792\nReviewed-by: Mikhail Khokhlov \u003ckhokhlov@google.com\u003e\nReviewed-by: Victor Vianna \u003cvictorvianna@google.com\u003e\n"
    },
    {
      "commit": "59d97c4bac4333c4554e16aa11636eb0e328aa50",
      "tree": "60d30e40703782d840e70678f96fb6ff0b1d5554",
      "parents": [
        "9f629e592f7e93bcd8991a4655dc133b39740f2e"
      ],
      "author": {
        "name": "Victor Hugo Vianna Silva",
        "email": "victorvianna@google.com",
        "time": "Wed Mar 25 14:57:37 2026"
      },
      "committer": {
        "name": "Victor Vianna",
        "email": "victorvianna@google.com",
        "time": "Wed Mar 25 17:52:37 2026"
      },
      "message": "Remove TODO about uploading binaries from standalone WPR repo\n\nThis TODO was already addressed in crrev.com/c/6936402.\n\nChange-Id: Ic448abfd93f0f6a53796c01c402ac03e7d0506af\nReviewed-on: https://chromium-review.googlesource.com/c/webpagereplay/+/7697736\nAuto-Submit: Victor Vianna \u003cvictorvianna@google.com\u003e\nReviewed-by: John Chen \u003cjohnchen@chromium.org\u003e\n"
    },
    {
      "commit": "9f629e592f7e93bcd8991a4655dc133b39740f2e",
      "tree": "58970c727b55dbe0670cf2678fdf3aa6fda6ee5e",
      "parents": [
        "6ab491068a22e16edd8fe16003fcd4ac019bf01d"
      ],
      "author": {
        "name": "Victor Hugo Vianna Silva",
        "email": "victorvianna@google.com",
        "time": "Wed Mar 25 17:21:09 2026"
      },
      "committer": {
        "name": "Victor Vianna",
        "email": "victorvianna@google.com",
        "time": "Wed Mar 25 17:29:58 2026"
      },
      "message": "Fix httparchive edit truncating responses\n\nWhen using `httparchive edit --decode_response_body`, the response body\ncould be truncated or fail to parse if the user edited the body and\nchanged its length. This was because `http.ReadResponse` used the stale\n`Content-Length` header written to the temporary file to read the body.\n\nIf the new body was shorter, reading would fail with an unexpected EOF\nwhen later trying to compress the response. Additionally, the\n`Content-Length` header was not being updated in `resp.Header` after\nediting/recompressing, causing playback issues later.\n\nThis CL fixes this by directly reading the remaining actual bytes from\nthe temporary file, ignoring the stale `Content-Length` header, and\nensuring both `resp.ContentLength` and the `Content-Length` header are\nupdated properly.\n\nChange-Id: I2babb6ad9380b23107bb46a2ae6e15a7bd7231c2\nReviewed-on: https://chromium-review.googlesource.com/c/webpagereplay/+/7698219\nReviewed-by: Mikhail Khokhlov \u003ckhokhlov@google.com\u003e\n"
    },
    {
      "commit": "6ab491068a22e16edd8fe16003fcd4ac019bf01d",
      "tree": "34e0268eec181b21386c79066cf5d4037d667466",
      "parents": [
        "411ec155b71273b75358f994329721632b12237f"
      ],
      "author": {
        "name": "Victor Hugo Vianna Silva",
        "email": "victorvianna@google.com",
        "time": "Wed Mar 25 16:52:33 2026"
      },
      "committer": {
        "name": "Victor Vianna",
        "email": "victorvianna@google.com",
        "time": "Wed Mar 25 17:29:58 2026"
      },
      "message": "Support EDITOR with extra flags when editing archive\n\nBefore this CL, this would fail:\n\n# For vscode, -w is needed so the command waits for the user to close\n# the file.\nEDITOR\u003d\u0027code -w\u0027 go run src/httparchive.go edit src.wprgo dst.wprgo\n\nChange-Id: I5c6a0a467260dabbd608df6bfe83b5157f2860bc\nReviewed-on: https://chromium-review.googlesource.com/c/webpagereplay/+/7697739\nAuto-Submit: Victor Vianna \u003cvictorvianna@google.com\u003e\nReviewed-by: Mikhail Khokhlov \u003ckhokhlov@google.com\u003e\n"
    },
    {
      "commit": "411ec155b71273b75358f994329721632b12237f",
      "tree": "56220fc427d0893a95aea75ddc172cbbd6eab8f3",
      "parents": [
        "5518340ae0840b49c252961b9de07b3a9cd2dd5d"
      ],
      "author": {
        "name": "Victor Hugo Vianna Silva",
        "email": "victorvianna@google.com",
        "time": "Wed Mar 25 13:48:52 2026"
      },
      "committer": {
        "name": "Mikhail Khokhlov",
        "email": "khokhlov@google.com",
        "time": "Wed Mar 25 14:16:41 2026"
      },
      "message": "Update \"Getting the code\" instructions to require depot_tools\n\nThis is necessary following crrev.com/c/7689218, since the repository\nnow has DEPS.\n\nAlso fix the `go get` instructions.\n\nChange-Id: I8465e356999df561b34f820cfbaf1cdbff96de59\nReviewed-on: https://chromium-review.googlesource.com/c/webpagereplay/+/7697921\nReviewed-by: Mikhail Khokhlov \u003ckhokhlov@google.com\u003e\nAuto-Submit: Victor Vianna \u003cvictorvianna@google.com\u003e\n"
    },
    {
      "commit": "5518340ae0840b49c252961b9de07b3a9cd2dd5d",
      "tree": "91913b44742553869092658a89404793810c4eab",
      "parents": [
        "bfa558e45125e077f2ce8b6c6b643ca49d26f552"
      ],
      "author": {
        "name": "Elad Alon",
        "email": "eladalon@google.com",
        "time": "Tue Mar 24 15:21:51 2026"
      },
      "committer": {
        "name": "Elad Alon",
        "email": "eladalon@google.com",
        "time": "Tue Mar 24 15:25:22 2026"
      },
      "message": "Extend script injection to standalone JavaScript files\n\n(Relanding I0fd40c86572a02aac6a12cf7d94f7f23abd99bae with\nthe correct author.)\n\nThis change allows deterministic.js (and other scripts) to be\nprepended to standalone JavaScript files. This ensures that\ndeterministic overrides are applied in execution contexts like\nWeb Workers, where HTML-based injection is not effective.\n\nChange-Id: I0ec29061dee178fa0f4b4c45193f560f992aeee9\nReviewed-on: https://chromium-review.googlesource.com/c/webpagereplay/+/7694141\nReviewed-by: Victor Vianna \u003cvictorvianna@google.com\u003e\n"
    },
    {
      "commit": "bfa558e45125e077f2ce8b6c6b643ca49d26f552",
      "tree": "ef7bbe6993dc6949efccb60944b5e42994aa064c",
      "parents": [
        "6e8427e53c07a4c84cc1a2fa4b327174f0af0135"
      ],
      "author": {
        "name": "Elad Alon",
        "email": "eladalon@chromium.org",
        "time": "Tue Mar 24 15:17:41 2026"
      },
      "committer": {
        "name": "Elad Alon",
        "email": "eladalon@chromium.org",
        "time": "Tue Mar 24 15:20:38 2026"
      },
      "message": "Revert \"Extend script injection to standalone JavaScript files\"\n\nThis reverts commit 6e8427e53c07a4c84cc1a2fa4b327174f0af0135.\n\nReason for revert: Wrong author because Victor accidentally overrode.\n\nOriginal change\u0027s description:\n\u003e Extend script injection to standalone JavaScript files\n\u003e\n\u003e This change allows deterministic.js (and other scripts) to be\n\u003e prepended to standalone JavaScript files. This ensures that\n\u003e deterministic overrides are applied in execution contexts like\n\u003e Web Workers, where HTML-based injection is not effective.\n\u003e\n\u003e Change-Id: I0fd40c86572a02aac6a12cf7d94f7f23abd99bae\n\u003e Reviewed-on: https://chromium-review.googlesource.com/c/webpagereplay/+/7689153\n\u003e Reviewed-by: Mikhail Khokhlov \u003ckhokhlov@google.com\u003e\n\nNo-Presubmit: true\nNo-Tree-Checks: true\nNo-Try: true\nChange-Id: I73a3a5e5d8f869e92dbbe1884c39ec5d93d80f5f\nReviewed-on: https://chromium-review.googlesource.com/c/webpagereplay/+/7695517\nAuto-Submit: Elad Alon \u003celadalon@chromium.org\u003e\nReviewed-by: Victor Vianna \u003cvictorvianna@google.com\u003e\n"
    },
    {
      "commit": "6e8427e53c07a4c84cc1a2fa4b327174f0af0135",
      "tree": "91913b44742553869092658a89404793810c4eab",
      "parents": [
        "98c06239dce6d1a25008024043b7a9c1becdc632"
      ],
      "author": {
        "name": "Victor Hugo Vianna Silva",
        "email": "victorvianna@google.com",
        "time": "Mon Mar 23 21:38:26 2026"
      },
      "committer": {
        "name": "Elad Alon",
        "email": "eladalon@chromium.org",
        "time": "Tue Mar 24 15:13:50 2026"
      },
      "message": "Extend script injection to standalone JavaScript files\n\nThis change allows deterministic.js (and other scripts) to be\nprepended to standalone JavaScript files. This ensures that\ndeterministic overrides are applied in execution contexts like\nWeb Workers, where HTML-based injection is not effective.\n\nChange-Id: I0fd40c86572a02aac6a12cf7d94f7f23abd99bae\nReviewed-on: https://chromium-review.googlesource.com/c/webpagereplay/+/7689153\nReviewed-by: Mikhail Khokhlov \u003ckhokhlov@google.com\u003e\n"
    },
    {
      "commit": "98c06239dce6d1a25008024043b7a9c1becdc632",
      "tree": "ef7bbe6993dc6949efccb60944b5e42994aa064c",
      "parents": [
        "505f70f238f5d1f360bc7e5b75c6b4fdf87a9f56"
      ],
      "author": {
        "name": "Elad Alon",
        "email": "eladalon@google.com",
        "time": "Fri Mar 20 17:21:33 2026"
      },
      "committer": {
        "name": "Elad Alon",
        "email": "eladalon@google.com",
        "time": "Tue Mar 24 15:13:36 2026"
      },
      "message": "Indent contents of deterministic.js\n\nThis CL is part of a chain that makes modifications\nto deterministic. To help reviewers discern \"real\"\nchanges from purely cosmetic ones, we relegate\nthis indentation change to a separate CL, making it\nclearer what \"actual\" changes are made by the next\nCL in the chain.\n\nChange-Id: I7d5714314f9140b2c38d248c00667fd17f599fb0\nReviewed-on: https://chromium-review.googlesource.com/c/webpagereplay/+/7686013\nReviewed-by: Victor Vianna \u003cvictorvianna@google.com\u003e\n"
    },
    {
      "commit": "505f70f238f5d1f360bc7e5b75c6b4fdf87a9f56",
      "tree": "cc86624cd1010814e59f43a35f9c9dbc3056e894",
      "parents": [
        "b03252f7db00d76b0ab0ccca545fe1ab203064b2"
      ],
      "author": {
        "name": "Elad Alon",
        "email": "eladalon@google.com",
        "time": "Fri Mar 13 21:21:16 2026"
      },
      "committer": {
        "name": "Elad Alon",
        "email": "eladalon@google.com",
        "time": "Mon Mar 23 15:23:47 2026"
      },
      "message": "Store injected scripts in archives\n\nArchives recorded with injected scripts (such as deterministic.js) now\nstore the names and contents of those scripts directly within the\narchive metadata. This ensures that archives are self-contained and can\nbe replayed accurately on different machines without requiring the\noriginal script files to be present on the local disk.\n\nKey Changes:\n* Persistence: Introduced an InjectedScript struct (Name/Contents) and\n  added an InjectedScripts slice to the Archive struct to preserve\n  script data.\n* Recording: During recording, scripts specified via --inject_scripts\n  are read from disk, stored in the archive, and applied to responses.\n  Metadata such as the deterministic time seed and constant random\n  result are also persisted.\n* Replay Logic:\n  * Archive-First: By default, the replay server now uses scripts\n    stored in the archive to ensure consistency with the original\n    recording.\n  * Explicit Overrides: If the user explicitly provides the\n    --inject_scripts flag during replay, WPR overrides the archive\n    and loads the specified files from disk.\n  * Legacy Fallback: Maintained a fallback for older archives\n    (lacking stored scripts) to continue loading from disk as before.\n\nNote that this CL also fixes a pre-existing theoretical issue, where\nreplacements were performed on all injected scripts, although they\nwere intended only for deterministic.js.\n\nAI Tools acknowledgement:\nGemini CLI helped produce this CL and its description.\n\nChange-Id: Iafd49075790364e6f05fe4a6e0a40cf3dc46b134\nReviewed-on: https://chromium-review.googlesource.com/c/webpagereplay/+/7666181\nReviewed-by: Victor Vianna \u003cvictorvianna@google.com\u003e\n"
    },
    {
      "commit": "b03252f7db00d76b0ab0ccca545fe1ab203064b2",
      "tree": "8e2938cf9034dd90471d9529319dca9a695478a7",
      "parents": [
        "d069f82704535063feb99ee2afc5948d9df467ca"
      ],
      "author": {
        "name": "Elad Alon",
        "email": "eladalon@google.com",
        "time": "Mon Mar 23 13:16:26 2026"
      },
      "committer": {
        "name": "Elad Alon",
        "email": "eladalon@google.com",
        "time": "Mon Mar 23 13:59:10 2026"
      },
      "message": "Enable deterministic Go builds and skip redundant uploads.\n\nThis change optimises the binary upload process in\n`scripts/upload_new_binaries.py` by ensuring that builds\nare bit-for-bit identical across runs and skipping uploads\nwhen no changes are detected.\n\nTo that end, we add `-trimpath` to the `go build` command.\nThis removes absolute file system paths (like the unique\n`tempfile.mkdtemp()` used by the script) from the compiled\nbinary, resulting in deterministic SHA1 hashes.\n\nChange-Id: I43ab8505a8bbbfe7274a17bbaf684cf8e35cad87\nReviewed-on: https://chromium-review.googlesource.com/c/webpagereplay/+/7689223\nReviewed-by: Mikhail Khokhlov \u003ckhokhlov@google.com\u003e\n"
    },
    {
      "commit": "d069f82704535063feb99ee2afc5948d9df467ca",
      "tree": "ed70d88c2d26310678917458d65cb33c1f2a544f",
      "parents": [
        "c8f0214b7bec4030c2adcd9f22cb2fe130bdfe1f"
      ],
      "author": {
        "name": "Elad Alon",
        "email": "eladalon@google.com",
        "time": "Fri Mar 20 20:27:59 2026"
      },
      "committer": {
        "name": "Elad Alon",
        "email": "eladalon@google.com",
        "time": "Mon Mar 23 13:58:38 2026"
      },
      "message": "Extract hardcoded test script into a constant\n\nRemoves the underlying assumption that the same JS code\nwas used in a few places, replacing it with the code-based\nguarantee that this is the case.\n\nChange-Id: I43140a1f578203000d642ae7eb056e8269273deb\nReviewed-on: https://chromium-review.googlesource.com/c/webpagereplay/+/7689771\nReviewed-by: Mikhail Khokhlov \u003ckhokhlov@google.com\u003e\n"
    },
    {
      "commit": "c8f0214b7bec4030c2adcd9f22cb2fe130bdfe1f",
      "tree": "6812ef2ec06c0d26972222a5ec418cc91413e75f",
      "parents": [
        "8fcef68a661496777ed33143946b9ff89c62b538"
      ],
      "author": {
        "name": "Elad Alon",
        "email": "eladalon@google.com",
        "time": "Fri Mar 20 15:31:30 2026"
      },
      "committer": {
        "name": "Elad Alon",
        "email": "eladalon@google.com",
        "time": "Mon Mar 23 13:46:00 2026"
      },
      "message": "Replace window with self in deterministic.js for Worker compatibility\n\nIn Web Worker contexts, the `window` global is not defined, which\ncauses a ReferenceError when the script is injected. This change\nreplaces `window` with `self`, a universal global reference available\nin both the main thread (where it refers to `Window`) and Workers\n(where it refers to `WorkerGlobalScope`).\n\nThis ensures the script can safely override global properties and\nevent listeners in all execution environments. This paves the way\ninto injecting `deterministic.js` into workers.\n\nChange-Id: Iac4a0bfa656c3ac00724e7631513a50d902552e3\nReviewed-on: https://chromium-review.googlesource.com/c/webpagereplay/+/7685653\nReviewed-by: Mikhail Khokhlov \u003ckhokhlov@google.com\u003e\n"
    },
    {
      "commit": "8fcef68a661496777ed33143946b9ff89c62b538",
      "tree": "90254b214b04cc32aebc726cca3edc5ac0db34c5",
      "parents": [
        "55866a2a989c9dd748f375f290f8ed77b63ad9af"
      ],
      "author": {
        "name": "Elad Alon",
        "email": "eladalon@google.com",
        "time": "Thu Mar 19 18:19:08 2026"
      },
      "committer": {
        "name": "Elad Alon",
        "email": "eladalon@google.com",
        "time": "Mon Mar 23 13:42:56 2026"
      },
      "message": "Deep copy reference types in cloneFieldsExceptRequests()\n\nPreviously, cloneFieldsExceptRequests() performed a shallow copy\nfor Certs, NegotiatedProtocol, and ConstantMathRandomResult. This\nmeant that modifying a cloned Archive could unintentionally modify\nthe original Archive.\n\nThis CL updates the function to perform a deep copy for these fields\nand adds a test to verify their independence.\n\nNO_IFTTT\u003dNo change to the fields, only to the way they are handled.\n\nChange-Id: I40188f4fe711490e89cad68e1476cee22768b7d4\nReviewed-on: https://chromium-review.googlesource.com/c/webpagereplay/+/7685810\nReviewed-by: Mikhail Khokhlov \u003ckhokhlov@google.com\u003e\n"
    },
    {
      "commit": "55866a2a989c9dd748f375f290f8ed77b63ad9af",
      "tree": "f7ba529c9c40d5d728a02b6e25527b54a2d0416f",
      "parents": [
        "6e096fce9d6f75c58c40daad4228368f93ee9020"
      ],
      "author": {
        "name": "Victor Hugo Vianna Silva",
        "email": "victorvianna@google.com",
        "time": "Mon Mar 23 11:42:13 2026"
      },
      "committer": {
        "name": "Victor Vianna",
        "email": "victorvianna@google.com",
        "time": "Mon Mar 23 11:43:37 2026"
      },
      "message": "Don\u0027t request binary_dependencies.json update if only *_test.go changed\n\nTest files never make it into the prebuilt binaries.\n\nChange-Id: I9f49faf4b4124b7ce7cea72501a1b4ba411da160\nReviewed-on: https://chromium-review.googlesource.com/c/webpagereplay/+/7689221\nReviewed-by: Mikhail Khokhlov \u003ckhokhlov@google.com\u003e\nAuto-Submit: Victor Vianna \u003cvictorvianna@google.com\u003e\n"
    },
    {
      "commit": "6e096fce9d6f75c58c40daad4228368f93ee9020",
      "tree": "15dcfab284afd3d74fe9eccd83afc65e2ff0ecb2",
      "parents": [
        "7af0f813d57f8bdedea95239f02efe2796a96ab1"
      ],
      "author": {
        "name": "Victor Hugo Vianna Silva",
        "email": "victorvianna@google.com",
        "time": "Mon Mar 23 10:36:11 2026"
      },
      "committer": {
        "name": "Victor Vianna",
        "email": "victorvianna@google.com",
        "time": "Mon Mar 23 11:14:12 2026"
      },
      "message": "Fix formatting presubmit error\n\nIntroduced in crrev.com/c/7663184. Attempting to upload a CL is failing\nwith the error below.\n\n** Presubmit ERRORS: 1 **\nChecking go format\nvpython3 scripts/check_go_format.py (12.08s) failed\nThe following files are not formatted. Run gofmt to fix.\n    src/webpagereplay/proxy_test.go\n\nChange-Id: I0a89fe8cf42a4e54017a38245ea6ca10feefb44e\nReviewed-on: https://chromium-review.googlesource.com/c/webpagereplay/+/7689217\nReviewed-by: Elad Alon \u003celadalon@chromium.org\u003e\nAuto-Submit: Victor Vianna \u003cvictorvianna@google.com\u003e\n"
    },
    {
      "commit": "7af0f813d57f8bdedea95239f02efe2796a96ab1",
      "tree": "3a935ea5de35daf40af5aa346cec09019314908c",
      "parents": [
        "c4a90c39129b68d52c6545de1164cc2e39c99e15"
      ],
      "author": {
        "name": "Victor Hugo Vianna Silva",
        "email": "victorvianna@google.com",
        "time": "Mon Mar 23 10:44:12 2026"
      },
      "committer": {
        "name": "Victor Vianna",
        "email": "victorvianna@google.com",
        "time": "Mon Mar 23 10:47:02 2026"
      },
      "message": "Support `git cl format --js` in standalone checkout and add presubmit\n\nThis was already supported when webpagereplay was checked out\nwithin chromium and crossbench but not in its standalone form.\n\nAlso add a presubmit check for the formatting.\n\nChange-Id: I83daf621bff98b129b03b6e1d25b2a750c20e76d\nReviewed-on: https://chromium-review.googlesource.com/c/webpagereplay/+/7689218\nAuto-Submit: Victor Vianna \u003cvictorvianna@google.com\u003e\nReviewed-by: Mikhail Khokhlov \u003ckhokhlov@google.com\u003e\n"
    },
    {
      "commit": "c4a90c39129b68d52c6545de1164cc2e39c99e15",
      "tree": "e28b158b1a24b55bf6d81fc2081191e4e348835b",
      "parents": [
        "3616286629e658cd0c4f8ecc11f0cb6b255d3ecd"
      ],
      "author": {
        "name": "Elad Alon",
        "email": "eladalon@google.com",
        "time": "Thu Mar 19 17:52:17 2026"
      },
      "committer": {
        "name": "Elad Alon",
        "email": "eladalon@google.com",
        "time": "Mon Mar 23 10:44:33 2026"
      },
      "message": "Add more active owners (eladalon, khokhlov)\n\nChange-Id: I3d11adbe57d02127b26a59a42cbd0c41888e0103\nReviewed-on: https://chromium-review.googlesource.com/c/webpagereplay/+/7679266\nReviewed-by: Victor Vianna \u003cvictorvianna@google.com\u003e\nReviewed-by: Mikhail Khokhlov \u003ckhokhlov@google.com\u003e\n"
    },
    {
      "commit": "3616286629e658cd0c4f8ecc11f0cb6b255d3ecd",
      "tree": "f4179d86b7f03d457e55a967477b602fb3f64dd2",
      "parents": [
        "afea9461b9c13b5fbaac887059fbc673e077948a"
      ],
      "author": {
        "name": "Elad Alon",
        "email": "eladalon@google.com",
        "time": "Tue Mar 17 21:36:18 2026"
      },
      "committer": {
        "name": "Elad Alon",
        "email": "eladalon@google.com",
        "time": "Tue Mar 17 22:38:31 2026"
      },
      "message": "s/addAll/add-all/\n\nReplace addAll with add-all for better consistency\nwith other commands.\n\nChange-Id: Iab0cee58a3329b0fa5388605222efe65c6fc1eef\nReviewed-on: https://chromium-review.googlesource.com/c/webpagereplay/+/7676818\nReviewed-by: Victor Vianna \u003cvictorvianna@google.com\u003e\n"
    },
    {
      "commit": "afea9461b9c13b5fbaac887059fbc673e077948a",
      "tree": "3a08d5548cecd59522463fd16cffb2bfeeff4f1f",
      "parents": [
        "49ac6147bcbcc8d5bab9ec2aadd3126b141c8a6c"
      ],
      "author": {
        "name": "Elad Alon",
        "email": "eladalon@google.com",
        "time": "Mon Mar 16 22:17:25 2026"
      },
      "committer": {
        "name": "Elad Alon",
        "email": "eladalon@google.com",
        "time": "Tue Mar 17 16:26:57 2026"
      },
      "message": "Add metadata management\n\nIntroduces three new subcommands to the httparchive utility:\n1. read-metadata: Displays an archive\u0027s metadata to stdout.\n2. write-metadata: Writes a provided string to an archive\u0027s metadata.\n3. edit-metadata: Opens the metadata in the user\u0027s $EDITOR for\n   manual modification.\n\nChange-Id: I02c8a9730239dfa81d3b313a690c5eff7a4f5c99\nReviewed-on: https://chromium-review.googlesource.com/c/webpagereplay/+/7672040\nReviewed-by: Victor Vianna \u003cvictorvianna@google.com\u003e\n"
    },
    {
      "commit": "49ac6147bcbcc8d5bab9ec2aadd3126b141c8a6c",
      "tree": "6a2afca194bbeea875f1fd65a8e1dab138627e3e",
      "parents": [
        "3c8a1aecbac57902186242450a4d1ba4930407a4"
      ],
      "author": {
        "name": "Elad Alon",
        "email": "eladalon@google.com",
        "time": "Mon Mar 16 22:32:01 2026"
      },
      "committer": {
        "name": "Elad Alon",
        "email": "eladalon@google.com",
        "time": "Tue Mar 17 16:26:57 2026"
      },
      "message": "Remove unused first argument from checkArgs in httparchive.go\n\nThe first argument \u0027cmdName\u0027 was not used within the checkArgs function\nand its sub-functions. This CL removes it from the definition and all\ncall sites in src/httparchive.go.\n\nChange-Id: Ie613b7523e7ee451e8ee2b2d57402c476805f5db\nReviewed-on: https://chromium-review.googlesource.com/c/webpagereplay/+/7672038\nReviewed-by: Victor Vianna \u003cvictorvianna@google.com\u003e\n"
    },
    {
      "commit": "3c8a1aecbac57902186242450a4d1ba4930407a4",
      "tree": "2ad04d1a135a42ca58bcd91b15d3437708de395e",
      "parents": [
        "3ce1d13459b97a9b1f52909bd3344905be010fe3"
      ],
      "author": {
        "name": "Elad Alon",
        "email": "eladalon@google.com",
        "time": "Mon Mar 09 16:27:46 2026"
      },
      "committer": {
        "name": "Elad Alon",
        "email": "eladalon@google.com",
        "time": "Fri Mar 13 16:34:06 2026"
      },
      "message": "Add support for a constant Math.random() result via a new flag\n\nIntroduces a --constant-math-random-result flag to allow forcing\nMath.random() to return a single constant value. This improves\ndeterminism during replay in cases where the sequence of Math.random()\ncalls might be reordered due to external factors, which would otherwise\nbreak the standard deterministic sequence.\n\nKey changes:\n* Flag Support: Added --constant-math-random-result to wpr.go,\n  with validation to ensure the value is within the [0, 1) range.\n* Archive Integration: The constant value is now stored within the\n  Archive struct, allowing replays to automatically use the value\n  captured during recording.\n* Script Injection: Updated deterministic.js and the script injection\n  logic in src/httparchive.go and src/wpr.go to handle the new\n  {{WPR_CONSTANT_RANDOM_RESULT}} placeholder.\n* Replay Validation: Added a warning if the\n  --constant-math-random-result flag is manually provided during replay\n  and differs from the value stored in the archive.\n\nChange-Id: I8a39efe0595a0b12937600f196d374cf7cff97da\nReviewed-on: https://chromium-review.googlesource.com/c/webpagereplay/+/7663184\nReviewed-by: Victor Vianna \u003cvictorvianna@google.com\u003e\nReviewed-by: Igor Kraskevich \u003ckraskevich@google.com\u003e\n"
    },
    {
      "commit": "3ce1d13459b97a9b1f52909bd3344905be010fe3",
      "tree": "9ef08137cc4de90b9603a14d4cd2f82acf060805",
      "parents": [
        "b53b8b0f65d8dff4845ea0f2730db61ded41f909"
      ],
      "author": {
        "name": "Elad Alon",
        "email": "eladalon@google.com",
        "time": "Thu Mar 12 14:37:33 2026"
      },
      "committer": {
        "name": "Elad Alon",
        "email": "eladalon@google.com",
        "time": "Thu Mar 12 14:50:52 2026"
      },
      "message": "Improve deterministic.js readability\n\nMove the section that overrides crypto.getRandomValues()\naway from the section that overrides Math.random().\nThis makes it easier for humans to follow what happens where,\nespecially for subsequent changes that will introduce a bit\nmore nuance to the way in which both of these are overridden.\n\nChange-Id: I27ce1860c9436a7ff112c8cff1d466f390c15b5a\nReviewed-on: https://chromium-review.googlesource.com/c/webpagereplay/+/7661564\nReviewed-by: Victor Vianna \u003cvictorvianna@google.com\u003e\n"
    },
    {
      "commit": "b53b8b0f65d8dff4845ea0f2730db61ded41f909",
      "tree": "f231adcd44afc8b5fb2067a2263317e80ecc6a8f",
      "parents": [
        "c980c3469d8655ea4c0a6d5c4dc4deefd3b162a5"
      ],
      "author": {
        "name": "Elad Alon",
        "email": "eladalon@google.com",
        "time": "Thu Mar 12 14:28:35 2026"
      },
      "committer": {
        "name": "Elad Alon",
        "email": "eladalon@google.com",
        "time": "Thu Mar 12 14:38:56 2026"
      },
      "message": "Move away from `var` in deterministic.js\n\n`var` is obsolete, replaced by `let` and `const`. In this CL, Gemini is\nused to modernise the code (supervised by the human author of the CL).\n\nTo quote Gemini on why this replacement is safe:\n\n1. Existing ES6+ Usage: The file already utilizes modern JavaScript\n   features, including const, arrow functions (\u003d\u003e), and the class\n   keyword (e.g., class MockConnection extends EventTarget). This\n   confirms that the execution environment (the browser where this\n   script is injected) is already expected to support ES6+.\n2. Scope Integrity: All var declarations are contained within IIFEs\n   (Immediately Invoked Function Expressions) or within specific\n   functions (like crypto.getRandomValues or getTimezoneOffset). Because\n   they are all declared at the top of their respective function scopes,\n   changing them to block-scoped let or const will not change their\n   visibility or lifecycle.\n3. No Hoisting or Redeclaration Reliance:\n   * None of the variables are used before they are declared in their\n     respective scopes.\n   * There are no instances of variable redeclaration (e.g.,\n     var x; ... var x;) which var allows but let/const would forbid.\n4. Loop Safety: The single for loop (for (var i \u003d 0; ... )) does not\n   contain any closures that would be affected by the difference\n   between function-scoping and block-scoping. Changing it to let i is\n   safe and more idiomatic.\n5. Template Placeholders: The placeholder {{WPR_TIME_SEED_TIMESTAMP}}\n   is used in a simple string-replacement context by the Web Page\n   Replay backend. Modernizing the declaration to let or const will\n   not interfere with this substitution.\n\nChange-Id: I51f822e09b8132c46734c1b52f337ba5ea568ba0\nReviewed-on: https://chromium-review.googlesource.com/c/webpagereplay/+/7661266\nReviewed-by: Victor Vianna \u003cvictorvianna@google.com\u003e\n"
    },
    {
      "commit": "c980c3469d8655ea4c0a6d5c4dc4deefd3b162a5",
      "tree": "0fec55844116cac45ec2eec0c609c371df6cbade",
      "parents": [
        "0accc0400e25d2da7ada173b580ca4fd4ccdb07a"
      ],
      "author": {
        "name": "Victor Hugo Vianna Silva",
        "email": "victorvianna@google.com",
        "time": "Thu Mar 12 12:35:51 2026"
      },
      "committer": {
        "name": "Victor Vianna",
        "email": "victorvianna@google.com",
        "time": "Thu Mar 12 12:37:54 2026"
      },
      "message": "Have scripts/upload_new_binaries.py delete the binaries it builds\n\nBefore this CL, running this script would leave the tree dirty with\nthe following untracked files.\n- src/httparchive\n- src/httparchive.exe\n- src/wpr.exe\n- src/wpr\n\nNow the script builds the files in a temporary directory, and deletes\nthem by the end of execution.\n\nChange-Id: I1baa246963c51bd0afbcc785baf7f3b93761399b\nReviewed-on: https://chromium-review.googlesource.com/c/webpagereplay/+/7661265\nReviewed-by: Mikhail Khokhlov \u003ckhokhlov@google.com\u003e\n"
    },
    {
      "commit": "0accc0400e25d2da7ada173b580ca4fd4ccdb07a",
      "tree": "e3f5ec26b5c3cfdfb65485a440063bb003eedf14",
      "parents": [
        "cd658a28ca53d335094eb739a1e27d09ea7c46be"
      ],
      "author": {
        "name": "Victor Hugo Vianna Silva",
        "email": "victorvianna@google.com",
        "time": "Thu Mar 12 12:27:36 2026"
      },
      "committer": {
        "name": "Victor Vianna",
        "email": "victorvianna@google.com",
        "time": "Thu Mar 12 12:37:43 2026"
      },
      "message": "Clean-up changes in scripts/upload_new_binaries.py\n\nNo behavior change. Improves the diff in an upcoming CL by extracting\nsome chunks that move code around.\n- Extract conversion from binary_dependencies.json keys to GOARCH and\n  GOOS to separate functions.\n- Terminology: \"update\" -\u003e \"upload\".\n- Fix styleguide violation: BuildAndUpdateGoBinary() -\u003e\n  build_and_upload_go_binary().\n- Move _SUPPORTED_PLATFORMS close to other file-level constants.\n\nChange-Id: I7d025ea168843b708c4316e4380821d7558f85a1\nReviewed-on: https://chromium-review.googlesource.com/c/webpagereplay/+/7661264\nReviewed-by: Mikhail Khokhlov \u003ckhokhlov@google.com\u003e\n"
    },
    {
      "commit": "cd658a28ca53d335094eb739a1e27d09ea7c46be",
      "tree": "ab360e6a114b60d1cef33d29525e7a35ebc47a71",
      "parents": [
        "a0578140805c3c2bf3e302faaabfdfe147e095db"
      ],
      "author": {
        "name": "Elad Alon",
        "email": "eladalon@google.com",
        "time": "Thu Mar 12 10:38:56 2026"
      },
      "committer": {
        "name": "Elad Alon",
        "email": "eladalon@google.com",
        "time": "Thu Mar 12 11:03:05 2026"
      },
      "message": "Don\u0027t panic if the protocol is the same\n\nChange-Id: I0139808d5080d81720bfdea1c9835e5bd8aa7431\nReviewed-on: https://chromium-review.googlesource.com/c/webpagereplay/+/7661120\nReviewed-by: Victor Vianna \u003cvictorvianna@google.com\u003e\n"
    },
    {
      "commit": "a0578140805c3c2bf3e302faaabfdfe147e095db",
      "tree": "739c3b3557f5ae9b848c189bf55a7a18c0634ff1",
      "parents": [
        "8bb88234a0959017eb35d2086a4bf4c5d5aff029"
      ],
      "author": {
        "name": "Elad Alon",
        "email": "eladalon@google.com",
        "time": "Tue Mar 10 15:34:54 2026"
      },
      "committer": {
        "name": "Elad Alon",
        "email": "eladalon@google.com",
        "time": "Thu Mar 12 11:03:05 2026"
      },
      "message": "Don\u0027t panic over equivalent certs\n\nA somewhat recent change (crrev.com/c/7106523) made\nWPR panicupon encountering a second certificate chain\nfor a host where it already had a certificate chain.\nFollowing that change, many panics are encountered,\neven for recordings where the certificate chains\nare quite similar. We relax the rules so that the\ntool would stay calmer, panicking less often.\n\nChange-Id: I3411fa083601db09cfc231415b6634c05af04bd8\nReviewed-on: https://chromium-review.googlesource.com/c/webpagereplay/+/7657927\nReviewed-by: Victor Vianna \u003cvictorvianna@google.com\u003e\n"
    },
    {
      "commit": "8bb88234a0959017eb35d2086a4bf4c5d5aff029",
      "tree": "3569d8245144683cab5699af6698127d1d5f991e",
      "parents": [
        "22be07d7809409644d7e292d9495fa8a251d5f29"
      ],
      "author": {
        "name": "Victor Hugo Vianna Silva",
        "email": "victorvianna@google.com",
        "time": "Wed Mar 11 18:25:49 2026"
      },
      "committer": {
        "name": "Victor Vianna",
        "email": "victorvianna@google.com",
        "time": "Thu Mar 12 09:56:20 2026"
      },
      "message": "Remove _ from identifiers to respect go styleguide\n\nhttps://google.github.io/styleguide/go/guide#mixedcaps\nNew binaries were not uploaded because this CL causes no behavior\nchange.\n\nChange-Id: I37b4840a5abacda31bf7c2853071767e0db2ba6c\nReviewed-on: https://chromium-review.googlesource.com/c/webpagereplay/+/7658622\nAuto-Submit: Victor Vianna \u003cvictorvianna@google.com\u003e\nReviewed-by: Mikhail Khokhlov \u003ckhokhlov@google.com\u003e\n"
    },
    {
      "commit": "22be07d7809409644d7e292d9495fa8a251d5f29",
      "tree": "9fc6b4b7912fcc0aa68c2907442465336326b865",
      "parents": [
        "b00e15175934ad89e8bf1514e141c81c34287e93"
      ],
      "author": {
        "name": "Mikhail Khokhlov",
        "email": "khokhlov@google.com",
        "time": "Fri Feb 27 16:39:28 2026"
      },
      "committer": {
        "name": "Mikhail Khokhlov",
        "email": "khokhlov@google.com",
        "time": "Fri Feb 27 16:40:38 2026"
      },
      "message": "Fix archive editing in the case of non-empty request bodies\n\nThe edit command was broken in the case when the request had a\nnon-empty body (e.g. POST requests), because it was not handled\nproperly during marshaling/unmarshaling the request.\n\nThis CL fixes the issue.\n\nAI tools were used when generating the code.\n\nChange-Id: I58af71ed2dd4b9ecc52d1732c0cff79338f7897c\nReviewed-on: https://chromium-review.googlesource.com/c/webpagereplay/+/7616911\nReviewed-by: Victor Vianna \u003cvictorvianna@google.com\u003e\n"
    },
    {
      "commit": "b00e15175934ad89e8bf1514e141c81c34287e93",
      "tree": "fe7ce4745b4a23a7cb47f91cbe1c20bd84c9d857",
      "parents": [
        "50c853586c642039992d9b0215f87072a0967bd8"
      ],
      "author": {
        "name": "Victor Hugo Vianna Silva",
        "email": "victorvianna@google.com",
        "time": "Tue Feb 17 12:30:19 2026"
      },
      "committer": {
        "name": "Victor Vianna",
        "email": "victorvianna@google.com",
        "time": "Tue Feb 17 12:37:15 2026"
      },
      "message": "Fix httparchive error message\n\nThe goal is simply to land any reasonable WPR change to verify the new\nwebpagereplay-\u003ecatapult autoroller works. We need to wait for the\nroller to be online before landing this. Fixes a typo.\nhttps://autoroll.skia.org/r/webpagereplay-catapult\n\nBug: 430571901\nChange-Id: I859e0eefcb00f001ea9f47bb9c5685896cf77412\nReviewed-on: https://chromium-review.googlesource.com/c/webpagereplay/+/7582257\nReviewed-by: Mikhail Khokhlov \u003ckhokhlov@google.com\u003e\n"
    },
    {
      "commit": "50c853586c642039992d9b0215f87072a0967bd8",
      "tree": "cffedddfe5c97467693764ed4574542ea2ae52b7",
      "parents": [
        "3a849f576a008d0d6ba721941208397bf82cc5ac"
      ],
      "author": {
        "name": "Elad Alon",
        "email": "eladalon@google.com",
        "time": "Fri Jan 30 12:16:22 2026"
      },
      "committer": {
        "name": "Elad Alon",
        "email": "eladalon@google.com",
        "time": "Fri Jan 30 16:22:06 2026"
      },
      "message": "deterministic.js: Hard-code navigator.connection\n\nWhen replaying, prevent the device\u0027s real connection properties\nfrom being leaked to the page, which could affect behaviour and\nlead to inconsistent replays.\n\nTo that end:\n1. Hard-code navigator.connection to a simple realistic config\n   that occurs in connected devices.\n2. Prevent the \"change\" event from firing.\n\nBug: 479825968\nChange-Id: Iabc6e31146a5850b5311a091e9b842baf6795416\nReviewed-on: https://chromium-review.googlesource.com/c/webpagereplay/+/7531686\nReviewed-by: Victor Vianna \u003cvictorvianna@google.com\u003e\nAuto-Submit: Elad Alon \u003celadalon@chromium.org\u003e\n"
    },
    {
      "commit": "3a849f576a008d0d6ba721941208397bf82cc5ac",
      "tree": "2c290c2edccdae54ef2eac6013447676dba774e3",
      "parents": [
        "8e770e3016053ba5b744d21c7c8affa984086acd"
      ],
      "author": {
        "name": "Elad Alon",
        "email": "eladalon@google.com",
        "time": "Thu Jan 29 17:37:31 2026"
      },
      "committer": {
        "name": "Elad Alon",
        "email": "eladalon@google.com",
        "time": "Fri Jan 30 16:22:06 2026"
      },
      "message": "deterministic.js: Hard-code navigator.onLine to \"online\"\n\nWhen replaying, prevent the real connectivity state of the device\nfrom being leaked to the page, which could affect behaviour and\nlead to inconsistent replays.\n\nTo that end:\n1. Hard-code navigator.onLine to `true`.\n2. Prevent the \"online\" and \"offline\" events from ever firing.\n   Take both the event handler property and the event listener\n   into consideration.\n\nBug: 479825954\nChange-Id: I73842c193b4ccb62120478db24b1f7570e7fb225\nReviewed-on: https://chromium-review.googlesource.com/c/webpagereplay/+/7532785\nReviewed-by: Victor Vianna \u003cvictorvianna@google.com\u003e\nAuto-Submit: Elad Alon \u003celadalon@chromium.org\u003e\n"
    },
    {
      "commit": "8e770e3016053ba5b744d21c7c8affa984086acd",
      "tree": "fa37a186fd3589be281ac42269f18e4dc746e98c",
      "parents": [
        "2bfcbbe006bc877b35fe6bf5eb2fea96a0b0e33f"
      ],
      "author": {
        "name": "Mikhail Khokhlov",
        "email": "khokhlov@google.com",
        "time": "Thu Jan 29 14:35:47 2026"
      },
      "committer": {
        "name": "Mikhail Khokhlov",
        "email": "khokhlov@google.com",
        "time": "Thu Jan 29 14:42:36 2026"
      },
      "message": "Fix trimming/editing WPR archives\n\nBefore this CL, httparchive.go would drop all fields in the archive,\napart from requests, when trimming or editing. This CL fixes that.\n\nChange-Id: I5bb77d07ee6cdd6d87dde7feeca24ded0b7526ca\nReviewed-on: https://chromium-review.googlesource.com/c/webpagereplay/+/7532279\nReviewed-by: Victor Vianna \u003cvictorvianna@google.com\u003e\n"
    },
    {
      "commit": "2bfcbbe006bc877b35fe6bf5eb2fea96a0b0e33f",
      "tree": "1f17a6a24fe4cc507023e2447902a5e1ab3cf5f1",
      "parents": [
        "052833a44dd2f538b85936092bad545b6062e193"
      ],
      "author": {
        "name": "James Woo",
        "email": "jewoo@google.com",
        "time": "Wed Dec 03 18:23:35 2025"
      },
      "committer": {
        "name": "James Woo",
        "email": "jewoo@google.com",
        "time": "Wed Dec 03 18:26:14 2025"
      },
      "message": "Fix panic in RecordHost{Certificate,NegotiatedProtocol}\n\nThese must only be called if the the corresponding lookup methods\nreturn ErrNotFound, but that precondition was not being honored.\n\nBug: 465185090\nChange-Id: Ibf57b3e86522f5fbff554085141fd499c3d6c42f\nReviewed-on: https://chromium-review.googlesource.com/c/webpagereplay/+/7216872\nAuto-Submit: James Woo \u003cjewoo@google.com\u003e\nReviewed-by: Victor Vianna \u003cvictorvianna@google.com\u003e\n"
    },
    {
      "commit": "052833a44dd2f538b85936092bad545b6062e193",
      "tree": "584516791808310d41a7289ff6e1197ae5f40063",
      "parents": [
        "6d7439d25298a8382044bbc526f66771d0af4fc9"
      ],
      "author": {
        "name": "Victor Hugo Vianna Silva",
        "email": "victorvianna@google.com",
        "time": "Mon Nov 03 21:50:41 2025"
      },
      "committer": {
        "name": "Victor Vianna",
        "email": "victorvianna@google.com",
        "time": "Tue Nov 04 11:06:36 2025"
      },
      "message": "Add flag to ignore TLS certificates inside WPR archive\n\nEvery certificate in an archive will eventually expire. If the client is\nignoring TLS errors (e.g. chromium-browsers with\n--ignore-certificate-errors-spki-list), that\u0027s not a problem. In fact\nit\u0027s good, since using the archive certificates spares the delay to mint\nnew ones on request time.\nBut if that\u0027s not the case, we need a way to force the tool to mint\nnew certificates. That\u0027s addressed by the introduction of\n--no_archive_certificates in this CL. For symmetry, this flag also\nprevents writing certificates to the archive upon recording.\n\nBug: 372457479\nChange-Id: I6bdc9ad47574d8cd6ea0418b8c33eae5611e6838\nReviewed-on: https://chromium-review.googlesource.com/c/webpagereplay/+/7106523\nReviewed-by: Mikhail Khokhlov \u003ckhokhlov@google.com\u003e\n"
    },
    {
      "commit": "6d7439d25298a8382044bbc526f66771d0af4fc9",
      "tree": "b0aa0ba656218e0b8166e898b37001b2513f7586",
      "parents": [
        "9e03fc1d2f11a164488cdeae76fe40c5f6247068"
      ],
      "author": {
        "name": "Victor Hugo Vianna Silva",
        "email": "victorvianna@google.com",
        "time": "Mon Nov 03 21:07:53 2025"
      },
      "committer": {
        "name": "Victor Vianna",
        "email": "victorvianna@google.com",
        "time": "Tue Nov 04 11:06:24 2025"
      },
      "message": "Conform TLS certificates to stricter platform requirements\n\nThe goal is to make the TLS certificates generated by WebPageReplay\nactually be accepted on Android and iOS once the corresponding root\ncertificates are installed on the device (in the case where flags like\n--ignore-certificate-errors-skip-list are omitted). This patch\nincludes:\n\n1) Changes to the default root certificates ecdsa_cert.pem (ECDSA-based)\nand wpr_cert.pem (RSA-based). I dumped the certificate contents in\nhttps://crbug.com/372457479#comment22 so it\u0027s easier to visualize the\nchanges.\n* Turn these into actual Certificate Authorities, otherwise they cannot\n  be installed on iOS.\n* Increase their expiration date from 2026 (imminent) to 2035.\n\n2) Changes to the leaf certificates generated for each website on\nruntime via MintDummyCertificate().\n* Sign them with the root certificates. Before this CL, the leaf\n  certificates were self-signed because the `template` and `root`\n  arguments were the same [1][2].\n* Reduce their validity to one year from the request time, since iOS\n  doesn\u0027t like certificates that are valid for too long [3].\n* (No-op, only about code complexity) Remove the explicit serial number\n  value, since the default already works [2].\n\nNote A: wpr_public_hash.txt (the values to be passed to\n--ignore-certificate-errors-spki in Chrome) doesn\u0027t need to be updated\nbecause wpr_key.pem and ecdsa_key.pem were left unchanged, the new\ncertificates were generated from these existing keys.\n\nNote B: Changing the keys would be a bad idea. Existing archives might\ncontain certificates generated with the current keys [4]. Trying to\nserve the content with those certificates + new keys [5] causes TLS\nerrors.\n\n[1] https://source.chromium.org/chromium/chromium/src/+/main:third_party/webpagereplay/src/webpagereplay/certs.go;l\u003d73;drc\u003dd0f793f704519120955d5415f960f78e6960c66f\n[2] https://pkg.go.dev/crypto/x509#CreateCertificate\n[3] https://support.apple.com/en-gb/102028\n[4] https://source.chromium.org/chromium/chromium/src/+/main:third_party/webpagereplay/src/webpagereplay/certs.go;l\u003d213;drc\u003dd0f793f704519120955d5415f960f78e6960c66f\n[5] https://source.chromium.org/chromium/chromium/src/+/main:third_party/webpagereplay/src/webpagereplay/certs.go;l\u003d236;drc\u003dd0f793f704519120955d5415f960f78e6960c66f\n\nBug: 372457479\nChange-Id: Ie42c5aee1cf955ce85e15c23c7db1d99a11bbae4\nReviewed-on: https://chromium-review.googlesource.com/c/webpagereplay/+/7062795\nReviewed-by: Mikhail Khokhlov \u003ckhokhlov@google.com\u003e\n"
    },
    {
      "commit": "9e03fc1d2f11a164488cdeae76fe40c5f6247068",
      "tree": "7e7a15b4b5f16dc90c025e36e626171bb0825f35",
      "parents": [
        "ab0ca8075f0cc5d40fed25e08ddabb144c29fc08"
      ],
      "author": {
        "name": "Victor Hugo Vianna Silva",
        "email": "victorvianna@google.com",
        "time": "Mon Nov 03 19:19:38 2025"
      },
      "committer": {
        "name": "Victor Vianna",
        "email": "victorvianna@google.com",
        "time": "Tue Nov 04 11:06:00 2025"
      },
      "message": "Delete unused legacyformatconvertor.go\n\nIt was needed for some migration that was finished long ago.\n\nhttps://source.chromium.org/chromium/chromium/src/+/main:third_party/webpagereplay/src/webpagereplay/legacyformatconvertor.go;l\u003d7;drc\u003dabd7b92ca5251f30a3a99dd7eb05b40e23e1c79b\n\nChange-Id: I8d2a5a9a833996ae8fa09414acb9b83cc1071a3f\nReviewed-on: https://chromium-review.googlesource.com/c/webpagereplay/+/7112748\nReviewed-by: Mikhail Khokhlov \u003ckhokhlov@google.com\u003e\n"
    },
    {
      "commit": "ab0ca8075f0cc5d40fed25e08ddabb144c29fc08",
      "tree": "07c96b139c4c764b39b1d2d0eb5023dd5cba671c",
      "parents": [
        "9057e5d942f2bfcee71cc20415a7f86c966241f8"
      ],
      "author": {
        "name": "Jordan",
        "email": "rop@google.com",
        "time": "Thu Oct 09 05:25:13 2025"
      },
      "committer": {
        "name": "Victor Vianna",
        "email": "victorvianna@google.com",
        "time": "Tue Oct 14 12:47:13 2025"
      },
      "message": "Fix: Correct license issues in README.chromium\n\nBug: chromium:421989198\nChange-Id: I528335e24767384eac2ad1cf7d0a4863affedb49\nReviewed-on: https://chromium-review.googlesource.com/c/webpagereplay/+/7016169\nReviewed-by: Victor Vianna \u003cvictorvianna@google.com\u003e\nAuto-Submit: Jordan Brown \u003crop@google.com\u003e\nReviewed-by: Yiming Zhou \u003cuwyiming@google.com\u003e\n"
    },
    {
      "commit": "9057e5d942f2bfcee71cc20415a7f86c966241f8",
      "tree": "e52e967c41a2a03d95d4ee85cafa92ffe9b8a405",
      "parents": [
        "8fe3b630b4c80e9c299a3d81518509a9633e612e"
      ],
      "author": {
        "name": "Mikhail Khokhlov",
        "email": "khokhlov@google.com",
        "time": "Thu Sep 25 11:54:27 2025"
      },
      "committer": {
        "name": "Mikhail Khokhlov",
        "email": "khokhlov@google.com",
        "time": "Thu Sep 25 13:32:03 2025"
      },
      "message": "Allow merging archives with duplicate requests\n\nWPR can serve different responses to identical requests if\n--serve-response-in-chronological-sequence flag is set.\n\nChange-Id: Ibedafc90ded2b6fb70bc647afe7e56630af1168d\nReviewed-on: https://chromium-review.googlesource.com/c/webpagereplay/+/6974216\nReviewed-by: Victor Vianna \u003cvictorvianna@google.com\u003e\n"
    },
    {
      "commit": "8fe3b630b4c80e9c299a3d81518509a9633e612e",
      "tree": "2bb09d7c321e6ab93dbd5b8653416771bf5e9cef",
      "parents": [
        "7d0438bbb7b254bafed10eaa1afd2c8c5e40ee34"
      ],
      "author": {
        "name": "Victor Hugo Vianna Silva",
        "email": "victorvianna@google.com",
        "time": "Wed Sep 24 10:13:05 2025"
      },
      "committer": {
        "name": "Victor Vianna",
        "email": "victorvianna@google.com",
        "time": "Wed Sep 24 10:14:05 2025"
      },
      "message": "Add formatting check and some other presubmit improvements\n\n- Add presubmit for go format and reformat existing files.\n- Add presubmit for python format and reformat existing files.\n- Add \"pan project checks\", i.e. checks that every chromium project\n  should be running.\n- In CheckBuildpWpr() and CheckBuildHttpArchive(), build the binaries\n  in a temporary directory outside of the repo. Otherwise every\n  `git cl upload` leaves binaries that are not gitignored in the repo.\n  The same must be done in scripts/upload_new_binaries.py, but that\u0027s\n  left for a future CL.\n\nBug: None\nChange-Id: If56b393b9136fee403160ed9fc62237f3fb120c9\nReviewed-on: https://chromium-review.googlesource.com/c/webpagereplay/+/6975979\nReviewed-by: Mikhail Khokhlov \u003ckhokhlov@google.com\u003e\n"
    },
    {
      "commit": "7d0438bbb7b254bafed10eaa1afd2c8c5e40ee34",
      "tree": "95947d2c9124e80ed7a6ef277508c4aee5836d97",
      "parents": [
        "149e60f28ecac5a1c84fcbe41b4ec4fe7f0b742e"
      ],
      "author": {
        "name": "Victor Hugo Vianna Silva",
        "email": "victorvianna@google.com",
        "time": "Tue Sep 23 14:14:07 2025"
      },
      "committer": {
        "name": "Mikhail Khokhlov",
        "email": "khokhlov@google.com",
        "time": "Tue Sep 23 14:24:43 2025"
      },
      "message": "Upgrade CheckPrebuiltBinaryUpdated() from presubmit warning to error\n\nAlso reformat the PRESUBMIT.py file.\n\nBug: 430568050\nChange-Id: I9209895c0b68bee02b3a4755195b0a0154064e4b\nReviewed-on: https://chromium-review.googlesource.com/c/webpagereplay/+/6976529\nAuto-Submit: Victor Vianna \u003cvictorvianna@google.com\u003e\nReviewed-by: Mikhail Khokhlov \u003ckhokhlov@google.com\u003e\n"
    },
    {
      "commit": "149e60f28ecac5a1c84fcbe41b4ec4fe7f0b742e",
      "tree": "47937d186da2743ef22de44f13f4a9e72f1b2bdc",
      "parents": [
        "e02357fe04fe364f6ad239f78317980eac5fe33d"
      ],
      "author": {
        "name": "Victor Hugo Vianna Silva",
        "email": "victorvianna@google.com",
        "time": "Wed Sep 10 09:32:10 2025"
      },
      "committer": {
        "name": "Victor Vianna",
        "email": "victorvianna@google.com",
        "time": "Tue Sep 16 10:24:14 2025"
      },
      "message": "Change Math.random implementation in deterministic.js\n\nAuthored in crrev.com/c/6929205.\n\nSome websites (e.g. google docs in loadline-tablet) expect random values\nto be reasonably unique and break if they aren\u0027t.\n\nBug: 428945380\nChange-Id: I635a33998fba3c6693ee0b9b1ca9ea352ce65723\nReviewed-on: https://chromium-review.googlesource.com/c/webpagereplay/+/6935742\nReviewed-by: John Chen \u003cjohnchen@chromium.org\u003e\n"
    },
    {
      "commit": "e02357fe04fe364f6ad239f78317980eac5fe33d",
      "tree": "75f5906519ef2a74a88164d37f2d5834dcb89126",
      "parents": [
        "8e56d60d151b3f6a4dded0d948fe437420e210fd"
      ],
      "author": {
        "name": "Victor Hugo Vianna Silva",
        "email": "victorvianna@google.com",
        "time": "Fri Sep 12 16:03:32 2025"
      },
      "committer": {
        "name": "Victor Vianna",
        "email": "victorvianna@google.com",
        "time": "Fri Sep 12 16:09:13 2025"
      },
      "message": "Add victorvianna@ to webpagereplay OWNERS\n\nI\u0027ve touched this piece of code quite a bit now. Also remove\nianstruiksma@ who\u0027s no longer reviewing.\n\nBug: None\nChange-Id: I4be7ba171249dd340a6d7810747a84ad81e7332e\nReviewed-on: https://chromium-review.googlesource.com/c/webpagereplay/+/6942958\nAuto-Submit: Victor Vianna \u003cvictorvianna@google.com\u003e\nReviewed-by: John Chen \u003cjohnchen@chromium.org\u003e\n"
    },
    {
      "commit": "8e56d60d151b3f6a4dded0d948fe437420e210fd",
      "tree": "b4d0da36d65acc1bfd673e91dfba721ddd15d476",
      "parents": [
        "acad510a9eed66b4636529b02198b8c684dfbad3"
      ],
      "author": {
        "name": "Victor Hugo Vianna Silva",
        "email": "victorvianna@google.com",
        "time": "Wed Sep 10 18:11:10 2025"
      },
      "committer": {
        "name": "Victor Vianna",
        "email": "victorvianna@google.com",
        "time": "Wed Sep 10 22:52:08 2025"
      },
      "message": "Allow standalone webpagereplay repo to upload prebuilt binaries\n\nThis introduces a replacement for the update_wpr_go_binary script in\ncatapult, which will be removed in crrev.com/c/6935070. The diff with\nthe original script can be seen in crrev.com/c/6935069.\nA new presubmit enforces the script is run whenever there are go\nchanges.\n\nBug: 430571901\nBug: 430568050\nChange-Id: I40c620dafb137f0bc0caac90547321be049f938f\nReviewed-on: https://chromium-review.googlesource.com/c/webpagereplay/+/6936402\nReviewed-by: John Chen \u003cjohnchen@chromium.org\u003e\nAuto-Submit: Victor Vianna \u003cvictorvianna@google.com\u003e\n"
    },
    {
      "commit": "acad510a9eed66b4636529b02198b8c684dfbad3",
      "tree": "fef495ad3b867d61cbefcd5a4136c34c5c8f3469",
      "parents": [
        "58ec1a40c45b54f49b075d5c8e45ebb524eaeee8"
      ],
      "author": {
        "name": "Victor Hugo Vianna Silva",
        "email": "victorvianna@google.com",
        "time": "Tue Sep 09 21:39:00 2025"
      },
      "committer": {
        "name": "Victor Vianna",
        "email": "victorvianna@google.com",
        "time": "Tue Sep 09 21:40:36 2025"
      },
      "message": "Fix WPR build\n\n- Fix httparchive using unexported fields.\n- Fix wrong import paths.\n- Add a presubmit that builds the targets.\n- Avoid mentions to web_page_replay_go.\n\nBug: 430571901\nChange-Id: Ibe78a214af1a6f404ea7969d7cc84984a0a95e74\nReviewed-on: https://chromium-review.googlesource.com/c/webpagereplay/+/6931557\nAuto-Submit: Victor Vianna \u003cvictorvianna@google.com\u003e\nReviewed-by: John Chen \u003cjohnchen@chromium.org\u003e\n"
    },
    {
      "commit": "58ec1a40c45b54f49b075d5c8e45ebb524eaeee8",
      "tree": "9c39599a6fb8e275004135393d95a6ca6148c1d1",
      "parents": [
        "b30671dabd2070d609350c85734264a6dfac7eb0"
      ],
      "author": {
        "name": "Victor Hugo Vianna Silva",
        "email": "victorvianna@google.com",
        "time": "Tue Sep 09 17:19:13 2025"
      },
      "committer": {
        "name": "Victor Vianna",
        "email": "victorvianna@google.com",
        "time": "Tue Sep 09 20:25:11 2025"
      },
      "message": "Change the package name to go.chromium.org/webpagereplay\n\nAnd remove all mentions of catapult. See also\nhttps://chromium-review.googlesource.com/c/infra/infra/+/6931970.\n\nBug: 430571901\nChange-Id: Id8da32dce46696d7c25ce5c1f3c040ae82b823fc\nReviewed-on: https://chromium-review.googlesource.com/c/webpagereplay/+/6931553\nAuto-Submit: Victor Vianna \u003cvictorvianna@google.com\u003e\nReviewed-by: John Chen \u003cjohnchen@chromium.org\u003e\n"
    },
    {
      "commit": "b30671dabd2070d609350c85734264a6dfac7eb0",
      "tree": "94337d371038850c111cb4170f24d5a33d994c31",
      "parents": [
        "57cfaf686caa4aa1a7e2934278c276e9cc73aa2f"
      ],
      "author": {
        "name": "Victor Hugo Vianna Silva",
        "email": "victorvianna@google.com",
        "time": "Mon Sep 08 15:19:33 2025"
      },
      "committer": {
        "name": "Victor Vianna",
        "email": "victorvianna@google.com",
        "time": "Tue Sep 09 16:49:41 2025"
      },
      "message": "Fix `go test` presubmit in webpagereplay\n\nMigrate to presubmit API v2 instead of v1. The v1 version wasn\u0027t\nrunning for some reason.\n\nFixed: 430572294\nChange-Id: I2cbd9729a9258e6b1db72557a7afbfa2db21f2dd\nReviewed-on: https://chromium-review.googlesource.com/c/webpagereplay/+/6919649\nReviewed-by: John Chen \u003cjohnchen@chromium.org\u003e\n"
    },
    {
      "commit": "57cfaf686caa4aa1a7e2934278c276e9cc73aa2f",
      "tree": "6707eea210d3fd656a90e2a23f4ad9b5d313a6dc",
      "parents": [
        "77a306d6ce62d22b7d05055c977e8534e29284c3"
      ],
      "author": {
        "name": "Victor Hugo Vianna Silva",
        "email": "victorvianna@google.com",
        "time": "Mon Sep 08 15:15:30 2025"
      },
      "committer": {
        "name": "Victor Vianna",
        "email": "victorvianna@google.com",
        "time": "Tue Sep 09 16:11:56 2025"
      },
      "message": "Move httparchive_test.go to webpagereplay package\n\nOtherwise it\u0027s not possible to run the test.\n\nBug: 430572294\nChange-Id: I2a3a48c9facdeda4a98d34f33377ad19a70271f7\nReviewed-on: https://chromium-review.googlesource.com/c/webpagereplay/+/6919648\nReviewed-by: John Chen \u003cjohnchen@chromium.org\u003e\n"
    },
    {
      "commit": "77a306d6ce62d22b7d05055c977e8534e29284c3",
      "tree": "b8e26a6ee25205de28f9d9e6047b6a685797ef4d",
      "parents": [
        "eebd5c62cb5c6a5afbb36eccdcc3b3e01f28adc9"
      ],
      "author": {
        "name": "Victor Hugo Vianna Silva",
        "email": "victorvianna@google.com",
        "time": "Sat Jul 19 01:17:05 2025"
      },
      "committer": {
        "name": "Victor Vianna",
        "email": "victorvianna@google.com",
        "time": "Mon Jul 21 17:59:03 2025"
      },
      "message": "Fix WPR exiting if injection fails for reasons outside of user control\n\nContext: https://crbug.com/432028007#comment17\nAfter this CL, the tool does exit(1) if the user attempts to inject a\nscript file that does not exist, but keeps running and logs the error\nif:\n- The website uses an encryption algorithm supported by the web but\n  unsupported by WPR.\n- The response body is unreadable.\n- There is no appropriate place in the body to inject the \u003cscript\u003e.\n- Etc.\n\nBug: 432028007\nChange-Id: I86acd7413f473d1c49a4b896f2189bfdc668efb0\nReviewed-on: https://chromium-review.googlesource.com/c/webpagereplay/+/6764376\nReviewed-by: John Chen \u003cjohnchen@chromium.org\u003e\n"
    },
    {
      "commit": "eebd5c62cb5c6a5afbb36eccdcc3b3e01f28adc9",
      "tree": "5dab8aa80fa57c21b37962a10d6c37a3957d7164",
      "parents": [
        "024f2f384d2f72410bf32198feb1ade360252d9a"
      ],
      "author": {
        "name": "Victor Hugo Vianna Silva",
        "email": "victorvianna@google.com",
        "time": "Mon Jul 14 20:19:54 2025"
      },
      "committer": {
        "name": "Victor Vianna",
        "email": "victorvianna@google.com",
        "time": "Tue Jul 15 08:26:37 2025"
      },
      "message": "Make relative paths in --rules_file JSON relative to the JSON itself\n\nThis CL changes the behavior when running:\n```\ngo replay --rules_file\u003d$RULES_DIR/rules.json --http_port\u003d8000 \\\n  --https_port\u003d8001 archive.wprgo\n```\nWhere rules.json is:\n```\n[\n  {\n    \"URL\":\"https://google.com\",\n    \"InjectedScript\":\"google.js\"\n  }\n]\n```\n\nBefore this CL: the injected script is $PWD/google.js\nAfter this CL: the injected script is $RULES_DIR/google.js\n\nThis better matches user expectations.\n\nBug: 372457479\nChange-Id: Id0e64ecf558ece7895b96f2ef248317e82b4ec03\nReviewed-on: https://chromium-review.googlesource.com/c/webpagereplay/+/6732765\nAuto-Submit: Victor Vianna \u003cvictorvianna@google.com\u003e\nReviewed-by: John Chen \u003cjohnchen@chromium.org\u003e\n"
    },
    {
      "commit": "024f2f384d2f72410bf32198feb1ade360252d9a",
      "tree": "fd4252e9d88f84abf40339115941043397a22780",
      "parents": [
        "96dc9775bddb90cd8e9a47672ef507e754b44e59"
      ],
      "author": {
        "name": "Victor Hugo Vianna Silva",
        "email": "victorvianna@google.com",
        "time": "Tue Jul 08 09:08:36 2025"
      },
      "committer": {
        "name": "Victor Vianna",
        "email": "victorvianna@google.com",
        "time": "Wed Jul 09 16:12:18 2025"
      },
      "message": "Fix script injection via --rules-file failing w/ \"rule has no effect\"\n\nFollow-up to crrev.com/c/6667905. It was failing due to the check below.\nExtend the check to include InjectedScript.\nhttps://source.chromium.org/chromium/chromium/src/+/main:third_party/webpagereplay/src/webpagereplay/transformers.go;l\u003d538;drc\u003dcc9256e0bd61f95e7b8bd394a98c208165aa8889\n\nBug: 372457479\nChange-Id: Iab153ea6f4190d7697ab41693abdbd4b14a4b2b2\nReviewed-on: https://chromium-review.googlesource.com/c/webpagereplay/+/6712175\nReviewed-by: John Chen \u003cjohnchen@chromium.org\u003e\n"
    },
    {
      "commit": "96dc9775bddb90cd8e9a47672ef507e754b44e59",
      "tree": "b6a0048026844128a668b2aee5b7cfc62de03a28",
      "parents": [
        "cc9256e0bd61f95e7b8bd394a98c208165aa8889"
      ],
      "author": {
        "name": "Victor Hugo Vianna Silva",
        "email": "victorvianna@google.com",
        "time": "Wed Jul 09 13:51:27 2025"
      },
      "committer": {
        "name": "Victor Vianna",
        "email": "victorvianna@google.com",
        "time": "Wed Jul 09 16:12:18 2025"
      },
      "message": "Apply transformations ahead of replay requests\n\nBefore the CL: Transformations were applied when responding to a\nrequest. For instance, a transformation that injects a script would\nrequire decompressing the response body stored in the archive every\ntime the page is queried. That caused unnecessary network delay.\n\nAfter the CL: Transformations are applied once, when loadling the\nWPR archive.\n\nThis affects only the replay command.\n\nFixed: 425653612\nBug: 372457479\nChange-Id: I31a6e4d9576712b8b7a31bce915802d2febb6121\nReviewed-on: https://chromium-review.googlesource.com/c/webpagereplay/+/6708523\nReviewed-by: John Chen \u003cjohnchen@chromium.org\u003e\n"
    },
    {
      "commit": "cc9256e0bd61f95e7b8bd394a98c208165aa8889",
      "tree": "b17fadf4b0d135248f7c029d3b7dd30789cffb24",
      "parents": [
        "5fd8d4824ffd32c365af5098df35763cf9520e81"
      ],
      "author": {
        "name": "Victor Hugo Vianna Silva",
        "email": "victorvianna@google.com",
        "time": "Thu Jun 26 16:43:49 2025"
      },
      "committer": {
        "name": "Victor Vianna",
        "email": "victorvianna@google.com",
        "time": "Thu Jun 26 16:48:41 2025"
      },
      "message": "Fix injected script not run if Content-Security-Policy present \u003e1x\n\nContext: the Content-Security-Policy header can specify a magic number\nthat only allows \u003cscript nonce\u003d\"magic number\"\u003e tags to run, and not\n\u003cscript\u003e.\n\nWebPageReplay already knows this. It tries to find the magic number from\nthe header to later apply it in injected \u003cscript\u003es. However, the code\nwas only looking at the first instance of the header [1], even though\nit is valid to specify the header more than once. This CL extends\nthe code to look at all the instances, using [2].\n\n[1] https://pkg.go.dev/net/http#Header.Get\n[2] https://pkg.go.dev/net/http#Header.Values\n\nBug: 372457479\nChange-Id: Ie59f82c20b1b76733821b0bbc3a1ca290e055423\nReviewed-on: https://chromium-review.googlesource.com/c/webpagereplay/+/6680390\nAuto-Submit: Victor Vianna \u003cvictorvianna@google.com\u003e\nReviewed-by: John Chen \u003cjohnchen@chromium.org\u003e\n"
    },
    {
      "commit": "5fd8d4824ffd32c365af5098df35763cf9520e81",
      "tree": "0a8b964c0323f9a6576a5e36bb5e4a1111aec855",
      "parents": [
        "f3397454e39a7c0b35af192e6d8a1896af7bd9ec"
      ],
      "author": {
        "name": "Victor Hugo Vianna Silva",
        "email": "victorvianna@google.com",
        "time": "Wed Jun 25 11:45:00 2025"
      },
      "committer": {
        "name": "Victor Vianna",
        "email": "victorvianna@google.com",
        "time": "Wed Jun 25 17:13:36 2025"
      },
      "message": "Support injecting scripts in --rules_file\n\nAfter this CL it\u0027s possible to run wpr with --rules_file\u003drules.json\nwhere an example rules.json looks like.\n```\n[\n  {\n    \"URL\":\"https://globo.com\",\n    \"InjectedScript\":\"globo_instrumentation.js\"\n  },\n  {\n    \"URL\":\".*\",\n    \"InjectedScript\":\"deterministic.js\"\n  }\n]\n```\n\nBug: 372457479\nChange-Id: Ie0accd1a4d3ee2df21f41ed17d1e06000ac6a3b6\nReviewed-on: https://chromium-review.googlesource.com/c/webpagereplay/+/6667905\nAuto-Submit: Victor Vianna \u003cvictorvianna@google.com\u003e\nReviewed-by: John Chen \u003cjohnchen@chromium.org\u003e\n"
    },
    {
      "commit": "f3397454e39a7c0b35af192e6d8a1896af7bd9ec",
      "tree": "e8797451f04612b60386b0058e59c5d3e4572194",
      "parents": [
        "6076e420a1d85bf66d9acb70a62d4118be82a2c9"
      ],
      "author": {
        "name": "Victor Hugo Vianna Silva",
        "email": "victorvianna@google.com",
        "time": "Mon Jun 23 16:38:13 2025"
      },
      "committer": {
        "name": "Victor Vianna",
        "email": "victorvianna@google.com",
        "time": "Mon Jun 23 17:46:51 2025"
      },
      "message": "Reland \"Reland \"[WPR] Add support for brotli compression\"\"\n\nThis is a reland of commit 2d408650eea2665a1aa1e78b496e5ff195afa83e\nPatchset 1 is a reupload of the original change. The original approach\nused the github.com/google/brotli/go/cbrotli package. However, that\ndepends on cgo and causes problems during cross-compilation (see linked\nbug). The new approach depends on github.com/andybalholm/brotli, which\nis pure golang. Note there\u0027s also github.com/google/brotli/go/brotli\nwhich is pure go, but it lacks an encoder and so doesn\u0027t work for our\nuse case.\n\nOriginal change\u0027s description:\n\u003e Reland \"[WPR] Add support for brotli compression\"\n\u003e\n\u003e This is a reland of d7dac002c30c58c146c7d9f607e89b920aa719bd.\n\u003e Patchset 1 is the original change.\n\u003e Patchset 2 bumps the cbrotli package version to include fixes.\n\u003e\n\u003e Fixed: 425659545\n\u003e Change-Id: I45e03abd9b8c217d7620abe2ed9b3ada4a5e01e2\n\u003e Reviewed-on: https://chromium-review.googlesource.com/c/webpagereplay/+/6652694\n\u003e Reviewed-by: John Chen \u003cjohnchen@chromium.org\u003e\n\u003e Auto-Submit: Victor Vianna \u003cvictorvianna@google.com\u003e\n\nBug: 425659545\nChange-Id: I4b08f59de3452e26f741db1a0d72589c1a8fe3e2\nReviewed-on: https://chromium-review.googlesource.com/c/webpagereplay/+/6662799\nAuto-Submit: Victor Vianna \u003cvictorvianna@google.com\u003e\nReviewed-by: John Chen \u003cjohnchen@chromium.org\u003e\n"
    },
    {
      "commit": "6076e420a1d85bf66d9acb70a62d4118be82a2c9",
      "tree": "4528e63413118018d9bc976a9e4aaa21b9c9c116",
      "parents": [
        "2d408650eea2665a1aa1e78b496e5ff195afa83e"
      ],
      "author": {
        "name": "Victor Vianna",
        "email": "victorvianna@google.com",
        "time": "Fri Jun 20 19:58:26 2025"
      },
      "committer": {
        "name": "John Chen",
        "email": "johnchen@chromium.org",
        "time": "Fri Jun 20 20:03:36 2025"
      },
      "message": "Revert \"Reland \"[WPR] Add support for brotli compression\"\"\n\nThis reverts commit 2d408650eea2665a1aa1e78b496e5ff195afa83e.\n\nReason for revert: Still causes cross-compilation issues, at least on windows.\n\nOriginal change\u0027s description:\n\u003e Reland \"[WPR] Add support for brotli compression\"\n\u003e\n\u003e This is a reland of d7dac002c30c58c146c7d9f607e89b920aa719bd.\n\u003e Patchset 1 is the original change.\n\u003e Patchset 2 bumps the cbrotli package version to include fixes.\n\u003e\n\u003e Fixed: 425659545\n\u003e Change-Id: I45e03abd9b8c217d7620abe2ed9b3ada4a5e01e2\n\u003e Reviewed-on: https://chromium-review.googlesource.com/c/webpagereplay/+/6652694\n\u003e Reviewed-by: John Chen \u003cjohnchen@chromium.org\u003e\n\u003e Auto-Submit: Victor Vianna \u003cvictorvianna@google.com\u003e\n\nNo-Presubmit: true\nNo-Tree-Checks: true\nNo-Try: true\nChange-Id: I735ce9d6a726f73e5821a2cf50e7f5badf3bdd6f\nReviewed-on: https://chromium-review.googlesource.com/c/webpagereplay/+/6656947\nReviewed-by: John Chen \u003cjohnchen@chromium.org\u003e\nAuto-Submit: Victor Vianna \u003cvictorvianna@google.com\u003e\n"
    },
    {
      "commit": "2d408650eea2665a1aa1e78b496e5ff195afa83e",
      "tree": "cbe79052fc118c99d0d1d178c9a78982218be9ac",
      "parents": [
        "e463cb47fd355a21463d0f567ee78c0316e198d6"
      ],
      "author": {
        "name": "Victor Hugo Vianna Silva",
        "email": "victorvianna@google.com",
        "time": "Thu Jun 19 09:05:53 2025"
      },
      "committer": {
        "name": "Victor Vianna",
        "email": "victorvianna@google.com",
        "time": "Fri Jun 20 17:37:05 2025"
      },
      "message": "Reland \"[WPR] Add support for brotli compression\"\n\nThis is a reland of d7dac002c30c58c146c7d9f607e89b920aa719bd.\nPatchset 1 is the original change.\nPatchset 2 bumps the cbrotli package version to include fixes.\n\nFixed: 425659545\nChange-Id: I45e03abd9b8c217d7620abe2ed9b3ada4a5e01e2\nReviewed-on: https://chromium-review.googlesource.com/c/webpagereplay/+/6652694\nReviewed-by: John Chen \u003cjohnchen@chromium.org\u003e\nAuto-Submit: Victor Vianna \u003cvictorvianna@google.com\u003e\n"
    }
  ],
  "next": "e463cb47fd355a21463d0f567ee78c0316e198d6"
}
