)]}'
{
  "commit": "2fc629e656f60ad98f20b96dd8da915d0bb10e1e",
  "tree": "a1c46bd278b596ad902e68696d140418cba1c5e9",
  "parents": [
    "fc215b9b6a0df329b099f37d6d40ab07d5ab8542"
  ],
  "author": {
    "name": "Hector Dearman",
    "email": "hjd@google.com",
    "time": "Tue Aug 01 15:22:53 2023 +0100"
  },
  "committer": {
    "name": "Hector Dearman",
    "email": "hjd@google.com",
    "time": "Tue Aug 01 15:22:53 2023 +0100"
  },
  "message": "ui: Add Viewer API for plugins\n\n- Add \u0027Viewer\u0027, an imperative interface for plugins to manipulate the\n  UI.\n- Following the pattern of engine and store each plugin gets a\n  ViewerProxy - allowing us to blame API usage on a specific plugin\n  and dispose() the proxy, stopping the plugin from using it.\n- Initially add sidebar APIs for show, hide, isVisible\n- Migrate toggle sidebar command into a plugin using the Viewer API.\n- Migrate existing methods of toggling the sidebar to use the command.\n- Also make EngineProxy disposable.\n\nChange-Id: I1d668af7da64b6d5e6d29cc493562f5fdf7df404",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "ccda0999b170b80d2ecbefadcb9a878b5a1ce735",
      "old_mode": 33188,
      "old_path": "ui/src/common/actions.ts",
      "new_id": "6dfbac26bd4c73d20d16bb8be5e26e46de93a1df",
      "new_mode": 33188,
      "new_path": "ui/src/common/actions.ts"
    },
    {
      "type": "modify",
      "old_id": "5546ea279cc0e9013724109ce8c64ee990602e95",
      "old_mode": 33188,
      "old_path": "ui/src/common/engine.ts",
      "new_id": "3b0e1e4956d070594a5a5baedb8a4d9c2d53cabb",
      "new_mode": 33188,
      "new_path": "ui/src/common/engine.ts"
    },
    {
      "type": "modify",
      "old_id": "086e2bc14e680005759265971e0aba64e1139134",
      "old_mode": 33188,
      "old_path": "ui/src/common/plugins.ts",
      "new_id": "d295e49ac1a283ee61493b563e2487f35a96e144",
      "new_mode": 33188,
      "new_path": "ui/src/common/plugins.ts"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "49f1203f20e735aa4b7453e5ed2aac662d1bba4c",
      "new_mode": 33188,
      "new_path": "ui/src/common/viewer.ts"
    },
    {
      "type": "modify",
      "old_id": "45619284eab44c83cdf6d6ce0ee6e5b04926cc12",
      "old_mode": 33188,
      "old_path": "ui/src/controller/trace_controller.ts",
      "new_id": "fb6405c72834b7efe31a60106f1a97de83bb4513",
      "new_mode": 33188,
      "new_path": "ui/src/controller/trace_controller.ts"
    },
    {
      "type": "modify",
      "old_id": "c8f80b868b048535d937d01e525aef8573cf9571",
      "old_mode": 33188,
      "old_path": "ui/src/frontend/app.ts",
      "new_id": "c3ad90e1e80c09d4e9c65c261d0aa3746935883d",
      "new_mode": 33188,
      "new_path": "ui/src/frontend/app.ts"
    },
    {
      "type": "modify",
      "old_id": "3e3c877cd969d34fe0fa0371b3b296194d0308ea",
      "old_mode": 33188,
      "old_path": "ui/src/frontend/sidebar.ts",
      "new_id": "deacc3fec3efef392ed616e141df8d5e6fc56930",
      "new_mode": 33188,
      "new_path": "ui/src/frontend/sidebar.ts"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "e36421869009308e2b7665a5d142d6af24753719",
      "new_mode": 33188,
      "new_path": "ui/src/plugins/dev.perfetto.CoreCommands/index.ts"
    },
    {
      "type": "modify",
      "old_id": "ee01cfda933d8c3ac868a0df77d3cd1989de674c",
      "old_mode": 33188,
      "old_path": "ui/src/public/index.ts",
      "new_id": "92450b0ee6e3aba49e96afb5034c388d72c7460d",
      "new_mode": 33188,
      "new_path": "ui/src/public/index.ts"
    }
  ]
}
