)]}'
{
  "commit": "85f945ac99379d64d4df6f67d9b011e4cc418e7e",
  "tree": "7bdb3c143f3a88ad20046874572760b18a50bb8a",
  "parents": [
    "cb22250a4500e79536c46ee197aa2e153bf08aaa"
  ],
  "author": {
    "name": "Jonas Finnemann Jensen",
    "email": "jopsen@gmail.com",
    "time": "Thu Oct 01 22:42:49 2026 +0200"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Thu Oct 01 13:42:49 2026 -0700"
  },
  "message": "Support connecting to VM service via MessagePort / postMessage (#9964)\n\n* Support connecting to a VM service over a MessagePort\n\nAdds `?uri\u003dmessageport:\u003ctargetOrigin\u003e`. On every connect, DevTools posts\na new `MessagePort` to `window.parent`, and the embedding page connects\nit to a VM service. This lets pages such as DartPad, whose VM service\nruns in a web worker, embed DevTools without a WebSocket.\n\n* Address review feedback: validate targetOrigin, close port with null, and add connect timeout\n\n* Close port on pagehide instead of unload",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "7d48749b1a9d20d554781c55882390218a5ca194",
      "old_mode": 33188,
      "old_path": "packages/devtools_app/lib/src/framework/framework_core.dart",
      "new_id": "08f50bf419c2d6ef17aceca41dca552243d79118",
      "new_mode": 33188,
      "new_path": "packages/devtools_app/lib/src/framework/framework_core.dart"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "f324258255daab2cac7bfac6f7f8f19c942b937b",
      "new_mode": 33188,
      "new_path": "packages/devtools_app/lib/src/service/_message_port_connection_stub.dart"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "c2a968ea57adc9f48e952e3af98d5f59147600ab",
      "new_mode": 33188,
      "new_path": "packages/devtools_app/lib/src/service/_message_port_connection_web.dart"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "cfa7e452ada4c8a821409963af9f887fb6789041",
      "new_mode": 33188,
      "new_path": "packages/devtools_app/lib/src/service/message_port_connection.dart"
    },
    {
      "type": "modify",
      "old_id": "1c05dafa13443529df65cdedaafa9b19864f569c",
      "old_mode": 33188,
      "old_path": "packages/devtools_app/release_notes/NEXT_RELEASE_NOTES.md",
      "new_id": "993227cb3ef6c22f7b02a021cfd4c16cb29d3163",
      "new_mode": 33188,
      "new_path": "packages/devtools_app/release_notes/NEXT_RELEASE_NOTES.md"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "843fcfc7ffcc9af04e47418c9a9fa8af0953ad20",
      "new_mode": 33188,
      "new_path": "packages/devtools_app/test/service/message_port_connection_test.dart"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "7e21a7aed32d1bf6f08213bb6bdae916d34e396a",
      "new_mode": 33188,
      "new_path": "packages/devtools_app/test/service/message_port_connection_web_test.dart"
    }
  ]
}
