)]}'
{
  "commit": "ce7f5479882fca5aafb5cc7bf94922e369b430ba",
  "tree": "df2eb9b0fd7f813663adc34704a1278f0e0c7ca3",
  "parents": [
    "94adff08c82253d148352292b74e3b7fefe0af7d"
  ],
  "author": {
    "name": "Sam Rawlins",
    "email": "srawlins@google.com",
    "time": "Thu Oct 22 10:20:32 2026 -0700"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Thu Oct 22 10:20:32 2026 -0700"
  },
  "message": "Use dashTool and dashIdeName to identify the launching IDE (#10037)\n\nUse dashTool and dashIdeName to identify the launching IDE\n\nIDE integrations now pass the `dashTool` and `dashIdeName` query\nparameters when they launch or embed DevTools, alongside the legacy\n`ide` parameter:\n\n* `dashTool` is the canonical label of the Dash tool that hosts\n  DevTools, such as `vscode-plugins` or `intellij-plugins`. It is shared\n  by every variant of an IDE that uses the same plugin; VS Code, Cursor\n  and Antigravity all pass `vscode-plugins`.\n* `dashIdeName` is the name of the IDE, such as `Visual Studio Code`,\n  `Cursor` or `Android Studio`. Its values are open-ended, so it is only\n  suitable for display and diagnostics.\n\nThe legacy `ide` parameter (`VSCode`, `Android-Studio`, `IntelliJ-IDEA`)\nis an ad-hoc vocabulary that cannot describe new IDEs or forks of IDEs,\nand it is expected to be removed once IDE integrations have passed\n`dashTool` and `dashIdeName` for long enough (at least two years). This\nchange moves DevTools over to the new parameters, while remaining\ncompatible with IDE integrations that only pass `ide`:\n\n* DevToolsQueryParams gains `dashTool`, `dashIdeName`, `ideDisplayName`\n  (`dashIdeName`, falling back to `ide`) and `isVsCode`. `isVsCode` is\n  true when `dashTool` is `vscode-plugins` or when `ide` is `VSCode`.\n  The `ide` getter is documented as legacy, with a TODO to remove it.\n* The two checks of `ide \u003d\u003d \u0027VSCode\u0027` now use `isVsCode`: the choice of\n  docs that the Property Editor links to, and the decision not to notify\n  users that DevTools fell back from WebAssembly to JavaScript when\n  embedded in VS Code, which disables cross-origin isolation.\n* A survey\u0027s `devEnvironments` may now list `dashTool` labels (like\n  `vscode-plugins`) as well as the legacy `ide` values (like `VSCode`).\n  The legacy `VSCode` environment also matches VS Code forks. The\n  matching moves to `meetsEnvironmentRequirementFor`, which takes the\n  query parameters as an argument so that it can be unit tested. Older\n  versions of DevTools only know the legacy values, so surveys that need\n  to reach them should keep listing those.\n* The environment details that DevTools pre-fills into bug reports use\n  `ideDisplayName`, so they name the actual IDE (like Cursor).\n\nAnalytics are not changed by this commit. `Event.devtoolsEvent` in\n`package:unified_analytics` does not accept `dashTool` or `dashIdeName`\nyet, so DevTools continues to report only the legacy `ide` value. That\nneeds a change to `unified_analytics`, and follows once it is published.\n\nPart of https://github.com/flutter/devtools/issues/9811",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "b275fa688f425cb803a6d99e5c00dab78c0d2178",
      "old_mode": 33188,
      "old_path": "packages/devtools_app/lib/src/shared/managers/survey.dart",
      "new_id": "271bd95f9de61b01d41677768ebc099e7e970893",
      "new_mode": 33188,
      "new_path": "packages/devtools_app/lib/src/shared/managers/survey.dart"
    },
    {
      "type": "modify",
      "old_id": "27191349d24b0f81745b49ce1ebe6bcd18a100af",
      "old_mode": 33188,
      "old_path": "packages/devtools_app/lib/src/shared/preferences/preferences.dart",
      "new_id": "e1d3bbc6ce6c487f1cd82eb7115f6169c38ef69c",
      "new_mode": 33188,
      "new_path": "packages/devtools_app/lib/src/shared/preferences/preferences.dart"
    },
    {
      "type": "modify",
      "old_id": "7bd99f3321618701cdc46580f09a86bbc8988df4",
      "old_mode": 33188,
      "old_path": "packages/devtools_app/lib/src/shared/primitives/query_parameters.dart",
      "new_id": "dfa86b0fb81cb1bc64088df8305a1224cf77889d",
      "new_mode": 33188,
      "new_path": "packages/devtools_app/lib/src/shared/primitives/query_parameters.dart"
    },
    {
      "type": "modify",
      "old_id": "eae789f69b67c0d9a88dfccfae2b3ad99b1f9609",
      "old_mode": 33188,
      "old_path": "packages/devtools_app/lib/src/shared/utils/utils.dart",
      "new_id": "9dfbb9fc9460a941acc760f35ebaa857d5f1acc4",
      "new_mode": 33188,
      "new_path": "packages/devtools_app/lib/src/shared/utils/utils.dart"
    },
    {
      "type": "modify",
      "old_id": "da6dda6a7ebb183062104a96b5b79f0e07f463ed",
      "old_mode": 33188,
      "old_path": "packages/devtools_app/lib/src/standalone_ui/ide_shared/property_editor/property_editor_panel.dart",
      "new_id": "e96b008a7562e4e06696402486708f8f04edf146",
      "new_mode": 33188,
      "new_path": "packages/devtools_app/lib/src/standalone_ui/ide_shared/property_editor/property_editor_panel.dart"
    },
    {
      "type": "modify",
      "old_id": "eee3fe8ab58dd856a46a436a4bee8e1b22ca81e2",
      "old_mode": 33188,
      "old_path": "packages/devtools_app/test/shared/managers/survey_test.dart",
      "new_id": "44a5e05ed92bc7e43a0756582b1d7888ac5ca525",
      "new_mode": 33188,
      "new_path": "packages/devtools_app/test/shared/managers/survey_test.dart"
    },
    {
      "type": "modify",
      "old_id": "9f70cf598d4e5476f09dc7ccf62a7aa15f47c652",
      "old_mode": 33188,
      "old_path": "packages/devtools_app/test/shared/primitives/query_parameters_test.dart",
      "new_id": "1d926a24178ccf7929b4c300cf9038e255408131",
      "new_mode": 33188,
      "new_path": "packages/devtools_app/test/shared/primitives/query_parameters_test.dart"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "8a9a44b9e186421f8e04c9b780ecae0907a3c155",
      "new_mode": 33188,
      "new_path": "packages/devtools_app/test/standalone_ui/ide_shared/property_editor/property_editor_panel_test.dart"
    }
  ]
}
