)]}'
{
  "commit": "c28687d3cbb245bd66697013d94e47c4237e0453",
  "tree": "3ad48633a552a3df1f5ac82f32586307c5c4eb89",
  "parents": [
    "6469c0f30ab7fb1ce375828c6e98918eca38026e"
  ],
  "author": {
    "name": "Mouad Debbar",
    "email": "mdebbar@google.com",
    "time": "Mon Jun 15 14:20:14 2026 -0400"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Mon Jun 15 18:20:14 2026 +0000"
  },
  "message": "[web] Changes to WebParagraph configuration (#187188)\n\nChanges:\n\n- Drop `experimental` from the path and config flags.\n- **Reason**: Other experimental modes don\u0027t use the word \"experimental\"\n(e.g. skwasm_heavy, wimp), and I don\u0027t want it to be a breaking change\nto graduate out of the \"experimental\" phase.\n\u003chr\u003e\n\n- Instead of having WebParagraph be a third CK variant, make it a global\n`enableWebParagraph` flag.\n- **Reason**: In the future, we will support Skwasm and Wimp, so it\ndoesn\u0027t make sense to limit the flag to CanvasKit.\n\u003chr\u003e\n\n- Feature-detect Chrome\u0027s Text Cluster API and fallback to another CK\nvariant if it\u0027s not supported.\n- **Reason**: To allow for a smoother adoption path. Without this, all\nusers will have to do their own feature detection to adopt WebParagraph.\n\u003chr\u003e\n\n- Throw a clear message when Dart code is in WebParagraph mode but the\ndownloaded CK variant doesn\u0027t support WebParagraph.\n- **Reason**: I was bit by this multiple times. It shouldn\u0027t happen\nanymore, but if it does, I want the error message to be clear instead of\nsome random failure.\n\n\u003chr\u003e\n\nFixes https://github.com/flutter/flutter/issues/186215\nPart of https://github.com/flutter/flutter/issues/172561\n\n---------\n\nCo-authored-by: gemini-code-assist[bot] \u003c176961590+gemini-code-assist[bot]@users.noreply.github.com\u003e",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "e818bc9064788a9691e9554849104e8e572d62a5",
      "old_mode": 33188,
      "old_path": "engine/src/flutter/ci/builders/linux_web_engine_test.json",
      "new_id": "54f200d21f62a2e5dd3fb9307400e005221aeb37",
      "new_mode": 33188,
      "new_path": "engine/src/flutter/ci/builders/linux_web_engine_test.json"
    },
    {
      "type": "modify",
      "old_id": "6746c43560334d0b27b3d6de2403d8eca8f366ca",
      "old_mode": 33188,
      "old_path": "engine/src/flutter/lib/web_ui/dev/build.dart",
      "new_id": "507e235d2351f71351664b034109ae8f0f36fa6c",
      "new_mode": 33188,
      "new_path": "engine/src/flutter/lib/web_ui/dev/build.dart"
    },
    {
      "type": "modify",
      "old_id": "7c7aa2bbc80714a6b96212260dfb92bb2bc31f0d",
      "old_mode": 33188,
      "old_path": "engine/src/flutter/lib/web_ui/dev/felt_config.dart",
      "new_id": "e18fe1830781328afd1e146506a0cdc9dc10e6a8",
      "new_mode": 33188,
      "new_path": "engine/src/flutter/lib/web_ui/dev/felt_config.dart"
    },
    {
      "type": "modify",
      "old_id": "e95e0b3f0a4b32b38dbff8ea76834849d7a016ee",
      "old_mode": 33188,
      "old_path": "engine/src/flutter/lib/web_ui/dev/steps/copy_artifacts_step.dart",
      "new_id": "ed1b2010dc9f1fc5eb84910c02ff86ce3132ce13",
      "new_mode": 33188,
      "new_path": "engine/src/flutter/lib/web_ui/dev/steps/copy_artifacts_step.dart"
    },
    {
      "type": "modify",
      "old_id": "2657f60cc4ffb1faf583e6fb48c2018ff357f70c",
      "old_mode": 33188,
      "old_path": "engine/src/flutter/lib/web_ui/dev/steps/run_suite_step.dart",
      "new_id": "c0b304d6df570bf605dfaed93721a980ce0a4895",
      "new_mode": 33188,
      "new_path": "engine/src/flutter/lib/web_ui/dev/steps/run_suite_step.dart"
    },
    {
      "type": "modify",
      "old_id": "d66c374d24381a625311cb7a246c35b6392eb8a0",
      "old_mode": 33188,
      "old_path": "engine/src/flutter/lib/web_ui/dev/test_platform.dart",
      "new_id": "f2bf537ae880f800c3b86e98490d3406c5ffae96",
      "new_mode": 33188,
      "new_path": "engine/src/flutter/lib/web_ui/dev/test_platform.dart"
    },
    {
      "type": "modify",
      "old_id": "ec6e3cba4eb5c3a29717efbbdea178886c8aa658",
      "old_mode": 33188,
      "old_path": "engine/src/flutter/lib/web_ui/dev/test_runner.dart",
      "new_id": "3351a286c5096b3e11569cf685c4ae5c72ba9c38",
      "new_mode": 33188,
      "new_path": "engine/src/flutter/lib/web_ui/dev/test_runner.dart"
    },
    {
      "type": "modify",
      "old_id": "8a3dd343be43e3c8ca9f564c8b1afa22f0669d8b",
      "old_mode": 33188,
      "old_path": "engine/src/flutter/lib/web_ui/flutter_js/src/browser_environment.js",
      "new_id": "24d5e3d8de593faec621e1c0cb0c249f9d513554",
      "new_mode": 33188,
      "new_path": "engine/src/flutter/lib/web_ui/flutter_js/src/browser_environment.js"
    },
    {
      "type": "modify",
      "old_id": "9c5231844d90658546e95fd99fc71bddf26424c5",
      "old_mode": 33188,
      "old_path": "engine/src/flutter/lib/web_ui/flutter_js/src/canvaskit_loader.js",
      "new_id": "cbb13176b4cb2451058f70d5309c9700a5e61005",
      "new_mode": 33188,
      "new_path": "engine/src/flutter/lib/web_ui/flutter_js/src/canvaskit_loader.js"
    },
    {
      "type": "modify",
      "old_id": "0f7a3bef00f2530a972ee0cfaf5bea90c8daa883",
      "old_mode": 33188,
      "old_path": "engine/src/flutter/lib/web_ui/flutter_js/src/types.d.ts",
      "new_id": "f69d6c8d56d4f2dfcaf589b5176b4981cedc7d6c",
      "new_mode": 33188,
      "new_path": "engine/src/flutter/lib/web_ui/flutter_js/src/types.d.ts"
    },
    {
      "type": "modify",
      "old_id": "56fa8931e3ba1fe0c5c3254d208464b56cb39d94",
      "old_mode": 33188,
      "old_path": "engine/src/flutter/lib/web_ui/lib/src/engine/browser_detection.dart",
      "new_id": "efdd374f4da96807dfc869fcbe1597ce7a9df6d6",
      "new_mode": 33188,
      "new_path": "engine/src/flutter/lib/web_ui/lib/src/engine/browser_detection.dart"
    },
    {
      "type": "modify",
      "old_id": "8fe11eda5d200bf55da27c899d36e388613a4814",
      "old_mode": 33188,
      "old_path": "engine/src/flutter/lib/web_ui/lib/src/engine/canvaskit/canvaskit_api.dart",
      "new_id": "2ff0e23b82b6c22f0bb88aea1bbea3daa7dbe8dd",
      "new_mode": 33188,
      "new_path": "engine/src/flutter/lib/web_ui/lib/src/engine/canvaskit/canvaskit_api.dart"
    },
    {
      "type": "modify",
      "old_id": "ee49833c3953e34448d1c66d2d506c0915fb82f3",
      "old_mode": 33188,
      "old_path": "engine/src/flutter/lib/web_ui/lib/src/engine/canvaskit/renderer.dart",
      "new_id": "e9e9819d4ac7b873dbc7e9c9899450c3fa46e6b5",
      "new_mode": 33188,
      "new_path": "engine/src/flutter/lib/web_ui/lib/src/engine/canvaskit/renderer.dart"
    },
    {
      "type": "modify",
      "old_id": "cb350d848aadb95a4aaeecbe3cf61ca7fcff8a2a",
      "old_mode": 33188,
      "old_path": "engine/src/flutter/lib/web_ui/lib/src/engine/configuration.dart",
      "new_id": "ad1256605e49f3cc590a7e7a59cb3005d044f0a9",
      "new_mode": 33188,
      "new_path": "engine/src/flutter/lib/web_ui/lib/src/engine/configuration.dart"
    },
    {
      "type": "modify",
      "old_id": "35605c8c1a0355542e712b5a304670e99bb9f9b4",
      "old_mode": 33188,
      "old_path": "engine/src/flutter/lib/web_ui/lib/src/engine/dom.dart",
      "new_id": "dbe8c12e8b7da4daa9668717b62ad3b2a0e6c498",
      "new_mode": 33188,
      "new_path": "engine/src/flutter/lib/web_ui/lib/src/engine/dom.dart"
    },
    {
      "type": "modify",
      "old_id": "ceb67509de0262496704fbdcfabe27b14fabb0ab",
      "old_mode": 33188,
      "old_path": "engine/src/flutter/lib/web_ui/test/canvaskit/canvaskit_api_test.dart",
      "new_id": "fda7d7554d2a39e1edd0579fd7d23a116e9ed3f8",
      "new_mode": 33188,
      "new_path": "engine/src/flutter/lib/web_ui/test/canvaskit/canvaskit_api_test.dart"
    },
    {
      "type": "modify",
      "old_id": "d564332008ec78de3e4d0d02eab2e36daa58a551",
      "old_mode": 33188,
      "old_path": "engine/src/flutter/lib/web_ui/test/felt_config.yaml",
      "new_id": "e79794f92fe3c68e4b901aced3b7b7035f5be8f5",
      "new_mode": 33188,
      "new_path": "engine/src/flutter/lib/web_ui/test/felt_config.yaml"
    },
    {
      "type": "modify",
      "old_id": "abe4ea09b29a8276c302483fdf8ae25eeb8ad806",
      "old_mode": 33188,
      "old_path": "engine/src/flutter/third_party/canvaskit/BUILD.gn",
      "new_id": "92536dda90e3648f984cea24cca829fc10fdd33c",
      "new_mode": 33188,
      "new_path": "engine/src/flutter/third_party/canvaskit/BUILD.gn"
    },
    {
      "type": "modify",
      "old_id": "679f05334b53d363397896a02f1c39111a85ec6c",
      "old_mode": 33188,
      "old_path": "engine/src/flutter/web_sdk/BUILD.gn",
      "new_id": "a7bd3f4a2e1ecff90261e3b4073b6c349bf8ce47",
      "new_mode": 33188,
      "new_path": "engine/src/flutter/web_sdk/BUILD.gn"
    }
  ]
}
