)]}'
{
  "commit": "61104d9c8a8c5aac77f9ba2ef8cef7a56c42ccda",
  "tree": "0bd4d104190656b6bd5eda9c5991880da5f9a635",
  "parents": [
    "4eeccedef80f2c18d076262699f36536cf01e0a5"
  ],
  "author": {
    "name": "Maxim Sheshukov",
    "email": "maximsheshukov@google.com",
    "time": "Mon May 18 07:40:52 2026 +0000"
  },
  "committer": {
    "name": "skcq-be@skia-corp.google.com.iam.gserviceaccount.com",
    "email": "skcq-be@skia-corp.google.com.iam.gserviceaccount.com",
    "time": "Mon May 18 01:54:32 2026 -0700"
  },
  "message": "Add an angular project for Pinpoint Web UI\n\nThis CL introduces a new Angular 21 Single Page Application for Pinpoint Web UI in `pinpoint/webui` integrated into the Bazel build system.\n\nThe current \"Hello Angular\" version contains two page: recent jobs list and create a new job. They will be filled with the proper content and API calls soon.\n\nProduction build is done with the Angular CLI as a part of the Bazel toolchain. Local development supports hot reload via `npx ng serve` launched from the `pinpoint/frontend` folder.\n\nBug: b/511985878\nChange-Id: I8bcf03149e49ea3a32f4f159f3b100285d5e06c5\nReviewed-on: https://skia-review.googlesource.com/c/buildbot/+/1231736\nCommit-Queue: Maxim Sheshukov \u003cmaximsheshukov@google.com\u003e\nReviewed-by: Ruslan Schalkenbajew \u003csruslan@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "ce0763644b0f35cb31851a57ed12538eafb3d2b3",
      "old_mode": 33188,
      "old_path": ".gitignore",
      "new_id": "976a60299883a756ef4fc1fa1337a34dd5755821",
      "new_mode": 33188,
      "new_path": ".gitignore"
    },
    {
      "type": "modify",
      "old_id": "593f7d6103e455f6762201e333ed3cc19107003a",
      "old_mode": 33188,
      "old_path": "MODULE.bazel.lock",
      "new_id": "02a7a95437aea392d507c746c395250fb3267dd2",
      "new_mode": 33188,
      "new_path": "MODULE.bazel.lock"
    },
    {
      "type": "modify",
      "old_id": "9751495870561904016fe18b7b3a981f003f6ac9",
      "old_mode": 33188,
      "old_path": "infra-sk/ts_library.bzl",
      "new_id": "2be376323d6fc917ae6bf8c13ac76a20412537df",
      "new_mode": 33188,
      "new_path": "infra-sk/ts_library.bzl"
    },
    {
      "type": "modify",
      "old_id": "3bda9386c4f2fb294338135fd0c2962a5d9031dd",
      "old_mode": 33188,
      "old_path": "package-lock.json",
      "new_id": "a5bbd335a1e0d6569854bc4710ea5b34fb8f77c6",
      "new_mode": 33188,
      "new_path": "package-lock.json"
    },
    {
      "type": "modify",
      "old_id": "0d480e218a3dc66ca60d29dfec14c6d5417c8f38",
      "old_mode": 33188,
      "old_path": "package.json",
      "new_id": "b7ff42af48f6b32c1e2386e3d84596c8c7f35ff3",
      "new_mode": 33188,
      "new_path": "package.json"
    },
    {
      "type": "modify",
      "old_id": "0afe542ff0a2b0c3f3fafde5716482ce8eef7fc5",
      "old_mode": 33188,
      "old_path": "pinpoint/BUILD.bazel",
      "new_id": "3894c5f49ce8c5d1121d5daf05387f8fff522c68",
      "new_mode": 33188,
      "new_path": "pinpoint/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "b29e1f44fb3a8a3ae50540821461a5d7810355f2",
      "old_mode": 33188,
      "old_path": "pinpoint/go/webui/BUILD.bazel",
      "new_id": "d96e7b1ab2cfc334667852a73fc2bca5b32ba833",
      "new_mode": 33188,
      "new_path": "pinpoint/go/webui/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "7b7ad25aa486c9a735042e52a868dec932910d55",
      "old_mode": 33188,
      "old_path": "pinpoint/go/webui/main.go",
      "new_id": "61db863322f951524ce684ebbaa95cf9356a7011",
      "new_mode": 33188,
      "new_path": "pinpoint/go/webui/main.go"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "88b8e3f2bf4a1baa22fc519b3cf441d19b72ff3e",
      "new_mode": 33188,
      "new_path": "pinpoint/webui/BUILD.bazel"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "14da8476e4112f9a8a343a583a671972d2aa007f",
      "new_mode": 33188,
      "new_path": "pinpoint/webui/README.md"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "820ce22f7b95a1b242e5bcacc1bd5c5f5667d40b",
      "new_mode": 33188,
      "new_path": "pinpoint/webui/angular.json"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "d0b17d0ac83d6dece24a4affd920eb2f0b523cd4",
      "new_mode": 33188,
      "new_path": "pinpoint/webui/app/BUILD.bazel"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "98e7c2db8eb4ee8b181b199de1806db7ab5eeba4",
      "new_mode": 33188,
      "new_path": "pinpoint/webui/app/app.component.html"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "fad3af6b1b211944ff499301601690a1a9f2feb2",
      "new_mode": 33188,
      "new_path": "pinpoint/webui/app/app.component.ts"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "7fe10272ddc7585c3bb448c999dabdaf926dc0c4",
      "new_mode": 33188,
      "new_path": "pinpoint/webui/app/app.config.ts"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "f066aa24a70c66b824f624649ec65f0342b889a9",
      "new_mode": 33188,
      "new_path": "pinpoint/webui/app/job-list/BUILD.bazel"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "dba46677e2e8448ec14bd1302a662f48df3e02ed",
      "new_mode": 33188,
      "new_path": "pinpoint/webui/app/job-list/job-list.component.html"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "ce5ff7e67c1205fb4c8cda1effed8220e6c3e12e",
      "new_mode": 33188,
      "new_path": "pinpoint/webui/app/job-list/job-list.component.ts"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "7a9d6771b23cf1a87d4e74909dc2175546695479",
      "new_mode": 33188,
      "new_path": "pinpoint/webui/app/new-job/BUILD.bazel"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "d1164e653cbb796e4a7b9a0fab79a52c0dbe0cd1",
      "new_mode": 33188,
      "new_path": "pinpoint/webui/app/new-job/new-job.component.html"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "7233056cea839667401ee62d9ad0917edc7cab86",
      "new_mode": 33188,
      "new_path": "pinpoint/webui/app/new-job/new-job.component.ts"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "4e40b7635f878fb7d9a487cb17e0075306b03008",
      "new_mode": 33188,
      "new_path": "pinpoint/webui/index.html"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "17447a5dce2c48f1ebb0d7be5d760d0b821047ad",
      "new_mode": 33188,
      "new_path": "pinpoint/webui/main.ts"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "c77255b6d45c6a44e6d03a98c6b7231d612c8ec3",
      "new_mode": 33188,
      "new_path": "pinpoint/webui/ng-wrapper.js"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "2a7305a933f9f74b4d3a05bf0df97c076c910c38",
      "new_mode": 33188,
      "new_path": "pinpoint/webui/proxy.local.json"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "5d0bbfb4c7e766d16394c98d847a01f8592265bf",
      "new_mode": 33188,
      "new_path": "pinpoint/webui/tsconfig.app.json"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "bb41708ea175a2c75f135d5feb48161993881b94",
      "new_mode": 33188,
      "new_path": "pinpoint/webui/tsconfig.lib.json"
    },
    {
      "type": "modify",
      "old_id": "41426f848e5ac46441be00e354d77e8333bd6b61",
      "old_mode": 33188,
      "old_path": "pnpm-lock.yaml",
      "new_id": "230acf3bbe91a24e98dfb3c58e3212b2f9f4fb91",
      "new_mode": 33188,
      "new_path": "pnpm-lock.yaml"
    },
    {
      "type": "modify",
      "old_id": "f1962fb4d1c033b6bc3eff4a279b5d65ea84c02f",
      "old_mode": 33188,
      "old_path": "tsconfig.json",
      "new_id": "21d78cf8640dfe0f9a9116bc28624867942d1b11",
      "new_mode": 33188,
      "new_path": "tsconfig.json"
    }
  ]
}
