)]}'
{
  "log": [
    {
      "commit": "b4ea4173b0ef79ac62f38f441bb377377cec89bf",
      "tree": "aff3da608ee52d170749c1cd0bf2820651d98399",
      "parents": [
        "5ce9884028fb19b3813c4799d4bfad71bd87f3c0"
      ],
      "author": {
        "name": "Samuel Wu",
        "email": "wusamuel@google.com",
        "time": "Tue Jun 02 16:16:30 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 02 16:16:30 2026"
      },
      "message": "ui: Wattson: Display track name in pinned track (#6092)\n\nThe pinned track was displaying the utid instead of the thread name,\nmaking it difficult to immediately understand the pinned track. This was\ndue to race with Sched plugin, so make Wattson threads logic dependent\non Sched plugin, such that Sched plugin loads first and the requisite\ndata is present before Wattson threads logic is calculated.\n\nWattson per thread logic is dependent on sched events, so this is\nanyways the proper dependency that should be explicitly listed out.\n\nTest:\nlocalhost:10000/#!/viewer?local_cache_key\u003d\u003cMY_TRACE\u003e\u0026org.kernel.Wattson:metrics\u003dperfetto_wattson_apps_rails-name-NOTIFICATION_SHADE_EXPAND_COLLAPSE::Expand-cpu_subsystem-estimated_mw-mean\nBug: 518793028\n\nSigned-off-by: Samuel Wu \u003cwusamuel@google.com\u003e"
    },
    {
      "commit": "5ce9884028fb19b3813c4799d4bfad71bd87f3c0",
      "tree": "72f282d849b67543bca47ab14b328024dce1794a",
      "parents": [
        "cdf3389ce2f0373c9e19636b85087c2076645587"
      ],
      "author": {
        "name": "gignat-dev",
        "email": "gignat@google.com",
        "time": "Tue Jun 02 16:11:43 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 02 16:11:43 2026"
      },
      "message": "ui: Fix column sort, reorder, and hide in QueryPage results grid (#6030)\n\nhttps://github.com/google/perfetto/pull/5872 fixed a bug by fixing the\nlist of columns passed to DataGrid in the various query page results\ntables, however, since sorting is defined in the column list, this also\nmeans that sorting doesn\u0027t work (the buttons are present but no one is\nhome). Less important but still notable is that column reordering and\nhiding is also no longer possible, however the DataGrid correctly hides\nthese options from the UX so this isn\u0027t a bug, it\u0027s more of a missing\nfeature which has questionable value anyway.\n\nThere are two issues here:\n1. DataGrid should not show sorting options if sorting is controlled by\nno column callback is specified, as there is no way that sorting can be\npersisted in this case - it already correctly hides column re-ordering\noptions when this callback is missing.\n2. Regardless, we should allow sorting in the query results as this is a\ngenuinely useful feature.\n\nThis patch fixes the issue by:\n- Reverting DataGrid to uncontrolled mode - allow it to store the column\nstate internally. This enables sorting and column management.\n- Assign a unique id to each query result, and use it to key the\nResultsTable component.\n- While in the area, also move the DataSource construction (which caches\nthe intermediate lookups) to the oninit function of the ResultsTable\ncomponent as a new one will be created for each result set anyway now,\nwhich removes a lot of boilerplate caching code in the parent.\n\nNotes:\n- Switched from happy-dom to jsdom in the jest unit tests - as jsdom\nmore faithfully represents the real browser DOM (ariaLabel -\u003e\naria-label) properly.\n- This means we can un-skip a test which was previously skipped due to\nit not working with happy-dom.\n  \nFixes: https://b.corp.google.com/issues/516394557\n\n---------\n\nCo-authored-by: Steve Golton \u003cstevegolton@google.com\u003e"
    },
    {
      "commit": "cdf3389ce2f0373c9e19636b85087c2076645587",
      "tree": "6ae7ab146c5612e69a8b998e549113547c234f2a",
      "parents": [
        "2a2c7394c7c5aafeef63e0512099771d66470ed1"
      ],
      "author": {
        "name": "etiennep-chromium",
        "email": "etiennep@chromium.org",
        "time": "Tue Jun 02 13:01:37 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 02 13:01:37 2026"
      },
      "message": "[etw] Fix deprecated fields in EtwConfig (#6096)\n\nI deprecated the wrong field in\nhttps://github.com/google/perfetto/pull/6069\nThis CL fixes it."
    },
    {
      "commit": "2a2c7394c7c5aafeef63e0512099771d66470ed1",
      "tree": "3a6ce30baf676e37f726c1e9e005f58c54c44dc1",
      "parents": [
        "bf5eb96a733cd7d5aa43053142cc3a76ae91756e"
      ],
      "author": {
        "name": "zezeozue",
        "email": "zezeozue@google.com",
        "time": "Tue Jun 02 09:24:32 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 02 09:24:32 2026"
      },
      "message": "ui: Default to the Heap Dump Explorer on more traces (#6104)\n\nTreat traces with a small number of slices as not having timeline data\nto handle cases where there are trace triggers."
    },
    {
      "commit": "bf5eb96a733cd7d5aa43053142cc3a76ae91756e",
      "tree": "1b833eaff50f8dc5233bf2867a07196729ac31ef",
      "parents": [
        "508808413e7f262dba78558121134289398b6713"
      ],
      "author": {
        "name": "Steve Golton",
        "email": "stevegolton@google.com",
        "time": "Tue Jun 02 09:16:29 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 02 09:16:29 2026"
      },
      "message": "ui: Add option to make settings headless (#6103)\n\nAdd a new option when registering a setting to make it headless, which\nmeans it doesn\u0027t appear in the settings page and is only configurable\nprogrammatically. Useful for ephemeral settings such as panel positions\nor other state which is controllable elsewhere in the UI, which would\notherwise clutter the settings page."
    },
    {
      "commit": "508808413e7f262dba78558121134289398b6713",
      "tree": "9f6a1e018d1117f49d7799b2ae0a35b92e545879",
      "parents": [
        "b0746ceaece747e0816f664ffec8e9d4a046b1da"
      ],
      "author": {
        "name": "perfetto-automation[bot]",
        "email": "278437629+perfetto-automation[bot]@users.noreply.github.com",
        "time": "Tue Jun 02 08:44:12 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 02 08:44:12 2026"
      },
      "message": "Sync generated proto files (#6101)\n\nThis PR automatically synchronizes generated proto files with their\n`.proto` definitions.\n\n## Generated files updated\n- `.gen.cc` and `.gen.h` files\n- `.pcz.h` files\n- Binary descriptors\n- Python proto bindings\n\nThis is an automated PR generated by the `sync-protos` workflow.\n\nCo-authored-by: perfetto-automation[bot] \u003cperfetto-automation-github-app@google.com\u003e"
    },
    {
      "commit": "b0746ceaece747e0816f664ffec8e9d4a046b1da",
      "tree": "1683e7e97a16ad0fcb1ea0795d66b0ea01890cb0",
      "parents": [
        "9ede949f025303868fa0c42418f122ac47312539"
      ],
      "author": {
        "name": "Shin-Yu Wang",
        "email": "shinyuw@google.com",
        "time": "Tue Jun 02 03:24:53 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 02 03:24:53 2026"
      },
      "message": "Add disp_dpu_line_underrun ftrace (#6080)\n\nBug: 518567466\nTest: can use gfx to record, show event on ui correctly"
    },
    {
      "commit": "9ede949f025303868fa0c42418f122ac47312539",
      "tree": "87e3c278c13e0c6d4e20162511affd4d01a456b8",
      "parents": [
        "a3b79709c9ff31fdc573fc06650dc4e6f1bff75c"
      ],
      "author": {
        "name": "sashwinbalaji",
        "email": "sashwinbalaji@google.com",
        "time": "Mon Jun 01 21:53:05 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 01 21:53:05 2026"
      },
      "message": "Keep core protos out of the embedded extension descriptor (#6098)\n\ntracing_proto_extensions builds the schema dictionary that ships\non-device as /etc/tracing_descriptors.gz and gets embedded in traces to\ndescribe the out-of-tree extension fields.\n\nProblem\n- It emitted each extension file plus its direct imports — which pulled\nin the core extendee trace_packet.proto.\n- That dragged a reference to the newest core types (e.g.\nSystemdJournaldEvent) into the dictionary without their definitions.\n- Result: any trace_processor older than those types rejected the whole\ntrace as corrupt, instead of just skipping unknown\nfields.\n\nFix\n- Emit the extension file and its transitive deps, but skip core\nPerfetto protos (those under protos/perfetto/).\n- trace_processor already has the core protos built in, and the extendee\nresolves against that — so they never need embedding.\n- Matches the existing protozero_descriptor_diff design; shrinks the\nembedded descriptor (34 KB → \u003c1 KB for the frameworks_base case).\n\nTesting\n- Verified an old trace_processor (v55.3) that failed to open such a\ntrace opens it once the descriptor is rebuilt this way.\n- Added a regression test asserting core protos are excluded from the\noutput."
    },
    {
      "commit": "a3b79709c9ff31fdc573fc06650dc4e6f1bff75c",
      "tree": "d7282fdc515f072f9110b086ffef6ab89fa6bde7",
      "parents": [
        "f0926d34306ae21efb3e98ea6a19f6a43c2694e7"
      ],
      "author": {
        "name": "David Reveman",
        "email": "reveman@meta.com",
        "time": "Mon Jun 01 21:48:09 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 01 21:48:09 2026"
      },
      "message": "rust-sdk: update proto bindings (#6099)"
    },
    {
      "commit": "f0926d34306ae21efb3e98ea6a19f6a43c2694e7",
      "tree": "871f8fead7d44b2874700084cbb23e29f40d5394",
      "parents": [
        "cdc76a7051d8bc18a5b4c3a69bf318d257e283f9"
      ],
      "author": {
        "name": "David Reveman",
        "email": "reveman@meta.com",
        "time": "Mon Jun 01 20:50:02 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 01 20:50:02 2026"
      },
      "message": "rust-sdk: update crate version in preperation for stable release (#6097)\n\nperfetto-sdk-sys includes the amalgamated sources so it\u0027s good practice\nto update it when a stable release becomes available."
    },
    {
      "commit": "cdc76a7051d8bc18a5b4c3a69bf318d257e283f9",
      "tree": "177b6b61f0d777402e45414d06df1db2c6026d8e",
      "parents": [
        "4a46f952ac7bfdd943060277804c981841f914ae"
      ],
      "author": {
        "name": "Lalit Maganti",
        "email": "lalitm@google.com",
        "time": "Mon Jun 01 20:45:50 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 01 20:45:50 2026"
      },
      "message": "tp: fix parsing of asterik/star in Pigweed messages (#6077)"
    },
    {
      "commit": "4a46f952ac7bfdd943060277804c981841f914ae",
      "tree": "61ee1baf2b53605b1a5ec28f7dcd0e2ec1426795",
      "parents": [
        "8b65138050c38379e489e4a323e0472c08497449"
      ],
      "author": {
        "name": "zezeozue",
        "email": "zezeozue@google.com",
        "time": "Mon Jun 01 17:29:33 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 01 17:29:33 2026"
      },
      "message": "android_sdk: Increase default track event cache size (#6094)\n\nIn the oom adjuster there are some track events with 12 fields. This\nspilled the default extras cache size of 5. Bump to 16 to fix:\nb/518590599.\n\nLonger term, we can serialize protos in Java which will remove the need\nto maintain this caches that can cause cliff performance regressions.\n\nTest: Manually tested and verified 6x improvement for oom adjuster trace\npoints."
    },
    {
      "commit": "8b65138050c38379e489e4a323e0472c08497449",
      "tree": "d2a78086f87c80edc5349072a5d693f8ac3b4fca",
      "parents": [
        "b1840cdac31bedb553d339cd7e870f7332c7a2bd"
      ],
      "author": {
        "name": "Piotr Wilczyński",
        "email": "wilczynskip@google.com",
        "time": "Mon Jun 01 15:54:51 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 01 15:54:51 2026"
      },
      "message": "LayoutParams brightness unit (#6089)\n\nAdd a new parameter to LayoutParams - the brightness unit.\n\nb/507379861"
    },
    {
      "commit": "b1840cdac31bedb553d339cd7e870f7332c7a2bd",
      "tree": "421d92a29f0d018f0bb3e528327e2d8ee4563d26",
      "parents": [
        "c73bdc1cea60af256f05f5bd8346d6769d594113"
      ],
      "author": {
        "name": "gignat-dev",
        "email": "gignat@google.com",
        "time": "Mon Jun 01 15:41:06 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 01 15:41:06 2026"
      },
      "message": "ui: QueryPage: read sidebar-visible setting inline (#6083)\n\noninit cached sidebarVisibleSetting.get() into a private field, so a\nchange to the setting made on the Settings page wasn\u0027t reflected by an\nalready-mounted QueryPage.\n\nRead it into a local in view() each render instead; it\u0027s backed by an\nin-memory cache, so the per-render read is cheap, and the toggle writes\nthrough set() without a shadow field."
    },
    {
      "commit": "c73bdc1cea60af256f05f5bd8346d6769d594113",
      "tree": "594ba9fda4f353f5c8ed1bafab6502150c1718c2",
      "parents": [
        "80ccf2c040021d36ec9d87715df7367c14ad9762"
      ],
      "author": {
        "name": "Petr Čermák",
        "email": "petrcermak@users.noreply.github.com",
        "time": "Mon Jun 01 15:18:07 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 01 15:18:07 2026"
      },
      "message": "Add a missing SCSS import to echart_view.ts (#6088)\n\nFixed: #6087"
    },
    {
      "commit": "80ccf2c040021d36ec9d87715df7367c14ad9762",
      "tree": "1fed711edd7fa65623e2f0a092f3f974c1f1cf8c",
      "parents": [
        "e7a88cbe1c87418a2f566cf8722eec1d70c94343"
      ],
      "author": {
        "name": "Steve Golton",
        "email": "stevegolton@google.com",
        "time": "Mon Jun 01 10:54:48 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 01 10:54:48 2026"
      },
      "message": "ui: Fix query formatting on prod (#6024)\n\nQuery formatting on the query page is broken on prod. This patch fixes\nit.\n\nThe syntaqlite wasm blobs were being placed in `dist/`, not\n`dist/\u003cversion\u003e` so were never uploaded to GCS. Fix in build script and\nadjust URL path to match.\n\nThis should be cp\u0027d to canary before stable release."
    },
    {
      "commit": "e7a88cbe1c87418a2f566cf8722eec1d70c94343",
      "tree": "71adece2e3f75976c7f99ee7ad4bc08dbf3872c3",
      "parents": [
        "fb5d0a1d97ad551b4be3aa28936b0d0f91797564"
      ],
      "author": {
        "name": "sashwinbalaji",
        "email": "sashwinbalaji@google.com",
        "time": "Mon Jun 01 10:21:42 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 01 10:21:42 2026"
      },
      "message": "tp: populate parent_id in counter_track (#6081)\n\nThe counter_track view was returning NULL for parent_id even though the\nunderlying track has it set. Select the real value so nested counter\ntracks show their parent, matching the track table.\n\nI am not sure of historical context on why we explicitly set NULL as\nparent_id in aosp/3380377 but the change seems reasonable.\n\nBug: 518650526"
    },
    {
      "commit": "fb5d0a1d97ad551b4be3aa28936b0d0f91797564",
      "tree": "366baad98abe6ce327ae9279e159af6dc4cda1ba",
      "parents": [
        "6c63b492c9ee206e8ec31a19846f77592a3ad563"
      ],
      "author": {
        "name": "gignat-dev",
        "email": "gignat@google.com",
        "time": "Mon Jun 01 09:45:17 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 01 09:45:17 2026"
      },
      "message": "ui: QueryPage collapsible right sidebar with persistence (#6031)\n\nAdd a toggle button to the editor tab strip (right-aligned via a flex\nspacer) that hides/shows the History/Tables right sidebar. When hidden,\nthe editor takes the full page width.\n\nVisibility persists across sessions via a new\n`dev.perfetto.QueryPage#sidebarVisible` setting (defaultValue: true),\nregistered next to the existing queryTabPersistence one.\n\n\u003cimg width\u003d\"1910\" height\u003d\"840\" alt\u003d\"image\"\nsrc\u003d\"https://github.com/user-attachments/assets/63cb63f8-c202-4f63-aea4-48a06b4d462b\"\n/\u003e"
    },
    {
      "commit": "6c63b492c9ee206e8ec31a19846f77592a3ad563",
      "tree": "fc81aa1369c04e70dbf9d1431b74a0e6914fa81f",
      "parents": [
        "91cc0e8ba498070ec789a833a7944cc0a9ce0a3d"
      ],
      "author": {
        "name": "Lalit Maganti",
        "email": "lalitm@google.com",
        "time": "Sat May 30 16:04:29 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat May 30 16:04:29 2026"
      },
      "message": "tp: fix mismatching argument count causing OOB reads in II (#6078)"
    },
    {
      "commit": "91cc0e8ba498070ec789a833a7944cc0a9ce0a3d",
      "tree": "a223af85a9459a494d042caba353039df6fefbba",
      "parents": [
        "b62042fa3873c596ae89d5187ee189b479a20254"
      ],
      "author": {
        "name": "Lalit Maganti",
        "email": "lalitm@google.com",
        "time": "Sat May 30 15:15:59 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat May 30 15:15:59 2026"
      },
      "message": "tp: fix OOB read while parsing TCP event (#6076)"
    },
    {
      "commit": "b62042fa3873c596ae89d5187ee189b479a20254",
      "tree": "7614333ff2ff42ee37f683810432b9eca50df19f",
      "parents": [
        "76c26801956ef450f43c4e5ab0ec70d10fc5c627"
      ],
      "author": {
        "name": "sashwinbalaji",
        "email": "sashwinbalaji@google.com",
        "time": "Sat May 30 12:56:01 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat May 30 12:56:01 2026"
      },
      "message": "perfetto: keep zlib out of libperfetto_client_experimental (#6075)\n\n#6034 wired service:zlib_compressor into in_process_backend (part of\nlibperfetto_client_experimental / libperfetto_c) whenever\nenable_perfetto_zlib is on. In the android_tree build config\nPERFETTO_ZLIB is hard-defined to 1, so zlib_compressor.o (which calls\ndeflate*) is compiled into the client SDK static library.\n\nDownstream binaries that link the .a but do not link libz then fail with\nundefined deflate / deflateInit_ / deflateEnd, breaking the Android\nauto-roll.\n\nFix: build_config.h forces PERFETTO_ZLIB off when\nPERFETTO_FORCE_DISABLE_ZLIB is defined, gen_android_bp defines it for\nthe two SDK static libs, and enable_zlib() suppresses the libz dep for\nthem (mirroring enable_pcre2). The zlib compressor then compiles to\nnothing, so no libz dependency is imposed on consumers.\n\nThe amalgamated SDK (opt-in via PERFETTO_SDK_ENABLE_ZLIB) and standalone\nbuilds are unaffected."
    },
    {
      "commit": "76c26801956ef450f43c4e5ab0ec70d10fc5c627",
      "tree": "29775552919b36378ea0463c6659adc2d60714b3",
      "parents": [
        "c11e98f36b43bfe116950af0e00433cc36c37d50"
      ],
      "author": {
        "name": "perfetto-automation[bot]",
        "email": "278437629+perfetto-automation[bot]@users.noreply.github.com",
        "time": "Sat May 30 10:36:45 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat May 30 10:36:45 2026"
      },
      "message": "Sync generated proto files (#6074)\n\nThis PR automatically synchronizes generated proto files with their\n`.proto` definitions.\n\n## Generated files updated\n- `.gen.cc` and `.gen.h` files\n- `.pcz.h` files\n- Binary descriptors\n- Python proto bindings\n\nThis is an automated PR generated by the `sync-protos` workflow.\n\nCo-authored-by: perfetto-automation[bot] \u003cperfetto-automation-github-app@google.com\u003e"
    },
    {
      "commit": "c11e98f36b43bfe116950af0e00433cc36c37d50",
      "tree": "ffdac359fa4f2cd162bb0b9cad5ebd7e25ed1e7c",
      "parents": [
        "ac5767d3ef183f27cce05a0a9b7fde9e0e753973"
      ],
      "author": {
        "name": "ilkos",
        "email": "ilkos@google.com",
        "time": "Sat May 30 07:39:07 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat May 30 07:39:07 2026"
      },
      "message": "OOME proto: add exception message string (#6073)\n\nAddressing the review comments; it is not trivial or future-proof to try\nto have a structured form for all variations that the OOME exception\nmessage can take.\n\nBug: 502598449"
    },
    {
      "commit": "ac5767d3ef183f27cce05a0a9b7fde9e0e753973",
      "tree": "b285f35c4aa57d6344dc2ea83fe3c8cce21b6952",
      "parents": [
        "0418effc6a19914ff2bba04ab924eed6d5bcba6b"
      ],
      "author": {
        "name": "sashwinbalaji",
        "email": "sashwinbalaji@google.com",
        "time": "Fri May 29 21:20:07 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 29 21:20:07 2026"
      },
      "message": "perfetto: honor PERFETTO_REGEX_FORCE_STD in regex backend headers (#6072)\n\n#6034 made regex.cc include all backend headers unconditionally so\ngen_amalgamated can see through them, relying on each header to\nself-guard. regex_pcre2.h / regex_re2.h guarded only on\nPERFETTO_BUILDFLAG(PERFETTO_PCRE2/RE2), ignoring\nPERFETTO_REGEX_FORCE_STD.\n\nIn the android_tree build config PERFETTO_PCRE2 is defined to 1\nglobally, so the unconditional include pulled \u003cpcre2.h\u003e into every\ntarget, including libperfetto_client_experimental, which sets\n-DPERFETTO_REGEX_FORCE_STD precisely to avoid pulling in libpcre2 (see\ngn/perfetto.gni). This broke the Android auto-roll with \"\u0027pcre2.h\u0027 file\nnot found\".\n\nMake the header self-guards also honor PERFETTO_REGEX_FORCE_STD,\nmatching the backend-selection priority in regex.cc where FORCE_STD wins\nover PCRE2/RE2. Fix both headers as the opt-out contract applies\nsymmetrically."
    },
    {
      "commit": "0418effc6a19914ff2bba04ab924eed6d5bcba6b",
      "tree": "cc90e35296426ea854882c84ef964b476f3a18e6",
      "parents": [
        "b81b8eb5196ac62beb4b31a25dccdd350af19d9f"
      ],
      "author": {
        "name": "sashwinbalaji",
        "email": "sashwinbalaji@google.com",
        "time": "Fri May 29 20:42:13 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 29 20:42:13 2026"
      },
      "message": "protozero: make test_messages extensions import public to fix build (#6071)\n\nsrc/protozero/test/example_proto/test_messages.proto imports\nextensions.proto so that extensions.proto is bundled into test_messages\u0027\ndescriptor set (the reflection-based protozero_to_text / text_to_proto\ntests build a DescriptorPool from it and need the extension\ndefinitions).\n\nThe import is \"unused\" at the symbol level, so protoc emits an\nunused-import warning which breaks the perfetto-\u003echromium autoroll.\n\nSwitch it to `import public`: protoc exempts public imports from the\nunused-import check, while still recording extensions.proto as a\ndependency, so the descriptor-based tests keep passing."
    },
    {
      "commit": "b81b8eb5196ac62beb4b31a25dccdd350af19d9f",
      "tree": "5469daa4f7db7fe5eeb5585668307ea12eea5f62",
      "parents": [
        "0e6e280c24f0a5491b6a7587fe0eacfde4cdb7ac"
      ],
      "author": {
        "name": "etiennep-chromium",
        "email": "etiennep@chromium.org",
        "time": "Fri May 29 19:00:35 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 29 19:00:35 2026"
      },
      "message": "[etw] Add system_io_provider_events (#6069)\n\nThis PR adds EtwConfig::system_io_provider_events field to replace file\nand disk provider.\nIt also marks other fields as deprecated."
    },
    {
      "commit": "0e6e280c24f0a5491b6a7587fe0eacfde4cdb7ac",
      "tree": "0b7e8f3a839fad06485e5c23a99a185434f411b6",
      "parents": [
        "0a45ed1ed331ff2f889964ca95d3efa25cfc59ce"
      ],
      "author": {
        "name": "Primiano Tucci",
        "email": "primiano@google.com",
        "time": "Fri May 29 18:21:33 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 29 18:21:33 2026"
      },
      "message": "TraceBufferV2: add test after today investigation (#6067)\n\nSadly the theory I had was already dealt with by TBV2.\nJust adding a test for the future, but the test is already\npassing."
    },
    {
      "commit": "0a45ed1ed331ff2f889964ca95d3efa25cfc59ce",
      "tree": "81366b9aa64ac7f90f81b6ad8432e5266e4fd7a0",
      "parents": [
        "d119b70f5b0b2dc307f7a06142674c9c1ac33631"
      ],
      "author": {
        "name": "sashwinbalaji",
        "email": "sashwinbalaji@google.com",
        "time": "Fri May 29 16:59:39 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 29 16:59:39 2026"
      },
      "message": "run tools/gen_android_bp (#6066)"
    },
    {
      "commit": "d119b70f5b0b2dc307f7a06142674c9c1ac33631",
      "tree": "049089a9ca462ca6268b8a24452108b81e19d96d",
      "parents": [
        "ea5976c799814f827d2bccb4572f26e1c444a43a"
      ],
      "author": {
        "name": "Ross Ning",
        "email": "rossning92@gmail.com",
        "time": "Fri May 29 16:54:33 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 29 16:54:33 2026"
      },
      "message": "trace_processor: Parse adreno_cmdbatch_retired/sync events (#5817)\n\nAdd custom parsing for kgsl adreno_cmdbatch_sync and\nadreno_cmdbatch_retired ftrace events to produce GPU timeline slices in\nthe trace processor.\n\u003cimg width\u003d\"1202\" height\u003d\"421\" alt\u003d\"image\"\nsrc\u003d\"https://github.com/user-attachments/assets/b99952e1-9c10-4ffa-a068-f6ccf1efecc9\"\n/\u003e\n\nThis is a rework of #5519 (reverted in #5793) which fixes the GPU event\ndrift in the timeline by using per-cmdbatch sync points instead of a\nsingle global clock snapshot.\nConfirmed this PR fixes all drift issues that @batesj has observed on\nhis end.\n\nTest run result:\n\n```\n$ tools/ninja -C out/host\n[16/16] stamp obj/default.stamp\n\n$ .venv/bin/python3 tools/diff_test_trace_processor.py out/host/trace_processor_shell --name-filter \u0027.*adreno.*\u0027\n[\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d] Running 1 tests.\n[ RUN      ] AdrenoCmdbatch:adreno_cmdbatch_retired_slice\n[       OK ] AdrenoCmdbatch:adreno_cmdbatch_retired_slice (ingest: 738.62 ms query: 0.44 ms)\n[\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d] Name filter selected 1 tests out of 1357.\n[\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d] 1 tests ran out of 1 total. (1115 ms total)\n[  PASSED  ] 1 tests.\n```"
    },
    {
      "commit": "ea5976c799814f827d2bccb4572f26e1c444a43a",
      "tree": "a8062c17dee65d9c4e3e567a6c55203e3932e16e",
      "parents": [
        "bce508c8ed072f0b2d6c588c6a2cb34c4fc9b774"
      ],
      "author": {
        "name": "Lalit Maganti",
        "email": "lalitm@google.com",
        "time": "Fri May 29 16:51:15 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 29 16:51:15 2026"
      },
      "message": "tp: fix slice breakdown to correctly use stack_id (#6063)"
    },
    {
      "commit": "bce508c8ed072f0b2d6c588c6a2cb34c4fc9b774",
      "tree": "8350f346c1cfd9adbca953ffe02a768bdb4f5e94",
      "parents": [
        "40bad2d94b40cd5ee1a906861b0321244d5ec4b8"
      ],
      "author": {
        "name": "sashwinbalaji",
        "email": "sashwinbalaji@google.com",
        "time": "Fri May 29 16:48:23 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 29 16:48:23 2026"
      },
      "message": "perfetto: move app_wakelock trace packets out-of-tree (#6060)\n\nMoves AppWakelockBundle and AppWakelockInfo out of the upstream trace\nschema into the Android platform tree (package com.android.internal) as\nframeworks/base out-of-tree extensions:\n\n- TracePacket.app_wakelock_bundle (116) and\nInternedData.app_wakelock_info (42) become `extensions`; the schemas\nmove to\nprotos/third_party/android/.../frameworks_base_trace_packet.proto and\nframeworks_base_interned_data.proto, registered in extensions.json.\n- app_wakelock_module, traceconv, protoprofile and additional_modules\nload the android_extension descriptor; the public C SDK drops the\nfields."
    },
    {
      "commit": "40bad2d94b40cd5ee1a906861b0321244d5ec4b8",
      "tree": "7f275b02690c06dd0729f0687de6f1d4ad45d86e",
      "parents": [
        "dbc4c5ecaf61c7dc2fb5a005666cea05bb9c15ac"
      ],
      "author": {
        "name": "sashwinbalaji",
        "email": "sashwinbalaji@google.com",
        "time": "Fri May 29 16:48:03 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 29 16:48:03 2026"
      },
      "message": "perfetto: add proto2 extension support to protozero and trace_processor (#6059)\n\nAdds the shared infrastructure needed to define and decode out-of-tree\n(OOT) proto extensions, independent of any specific extension:\n\n- protozero TypedProtoDecoderBase::GetExtensionSlowly() for resolving\nextension fields whose ids exceed the highest in-tree field id.\n- DescriptorPool / FieldDescriptor support for extension full names\n(ExtensionInfo carries the enclosing scope), with matching\nprotozero_to_text / protozero_to_json formatting.\n- text_to_proto extension support and the tracing_proto_extensions tool,\nincluding a --base-descriptor flag so leaf extension protos can be\ncompiled against a prebuilt FileDescriptorSet instead of the full source\nclosure.\n- Refactor existing track_event and winscope extension decoding to use\nGetExtensionSlowly (behaviour-preserving for in-range fields)."
    },
    {
      "commit": "dbc4c5ecaf61c7dc2fb5a005666cea05bb9c15ac",
      "tree": "c124c0ab70fe6ec721497d9bc1c602973380d183",
      "parents": [
        "6dd507dc393710672850298aa9c8c010e2f6d3e4"
      ],
      "author": {
        "name": "Elliot Saba",
        "email": "staticfloat@gmail.com",
        "time": "Fri May 29 16:25:05 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 29 16:25:05 2026"
      },
      "message": "tp: Parse JournaldEventPacket into unified LogTable (2/3) (#5797)\n\ntp: Parse JournaldEventPacket into unified LogTable\n\nRefactor `AndroidLogTable` into a unified `LogTable` (`log_tables.py`,\nexposed as `__intrinsic_logs`) that stores log entries from all sources.\nA new log_source STRING column identifies the origin: \u0027android\u0027 or\n\u0027systemd_journald\u0027. `LogTable` is moved out of `android_tables.py` into\nits own `log_tables.py` since it is no longer Android-specific.\n\nNew linux_probes_parser.cc parses `JournaldEventPacket` and inserts into\n`LogTable` with log_source\u003d\u0027systemd_journald\u0027. Journald-specific\nmetadata\n(uid, comm, systemd_unit, hostname, transport) is stored via\n`ArgsTracker`.\n\nThree SQL views are provided:\n- logs: all entries from all sources\n- android_logs: convenience alias for log_source\u003d\u0027android\u0027 entries\n- journald_logs: journald entries with metadata columns via\nextract_arg()\n\njournald_logs must be imported from the `linux.systemd_journald` SQL\nmodule, the Android and base logs table continue to be stored in the\nprelude.\n\nThis is part 2 of a split-up version of #5331 and will close #3288.\n\nThis PR was co-written by AI; while I iterated on it until the look and\nfeel felt correct, there may be context or use cases that I am unaware\nof. I am open to all review comments, and will do my best to address\nthem.\n\nCo-authored-by: Lalit Maganti \u003clalitm@google.com\u003e"
    },
    {
      "commit": "6dd507dc393710672850298aa9c8c010e2f6d3e4",
      "tree": "3d04a37208338811081ab5b582d4b280925612e5",
      "parents": [
        "151a111362961e475eb8c39649cf3fb62f59f084"
      ],
      "author": {
        "name": "Samuel Wu",
        "email": "wusamuel@google.com",
        "time": "Fri May 29 14:08:43 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 29 14:08:43 2026"
      },
      "message": "Android.bp.extras: Expose Wattson power curves in Android (#6042)\n\nAdd filegroup for Wattson power curves in Android.bp.extras, such that\nthis data can be referenced by Android. This prevents having multiple\ncopies of the same data across Perfetto/Android.\n\nBug: 456540614\n\nSigned-off-by: Samuel Wu \u003cwusamuel@google.com\u003e"
    },
    {
      "commit": "151a111362961e475eb8c39649cf3fb62f59f084",
      "tree": "8e2415729c712128a9cbd259bcd3b2d3ef940f3a",
      "parents": [
        "d1adf399d5d8efdc40c0268418d895639339e882"
      ],
      "author": {
        "name": "Primiano Tucci",
        "email": "primiano@google.com",
        "time": "Fri May 29 14:04:01 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 29 14:04:01 2026"
      },
      "message": "gen_android_bp: add way to emit a flat filegroup with all transitive protos (#6062)\n\nThe per-proto-target filegroups that create_proto_modules() generates\nonly contain the .proto sources declared directly in that GN target.\nTransitive proto deps are pulled in indirectly via the _gen /\n_gen_headers genrules, each of which references the matching per-dep\nfilegroup.\n\nThat works fine for codegen but is awkward for downstream consumers\nthat just want the full flat list of .proto files in one place (e.g.\nJava/Kotlin proto compilation, descriptor generation, custom Soong\nrules) - there is no single filegroup to point them at.\n\nAdd a transitive_proto_filegroups dict at the top of gen_android_bp\nmapping a Soong filegroup name to a GN target. For each entry we emit\none extra filegroup whose srcs is the union of the GN target\u0027s own\nsources and every transitive proto_library dep\u0027s sources.\n\nThe first entry produces\nperfetto_protos_perfetto_trace_non_minimal_protos\nfrom //protos/perfetto/trace:non_minimal_source_set, which ends up with\nthe full ~260 .proto closure of the non-minimal trace protos."
    },
    {
      "commit": "d1adf399d5d8efdc40c0268418d895639339e882",
      "tree": "80ac3587b5aedb966b832bbde9f9c3ecd51f217b",
      "parents": [
        "b577c79ff64926367d2e9deea58aa9bf848562df"
      ],
      "author": {
        "name": "Lalit Maganti",
        "email": "lalitm@google.com",
        "time": "Thu May 28 23:12:01 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 28 23:12:01 2026"
      },
      "message": "sdk: allow zlib and re2 to be enabled with the amalgamated SDK (#6034)\n\nThis CL adds support for the SDK exposing cflag knobs for enabling\noptional features such as use of zlib for compression and re2 for\nregex usage. This depends on these headers being avaialble and the\nlibraries being linkable which its up to callers to enable.\n\nWe define new cflags for this purpose which feed into to buildflags\ntransparently so it just works.\n\nFixes: https://github.com/google/perfetto/issues/3118"
    },
    {
      "commit": "b577c79ff64926367d2e9deea58aa9bf848562df",
      "tree": "b8033cbe84e7079c02e13cadd5e194faefb47e75",
      "parents": [
        "683a6365d193dd65aca9d9c8be52391367d53cbb"
      ],
      "author": {
        "name": "Lalit Maganti",
        "email": "lalitm@google.com",
        "time": "Thu May 28 21:24:22 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 28 21:24:22 2026"
      },
      "message": "perfetto: scope RelayPort to explicitly opted-in producer sockets (#5908)\n\nWith --enable-relay-endpoint set and multiple producer sockets bound,\ntraced exposed the RelayPort IPC service on every one of them,\nincluding local AF_UNIX sockets reachable by unprivileged apps. A local\ncaller could bind RelayPort and cache forged SystemInfo /\nRemoteClockSync data that traced later emitted with its trusted packet\nsequence ID, defeating PacketStreamValidator.\n\nGate RelayPort exposure per ListenEndpoint via a new\nexpose_relay_endpoint bit honoured by ServiceIPCHostImpl. Add\n--enable-relay-endpoint-on\u003d\u003csock\u003e as a narrower variant of\n--enable-relay-endpoint that turns RelayPort on only for the named\nproducer sockets, which must already appear in\nPERFETTO_PRODUCER_SOCK_NAME. On Android the init-bound local producer\nsocket is never relay-capable; traced.relay_producer_port keeps adding\nits own relay socket. --enable-relay-endpoint retains its existing\nsemantics for the common single-socket multi-machine setup."
    },
    {
      "commit": "683a6365d193dd65aca9d9c8be52391367d53cbb",
      "tree": "2cccb6de03298a8fec9fcce2a3e16b72602ff68a",
      "parents": [
        "c00c7e487333626c4e4ce762f26bdb08072233e0"
      ],
      "author": {
        "name": "Lalit Maganti",
        "email": "lalitm@google.com",
        "time": "Thu May 28 20:42:02 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 28 20:42:02 2026"
      },
      "message": "relay: fix silent chunk loss with TCP producer socket (#6052)\n\nIn shmem emulation mode the service-side SMB is 256 KiB / 64\npages by default, but the producer\u0027s emulated SMB is 1 MiB / 256\npages. ProducerEndpointImpl::CommitData rejected every chunk\nwith page_idx \u003e\u003d 64 at the top of the loop, silently dropping\n~75% of chunks with no stats counter incremented.\n\nIn that path entry.page() is informational only: the chunk\npayload comes inline via entry.data(). Move the page-range\ncheck into the real-shmem branch where it\u0027s actually meaningful.\n\nAdds a regression test contrasting unix vs TCP producer sockets,\nplus a small fake_producer knob to drive it with kDrop.\n\nFixes #6051."
    },
    {
      "commit": "c00c7e487333626c4e4ce762f26bdb08072233e0",
      "tree": "5d77e99ee8b4ca89661dd73d729ca0539158dfa9",
      "parents": [
        "55f31a51d6067f42bdb127e3d244d4c3a89246e0"
      ],
      "author": {
        "name": "Lalit Maganti",
        "email": "lalitm@google.com",
        "time": "Thu May 28 20:09:41 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 28 20:09:41 2026"
      },
      "message": "sdk: don\u0027t match data source id 0 against any datasource (#5927)\n\n0 is the startup tracing data source so it\u0027s never valid to match it to\nany session.\n\nSee crbug/513831299 for more information."
    },
    {
      "commit": "55f31a51d6067f42bdb127e3d244d4c3a89246e0",
      "tree": "86fa3c1c5e2249034c7632fc0f108d61d54997c8",
      "parents": [
        "a85b5352e4b0df6649e05ff13dfc7a406b8982fb"
      ],
      "author": {
        "name": "Ross Ning",
        "email": "rossning92@gmail.com",
        "time": "Thu May 28 20:08:05 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 28 20:08:05 2026"
      },
      "message": "tp: use raw ftrace timestamp in ftrace_event table via dual-push (#6058)\n\nCustom tokenizers (gpu_work_period, thermal_exynos_acpm_bulk,\nparam_set_value_cpm, fwtp_perfetto_counter, fwtp_perfetto_slice) forge a\ndifferent sorter timestamp to reposition events on the timeline. This\ncaused the ftrace_event table to show the forged timestamp instead of\nthe original kernel time.\n\nFix this by having each custom tokenizer push the event through the\nsorter twice: once at the raw ftrace timestamp for the ftrace_event\ntable, and once at the forged timestamp for event-specific parsing. Both\nftrace_event.ts and slice.ts remain SORTED.\n\nThis builds on #5809 which introduced FtraceData::raw_ts for drop-window\nchecks, and is a prerequisite for #5817 (adreno cmdbatch parsing) which\nneeds to forge gpu_start_ts for correct slice ordering.\n\nBug: N/A"
    },
    {
      "commit": "a85b5352e4b0df6649e05ff13dfc7a406b8982fb",
      "tree": "6b566ccd1e6bd9ba0b97d2d9eec2f0fa39776c97",
      "parents": [
        "2a693fe06a99c7c2740c8d07c704713dc9e38e2e"
      ],
      "author": {
        "name": "Lalit Maganti",
        "email": "lalitm@google.com",
        "time": "Thu May 28 19:19:54 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 28 19:19:54 2026"
      },
      "message": "ui: fix extension server shared link behavior (#6057)\n\nPrevent autofill edits from causing manifest fetches without explicit\nconfirm."
    },
    {
      "commit": "2a693fe06a99c7c2740c8d07c704713dc9e38e2e",
      "tree": "a616eb921cff0caf24b7a8c7b48c22a28134e451",
      "parents": [
        "7f9716d6cc9c9a0550fcd96b2c2fdae1b3cf0df3"
      ],
      "author": {
        "name": "etiennep-chromium",
        "email": "etiennep@chromium.org",
        "time": "Thu May 28 18:21:55 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 28 18:21:55 2026"
      },
      "message": "[SDK] Avoid DCHECK Track::FromPointer in uninitialized perfetto (#6032)\n\nIt\u0027s common for perfetto to not be initialized by the test harness in\nChrome.\nThis prevents (Named)Track::FromPointer from being used outside of\nTRACE_EVENT macro.\n\nThis is a common pattern:\n```\nauto track \u003d perfetto::Track::FromPointer(this);\nTRACE_EVENT_BEGIN(..., track);\nTRACE_EVENT_END(..., track);\n```\nTo allow doing this without extra hoops (e.g. guarding behind\nperfetto::Tracing::IsInitialized()), this PR avoids triggering the\nDCHECK when perfetto is not initialized (process_uuid \u003d 0).\n\nSome thoughts: this poses a risk of *not* triggering the check if the\ntrack is created before perfetto is initialized. However: (1) this\nwasn\u0027t the purpose of this check anyway and it\u0027s possible to do so with\nother Tack api and (2) in chrome, perfetto is initialized early enough\nthat it\u0027d be hard to achieve."
    },
    {
      "commit": "7f9716d6cc9c9a0550fcd96b2c2fdae1b3cf0df3",
      "tree": "deb9efbd4a35a6271b35d543141b44f52747d698",
      "parents": [
        "82ad4b69cbaf64e26c639061b1712756a9cc5e20"
      ],
      "author": {
        "name": "Lalit Maganti",
        "email": "lalitm@google.com",
        "time": "Thu May 28 16:52:29 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 28 16:52:29 2026"
      },
      "message": "skills: add an out of band json file instead of targets frontmatter (#6056)\n\nG3 doesn\u0027t like unknown keys in the fontmatter so instead just have a\njson file for this purpose"
    },
    {
      "commit": "82ad4b69cbaf64e26c639061b1712756a9cc5e20",
      "tree": "993ad52126a0a9d9609fd2f21498e9ecb397806a",
      "parents": [
        "50967dd1d6519df5236e689e74dfe502ed515f85"
      ],
      "author": {
        "name": "Lalit Maganti",
        "email": "lalitm@google.com",
        "time": "Thu May 28 14:04:21 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 28 14:04:21 2026"
      },
      "message": "ai: improve skills for single heap dump and add cluster heap dump (#6037)"
    },
    {
      "commit": "50967dd1d6519df5236e689e74dfe502ed515f85",
      "tree": "442e1110e4f4ae2f318894ee6eb50cbbc1394ac6",
      "parents": [
        "874b3228eea9c51d4ba0439fdaf73b6088b4de00"
      ],
      "author": {
        "name": "zhilei zhang",
        "email": "100331525+zzl360@users.noreply.github.com",
        "time": "Thu May 28 09:41:08 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 28 09:41:08 2026"
      },
      "message": "base: avoid strerror text in sched boost tests (#6048)\n\nAvoid matching the localized strerror text in the ScopedSchedBoost Linux\nintegration tests.\n\nThe tests still check that the expected sched_setscheduler call failed\nand that the stable errno value is present.\n\nTested:\n- /data1/ent_145/src/buildtools/linux64-format/clang-format --dry-run\n--Werror src/base/scoped_sched_boost_unittest.cc\n- git diff --check"
    },
    {
      "commit": "874b3228eea9c51d4ba0439fdaf73b6088b4de00",
      "tree": "27884bf8ced6e0b21e3caba2fb82923c0830d10c",
      "parents": [
        "16bcf742c56ee1a89315d11932b13793a11901da"
      ],
      "author": {
        "name": "Lalit Maganti",
        "email": "lalitm@google.com",
        "time": "Thu May 28 09:40:44 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 28 09:40:44 2026"
      },
      "message": "skills: improve evals for querying traces (#6047)"
    },
    {
      "commit": "16bcf742c56ee1a89315d11932b13793a11901da",
      "tree": "823393d44f566e7167b46ee8fc89391a692fe925",
      "parents": [
        "7181bb6e71ab592956882ee86c7bdd570a53d71d"
      ],
      "author": {
        "name": "perfetto-automation[bot]",
        "email": "278437629+perfetto-automation[bot]@users.noreply.github.com",
        "time": "Thu May 28 03:35:18 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 28 03:35:18 2026"
      },
      "message": "Sync generated proto files (#6049)\n\nThis PR automatically synchronizes generated proto files with their\n`.proto` definitions.\n\n## Generated files updated\n- `.gen.cc` and `.gen.h` files\n- `.pcz.h` files\n- Binary descriptors\n- Python proto bindings\n\nThis is an automated PR generated by the `sync-protos` workflow.\n\nCo-authored-by: perfetto-automation[bot] \u003cperfetto-automation-github-app@google.com\u003e"
    },
    {
      "commit": "7181bb6e71ab592956882ee86c7bdd570a53d71d",
      "tree": "9ddd866b8609e159e10071dcb96bdd3be2cc5f88",
      "parents": [
        "9d493bdb689299010ff83b0d51d55bc7ad8b1a7f"
      ],
      "author": {
        "name": "Ryan",
        "email": "rsavitski@google.com",
        "time": "Wed May 27 18:51:31 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 27 18:51:31 2026"
      },
      "message": "tp: decode new smaps packets into process_memory_mappings (#6043)\n\nAdds parsing for the packed smaps trace packets, extending the existing\nprofiler_smaps table. The table is used by legacy smaps writer and\nchrome memory infra (and therefore json exporter). A new prelude view\n(process_memory_mappings) is added for a cleaner view into the data\nwritten by the newer smaps parser.\n\nBug: 476126931"
    },
    {
      "commit": "9d493bdb689299010ff83b0d51d55bc7ad8b1a7f",
      "tree": "544107b7cbe0f80150662777e909e778e84ce6be",
      "parents": [
        "6c1755b9825fd79b52d4262090ad2e8f7e373def"
      ],
      "author": {
        "name": "Lalit Maganti",
        "email": "lalitm@google.com",
        "time": "Wed May 27 16:43:01 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 27 16:43:01 2026"
      },
      "message": "ai: add extensions for coding agents and add bundling scripts (#6046)\n\nImplements much of https://github.com/google/perfetto/discussions/5892.\nFollowups with integrate it into Github Actions and make it part of the\nrelease process."
    },
    {
      "commit": "6c1755b9825fd79b52d4262090ad2e8f7e373def",
      "tree": "8007d96687576229dbd5730e5fcc51205a8a5146",
      "parents": [
        "34088e9f250c7c08e7918eea2572a51f3d19a534"
      ],
      "author": {
        "name": "Ryan",
        "email": "rsavitski@google.com",
        "time": "Wed May 27 15:53:21 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 27 15:53:21 2026"
      },
      "message": "perfetto_hprof: make new smaps parser accessible (#6035)"
    },
    {
      "commit": "34088e9f250c7c08e7918eea2572a51f3d19a534",
      "tree": "b6531d68ead07c1f90d79e2dd31883a143d0890d",
      "parents": [
        "a64594bb5f0d04fa8ec2e565360372dd3af54a3d"
      ],
      "author": {
        "name": "Ryan",
        "email": "rsavitski@google.com",
        "time": "Wed May 27 15:23:48 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 27 15:23:48 2026"
      },
      "message": "smaps: add path name redaction rules (#5985)\n\nAdds optional path name redaction rules to the new /proc/pid/smaps\nencoder. A config can specify an ordered set of rules, where the first\nmatching rule will either keep the name as is, or redact it.\n\nMatching can be done using prefixes and fnmatch (i.e. glob patterns).\nRedaction is constrained to keeping leading N path elements and file\nextensions, or combinations thereof.\n\nNote that all mappings and values are still emitted, it is only the name\nof the mapping that potentially gets changed. In other words, this is\n*not* a filter for conditionally collecting only specific mappings.\n\nThe redaction rules are implemented separately from the existing trace\nfiltering bytecode logic for efficiency. However if the need arises for\nregex redaction, the bytecode can still be applied to the string_table\nfield."
    },
    {
      "commit": "a64594bb5f0d04fa8ec2e565360372dd3af54a3d",
      "tree": "9a156d5628c111a8df7dda4110e63f8a7b7fd488",
      "parents": [
        "9be74dee388020c53046e39556eb915e62d05179"
      ],
      "author": {
        "name": "sashwinbalaji",
        "email": "sashwinbalaji@google.com",
        "time": "Wed May 27 11:46:29 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 27 11:46:29 2026"
      },
      "message": "traced_probes: reduce noise in disconnect-trigger captures (#6045)\n\nTwo related changes to make perfetto.traced_probes.disconnect traces\nmore useful for debugging real crashes:\n\n1. probes_producer.cc: floor the kTraceDidntStop watchdog timeout at 5\nmin via the new kMinTraceDidntStopTimeoutMs constant. The previous 2 *\n(kDefaultFlushTimeoutMs + duration + stop_timeout) was too tight under\nheavy load: e.g. on a 30s/5s bounded session it works out to 80s, and on\nbusy devices we saw the producer\u0027s main thread spend most of that in\nftrace processing (multi-second per-DS read cycles), so the queued\nStopDataSource didn\u0027t get serviced in time. The floor prevents the\nspurious kill without weakening the guarantee that a genuinely stuck\nproducer still gets killed.\n\n2. tracing_service_impl.cc: skip the disconnect trigger for producers\nrelayed from a non-default machine_id. VM-side (e.g. Microdroid pVM)\ntraced_probes uses the same producer name \"perfetto.traced_probes\", so\nthe existing check fired on every VM teardown, which is expected\nbehaviour and not the host crash we want to capture.\n\nBug: b/496506220"
    },
    {
      "commit": "9be74dee388020c53046e39556eb915e62d05179",
      "tree": "65e4796f5b17738d968df8860b93a6c106661ff1",
      "parents": [
        "0a4ec719f54343b69a787a3e0f08b144ae26e09b"
      ],
      "author": {
        "name": "sashwinbalaji",
        "email": "sashwinbalaji@google.com",
        "time": "Wed May 27 11:35:56 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 27 11:35:56 2026"
      },
      "message": "perfetto: unify OOT extension registries and reserve TracePacket range (#6039)\n\nPrep work for moving TracePacket and InternedData fields out-of-tree as\nproto2 extensions. This PR doesn\u0027t move any fields yet, it just sets up\nthe shared infrastructure so each subsystem can land as its own PR\nlater.\n\n  What changes:\n\n  1. Folds track_event_extensions.json and interned_data_extensions.json\n     into a single protos/perfetto/trace/extensions.json with three\nsections (TrackEvent, TracePacket, InternedData). TrackEvent content\n     is copied verbatim; InternedData keeps perfetto_gpu and drops the\n     never-used perfetto_tests reservation.\n\n  2. Teaches tools/tracing_proto_extensions to accept TracePacket and\n     InternedData scopes (it already understood TrackEvent). Same\n     validator, just more allowed values.\n\n  3. Reserves TracePacket tag range 1000-1999 for future OOT\nallocations, same pattern TrackEvent already uses for [1000, 10000]."
    },
    {
      "commit": "0a4ec719f54343b69a787a3e0f08b144ae26e09b",
      "tree": "2a303035ef94baeaf9a8778842d2ccd5dc187949",
      "parents": [
        "d211be3e8dc2001d6cb3be8884a4533ecee9d6b7"
      ],
      "author": {
        "name": "Nicolò Mazzucato",
        "email": "nicomazz@google.com",
        "time": "Wed May 27 10:47:34 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 27 10:47:34 2026"
      },
      "message": "Optimize android_blocking_calls_cuj_per_frame_metric (#6044)\n\nMaterialize intermediate views with window functions and groupings into\nPerfetto tables (_android_distinct_frames_in_cuj,\n_extended_frame_boundary, _blocking_calls_frame_cuj) to avoid quadratic\nview evaluation overhead during joins in SQLite.\n\n\nOriginally from gelanchezhian@\n\nCo-authored-by: Gopinath Elanchezhian \u003cgelanchezhian@google.com\u003e"
    },
    {
      "commit": "d211be3e8dc2001d6cb3be8884a4533ecee9d6b7",
      "tree": "087f6fce8222996bde891f4812fd52608bab4151",
      "parents": [
        "d3f3fe3b7569ab8f1f64ccf74dc4c2776db76f32"
      ],
      "author": {
        "name": "Lalit Maganti",
        "email": "lalitm@google.com",
        "time": "Tue May 26 18:13:18 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 26 18:13:18 2026"
      },
      "message": "tp: fix clash with \"DEBUG\" on MacOS toolchain (#6038)\n\nDEBUG is a common cflag on MacOS debug builds causing all sorts of\ncompile problems in these situations. Fix it by renaming the plain\nDEBUG symbol by adding a prefix."
    },
    {
      "commit": "d3f3fe3b7569ab8f1f64ccf74dc4c2776db76f32",
      "tree": "d69808eb36880c9c66b09f24968a209115173803",
      "parents": [
        "b33026f4a2255d821a40266596d95c084666a2d9"
      ],
      "author": {
        "name": "zezeozue",
        "email": "zezeozue@google.com",
        "time": "Tue May 26 16:30:09 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 26 16:30:09 2026"
      },
      "message": "ui: Show oom_score_adj on heap dump explorer overview (#6025)\n\nAdded an \"OOM score\" row under Process in the Heapdump Explorer\noverview, showing the process oom_score_adj at the dump instant as\n\"bucket (score)\" from the stdlib oom adjuster module. Omitted when the\ntrace has no oom data."
    },
    {
      "commit": "b33026f4a2255d821a40266596d95c084666a2d9",
      "tree": "0e4a22b981b9bc8cac61f3d8fb7468ebd08ea00c",
      "parents": [
        "9b50320fedf1b2e7aca3fcb62420cf1700dccb72"
      ],
      "author": {
        "name": "Harshit Rawat",
        "email": "harshit.rawat612@gmail.com",
        "time": "Tue May 26 14:00:07 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 26 14:00:07 2026"
      },
      "message": "perfetto: enhance trace querying skill with guidelines and execution protocol (#5983)\n\nIntegrates high-fidelity analysis guidelines into the infra querying\nskill to improve query reliability and agent methodology during complex\ntrace investigations.\n\nKey changes:\n- Added an execution protocol (Research -\u003e Draft -\u003e Validate -\u003e Output)\nto ensure agents systematically locate schemas before drafting.\n- Add more SQL best practices.\n- Expanded TEST and EVAL suites to include complex wakeup chain tracing,\nensuring the skill maintains high quality for advanced analytical\nintents.\n\nDiscussion Points:\nWould love guidance on the following:\n**Perfetto-stdlib Reference:** I am looking for feedback on the best way\nto reference the perfetto-stdlib from this skill. To prevent the agent\nfrom sometimes skipping necessary web searches for the documentation\n(which is the current structure), would it be more efficient to check in\nperfetto-stdlib.md as a local reference, or perhaps maintain a versioned\nperfetto-stdlib.md in the Perfetto repository for the agent to download\non the fly? What is your preferred precedent for linking or referencing\nthis?\n\nEvals referred in the updated `EVALS.txtpb`:\nhttps://docs.google.com/document/d/1Dkgchsx4e4g5tenPjSTAflHC0Qfijsm4OPKRRznIIac/edit?tab\u003dt.2dw8nkqw4y4k\n\nWelcome to Perfetto!\nMake sure your PR has a bug/issue attached or has at least\na clear description of the problem you are trying to fix.\n\nFor more details please see\nhttps://perfetto.dev/docs/contributing/getting-started"
    },
    {
      "commit": "9b50320fedf1b2e7aca3fcb62420cf1700dccb72",
      "tree": "bee4369ce543618dad271b496ed302b53a17c63a",
      "parents": [
        "6f997302222736027f301ee9ac6d9621e241abc1"
      ],
      "author": {
        "name": "David Reveman",
        "email": "reveman@meta.com",
        "time": "Mon May 25 11:21:19 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon May 25 11:21:19 2026"
      },
      "message": "docs: document GPU UI plugins and add example query (#6028)\n\nAdd a UI plugins section to docs/data-sources/gpu.md covering\ndev.perfetto.Gpu, dev.perfetto.GpuByProcess, and com.meta.GpuCompute,\neach with a screenshot. Add an example queries section with a recipe\nthat ranks the top 5 longest compute kernels by duration and computes a\ntime-weighted average of each GPU\u0027s Utilization counter over the\nkernel\u0027s execution window."
    },
    {
      "commit": "6f997302222736027f301ee9ac6d9621e241abc1",
      "tree": "de3c6b3f356ef782747a2e8bd6d12f5dbc4cc43b",
      "parents": [
        "42b44ce121a3fca4c467c845f9cc51283f9f8465"
      ],
      "author": {
        "name": "perfetto-automation[bot]",
        "email": "278437629+perfetto-automation[bot]@users.noreply.github.com",
        "time": "Sat May 23 20:10:12 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat May 23 20:10:12 2026"
      },
      "message": "Sync generated proto files (#6026)\n\nThis PR automatically synchronizes generated proto files with their\n`.proto` definitions.\n\n## Generated files updated\n- `.gen.cc` and `.gen.h` files\n- `.pcz.h` files\n- Binary descriptors\n- Python proto bindings\n\nThis is an automated PR generated by the `sync-protos` workflow.\n\nCo-authored-by: perfetto-automation[bot] \u003cperfetto-automation-github-app@google.com\u003e"
    },
    {
      "commit": "42b44ce121a3fca4c467c845f9cc51283f9f8465",
      "tree": "c898f4ef4db2c3ed26fb94446cf0c5a8f43c9369",
      "parents": [
        "67cbf9329bce1410a6de1fddc19ddac337686fd7"
      ],
      "author": {
        "name": "Lalit Maganti",
        "email": "lalitm@google.com",
        "time": "Fri May 22 21:11:31 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 22 21:11:31 2026"
      },
      "message": "tp: add Transaction + parameterized Execute to PerfettoSqlConnection (#6020)\n\nIntroduce two helpers on PerfettoSqlConnection:\n\n - A Transaction RAII type that issues BEGIN/COMMIT, for batching a\n   sequence of Execute() calls so SQLite does not implicitly commit\n   after each statement.\n\n - A parameterized Execute() overload that prepares/binds/steps a\n   single plain-SQLite statement directly, bypassing the PerfettoSQL\n   frontend. Intended for hot internal loops running the same\n   INSERT/UPDATE shape with varying values.\n\nUse both in TraceProcessorImpl: wrap the per-metric INSERTs into the\n_trace_metrics table in a single transaction (both at startup and in\nInitPerfettoSqlConnection), and switch InsertIntoTraceMetricsTable to\nthe parameterized overload. Also pass path/sql by value into a private\nRegisterMetricImpl so the constructor\u0027s amalgamated-metrics loop can\nmove them through."
    },
    {
      "commit": "67cbf9329bce1410a6de1fddc19ddac337686fd7",
      "tree": "3098530e6c55bd1c833357b54ca23d4b1faa62c8",
      "parents": [
        "0c1a4ea70e6c650e4d5038591da5ed3c8f6fed79"
      ],
      "author": {
        "name": "Lalit Maganti",
        "email": "lalitm@google.com",
        "time": "Fri May 22 17:48:21 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 22 17:48:21 2026"
      },
      "message": "tp: bump SQLite per-connection lookaside slab (#6023)\n\nRaise the lookaside slab from the SQLite default (1200,40 ~ 48 KB) to\n1200x1000 (~1.2 MB) per connection. At startup we measured ~10K\nlookaside hits and ~1.4K spillovers to malloc with the default; the\nspilled allocations all fit in a 1200-byte slot, so growing the slot\ncount (not size) is what helps. Trades RAM for ~1400 fewer mallocs per\nCreateInstance and gives more headroom for user queries."
    },
    {
      "commit": "0c1a4ea70e6c650e4d5038591da5ed3c8f6fed79",
      "tree": "dbf7d5946c5aa4bd251a3351baf7a29a92551814",
      "parents": [
        "5876af316270f139f02fce8f87f4661ff142625e"
      ],
      "author": {
        "name": "gignat-dev",
        "email": "gignat@google.com",
        "time": "Fri May 22 15:43:05 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 22 15:43:05 2026"
      },
      "message": "ui: Enable MemoryViz by default and improve load performance (#6011)\n\nThis change enables the com.android.MemoryViz plugin by default,\nexposing the Kswapd, Direct Reclaim, Memcg Reclaim, and LMK memory\ntracks to all users under the MEMORY group.\n\nAdditionally, to mitigate the impact on trace loading times, the track\ninitialization functions in onTraceLoad are now executed concurrently\nusing Promise.all."
    },
    {
      "commit": "5876af316270f139f02fce8f87f4661ff142625e",
      "tree": "ecb8ade91877a4413fb3ad570fbc675972aadc51",
      "parents": [
        "d83071714b32bcbc4aa78043b8689776696426ee"
      ],
      "author": {
        "name": "Lalit Maganti",
        "email": "lalitm@google.com",
        "time": "Fri May 22 15:41:34 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 22 15:41:34 2026"
      },
      "message": "tp: lazily materialize SqlSource::rewritten_sql (#6021)\n\nSqlSource previously stored the rewritten SQL as a full std::string\ncopy of the original SQL, even when no rewrites had been applied. Move\nthe rewritten form into an std::optional that is only populated when\nthe node actually has rewrites; rewritten_sql() falls back to\noriginal_sql otherwise. Avoids a full SQL copy on every constructed\nSqlSource."
    },
    {
      "commit": "d83071714b32bcbc4aa78043b8689776696426ee",
      "tree": "e2f7186bbbcad1d577e40fb5f52c049831ea6b92",
      "parents": [
        "396584989f5060bc563c856776cc3e3f30ce1b6d"
      ],
      "author": {
        "name": "Lalit Maganti",
        "email": "lalitm@google.com",
        "time": "Fri May 22 15:40:13 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 22 15:40:13 2026"
      },
      "message": "tp: avoid 4 MB zero-fill on StringPool block alloc (#6022)\n\nConstruct StringPool blocks with default-init `new uint8_t[]` rather\nthan `std::make_unique`, which value-initializes the array. Every byte\nthat is ever read is written first by InsertInCurrentBlock, so the\nzero-fill is pure overhead on construction."
    },
    {
      "commit": "396584989f5060bc563c856776cc3e3f30ce1b6d",
      "tree": "ff33f7f5d6452bd6d99f3b506e7cf3480838443f",
      "parents": [
        "ba18eb2b1bbfc196b622db85fd9124bc5993a3c2"
      ],
      "author": {
        "name": "Chris Lu",
        "email": "luchris@google.com",
        "time": "Fri May 22 14:38:25 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 22 14:38:25 2026"
      },
      "message": "Add panel settings ftrace (#6012)\n\nBug: 493528429\nTest: capture a perfetto trace, can see the arguments"
    },
    {
      "commit": "ba18eb2b1bbfc196b622db85fd9124bc5993a3c2",
      "tree": "3fb1ce317fbb999890ed580bd9a8e4dabad49166",
      "parents": [
        "f7dba46f99dc781e3fd3f599970280cc4e6f339c"
      ],
      "author": {
        "name": "Chinglin Yu",
        "email": "chinglinyu@google.com",
        "time": "Fri May 22 14:22:42 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 22 14:22:42 2026"
      },
      "message": "tp: fix android input end-to-end latency app frame matching (#6009)\n\nThis revision fixes the implementation of end_to_end_latency_dur in\nandroid_input_events: the first non-dropped frame of the input event\nneeds to match the upid of the input event receiver. This fixes a bug\nthat input event delivered to app A matches the first non-dropped frame\nof app B in calculating the end_to_end input latency.\n\nBug: b/515625953\nChange-Id: Id159357c123226fb58d05b4ec62763161eea3705"
    },
    {
      "commit": "f7dba46f99dc781e3fd3f599970280cc4e6f339c",
      "tree": "b92952b45dd203fb4a948714c6eae63948086521",
      "parents": [
        "208074dc4c26ac9274f28904aaed054fb18abdf3"
      ],
      "author": {
        "name": "Steve Golton",
        "email": "stevegolton@google.com",
        "time": "Fri May 22 14:03:00 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 22 14:03:00 2026"
      },
      "message": "ui: Improve QueryLog tab UX (#6018)\n\nThe query log tab is a useful tool for debugging slow UI queries - it\u0027s\na client side hosted live log of queries issues to the engine and how\nlong each one is taking / has taken.\n\n- Consistent height rows for quick scanning.\n- Status badges.\n- Collapse/expand to show entire query.\n- Copy query button.\n- Larger buffer size.\n- Clear button.\n\n\u003cimg width\u003d\"1821\" height\u003d\"522\" alt\u003d\"image\"\nsrc\u003d\"https://github.com/user-attachments/assets/36040f5c-3e56-4be5-92da-7a8770100bdc\"\n/\u003e"
    },
    {
      "commit": "208074dc4c26ac9274f28904aaed054fb18abdf3",
      "tree": "d0197634c55506a07bfdbb306887a9fb70eac3c5",
      "parents": [
        "56e9a9cde32e2f4494563924c2d4930156c84ab1"
      ],
      "author": {
        "name": "ilkos",
        "email": "ilkos@google.com",
        "time": "Fri May 22 13:42:26 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 22 13:42:26 2026"
      },
      "message": "Proto changes for additional data collection at OutOfMemoryError time (#6017)\n\nAdding details about the failing allocations, the state of the heap and\nthe allocating thread.\n\nBug: 502598449"
    },
    {
      "commit": "56e9a9cde32e2f4494563924c2d4930156c84ab1",
      "tree": "3052d1638a41283492b7fb77c210724123c35d09",
      "parents": [
        "c50a3b37b69d0a90a08f271b63613dd1b0b4aace"
      ],
      "author": {
        "name": "zezeozue",
        "email": "zezeozue@google.com",
        "time": "Fri May 22 12:13:39 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 22 12:13:39 2026"
      },
      "message": "android_sdk: exclude test-only androidx host stub  (#6016)"
    },
    {
      "commit": "c50a3b37b69d0a90a08f271b63613dd1b0b4aace",
      "tree": "5628cd3368865524e0eb603495ac90eaad58e5c4",
      "parents": [
        "42ae57034471bf34ba31f9098cbfd8e9de355b4d"
      ],
      "author": {
        "name": "Steve Golton",
        "email": "stevegolton@google.com",
        "time": "Fri May 22 11:26:04 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 22 11:26:04 2026"
      },
      "message": "ui: Fix public comments (#6015)\n\n- Fix obvious copy-paste error.\n- Add more detail."
    },
    {
      "commit": "42ae57034471bf34ba31f9098cbfd8e9de355b4d",
      "tree": "c741c427a0bfc59f6af064932d816c630f4f2475",
      "parents": [
        "19f8a32804d4046ea0ee57103ef0ff43dd10038e"
      ],
      "author": {
        "name": "Steve Golton",
        "email": "stevegolton@google.com",
        "time": "Fri May 22 11:21:01 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 22 11:21:01 2026"
      },
      "message": "ui: Surface SQL errors properly in DataGrid (#6014)\n\nDisplay SQL errors live on the DataGrid when operating in SQLDataSource\nmode instead of just crashing the UI.\n\nNote: This doesn\u0027t apply to the query page, as this already surfaces its\nown errors using a separate mechanism for technical reasons."
    },
    {
      "commit": "19f8a32804d4046ea0ee57103ef0ff43dd10038e",
      "tree": "37f7f34eb2e80f34bdb3e5e5f7a475d988547121",
      "parents": [
        "ff8d6b248a70647d684bb373cf8ee9e89e95121b"
      ],
      "author": {
        "name": "Lalit Maganti",
        "email": "lalitm@google.com",
        "time": "Fri May 22 10:14:56 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 22 10:14:56 2026"
      },
      "message": "ui: consistently show the same details panel regardless of counter mode (#6005)\n\nWas more confusing to have different things shown per mode, just show\nthe same thing consistently.\n\nFixes: https://github.com/google/perfetto/issues/5507"
    },
    {
      "commit": "ff8d6b248a70647d684bb373cf8ee9e89e95121b",
      "tree": "609fcde92b8c671c8c82a0b34d1e67cde861ffc5",
      "parents": [
        "3ca604774e57f059f57b0b54bcb04f49bdc111d4"
      ],
      "author": {
        "name": "Steve Golton",
        "email": "stevegolton@google.com",
        "time": "Fri May 22 10:05:03 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 22 10:05:03 2026"
      },
      "message": "ui: Add new side panel extension point (#5960)\n\nGives plugins a place to surface their own UI alongside the main page.\nPlugins can register tabs against a new SidePanelManager (exposed on\nboth App and Trace) and call showTab() open them; tabs registered via\nTrace are automatically torn down with the trace.\n\nThe panel itself lives to the right of the page content in a resizable\nsplit, with a tab strip across registered tabs so multiple plugins can\ncoexist without fighting over the space.\n\nAlso add com.example.SidePanel example plugin which demonstrates using\nthis panel extension point.\n\n\u003cimg width\u003d\"1106\" height\u003d\"682\" alt\u003d\"image\"\nsrc\u003d\"https://github.com/user-attachments/assets/99a5d40b-684e-4f73-8528-7dc1c0d60306\"\n/\u003e"
    },
    {
      "commit": "3ca604774e57f059f57b0b54bcb04f49bdc111d4",
      "tree": "a89adbe1c64f322d2cf1cad21bfb8ee84b4fb2d9",
      "parents": [
        "9264c95c5e1c31c8e7deec672af7d023fa545867"
      ],
      "author": {
        "name": "Lalit Maganti",
        "email": "lalitm@google.com",
        "time": "Fri May 22 10:02:49 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 22 10:02:49 2026"
      },
      "message": "perfetto: add release notes for v56.0 release (#6007)"
    },
    {
      "commit": "9264c95c5e1c31c8e7deec672af7d023fa545867",
      "tree": "93a60328389acf3d4ad1b27d71bc87dad0151e32",
      "parents": [
        "944dbae4a35b9b6d03cb20318f0abeedd88ba590"
      ],
      "author": {
        "name": "perfetto-automation[bot]",
        "email": "278437629+perfetto-automation[bot]@users.noreply.github.com",
        "time": "Fri May 22 09:28:01 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 22 09:28:01 2026"
      },
      "message": "Sync generated proto files (#6010)\n\nThis PR automatically synchronizes generated proto files with their\n`.proto` definitions.\n\n## Generated files updated\n- `.gen.cc` and `.gen.h` files\n- `.pcz.h` files\n- Binary descriptors\n- Python proto bindings\n\nThis is an automated PR generated by the `sync-protos` workflow.\n\nCo-authored-by: perfetto-automation[bot] \u003cperfetto-automation-github-app@google.com\u003e"
    },
    {
      "commit": "944dbae4a35b9b6d03cb20318f0abeedd88ba590",
      "tree": "4de6be633cda4866fa38230f98b9f8505f8f7fe6",
      "parents": [
        "fc5dcada1fe3e6c2ad7639e20f879907fe18dfe9"
      ],
      "author": {
        "name": "Runping Lai",
        "email": "runpinglai@google.com",
        "time": "Thu May 21 23:07:35 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 21 23:07:35 2026"
      },
      "message": "ui: Fix Wattson estimate aggregator registration for GPU/TPU only traces (#6008)\n\nProblem is, Wattson Estimation UI Tab won\u0027t show GPU/TPU info if CPU\nwattson is not enabled. This is not expected because CPU GPU TPU are\nindependent of each other.\n\n\u003cimg width\u003d\"1622\" height\u003d\"435\" alt\u003d\"image\"\nsrc\u003d\"https://github.com/user-attachments/assets/b16d9504-8cb8-4bdf-8875-d54cb385fb34\"\n/\u003e\n\n\nThis PR registers WattsonEstimateSelectionAggregator globally during\ntrace load instead of limiting it to CPU elements initialization. This\nensures the \"Wattson estimates\" tab is available and works on traces\nthat only have GPU or TPU power estimates but no CPU estimates.\n\nAlso update the trace load short-circuit check to include tpuSupported\nto prevent early exit on TPU-only traces.\n\nBug: 515498287\nTest: UI test\n\nSigned-off-by: Runping Lai \u003crunpinglai@google.com\u003e"
    },
    {
      "commit": "fc5dcada1fe3e6c2ad7639e20f879907fe18dfe9",
      "tree": "1fae8de015b980938ad70a5b779d907479898331",
      "parents": [
        "9751e10fc41195713719a63b6c771416d40004c8"
      ],
      "author": {
        "name": "Lalit Maganti",
        "email": "lalitm@google.com",
        "time": "Thu May 21 21:41:56 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 21 21:41:56 2026"
      },
      "message": "tp: add support for forwards looking GPU counters (#6006)\n\nFixes: https://github.com/google/perfetto/issues/5683"
    },
    {
      "commit": "9751e10fc41195713719a63b6c771416d40004c8",
      "tree": "fe4aacb167772b2b483863a59d5ae02b267b381b",
      "parents": [
        "83eb16025fca1929fd0e931231d130ba34490257"
      ],
      "author": {
        "name": "Runping Lai",
        "email": "runpinglai@google.com",
        "time": "Thu May 21 20:19:26 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 21 20:19:26 2026"
      },
      "message": "tp: merge Wattson interconnect power into cpu_2d curves (#5818)\n\nBackground: In wattson, suspend is always mixed up with deep idle, both\nmodeled as using 0 power. A lot of wattson regressions are due to\nsuspend, either suspending longer or shorter than expected. Either way,\nwattson should be able to differentiate between suspend vs deep idle.\n\nThis change introduces active baseline power modeling for the\ninterconnect and system bus in Wattson. This power is modeled under a\nnew `interconnect` column in `cpu_2d.csv` and integrated directly into\nthe \"DSU/SCU estimate\"\ntrack.\n\nThe interconnect baseline represents the public power overhead of the\nSOC whenever the system is awake (!suspended), keeping the power domain\nmodel unified and physically accurate.\n\n---------\n\nSigned-off-by: Runping Lai \u003crunpinglai@google.com\u003e"
    },
    {
      "commit": "83eb16025fca1929fd0e931231d130ba34490257",
      "tree": "dbf8809a4b94dc72913c2cd6872a844ce4debcac",
      "parents": [
        "0206e17accc6c5ef1f070e61727f3825dc9a645a"
      ],
      "author": {
        "name": "Elliot Saba",
        "email": "staticfloat@gmail.com",
        "time": "Thu May 21 19:37:42 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 21 19:37:42 2026"
      },
      "message": "traced_probes: Add linux.journald data source (1/3) (#5796)\n\nAdd a new linux.journald data source to traced_probes that reads log\nentries from the systemd journal via libsystemd. The library is loaded\nat runtime via dlopen(\"libsystemd.so.0\") so there is no compile-time\ndependency on libsystemd.\n\nThis adds a few new protos to configure and store the journald events.\nIt creates a data source registered under the name \u0027linux.journald\u0027,\nopens the journal with `sd_journal_open()`, and emits one\n`JournaldEventPacket` per entry containing: timestamp, pid, priority,\ntag (SYSLOG_IDENTIFIER), message (MESSAGE), uid, comm (_COMM),\nsystemd_unit (_SYSTEMD_UNIT), hostname (_HOSTNAME), and transport\n(_TRANSPORT). It by default captures from every journal it has access\nto, so it will include both system and user journals if running as\n`root`, for instance.\n\nThis is part 1 of a split-up version of #5331 and will close #3288.\n\nThis PR was co-written by AI; while I iterated on it until the look and\nfeel felt correct, there may be context or use cases that I am unaware\nof. I am open to all review comments, and will do my best to address\nthem."
    },
    {
      "commit": "0206e17accc6c5ef1f070e61727f3825dc9a645a",
      "tree": "c25e8ec779a4050e8dee233f91ee61f35ee14c4f",
      "parents": [
        "689c6e90dae7180af26535b3604a2b8c72d406c4"
      ],
      "author": {
        "name": "Lalit Maganti",
        "email": "lalitm@google.com",
        "time": "Thu May 21 17:20:19 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 21 17:20:19 2026"
      },
      "message": "ui: add opt-in engine startup benchmark (#5945)\n\nStandalone benchmark for trace_processor worker startup, all under\nui/src/engine_bench/. Built only when `ui/build --enable-engine-bench`\nis passed — default builds emit no bench code or assets.\n\n  - index.ts: standalone worker entry that drives WasmBridge with\n    phase markers; bundled as engine_bench_bundle.js.\n  - bench.html + bench.js: driver page that spawns N workers and\n    exposes per-phase timings on window.__benchResults.\n  - bench.test.ts: Playwright spec, additionally gated on\n    PERFETTO_BENCH\u003d1.\n  - vite.config.mjs + build.mjs: new bundle entry, copy rules and\n    scan-dir all no-op without the flag."
    },
    {
      "commit": "689c6e90dae7180af26535b3604a2b8c72d406c4",
      "tree": "d8399f3f81d62012b3110db723a95a31b0c2e8da",
      "parents": [
        "e906de3f16b6e57592ce59fef56b2897046a0dfb"
      ],
      "author": {
        "name": "Hajime Morrita",
        "email": "morrita@google.com",
        "time": "Thu May 21 16:49:21 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 21 16:49:21 2026"
      },
      "message": "ui: Add GoogleCamera memory tracks command (#5990)\n\nAdds a new command to the com.google.android.GoogleCamera plugin that\nautomates the visualization of camera-related RSS and DMABUF memory\nusage.\n\nThe command executes the \u0027android_camera.sql\u0027 metric and registers 5\ncounter tracks (GoogleCamera RSS, Camera HAL RSS, CameraServer RSS,\nDMABUF, and Total Camera RSS + DMABUF) to the top of the timeline.\n\nAlso bumps the RUN_METRIC ratchet count from 4 to 5 in check_ratchet.py,\nas executing this legacy metric is currently the only way to access the\ncamera RSS/DMABUF memory data in trace processor.\n\nTAG\u003dagy\nCONV\u003d167d1f5d-f839-4b3d-baa8-cdb45bd58a8e\n\nWelcome to Perfetto!\nMake sure your PR has a bug/issue attached or has at least\na clear description of the problem you are trying to fix.\n\nFor more details please see\nhttps://perfetto.dev/docs/contributing/getting-started"
    },
    {
      "commit": "e906de3f16b6e57592ce59fef56b2897046a0dfb",
      "tree": "be0b3a46f7628457c3337af92c12d6bfd384d124",
      "parents": [
        "3436d040fbbe309b5aede95ca02f1881a9d888dd"
      ],
      "author": {
        "name": "gignat-dev",
        "email": "gignat@google.com",
        "time": "Thu May 21 16:16:53 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 21 16:16:53 2026"
      },
      "message": "ui: Add details panel and process navigation to AndroidStartup plugin (#6002)\n\nClicking an app-startup slice now opens a details panel showing package\nname, startup type (cold/warm/hot), timestamp and duration. A \u0027Go to\nprocess\u0027 anchor scrolls to and expands the process track group on the\nmain thread, matching the existing deeplink behavior.\n\nThe startup deeplink path is also realigned to expand the process group\nand select on the main thread track, matching the ANR pattern. Shared\nfindMainThreadTrackUri and scrollToTrackAndSelect helpers live alongside\nthe panel in navigate.ts ."
    },
    {
      "commit": "3436d040fbbe309b5aede95ca02f1881a9d888dd",
      "tree": "29e735f5f0c9afa3f9e1131052d16276653cd94f",
      "parents": [
        "547891cb3d399e02e3b92d9738b52d1e78ecb4ed"
      ],
      "author": {
        "name": "gignat-dev",
        "email": "gignat@google.com",
        "time": "Thu May 21 16:07:32 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 21 16:07:32 2026"
      },
      "message": "ui: Add details panel and process navigation to AndroidAnr plugin (#6001)\n\nClicking an ANR slice now opens a details panel showing process info,\nANR type, subject, timestamp and duration. A \u0027Go to process\u0027 anchor\nscrolls to and expands the process track group on the main thread,\nmatching the existing deeplink behavior. Shared findMainThreadTrackUri\nand scrollToTrackAndSelect helpers live alongside the panel in\nnavigate.ts."
    },
    {
      "commit": "547891cb3d399e02e3b92d9738b52d1e78ecb4ed",
      "tree": "4eee7f26efc5745d3b92ab38927717ac2f7b48c7",
      "parents": [
        "f357813ab0d025adb03047db5614669e1ef4053b"
      ],
      "author": {
        "name": "Lalit Maganti",
        "email": "lalitm@google.com",
        "time": "Thu May 21 15:06:29 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 21 15:06:29 2026"
      },
      "message": "tp: PerfettoSqlConnection hot-path rewrite + benchmarks (#5971)\n\nInitialize() wraps the ~100 static-table CREATEs in one BEGIN/COMMIT,\nand RegisterStaticTable collapses the 4-statement SAVEPOINT script to\n2 plain statements now that the outer transaction does the batching.\n\nProcessFrame\u0027s hot path is rewritten to inline the SqliteSql case (the\ncommon case for vanilla SQLite statements) and detour PerfettoSQL\nextensions through ResolveExtensionStatement, keeping per-branch\nlocals out of the hot frame. ExecutionFrame is split into a small\nhot-path struct plus an aux pointer for kInclude/kWildcard-only\nfields. execution_stack_ becomes a SmallVector\u003c..., 1\u003e so the common\nsingle-Execute() call has no heap alloc. A cached_parser_ on the\nconnection avoids the syntaqlite create/destroy round-trip per\nExecute() and a PushIncludeFrame helper deduplicates the kInclude\nframe construction.\n\nsqlite3_expanded_sql is now computed lazily on first PreparedStatement::\nsql() call (non-const, caches result) instead of in the constructor.\n\nAdds perfetto_sql_connection_benchmark.cc with three Execute()\nmicrobenches (TrivialSelect, NestedFunction, PerfettoSqlExtension)."
    },
    {
      "commit": "f357813ab0d025adb03047db5614669e1ef4053b",
      "tree": "bf0261be071b2258dad68587f47eb3d10c19527c",
      "parents": [
        "802fc049cee2b16e608de8e911abd8b6375bfc07"
      ],
      "author": {
        "name": "Lalit Maganti",
        "email": "lalitm@google.com",
        "time": "Thu May 21 14:49:18 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 21 14:49:18 2026"
      },
      "message": "tp: fix use after move when populating stdlib (#5999)"
    },
    {
      "commit": "802fc049cee2b16e608de8e911abd8b6375bfc07",
      "tree": "1188e051e56f8b026b6662c18909bef6c1e3718e",
      "parents": [
        "65bcc6fa58062d8c21477395eec14a7a097bcdac"
      ],
      "author": {
        "name": "perfetto-automation[bot]",
        "email": "278437629+perfetto-automation[bot]@users.noreply.github.com",
        "time": "Thu May 21 14:41:46 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 21 14:41:46 2026"
      },
      "message": "Sync generated proto files (#5996)\n\nThis PR automatically synchronizes generated proto files with their\n`.proto` definitions.\n\n## Generated files updated\n- `.gen.cc` and `.gen.h` files\n- `.pcz.h` files\n- Binary descriptors\n- Python proto bindings\n\nThis is an automated PR generated by the `sync-protos` workflow.\n\nCo-authored-by: perfetto-automation[bot] \u003cperfetto-automation-github-app@google.com\u003e"
    },
    {
      "commit": "65bcc6fa58062d8c21477395eec14a7a097bcdac",
      "tree": "4614d536e0f86ce8ce20f35da69bca665c871c56",
      "parents": [
        "5b0d6988c881ab63a94dbe8d896ae721ce524dc6"
      ],
      "author": {
        "name": "Ryan Zuklie",
        "email": "rzuklie@google.com",
        "time": "Thu May 21 14:31:52 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 21 14:31:52 2026"
      },
      "message": "Migrate battery modules to _intervals_fill_gaps. (#5995)\n\nThis helper guarantees data from trace_start to trace_end which is\nimportant for state tables we join against.\n\nIn order to better support the common case, the macro was also updated\nto return a single row for the full trace when the input is totally\nempty."
    },
    {
      "commit": "5b0d6988c881ab63a94dbe8d896ae721ce524dc6",
      "tree": "3cdb34c06b077ff7edb1c92effa57cbb2f077374",
      "parents": [
        "44c433949af865f08f9fbd948b0fe900cdddee49"
      ],
      "author": {
        "name": "Pascal Mütschard",
        "email": "pmuetschard@users.noreply.github.com",
        "time": "Thu May 21 13:44:56 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 21 13:44:56 2026"
      },
      "message": "Add the total weighted jank to the frame timeline metric. (#5997)"
    },
    {
      "commit": "44c433949af865f08f9fbd948b0fe900cdddee49",
      "tree": "b1e2d80a73e0b2df9029de38425d0cc88080a535",
      "parents": [
        "b947ab57beede4441ff305c915250c8bfc54fe05"
      ],
      "author": {
        "name": "Lalit Maganti",
        "email": "lalitm@google.com",
        "time": "Thu May 21 10:06:08 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 21 10:06:08 2026"
      },
      "message": "tp: PerfettoSqlParser supports Reset() + faster parse path (#5970)\n\nSplits PerfettoSqlParser construction from source binding so a single\nparser instance can be reused across Execute() calls via Reset(). Adds\nTakeStatementSql() so callers can move the SqlSource out of the parser\nwithout an extra copy. Adds a no_macros_ fast path in\nMacroRewriteBuilder\nthat skips the per-node macro-free check when the parse contains no\nmacros at all.\n\nInlines the syntaqlite dialect dispatch via a new inline_dispatch.h that\nreplaces dialect function-pointer indirection with direct calls; the\nheader is wired in through SYNTAQLITE_INLINE_DIALECT_DISPATCH.\n\nParser unit tests adjusted mechanically for the new Reset() API."
    },
    {
      "commit": "b947ab57beede4441ff305c915250c8bfc54fe05",
      "tree": "73ecdbc4c8988366506052be1a46458b080e80a4",
      "parents": [
        "4eea1d1c609b1b21928d32ec3f21d6bfaf6b8c1a"
      ],
      "author": {
        "name": "Lalit Maganti",
        "email": "lalitm@google.com",
        "time": "Thu May 21 10:03:46 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 21 10:03:46 2026"
      },
      "message": "tp: add defensive check to dominator tree for incomplete heap graphs (#5974)\n\nIt\u0027s possible in an incomplete heap graph for the dominator tree\nalgorothm to fail becuase even if a node is marked as reacheable it wont\nbe. This manifests today as a crash which is unideal.\n\nInstead do the intuitive thing in the dominator algorithm which is\nignore the node: this is not a \"workaround\" in the local sense as it\u0027s\nperfectly senseible for the dominator tree to ignore nodes which cannot\nbe reached from the root.\n\nIn the global sense, we might want to add some protection so we don\u0027t\neven get here with incomplete graphs but that\u0027s somehwat orthogonal.\n\nWith benchmarks of class_tree computation on real traces, any loss in\nthis is just noise (i.e. less than 1%)"
    },
    {
      "commit": "4eea1d1c609b1b21928d32ec3f21d6bfaf6b8c1a",
      "tree": "21822b98e860729ec6d6495dde095a0a8fb3b4ef",
      "parents": [
        "33e1c07e201ceb7728960ba1a2957e7a583aeb76"
      ],
      "author": {
        "name": "Harry Cutts",
        "email": "hcutts@google.com",
        "time": "Wed May 20 22:53:21 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 20 22:53:21 2026"
      },
      "message": "protos: add trace_evdev_events bool for input tracing (#5989)\n\nFor trace size and privacy reasons, we don\u0027t want evdev events in every\ninput trace, so add a bool to control whether they\u0027re enabled.\n\nBug: b/394861376"
    },
    {
      "commit": "33e1c07e201ceb7728960ba1a2957e7a583aeb76",
      "tree": "103b327a04c26d123574a7200f745c061109cf33",
      "parents": [
        "9fd55650a40213e79e33deae555cf842c95963d3"
      ],
      "author": {
        "name": "Yasser Dbeis",
        "email": "54920066+YasserDbeis@users.noreply.github.com",
        "time": "Wed May 20 20:49:37 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 20 20:49:37 2026"
      },
      "message": "Correct skill name guideline in README (#5993)\n\nCorrects the example and guideline in ai/skills/README.md to accurately\nreflect that the frontmatter name field must be the dashed version of\nthe directory slug, aligning the documentation with all actual skills\nimplemented in the repository.\n\nFixes: #5992"
    },
    {
      "commit": "9fd55650a40213e79e33deae555cf842c95963d3",
      "tree": "4b287417dc963a9eb0fbe8308b9bb04517222fd8",
      "parents": [
        "3748a38e73367da3505a7db73ec00c0eab2f8d53"
      ],
      "author": {
        "name": "Ryan",
        "email": "rsavitski@google.com",
        "time": "Wed May 20 19:58:20 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 20 19:58:20 2026"
      },
      "message": "tools: update android health aidl version to match internal tree (#5991)\n\nResolves a downstream-only patch.\n\ngit cherry-pick -x b9d38cae53f5456ad8220026b00116ace5d50789\n\n---\n\nUpdate redundant AIDL instances to preferred versions\n\nReplaced older AIDL instances V2 with the newer V5 version in order to\nreduce the redundant AIDL footprint.\n\nBug: 220392885\nTest: TH\nFlag: EXEMPT BUGFIX\nChange-Id: Ifcb3ddf88377074b983c38d08183c0f6d1149648\n(cherry picked from commit b9d38cae53f5456ad8220026b00116ace5d50789)\n\n---------\n\nCo-authored-by: Elie Kheirallah \u003ckhei@google.com\u003e"
    },
    {
      "commit": "3748a38e73367da3505a7db73ec00c0eab2f8d53",
      "tree": "806eb67e5085f3a88e4dd2a4a4c21797881a7d9f",
      "parents": [
        "8b71955138b763ed92901dd0b6aeaa9f8c789456"
      ],
      "author": {
        "name": "gignat-dev",
        "email": "gignat@google.com",
        "time": "Wed May 20 18:02:33 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 20 18:02:33 2026"
      },
      "message": "bt-ui:  Implement and polish Bigtrace asynchronous queries (#5822)\n\nThis PR introduces comprehensive support for executing asynchronous\n  queries in the Bigtrace UI, along with a series of architectural\n  improvements and UX polish.\n\n  Key additions and improvements include:\n   * Core Async Support: Introduces the ability to submit, track, and\n    manage long-running asynchronous Bigtrace queries.\n   * Architecture: Implements a centralized BigtraceQueryClient and\n    QueryRunner to manage query lifecycles, separating state management\n    from the UI components.\n   * DataGrid Integration: Replaces traditional pagination with a\nscroll-based approach and integrates with server-side sorting (order_by)\n    and filter encoding for Datagrid chips.\n   * History \u0026 State: Adds persistent query history with background\n    status polling, and fixes ephemeral tab state when switching pages.\n* UI/UX Polish: Introduces updated progress bars, detailed post-filter\n    row counts, and improved duration formatting."
    },
    {
      "commit": "8b71955138b763ed92901dd0b6aeaa9f8c789456",
      "tree": "e709894da269c4a1174dc277640b1e8129571a63",
      "parents": [
        "9d3c6631739f154da5b26735c87ce3186b10f13f"
      ],
      "author": {
        "name": "gignat-dev",
        "email": "gignat@google.com",
        "time": "Wed May 20 18:00:20 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 20 18:00:20 2026"
      },
      "message": "ui: add memcg reclaim tracks and update descriptions in MemoryViz (#5986)\n\nThis patch adds support for visualizing synchronous memory cgroup\nreclaim events in the MemoryViz plugin, indicating when an app allocates\npast its budget.\n\nIt also improves the descriptions Direct Reclaim tracks to be more\ninformative.\n\nAdditionally, it updates the BreakdownTracks schema to use LONG\ndurations instead of LONG_NULL in order to support selection aggregation\nin the UI."
    },
    {
      "commit": "9d3c6631739f154da5b26735c87ce3186b10f13f",
      "tree": "14fc9b772ad767605d4e811e26827ffe4e8dd182",
      "parents": [
        "bbdcc70251d92a0713227a556345e48ac0225357"
      ],
      "author": {
        "name": "Ryan Zuklie",
        "email": "rzuklie@google.com",
        "time": "Wed May 20 15:28:34 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 20 15:28:34 2026"
      },
      "message": "Add stdlib function to fill data from trace start to end. (#5976)\n\nWe often want to ensure a state-like table is fully populated from\ntrace_start to trace_end so that downstream consumers can safely use\nSPAN_JOIN or _interval_intersect without losing data. This handles:\n- Filling gaps from trace start to first event\n- Filling gaps between events\n- Filling gaps from last event to trace end\n- Filling the whole start to end, if no valid slices are present\n\nAs a complication, this handles partitioned data in order to support use\ncases such as a process state table (uid partitioned) or the suspend\nstate table (machine_id partitioned)."
    },
    {
      "commit": "bbdcc70251d92a0713227a556345e48ac0225357",
      "tree": "0456cb6626d20f812eec7e7c21cd1564633cddd3",
      "parents": [
        "30a134ee28bd8db4229c4cb11694107e4b9f90c2"
      ],
      "author": {
        "name": "Kean Mariotti",
        "email": "keanmariotti@google.com",
        "time": "Wed May 20 14:04:57 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 20 14:04:57 2026"
      },
      "message": "protovm: add compiler (#5784)\n\nThis commit adds a compiler for ProtoVM that translates high-level configuration\ncommands (CompileConfig) into low-level bytecode instructions (VmProgram).\n\nCompileConfig proto:\n- Defines a sequence of high-level commands.\n\nCLI:\n- Reads CompileConfig textproto from stdin and outputs the compiled\n  binary VmProgram to stdout.\n- Proto files and include dirs are also passed through CLI a la protoc.\n\nInternal Compiler and InstructionEmitter classes:\n- Parse compile configs (textproto).\n- Resolve human-readable paths (field names) into field IDs.\n- Convert high-level commands into the corresponding sequence of VmInstruction."
    },
    {
      "commit": "30a134ee28bd8db4229c4cb11694107e4b9f90c2",
      "tree": "09829b2b8fa985a913e80c1eabd7883713189584",
      "parents": [
        "0bdb4b264be1f5a2ba6de999e3dcf304695b7015"
      ],
      "author": {
        "name": "Steve Golton",
        "email": "stevegolton@google.com",
        "time": "Wed May 20 11:26:29 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 20 11:26:29 2026"
      },
      "message": "ui: Colocate all frontend styles next to their typescript counterparts (#5953)\n\nMove all remaining frontend styles next to their typescript counterparts\nand import them using module imports:\n\nE.g.\n\n```ts\nimport \u0027./foo.scss\u0027\n```\n\nCompletes: https://github.com/google/perfetto/pull/5947"
    },
    {
      "commit": "0bdb4b264be1f5a2ba6de999e3dcf304695b7015",
      "tree": "acc372dc30b63a0287a2eb5a63833e1618dbc208",
      "parents": [
        "004e5588771c60730b8a1496316d466bbe776801"
      ],
      "author": {
        "name": "Steve Golton",
        "email": "stevegolton@google.com",
        "time": "Wed May 20 11:26:12 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 20 11:26:12 2026"
      },
      "message": "ui: Format build.mjs and vite.config.mjs (#5988)\n\nNo-op, just formatting."
    },
    {
      "commit": "004e5588771c60730b8a1496316d466bbe776801",
      "tree": "822e54df69c69169af1db366142e507502d8234f",
      "parents": [
        "4508458f9ef4f19e1f05afa236874c07648f60a9"
      ],
      "author": {
        "name": "Steve Golton",
        "email": "stevegolton@google.com",
        "time": "Wed May 20 11:25:56 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 20 11:25:56 2026"
      },
      "message": "ui: Colocate grammar.d.ts file rather than relying on an ambient declaration (#5987)\n\nAmbient global declarations are a bit mysterious, and require that each\nproject (ui, bigtrace) include the correct ambient types file.\n\nThis patch moves the grammar.d.ts file next to the grammar file it\ncorresponds to which is more explicit and any projects depending on the\ngrammar file also pull in the types."
    }
  ],
  "next": "4508458f9ef4f19e1f05afa236874c07648f60a9"
}
