)]}'
{
  "commit": "633db93f84f8ea39aa8e2d02dd40d223add5b124",
  "tree": "33d2278a7eadc5755c086a2e9a09d7cbf0151988",
  "parents": [
    "7cf3308facaa12607f2877fb93ffd755b140fa70"
  ],
  "author": {
    "name": "Ben Konyi",
    "email": "bkonyi@google.com",
    "time": "Thu Oct 22 22:30:33 2026 +0000"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Thu Oct 22 22:30:33 2026 +0000"
  },
  "message": "[flutter_tools] Add JSON-RPC notification support and post-handshake isolate exit handling to ExtensionConnection (#194961)\n\nAdds extension-to-host JSON-RPC notification support\n(`ToolExtensionService.sendNotification` and\n`ExtensionConnection.onNotification`, first consumed by device log\nstreaming in https://github.com/flutter/flutter/pull/194964) and keeps\n`onError`/`onExit` ports open after the handshake so unexpected isolate\nexits or unhandled errors immediately fail pending `sendRequest(...,\ntimeout: null)` calls and close notification streams instead of hanging\nforever.\n\nPart of https://github.com/flutter/flutter/issues/190755\nPart of https://github.com/flutter/flutter/issues/190746",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "f61089673dfc28ec6ffc8e36fd073c5e0ab5d041",
      "old_mode": 33188,
      "old_path": "packages/flutter_tools/lib/src/experimental/extension_discovery.dart",
      "new_id": "f1fd011d03faf3ff3135c53ccb00969e05c50b03",
      "new_mode": 33188,
      "new_path": "packages/flutter_tools/lib/src/experimental/extension_discovery.dart"
    },
    {
      "type": "modify",
      "old_id": "40041447e63d8d7dea537374c19291792971c9be",
      "old_mode": 33188,
      "old_path": "packages/flutter_tools/packages/flutter_tools_extension/lib/src/protocol_base/provider.dart",
      "new_id": "be41c1dbb0e2ac8b954e5c1319c676dc06d71b6c",
      "new_mode": 33188,
      "new_path": "packages/flutter_tools/packages/flutter_tools_extension/lib/src/protocol_base/provider.dart"
    },
    {
      "type": "modify",
      "old_id": "0ea2842617060a35f6eae5cce3b7ad3d5956d743",
      "old_mode": 33188,
      "old_path": "packages/flutter_tools/packages/flutter_tools_extension/lib/src/protocol_base/service.dart",
      "new_id": "40c43fe49839bc6e7dadaa1d51f2eaca7baf2e60",
      "new_mode": 33188,
      "new_path": "packages/flutter_tools/packages/flutter_tools_extension/lib/src/protocol_base/service.dart"
    },
    {
      "type": "modify",
      "old_id": "4f2f195410c7af371d2d01f5964ade1f30e70fa9",
      "old_mode": 33188,
      "old_path": "packages/flutter_tools/test/general.shard/extension_protocol/extension_discovery_test.dart",
      "new_id": "11afa634856b67664c523925af6108161c1063f0",
      "new_mode": 33188,
      "new_path": "packages/flutter_tools/test/general.shard/extension_protocol/extension_discovery_test.dart"
    }
  ]
}
