)]}'
{
  "commit": "8a0798f4b17b6412637362e49efc9a79d9927437",
  "tree": "df78182f6a1f6c541f18cf8d33e211cb32f15dfc",
  "parents": [
    "6225cb3ca0d485a0cba9427c9d4b0625dab01714"
  ],
  "author": {
    "name": "Zimuzo Ezeozue",
    "email": "zezeozue@google.com",
    "time": "Wed Jun 10 15:27:33 2026 +0000"
  },
  "committer": {
    "name": "Zimuzo Ezeozue",
    "email": "zezeozue@google.com",
    "time": "Fri Jun 12 00:41:29 2026 +0100"
  },
  "message": "ui: com.android.ProcessState explorer for android.process_state\n\nA page (sidebar \u0027Process state explorer\u0027, route /process_state) for AMS\nProcessStateController snapshots, plus a timeline track so the snapshots are\nvisible in context.\n\nThe explorer is organised as a Winscope-style seek bar over the snapshots, an\ninteractive graph, and a tabbed bottom panel; the graph/panel split is\nvertically draggable.\n\nSeek bar: a tick per snapshot positioned by time, a draggable playhead, and a\nquiet device-state line for the current snapshot\u0027s GlobalState (awake, top\nproc-state, memory level, unlocking/shade, idle-allowlist size, and clickable\nhome/heavy/previous/dozing-ui pids).\n\nGraph: an SVG process-relationship graph laying processes out in oom-adj\nimportance columns (left \u003d more important), sized by binding-degree so hubs read\nat a glance. Empty tiers are skipped. Service (grey) and content-provider (blue,\ndashed) edges run client-\u003eserver, hidden by default and revealed on hover\n(light) / pinned bold on click; arrowheads inherit the edge colour. Zoom/pan via\nviewBox with auto-fit until the user adjusts.\n\nBottom panel tabs:\n  * Processes - the full process DataGrid for the snapshot.\n  * \u003cselection\u003e - structured detail for the clicked node or edge, rendered as\n    flat DataGrids: process state, how-this-adj-was-computed (the ordered\n    conditions the OomAdjuster applied - adj_compute / adj_step, with a fallback\n    to the most recent compute at-or-before the snapshot), hosted components,\n    and inbound/outbound service \u0026 content-provider bindings (filtered to the\n    current snapshot).\n  * Events - a trace-wide log of the per-process lifecycle MutationEvents from\n    ProcessStateController (process begin/end, oom-adj recompute, service \u0026\n    provider bind/unbind, FGS, broadcast dispatch with the intent action,\n    frozen, hosting/capability/sched-group, instrumentation) with relative\n    timestamps and a clickable snapshot column; uid-level and global\n    device-state churn is excluded (it\u0027s already in the device-state line).\n\nClicking a pid anywhere drills into that process; clicking an edge shows its\nbinding detail (service short-names / provider authorities + connection count).\n\nSelecting a snapshot slice on the timeline track opens a details panel with the\nsame graph and a horizontally-draggable graph|properties split, plus an\n\u0027Open full explorer\u0027 button that deep-links to that snapshot\n(#!/process_state/\u003cid\u003e).\n\nChange-Id: I42982e5e8efcce4bdc6c0b791c7365a41e474c22\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "46bb22ec0ded097b34c90b845cb57c4188170d52",
      "old_mode": 33188,
      "old_path": "ui/src/core/embedder/default_plugins.ts",
      "new_id": "d23d019600567be4b7b1f6193da4d5dd76fe9499",
      "new_mode": 33188,
      "new_path": "ui/src/core/embedder/default_plugins.ts"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "55a96cecf746ca7ef7f1f960177e03a0c4c8588a",
      "new_mode": 33188,
      "new_path": "ui/src/plugins/com.android.ProcessState/enums.ts"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "072267e77e9139767def2d5b06652934b3df6c8d",
      "new_mode": 33188,
      "new_path": "ui/src/plugins/com.android.ProcessState/grid_helpers.ts"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "d319a7c363f91ba3acab858b8942b1406f26fbfc",
      "new_mode": 33188,
      "new_path": "ui/src/plugins/com.android.ProcessState/index.ts"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "04fbe2db3b5a63f37dd0f239b41c44b8835e5190",
      "new_mode": 33188,
      "new_path": "ui/src/plugins/com.android.ProcessState/page.ts"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "c6b5ba72e2ff8a40e6ba2faac6e0c35ed2a998de",
      "new_mode": 33188,
      "new_path": "ui/src/plugins/com.android.ProcessState/process_graph.ts"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "b12789bb0b40dd1c52ab96a2938c8097c1976d1b",
      "new_mode": 33188,
      "new_path": "ui/src/plugins/com.android.ProcessState/process_state_details_panel.ts"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "20b3df189a5669857fe17622294cd518d6691a19",
      "new_mode": 33188,
      "new_path": "ui/src/plugins/com.android.ProcessState/process_state_track.ts"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "193bffd04747fd39993407d2669822907b8d9048",
      "new_mode": 33188,
      "new_path": "ui/src/plugins/com.android.ProcessState/styles.scss"
    }
  ]
}
