)]}'
{
  "log": [
    {
      "commit": "01c9b1e4b5293d6266d2e3e03a07f69955d97b5b",
      "tree": "8e3f8ffda77f13948e39e2adc1124e208666feee",
      "parents": [
        "ce90fc088d975844d4d321818567c0389a64543f"
      ],
      "author": {
        "name": "perfetto-automation[bot]",
        "email": "278437629+perfetto-automation[bot]@users.noreply.github.com",
        "time": "Sat Jun 13 11:32:59 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jun 13 11:32:59 2026 +0100"
      },
      "message": "Sync generated proto files (#6231)\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": "ce90fc088d975844d4d321818567c0389a64543f",
      "tree": "7a796d78fd52507a966863bf5d56671108ae1410",
      "parents": [
        "a78362f0e2724471539b3047ce7d4159b5f915fa"
      ],
      "author": {
        "name": "Elliot Saba",
        "email": "staticfloat@gmail.com",
        "time": "Fri Jun 12 18:58:36 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jun 13 02:58:36 2026 +0100"
      },
      "message": "ftrace: Add `psci_domain_idle_{exit,enter}` ftrace events (#6137)\n\nThese events provide finer-grained information than just `cpu_idle` when\nattempting to see which power states are being entered. This patch does\nnot interpret these events at all, it merely allows them to be listed in\nthe `ftrace events` log without needing to enable generic ftrace events.\n\nX-ref: https://lkml.iu.edu/2501.2/03423.html"
    },
    {
      "commit": "a78362f0e2724471539b3047ce7d4159b5f915fa",
      "tree": "75ca007b0f29d6461b6ad8e7ccb897761c1dc617",
      "parents": [
        "4dd608e61d299012d81b6cc9e7e88af77506fb2d"
      ],
      "author": {
        "name": "copybara-service[bot]",
        "email": "56741989+copybara-service[bot]@users.noreply.github.com",
        "time": "Fri Jun 12 17:40:38 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 12 17:40:38 2026 +0000"
      },
      "message": "Copybara import from Chromium: proto and stdlib changes (#6229)\n\nCopybara import from Chromium: proto and stdlib changes\n\n- 510bc06f7f877ea60975039562077bfe0e4f5b0a [AW] Make ProfileStore\navailable before full Chromium sta... by Barkin Unal\n\u003cbarkinunal@chromium.org\u003e\n\nCOPYBARA_IMPORT\u003dProject import generated by Copybara.\n\nGitOrigin-RevId: 510bc06f7f877ea60975039562077bfe0e4f5b0a\n\nCo-authored-by: Perfetto Team \u003ccopybara-servicebot@google.com\u003e"
    },
    {
      "commit": "4dd608e61d299012d81b6cc9e7e88af77506fb2d",
      "tree": "7dd70faf81a71e27c3d9d5a5093707310f31bff9",
      "parents": [
        "67b11927eb211fe3d4cd13b821b3ad385db31970"
      ],
      "author": {
        "name": "gignat-dev",
        "email": "gignat@google.com",
        "time": "Fri Jun 12 15:31:11 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 12 18:31:11 2026 +0300"
      },
      "message": "bt-ui: bigtrace add SQL formatting to the query editor (#6226)\n\nFormat the editor tab\u0027s SQL with the same syntaqlite formatter the Query\npage uses: Alt+Shift+F in the editor (the option key on Mac) plus an\nicon-only toolbar button. The shortcut is documented in the help modal.\nNo command — the chord can\u0027t be expressed in the command hotkey grammar,\nwhose key matching breaks on option-composed characters on Mac; the\neditor binding matches by key code and works everywhere.\n\nThe engine init mirrors the Query page plugin\u0027s (it is private to the\nplugin and cannot be imported across bundles). The syntaqlite assets are\nnow also copied into the bigtrace dist, which resolves assets against\nits own serving root, and bigtrace\u0027s CSP gains \u0027wasm-unsafe-eval\u0027 — Wasm\ncompilation without JS eval()."
    },
    {
      "commit": "67b11927eb211fe3d4cd13b821b3ad385db31970",
      "tree": "cd7f6ce97a3fc4e9f0104ee8157ff870e801d993",
      "parents": [
        "d56bc6234abbf72b6aea35c5c66970cdab824711"
      ],
      "author": {
        "name": "Steve Golton",
        "email": "stevegolton@google.com",
        "time": "Fri Jun 12 16:30:21 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 12 16:30:21 2026 +0100"
      },
      "message": "ui: Synthesize version number and git hash at bundle time (#6223)\n\nCurrently the version info (scraped from the CHANGELOG plus the git\nhash) is written to a .ts file by the build script, and has to exist on\ndisk before typescript could run cleanly. Stale or missing copies of it\ncould be a source of confusion.\n\nThis patch generates a synthetic module containing these values on the\nfly in the bundler instead, with the types declared once in a static\nd.ts (they never change). The value now always reflects the tree being\nbuilt, and we\u0027re a step closer to running tsc --noEmit over a raw\ncheckout with no preparation step."
    },
    {
      "commit": "d56bc6234abbf72b6aea35c5c66970cdab824711",
      "tree": "3fcc60ef9004d20c50f1109cb7be14134c343657",
      "parents": [
        "2cf2f20ccdfbd78e1b8a760b0ae389e285eaf222"
      ],
      "author": {
        "name": "Steve Golton",
        "email": "stevegolton@google.com",
        "time": "Fri Jun 12 12:56:22 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 12 11:56:22 2026 +0000"
      },
      "message": "ui: Use real file path for plugin barrel modules (#6222)\n\nCurrently we use a synthetic module name `virtual:perfetto/*` for plugin\nbarrels which are synthetically generated at bundle time. These \u0027names\u0027\ncannot be mapped to a real file path. While this is somewhat intentional\nto make it clear that this module is generated at bundle time and\ndoesn\u0027t exist on disk, the problem with this approach is that we need to\ndefine these plugin types as ambient types in\n`types/virtual-modules.d.ts`, which are global, confusing and rather\nuser hostile.\n\nThis patch changes this file path to a real file path and puts creates a\nreal d.ts file here under `src/virtual/plugins.d.ts`. The actual\njavascript is still generated on the fly by the bundler using module\npath matching, but the type resolution is now much cleaner and more self\ncontained."
    },
    {
      "commit": "2cf2f20ccdfbd78e1b8a760b0ae389e285eaf222",
      "tree": "22fade6272eb41131a7f4102259fa71bb4d480e0",
      "parents": [
        "df3474862e63ecb046ec1db4a1bf33b0289aa6e5"
      ],
      "author": {
        "name": "gignat-dev",
        "email": "gignat@google.com",
        "time": "Fri Jun 12 10:30:55 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 12 13:30:55 2026 +0300"
      },
      "message": "stdlib: memory_breakdown: attribute zygote baseline to forking parent and  scope to primary zygotes (#6214)\n\nandroid_process_memory_intervals subtracted one pooled zygote baseline\n(the average across zygote, zygote64 and webview_zygote) from every\nnon-zygote process. That over-counts two ways: a process inherits memory\nvia copy-on-write only from the specific zygote that forked it, not a\nblend of all three; and native daemons that were never forked from a\nzygote had a zygote baseline subtracted anyway.\n\nCompute the baseline per zygote and attribute it via\nprocess.parent_upid: each process subtracts only its forking zygote\u0027s\nbaseline, and a process whose parent is not a zygote subtracts nothing.\n\nNarrow zygote detection to just the primary zygotes (zygote, zygote64).\n\nAlso single-source the \"keep zygote raw\" guard off zygote_processes so\nthe zygote name set lives in one place, and update the diff test to use\nzygote + zygote64 as the two differing-baseline zygotes.\n\nTest: `tools/diff_test_trace_processor.py\nout/linux_clang_release/trace_processor_shell --name-filter\n\u0027.*android_process_memory_intervals.*\u0027`"
    },
    {
      "commit": "df3474862e63ecb046ec1db4a1bf33b0289aa6e5",
      "tree": "d5614205a7c392b16b718645cbce126942857962",
      "parents": [
        "2375c432fd675caa8fedc3e00da16f971250f64f"
      ],
      "author": {
        "name": "sashwinbalaji",
        "email": "sashwinbalaji@google.com",
        "time": "Fri Jun 12 09:58:32 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 12 09:58:32 2026 +0100"
      },
      "message": "tp: move heap graph, network and bluetooth traces out of tree (#6208)\n\nMove three more Android-owned TracePacket payloads out of the perfetto\nrepo.\n\n* ART heap graph: TracePacket field 56 becomes an extension hole. The\nschema moves to protos/third_party/android/art/heap_graph.proto (package\ncom.android.art.tracing, wrapper ArtHeapGraphTracePacket). The shared\nprofiling protos it references (profile_common, deobfuscation) stay in\nperfetto.\n\n* Connectivity network trace: TracePacket fields 88/92 and InternedData\nfield 30 become extension holes. The schema moves to\nprotos/third_party/android/connectivity/network_trace.proto (package\nandroid.net.connectivity.tracing, wrappers ConnectivityTracePacket and\nConnectivityInternedData).\n\n* Bluetooth trace events: TracePacket field 114 becomes an extension\nhole. The schema moves to protos/third_party/android/packages/\nmodules/bluetooth/tracing/bluetooth_trace.proto (package\nbluetooth.tracing, wrapper BluetoothTracePacket).\n\nThe importers (heap_graph_module, heap_graph_tracker, network_trace_\nmodule, android_probes_module/parser) read the fields as extensions via\nGetExtensionSlowly, the extension holes are registered in\nprotos/perfetto/trace/extensions.json, the new protos are wired into the\nandroid_extensions descriptor, and the diff tests\u0027 textprotos are\nupdated to extension bracket syntax."
    },
    {
      "commit": "2375c432fd675caa8fedc3e00da16f971250f64f",
      "tree": "d919dc066a7784ab3f3ff48266ffff81257b0bb0",
      "parents": [
        "5f5e6b96da57295a7fef85fdefacc312d5015ff7"
      ],
      "author": {
        "name": "copybara-service[bot]",
        "email": "56741989+copybara-service[bot]@users.noreply.github.com",
        "time": "Thu Jun 11 21:21:42 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 11 21:21:42 2026 +0100"
      },
      "message": "Copybara import from Chromium: proto and stdlib changes (#6220)\n\nCopybara import from Chromium: proto and stdlib changes\n\n- 7c5418c7565e47826d7a7aa8df4e3d8a1d4c08a8 [A11Y] Introduce\nkAriaValueText attribute for range contr... by Aditya Batra\n\u003cadibatra@google.com\u003e\n\nCOPYBARA_IMPORT\u003dProject import generated by Copybara.\n\nGitOrigin-RevId: 7c5418c7565e47826d7a7aa8df4e3d8a1d4c08a8\n\nCo-authored-by: Perfetto Team \u003ccopybara-servicebot@google.com\u003e"
    },
    {
      "commit": "5f5e6b96da57295a7fef85fdefacc312d5015ff7",
      "tree": "769576a059ee4ebafa7e4903a7b5b91078562073",
      "parents": [
        "8ff69543cddb07dca9448aaec4446cde36752e7e"
      ],
      "author": {
        "name": "Bogdan Floris",
        "email": "bogdan.floris@gmail.com",
        "time": "Thu Jun 11 20:16:32 2026 +0300"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 11 18:16:32 2026 +0100"
      },
      "message": "protovm: fix del_if_src_empty if skip_submessages is set (#6212)\n\nreorders these two checks so a field set as field_x {} is properly\ndeleted in the incremental state if del_if_src_emtpy is set."
    },
    {
      "commit": "8ff69543cddb07dca9448aaec4446cde36752e7e",
      "tree": "249686678153cd8f31e428bd32251ca1e6045250",
      "parents": [
        "4ad7b09e1b9ed13f0fd544a978a6a09ef4a5984a"
      ],
      "author": {
        "name": "Lalit Maganti",
        "email": "lalitm@google.com",
        "time": "Thu Jun 11 18:15:52 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 11 17:15:52 2026 +0000"
      },
      "message": "protoprofile: transparently ungzip traces passed to it (#6215)"
    },
    {
      "commit": "4ad7b09e1b9ed13f0fd544a978a6a09ef4a5984a",
      "tree": "763ea5b96265a1efe583d63d79ce2d42e3769817",
      "parents": [
        "7ebcd865899ddcc623eed196153342ecef50cdb2"
      ],
      "author": {
        "name": "Lalit Maganti",
        "email": "lalitm@google.com",
        "time": "Thu Jun 11 17:55:36 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 11 16:55:36 2026 +0000"
      },
      "message": "tp: add perfetto_metadata sidecar detection and envelope (#6202)\n\nAdd the perfetto_metadata sidecar: a JSON file inside a zip/tar\narchive which configures trace_processor\u0027s handling of the other files\nin the archive. This change adds the envelope only; clock and machine\noverrides for individual files build on top of it in follow-ups.\n\nAlso extends the Zip/Tar diff test blueprints to accept raw bytes\nmembers (used to test gzip-wrapped and nested-archive handling)."
    },
    {
      "commit": "7ebcd865899ddcc623eed196153342ecef50cdb2",
      "tree": "eecab99607beba20a28657fc477f0edbf124ba1e",
      "parents": [
        "b901ffb0d0d042e5ae4a2bac29676c248e30ba67"
      ],
      "author": {
        "name": "gignat-dev",
        "email": "gignat@google.com",
        "time": "Thu Jun 11 16:10:38 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 11 19:10:38 2026 +0300"
      },
      "message": "ui: OomAdjScoreViz: improve track ordering, descriptions, and rendering (#6206)\n\nThis commit consolidates several improvements to the OomAdjScoreViz\nplugin:\n\n* Fix concurrency track cut: The per-bucket \"processes count\" track\ndropped its final return-to-zero point because `lead(ts) - ts` is NULL.\nCoalescing the trailing NULL duration to `trace_end() - ts` ensures the\ncount drops to 0 at the right time when a bucket empties.\n* Order bucket tracks: Bucket tracks are now ordered by `oom_score`\ndescending (cached first, system last) matching the ranges in\n`oom_adjuster.sql`, rather than relying on arbitrary `SELECT DISTINCT`\nordering.\n* Describe score tracks: Added descriptions to per-process score tracks\nso their purpose is documented in the UI on hover and in track details."
    },
    {
      "commit": "b901ffb0d0d042e5ae4a2bac29676c248e30ba67",
      "tree": "009bfc9defab4e2bed507cc0a28debd30bd768a3",
      "parents": [
        "6dfdb97cffeb765fbb0b9c85420a395d489dad4d"
      ],
      "author": {
        "name": "copybara-service[bot]",
        "email": "56741989+copybara-service[bot]@users.noreply.github.com",
        "time": "Thu Jun 11 11:59:35 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 11 11:59:35 2026 +0000"
      },
      "message": "Copybara import from Chromium: proto and stdlib changes (#6207)\n\nCopybara import from Chromium: proto and stdlib changes\n\n- 6de47bbacf0e7aa31ea431a23529a51fd9d3261e [a11y-canvas] Add\nkCanvasAnnotation to UI accessibility l... by Ramin Halavati\n\u003crhalavati@chromium.org\u003e\n\nCOPYBARA_IMPORT\u003dProject import generated by Copybara.\n\nGitOrigin-RevId: 6de47bbacf0e7aa31ea431a23529a51fd9d3261e\n\nCo-authored-by: Perfetto Team \u003ccopybara-servicebot@google.com\u003e"
    },
    {
      "commit": "6dfdb97cffeb765fbb0b9c85420a395d489dad4d",
      "tree": "121a6af34c8c105d589012d78f46813d30992fe5",
      "parents": [
        "78e47bd419ebeddb786b50acdff6d383040a1bc8"
      ],
      "author": {
        "name": "BogdanLionte",
        "email": "bogdan.lionte1997@gmail.com",
        "time": "Thu Jun 11 13:02:19 2026 +0300"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 11 13:02:19 2026 +0300"
      },
      "message": "tp: Parse and ingest ART OOME metadata into Trace Processor (#6175)\n\nAdds support for extracting ART OOME crash details from the trace. When\nan OOME occurs, the ART VM emits metadata about the failed allocation\nand the thread stack trace where the allocation occurred.\n\nThis patch:\n- Adds the `heap_graph` table to capture the list of heap dumps along\nwith their timestamps, process PIDs, and dump reasons.\n- Adds the `heap_graph_java_oome_details` table to capture the\nallocation size, free memory, and the VM error message.\n- Adds the `heap_graph_thread_callsite` table to link the OOME heap\ngraph to the thread ID (utid) and stack profile callsite.\n- Populates these tables during trace ingestion of `ArtProcessMetadata`\npackets and sets the `dump_reason` in the `heap_graph` table to \u0027OOME\u0027.\n- Integrates the OOME callsite into `DeobfuscationTracker` to enable\npackage guessing and proguard deobfuscation on OOME stack traces.\n- Adds parser and deobfuscation diff tests to verify correctness."
    },
    {
      "commit": "78e47bd419ebeddb786b50acdff6d383040a1bc8",
      "tree": "e97c2fc792a00473183d4da2e61878d3692f5474",
      "parents": [
        "cb8c1445d5d30e76bd29a21f91e711b307ee7566"
      ],
      "author": {
        "name": "perfetto-automation[bot]",
        "email": "278437629+perfetto-automation[bot]@users.noreply.github.com",
        "time": "Thu Jun 11 09:28:23 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 11 09:28:23 2026 +0000"
      },
      "message": "Sync generated proto files (#6204)\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": "cb8c1445d5d30e76bd29a21f91e711b307ee7566",
      "tree": "0641177512c7ef9db65c14a94206edecd9104578",
      "parents": [
        "aceeeec72a92a3ec885c4a18356b370e41405ec2"
      ],
      "author": {
        "name": "gignat-dev",
        "email": "gignat@google.com",
        "time": "Thu Jun 11 09:19:50 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 11 12:19:50 2026 +0300"
      },
      "message": "bt-ui: Revamp Bigtrace settings architecture and UI (#6205)\n\nOverhauls the Bigtrace settings infrastructure to consolidate storage,\nimprove the UI, and simplify query execution.\n\nKey changes:\n- Trace Selection Grid: Introduces a dedicated, filterable DataGrid on\nthe Settings page to select the exact traces a query will run over (the\n/trace_metadata wire contract), replacing the legacy panel.\n- Unified UI: Replaces the legacy trace-metadata panel with a cohesive\nsettings strip and modal on the query page.\n- Storage \u0026 Mapping: Dedupes settings storage into SingleFieldStorage\nand centralizes the mapping logic for the /trace_metadata and /execute_*\nendpoints.\n- Component Polish: Makes boolean settings immediately editable (no\nenable/disable toggle), adds a \"reset to default\" affordance, and\nensures default metadata columns are visible.\n- Layout \u0026 Rendering: Groups metadata result columns in a trailing\nblock, places the link column first, and bounds the results grid for\nproper virtualization.\n- History \u0026 State: Restores history-entry hover states, parses camelCase\nsetting IDs from snapshots to restore disabled settings, and defaults\nnew queries to persistent execution."
    },
    {
      "commit": "aceeeec72a92a3ec885c4a18356b370e41405ec2",
      "tree": "d3073dfbe3b93c7ad50302a6f764008409ef3998",
      "parents": [
        "ced7fa9a2c496cad96c4eee471e69a395507de53"
      ],
      "author": {
        "name": "Lalit Maganti",
        "email": "lalitm@google.com",
        "time": "Wed Jun 10 21:17:22 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 10 21:17:22 2026 +0100"
      },
      "message": "tp: write back converted timestamps for systrace lines (#6200)\n\nSystraceTraceParser and JsonTraceTokenizer (for embedded\nsystemTraceEvents) converted line timestamps to trace time but only\nused the result as the sorter key: SystraceLineParser populates tables\nfrom line.ts, so events were written with the unconverted value. This\nwas masked whenever the conversion was the identity, but inside an\narchive where a proto trace provides a MONOTONIC\u003c-\u003eBOOTTIME snapshot\nthe converted and raw values differ.\n\nWrite the converted timestamp back into the line before pushing it to\nthe sorter."
    },
    {
      "commit": "ced7fa9a2c496cad96c4eee471e69a395507de53",
      "tree": "91fc29ffdd47ccb0717d98d3be5ec17229d1226a",
      "parents": [
        "0dbbf23ee5eb743e879fa969d42d932c927e3baa"
      ],
      "author": {
        "name": "sashwinbalaji",
        "email": "sashwinbalaji@google.com",
        "time": "Wed Jun 10 19:42:21 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 10 18:42:21 2026 +0000"
      },
      "message": "perfetto: expose android_extensions protos as a public Bazel proto group (#6199)"
    },
    {
      "commit": "0dbbf23ee5eb743e879fa969d42d932c927e3baa",
      "tree": "5fda0475ce82bdcf5c66fc2e539d29e0f3ca6213",
      "parents": [
        "ad11a433154926127b05ad5c3a7a8c57c58eb805"
      ],
      "author": {
        "name": "Ryan",
        "email": "rsavitski@google.com",
        "time": "Wed Jun 10 19:41:20 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 10 19:41:20 2026 +0100"
      },
      "message": "smaps plugin: instants track, datagrid details panel (#6184)\n\nFor traces with smaps packets, we now show process-scoped tracks with\ninstants representing those smaps snapshots. When selected, the list of\nmappings is shown in the details panel as a datagrid.\n\nOne complication is that typically a trace won\u0027t record all possible\nvalue columns (such as rss, anon, etc), so I wanted to render only the\nrelevant columns in the details panel to make it less\ncluttered/misleading. The underlying SQL table doesn\u0027t have nullability\n(unset readings default to 0), and I am not convinced that adding\nnullability is worth the increased effort to query the table by people.\n\nWhat I\u0027ve done instead: the entire smaps table is scanned and only\ncolumns that have a nonzero reading are shown in all smaps details\npanels for that trace. Similarly, the \"aggregate_count\" is only shown if\nat least one snapshot has aggregation. So there is some ambiguity and a\nparticular corner case: if a value was recorded, but was truly zero for\nall snapshots in the trace (right now that column would end up hidden).\n\nAlso, I\u0027m deliberately not doing anything special for a hypothetical\ntrace with smaps packets recorded with different configs."
    },
    {
      "commit": "ad11a433154926127b05ad5c3a7a8c57c58eb805",
      "tree": "e1c6a9c5655713605c7755ed037c0539fb8a77d8",
      "parents": [
        "79f4e63804996f296b4a081cb9d922c1be0ae5de"
      ],
      "author": {
        "name": "perfetto-automation[bot]",
        "email": "278437629+perfetto-automation[bot]@users.noreply.github.com",
        "time": "Wed Jun 10 19:00:20 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 10 19:00:20 2026 +0100"
      },
      "message": "Roll prebuilts to v56.1 (#6196)\n\nAutomated prebuilt roll for **v56.1**: bumps the prebuilt binary\nmanifests (trace_processor, traceconv, tracebox, SDK sources, heapprofd)\nand stamps the matching agent-skills version (RFC-0026).\n\nCo-authored-by: perfetto-automation[bot] \u003cperfetto-automation-github-app@google.com\u003e"
    },
    {
      "commit": "79f4e63804996f296b4a081cb9d922c1be0ae5de",
      "tree": "738397e57376286427d002d33774808c2d7a622e",
      "parents": [
        "aef14f61cb06fb84e2ad55752967400a879fe768"
      ],
      "author": {
        "name": "Lalit Maganti",
        "email": "lalitm@google.com",
        "time": "Wed Jun 10 18:56:32 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 10 18:56:32 2026 +0100"
      },
      "message": "ai: bundle the tag\u0027s ai skills *not* main\u0027s (#6198)"
    },
    {
      "commit": "aef14f61cb06fb84e2ad55752967400a879fe768",
      "tree": "3e93ade23bc75688b4ce683f8c7d7b7cfb4dd24d",
      "parents": [
        "ab19d6e90529a2b330a69d84825d6352e7d6d6b8"
      ],
      "author": {
        "name": "Lalit Maganti",
        "email": "lalitm@google.com",
        "time": "Wed Jun 10 18:50:55 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 10 18:50:55 2026 +0100"
      },
      "message": "python: explicitly prepend http:// when bare address is specified (#6180)\n\nFixes: https://github.com/google/perfetto/issues/6176"
    },
    {
      "commit": "ab19d6e90529a2b330a69d84825d6352e7d6d6b8",
      "tree": "18be89c8583cde91af7f7b1b2983696ce78496da",
      "parents": [
        "53031d10fa44f7710a7afbfd8181ebf48caa24c6"
      ],
      "author": {
        "name": "Lalit Maganti",
        "email": "lalitm@google.com",
        "time": "Wed Jun 10 18:26:02 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 10 18:26:02 2026 +0100"
      },
      "message": "ai: fix crash when building skills bundle (#6195)"
    },
    {
      "commit": "53031d10fa44f7710a7afbfd8181ebf48caa24c6",
      "tree": "57e68b9c8d963d4729124817d36b9d1f439eb991",
      "parents": [
        "7d7681aa04b1508246bab5d528a8ecef362e2206"
      ],
      "author": {
        "name": "Lalit Maganti",
        "email": "lalitm@google.com",
        "time": "Wed Jun 10 18:15:47 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 10 18:15:47 2026 +0100"
      },
      "message": "github: run release workflow on self hosted runner (#6193)"
    },
    {
      "commit": "7d7681aa04b1508246bab5d528a8ecef362e2206",
      "tree": "cf42c6b5ca389c0a54cc68a7a62f952c770913b4",
      "parents": [
        "4fe1178306b0ede671507eae0f0c48e26911988e"
      ],
      "author": {
        "name": "Steve Golton",
        "email": "stevegolton@google.com",
        "time": "Wed Jun 10 18:10:22 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 10 17:10:22 2026 +0000"
      },
      "message": "ui: Clean up dependencies (#6192)\n\n- Remove unused dependencies\n- Move dev dependencies to `\"devDependencies\"`"
    },
    {
      "commit": "4fe1178306b0ede671507eae0f0c48e26911988e",
      "tree": "5aae99b7963c1b996337bbcb85d66a26468469f9",
      "parents": [
        "1b9c9dfd179f2b15e1e8ad06e67745526ebdb685"
      ],
      "author": {
        "name": "sashwinbalaji",
        "email": "sashwinbalaji@google.com",
        "time": "Wed Jun 10 17:47:56 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 10 16:47:56 2026 +0000"
      },
      "message": "perfetto: export trace protos from winscope_extensions for Bazel (#6191)\n\nThe winscope wiring files (frameworks_native_winscope.proto,\nframeworks_base_winscope.proto) use import public of trace_packet.proto,\nand Bazel requires the proto_library providing a public import to be\nlisted directly in exports; getting it transitively via winscope_regular\nis not enough. Add trace:non_minimal to winscope_extensions\u0027 public_deps\nso the generated exports include it directly."
    },
    {
      "commit": "1b9c9dfd179f2b15e1e8ad06e67745526ebdb685",
      "tree": "9ff053253bbd8fd95c36159335ec0df5d7c3358c",
      "parents": [
        "a38d2b1e36dd3a0448b716841e768c0bd314b9ee"
      ],
      "author": {
        "name": "sashwinbalaji",
        "email": "sashwinbalaji@google.com",
        "time": "Wed Jun 10 17:13:59 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 10 17:13:59 2026 +0100"
      },
      "message": "proto_merger: keep oneof fields and enum values deleted upstream (#6189)\n\nWhen a field still exists in our local proto but was removed upstream,\nproto_merger is supposed to keep it under a \"not present upstream\"\ncomment. That worked for plain message fields, but fields inside a oneof\nand enum values were dropped from the output: the merge step tracked\nthem as deleted, the serializer just never wrote them back.\n\n- Write back deleted oneof fields and enum values, under the same\ncomment used for the other deleted items.\n- Split the sources into a lib target so tests can link against them.\n- Add tests for the serializer and a merge round trip, hooked into\nperfetto_unittests."
    },
    {
      "commit": "a38d2b1e36dd3a0448b716841e768c0bd314b9ee",
      "tree": "557d9edcd96d3596168ac159e513c1e4c4cda1d8",
      "parents": [
        "24cfebbf896758e5506a8829593867b688b6ccc5"
      ],
      "author": {
        "name": "David Reveman",
        "email": "reveman@meta.com",
        "time": "Wed Jun 10 11:35:47 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 10 08:35:47 2026 -0700"
      },
      "message": "ai/skills: add GPU frequency residency workflow (#6190)\n\nAdds a GPU workflow that, given device-busy time, answers at what clock\nthe GPU actually ran: per-GPU effective occupancy (busy % of active span\nx mean-busy-clock / observed peak), a frequency residency histogram,\nslow DVFS ramp after idle-\u003ebusy transitions, and sustained throttling\ncorrelated with temperature and power. It composes on the timeline\noccupancy busy timeline and uses the canonical per-GPU gpufreq track.\nIncludes three parameter-free triage scripts; reached from the timeline\noccupancy workflow\u0027s GPU-bound branch rather than the top-level router."
    },
    {
      "commit": "24cfebbf896758e5506a8829593867b688b6ccc5",
      "tree": "106e25fcd0f9251f54bafc951a9582bff00fe430",
      "parents": [
        "27f4fae5b1983200550a0dcbb2cf46d21d84d931"
      ],
      "author": {
        "name": "sashwinbalaji",
        "email": "sashwinbalaji@google.com",
        "time": "Wed Jun 10 16:28:18 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 10 16:28:18 2026 +0100"
      },
      "message": "tp: move winscope out-of-tree as proto2 extensions (#6105)\n\nMove the whole winscope schema out of the core trace protos into\nprotos/third_party/android/winscope, so the Android platform owns it.\nWinscope payloads are now extensions on TracePacket, and\ntrace_packet.proto no longer mentions winscope at all.\n\n- Wire format is unchanged: the extensions keep the original field\nnumbers, so old traces open on the new trace processor and new traces\nopen on old ones.\n- The winscope protos now use the com.android.internal package, like the\nrest of third_party/android. Their generated C++ namespace changes from\nperfetto::protos to com::android::internal, as do their type names in\nthe descriptor. Source-level only; nothing on the wire changes.\n- The winscope_extensions field (112) is also gone from the public\nTracePacket; it\u0027s an out-of-tree extension now.\n- The schema is split across two build targets because protos that use\ncustom options can\u0027t be built with the C++ proto backend.\n- Diff tests were updated to read the out-of-tree descriptor and\nreference winscope payloads as extensions.\n- gen_all outputs (Android.bp, bazel, public C SDK headers) are not\nregenerated here and still need the usual gen_all run."
    },
    {
      "commit": "27f4fae5b1983200550a0dcbb2cf46d21d84d931",
      "tree": "c520b5cb3bd0069ad63d5fb478c9285f13f826fd",
      "parents": [
        "76d21d571d10b4b6452556b53461618ff532fe17"
      ],
      "author": {
        "name": "Lalit Maganti",
        "email": "lalitm@google.com",
        "time": "Wed Jun 10 14:56:54 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 10 14:56:54 2026 +0100"
      },
      "message": "tp: support inline zip/tar archive traces in diff tests\n\nAdd Zip and Tar trace types to the diff test framework. An archive is\nassembled at test runtime from a dict of members keyed by their path\nwithin the archive:\n- str members are written verbatim (JSON traces, systrace, configs)\n- TextProto members are serialized as binary proto traces\n- Path/DataPath members include the raw bytes of an external file\n\nThis makes multi-file archive tests fully explicit and reviewable in\nthe test definition itself, instead of requiring opaque checked-in\narchive blobs or .py generator scripts.\n\nReviewers: sashwinbalaji\n\nReviewed By: sashwinbalaji\n\nPull Request: https://github.com/google/perfetto/pull/6187"
    },
    {
      "commit": "76d21d571d10b4b6452556b53461618ff532fe17",
      "tree": "3ea5eb152c3e523bad16c8e6bd5a463a0b43bf3c",
      "parents": [
        "35b05344c1b52885c194a4272c4c6900f16a8e2e"
      ],
      "author": {
        "name": "Lalit Maganti",
        "email": "lalitm@google.com",
        "time": "Wed Jun 10 13:55:27 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 10 12:55:27 2026 +0000"
      },
      "message": "tp: add expected-error support to diff tests (#6186)\n\nAdd an ExpectedError out-type to the diff test framework. A test using\nout\u003dExpectedError(\u0027substring\u0027) passes if and only if trace_processor\nexits with a non-zero exit code AND its stderr contains the given\nsubstring. This makes it possible to write diff tests for strict\nparsing/import errors where the whole trace load is expected to fail;\npreviously the harness unconditionally failed any test whose\ntrace_processor invocation exited non-zero.\n\nAdd a demo test (garbage input -\u003e \u0027Unknown trace type provided\u0027) and\ndocument the new out-type in docs/contributing/testing.md."
    },
    {
      "commit": "35b05344c1b52885c194a4272c4c6900f16a8e2e",
      "tree": "a8df2ecb0432746a6116260b5cb88da9bb8517d6",
      "parents": [
        "ce446d9dc52ac5a2b99651319a6ebe679dff8bb2"
      ],
      "author": {
        "name": "Lalit Maganti",
        "email": "lalitm@google.com",
        "time": "Wed Jun 10 13:15:16 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 10 13:15:16 2026 +0100"
      },
      "message": "tp: fix python blaze compile (#6185)"
    },
    {
      "commit": "ce446d9dc52ac5a2b99651319a6ebe679dff8bb2",
      "tree": "1eaac9499d5c4e49f3b60e141db7dcfdb3e5aad1",
      "parents": [
        "7906f84595913852ae265bef4c519afb558e9d4c"
      ],
      "author": {
        "name": "Steve Golton",
        "email": "stevegolton@google.com",
        "time": "Wed Jun 10 11:46:27 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 10 11:46:27 2026 +0100"
      },
      "message": "ui: Allow editing custom textproto record configs (#6178)\n\nAdd an \"edit\" button to re-open the textproto editor for custom configs,\nboth saved and the active-but-unsaved one. Saving a saved config\noverwrites it in place; saving the active one replaces it without\ncreating a saved entry.\n\nShortcomings: edits round-trip through the binary TraceConfig, so\ncomments and formatting aren\u0027t preserved. On a parse error the dialog\ncloses and discards your edits before showing the error (pre-existing\nmodal behaviour, shared with the import flow). This is due to a short\ncoming with the way modals work. Modifying this is out of scope of this\npatch.\n\n\u003cimg width\u003d\"481\" height\u003d\"206\" alt\u003d\"image\"\nsrc\u003d\"https://github.com/user-attachments/assets/dd7f69ab-7d04-4dee-a079-067989527519\"\n/\u003e\n\n# Testing\n### Modify an ephemeral config\n- Open record page, create a new \u0027custom\u0027 recording config.\n- Click the edit button to edit it. Make changes and press OK to save.\n- Check the proto in \"Command line instructions\" reflects the modified\nproto.\n\n### Modify a saved config\n- Save the config\n- Press edit and modify it again\n- Ensure the config has chaneged on the \"Command line instructions\"\npage.\n\n### UI reload\n- Reload the UI\n- Ensure the modified config has persisted the reload."
    },
    {
      "commit": "7906f84595913852ae265bef4c519afb558e9d4c",
      "tree": "da978a73ceca0f483479d14a4655a6cd8178096d",
      "parents": [
        "e282e10b8a219b6c38a63fc56df4d254ef1cc638"
      ],
      "author": {
        "name": "Lalit Maganti",
        "email": "lalitm@google.com",
        "time": "Wed Jun 10 11:16:56 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 10 10:16:56 2026 +0000"
      },
      "message": "tp: fix force teardown of subprocess in Python API on Windows (#6168)\n\nThis CL improves the logic for forcibly tearing down the trace\nprocessor spawned subprocess by adding job handling capabilities on\nWindows. It also aligns Unix on this by creating a new process group and\nkilling the whole group on Unix."
    },
    {
      "commit": "e282e10b8a219b6c38a63fc56df4d254ef1cc638",
      "tree": "51410b3910d8b8f46c437d9644b3407a6febfc76",
      "parents": [
        "0865485ef11030747b9d0f7e414c7642014445db"
      ],
      "author": {
        "name": "etiennep-chromium",
        "email": "etiennep@chromium.org",
        "time": "Tue Jun 09 12:53:08 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 09 12:53:08 2026 -0400"
      },
      "message": "[State] Add protos to describe state tracks and events [1/4] (#6068)\n\nBased on\nhttps://github.com/google/perfetto/blob/rfcs/0023-updatable-track-event.md\n\n[1/4]: This PR adds state track and events proto, with no support, but\nminimal changes to make the build succeed.\n\nFor reference, this is the full implementation:\nhttps://github.com/google/perfetto/pull/6068"
    },
    {
      "commit": "0865485ef11030747b9d0f7e414c7642014445db",
      "tree": "544d3ec7f5ad5e6844228d965996024fddcdd554",
      "parents": [
        "77d0b151f5d6b54f5d2a606c997b78e0330d6de5"
      ],
      "author": {
        "name": "zezeozue",
        "email": "zezeozue@google.com",
        "time": "Tue Jun 09 15:19:48 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 09 15:19:48 2026 +0100"
      },
      "message": "android_sdk: add nested tracks  (#6085)\n\nImmutable PerfettoTrack handle (process/thread/global root + child())\nplus usingTrack(), carried by one native NestedTracks extra over the\nexisting HL NESTED_TRACKS ABI.\n\nExample usage:\n\n  static final PerfettoTrack RENDER \u003d PerfettoTrack.process(\"Render\");\n  static final PerfettoTrack GPU \u003d RENDER.child(\"GPU\");\n  PerfettoTrace.instant(CAT, \"frame\").usingTrack(GPU).emit();\n\nUpdated the abi to expose a static name option for\nPerfettoTeHlNestedTrackNamed"
    },
    {
      "commit": "77d0b151f5d6b54f5d2a606c997b78e0330d6de5",
      "tree": "a5aa47b526d048624952b33fa693610786d75442",
      "parents": [
        "2c79027153dfc4458a62ba9d69a0f2d0984243c4"
      ],
      "author": {
        "name": "ilkos",
        "email": "ilkos@google.com",
        "time": "Tue Jun 09 13:45:16 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 09 13:45:16 2026 +0100"
      },
      "message": "java_hprof_config: Add min_java_heap_size_kb option (#6174)\n\nBug: 511177241"
    },
    {
      "commit": "2c79027153dfc4458a62ba9d69a0f2d0984243c4",
      "tree": "727bee2b289126619312a7005385969fad55dd8c",
      "parents": [
        "8596a7e2447460959943b31f5103e89ae0b31468"
      ],
      "author": {
        "name": "Safayat Ullah",
        "email": "safayat@google.com",
        "time": "Tue Jun 09 10:46:06 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 09 10:46:06 2026 +0100"
      },
      "message": "perfetto: move android_job_name interned data out-of-tree (#6154)\n\nMoves AndroidJobName out of the upstream trace schema into the Android\nplatform tree (package com.android.internal) as frameworks/base\nout-of-tree extensions:\n\n- InternedData.android_job_name (44) becomes `extensions`; the schema\nmoves to\nprotos/third_party/android/frameworks/base/proto/tracing/frameworks_base_interned_data.proto,\nregistered in extensions.json."
    },
    {
      "commit": "8596a7e2447460959943b31f5103e89ae0b31468",
      "tree": "8f2932550a778ff32481fd76f066c2d4312ac7d7",
      "parents": [
        "c13a8c3e965e2ed81fc0d01807610260518a1fe5"
      ],
      "author": {
        "name": "perfetto-automation[bot]",
        "email": "278437629+perfetto-automation[bot]@users.noreply.github.com",
        "time": "Tue Jun 09 09:01:04 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 09 09:01:04 2026 +0000"
      },
      "message": "Sync generated proto files (#6173)\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": "c13a8c3e965e2ed81fc0d01807610260518a1fe5",
      "tree": "5602923c8feeaec61cc014f1fbcd3e5bdfe42584",
      "parents": [
        "b23cc24156116d26ed8e6cb3c5cfdd06f916e8ac"
      ],
      "author": {
        "name": "David Reveman",
        "email": "reveman@meta.com",
        "time": "Mon Jun 08 18:45:20 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 08 23:45:20 2026 +0100"
      },
      "message": "ai/skills: add GPU timeline occupancy workflow (#6172)\n\nAdds a vendor-agnostic GPU workflow that decomposes the GPU timeline\ninto device-busy vs idle (interval union, not sum), reports per-GPU busy\n% of active span and of the whole trace, and surfaces the largest idle\ngaps with host-side attribution to distinguish GPU-bound from host-bound\nworkloads. Includes two parameter-free triage scripts and a router\nentry."
    },
    {
      "commit": "b23cc24156116d26ed8e6cb3c5cfdd06f916e8ac",
      "tree": "25710f76f44bfc4b7b48909a00fbad147bba5df9",
      "parents": [
        "051df2ec4895ab90673df6d14db0e15e780f6758"
      ],
      "author": {
        "name": "Lalit Maganti",
        "email": "lalitm@google.com",
        "time": "Mon Jun 08 21:18:27 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 08 20:18:27 2026 +0000"
      },
      "message": "ai: remove eval files (#6171)\n\nThese aren\u0027t doing anything in our tree so just remove them"
    },
    {
      "commit": "051df2ec4895ab90673df6d14db0e15e780f6758",
      "tree": "9bc5877b2f3ebb9e09f8235f94d579dfafbc57d7",
      "parents": [
        "bbb950f19f48ad2edb28efbe8a334ec8c5416d42"
      ],
      "author": {
        "name": "etiennep-chromium",
        "email": "etiennep@chromium.org",
        "time": "Mon Jun 08 15:47:47 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 08 15:47:47 2026 -0400"
      },
      "message": "[SDK] Defer track descriptor writes until first event (#6111)\n\nModify `TrackEvent::SetTrackDescriptor` to check if the track has\nbeen seen by the data source instance before writing.\nThe descriptor will be written dynamically when the\ntrack emits its first event.\nThis prevents trace buffers in \"light\" sessions from\nbeing polluted with descriptors of idle threads."
    },
    {
      "commit": "bbb950f19f48ad2edb28efbe8a334ec8c5416d42",
      "tree": "cd32036c9f7801c67c0e44804ada8946120f21c8",
      "parents": [
        "4cbb6c9364859b032cf0d2fa28af8b63bd47a8a4"
      ],
      "author": {
        "name": "Lalit Maganti",
        "email": "lalitm@google.com",
        "time": "Mon Jun 08 17:37:44 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 08 17:37:44 2026 +0100"
      },
      "message": "ai: refactor skill template and add recording reference (#6170)"
    },
    {
      "commit": "4cbb6c9364859b032cf0d2fa28af8b63bd47a8a4",
      "tree": "db8d9cd4da0e601e004ae451b198cdb51d7a1e2c",
      "parents": [
        "23c353cc03716aa87d57aa6fd2ff4ba9b5c75909"
      ],
      "author": {
        "name": "Lalit Maganti",
        "email": "lalitm@google.com",
        "time": "Mon Jun 08 16:48:25 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 08 16:48:25 2026 +0100"
      },
      "message": "ai: cleanup old skills setup in favor of new central Perfetto skill (#6169)"
    },
    {
      "commit": "23c353cc03716aa87d57aa6fd2ff4ba9b5c75909",
      "tree": "18ec590c6f851f177766dd2d3763ce19339b4292",
      "parents": [
        "f31a9f62cae26fb58e8bff12f477499d7a9f2b23"
      ],
      "author": {
        "name": "Ryan",
        "email": "rsavitski@google.com",
        "time": "Mon Jun 08 15:35:11 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 08 14:35:11 2026 +0000"
      },
      "message": "heapprofd: add glob support to cmdline matching (only for running targets) (#6167)\n\nCurrently, heap profiling is the only data source that cannot be\nconfigured with wildcard patterns for process names. This is because\n\"from startup\" profiling on Android requires self-targeting code to\nderive a unique sysprop name from the process cmdline, where the sysprop\nvalue states whether to self-activate the profiling (and is set by\nheapprofd). With wildcard matching, the startup case would need a\ndifferent scheme that can inspect all N patterns that are being\nprofiled.\n\nThis patch retrofits wildcard support into heapprofd, but makes it\nexplicitly incompatible with startup profiling to reduce surprise\nfactor. A config needs to explicitly state no_startup\u003dtrue if its\n|process_cmdline| includes wildcards.\n\nThe glob-aware matching codepath is identical to traced_perf and\njava_hprof profilers.\n\nBug: 495877833"
    },
    {
      "commit": "f31a9f62cae26fb58e8bff12f477499d7a9f2b23",
      "tree": "b5836b7704268cee205f3af0d65a82ac3ace9105",
      "parents": [
        "56b32c93703dbcf39cae968d09cf4761ba185581"
      ],
      "author": {
        "name": "zezeozue",
        "email": "zezeozue@google.com",
        "time": "Mon Jun 08 14:31:29 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 08 14:31:29 2026 +0100"
      },
      "message": "ui: VideoFrames plugin (#6155)\n\nAdds the dev.perfetto.VideoFrames plugin for the android.display.video\ndata source: a per-display video-frame track, a WebCodecs player (decode\n+ playback), a details panel and a selection tab. Reads the\ntrace_processor surface by name (__intrinsic_video_frames +\n__intrinsic_video_frame_au_data).\n\nThe plugin is disabled by default"
    },
    {
      "commit": "56b32c93703dbcf39cae968d09cf4761ba185581",
      "tree": "c23cb06fd6be2d343ac29bf99d0fbb2a51984f22",
      "parents": [
        "59fc72def04b8751b9d820b35946449bdd9e0f90"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Jun 08 13:06:04 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 08 13:06:04 2026 +0100"
      },
      "message": "build(deps): bump the npm_and_yarn group across 1 directory with 4 updates (#6166)\n\nBumps the npm_and_yarn group with 2 updates in the /infra/perfetto.dev\ndirectory: [mermaid](https://github.com/mermaid-js/mermaid) and\n[protobufjs](https://github.com/protobufjs/protobuf.js).\n\nUpdates `mermaid` from 11.12.1 to 11.15.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/mermaid-js/mermaid/releases\"\u003emermaid\u0027s\nreleases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003emermaid@11.15.0\u003c/h2\u003e\n\u003ch3\u003eMinor Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca\nhref\u003d\"https://redirect.github.com/mermaid-js/mermaid/pull/7174\"\u003e#7174\u003c/a\u003e\n\u003ca\nhref\u003d\"https://github.com/mermaid-js/mermaid/commit/0aca21739c0d1fcaaa206e04a6cd574ebc415483\"\u003e\u003ccode\u003e0aca217\u003c/code\u003e\u003c/a\u003e\nThanks \u003ca\nhref\u003d\"https://github.com/milesspencer35\"\u003e\u003ccode\u003e@​milesspencer35\u003c/code\u003e\u003c/a\u003e!\n- feat(sequence): Add support for decimal start and increment values in\nthe \u003ccode\u003eautonumber\u003c/code\u003e directive\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca\nhref\u003d\"https://redirect.github.com/mermaid-js/mermaid/pull/7512\"\u003e#7512\u003c/a\u003e\n\u003ca\nhref\u003d\"https://github.com/mermaid-js/mermaid/commit/8e17492f7365ba50896382feb69a23efd9d8a22d\"\u003e\u003ccode\u003e8e17492\u003c/code\u003e\u003c/a\u003e\nThanks \u003ca\nhref\u003d\"https://github.com/aruncveli\"\u003e\u003ccode\u003e@​aruncveli\u003c/code\u003e\u003c/a\u003e! -\nfeat(flowchart): add datastore shape\u003c/p\u003e\n\u003cp\u003eIn Data flow diagrams, a datastore/warehouse/file/database is used to\nrepresent data persistence. It is denoted by a rectangle with only top\nand bottom borders, and can be used in flowcharts with \u003ccode\u003eA@{ shape:\ndatastore, label: \u0026quot;Datastore\u0026quot; }\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca\nhref\u003d\"https://redirect.github.com/mermaid-js/mermaid/pull/6440\"\u003e#6440\u003c/a\u003e\n\u003ca\nhref\u003d\"https://github.com/mermaid-js/mermaid/commit/9ad8dde6d049adde85d8ed2d476c09b5820f3f4b\"\u003e\u003ccode\u003e9ad8dde\u003c/code\u003e\u003c/a\u003e\nThanks \u003ca href\u003d\"https://github.com/yordis\"\u003e\u003ccode\u003e@​yordis\u003c/code\u003e\u003c/a\u003e, \u003ca\nhref\u003d\"https://github.com/lgazo\"\u003e\u003ccode\u003e@​lgazo\u003c/code\u003e\u003c/a\u003e! - feat: add\nEvent Modeling diagram\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca\nhref\u003d\"https://redirect.github.com/mermaid-js/mermaid/pull/7707\"\u003e#7707\u003c/a\u003e\n\u003ca\nhref\u003d\"https://github.com/mermaid-js/mermaid/commit/27db774627be1cee881961dfd0d2cb21cd01b79d\"\u003e\u003ccode\u003e27db774\u003c/code\u003e\u003c/a\u003e\nThanks \u003ca href\u003d\"https://github.com/txmxthy\"\u003e\u003ccode\u003e@​txmxthy\u003c/code\u003e\u003c/a\u003e!\n- feat(architecture): expose four fcose layout knobs for\n\u003ccode\u003earchitecture-beta\u003c/code\u003e diagrams (\u003ccode\u003enodeSeparation\u003c/code\u003e,\n\u003ccode\u003eidealEdgeLengthMultiplier\u003c/code\u003e, \u003ccode\u003eedgeElasticity\u003c/code\u003e,\n\u003ccode\u003enumIter\u003c/code\u003e) so authors can tune layout density and spread\noverlapping siblings without changing diagram source\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca\nhref\u003d\"https://redirect.github.com/mermaid-js/mermaid/pull/7604\"\u003e#7604\u003c/a\u003e\n\u003ca\nhref\u003d\"https://github.com/mermaid-js/mermaid/commit/bf9502fb6012a4b724679b401ac928f5ee55161c\"\u003e\u003ccode\u003ebf9502f\u003c/code\u003e\u003c/a\u003e\nThanks \u003ca href\u003d\"https://github.com/M-a-c\"\u003e\u003ccode\u003e@​M-a-c\u003c/code\u003e\u003c/a\u003e! -\nfeat(class): add nested namespace support for class diagrams via dot\nnotation and syntactic nesting\u003c/p\u003e\n\u003cp\u003eIf you have namespaces in class diagrams that use \u003ccode\u003e.\u003c/code\u003es\nalready and want to render them without nesting (≤v11.14.0 behaviour),\nyou can use set \u003ccode\u003eclass.hierarchicalNamespaces\u003dfalse\u003c/code\u003e in your\nmermaid config:\u003c/p\u003e\n\u003cpre lang\u003d\"yaml\"\u003e\u003ccode\u003econfig:\n  class:\n    hierarchicalNamespaces: false\n\u003c/code\u003e\u003c/pre\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca\nhref\u003d\"https://redirect.github.com/mermaid-js/mermaid/pull/7272\"\u003e#7272\u003c/a\u003e\n\u003ca\nhref\u003d\"https://github.com/mermaid-js/mermaid/commit/88cdd3dc0aab9577174561b04e14760c565a232b\"\u003e\u003ccode\u003e88cdd3d\u003c/code\u003e\u003c/a\u003e\nThanks \u003ca\nhref\u003d\"https://github.com/xinbenlv\"\u003e\u003ccode\u003e@​xinbenlv\u003c/code\u003e\u003c/a\u003e! -\nfeat(sankey): add outlined label style, configurable\nnodeWidth/nodePadding, and custom node colors\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePatch Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca\nhref\u003d\"https://redirect.github.com/mermaid-js/mermaid/pull/7737\"\u003e#7737\u003c/a\u003e\n\u003ca\nhref\u003d\"https://github.com/mermaid-js/mermaid/commit/e9b0f34d8d82a6260077764ee45e1d7d90957a0f\"\u003e\u003ccode\u003ee9b0f34\u003c/code\u003e\u003c/a\u003e\nThanks \u003ca\nhref\u003d\"https://github.com/ashishjain0512\"\u003e\u003ccode\u003e@​ashishjain0512\u003c/code\u003e\u003c/a\u003e!\n- fix: prevent unbalanced CSS styles in classDefs\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca\nhref\u003d\"https://redirect.github.com/mermaid-js/mermaid/pull/7737\"\u003e#7737\u003c/a\u003e\n\u003ca\nhref\u003d\"https://github.com/mermaid-js/mermaid/commit/37ff937f1da2e19f882fd1db01235db4d01f4056\"\u003e\u003ccode\u003e37ff937\u003c/code\u003e\u003c/a\u003e\nThanks \u003ca\nhref\u003d\"https://github.com/ashishjain0512\"\u003e\u003ccode\u003e@​ashishjain0512\u003c/code\u003e\u003c/a\u003e!\n- fix: create CSS styles using the CSSOM\u003c/p\u003e\n\u003cp\u003eThis removes some invalid CSS and normalizes some CSS formatting.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca\nhref\u003d\"https://redirect.github.com/mermaid-js/mermaid/pull/7508\"\u003e#7508\u003c/a\u003e\n\u003ca\nhref\u003d\"https://github.com/mermaid-js/mermaid/commit/bfe60cc67b9a6dec64f9161f58e4d24a06c42b65\"\u003e\u003ccode\u003ebfe60cc\u003c/code\u003e\u003c/a\u003e\nThanks \u003ca href\u003d\"https://github.com/biiab\"\u003e\u003ccode\u003e@​biiab\u003c/code\u003e\u003c/a\u003e! -\nfix(stateDiagram): \u003ccode\u003eend note\u003c/code\u003e now only closes a note when\nused on a new line\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca\nhref\u003d\"https://redirect.github.com/mermaid-js/mermaid/pull/7737\"\u003e#7737\u003c/a\u003e\n\u003ca\nhref\u003d\"https://github.com/mermaid-js/mermaid/commit/faafb5d49106dd32c367f3882505f2dd625aa30e\"\u003e\u003ccode\u003efaafb5d\u003c/code\u003e\u003c/a\u003e\nThanks \u003ca\nhref\u003d\"https://github.com/ashishjain0512\"\u003e\u003ccode\u003e@​ashishjain0512\u003c/code\u003e\u003c/a\u003e!\n- fix(gantt): add iteration limit for \u003ccode\u003eexcludes\u003c/code\u003e field\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca\nhref\u003d\"https://redirect.github.com/mermaid-js/mermaid/pull/7737\"\u003e#7737\u003c/a\u003e\n\u003ca\nhref\u003d\"https://github.com/mermaid-js/mermaid/commit/65f8be2a42faf869b811469571983cba7eeeca99\"\u003e\u003ccode\u003e65f8be2\u003c/code\u003e\u003c/a\u003e\nThanks \u003ca\nhref\u003d\"https://github.com/ashishjain0512\"\u003e\u003ccode\u003e@​ashishjain0512\u003c/code\u003e\u003c/a\u003e!\n- fix: disallow some CSS at-rules in custom CSS\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca\nhref\u003d\"https://redirect.github.com/mermaid-js/mermaid/pull/7726\"\u003e#7726\u003c/a\u003e\n\u003ca\nhref\u003d\"https://github.com/mermaid-js/mermaid/commit/1502f32f3c5fb944925b0c527fbbde3c4f041824\"\u003e\u003ccode\u003e1502f32\u003c/code\u003e\u003c/a\u003e\nThanks \u003ca\nhref\u003d\"https://github.com/aloisklink\"\u003e\u003ccode\u003e@​aloisklink\u003c/code\u003e\u003c/a\u003e! -\nfix(wardley): fix unnecessary sanitization of text\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca\nhref\u003d\"https://redirect.github.com/mermaid-js/mermaid/pull/7578\"\u003e#7578\u003c/a\u003e\n\u003ca\nhref\u003d\"https://github.com/mermaid-js/mermaid/commit/1f98db8e326299ac97a2fa60abfd509d8f5f16e2\"\u003e\u003ccode\u003e1f98db8\u003c/code\u003e\u003c/a\u003e\nThanks \u003ca\nhref\u003d\"https://github.com/Gaston202\"\u003e\u003ccode\u003e@​Gaston202\u003c/code\u003e\u003c/a\u003e! -\nfix(class): self-referential class multiplicity labels no longer\nrendered multiple times\u003c/p\u003e\n\u003cp\u003eFixes \u003ca\nhref\u003d\"https://redirect.github.com/mermaid-js/mermaid/issues/7560\"\u003e#7560\u003c/a\u003e.\nResolves an issue where cardinality labels on self-referential class\nrelationships were rendered three times due to edge splitting in the\ndagre layout. The fix ensures that each sub-edge only carries its\nrelevant label positions.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca\nhref\u003d\"https://redirect.github.com/mermaid-js/mermaid/pull/7592\"\u003e#7592\u003c/a\u003e\n\u003ca\nhref\u003d\"https://github.com/mermaid-js/mermaid/commit/2343e38498a3b31f8ce5e79f1f009e0b56fbe086\"\u003e\u003ccode\u003e2343e38\u003c/code\u003e\u003c/a\u003e\nThanks \u003ca\nhref\u003d\"https://github.com/knsv-bot\"\u003e\u003ccode\u003e@​knsv-bot\u003c/code\u003e\u003c/a\u003e! -\nfix(sequence): add background box behind alt/else section title labels\nin sequence diagrams\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca\nhref\u003d\"https://redirect.github.com/mermaid-js/mermaid/pull/7589\"\u003e#7589\u003c/a\u003e\n\u003ca\nhref\u003d\"https://github.com/mermaid-js/mermaid/commit/7fb9509b8b5cb1dc48519dc60cf6cdc6afba0462\"\u003e\u003ccode\u003e7fb9509\u003c/code\u003e\u003c/a\u003e\nThanks \u003ca\nhref\u003d\"https://github.com/NYCU-Chung\"\u003e\u003ccode\u003e@​NYCU-Chung\u003c/code\u003e\u003c/a\u003e! -\nfix(block): prevent column widths from shrinking when mixing different\ncolumn spans\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca\nhref\u003d\"https://redirect.github.com/mermaid-js/mermaid/pull/7632\"\u003e#7632\u003c/a\u003e\n\u003ca\nhref\u003d\"https://github.com/mermaid-js/mermaid/commit/3f9e0f15bedc1e2c71ddb6b34192d1a21124cfc2\"\u003e\u003ccode\u003e3f9e0f1\u003c/code\u003e\u003c/a\u003e\nThanks \u003ca\nhref\u003d\"https://github.com/ekiauhce\"\u003e\u003ccode\u003e@​ekiauhce\u003c/code\u003e\u003c/a\u003e! -\nfix(sequence): correct messageAlign label position for right-to-left\narrows in sequence diagrams\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/mermaid-js/mermaid/commit/41646dfd43ac83f001b03c70605feb036afae46d\"\u003e\u003ccode\u003e41646df\u003c/code\u003e\u003c/a\u003e\nMerge pull request \u003ca\nhref\u003d\"https://redirect.github.com/mermaid-js/mermaid/issues/7739\"\u003e#7739\u003c/a\u003e\nfrom aloisklink/ci/fix-release\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/mermaid-js/mermaid/commit/2671f5c44a1515960ebc41c09a365c41860f95ee\"\u003e\u003ccode\u003e2671f5c\u003c/code\u003e\u003c/a\u003e\ndocs: fix v11.15.0 release\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/mermaid-js/mermaid/commit/f4bf04b5db8bed603e40ed3d5ce5228d6b07754e\"\u003e\u003ccode\u003ef4bf04b\u003c/code\u003e\u003c/a\u003e\nMerge pull request \u003ca\nhref\u003d\"https://redirect.github.com/mermaid-js/mermaid/issues/7738\"\u003e#7738\u003c/a\u003e\nfrom mermaid-js/changeset-release/master\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/mermaid-js/mermaid/commit/abfb563e1dcbd46d617f44a6361bd6d926dc6289\"\u003e\u003ccode\u003eabfb563\u003c/code\u003e\u003c/a\u003e\nVersion Packages\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/mermaid-js/mermaid/commit/60b289f428d0a0832ad95ed4e1fb326344e23532\"\u003e\u003ccode\u003e60b289f\u003c/code\u003e\u003c/a\u003e\nRelease Candidate 11.15.0 (\u003ca\nhref\u003d\"https://redirect.github.com/mermaid-js/mermaid/issues/7737\"\u003e#7737\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/mermaid-js/mermaid/commit/d37c0db39ca2405b4473361063df2c47109dc2c9\"\u003e\u003ccode\u003ed37c0db\u003c/code\u003e\u003c/a\u003e\nMerge pull request \u003ca\nhref\u003d\"https://redirect.github.com/mermaid-js/mermaid/issues/7730\"\u003e#7730\u003c/a\u003e\nfrom aloisklink/fix/fix-edgeLabelRightLeft-changes\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/mermaid-js/mermaid/commit/5ab5a2895fa8b7e90de85b43a4b99aa50b39b0f1\"\u003e\u003ccode\u003e5ab5a28\u003c/code\u003e\u003c/a\u003e\ndocs: improve nested namespace changeset\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/mermaid-js/mermaid/commit/18f8b4c5bf67aface3485272b48042f2fdd6fad2\"\u003e\u003ccode\u003e18f8b4c\u003c/code\u003e\u003c/a\u003e\nfix: revert endEdgeLabelLeft/endEdgeLabelRight change\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/mermaid-js/mermaid/commit/504b2eb73d4d827baa817efd47ab6f44ae769b5a\"\u003e\u003ccode\u003e504b2eb\u003c/code\u003e\u003c/a\u003e\nMerge pull request \u003ca\nhref\u003d\"https://redirect.github.com/mermaid-js/mermaid/issues/7726\"\u003e#7726\u003c/a\u003e\nfrom aloisklink/fix/correct-unnecessary-html-escapes...\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/mermaid-js/mermaid/commit/1502f32f3c5fb944925b0c527fbbde3c4f041824\"\u003e\u003ccode\u003e1502f32\u003c/code\u003e\u003c/a\u003e\nfix(wardley): fix unnecessary sanitization of text\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca\nhref\u003d\"https://github.com/mermaid-js/mermaid/compare/mermaid@11.12.1...mermaid@11.15.0\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eMaintainer changes\u003c/summary\u003e\n\u003cp\u003eThis version was pushed to npm by \u003ca\nhref\u003d\"https://www.npmjs.com/~GitHub%20Actions\"\u003eGitHub Actions\u003c/a\u003e, a new\nreleaser for mermaid since your current version.\u003c/p\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `protobufjs` from 7.5.5 to 7.5.8\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/protobufjs/protobuf.js/releases\"\u003eprotobufjs\u0027s\nreleases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eprotobufjs: v7.5.8\u003c/h2\u003e\n\u003ch2\u003e\u003ca\nhref\u003d\"https://github.com/protobufjs/protobuf.js/compare/protobufjs-v7.5.7...protobufjs-v7.5.8\"\u003e7.5.8\u003c/a\u003e\n(2026-05-12)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBackport parser hardening to 7.x (\u003ca\nhref\u003d\"https://redirect.github.com/protobufjs/protobuf.js/issues/2245\"\u003e#2245\u003c/a\u003e)\n(\u003ca\nhref\u003d\"https://github.com/protobufjs/protobuf.js/commit/54b593ffd960f7fe4b0c448a12542c3de0a0cf26\"\u003e54b593f\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eprotobufjs: v7.5.7\u003c/h2\u003e\n\u003ch2\u003e\u003ca\nhref\u003d\"https://github.com/protobufjs/protobuf.js/compare/protobufjs-v7.5.6...protobufjs-v7.5.7\"\u003e7.5.7\u003c/a\u003e\n(2026-05-09)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRestore first-match namespace lookup (\u003ca\nhref\u003d\"https://redirect.github.com/protobufjs/protobuf.js/issues/2236\"\u003e#2236\u003c/a\u003e)\n(\u003ca\nhref\u003d\"https://github.com/protobufjs/protobuf.js/commit/cc7d59559d4e8c533a35218310c67f4a5dda54f5\"\u003ecc7d595\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eprotobufjs: v7.5.6\u003c/h2\u003e\n\u003ch2\u003e\u003ca\nhref\u003d\"https://github.com/protobufjs/protobuf.js/compare/protobufjs-v7.5.5...protobufjs-v7.5.6\"\u003e7.5.6\u003c/a\u003e\n(2026-04-27)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBackport input hardening and CLI fixes to 7.x (\u003ca\nhref\u003d\"https://redirect.github.com/protobufjs/protobuf.js/issues/2173\"\u003e#2173\u003c/a\u003e)\n(\u003ca\nhref\u003d\"https://github.com/protobufjs/protobuf.js/commit/75392ea1b78bdc4faba027b5db44ad7c50e9c454\"\u003e75392ea\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/protobufjs/protobuf.js/blob/protobufjs-v7.5.8/CHANGELOG.md\"\u003eprotobufjs\u0027s\nchangelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca\nhref\u003d\"https://github.com/protobufjs/protobuf.js/compare/protobufjs-v7.5.7...protobufjs-v7.5.8\"\u003e7.5.8\u003c/a\u003e\n(2026-05-12)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBackport parser hardening to 7.x (\u003ca\nhref\u003d\"https://redirect.github.com/protobufjs/protobuf.js/issues/2245\"\u003e#2245\u003c/a\u003e)\n(\u003ca\nhref\u003d\"https://github.com/protobufjs/protobuf.js/commit/54b593ffd960f7fe4b0c448a12542c3de0a0cf26\"\u003e54b593f\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca\nhref\u003d\"https://github.com/protobufjs/protobuf.js/compare/protobufjs-v7.5.6...protobufjs-v7.5.7\"\u003e7.5.7\u003c/a\u003e\n(2026-05-09)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRestore first-match namespace lookup (\u003ca\nhref\u003d\"https://redirect.github.com/protobufjs/protobuf.js/issues/2236\"\u003e#2236\u003c/a\u003e)\n(\u003ca\nhref\u003d\"https://github.com/protobufjs/protobuf.js/commit/cc7d59559d4e8c533a35218310c67f4a5dda54f5\"\u003ecc7d595\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca\nhref\u003d\"https://github.com/protobufjs/protobuf.js/compare/protobufjs-v7.5.5...protobufjs-v7.5.6\"\u003e7.5.6\u003c/a\u003e\n(2026-04-27)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBackport input hardening and CLI fixes to 7.x (\u003ca\nhref\u003d\"https://redirect.github.com/protobufjs/protobuf.js/issues/2173\"\u003e#2173\u003c/a\u003e)\n(\u003ca\nhref\u003d\"https://github.com/protobufjs/protobuf.js/commit/75392ea1b78bdc4faba027b5db44ad7c50e9c454\"\u003e75392ea\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca\nhref\u003d\"https://github.com/protobufjs/protobuf.js/compare/protobufjs-v7.5.3...protobufjs-v7.5.4\"\u003e7.5.4\u003c/a\u003e\n(2025-08-15)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003einvalid syntax in descriptor.proto (\u003ca\nhref\u003d\"https://redirect.github.com/protobufjs/protobuf.js/issues/2092\"\u003e#2092\u003c/a\u003e)\n(\u003ca\nhref\u003d\"https://github.com/protobufjs/protobuf.js/commit/5a3769a465fead089a533ad55c21d069299df760\"\u003e5a3769a\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca\nhref\u003d\"https://github.com/protobufjs/protobuf.js/compare/protobufjs-v7.5.2...protobufjs-v7.5.3\"\u003e7.5.3\u003c/a\u003e\n(2025-05-28)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edescriptor extensions handling post-editions (\u003ca\nhref\u003d\"https://redirect.github.com/protobufjs/protobuf.js/issues/2075\"\u003e#2075\u003c/a\u003e)\n(\u003ca\nhref\u003d\"https://github.com/protobufjs/protobuf.js/commit/6e255d4ad6982cc857f26e1731c2cedcf5796f68\"\u003e6e255d4\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca\nhref\u003d\"https://github.com/protobufjs/protobuf.js/compare/protobufjs-v7.5.1...protobufjs-v7.5.2\"\u003e7.5.2\u003c/a\u003e\n(2025-05-14)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eensure that types are always resolved (\u003ca\nhref\u003d\"https://redirect.github.com/protobufjs/protobuf.js/issues/2068\"\u003e#2068\u003c/a\u003e)\n(\u003ca\nhref\u003d\"https://github.com/protobufjs/protobuf.js/commit/4b51cb2b8450b77f9f5de1c562e7fae93b19d040\"\u003e4b51cb2\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca\nhref\u003d\"https://github.com/protobufjs/protobuf.js/compare/protobufjs-v7.5.0...protobufjs-v7.5.1\"\u003e7.5.1\u003c/a\u003e\n(2025-05-08)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eoptimize regressions from editions implementations (\u003ca\nhref\u003d\"https://redirect.github.com/protobufjs/protobuf.js/issues/2066\"\u003e#2066\u003c/a\u003e)\n(\u003ca\nhref\u003d\"https://github.com/protobufjs/protobuf.js/commit/6406d4c18afae309fc7b5f4a24d9674d85da180b\"\u003e6406d4c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ereserved field inside group blocks fail parsing (\u003ca\nhref\u003d\"https://redirect.github.com/protobufjs/protobuf.js/issues/2058\"\u003e#2058\u003c/a\u003e)\n(\u003ca\nhref\u003d\"https://github.com/protobufjs/protobuf.js/commit/56782bff0c4b5132806eb1a6bc4d08f930c4aaad\"\u003e56782bf\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/protobufjs/protobuf.js/commit/d7035f9b7f06210ea343cab1f2f1cc18ee5cc1d6\"\u003e\u003ccode\u003ed7035f9\u003c/code\u003e\u003c/a\u003e\nchore: release protobufjs-v7.x (\u003ca\nhref\u003d\"https://redirect.github.com/protobufjs/protobuf.js/issues/2248\"\u003e#2248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/protobufjs/protobuf.js/commit/54b593ffd960f7fe4b0c448a12542c3de0a0cf26\"\u003e\u003ccode\u003e54b593f\u003c/code\u003e\u003c/a\u003e\nfix: Backport parser hardening to 7.x (\u003ca\nhref\u003d\"https://redirect.github.com/protobufjs/protobuf.js/issues/2245\"\u003e#2245\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/protobufjs/protobuf.js/commit/e88fcea1635f79c414e8a070e164d38ea99e104a\"\u003e\u003ccode\u003ee88fcea\u003c/code\u003e\u003c/a\u003e\nchore: release protobufjs-v7.x (\u003ca\nhref\u003d\"https://redirect.github.com/protobufjs/protobuf.js/issues/2239\"\u003e#2239\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/protobufjs/protobuf.js/commit/cc7d59559d4e8c533a35218310c67f4a5dda54f5\"\u003e\u003ccode\u003ecc7d595\u003c/code\u003e\u003c/a\u003e\nfix: Restore first-match namespace lookup (\u003ca\nhref\u003d\"https://redirect.github.com/protobufjs/protobuf.js/issues/2236\"\u003e#2236\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/protobufjs/protobuf.js/commit/3abc9b54d67a7102785c6dfd8bf6610f545d445b\"\u003e\u003ccode\u003e3abc9b5\u003c/code\u003e\u003c/a\u003e\nchore: release protobufjs-v7.x (\u003ca\nhref\u003d\"https://redirect.github.com/protobufjs/protobuf.js/issues/2190\"\u003e#2190\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/protobufjs/protobuf.js/commit/a0bf2dfdd8a75aa62ce5a1ff47a52b9b8f1ea793\"\u003e\u003ccode\u003ea0bf2df\u003c/code\u003e\u003c/a\u003e\nfix: Update CLI peer dependency (7.x) (\u003ca\nhref\u003d\"https://redirect.github.com/protobufjs/protobuf.js/issues/2189\"\u003e#2189\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/protobufjs/protobuf.js/commit/2189e5beeca6a70e4c104dfdb9fb8200bc5f81fe\"\u003e\u003ccode\u003e2189e5b\u003c/code\u003e\u003c/a\u003e\nchore: release protobufjs-v7.x (\u003ca\nhref\u003d\"https://redirect.github.com/protobufjs/protobuf.js/issues/2174\"\u003e#2174\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/protobufjs/protobuf.js/commit/75392ea1b78bdc4faba027b5db44ad7c50e9c454\"\u003e\u003ccode\u003e75392ea\u003c/code\u003e\u003c/a\u003e\nfix: Backport input hardening and CLI fixes to 7.x (\u003ca\nhref\u003d\"https://redirect.github.com/protobufjs/protobuf.js/issues/2173\"\u003e#2173\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/protobufjs/protobuf.js/commit/8af8d7c0e9800879625f7d0d4a7fb51beb4410cd\"\u003e\u003ccode\u003e8af8d7c\u003c/code\u003e\u003c/a\u003e\nchore(ci): Fix 7.x release please configuration (\u003ca\nhref\u003d\"https://redirect.github.com/protobufjs/protobuf.js/issues/2169\"\u003e#2169\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/protobufjs/protobuf.js/commit/e92ca42244ad67203b48d836290062dae037ead6\"\u003e\u003ccode\u003ee92ca42\u003c/code\u003e\u003c/a\u003e\nchore(ci): Enable release-please for 7.x (\u003ca\nhref\u003d\"https://redirect.github.com/protobufjs/protobuf.js/issues/2166\"\u003e#2166\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca\nhref\u003d\"https://github.com/protobufjs/protobuf.js/compare/protobufjs-v7.5.5...protobufjs-v7.5.8\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eMaintainer changes\u003c/summary\u003e\n\u003cp\u003eThis version was pushed to npm by \u003ca\nhref\u003d\"https://www.npmjs.com/~GitHub%20Actions\"\u003eGitHub Actions\u003c/a\u003e, a new\nreleaser for protobufjs since your current version.\u003c/p\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `lodash-es` from 4.17.21 to 4.18.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/lodash/lodash/releases\"\u003elodash-es\u0027s\nreleases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.18.1\u003c/h2\u003e\n\u003ch2\u003eBugs\u003c/h2\u003e\n\u003cp\u003eFixes a \u003ccode\u003eReferenceError\u003c/code\u003e issue in \u003ccode\u003elodash\u003c/code\u003e\n\u003ccode\u003elodash-es\u003c/code\u003e \u003ccode\u003elodash-amd\u003c/code\u003e and\n\u003ccode\u003elodash.template\u003c/code\u003e when using the \u003ccode\u003etemplate\u003c/code\u003e and\n\u003ccode\u003efromPairs\u003c/code\u003e functions from the modular builds. See \u003ca\nhref\u003d\"https://redirect.github.com/lodash/lodash/issues/6167#issuecomment-4165269769\"\u003elodash/lodash#6167\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThese defects were related to how lodash distributions are built from\nthe main branch using \u003ca\nhref\u003d\"https://github.com/lodash-archive/lodash-cli\"\u003ehttps://github.com/lodash-archive/lodash-cli\u003c/a\u003e.\nWhen internal dependencies change inside lodash functions, equivalent\nupdates need to be made to a mapping in the lodash-cli. (hey, it was\nahead of its time once upon a time!). We know this, but we missed it in\nthe last release. It\u0027s the kind of thing that passes in CI, but fails bc\nthe build is not the same thing you tested.\u003c/p\u003e\n\u003cp\u003eThere is no diff on main for this, but you can see the diffs for each\nof the npm packages on their respective branches:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003elodash\u003c/code\u003e: \u003ca\nhref\u003d\"https://github.com/lodash/lodash/compare/4.18.0-npm...4.18.1-npm\"\u003ehttps://github.com/lodash/lodash/compare/4.18.0-npm...4.18.1-npm\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003elodash-es\u003c/code\u003e: \u003ca\nhref\u003d\"https://github.com/lodash/lodash/compare/4.18.0-es...4.18.1-es\"\u003ehttps://github.com/lodash/lodash/compare/4.18.0-es...4.18.1-es\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003elodash-amd\u003c/code\u003e: \u003ca\nhref\u003d\"https://github.com/lodash/lodash/compare/4.18.0-amd...4.18.1-amd\"\u003ehttps://github.com/lodash/lodash/compare/4.18.0-amd...4.18.1-amd\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003elodash.template\u003c/code\u003e\u003ca\nhref\u003d\"https://github.com/lodash/lodash/compare/4.18.0-npm-packages...4.18.1-npm-packages\"\u003ehttps://github.com/lodash/lodash/compare/4.18.0-npm-packages...4.18.1-npm-packages\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.18.0\u003c/h2\u003e\n\u003ch2\u003ev4.18.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca\nhref\u003d\"https://github.com/lodash/lodash/compare/4.17.23...4.18.0\"\u003ehttps://github.com/lodash/lodash/compare/4.17.23...4.18.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eSecurity\u003c/h3\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ccode\u003e_.unset\u003c/code\u003e / \u003ccode\u003e_.omit\u003c/code\u003e\u003c/strong\u003e: Fixed\nprototype pollution via \u003ccode\u003econstructor\u003c/code\u003e/\u003ccode\u003eprototype\u003c/code\u003e\npath traversal (\u003ca\nhref\u003d\"https://github.com/lodash/lodash/security/advisories/GHSA-f23m-r3pf-42rh\"\u003eGHSA-f23m-r3pf-42rh\u003c/a\u003e,\n\u003ca\nhref\u003d\"https://github.com/lodash/lodash/commit/fe8d32eda854377349a4f922ab7655c8e5df9a0b\"\u003efe8d32e\u003c/a\u003e).\nPreviously, array-wrapped path segments and primitive roots could bypass\nthe existing guards, allowing deletion of properties from built-in\nprototypes. Now \u003ccode\u003econstructor\u003c/code\u003e and \u003ccode\u003eprototype\u003c/code\u003e are\nblocked unconditionally as non-terminal path keys, matching\n\u003ccode\u003ebaseSet\u003c/code\u003e. Calls that previously returned \u003ccode\u003etrue\u003c/code\u003e\nand deleted the property now return \u003ccode\u003efalse\u003c/code\u003e and leave the\ntarget untouched.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ccode\u003e_.template\u003c/code\u003e\u003c/strong\u003e: Fixed code injection via\n\u003ccode\u003eimports\u003c/code\u003e keys (\u003ca\nhref\u003d\"https://github.com/lodash/lodash/security/advisories/GHSA-r5fr-rjxr-66jc\"\u003eGHSA-r5fr-rjxr-66jc\u003c/a\u003e,\nCVE-2026-4800, \u003ca\nhref\u003d\"https://github.com/lodash/lodash/commit/879aaa93132d78c2f8d20c60279da9f8b21576d6\"\u003e879aaa9\u003c/a\u003e).\nFixes an incomplete patch for CVE-2021-23337. The \u003ccode\u003evariable\u003c/code\u003e\noption was validated against \u003ccode\u003ereForbiddenIdentifierChars\u003c/code\u003e but\n\u003ccode\u003eimportsKeys\u003c/code\u003e was left unguarded, allowing code injection via\nthe same \u003ccode\u003eFunction()\u003c/code\u003e constructor sink. \u003ccode\u003eimports\u003c/code\u003e\nkeys containing forbidden identifier characters now throw\n\u003ccode\u003e\u0026quot;Invalid imports option passed into\n_.template\u0026quot;\u003c/code\u003e.\u003c/p\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd security notice for \u003ccode\u003e_.template\u003c/code\u003e in threat model and\nAPI docs (\u003ca\nhref\u003d\"https://redirect.github.com/lodash/lodash/pull/6099\"\u003e#6099\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDocument \u003ccode\u003elower \u0026gt; upper\u003c/code\u003e behavior in\n\u003ccode\u003e_.random\u003c/code\u003e (\u003ca\nhref\u003d\"https://redirect.github.com/lodash/lodash/pull/6115\"\u003e#6115\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix quotes in \u003ccode\u003e_.compact\u003c/code\u003e jsdoc (\u003ca\nhref\u003d\"https://redirect.github.com/lodash/lodash/pull/6090\"\u003e#6090\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003ccode\u003elodash.*\u003c/code\u003e modular packages\u003c/h3\u003e\n\u003cp\u003e\u003ca\nhref\u003d\"https://redirect.github.com/lodash/lodash/pull/6157\"\u003eDiff\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eWe have also regenerated and published a select number of the\n\u003ccode\u003elodash.*\u003c/code\u003e modular packages.\u003c/p\u003e\n\u003cp\u003eThese modular packages had fallen out of sync significantly from the\nminor/patch updates to lodash. Specifically, we have brought the\nfollowing packages up to parity w/ the latest lodash release because\nthey have had CVEs on them in the past:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://www.npmjs.com/package/lodash.orderby\"\u003elodash.orderby\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://www.npmjs.com/package/lodash.tonumber\"\u003elodash.tonumber\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://www.npmjs.com/package/lodash.trim\"\u003elodash.trim\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://www.npmjs.com/package/lodash.trimend\"\u003elodash.trimend\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://www.npmjs.com/package/lodash.sortedindexby\"\u003elodash.sortedindexby\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://www.npmjs.com/package/lodash.zipobjectdeep\"\u003elodash.zipobjectdeep\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://www.npmjs.com/package/lodash.unset\"\u003elodash.unset\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://www.npmjs.com/package/lodash.omit\"\u003elodash.omit\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://www.npmjs.com/package/lodash.template\"\u003elodash.template\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/lodash/lodash/commit/cb0b9b9212521c08e3eafe7c8cb0af1b42b6649e\"\u003e\u003ccode\u003ecb0b9b9\u003c/code\u003e\u003c/a\u003e\nrelease(patch): bump main to 4.18.1 (\u003ca\nhref\u003d\"https://redirect.github.com/lodash/lodash/issues/6177\"\u003e#6177\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/lodash/lodash/commit/75535f57883b7225adb96de1cfc1cd4169cfcb51\"\u003e\u003ccode\u003e75535f5\u003c/code\u003e\u003c/a\u003e\nchore: prune stale advisory refs (\u003ca\nhref\u003d\"https://redirect.github.com/lodash/lodash/issues/6170\"\u003e#6170\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/lodash/lodash/commit/62e91bc6a39c98d85b9ada8c44d40593deaf82a4\"\u003e\u003ccode\u003e62e91bc\u003c/code\u003e\u003c/a\u003e\ndocs: remove n_ Node.js \u0026lt; 6 REPL note from README (\u003ca\nhref\u003d\"https://redirect.github.com/lodash/lodash/issues/6165\"\u003e#6165\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/lodash/lodash/commit/59be2de61f8aa9461c7856533b51d31b7d8babc4\"\u003e\u003ccode\u003e59be2de\u003c/code\u003e\u003c/a\u003e\nrelease(minor): bump to 4.18.0 (\u003ca\nhref\u003d\"https://redirect.github.com/lodash/lodash/issues/6161\"\u003e#6161\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/lodash/lodash/commit/af634573030f979194871da7c68f79420992f53d\"\u003e\u003ccode\u003eaf63457\u003c/code\u003e\u003c/a\u003e\nfix: broken tests for _.template 879aaa9\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/lodash/lodash/commit/1073a7693e1727e0cf3641e5f71f75ddcf8de7c0\"\u003e\u003ccode\u003e1073a76\u003c/code\u003e\u003c/a\u003e\nfix: linting issues\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/lodash/lodash/commit/879aaa93132d78c2f8d20c60279da9f8b21576d6\"\u003e\u003ccode\u003e879aaa9\u003c/code\u003e\u003c/a\u003e\nfix: validate imports keys in _.template\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/lodash/lodash/commit/fe8d32eda854377349a4f922ab7655c8e5df9a0b\"\u003e\u003ccode\u003efe8d32e\u003c/code\u003e\u003c/a\u003e\nfix: block prototype pollution in baseUnset via constructor/prototype\ntraversal\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/lodash/lodash/commit/18ba0a32f42fd02117f096b032f89c984173462d\"\u003e\u003ccode\u003e18ba0a3\u003c/code\u003e\u003c/a\u003e\nrefactor(fromPairs): use baseAssignValue for consistent assignment (\u003ca\nhref\u003d\"https://redirect.github.com/lodash/lodash/issues/6153\"\u003e#6153\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/lodash/lodash/commit/b8190803d48d60b8c80ad45d39125f32fa618cb2\"\u003e\u003ccode\u003eb819080\u003c/code\u003e\u003c/a\u003e\nci: add dist sync validation workflow (\u003ca\nhref\u003d\"https://redirect.github.com/lodash/lodash/issues/6137\"\u003e#6137\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca\nhref\u003d\"https://github.com/lodash/lodash/compare/4.17.21...4.18.1\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `uuid` from 11.1.0 to 14.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/uuidjs/uuid/releases\"\u003euuid\u0027s\nreleases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev14.0.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca\nhref\u003d\"https://github.com/uuidjs/uuid/compare/v13.0.0...v14.0.0\"\u003e14.0.0\u003c/a\u003e\n(2026-04-19)\u003c/h2\u003e\n\u003ch3\u003e⚠ BREAKING CHANGES\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eexpect \u003ccode\u003ecrypto\u003c/code\u003e to be global everywhere (requires\nnode@20+) (\u003ca\nhref\u003d\"https://redirect.github.com/uuidjs/uuid/issues/935\"\u003e#935\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003edrop node@18 support (\u003ca\nhref\u003d\"https://redirect.github.com/uuidjs/uuid/issues/934\"\u003e#934\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edrop node@18 support (\u003ca\nhref\u003d\"https://redirect.github.com/uuidjs/uuid/issues/934\"\u003e#934\u003c/a\u003e) (\u003ca\nhref\u003d\"https://github.com/uuidjs/uuid/commit/dc4ddb87272ed2843faccd130bcc41d492688bd3\"\u003edc4ddb8\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eexpect \u003ccode\u003ecrypto\u003c/code\u003e to be global everywhere (requires\nnode@20+) (\u003ca\nhref\u003d\"https://redirect.github.com/uuidjs/uuid/issues/935\"\u003e#935\u003c/a\u003e) (\u003ca\nhref\u003d\"https://github.com/uuidjs/uuid/commit/f2c235f93059325fa43e1106e624b5291bb523c4\"\u003ef2c235f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse GITHUB_TOKEN for release-please and enable npm provenance (\u003ca\nhref\u003d\"https://redirect.github.com/uuidjs/uuid/issues/925\"\u003e#925\u003c/a\u003e) (\u003ca\nhref\u003d\"https://github.com/uuidjs/uuid/commit/ffa31383e8e4e1f0b4e22e504561272041b8738c\"\u003effa3138\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev13.0.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca\nhref\u003d\"https://github.com/uuidjs/uuid/compare/v13.0.1...v13.0.2\"\u003e13.0.2\u003c/a\u003e\n(2026-05-04)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ererelease to fix provenance. (\u003ca\nhref\u003d\"https://github.com/uuidjs/uuid/commit/49ccb35f78c0c4ce1409dd2f1d89f83caadba10b\"\u003e49ccb35\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev13.0.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca\nhref\u003d\"https://github.com/uuidjs/uuid/compare/v13.0.0...v13.0.1\"\u003e13.0.1\u003c/a\u003e\n(2026-04-27)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ebackport fix for GHSA-w5hq-g745-h8pq (\u003ca\nhref\u003d\"https://github.com/uuidjs/uuid/commit/9d27ddf7046ce496ef39569ff84d948eeff9cb2a\"\u003e9d27ddf\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev13.0.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca\nhref\u003d\"https://github.com/uuidjs/uuid/compare/v12.0.0...v13.0.0\"\u003e13.0.0\u003c/a\u003e\n(2025-09-08)\u003c/h2\u003e\n\u003ch3\u003e⚠ BREAKING CHANGES\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emake browser exports the default (\u003ca\nhref\u003d\"https://redirect.github.com/uuidjs/uuid/issues/901\"\u003e#901\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emake browser exports the default (\u003ca\nhref\u003d\"https://redirect.github.com/uuidjs/uuid/issues/901\"\u003e#901\u003c/a\u003e) (\u003ca\nhref\u003d\"https://github.com/uuidjs/uuid/commit/bce9d72a3ae5b9a3dcd8eb21ef6d1820288a427a\"\u003ebce9d72\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev12.0.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca\nhref\u003d\"https://github.com/uuidjs/uuid/compare/v12.0.0...v12.0.1\"\u003e12.0.1\u003c/a\u003e\n(2026-04-29)\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/uuidjs/uuid/blob/main/CHANGELOG.md\"\u003euuid\u0027s\nchangelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca\nhref\u003d\"https://github.com/uuidjs/uuid/compare/v13.0.0...v14.0.0\"\u003e14.0.0\u003c/a\u003e\n(2026-04-19)\u003c/h2\u003e\n\u003ch3\u003eSecurity\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixes \u003ca\nhref\u003d\"https://github.com/uuidjs/uuid/security/advisories/GHSA-w5hq-g745-h8pq\"\u003eGHSA-w5hq-g745-h8pq\u003c/a\u003e:\n\u003ccode\u003ev3()\u003c/code\u003e, \u003ccode\u003ev5()\u003c/code\u003e, and \u003ccode\u003ev6()\u003c/code\u003e did not\nvalidate that writes would remain within the bounds of a caller-supplied\nbuffer, allowing out-of-bounds writes when an invalid\n\u003ccode\u003eoffset\u003c/code\u003e was provided. A \u003ccode\u003eRangeError\u003c/code\u003e is now\nthrown if \u003ccode\u003eoffset \u0026lt; 0\u003c/code\u003e or \u003ccode\u003eoffset + 16 \u0026gt;\nbuf.length\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e⚠ BREAKING CHANGES\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003ecrypto\u003c/code\u003e is now expected to be globally defined (requires\nnode@20+) (\u003ca\nhref\u003d\"https://redirect.github.com/uuidjs/uuid/issues/935\"\u003e#935\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003edrop node@18 support (\u003ca\nhref\u003d\"https://redirect.github.com/uuidjs/uuid/issues/934\"\u003e#934\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupgrade minimum supported TypeScript version to 5.4.3, in keeping\nwith the project\u0027s policy of supporting TypeScript versions released\nwithin the last two years\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca\nhref\u003d\"https://github.com/uuidjs/uuid/compare/v12.0.0...v13.0.0\"\u003e13.0.0\u003c/a\u003e\n(2025-09-08)\u003c/h2\u003e\n\u003ch3\u003e⚠ BREAKING CHANGES\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emake browser exports the default (\u003ca\nhref\u003d\"https://redirect.github.com/uuidjs/uuid/issues/901\"\u003e#901\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emake browser exports the default (\u003ca\nhref\u003d\"https://redirect.github.com/uuidjs/uuid/issues/901\"\u003e#901\u003c/a\u003e) (\u003ca\nhref\u003d\"https://github.com/uuidjs/uuid/commit/bce9d72a3ae5b9a3dcd8eb21ef6d1820288a427a\"\u003ebce9d72\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca\nhref\u003d\"https://github.com/uuidjs/uuid/compare/v11.1.0...v12.0.0\"\u003e12.0.0\u003c/a\u003e\n(2025-09-05)\u003c/h2\u003e\n\u003ch3\u003e⚠ BREAKING CHANGES\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eupdate to typescript@5.2 (\u003ca\nhref\u003d\"https://redirect.github.com/uuidjs/uuid/issues/887\"\u003e#887\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eremove CommonJS support (\u003ca\nhref\u003d\"https://redirect.github.com/uuidjs/uuid/issues/886\"\u003e#886\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003edrop node@16 support (\u003ca\nhref\u003d\"https://redirect.github.com/uuidjs/uuid/issues/883\"\u003e#883\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd node@24 to ci matrix (\u003ca\nhref\u003d\"https://redirect.github.com/uuidjs/uuid/issues/879\"\u003e#879\u003c/a\u003e) (\u003ca\nhref\u003d\"https://github.com/uuidjs/uuid/commit/42b6178aa21a593257f0a72abacd220f0b7b8a92\"\u003e42b6178\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003edrop node@16 support (\u003ca\nhref\u003d\"https://redirect.github.com/uuidjs/uuid/issues/883\"\u003e#883\u003c/a\u003e) (\u003ca\nhref\u003d\"https://github.com/uuidjs/uuid/commit/0f38cf10366ab074f9328ae2021eea04d5f2e530\"\u003e0f38cf1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eremove CommonJS support (\u003ca\nhref\u003d\"https://redirect.github.com/uuidjs/uuid/issues/886\"\u003e#886\u003c/a\u003e) (\u003ca\nhref\u003d\"https://github.com/uuidjs/uuid/commit/ae786e27265f50bcf7cead196c29f1869297c42f\"\u003eae786e2\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate to typescript@5.2 (\u003ca\nhref\u003d\"https://redirect.github.com/uuidjs/uuid/issues/887\"\u003e#887\u003c/a\u003e) (\u003ca\nhref\u003d\"https://github.com/uuidjs/uuid/commit/c7ee40598ed78584d81ab78dffded9fe5ff20b01\"\u003ec7ee405\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eimprove v4() performance (\u003ca\nhref\u003d\"https://redirect.github.com/uuidjs/uuid/issues/894\"\u003e#894\u003c/a\u003e) (\u003ca\nhref\u003d\"https://github.com/uuidjs/uuid/commit/5fd974c12718c8848035650b69b8948f12ace197\"\u003e5fd974c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003erestore node: prefix (\u003ca\nhref\u003d\"https://redirect.github.com/uuidjs/uuid/issues/889\"\u003e#889\u003c/a\u003e) (\u003ca\nhref\u003d\"https://github.com/uuidjs/uuid/commit/e1f42a354593093ba0479f0b4047dae82d28c507\"\u003ee1f42a3\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/uuidjs/uuid/commit/7c1ea087a8149b57380fc8bb7f68c3a215cb6e4b\"\u003e\u003ccode\u003e7c1ea08\u003c/code\u003e\u003c/a\u003e\nchore(main): release 14.0.0 (\u003ca\nhref\u003d\"https://redirect.github.com/uuidjs/uuid/issues/926\"\u003e#926\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/uuidjs/uuid/commit/3d2c5b0342f0fcb52a5ac681c3d47c13e7444b34\"\u003e\u003ccode\u003e3d2c5b0\u003c/code\u003e\u003c/a\u003e\nMerge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/uuidjs/uuid/commit/f2c235f93059325fa43e1106e624b5291bb523c4\"\u003e\u003ccode\u003ef2c235f\u003c/code\u003e\u003c/a\u003e\nfix!: expect \u003ccode\u003ecrypto\u003c/code\u003e to be global everywhere (requires\nnode@20+) (\u003ca\nhref\u003d\"https://redirect.github.com/uuidjs/uuid/issues/935\"\u003e#935\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/uuidjs/uuid/commit/529ef0899f5dd503d2ee90d690585d63d78bc212\"\u003e\u003ccode\u003e529ef08\u003c/code\u003e\u003c/a\u003e\nchore: upgrade TypeScript and fixup types (\u003ca\nhref\u003d\"https://redirect.github.com/uuidjs/uuid/issues/927\"\u003e#927\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/uuidjs/uuid/commit/086fd7976f11433edf9ac80be876b3ad243fe087\"\u003e\u003ccode\u003e086fd79\u003c/code\u003e\u003c/a\u003e\nchore: update dependencies (\u003ca\nhref\u003d\"https://redirect.github.com/uuidjs/uuid/issues/933\"\u003e#933\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/uuidjs/uuid/commit/dc4ddb87272ed2843faccd130bcc41d492688bd3\"\u003e\u003ccode\u003edc4ddb8\u003c/code\u003e\u003c/a\u003e\nfeat!: drop node@18 support (\u003ca\nhref\u003d\"https://redirect.github.com/uuidjs/uuid/issues/934\"\u003e#934\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/uuidjs/uuid/commit/0f1f9c9c9cedbae5a1d363d5406c5dfbabe81404\"\u003e\u003ccode\u003e0f1f9c9\u003c/code\u003e\u003c/a\u003e\nchore: switch to Biome for parsing and linting (\u003ca\nhref\u003d\"https://redirect.github.com/uuidjs/uuid/issues/932\"\u003e#932\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/uuidjs/uuid/commit/e2879e64bf125add903c1eff6e0860542c605013\"\u003e\u003ccode\u003ee2879e6\u003c/code\u003e\u003c/a\u003e\nchore: use maintained version of npm-run-all (\u003ca\nhref\u003d\"https://redirect.github.com/uuidjs/uuid/issues/930\"\u003e#930\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/uuidjs/uuid/commit/ffa31383e8e4e1f0b4e22e504561272041b8738c\"\u003e\u003ccode\u003effa3138\u003c/code\u003e\u003c/a\u003e\nfix: Use GITHUB_TOKEN for release-please and enable npm provenance (\u003ca\nhref\u003d\"https://redirect.github.com/uuidjs/uuid/issues/925\"\u003e#925\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/uuidjs/uuid/commit/0423d49df2dc8efc300c804731d25f4d7e0fccc4\"\u003e\u003ccode\u003e0423d49\u003c/code\u003e\u003c/a\u003e\ndocs: remove obsolete v1 option notes (\u003ca\nhref\u003d\"https://redirect.github.com/uuidjs/uuid/issues/915\"\u003e#915\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca\nhref\u003d\"https://github.com/uuidjs/uuid/compare/v11.1.0...v14.0.0\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eMaintainer changes\u003c/summary\u003e\n\u003cp\u003eThis version was pushed to npm by \u003ca\nhref\u003d\"https://www.npmjs.com/~GitHub%20Actions\"\u003eGitHub Actions\u003c/a\u003e, a new\nreleaser for uuid since your current version.\u003c/p\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don\u0027t\nalter it yourself. You can also trigger a rebase manually by commenting\n`@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits\nthat have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all\nof the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this\ngroup update PR and stop Dependabot creating any more for the specific\ndependency\u0027s major version (unless you unignore this specific\ndependency\u0027s major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this\ngroup update PR and stop Dependabot creating any more for the specific\ndependency\u0027s minor version (unless you unignore this specific\ndependency\u0027s minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR\nand stop Dependabot creating any more for the specific dependency\n(unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore\nconditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will\nremove the ignore condition of the specified dependency and ignore\nconditions\nYou can disable automated security fix PRs for this repo from the\n[Security Alerts\npage](https://github.com/google/perfetto/network/alerts).\n\n\u003c/details\u003e\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "59fc72def04b8751b9d820b35946449bdd9e0f90",
      "tree": "afe297980b8fad90e31d4eeb033ac593eb4ee21e",
      "parents": [
        "adc57d9ed3938ae5ccf982aee83a4b496b02f7c1"
      ],
      "author": {
        "name": "sashwinbalaji",
        "email": "sashwinbalaji@google.com",
        "time": "Mon Jun 08 11:53:04 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 08 11:53:04 2026 +0100"
      },
      "message": "perfetto: package perfetto.prebuilts in Android python_library (#6165)\n\n#6133 added an import-time dependency on the perfetto.prebuilts package\nin python/perfetto/trace_processor/platform.py.\n\nThe perfetto-trace-processor-python-srcs filegroup only globbed\ncommon/*.py and trace_processor/*.py, so perfetto/prebuilts/** was never\nincluded in the perfetto-trace-processor-python library. Downstream\nAndroid tests (e.g. metrics_v2_test) that import\nperfetto.trace_processor now fail at import time with:\n\n    ModuleNotFoundError: No module named \u0027perfetto.prebuilts\u0027\n\nAdd the prebuilts globs to the filegroup in Android.bp.extras (the\nsource of truth) and mirror the change in the generated Android.bp."
    },
    {
      "commit": "adc57d9ed3938ae5ccf982aee83a4b496b02f7c1",
      "tree": "d20cecf83dad8fbb1405093d4a1cc15249875768",
      "parents": [
        "0dbbb07345fcda7428eb16f3a23d1eff2d72542f"
      ],
      "author": {
        "name": "Steve Golton",
        "email": "stevegolton@google.com",
        "time": "Mon Jun 08 11:48:14 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 08 11:48:14 2026 +0100"
      },
      "message": "ui: chore: Bump deps to patch security issues (#6160)\n\nThis patch fixes the following security issues:\n1. markdown-it -\nhttps://github.com/google/perfetto/security/dependabot/312\n2. protobufjs -\nhttps://github.com/google/perfetto/security/dependabot/308\n\nNote: These are not a major concern for us as this code for the most\npart runs client side, but worth keeping on top of this issues.\n\n## List of packages updated\n\n| Package | Previous Version | New Version | Type |\n| :--- | :--- | :--- | :--- |\n| `typescript` | `5.5.2` | `5.9.3` | devDependencies |\n| `eslint` | `^9.6.0` | `^9.39.4` | devDependencies |\n| `@typescript-eslint/eslint-plugin` | `^7.14.1` | `^8.60.1` |\ndevDependencies |\n| `@typescript-eslint/parser` | `^7.14.1` | `^8.60.1` | devDependencies\n|\n| `protobufjs` | `^7.5.6` | `^7.6.2` | dependencies |\n| `protobufjs-cli` | `1.2.1` | `^1.3.2` | devDependencies |\n| `markdown-it` | `^13.0.0` | `^14.2.0` | dependencies |\n| `@types/markdown-it` | `^13.0.0` | `^14.1.2` | devDependencies |\n| `@types/node` | `^20.14.9` | `^20.19.41` | dependencies |\n| `@types/w3c-web-usb` | `^1.0.10` | `^1.0.14` | dependencies |\n\n## Updating markdown-it\n\nUpdating this package kicked off a cascade of issues.\n\n- markdown-it@14 requires a newer typescript version than what we\ncurrently are using (5.5.2). For the sake of completeness this patch\nbumps typescript to 5.9.3 which is the latest version within the 5 major\nrevision (moving to 6.X is another problem).\n- Typescript 5.7 introduced a breaking change in TypedArrays and friends\n(such as DataView), making these generic over the type of ArrayBuffer\nthey use - ArrayBuffer or SharedArrayBuffer. [TS Release\nNotes](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-5-7.html#typedarrays-are-now-generic-over-arraybufferlike).\nIIUC, this is to support ES2024 changes to the API of ArrayBuffer.\n- A lot of libraries have been very slow to update their types to be\nmore specific about what type of array they output, simply leaving it\nhas Uint8Array or similar, or to allow ArrayBufferLike as inputs.\n- This caused a cascade of type issues through the codebase which needed\nto be fixed. Mostly mechanical aside from one sticking point:\n- protobuf.Write.finish() returns a Uint8Array, the storage type is left\npurposely undefined. In reality it\u0027s always going to be an ArrayBuffer\ntype unless patched but the types have not been tweaked to address this.\n- This causes type issues as we try to write this into a Blob as a\nBlobPart which the types specify as having a requirement on ArrayBuffer\n(not shared). This is bogus, all environments would accept a\nSharedArrayBuffer anyway.\n- Tangentially related - a Uint8Array cannot be implicity cast to an\nArrayBuffer any more - meaning the special cast in AppImpl is no longer\nrequired.\n- Argument of type \u0027Uint8Array\u003cArrayBuffer\u003e\u0027 is not assignable to\nparameter of type \u0027ArrayBuffer\u0027.\n- Also what\u0027s changed is that calling map.keys().next().value now\nreturns T | undefined, but before it returned T. See [TS release\nnotes](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-5-6.html#strict-builtin-iterator-checks-and---strictbuiltiniteratorreturn)."
    },
    {
      "commit": "0dbbb07345fcda7428eb16f3a23d1eff2d72542f",
      "tree": "24f0f1998a16ce505836559f67ea859c29d15557",
      "parents": [
        "e6d2f75c996445c0414c03d524a6092674800787"
      ],
      "author": {
        "name": "copybara-service[bot]",
        "email": "56741989+copybara-service[bot]@users.noreply.github.com",
        "time": "Mon Jun 08 10:25:11 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 08 10:25:11 2026 +0100"
      },
      "message": "Copybara import from Chromium: proto and stdlib changes (#6153)\n\nCopybara import from Chromium: proto and stdlib changes\n\n- d444052f2a8b07dd3894bcd24d4dfe430d60d5e6 [A11y] Expose MathML arg and\nintent string attributes by Peter KH \u003cpkotwicz@google.com\u003e\n- 2a0629da600a089a1867c4e27b441c53d6ff714e Rename PERCEPTIBLE importance\nto NOT_PERCEPTIBLE by Aldo Culquicondor \u003cacondor@chromium.org\u003e\n- bf47a65349bbd20ef38eb4ab12517de4539ff067 Sync feature protos. by\nGoogler \u003cnoreply@google.com\u003e\n- d1e5451048c044eecf00398d0ef7b4313270ae96 Reland \"android: Show\nDevTools in an activity\" by Ryo Hashimoto \u003chashimoto@google.com\u003e\n- d0b617c303f724118d1f98a8fd14ff4de634bd75 Revert \"android: Show\nDevTools in an activity\" by Jack Thiesen \u003cjthiesen@chromium.org\u003e\n- 5be7d369532fce1f1a3d29479e535a5c7140eb11 android: Show DevTools in an\nactivity by Ryo Hashimoto \u003chashimoto@google.com\u003e\n- 093641613ce832f24e976562ceb27eb32894fc0b Sync feature protos. by\nGoogler \u003cnoreply@google.com\u003e\n- f4dcadf6c00e1791c14a84d81498d19c96d2b149 Remove the (unshipped)\nsetRendererLibraryPrefetchMode API... by Peter Beverloo\n\u003cpeter@chromium.org\u003e\n- 92c7b6611693bffda77b84e6f6499b70f16465ce Sync feature protos. by\nGoogler \u003cnoreply@google.com\u003e\n- 9897afb5df7e76cd1e149f0f865d20849a086cf3 Sync feature protos. by\nGoogler \u003cnoreply@google.com\u003e\n\nCOPYBARA_IMPORT\u003dProject import generated by Copybara.\n\nGitOrigin-RevId: d444052f2a8b07dd3894bcd24d4dfe430d60d5e6\n\nCo-authored-by: Perfetto Team \u003ccopybara-servicebot@google.com\u003e"
    },
    {
      "commit": "e6d2f75c996445c0414c03d524a6092674800787",
      "tree": "1a4341f239b5e8230bed343c60cc65d2f7be7b02",
      "parents": [
        "b04b400e6dda095054c134ab6ca7bc382c500ac3"
      ],
      "author": {
        "name": "perfetto-automation[bot]",
        "email": "278437629+perfetto-automation[bot]@users.noreply.github.com",
        "time": "Sun Jun 07 13:59:30 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jun 07 13:59:30 2026 +0100"
      },
      "message": "Sync generated proto files (#6162)\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": "b04b400e6dda095054c134ab6ca7bc382c500ac3",
      "tree": "aff12038139c57459607b6073e93418063fb1d11",
      "parents": [
        "4054aa0d03dd04691bc5a788ac656b223e66ea4c"
      ],
      "author": {
        "name": "yuzhy8701",
        "email": "18453608+yuzhy8701@users.noreply.github.com",
        "time": "Sat Jun 06 02:51:10 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jun 06 09:51:10 2026 +0000"
      },
      "message": "Fix trace processor build with bazel (#6161)\n\nWhen building `@perfetto//:trace_processor` with bazel, the following 2\nerrors occur:\n\n1.  Generated symbols are not found:\n\n    ```\nexternal/perfetto+/src/trace_processor/plugins/wattson/plugin.cc:97:9:\nerror: use of undeclared identifier \u0027kCpu2DCurvesData\u0027; did you mean\n\u0027kCpu1DCurvesData\u0027?\n       97 |         kCpu2DCurvesData.data(), kCpu2DCurvesData.size()));\n          |         ^~~~~~~~~~~~~~~~\n          |         kCpu1DCurvesData\n\nbazel-out/k8-opt/bin/external/perfetto+/src/trace_processor/plugins/wattson/cpu_1d_curves.h:26:44:\nnote: \u0027kCpu1DCurvesData\u0027 declared here\n       26 | inline constexpr std::array\u003cuint8_t, 2510\u003e kCpu1DCurvesData{\n          |                                            ^\nexternal/perfetto+/src/trace_processor/plugins/wattson/plugin.cc:97:34:\nerror: use of undeclared identifier \u0027kCpu2DCurvesData\u0027; did you mean\n\u0027kCpu1DCurvesData\u0027?\n       97 |         kCpu2DCurvesData.data(), kCpu2DCurvesData.size()));\n          |                                  ^~~~~~~~~~~~~~~~\n          |                                  kCpu1DCurvesData\n\nbazel-out/k8-opt/bin/external/perfetto+/src/trace_processor/plugins/wattson/cpu_1d_curves.h:26:44:\nnote: \u0027kCpu1DCurvesData\u0027 declared here\n       26 | inline constexpr std::array\u003cuint8_t, 2510\u003e kCpu1DCurvesData{\n          |                                            ^\n    ...\n    ```\n2. Compiler fails to find `zlib.h`, or finds the wrong `zlib.h`:\n\n    ```\nIn file included from\nexternal/perfetto+/src/trace_processor/trace_summary/summary.cc:55:\nexternal/+_repo_rules2+gcc_lib/sysroot/usr/include/zlib.h:1332:31:\nerror: expected \u0027;\u0027 after top level declarator\n1332 | ZEXTERN int ZEXPORTVA gzprintf Z_ARG((gzFile file, const char\n*format, ...));\n          |                               ^\n    ```\n\nError 1 happens when building perfetto as a module. Bzlmod uses \u0027+\u0027 in\ncanonical repository names (e.g., \u0027perfetto+\u0027), which propagates into\nthe generated header guard macros. Since \u0027+\u0027 is not a valid character\nfor C++ preprocessor identifiers, the compiler truncates the macro name\nat \u0027+\u0027, leading to collisions. This PR adds extra sanitization to\ninclude guards and replaces all illegal characters.\n\nError 2 was due to the zlib BUILD file containing a wrong include path,\nwhich causes the compiler to fallback to one from the sysroot. Our\nsysroot contains a very old `zlib.h` and is incompatible. This PR fixes\nthe missing include path. Further more, the\n`CHROMIUM_ZLIB_NO_CHROMECONF` macro need to be propagated to any\ndownstream target that consumes `zlib.h` to keep a consistent zlib\nconfig."
    },
    {
      "commit": "4054aa0d03dd04691bc5a788ac656b223e66ea4c",
      "tree": "9c2d00a6119d3164d539e4a36ddb3ce5298e3951",
      "parents": [
        "dd9b25e0c6b5ef4e9d8251ab5fd7f7045e934356"
      ],
      "author": {
        "name": "Runping Lai",
        "email": "runpinglai@google.com",
        "time": "Fri Jun 05 14:26:50 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 05 14:26:50 2026 -0700"
      },
      "message": "tp: Add performance comparison option to diff test runner (#6159)\n\nIntroduce --compare-perf \u003cbaseline.json\u003e to\ndiff_test_trace_processor.py. This option allows comparing the\nperformance of the current run against a previously saved baseline\n(generated via --perf-file). It prints a formatted comparison table\nshowing percentage and absolute differences for ingest, query, and total\ntimes.\n\nAlso add early checks to exit immediately if the baseline file does not\nexist or is invalid, avoiding unnecessary test runs.\n\nBug: 520515277\nTest: tools/diff_test_trace_processor.py\nout/linux-arm/trace_processor_shell --name-filter \u0027.*wattson*.\u0027\n--compare-perf baseline.json\n\nExample Usage:\n```\ntools/diff_test_trace_processor.py out/linux-arm/trace_processor_shell --name-filter \u0027.*wattson*.\u0027 --perf-file baseline.json \nmake code changes to stdlib and rebuild trace_processor_shell\ntools/diff_test_trace_processor.py out/linux-arm/trace_processor_shell --name-filter \u0027.*wattson*.\u0027 --compare-perf baseline.json\n```\n\nExample Output:\n```\n % tools/diff_test_trace_processor.py out/linux-arm/trace_processor_shell --name-filter \u0027.*wattson_markers*.\u0027 --compare-perf baseline.json\n[\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d] Running 2 tests.\n[ RUN      ] AndroidMetrics:wattson_markers_rails_output\n[       OK ] AndroidMetrics:wattson_markers_rails_output (ingest: 2249.15 ms query: 6878.91 ms)\n[ RUN      ] AndroidMetrics:wattson_markers_threads_output\n[       OK ] AndroidMetrics:wattson_markers_threads_output (ingest: 2256.33 ms query: 7076.31 ms)\n[\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d] Name filter selected 2 tests out of 1408.\n[\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d] 2 tests ran out of 2 total. (9532 ms total)\n[  PASSED  ] 2 tests.\n\n--- Performance Comparison ---\n\nTest Name                                                    | Ingest Diff      | Query Diff       | Total Diff\n---------------------------------------------------------------------------------------------------------------------\nAndroidMetrics:wattson_markers_rails_output                  |  +0.7% (+0.016s) |  +0.0% (+0.003s) |  +0.2% (+0.019s)\nAndroidMetrics:wattson_markers_threads_output                |  +0.9% (+0.021s) |  +0.4% (+0.027s) |  +0.5% (+0.048s)\n\nCompared 2 tests.\nImproved (\u003e5% faster): 0\nRegressed (\u003e5% slower): 0\n```\n\nSigned-off-by: Runping Lai \u003crunpinglai@google.com\u003e"
    },
    {
      "commit": "dd9b25e0c6b5ef4e9d8251ab5fd7f7045e934356",
      "tree": "dae92ba7f764f3f15ae3a62cf31718429a98431c",
      "parents": [
        "a7694ec9b0393dfe0c9ee504bccb7475619b89a7"
      ],
      "author": {
        "name": "sashwinbalaji",
        "email": "sashwinbalaji@google.com",
        "time": "Fri Jun 05 19:12:16 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 05 19:12:16 2026 +0100"
      },
      "message": "perfetto: fix proto compilation with sandboxed protoc (#6150)\n\nWhen protoc sandboxing is enabled, Soong shards proto compilation, which\nrequires explicitly declaring include directories for imports to resolve\ncorrectly within the sandbox.\n\nAdd local_include_dirs: [\".\"] to the java proto modules so imports\nresolve relative to the repository root. The hand-written modules are\nupdated in Android.bp.extras; gen_android_bp now emits the same for the\nautogenerated perfetto_{trace,config}_java_protos modules.\n\nPorting ag/40227792 upstream\nBug: 498317670"
    },
    {
      "commit": "a7694ec9b0393dfe0c9ee504bccb7475619b89a7",
      "tree": "3603d6180ce0a9954c9fa1ad0c7dad6d6bdcf715",
      "parents": [
        "5162072bc3a92ecc8cc366d922a86aebfaf55a9e"
      ],
      "author": {
        "name": "Lalit Maganti",
        "email": "lalitm@google.com",
        "time": "Fri Jun 05 18:38:18 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 05 17:38:18 2026 +0000"
      },
      "message": "ai: refactor multiple skills -\u003e single skill (#6156)\n\nThis CL changes the approach of ahving N skills, each of which is\ndoing a specific thing with Perfetto to instead be a single skill\nwhich internally has a tree of references/workflows guiding the\nagent on how to work with traces.\n\nThe reason for this change is that we\u0027ve found it\u0027s quite painful\nfor folks to juggle N skills and it\u0027s easy to accidentally only\ninstall partial set of skills. This is problematic as then the\nagent can get very confused and go in circles.\n\nIf we instead have everything packaged in a single skill and\nthen give strong guidance on how to \"route\" itself, it makes it a\nlot easier. There\u0027s also nice advantages when it comes to\nthings like sharing common scripts and fragments - we can reference\nother files using relative paths in a way which would be very\ndifficult if we were instead using N skills and couldn\u0027t count on\nall skills necessarily being installed."
    },
    {
      "commit": "5162072bc3a92ecc8cc366d922a86aebfaf55a9e",
      "tree": "054f97adbcd7e5cbcb8c92977f345cecb4634065",
      "parents": [
        "2a70eb731811ecc2baa3551db906740ec2368913"
      ],
      "author": {
        "name": "zezeozue",
        "email": "zezeozue@google.com",
        "time": "Fri Jun 05 15:53:06 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 05 15:53:06 2026 +0100"
      },
      "message": "ui: Persist Heap Dump Explorer state in shared links (#6115)\n\nThe Heap Dump Explorer kept its state (selected dump, active tab, open\nflamegraph and instance drill-down tabs, and the main flamegraph\u0027s\nfilter/pivot/view state) in a per-trace session object rebuilt from\nscratch on every load, so a shared permalink dropped all of it and\nalways reopened on the overview.\n\nMirror the session state into a plugin store via ctx.mountStore(), which\nthe core serializes into the permalink and restores before the plugin\nruns. On load the session rehydrates from the store (keyed on the heap\ndump still existing in the trace)"
    },
    {
      "commit": "2a70eb731811ecc2baa3551db906740ec2368913",
      "tree": "894dcda1dd2d806ed6675880adcf5d04ce2d45c3",
      "parents": [
        "db5023dde385ea64f4b1cd3c0f98c84fc6737227"
      ],
      "author": {
        "name": "Lalit Maganti",
        "email": "lalitm@google.com",
        "time": "Fri Jun 05 13:50:41 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 05 13:50:41 2026 +0100"
      },
      "message": "ui: add docs on how to embed the UI in other tools (#6138)\n\nThis is already used by a bunch of other tools (e.g. Dart devtools,\nRust, Go hopefully soon) so it\u0027s worth formalizing this so it\u0027s\neasier for future users."
    },
    {
      "commit": "db5023dde385ea64f4b1cd3c0f98c84fc6737227",
      "tree": "37b95e99f5d06524bd5538779f8fab03255f022f",
      "parents": [
        "a4eb1e85083b49620054b1d31d03e9b5fd8be71e"
      ],
      "author": {
        "name": "copybara-service[bot]",
        "email": "56741989+copybara-service[bot]@users.noreply.github.com",
        "time": "Fri Jun 05 12:57:14 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 05 12:57:14 2026 +0100"
      },
      "message": "Copybara import from Chromium: proto and stdlib changes (#5808)\n\nCopybara import from Chromium: proto and stdlib changes\n\n- 595f764e4b5cd0a73f1b69fcd0b99672bf0f3e2a Sync feature protos. by\nGoogler \u003cnoreply@google.com\u003e\n\nCOPYBARA_IMPORT\u003dProject import generated by Copybara.\n\nGitOrigin-RevId: 595f764e4b5cd0a73f1b69fcd0b99672bf0f3e2a\n\nCo-authored-by: Perfetto Team \u003ccopybara-servicebot@google.com\u003e"
    },
    {
      "commit": "a4eb1e85083b49620054b1d31d03e9b5fd8be71e",
      "tree": "d8883bcb6ff620c80cc9968d1ff4dee30e491a07",
      "parents": [
        "1f8302f21a6296b36d2175cf9a723e4b0acc22b0"
      ],
      "author": {
        "name": "Lalit Maganti",
        "email": "lalitm@google.com",
        "time": "Fri Jun 05 12:15:06 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 05 11:15:06 2026 +0000"
      },
      "message": "tp: fix ifdef guard for http trace fetching (#6151)"
    },
    {
      "commit": "1f8302f21a6296b36d2175cf9a723e4b0acc22b0",
      "tree": "5f22543039d9ea26900fc5b91cc5c28813c3b094",
      "parents": [
        "cc48042b2ee8855e332fb5ec8c98a4546a709a0d"
      ],
      "author": {
        "name": "Lalit Maganti",
        "email": "lalitm@google.com",
        "time": "Fri Jun 05 11:48:08 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 05 11:48:08 2026 +0100"
      },
      "message": "base: fix SDK compile by adding default constructor to circularqueue (#6141)\n\nFixes: https://github.com/google/perfetto/issues/6139"
    },
    {
      "commit": "cc48042b2ee8855e332fb5ec8c98a4546a709a0d",
      "tree": "df493dc11deb3d524d53f855f7347b01d8dfb3b2",
      "parents": [
        "58a889c23d26e11168da6914815edb8c15509487"
      ],
      "author": {
        "name": "Steve Golton",
        "email": "stevegolton@google.com",
        "time": "Fri Jun 05 11:09:14 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 05 10:09:14 2026 +0000"
      },
      "message": "ui: Bump dependencies (#6140)\n\n**Migrated (version changes)**\n\n- Prod: `@protobufjs/utf8` `1.1.0 → 1.1.1` - patch\n- Prod: `protobufjs` `7.5.5 → 7.5.6` - patch\n- Prod: `uuid` `10 → 14` - **major**\n- Dev: `protobufjs-cli` `1.1.2 → 1.2.1` - minor (also moved prod→dev)\n- Dev: `puppeteer` `22 → 25` - **major**\n- Dev: `rollup` `4.60.1 → 4.61.1` - patch\n\n**Added**\n\n- Prod: `@codemirror/language`, `@lezer/common`, `@lezer/highlight`,\n`@lezer/lr`, `markdown-it`\n- Dev: `@types/markdown-it`\n\n**Removed**\n\n- Dev: `@rollup/plugin-terser`\n\n**Notes**\n- Removed `--shamelessly-hoist` from the pnpm options to avoid\naccidentally depending on transitive dependencies.\n- Add build step to strip `require(\u0027long\u0027)` from `pbts` generated output\n`protos.d.ts`. `pbts` hard-codes this in the output and this was causing\nissues since removing `--shamelessly-hoist`. Long is not used, so it was\na dead import."
    },
    {
      "commit": "58a889c23d26e11168da6914815edb8c15509487",
      "tree": "3e227ba56974046f9c1ee3ee4e971931d4b0bae7",
      "parents": [
        "fa629915ccad27abc58bd8d9301b4c8478c5d31a"
      ],
      "author": {
        "name": "sashwinbalaji",
        "email": "sashwinbalaji@google.com",
        "time": "Fri Jun 05 09:27:50 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 05 09:27:50 2026 +0100"
      },
      "message": "perfetto: fix --set-socket-permissions failing in traced_relay (#6149)\n\nSetFilePermissions() was called on the producer socket path right after\nremove()-ing it, but the socket file is only created later by\nRelayService::Start() when it binds the listening socket. The chown\ntherefore always failed with ENOENT and traced_relay exited at startup\nwhenever --set-socket-permissions was passed.\n\nMove the SetFilePermissions() call after Start(), mirroring what traced\ndoes in src/traced/service/service.cc, and skip it for non-unix\n(TCP/vsock) sockets where file permissions do not apply, again matching\ntraced.\n\nFixes #6145."
    },
    {
      "commit": "fa629915ccad27abc58bd8d9301b4c8478c5d31a",
      "tree": "67a4443be4e597d898ba697fdcf0248cc6c725ae",
      "parents": [
        "bad3323b18f73a1eb3e3ed4c734845754f5fe20c"
      ],
      "author": {
        "name": "zezeozue",
        "email": "zezeozue@google.com",
        "time": "Fri Jun 05 09:27:36 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 05 09:27:36 2026 +0100"
      },
      "message": "tp: android.display.video data source, importer, table and stats (#6143)\n\nAdds trace_processor support for the android.display.video data source,\nwhich captures device display frames as a hardware video elementary\nstream.\n\nWire format (protos/perfetto/trace/android/video_frame.proto):\n* VideoFrame (TracePacket.video_frame): a codec_config-only frame per\nstream (carrying display_name + RFC 6381 codec_string), then one\nVideoFrame per on-screen change with a single access unit (au_data).\nSelf-identifying via a per-session display_id.\n* VideoFrameError (TracePacket.video_frame_error): per-stream failure\nwith a Reason enum (size cap hit, codec error, display gone, no encoder,\ndisplay not found, encoder setup failed, virtual display failed).\nConfig: DataSourceConfig.display_video_config.\n\nImporter (src/trace_processor/plugins/video_frame_importer/):\n* Parses video_frame into the __intrinsic_video_frames table. The\nencoded payload is stored zero-copy as a TraceBlobView, surfaced via the\n__INTRINSIC_VIDEO_FRAME_AU_DATA(id) scalar function (same pattern\nHPROF/ETM use for blob payloads).\n* Maps each VideoFrameError reason to its own kIndexed entry in the\nglobal stats table, keyed by display_id.\n* Enforces a parse-time 256 MB per-stream cap as a backstop against\ntraces recorded without a producer cap: over-cap frames are dropped and\nandroid_video_size_cap_hit is reported once.\n\nThe table is intrinsic (not a stdlib module) since only the VideoFrames\nUI consumes it.\n\nTests: diff tests (single/multi display, au_data blob equivalence, all\nVideoFrameError reasons) and a unit test for the parse-time cap."
    },
    {
      "commit": "bad3323b18f73a1eb3e3ed4c734845754f5fe20c",
      "tree": "9661ec258eb5c6b19b55719f115868da499b24cf",
      "parents": [
        "da30cc8b10eda1bced10b93b6f9a4738dc0e5229"
      ],
      "author": {
        "name": "sashwinbalaji",
        "email": "sashwinbalaji@google.com",
        "time": "Fri Jun 05 09:06:27 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 05 08:06:27 2026 +0000"
      },
      "message": "ai: fix OWNERS file (#6147)"
    },
    {
      "commit": "da30cc8b10eda1bced10b93b6f9a4738dc0e5229",
      "tree": "1c1f3beee2648ba681437595576cc4c91cebc5f0",
      "parents": [
        "a03b4fa0b25b64bf3dac6ec621998d1defb0475a"
      ],
      "author": {
        "name": "ilkos",
        "email": "ilkos@google.com",
        "time": "Fri Jun 05 08:09:51 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 05 07:09:51 2026 +0000"
      },
      "message": "Do not strip stats pull slice names (#6148)"
    },
    {
      "commit": "a03b4fa0b25b64bf3dac6ec621998d1defb0475a",
      "tree": "6fde3dd6216edecabb41b6b0b0fce03f8c942a07",
      "parents": [
        "f15f0e0dfc8e29484b508fb87f28b294bf1c0e9c"
      ],
      "author": {
        "name": "Elliot Saba",
        "email": "staticfloat@gmail.com",
        "time": "Thu Jun 04 23:52:21 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 05 06:52:21 2026 +0000"
      },
      "message": "open_trace_in_ui: Fix `--origin` having a path component (#6136)\n\nIf a perfetto WebUI build is hosted on a URL with a path component (e.g.\n`http://internal-host/perfetto`) this allows `open_trace_in_ui` to\nproperly extract the `origin` component while still redirecting to the\nproper page where the WebUI is hosted. Note that the HTTP header this is\nbeing fed into, `Access-Control-Allow-Origin` does not support paths at\nall."
    },
    {
      "commit": "f15f0e0dfc8e29484b508fb87f28b294bf1c0e9c",
      "tree": "49e258aa88a10af93361082aa3c8a1c738c7f1fb",
      "parents": [
        "672cef59eb7d46fff2aae85105a3bd3129c23737"
      ],
      "author": {
        "name": "David Reveman",
        "email": "reveman@meta.com",
        "time": "Thu Jun 04 19:17:26 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 04 16:17:26 2026 -0700"
      },
      "message": "perfetto_cmd: Fix use-after-free of the output FILE on shutdown (#6144)\n\n~PacketWriter fflush()es the FILE* that ~ScopedFstream already\nfclose()\u0027d, because packet_writer_ was declared before\ntrace_out_stream_. Reorder them."
    },
    {
      "commit": "672cef59eb7d46fff2aae85105a3bd3129c23737",
      "tree": "d590e3c72a3efd35a69878a6216940088b520f8d",
      "parents": [
        "8798931fa7e56912fefca71caf1c262f0eb43c56"
      ],
      "author": {
        "name": "Jorim Jaggi",
        "email": "jjaggi@google.com",
        "time": "Fri Jun 05 00:04:58 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 04 22:04:58 2026 +0000"
      },
      "message": "Fix broken matching (#6142)"
    },
    {
      "commit": "8798931fa7e56912fefca71caf1c262f0eb43c56",
      "tree": "3d88ce7f8df9b304e5486e41c5b11805ecf6e175",
      "parents": [
        "950dea29c38740d00a7a3edc613e065b37da91c4"
      ],
      "author": {
        "name": "Lalit Maganti",
        "email": "lalitm@google.com",
        "time": "Thu Jun 04 21:49:55 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 04 20:49:55 2026 +0000"
      },
      "message": "perfetto: move prebuilts and AI bundling scripts to CI and add AI docs (#6135)\n\nThis change makes it so that building of the AI bundle and the scripts\nto roll all prebuilts is done in the CI instead of having to be done by\nhand. This reduces the cost of cutting releases trenemdnously."
    },
    {
      "commit": "950dea29c38740d00a7a3edc613e065b37da91c4",
      "tree": "bf02d01e426414a3b3b0f34a23e94a22f050732d",
      "parents": [
        "e8c57eed4b5077ed63563c23bf3bb35ceaa13cf6"
      ],
      "author": {
        "name": "Edgar Arriaga",
        "email": "edgararriaga@google.com",
        "time": "Thu Jun 04 14:50:32 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 04 14:50:32 2026 -0500"
      },
      "message": "Add heap analysis skill to find caching opportunities in java heap dumps (#6100)\n\nThis heap analysis skill finds opportunities in heap dumps to save\nmemory via object caching. It skews towards finding opportunities for\nobjects that are heavily repeated, potentially duplicated, and objects\nthat are shared by many objects."
    },
    {
      "commit": "e8c57eed4b5077ed63563c23bf3bb35ceaa13cf6",
      "tree": "7c08c4842fb7766d24f468552f7bdece6378108a",
      "parents": [
        "d485749a8c5c6853c51c17f832ab6a5e4d85fbef"
      ],
      "author": {
        "name": "Jorim Jaggi",
        "email": "jjaggi@google.com",
        "time": "Thu Jun 04 20:19:56 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 04 20:19:56 2026 +0200"
      },
      "message": "Update android blocking calls metrics and tests to add more RenderThread slices (#6124)\n\nSee go/jank-metrics-2025"
    },
    {
      "commit": "d485749a8c5c6853c51c17f832ab6a5e4d85fbef",
      "tree": "6d2c22b8ae3dafd016dc2e6c051534dcca263413",
      "parents": [
        "b1773e596a71877390dc8097059d0d657a01b85a"
      ],
      "author": {
        "name": "Elliot Saba",
        "email": "staticfloat@gmail.com",
        "time": "Thu Jun 04 09:15:00 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 04 17:15:00 2026 +0100"
      },
      "message": "ui: Add dev.perfetto.JournaldLog plugin and update AndroidLog (3/3) (#5798)\n\nAdd a new JournaldLog plugin (dev.perfetto.JournaldLog) that displays\njournald log entries from the linux.journald data source. The plugin\nshares UI components with the existing AndroidLog plugin, extracted\ninto:\n\n- ui/src/components/tracks/log_track.ts: generic log track factory\n- ui/src/components/widgets/log_panel/log_panel.ts: shared LogPanel\n  component with filtering, search, and per-source extensibility\n\nThe AndroidLog plugin is refactored to use these shared components.\nRegister dev.perfetto.JournaldLog in default_plugins.ts.\n\nThis is part 3 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": "b1773e596a71877390dc8097059d0d657a01b85a",
      "tree": "109b5e601d1ded9a1ebc5dcefebab5918d260624",
      "parents": [
        "e1a91d6bcba5364d1370f6fc2c7a3229f7ab4d7b"
      ],
      "author": {
        "name": "Lalit Maganti",
        "email": "lalitm@google.com",
        "time": "Thu Jun 04 17:10:55 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 04 16:10:55 2026 +0000"
      },
      "message": "py: cache prebuilts by SHA-256 so versions coexist (#6134)\n\nWe previously wrote every download to the same\n~/.local/share/perfetto/prebuilts/$tool_name path. Two\nenvironments pinned to different Perfetto releases would\nclobber each other and re-download on every switch.\n\nEmbed the short SHA-256 in the cached file name instead, so distinct\nversions coexist and switching between them never re-downloads. The\n.sha256 sidecar is no longer needed."
    },
    {
      "commit": "e1a91d6bcba5364d1370f6fc2c7a3229f7ab4d7b",
      "tree": "2bfa933a374af1fe19eef2a9215924357c91b735",
      "parents": [
        "d2698064f377bd8c6081f12bc5984661a5aa63a2"
      ],
      "author": {
        "name": "Lalit Maganti",
        "email": "lalitm@google.com",
        "time": "Thu Jun 04 17:08:54 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 04 16:08:54 2026 +0000"
      },
      "message": "py: ship pinned trace_processor with the package (#6133)\n\nBy default the Python API now runs the trace_processor version pinned to\n(and shipped with) the installed perfetto package, via the prebuilt\nmanifest, instead of always downloading the latest from\nget.perfetto.dev.\n\nFetching the latest build is still available as an opt-in via the new\nTraceProcessorConfig.fetch_latest_trace_processor flag."
    },
    {
      "commit": "d2698064f377bd8c6081f12bc5984661a5aa63a2",
      "tree": "fb0b344c0c5772475feed27068e3cde4a9deafd3",
      "parents": [
        "1784822f89088166b93db04feea9559677a8f7ee"
      ],
      "author": {
        "name": "Lalit Maganti",
        "email": "lalitm@google.com",
        "time": "Thu Jun 04 16:54:58 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 04 16:54:58 2026 +0100"
      },
      "message": "tp: add support for URLs and UI permalinks in shell (#6132)\n\nMakes for a really nice experience, espeically with AI agents in\nthe mix."
    },
    {
      "commit": "1784822f89088166b93db04feea9559677a8f7ee",
      "tree": "df7b90371d3d1055700a7a9c12a6d5bcb5094b44",
      "parents": [
        "a790db79aac95b1a0585d525957a15dae13b6afd"
      ],
      "author": {
        "name": "Samuel Wu",
        "email": "wusamuel@google.com",
        "time": "Thu Jun 04 08:08:08 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 04 16:08:08 2026 +0100"
      },
      "message": "stdlib: Wattson: Add MT6858 support (#6117)\n\nWattson support for MT6858.\n\nBug: 505797476\n\nSigned-off-by: Samuel Wu \u003cwusamuel@google.com\u003e"
    },
    {
      "commit": "a790db79aac95b1a0585d525957a15dae13b6afd",
      "tree": "89e320fad26e655c7f4474e6537ff2c094f1508d",
      "parents": [
        "17f003fd50e39707a084a9d77cac6cf043ce9046"
      ],
      "author": {
        "name": "Lalit Maganti",
        "email": "lalitm@google.com",
        "time": "Thu Jun 04 15:22:31 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 04 15:22:31 2026 +0100"
      },
      "message": "tools: add tool for downloading permlink traces (#6131)"
    },
    {
      "commit": "17f003fd50e39707a084a9d77cac6cf043ce9046",
      "tree": "0b21d474309b394d604a69d87498dff7c9e9de57",
      "parents": [
        "369b14fbc8360894dd3a8e02d6114f955f7f0d41"
      ],
      "author": {
        "name": "Lalit Maganti",
        "email": "lalitm@google.com",
        "time": "Thu Jun 04 14:27:15 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 04 14:27:15 2026 +0100"
      },
      "message": "tp: fix deferred sync handling for merged traces (#6130)\n\nInject the edge correctly for multi-format traces which don\u0027t\ncontain clock snapshots."
    },
    {
      "commit": "369b14fbc8360894dd3a8e02d6114f955f7f0d41",
      "tree": "2738acc89d6adcb03ece43e957760e6f3aa699d3",
      "parents": [
        "0ebb5192ecd2de26f2fa28da5ecaf556db33702c"
      ],
      "author": {
        "name": "Lalit Maganti",
        "email": "lalitm@google.com",
        "time": "Thu Jun 04 13:25:01 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 04 12:25:01 2026 +0000"
      },
      "message": "tp: fix crash in experimental_flat_slice and switch how STF work (#6129)\n\nBecause of how the sqlite module for static table functions\nis implemented, sparse null columns were a bit of a ticking problem\nwaiting to happen.\n\nInstead make the fact we will use for a static table function a\nproperty of the table rather than column and annotate all tables."
    },
    {
      "commit": "0ebb5192ecd2de26f2fa28da5ecaf556db33702c",
      "tree": "e7eae5e0e7926d6b847417457cb68a44374226ed",
      "parents": [
        "908b6f45cefda5e425b839f80d7aa4300f67a3a0"
      ],
      "author": {
        "name": "Lalit Maganti",
        "email": "lalitm@google.com",
        "time": "Thu Jun 04 12:54:36 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 04 12:54:36 2026 +0100"
      },
      "message": "tp: move gpu descriptor parsing to tokenization and prevent 0 ts packets (#6121)\n\nThis CL moves descriptor parsing to happen at tokeniation time so that\nthe contract adhered by produces (emit your descriptor before your\nevent) also causes correct parsing behaviour.\n\nThe current behaviour could break that if there was some other producer\nwhich which was emitting larger timestamps such that the descriptor\nwould be sorted *after* the event that contained it.\n\nAlso while I\u0027m here, add an explicit error stat + import logs for the\ncase of dropping events due to having zero timestamps (post descriptor\nparse) which is invalid."
    },
    {
      "commit": "908b6f45cefda5e425b839f80d7aa4300f67a3a0",
      "tree": "3314c2d653b604cbb5e9e6696a749203e77e78e0",
      "parents": [
        "50ef0913ab34c52e54c7bd939624ff098960f36a"
      ],
      "author": {
        "name": "Lalit Maganti",
        "email": "lalitm@google.com",
        "time": "Thu Jun 04 12:04:56 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 04 12:04:56 2026 +0100"
      },
      "message": "ui: add copy functionality to distribution panel and cap title (#6108)\n\nSmall improvements to distribution panel to bring it closer to the old\n\"find slices by name\" thing which used to exist before."
    },
    {
      "commit": "50ef0913ab34c52e54c7bd939624ff098960f36a",
      "tree": "089fe2c3f598b636d80c9e9ebaa9dec0375f08fe",
      "parents": [
        "a760e3fc2f84d84225bfb4928d281c4b7c51d193"
      ],
      "author": {
        "name": "sashwinbalaji",
        "email": "sashwinbalaji@google.com",
        "time": "Thu Jun 04 11:31:40 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 04 10:31:40 2026 +0000"
      },
      "message": "perfetto(python): Update download_url for v0.56.0 (#6127)"
    },
    {
      "commit": "a760e3fc2f84d84225bfb4928d281c4b7c51d193",
      "tree": "e3b8c64cb6939fe0e35922a542070720ee00c7b8",
      "parents": [
        "7f7ad198b67aebd9822605a6aa48cfbd2be0b739"
      ],
      "author": {
        "name": "sashwinbalaji",
        "email": "sashwinbalaji@google.com",
        "time": "Wed Jun 03 21:16:23 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 03 20:16:23 2026 +0000"
      },
      "message": "perfetto(python): fix the PyPI release flow (#6120)\n\nThe package version is derived from the CHANGELOG. This makes the\nrelease path work with that:\n\n- release_python.py: read the version from the CHANGELOG instead of a\n  \u0027version\u003d...\u0027 literal, and drop the version-bump stage since the\n  version is now derived automatically.\n\n- setup.py: when building from an sdist the CHANGELOG isn\u0027t present (it\n  lives outside the package), so fall back to the version recorded in\n  PKG-INFO. This unblocks building the wheel from the sdist.\n\nAlso update docs/contributing/python-releasing.md to match: publishing\nis now a single step from the release commit.\n\nVerified \u0027python -m build\u0027 produces both the sdist and the wheel\n(0.56.0)."
    },
    {
      "commit": "7f7ad198b67aebd9822605a6aa48cfbd2be0b739",
      "tree": "38592a809dcea12a5352d3f4cd0b4b1ad28092ce",
      "parents": [
        "d1facb7bf9d7c42c1e3d568d66ae4757de5367dd"
      ],
      "author": {
        "name": "sashwinbalaji",
        "email": "sashwinbalaji@google.com",
        "time": "Wed Jun 03 20:11:51 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 03 19:11:51 2026 +0000"
      },
      "message": "perfetto: roll prebuilts to v56.0 (#6119)"
    },
    {
      "commit": "d1facb7bf9d7c42c1e3d568d66ae4757de5367dd",
      "tree": "bac5a355e63ecc4d1a6501460a8fcaf565f11d89",
      "parents": [
        "210145c84b1cbaaf186e64b0b713f5bb2f05cf9c"
      ],
      "author": {
        "name": "sashwinbalaji",
        "email": "sashwinbalaji@google.com",
        "time": "Wed Jun 03 15:48:00 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 03 14:48:00 2026 +0000"
      },
      "message": "perfetto: make promote-stable skip the CHANGELOG Unreleased block (#6114)\n\nMatch the first version header instead of the first non-whitespace line\nso promotion is consistent with tagging and the \u0027Unreleased:\u0027\nconvention. The dated-header check is retained, so an undated/draft\nheader is still rejected, and the following tag-existence check still\nprevents re-promoting an already-released version."
    },
    {
      "commit": "210145c84b1cbaaf186e64b0b713f5bb2f05cf9c",
      "tree": "d865bb6b22a8863bc5c34698c04644135d8d33f9",
      "parents": [
        "5fd288db548fb10724f23ceec621196530322a39"
      ],
      "author": {
        "name": "Steve Golton",
        "email": "stevegolton@google.com",
        "time": "Wed Jun 03 15:13:43 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 03 15:13:43 2026 +0100"
      },
      "message": "ui: Hide out-of-tree Tooltip/CursorTooltip portals when their in-tree elements are not visible (#6110)\n\nThis fixes a bug where switching pages while a CursorTooltip or Tooltip\ncomponent is visible would remain on screen after e.g. switching pages.\n\nThis was previous fixed for Popup elements so this patch simply applies\nthe same fix for CursorTooltip and Tooltip components too."
    },
    {
      "commit": "5fd288db548fb10724f23ceec621196530322a39",
      "tree": "a26c03cbcb550f813e040db124043b5330a0706d",
      "parents": [
        "938f993eedde85083987e5b062c1daa68ca6847f"
      ],
      "author": {
        "name": "etiennep-chromium",
        "email": "etiennep@chromium.org",
        "time": "Wed Jun 03 07:54:46 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 03 07:54:46 2026 -0400"
      },
      "message": "Fix ordering of global tracks (#6107)\n\nForce global root tracks (global tracks that themselves have children)\nto be\nsorted before any process groups in the Perfetto UI timeline.\n\nThe query currently calculates track event order_ids by\npartitioning all root-level tracks together (regardless of whether they\nare global or process-scoped). This inflates the order_id of global\ntracks.\nBecause process groups have a fixed sortOrder of 50 in the UI, these\nglobal tracks incorrectly appear at the very end of the timeline.\n\nThis CL fixes the issue in the UI layer by identifying global root\ntracks (tracks with no parent, upid, or utid) and forcing their\nsortOrder to 0. This ensures they always sort before process groups\n(sortOrder 50) without needing to modify the SQL standard library\npartitioning logic."
    },
    {
      "commit": "938f993eedde85083987e5b062c1daa68ca6847f",
      "tree": "5d237287759152a03fbb24ec829b9b45ab8945df",
      "parents": [
        "3314501b2fe837c50165996d24739b7f6c3ea0ce"
      ],
      "author": {
        "name": "Steve Golton",
        "email": "stevegolton@google.com",
        "time": "Wed Jun 03 12:31:45 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 03 12:31:45 2026 +0100"
      },
      "message": "ui: Avoid using screenshots to assert omnibox behavior (#6109)\n\nThe omnibox test is currently based on screenshots and is fragile\nbecause the screenshots can change any time a new command is introduced.\n\nFor instance - take this test failure in a PR that doesn\u0027t even tough\nthe omnibox - simply adds a new command:\nhttps://storage.googleapis.com/perfetto-ci-artifacts/gh-26835408928-2-ui/ui-test-artifacts/index.html\nhttps://github.com/google/perfetto/pull/5798\n\nThis patch modifies the test to assert correctness by asserting the\nstate of the DOM instead of taking screenshots, which:\na) Asserts correct behavior directly (rather than purely comparing\nagainst a \u0027golden\u0027 screenshot, which itself could become wrong through\ncareless rebases).\nb) Is much less subject to false positives as the test surfaces is\nsignificantly smaller and more targeted."
    },
    {
      "commit": "3314501b2fe837c50165996d24739b7f6c3ea0ce",
      "tree": "ac66b52cd0bdc3a882aeaae67b5dde3da2bc305e",
      "parents": [
        "b4ea4173b0ef79ac62f38f441bb377377cec89bf"
      ],
      "author": {
        "name": "Ryan",
        "email": "rsavitski@google.com",
        "time": "Wed Jun 03 11:46:39 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 03 10:46:39 2026 +0000"
      },
      "message": "proto_merger: actually remove pre-editions \"packed\" option (#6095)"
    },
    {
      "commit": "b4ea4173b0ef79ac62f38f441bb377377cec89bf",
      "tree": "aff3da608ee52d170749c1cd0bf2820651d98399",
      "parents": [
        "5ce9884028fb19b3813c4799d4bfad71bd87f3c0"
      ],
      "author": {
        "name": "Samuel Wu",
        "email": "wusamuel@google.com",
        "time": "Tue Jun 02 09:16:30 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 02 09:16:30 2026 -0700"
      },
      "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 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 02 16:11:43 2026 +0000"
      },
      "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 09:01:37 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 02 13:01:37 2026 +0000"
      },
      "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 10:24:32 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 02 09:24:32 2026 +0000"
      },
      "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 10:16:29 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 02 09:16:29 2026 +0000"
      },
      "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 11:44:12 2026 +0300"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 02 11:44:12 2026 +0300"
      },
      "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 11:24:53 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 02 11:24:53 2026 +0800"
      },
      "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 22:53:05 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 01 21:53:05 2026 +0000"
      },
      "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 17:48:09 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 01 14:48:09 2026 -0700"
      },
      "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 16:50:02 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 01 13:50:02 2026 -0700"
      },
      "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."
    }
  ],
  "next": "cdc76a7051d8bc18a5b4c3a69bf318d257e283f9"
}
