)]}'
{
  "log": [
    {
      "commit": "3b4ef3e9ec78f7051a5da07f448686bb5813db42",
      "tree": "63d30cdc0e20c77b963481e1909434da47506cd4",
      "parents": [
        "c2890cc34067c99fd24ae673b3c5f4c9eea8d87d"
      ],
      "author": {
        "name": "Jason Simmons",
        "email": "jason-simmons@users.noreply.github.com",
        "time": "Wed May 13 16:31:36 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 13 16:31:36 2026 +0000"
      },
      "message": "Update the Flutter Gallery web app template files to support running with Wasm (#186268)"
    },
    {
      "commit": "c2890cc34067c99fd24ae673b3c5f4c9eea8d87d",
      "tree": "456c7019f8c3b61d0dbc8df6f0507c6b80ea2996",
      "parents": [
        "f48ab46fc3d182e8db0e70ea8eff376d2f38c275"
      ],
      "author": {
        "name": "Jason Simmons",
        "email": "jason-simmons@users.noreply.github.com",
        "time": "Wed May 13 14:54:47 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 13 14:54:47 2026 +0000"
      },
      "message": "[web] Use heap allocation for buffers that would consume too much space on the Wasm stack (#186228)\n\nSome Skwasm APIs use a StackScope to allocate buffers whose size depends\non the input given to the API. These buffers may exceed the default\nEmscripten stack size (64kb).\n\nThis PR calls Emscripten\u0027s malloc for buffers that are larger than a\nsize limit or that consume a high percentage of the remaining stack\nspace. The heap buffers will be freed when the StackScope exits.\n\nSee discussion at https://github.com/flutter/flutter/pull/185997\n\nFixes https://github.com/flutter/flutter/issues/185995\nFixes https://github.com/flutter/flutter/issues/182616"
    },
    {
      "commit": "f48ab46fc3d182e8db0e70ea8eff376d2f38c275",
      "tree": "41d3b00ba07aef0deff28e947484c09537940b3c",
      "parents": [
        "c6ff1d3854edccda7cdeec5bc0625e0cecdadbf8"
      ],
      "author": {
        "name": "engine-flutter-autoroll",
        "email": "engine-flutter-autoroll@skia.org",
        "time": "Wed May 13 05:15:38 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 13 09:15:38 2026 +0000"
      },
      "message": "Roll Skia from 56ca5896c0d9 to 27f7bba22600 (3 revisions) (#186444)\n\nhttps://skia.googlesource.com/skia.git/+log/56ca5896c0d9..27f7bba22600\n\n2026-05-13 gauravkum@microsoft.com [Fonts] Add CBDT alpha bitmap test\nfont generation\n2026-05-13 skia-autoroll@skia-public.iam.gserviceaccount.com Roll\nvulkan-deps from 1380a5152f43 to 1b6c53ba0f23 (8 revisions)\n2026-05-13 skia-autoroll@skia-public.iam.gserviceaccount.com Roll ANGLE\nfrom 4a6d53434044 to 52d177bd7e42 (10 revisions)\n\nIf this roll has caused a breakage, revert this CL and stop the roller\nusing the controls here:\nhttps://autoroll.skia.org/r/skia-flutter-autoroll\nPlease CC codefu@google.com,jmbetancourt@google.com,kjlubick@google.com\non the revert to ensure that a human\nis aware of the problem.\n\nTo file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry\nTo file a bug in Flutter:\nhttps://github.com/flutter/flutter/issues/new/choose\n\nTo report a problem with the AutoRoller itself, please file a bug:\nhttps://issues.skia.org/issues/new?component\u003d1389291\u0026template\u003d1850622\n\nDocumentation for the AutoRoller is here:\nhttps://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md"
    },
    {
      "commit": "c6ff1d3854edccda7cdeec5bc0625e0cecdadbf8",
      "tree": "0cd0806d32599b6c40b9d64a7953db2a8dabcdf0",
      "parents": [
        "580b7dbf81cab48209302f8736f1ac84d5a5956f"
      ],
      "author": {
        "name": "engine-flutter-autoroll",
        "email": "engine-flutter-autoroll@skia.org",
        "time": "Wed May 13 03:12:28 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 13 07:12:28 2026 +0000"
      },
      "message": "Roll Fuchsia Linux SDK from z7ICmPtn4hspu02zk... to y6uQHA5xUN83IF395... (#186442)\n\nIf this roll has caused a breakage, revert this CL and stop the roller\nusing the controls here:\nhttps://autoroll.skia.org/r/fuchsia-linux-sdk-flutter\nPlease CC codefu@google.com,zra@google.com on the revert to ensure that\na human\nis aware of the problem.\n\nTo file a bug in Flutter:\nhttps://github.com/flutter/flutter/issues/new/choose\n\nTo report a problem with the AutoRoller itself, please file a bug:\nhttps://issues.skia.org/issues/new?component\u003d1389291\u0026template\u003d1850622\n\nDocumentation for the AutoRoller is here:\nhttps://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md"
    },
    {
      "commit": "580b7dbf81cab48209302f8736f1ac84d5a5956f",
      "tree": "fb466eafb6a6faa4298d38ad365c3ec69972cac8",
      "parents": [
        "828fca31d7eb4f7806602b3aabafd66a76358461"
      ],
      "author": {
        "name": "engine-flutter-autoroll",
        "email": "engine-flutter-autoroll@skia.org",
        "time": "Wed May 13 02:48:29 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 13 06:48:29 2026 +0000"
      },
      "message": "Roll Skia from 6385958d2feb to 56ca5896c0d9 (1 revision) (#186441)\n\nhttps://skia.googlesource.com/skia.git/+log/6385958d2feb..56ca5896c0d9\n\n2026-05-13 skia-autoroll@skia-public.iam.gserviceaccount.com Roll Skia\nInfra from 4bf523d4b47c to 472ab5b3c3b9 (15 revisions)\n\nIf this roll has caused a breakage, revert this CL and stop the roller\nusing the controls here:\nhttps://autoroll.skia.org/r/skia-flutter-autoroll\nPlease CC codefu@google.com,jmbetancourt@google.com,kjlubick@google.com\non the revert to ensure that a human\nis aware of the problem.\n\nTo file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry\nTo file a bug in Flutter:\nhttps://github.com/flutter/flutter/issues/new/choose\n\nTo report a problem with the AutoRoller itself, please file a bug:\nhttps://issues.skia.org/issues/new?component\u003d1389291\u0026template\u003d1850622\n\nDocumentation for the AutoRoller is here:\nhttps://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md"
    },
    {
      "commit": "828fca31d7eb4f7806602b3aabafd66a76358461",
      "tree": "5f82c93ab308735b36451404577acf99b149458a",
      "parents": [
        "5196f64d04c9340b858750f8d187bd7c3ef40084"
      ],
      "author": {
        "name": "engine-flutter-autoroll",
        "email": "engine-flutter-autoroll@skia.org",
        "time": "Tue May 12 23:54:32 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 13 03:54:32 2026 +0000"
      },
      "message": "Roll Dart SDK from 9576691c37d8 to 8e30b88e4d5a (1 revision) (#186429)\n\nhttps://dart.googlesource.com/sdk.git/+log/9576691c37d8..8e30b88e4d5a\n\n2026-05-06 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com\nVersion 3.13.0-104.0.dev\n\nIf this roll has caused a breakage, revert this CL and stop the roller\nusing the controls here:\nhttps://autoroll.skia.org/r/dart-sdk-flutter\nPlease CC codefu@google.com,dart-vm-team@google.com on the revert to\nensure that a human\nis aware of the problem.\n\nTo file a bug in Flutter:\nhttps://github.com/flutter/flutter/issues/new/choose\n\nTo report a problem with the AutoRoller itself, please file a bug:\nhttps://issues.skia.org/issues/new?component\u003d1389291\u0026template\u003d1850622\n\nDocumentation for the AutoRoller is here:\nhttps://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md"
    },
    {
      "commit": "5196f64d04c9340b858750f8d187bd7c3ef40084",
      "tree": "a4ab79d2b4da3ee9f00b353c255e72a1adaf9829",
      "parents": [
        "f13c8ea504624df4e6feed7506c638606a2a88a6"
      ],
      "author": {
        "name": "engine-flutter-autoroll",
        "email": "engine-flutter-autoroll@skia.org",
        "time": "Tue May 12 22:16:39 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 13 02:16:39 2026 +0000"
      },
      "message": "Roll Skia from 77a21bc723dc to 6385958d2feb (9 revisions) (#186428)\n\nhttps://skia.googlesource.com/skia.git/+log/77a21bc723dc..6385958d2feb\n\n2026-05-13\nrecipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com\nRoll recipe dependencies (trivial).\n2026-05-12 nicolettep@google.com [graphite] Cache single-texture\nBindGroups on DawnTexture\n2026-05-12 kjlubick@google.com Fix overflow in FT bounding boxes\n2026-05-12 nicolettep@google.com [graphite] Add generalized\ncreateBindGroup(...) to DawnResourceProvider\n2026-05-12 kjlubick@google.com Force\nSkPictureBackedGlyphDrawable::MakeFromBuffer to never use sksl\n2026-05-12 kjlubick@google.com Use more standard AVX512 and AVX2 flags\n2026-05-12 michaelludwig@google.com [graphite] Fix alpha-only handling\nwhen CSXform steps need unpremul\n2026-05-12 skia-autoroll@skia-public.iam.gserviceaccount.com Roll\nvulkan-deps from c95bf9c5e989 to 1380a5152f43 (2 revisions)\n2026-05-12 thomsmit@google.com [graphite] add sparse strips tiler bench\n\nIf this roll has caused a breakage, revert this CL and stop the roller\nusing the controls here:\nhttps://autoroll.skia.org/r/skia-flutter-autoroll\nPlease CC codefu@google.com,jmbetancourt@google.com,kjlubick@google.com\non the revert to ensure that a human\nis aware of the problem.\n\nTo file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry\nTo file a bug in Flutter:\nhttps://github.com/flutter/flutter/issues/new/choose\n\nTo report a problem with the AutoRoller itself, please file a bug:\nhttps://issues.skia.org/issues/new?component\u003d1389291\u0026template\u003d1850622\n\nDocumentation for the AutoRoller is here:\nhttps://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md"
    },
    {
      "commit": "f13c8ea504624df4e6feed7506c638606a2a88a6",
      "tree": "d7ad87a86782e80cfcc78c72c582c4ad1abcc14e",
      "parents": [
        "4d019c4cce4212a1b2a3fed6c03253b4e59be237"
      ],
      "author": {
        "name": "Alexander Aks\u0027onov",
        "email": "164032450+AlexEduV@users.noreply.github.com",
        "time": "Wed May 13 04:19:35 2026 +0300"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 13 01:19:35 2026 +0000"
      },
      "message": "Docs/improving docs for semantics UI lib (#186125)\n\n\u003c!--\nThanks for filing a pull request!\nReviewers are typically assigned within a week of filing a request.\nTo learn more about code review, see our documentation on Tree Hygiene:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md\n--\u003e\n\nFixed typos in semantics documentation across 3 files.\n\n## Pre-launch Checklist\n\n- [x] I read the [Contributor Guide] and followed the process outlined\nthere for submitting PRs.\n- [x] I read the [AI contribution guidelines] and understand my\nresponsibilities, or I am not using AI tools.\n- [x] I read the [Tree Hygiene] wiki page, which explains my\nresponsibilities.\n- [x] I read and followed the [Flutter Style Guide], including [Features\nwe expect every widget to implement].\n- [x] I signed the [CLA].\n- [ ] I listed at least one issue that this PR fixes in the description\nabove.\n- [x] I updated/added relevant documentation (doc comments with `///`).\n- [ ] I added new tests to check the change I am making, or this PR is\n[test-exempt].\n- [ ] I followed the [breaking change policy] and added [Data Driven\nFixes] where supported.\n- [ ] All existing and new tests are passing.\n\nIf you need help, consider asking for advice on the #hackers-new channel\non [Discord].\n\nIf this change needs to override an active code freeze, provide a\ncomment explaining why. The code freeze workflow can be overridden by\ncode reviewers. See pinned issues for any active code freezes with\nguidance.\n\n**Note**: The Flutter team is currently trialing the use of [Gemini Code\nAssist for\nGitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code).\nComments from the `gemini-code-assist` bot should not be taken as\nauthoritative feedback from the Flutter team. If you find its comments\nuseful you can update your code accordingly, but if you are unsure or\ndisagree with the feedback, please feel free to wait for a Flutter team\nmember\u0027s review for guidance on which automated comments should be\naddressed.\n\n\u003c!-- Links --\u003e\n[Contributor Guide]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview\n[AI contribution guidelines]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#ai-contribution-guidelines\n[Tree Hygiene]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md\n[test-exempt]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests\n[Flutter Style Guide]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md\n[Features we expect every widget to implement]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement\n[CLA]: https://cla.developers.google.com/\n[flutter/tests]: https://github.com/flutter/tests\n[breaking change policy]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes\n[Discord]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md\n[Data Driven Fixes]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md"
    },
    {
      "commit": "4d019c4cce4212a1b2a3fed6c03253b4e59be237",
      "tree": "73c6b8d8aa66e24b865a8e9027eada3490192e2f",
      "parents": [
        "d7259dc6b00ce78d35e975b8c74ab10ee8a282d8"
      ],
      "author": {
        "name": "Jason Simmons",
        "email": "jason-simmons@users.noreply.github.com",
        "time": "Tue May 12 23:48:00 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 12 23:48:00 2026 +0000"
      },
      "message": "[Tool] Support glob patterns when parsing workspaces in FlutterProject (#185715)\n\nFixes https://github.com/flutter/flutter/issues/185654\n\nSee\nhttps://dart.googlesource.com/pub/+/4e68fd9842f1204a9d556eb1d75f37350e1d851d"
    },
    {
      "commit": "d7259dc6b00ce78d35e975b8c74ab10ee8a282d8",
      "tree": "9b25ee7128160b3df5cb95ad4b9805513efb60e7",
      "parents": [
        "6d89752d91d764c8d0d5dca3f160df9048bfc639"
      ],
      "author": {
        "name": "Nicoreia",
        "email": "nico.reiab@gmail.com",
        "time": "Wed May 13 01:47:58 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 12 23:47:58 2026 +0000"
      },
      "message": "docs: fix overriden -\u003e overridden in MediaQueryData dartdoc (#186323)\n\n## Summary\n\nFixes three `overriden` -\u003e `overridden` typos in the `MediaQueryData`\ndartdoc inside `media_query.dart`. Dartdoc-only — no public API or\nbehavior is touched.\n\n## Changes\n\n- `packages/flutter/lib/src/widgets/media_query.dart`\n- line 710: `[TextStyle.height] and [StrutStyle.height] are overriden\nby` -\u003e `... are overridden by`\n- line 725: `[TextStyle.letterSpacing] is overriden by` -\u003e `... is\noverridden by`\n- line 739: `[TextStyle.wordSpacing] is overriden by` -\u003e `... is\noverridden by`\n\n## Tests\n\nNo tests added or modified. Comment-only change; no executable code\ntouched.\n\n## Notes for maintainers\n\n- Mechanical typo fix in dartdoc. Human-authored (Nicoreia) with AI\ntooling assistance; scope is intentionally minimal per Flutter\u0027s AI\ncontribution policy.\n- No `material/` or `cupertino/` paths are touched, so the active code\nfreeze is not impacted.\n- Companion to #186319, #186320, and the parallel typo PRs in\n`flutter_tools` and `widget_inspector_test`.\n\n## Pre-launch Checklist\n\n- [x] I read the [Contributor Guide] and followed the process outlined\nthere for submitting PRs.\n- [x] I read the [Tree Hygiene] page and followed its process for\nsubmitting this PR.\n- [x] I read and followed the [Flutter Style Guide].\n- [x] I signed the [CLA].\n- [x] I listed at least one issue that this PR fixes in the description\nabove.\n- [x] I updated/added relevant documentation.\n- [x] All existing and new tests are passing.\n\n[Contributor Guide]:\nhttps://github.com/flutter/flutter/blob/master/docs/contributing/Tree-hygiene.md#overview\n[Tree Hygiene]:\nhttps://github.com/flutter/flutter/blob/master/docs/contributing/Tree-hygiene.md\n[Flutter Style Guide]:\nhttps://github.com/flutter/flutter/blob/master/docs/contributing/Style-guide-for-Flutter-repo.md\n[CLA]: https://cla.developers.google.com/"
    },
    {
      "commit": "6d89752d91d764c8d0d5dca3f160df9048bfc639",
      "tree": "7b7c07272f2be8732cb6dee5f7e5aa11271563c1",
      "parents": [
        "aafadb05093d6a07b7070452a0f068001e9a3e64"
      ],
      "author": {
        "name": "Navaron Bracke",
        "email": "brackenavaron@gmail.com",
        "time": "Wed May 13 01:46:05 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 12 23:46:05 2026 +0000"
      },
      "message": "[Test cross imports] No material in `test/foundation`, `test/gestures`, `test/semantics`, `test/services` (#186144)\n\nThis PR fixes the cross imports under\n- `flutter/test/foundation`\n- `flutter/test/gestures`\n- `flutter/test/semantics`\n- `flutter/test/services`\n\nand some from `flutter/test/painting`\n\nPart of https://github.com/flutter/flutter/issues/177028\n\n*If you had to change anything in the [flutter/tests] repo, include a\nlink to the migration guide as per the [breaking change policy].*\n\n## Pre-launch Checklist\n\n- [x] I read the [Contributor Guide] and followed the process outlined\nthere for submitting PRs.\n- [x] I read the [AI contribution guidelines] and understand my\nresponsibilities, or I am not using AI tools.\n- [x] I read the [Tree Hygiene] wiki page, which explains my\nresponsibilities.\n- [x] I read and followed the [Flutter Style Guide], including [Features\nwe expect every widget to implement].\n- [x] I signed the [CLA].\n- [x] I listed at least one issue that this PR fixes in the description\nabove.\n- [x] I updated/added relevant documentation (doc comments with `///`).\n- [x] I added new tests to check the change I am making, or this PR is\n[test-exempt].\n- [x] I followed the [breaking change policy] and added [Data Driven\nFixes] where supported.\n- [x] All existing and new tests are passing.\n\nIf you need help, consider asking for advice on the #hackers-new channel\non [Discord].\n\nIf this change needs to override an active code freeze, provide a\ncomment explaining why. The code freeze workflow can be overridden by\ncode reviewers. See pinned issues for any active code freezes with\nguidance.\n\n**Note**: The Flutter team is currently trialing the use of [Gemini Code\nAssist for\nGitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code).\nComments from the `gemini-code-assist` bot should not be taken as\nauthoritative feedback from the Flutter team. If you find its comments\nuseful you can update your code accordingly, but if you are unsure or\ndisagree with the feedback, please feel free to wait for a Flutter team\nmember\u0027s review for guidance on which automated comments should be\naddressed.\n\n\u003c!-- Links --\u003e\n[Contributor Guide]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview\n[AI contribution guidelines]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#ai-contribution-guidelines\n[Tree Hygiene]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md\n[test-exempt]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests\n[Flutter Style Guide]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md\n[Features we expect every widget to implement]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement\n[CLA]: https://cla.developers.google.com/\n[flutter/tests]: https://github.com/flutter/tests\n[breaking change policy]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes\n[Discord]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md\n[Data Driven Fixes]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md"
    },
    {
      "commit": "aafadb05093d6a07b7070452a0f068001e9a3e64",
      "tree": "d5c255a99cc7c17c78e94c0f7c406e0ecee6e5d2",
      "parents": [
        "d62c7ca79f96fa12f34977c608c1a2061d5eddea"
      ],
      "author": {
        "name": "Nicoreia",
        "email": "nico.reiab@gmail.com",
        "time": "Wed May 13 01:46:04 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 12 23:46:04 2026 +0000"
      },
      "message": "docs: fix \"tha\" -\u003e \"that\" typo in widget_inspector_test comment (#186322)\n\n## Summary\n\nFixes a single-word typo (`tha` -\u003e `that`) in an inline comment inside\n`widget_inspector_test.dart`. Comment-only — no test logic,\nexpectations, or fixtures are modified.\n\n## Changes\n\n- `packages/flutter/test/widgets/widget_inspector_test.dart` line 3120:\n- `// Verify tha the regular getSelectedWidget method still returns` -\u003e\n`// Verify that the regular getSelectedWidget method still returns`\n\n## Tests\n\nNo tests added or modified. Comment-only change; no executable code\ntouched.\n\n## Notes for maintainers\n\n- Mechanical typo fix in a comment. Human-authored (Nicoreia) with AI\ntooling assistance; scope is intentionally minimal per Flutter\u0027s AI\ncontribution policy.\n- Companion to #186319, #186320, and the gradle/features/linux typo PR\nopened in parallel.\n\n## Pre-launch Checklist\n\n- [x] I read the [Contributor Guide] and followed the process outlined\nthere for submitting PRs.\n- [x] I read the [Tree Hygiene] page and followed its process for\nsubmitting this PR.\n- [x] I read and followed the [Flutter Style Guide].\n- [x] I signed the [CLA].\n- [x] I listed at least one issue that this PR fixes in the description\nabove.\n- [x] I updated/added relevant documentation.\n- [x] All existing and new tests are passing.\n\n[Contributor Guide]:\nhttps://github.com/flutter/flutter/blob/master/docs/contributing/Tree-hygiene.md#overview\n[Tree Hygiene]:\nhttps://github.com/flutter/flutter/blob/master/docs/contributing/Tree-hygiene.md\n[Flutter Style Guide]:\nhttps://github.com/flutter/flutter/blob/master/docs/contributing/Style-guide-for-Flutter-repo.md\n[CLA]: https://cla.developers.google.com/"
    },
    {
      "commit": "d62c7ca79f96fa12f34977c608c1a2061d5eddea",
      "tree": "ffad12d05661b26acca6a5d7a1e3bb58f5cedb08",
      "parents": [
        "4f1439cdeaf0a62a9ad718ad08c5b4d58c4e3a9d"
      ],
      "author": {
        "name": "Nicoreia",
        "email": "nico.reiab@gmail.com",
        "time": "Wed May 13 01:46:03 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 12 23:46:03 2026 +0000"
      },
      "message": "docs: Fix doubled-word typos in framework dartdoc (#186319)\n\n## Description\n\nRemoves accidentally duplicated words in `///` dartdoc comments in the\nframework (`the the`, `to to`). These strings appear in the public API\ndocs on api.flutter.dev. No runtime or API behavior change.\n\nAffected files:\n\n- `packages/flutter/lib/src/material/stepper.dart` (1 line)\n- `packages/flutter/lib/src/rendering/object.dart` (4 lines)\n- `packages/flutter/lib/src/semantics/semantics.dart` (1 line)\n- `packages/flutter/lib/src/widgets/form.dart` (1 line)\n- `packages/flutter/lib/src/widgets/layout_builder.dart` (2 lines)\n- `packages/flutter/lib/src/widgets/overlay.dart` (1 line)\n\n## Related issues\n\nDoc-only cleanup; not tied to a specific GitHub issue.\n\n## Tests\n\n- `flutter analyze` on the six touched files: `No issues found!`.\n- This change is test-exempt per Tree Hygiene (comments-only, no\nbehavior change).\n\n## Pre-launch Checklist\n\n- [x] I read the [Contributor Guide] and followed the process outlined\nthere for submitting PRs.\n- [x] I read the [AI contribution guidelines] and understand my\nresponsibilities.\n- [x] I read the [Tree Hygiene] wiki page, which explains my\nresponsibilities.\n- [x] I read and followed the [Flutter Style Guide].\n- [x] I signed the [CLA].\n- [x] This PR is comment-only and is test-exempt per Tree Hygiene.\n- [x] I followed the breaking change policy (no breaking changes).\n\n## AI / tooling disclosure\n\nThis PR was prepared with the assistance of an AI-powered editor\n(Cursor).\nThe diff is a mechanical fix of duplicated words in dartdoc comments; I\nreviewed every changed line before committing.\n\n[Contributor Guide]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview\n[AI contribution guidelines]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#ai-contribution-guidelines\n[Tree Hygiene]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md\n[Flutter Style Guide]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md\n[CLA]: https://cla.developers.google.com/"
    },
    {
      "commit": "4f1439cdeaf0a62a9ad718ad08c5b4d58c4e3a9d",
      "tree": "54b483ba44f5569dc982ae2768e8525e28b4e556",
      "parents": [
        "3efbfedaa325d004485fa6cb5e50b9221704c75b"
      ],
      "author": {
        "name": "flutter-pub-roller-bot",
        "email": "137456488+flutter-pub-roller-bot@users.noreply.github.com",
        "time": "Tue May 12 14:42:20 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 12 21:42:20 2026 +0000"
      },
      "message": "Roll pub packages (#186418)\n\nThis PR was generated by `flutter update-packages --force-upgrade`."
    },
    {
      "commit": "3efbfedaa325d004485fa6cb5e50b9221704c75b",
      "tree": "cf7732eeae9bdaad7c7381ad4a5544ddad1f1a8d",
      "parents": [
        "770e338d19d186a21ecfff8fda3b809d249c665a"
      ],
      "author": {
        "name": "gaaclarke",
        "email": "30870216+gaaclarke@users.noreply.github.com",
        "time": "Tue May 12 13:53:51 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 12 20:53:51 2026 +0000"
      },
      "message": "Bumped required mediatek vender sdk version. (#186405)\n\nfixes https://github.com/flutter/flutter/issues/186067\n\nPreviously we were gating vulkan usage for mediatek devices on the API\nversion. A better measure of the driver versions is the vender sdk\nversion. This PR switches us to use that and also bumps up the required\nversion to 32 since the bug was reported on version 31.\n\n## Pre-launch Checklist\n\n- [x] I read the [Contributor Guide] and followed the process outlined\nthere for submitting PRs.\n- [x] I read the [AI contribution guidelines] and understand my\nresponsibilities, or I am not using AI tools.\n- [x] I read the [Tree Hygiene] wiki page, which explains my\nresponsibilities.\n- [x] I read and followed the [Flutter Style Guide], including [Features\nwe expect every widget to implement].\n- [x] I signed the [CLA].\n- [x] I listed at least one issue that this PR fixes in the description\nabove.\n- [x] I updated/added relevant documentation (doc comments with `///`).\n- [x] I added new tests to check the change I am making, or this PR is\n[test-exempt].\n- [x] I followed the [breaking change policy] and added [Data Driven\nFixes] where supported.\n- [x] All existing and new tests are passing.\n\nIf you need help, consider asking for advice on the #hackers-new channel\non [Discord].\n\nIf this change needs to override an active code freeze, provide a\ncomment explaining why. The code freeze workflow can be overridden by\ncode reviewers. See pinned issues for any active code freezes with\nguidance.\n\n**Note**: The Flutter team is currently trialing the use of [Gemini Code\nAssist for\nGitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code).\nComments from the `gemini-code-assist` bot should not be taken as\nauthoritative feedback from the Flutter team. If you find its comments\nuseful you can update your code accordingly, but if you are unsure or\ndisagree with the feedback, please feel free to wait for a Flutter team\nmember\u0027s review for guidance on which automated comments should be\naddressed.\n\n\u003c!-- Links --\u003e\n[Contributor Guide]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview\n[AI contribution guidelines]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#ai-contribution-guidelines\n[Tree Hygiene]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md\n[test-exempt]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests\n[Flutter Style Guide]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md\n[Features we expect every widget to implement]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement\n[CLA]: https://cla.developers.google.com/\n[flutter/tests]: https://github.com/flutter/tests\n[breaking change policy]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes\n[Discord]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md\n[Data Driven Fixes]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md"
    },
    {
      "commit": "770e338d19d186a21ecfff8fda3b809d249c665a",
      "tree": "ad8854e697de80fc0b2709cedae1e1e87ccef49d",
      "parents": [
        "583dec70ff3a56f9dc99d985a3aaf714bfd229f2"
      ],
      "author": {
        "name": "Jenn Magder",
        "email": "magder@google.com",
        "time": "Tue May 12 13:52:42 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 12 20:52:42 2026 +0000"
      },
      "message": "Make DeepLinkJsonFromManifestTask Gradle task build cacheable (#185903)\n\nGradle build caching isn\u0027t on by default, but a developer can easily set\nit themselves via `org.gradle.caching\u003dtrue`. This change annotates\n`DeepLinkJsonFromManifestTask` gradle task with `@CacheableTask` so it\ncan be cached if _build_ caching is turned on (note, this is a separate\ncaching concept from the one used to decide what\u0027s dirty for incremental\nbuilds). The task is only generating a json file based on the\nAndroidManifest and manifest, and it already has clear inputs and\noutputs.\n\nAlso add `@PathSensitive(PathSensitivity.RELATIVE)` to the manifestFile\ninput so the cache is relocatable across directories.\n\n## Pre-launch Checklist\n\n- [x] I read the [Contributor Guide] and followed the process outlined\nthere for submitting PRs.\n- [x] I read the [AI contribution guidelines] and understand my\nresponsibilities, or I am not using AI tools.\n- [x] I read the [Tree Hygiene] wiki page, which explains my\nresponsibilities.\n- [x] I read and followed the [Flutter Style Guide], including [Features\nwe expect every widget to implement].\n- [x] I signed the [CLA].\n- [ ] I listed at least one issue that this PR fixes in the description\nabove.\n- [x] I updated/added relevant documentation (doc comments with `///`).\n- [x] I added new tests to check the change I am making, or this PR is\n[test-exempt].\n- [x] I followed the [breaking change policy] and added [Data Driven\nFixes] where supported.\n- [x] All existing and new tests are passing.\n\nIf you need help, consider asking for advice on the #hackers-new channel\non [Discord].\n\nIf this change needs to override an active code freeze, provide a\ncomment explaining why. The code freeze workflow can be overridden by\ncode reviewers. See pinned issues for any active code freezes with\nguidance.\n\n**Note**: The Flutter team is currently trialing the use of [Gemini Code\nAssist for\nGitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code).\nComments from the `gemini-code-assist` bot should not be taken as\nauthoritative feedback from the Flutter team. If you find its comments\nuseful you can update your code accordingly, but if you are unsure or\ndisagree with the feedback, please feel free to wait for a Flutter team\nmember\u0027s review for guidance on which automated comments should be\naddressed.\n\n\u003c!-- Links --\u003e\n[Contributor Guide]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview\n[AI contribution guidelines]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#ai-contribution-guidelines\n[Tree Hygiene]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md\n[test-exempt]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests\n[Flutter Style Guide]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md\n[Features we expect every widget to implement]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement\n[CLA]: https://cla.developers.google.com/\n[flutter/tests]: https://github.com/flutter/tests\n[breaking change policy]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes\n[Discord]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md\n[Data Driven Fixes]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md"
    },
    {
      "commit": "583dec70ff3a56f9dc99d985a3aaf714bfd229f2",
      "tree": "c70f8edab761912ab4dc237ab2b7bfba249b1e06",
      "parents": [
        "92a5797d83bd958001a0680b16fa11f076961b11"
      ],
      "author": {
        "name": "Muhammad Ishaq Khan",
        "email": "66727653+ishaq2321@users.noreply.github.com",
        "time": "Tue May 12 21:06:25 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 12 19:06:25 2026 +0000"
      },
      "message": "Harden dev tooling scripts against command injection and log leaks (#186076)\n\n## Description\nThis PR hardens several developer and CI scripts against command\ninjection, URL-splitting, and information disclosure. These were flagged\nas high-severity vulnerabilities by static analysis.\n\nFixes applied:\n* Properly quoted `$STAGING_DIR`, `${log_file}`, `$WRAPPER_TEMP_DIR`,\nand `$WRAPPER_SRC_URL` in Bash scripts to prevent arbitrary command\ninjection."
    },
    {
      "commit": "92a5797d83bd958001a0680b16fa11f076961b11",
      "tree": "4cbbc8f7193cf6c8b2e635c1024207eab82ab4c1",
      "parents": [
        "75713055381bec8a183eac318c262ae8c2defe7e"
      ],
      "author": {
        "name": "flutter-pub-roller-bot",
        "email": "137456488+flutter-pub-roller-bot@users.noreply.github.com",
        "time": "Tue May 12 12:02:28 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 12 19:02:28 2026 +0000"
      },
      "message": "Roll pub packages (#186274)\n\nThis PR was generated by `flutter update-packages --force-upgrade`."
    },
    {
      "commit": "75713055381bec8a183eac318c262ae8c2defe7e",
      "tree": "15a8e64623bf4d7f0d236a5b3acc22f304cacd9a",
      "parents": [
        "f77fa02177a75f344448f2e3b5a46350f33b33ef"
      ],
      "author": {
        "name": "Brandon DeRosier",
        "email": "bdero@google.com",
        "time": "Tue May 12 10:34:20 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 12 17:34:20 2026 +0000"
      },
      "message": "[Flutter GPU] Allow allocating multi-mip textures and overwriting specific (mip, slice) levels (#185890)\n\nFixes #185883\nFixes #145015\n\nThis is the Dart-side surfacing of two pieces of HAL functionality that\nFlutter GPU has not exposed: multiple mip levels per texture, and\naddressing a specific (mip level, slice) when uploading texture data.\n\nTogether they unblock the user-driven mipmap generation workflow that\nWebGPU and other modern HALs use, and prebaked mip-chain uploads (e.g.\nloading a DDS file with all mip levels populated). Per-mip-level render\nattachments still need to land before user-driven generation works\nend-to-end, tracked separately in #150455.\n\n## `mipLevelCount` on `GpuContext.createTexture`\n\nAdds a `mipLevelCount: int` parameter to `GpuContext.createTexture`\n(default `1`, matching previous behavior). The value is plumbed through\nto `TextureDescriptor.mip_count`, which the existing HAL already honors.\nOut-of-range values throw at the Dart layer with a clear message.\n`Texture.fullMipCount(width, height)` is a small helper that returns the\nmaximum chain length for a given texture size (`floor(log2(max(w, h))) +\n1`).\n\n## `mipLevel` and `slice` on `Texture.overwrite`\n\nAdds named parameters `mipLevel` (default 0) and `slice` (default 0) to\n`Texture.overwrite`. `slice` is bounded by the texture\u0027s `sliceCount` (1\nfor 2D textures, 6 for cubemap textures), which is also exposed as a\ngetter on `Texture`. Out-of-range values throw with specific error\nmessages.\n\nThe implementation switches off the deprecated `Texture::SetContents`\npath (which the HAL marks as \"use BlitPass::AddCopy instead\") and onto\n`BlitPass::AddCopy(BufferView, Texture, ...)`, which already accepts\n`mip_level` and `slice` and is implemented across every backend (Metal,\nVulkan, GLES). The flutter_gpu wrapper allocates a transient\nhost-visible staging `DeviceBuffer` with the user\u0027s data, records the\ncopy on a one-shot `BlitPass`, encodes, and submits via the context\u0027s\n`CommandQueue`. The OpenGLES raster-thread workaround is preserved.\n\nSide effect: the `StorageMode.hostVisible` restriction on\n`Texture.overwrite` is dropped. The old direct-`SetContents` path\nrequired host-visible memory; the new blit path can target any storage\nmode the backend can sample."
    },
    {
      "commit": "f77fa02177a75f344448f2e3b5a46350f33b33ef",
      "tree": "6baaba1ef25e71c31b6c51f656a57d33965872aa",
      "parents": [
        "23f6f5853f50c4ee200d9f6aa0f1015b36e70e3c"
      ],
      "author": {
        "name": "zhongliugo",
        "email": "zhongliu88889@gmail.com",
        "time": "Tue May 12 10:23:13 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 12 17:23:13 2026 +0000"
      },
      "message": "[web] Fix MenuAnchor dismiss when semantics enabled (#183093)\n\nFixes #167487\n\n**Problem**\nWhen semantics are enabled, `MenuAnchor` does not close when clicking\noutside it. `ClickDebouncer` was converting all debounced clicks to\n`SemanticsAction.tap`, which bypasses the pointer event pipeline.\n`TapRegionSurface` never saw a `PointerDownEvent`, so `onTapOutside` was\nnever called and the menu stayed open.\n\n**Fix**\n`TapRegionSurface` now registers a listener with\n`SemanticsBinding.addSemanticsActionListener` to intercept\n`SemanticsAction.tap` and `SemanticsAction.longPress` events. On each\naction, it hit-tests the render tree at the tapped node\u0027s center and\ncalls `onTapOutside`/`onTapInside` directly. The inside/outside\nclassification is extracted into a shared `_classifyRegions` method used\nby both the pointer and semantics paths.\n\n`ClickDebouncer.onClick` also calls `stopPropagation()` before flushing\npointer events for the `isListening: false` case, preventing a duplicate\nbrowser click.\n\nNote: `consumeOutsideTaps` cannot suppress semantics action propagation\ntoday. A follow-up API change similar to\n`WidgetsBindingObserver.handleStartBackGesture` would be needed. See the\nTODO in `_handleSemanticsAction`.\n\n**Demo**\n\nBefore change\nhttps://flutter-demo-14-before.web.app\n\nAfter change\nhttps://flutter-demo-14-after.web.app\n\nSteps: click **Open Menu** → click **Button A** outside the menu.  \nBefore: button fires but menu stays open. \nAfter: button fires and menu closes."
    },
    {
      "commit": "23f6f5853f50c4ee200d9f6aa0f1015b36e70e3c",
      "tree": "6810bb29810a596d769d9046f7784a0b2e7b13e3",
      "parents": [
        "49b97c57bfcf9ad8d8533877fc3b8f31285199b5"
      ],
      "author": {
        "name": "Loïc Sharma",
        "email": "737941+loic-sharma@users.noreply.github.com",
        "time": "Tue May 12 09:46:47 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 12 16:46:47 2026 +0000"
      },
      "message": "Add \u0027cp: review\u0027 label to the manual cherrypick process (#186158)"
    },
    {
      "commit": "49b97c57bfcf9ad8d8533877fc3b8f31285199b5",
      "tree": "e08c884a8ba6d5cdf6f342ae3d5d8ae9e618e7d3",
      "parents": [
        "70c706687a252530734c5aeafac409d6470add12"
      ],
      "author": {
        "name": "engine-flutter-autoroll",
        "email": "engine-flutter-autoroll@skia.org",
        "time": "Tue May 12 12:43:12 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 12 16:43:12 2026 +0000"
      },
      "message": "Roll Packages from 19ec8b861676 to 93cbed65f336 (3 revisions) (#186401)\n\nhttps://github.com/flutter/packages/compare/19ec8b861676...93cbed65f336\n\n2026-05-11 smihica@gmail.com [vector_graphics] Fix uncaught StateError\nin useHtmlRenderObject on CanvasKit / iOS Safari\n(flutter/packages#11685)\n2026-05-11 fondoger@outlook.com [vector_graphics_compiler] Add modern\nHSL color parsing (flutter/packages#11657)\n2026-05-11 git@reb0.org [ci] refactor: Cleanup tooling for handling arch\nbuild output \u003c\u003d Flutter v3.13.x (flutter/packages#11399)\n\nIf this roll has caused a breakage, revert this CL and stop the roller\nusing the controls here:\nhttps://autoroll.skia.org/r/flutter-packages-flutter-autoroll\nPlease CC flutter-ecosystem@google.com on the revert to ensure that a\nhuman\nis aware of the problem.\n\nTo file a bug in Flutter:\nhttps://github.com/flutter/flutter/issues/new/choose\n\nTo report a problem with the AutoRoller itself, please file a bug:\nhttps://issues.skia.org/issues/new?component\u003d1389291\u0026template\u003d1850622\n\nDocumentation for the AutoRoller is here:\nhttps://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md"
    },
    {
      "commit": "70c706687a252530734c5aeafac409d6470add12",
      "tree": "122659c5c1308ef6f9c85dcd8ba90ad8ab61a2b0",
      "parents": [
        "12ab46a0679825d37bde0b9dd241663ff1528b42"
      ],
      "author": {
        "name": "gaaclarke",
        "email": "30870216+gaaclarke@users.noreply.github.com",
        "time": "Tue May 12 09:37:20 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 12 16:37:20 2026 +0000"
      },
      "message": "Removes SDF option for macOS (always enabled) (#186265)\n\nfixes https://github.com/flutter/flutter/issues/185448\n\n## Pre-launch Checklist\n\n- [x] I read the [Contributor Guide] and followed the process outlined\nthere for submitting PRs.\n- [x] I read the [AI contribution guidelines] and understand my\nresponsibilities, or I am not using AI tools.\n- [x] I read the [Tree Hygiene] wiki page, which explains my\nresponsibilities.\n- [x] I read and followed the [Flutter Style Guide], including [Features\nwe expect every widget to implement].\n- [x] I signed the [CLA].\n- [x] I listed at least one issue that this PR fixes in the description\nabove.\n- [x] I updated/added relevant documentation (doc comments with `///`).\n- [x] I added new tests to check the change I am making, or this PR is\n[test-exempt].\n- [x] I followed the [breaking change policy] and added [Data Driven\nFixes] where supported.\n- [x] All existing and new tests are passing.\n\nIf you need help, consider asking for advice on the #hackers-new channel\non [Discord].\n\nIf this change needs to override an active code freeze, provide a\ncomment explaining why. The code freeze workflow can be overridden by\ncode reviewers. See pinned issues for any active code freezes with\nguidance.\n\n**Note**: The Flutter team is currently trialing the use of [Gemini Code\nAssist for\nGitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code).\nComments from the `gemini-code-assist` bot should not be taken as\nauthoritative feedback from the Flutter team. If you find its comments\nuseful you can update your code accordingly, but if you are unsure or\ndisagree with the feedback, please feel free to wait for a Flutter team\nmember\u0027s review for guidance on which automated comments should be\naddressed.\n\n\u003c!-- Links --\u003e\n[Contributor Guide]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview\n[AI contribution guidelines]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#ai-contribution-guidelines\n[Tree Hygiene]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md\n[test-exempt]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests\n[Flutter Style Guide]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md\n[Features we expect every widget to implement]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement\n[CLA]: https://cla.developers.google.com/\n[flutter/tests]: https://github.com/flutter/tests\n[breaking change policy]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes\n[Discord]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md\n[Data Driven Fixes]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md"
    },
    {
      "commit": "12ab46a0679825d37bde0b9dd241663ff1528b42",
      "tree": "b40b215faa6a691d429cf1c600945d29600ed0ab",
      "parents": [
        "9ca95e5f15a5be5bf5de1e2665a71d442b6612c0"
      ],
      "author": {
        "name": "Nicoreia",
        "email": "nico.reiab@gmail.com",
        "time": "Tue May 12 17:44:02 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 12 15:44:02 2026 +0000"
      },
      "message": "docs: fix typos in flutter_tools comments (#186321)\n\n## Summary\n\nFixes a handful of single-word typos found in `///` dartdoc and `//`\ninline comments inside `flutter_tools`. Comment-only — no public API, no\nbehavior, no test logic touched.\n\n## Changes\n\n- `packages/flutter_tools/lib/src/android/gradle_utils.dart`\n  - `space sytax` -\u003e `space syntax`\n  - `This vesion is NOT` -\u003e `This version is NOT`\n  - `dynamiclly added` -\u003e `dynamically added`\n  - `gradle can run successfuly` -\u003e `gradle can run successfully`\n- `Documenation is non continuous` -\u003e `Documentation is non continuous`\n(2 occurrences)\n- `KGP version handling is prefered` -\u003e `KGP version handling is\npreferred` (2 occurrences)\n- `packages/flutter_tools/lib/src/features.dart`\n- dartdoc: `Wether riscv64 support is enabled` -\u003e `Whether riscv64\nsupport is enabled`\n- inline: `This member is overriden in google3` -\u003e `This member is\noverridden in google3`\n- `packages/flutter_tools/lib/src/linux/linux_doctor.dart`\n  - dartdoc: `Requires tha [binary]` -\u003e `Requires that [binary]`\n\n## Tests\n\nNo tests added or modified. The change does not touch any executable\nline. Verified locally by re-grepping the modified files for residual\ninstances of each typo — none remain.\n\n## Notes for maintainers\n\n- Comment-only, mechanical fix. The author is human (Nicoreia) using AI\ntooling assistance, in line with Flutter\u0027s AI contribution policy: scope\nis small, reviewable, and contains no AI-generated logic.\n- No `material/` or `cupertino/` paths are touched, so the active code\nfreeze is not impacted.\n- Companion to #186319 and #186320, which fix related typos in framework\ndocs and other comments.\n\n## Pre-launch Checklist\n\n- [x] I read the [Contributor Guide] and followed the process outlined\nthere for submitting PRs.\n- [x] I read the [Tree Hygiene] page and followed its process for\nsubmitting this PR.\n- [x] I read and followed the [Flutter Style Guide].\n- [x] I signed the [CLA].\n- [x] I listed at least one issue that this PR fixes in the description\nabove.\n- [x] I updated/added relevant documentation.\n- [x] All existing and new tests are passing.\n\n[Contributor Guide]:\nhttps://github.com/flutter/flutter/blob/master/docs/contributing/Tree-hygiene.md#overview\n[Tree Hygiene]:\nhttps://github.com/flutter/flutter/blob/master/docs/contributing/Tree-hygiene.md\n[Flutter Style Guide]:\nhttps://github.com/flutter/flutter/blob/master/docs/contributing/Style-guide-for-Flutter-repo.md\n[CLA]: https://cla.developers.google.com/"
    },
    {
      "commit": "9ca95e5f15a5be5bf5de1e2665a71d442b6612c0",
      "tree": "8ed1c2a91c666ad1c123bfad4891e93317540382",
      "parents": [
        "2b7ca0c64d6feadf3ba7e894190698f357f37672"
      ],
      "author": {
        "name": "Victoria Ashworth",
        "email": "15619084+vashworth@users.noreply.github.com",
        "time": "Tue May 12 09:11:43 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 12 14:11:43 2026 +0000"
      },
      "message": "Pass XcodeBasedProject instead of String to functions in XcodeProjectInterpreter (#186378)\n\nPass `XcodeBasedProject` instead of the project path string.\n\nThis will enable us to be able to get more information about the project\n(other than just the project path) from places in `xcodeproj.dart`.\nNeeded for https://github.com/flutter/flutter/pull/185218,\nhttps://github.com/flutter/flutter/pull/186006/changes#r3191012567\n\n## Pre-launch Checklist\n\n- [x] I read the [Contributor Guide] and followed the process outlined\nthere for submitting PRs.\n- [x] I read the [AI contribution guidelines] and understand my\nresponsibilities, or I am not using AI tools.\n- [x] I read the [Tree Hygiene] wiki page, which explains my\nresponsibilities.\n- [x] I read and followed the [Flutter Style Guide], including [Features\nwe expect every widget to implement].\n- [x] I signed the [CLA].\n- [ ] I listed at least one issue that this PR fixes in the description\nabove.\n- [x] I updated/added relevant documentation (doc comments with `///`).\n- [x] I added new tests to check the change I am making, or this PR is\n[test-exempt].\n- [x] I followed the [breaking change policy] and added [Data Driven\nFixes] where supported.\n- [x] All existing and new tests are passing.\n\nIf you need help, consider asking for advice on the #hackers-new channel\non [Discord].\n\nIf this change needs to override an active code freeze, provide a\ncomment explaining why. The code freeze workflow can be overridden by\ncode reviewers. See pinned issues for any active code freezes with\nguidance.\n\n**Note**: The Flutter team is currently trialing the use of [Gemini Code\nAssist for\nGitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code).\nComments from the `gemini-code-assist` bot should not be taken as\nauthoritative feedback from the Flutter team. If you find its comments\nuseful you can update your code accordingly, but if you are unsure or\ndisagree with the feedback, please feel free to wait for a Flutter team\nmember\u0027s review for guidance on which automated comments should be\naddressed.\n\n\u003c!-- Links --\u003e\n[Contributor Guide]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview\n[AI contribution guidelines]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#ai-contribution-guidelines\n[Tree Hygiene]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md\n[test-exempt]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests\n[Flutter Style Guide]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md\n[Features we expect every widget to implement]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement\n[CLA]: https://cla.developers.google.com/\n[flutter/tests]: https://github.com/flutter/tests\n[breaking change policy]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes\n[Discord]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md\n[Data Driven Fixes]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md"
    },
    {
      "commit": "2b7ca0c64d6feadf3ba7e894190698f357f37672",
      "tree": "d6fc7dbdce43dcb76097930dd19e5fda52d8db86",
      "parents": [
        "f4702942b708a1fc5688e6b90e0efb6709c4b7be"
      ],
      "author": {
        "name": "Jason Simmons",
        "email": "jason-simmons@users.noreply.github.com",
        "time": "Tue May 12 11:50:22 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 12 11:50:22 2026 +0000"
      },
      "message": "Update iOS scenario app test goldens to match changes from https://github.com/flutter/flutter/pull/182662 (#186390)\n\nThat PR affected golden image tests that use platform views. But the\nimages had not been updated in the PR because errors in the \"Mac\nmac_unopt\" suite were suppressed on the dashboard when the PR landed."
    },
    {
      "commit": "f4702942b708a1fc5688e6b90e0efb6709c4b7be",
      "tree": "bc8336c36e5ef31e2be1ac3ce5475784d86a7f45",
      "parents": [
        "48a522de6b9106c1b0f8d841985f88ef03ab8c1f"
      ],
      "author": {
        "name": "engine-flutter-autoroll",
        "email": "engine-flutter-autoroll@skia.org",
        "time": "Tue May 12 06:38:12 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 12 10:38:12 2026 +0000"
      },
      "message": "Roll Skia from ad0aff15b9fa to 77a21bc723dc (2 revisions) (#186396)\n\nhttps://skia.googlesource.com/skia.git/+log/ad0aff15b9fa..77a21bc723dc\n\n2026-05-12 skia-autoroll@skia-public.iam.gserviceaccount.com Roll ANGLE\nfrom 2d8f36f37859 to 4a6d53434044 (14 revisions)\n2026-05-12 skia-autoroll@skia-public.iam.gserviceaccount.com Roll Skia\nInfra from 4ff5776b821e to 4bf523d4b47c (19 revisions)\n\nIf this roll has caused a breakage, revert this CL and stop the roller\nusing the controls here:\nhttps://autoroll.skia.org/r/skia-flutter-autoroll\nPlease CC codefu@google.com,jmbetancourt@google.com,kjlubick@google.com\non the revert to ensure that a human\nis aware of the problem.\n\nTo file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry\nTo file a bug in Flutter:\nhttps://github.com/flutter/flutter/issues/new/choose\n\nTo report a problem with the AutoRoller itself, please file a bug:\nhttps://issues.skia.org/issues/new?component\u003d1389291\u0026template\u003d1850622\n\nDocumentation for the AutoRoller is here:\nhttps://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md"
    },
    {
      "commit": "48a522de6b9106c1b0f8d841985f88ef03ab8c1f",
      "tree": "be8e5f7205e27bced8a65cfccfee39e771a54418",
      "parents": [
        "ac04c444fd1f623363fd42512459ea625d2d3303"
      ],
      "author": {
        "name": "Valentin Vignal",
        "email": "32538273+ValentinVignal@users.noreply.github.com",
        "time": "Tue May 12 16:34:34 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 12 08:34:34 2026 +0000"
      },
      "message": "Migrate focus_node.unfocus.0.dart to use `RadioGroup` (#183979)\n\nFixes https://github.com/flutter/flutter/issues/179088\n\n## Pre-launch Checklist\n\n- [x] I read the [Contributor Guide] and followed the process outlined\nthere for submitting PRs.\n- [x] I read the [AI contribution guidelines] and understand my\nresponsibilities, or I am not using AI tools.\n- [x] I read the [Tree Hygiene] wiki page, which explains my\nresponsibilities.\n- [x] I read and followed the [Flutter Style Guide], including [Features\nwe expect every widget to implement].\n- [x] I signed the [CLA].\n- [x] I listed at least one issue that this PR fixes in the description\nabove.\n- [x] I updated/added relevant documentation (doc comments with `///`).\n- [ ] I added new tests to check the change I am making, or this PR is\n[test-exempt].\n- [x] I followed the [breaking change policy] and added [Data Driven\nFixes] where supported.\n- [ ] All existing and new tests are passing.\n\nIf you need help, consider asking for advice on the #hackers-new channel\non [Discord].\n\n**Note**: The Flutter team is currently trialing the use of [Gemini Code\nAssist for\nGitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code).\nComments from the `gemini-code-assist` bot should not be taken as\nauthoritative feedback from the Flutter team. If you find its comments\nuseful you can update your code accordingly, but if you are unsure or\ndisagree with the feedback, please feel free to wait for a Flutter team\nmember\u0027s review for guidance on which automated comments should be\naddressed.\n\n\u003c!-- Links --\u003e\n[Contributor Guide]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview\n[AI contribution guidelines]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#ai-contribution-guidelines\n[Tree Hygiene]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md\n[test-exempt]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests\n[Flutter Style Guide]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md\n[Features we expect every widget to implement]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement\n[CLA]: https://cla.developers.google.com/\n[flutter/tests]: https://github.com/flutter/tests\n[breaking change policy]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes\n[Discord]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md\n[Data Driven Fixes]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md\n\n---------\n\nCo-authored-by: Victor Sanni \u003cvictorsanniay@gmail.com\u003e\nCo-authored-by: Justin McCandless \u003cjmccandless@google.com\u003e"
    },
    {
      "commit": "ac04c444fd1f623363fd42512459ea625d2d3303",
      "tree": "3b9855483cdbad43072a71916f1e76517bb969db",
      "parents": [
        "12d86bc2dc0ad9454bc6df339c70b8c18c0fa763"
      ],
      "author": {
        "name": "engine-flutter-autoroll",
        "email": "engine-flutter-autoroll@skia.org",
        "time": "Tue May 12 02:14:42 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 12 06:14:42 2026 +0000"
      },
      "message": "Roll Skia from 91d3c1e730af to ad0aff15b9fa (7 revisions) (#186391)\n\nhttps://skia.googlesource.com/skia.git/+log/91d3c1e730af..ad0aff15b9fa\n\n2026-05-12 skia-autoroll@skia-public.iam.gserviceaccount.com Roll\nvulkan-deps from 4391cb02adc5 to c95bf9c5e989 (13 revisions)\n2026-05-11\nrecipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com\nRoll recipe dependencies (trivial).\n2026-05-11 michaelludwig@google.com [graphite] Add isOpaque to\nPrecompileShader\n2026-05-11\nrecipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com\nRoll recipe dependencies (trivial).\n2026-05-11 bwils@google.com Reland \"Manually created dawn roll.\"\n2026-05-11\nrecipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com\nRoll recipe dependencies (trivial).\n2026-05-11 bwils@google.com Revert \"Manually created dawn roll.\"\n\nIf this roll has caused a breakage, revert this CL and stop the roller\nusing the controls here:\nhttps://autoroll.skia.org/r/skia-flutter-autoroll\nPlease CC\njmbetancourt@google.com,jsimmons@google.com,kjlubick@google.com on the\nrevert to ensure that a human\nis aware of the problem.\n\nTo file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry\nTo file a bug in Flutter:\nhttps://github.com/flutter/flutter/issues/new/choose\n\nTo report a problem with the AutoRoller itself, please file a bug:\nhttps://issues.skia.org/issues/new?component\u003d1389291\u0026template\u003d1850622\n\nDocumentation for the AutoRoller is here:\nhttps://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md"
    },
    {
      "commit": "12d86bc2dc0ad9454bc6df339c70b8c18c0fa763",
      "tree": "bc0a1eec3186d17128595e5aa25c1c437cc5e4a1",
      "parents": [
        "095d8cf5b06e16e161ec195b9add1c1685331a25"
      ],
      "author": {
        "name": "Brandon DeRosier",
        "email": "bdero@google.com",
        "time": "Mon May 11 22:18:35 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 12 05:18:35 2026 +0000"
      },
      "message": "[Flutter GPU] Allow customizing the vertex layout on a RenderPipeline (#186310)\n\nAdds an explicit `VertexLayout` value type that the caller can pass to\n`GpuContext.createRenderPipeline` to override the default interleaved\nlayout declared by the bound vertex shader\u0027s shader bundle, plus a\n`slot:` parameter on `RenderPass.bindVertexBuffer` so multiple vertex\nbuffers can be bound to a single draw. This unblocks structure-of-arrays\nmesh loading (positions in one buffer, normals + UVs in another, etc.)\nand lets a renderer reorder attributes from the impellerc-generated\ndefault.\n\nThe shipped scope intentionally pins only what\u0027s expressible against\ntoday\u0027s HAL without backing the API into a corner. The deferred\ncapabilities (instancing, sparse bindings, normalized / packed /\nhalf-float / BGRA / 64-bit formats) are tracked at #186307, #186308, and\n#186309, with TODO comments at the relevant call sites pointing at each\ntracking issue.\n\n### Dart surface\n\n```dart\nenum VertexFormat {\n  float32, float32x2, float32x3, float32x4,\n  uint32,  uint32x2,  uint32x3,  uint32x4,\n  sint32,  sint32x2,  sint32x3,  sint32x4,\n}\n\nclass VertexAttribute {\n  String name;\n  VertexFormat format;\n  int offsetInBytes; // defaults to 0\n}\n\nclass VertexBuffer {\n  int strideInBytes;\n  List\u003cVertexAttribute\u003e attributes;\n}\n\nclass VertexLayout {\n  List\u003cVertexBuffer\u003e buffers;\n}\n\nGpuContext.createRenderPipeline(vertex, fragment, {VertexLayout? vertexLayout});\nRenderPass.bindVertexBuffer(BufferView, int vertexCount, {int slot \u003d 0});\n```\n\nIf `vertexLayout` is `null`, the default for the bound vertex shader is\nused (today\u0027s behavior). The new `slot:` parameter defaults to `0`, so\nall existing single-buffer call sites compile unchanged.\n\nAttributes nest under the `VertexBuffer` they read from; each buffer\u0027s\nposition in `VertexLayout.buffers` determines the binding slot it must\nbe bound to via `RenderPass.bindVertexBuffer` (the first buffer is slot\n0, the second is slot 1, and so on). `offsetInBytes` defaults to 0 so\nthe common structure-of-arrays case (one attribute per buffer at the\nstart of each element) doesn\u0027t need to spell it out.\n\nAttributes are keyed by the shader-side input `name` rather than a raw\ninteger location, mirroring how uniform bindings are resolved via\n`Shader.getUniformSlot(\u0027VertInfo\u0027)`. This keeps the Dart layout robust\nto shader edits that reorder `in` declarations (the underlying location,\nwhich is what every backend ultimately consumes, is read from the\nshader\u0027s reflection at pipeline build time).\n\n### Example: structure-of-arrays glTF mesh\n\nMost glTF mesh primitives store each vertex attribute (POSITION, NORMAL,\nTEXCOORD_0, ...) in its own accessor, often inside its own buffer view.\nWithout a configurable vertex layout, callers were forced to interleave\nthose attributes on the CPU before upload. With this change, each\nattribute can keep its own buffer and bind at its own slot.\n\nGiven a vertex shader that declares three named inputs:\n\n```glsl\nin vec3 position;\nin vec3 normal;\nin vec2 texcoord;\n```\n\nA renderer can describe the SoA layout once at pipeline creation and\nthen bind one buffer per slot per draw:\n\n```dart\nimport \u0027package:flutter_gpu/gpu.dart\u0027 as gpu;\n\nfinal pipeline \u003d gpu.gpuContext.createRenderPipeline(\n  vertexShader,\n  fragmentShader,\n  vertexLayout: const gpu.VertexLayout(\n    buffers: \u003cgpu.VertexBuffer\u003e[\n      gpu.VertexBuffer(\n        strideInBytes: 12,\n        attributes: \u003cgpu.VertexAttribute\u003e[\n          gpu.VertexAttribute(name: \u0027position\u0027, format: gpu.VertexFormat.float32x3),\n        ],\n      ),\n      gpu.VertexBuffer(\n        strideInBytes: 12,\n        attributes: \u003cgpu.VertexAttribute\u003e[\n          gpu.VertexAttribute(name: \u0027normal\u0027, format: gpu.VertexFormat.float32x3),\n        ],\n      ),\n      gpu.VertexBuffer(\n        strideInBytes: 8,\n        attributes: \u003cgpu.VertexAttribute\u003e[\n          gpu.VertexAttribute(name: \u0027texcoord\u0027, format: gpu.VertexFormat.float32x2),\n        ],\n      ),\n    ],\n  ),\n);\n\n// Per draw call: bind one buffer per slot.\nrenderPass.bindPipeline(pipeline);\nrenderPass.bindVertexBuffer(positionsView, vertexCount, slot: 0);\nrenderPass.bindVertexBuffer(normalsView,   vertexCount, slot: 1);\nrenderPass.bindVertexBuffer(texcoordsView, vertexCount, slot: 2);\nrenderPass.draw();\n```\n\nInterleaved layouts work too: declare one `VertexBuffer` whose\n`strideInBytes` covers the whole vertex, list every attribute under it,\nand give each attribute past the first an explicit `offsetInBytes` into\nthe element:\n\n```dart\nvertexLayout: const gpu.VertexLayout(\n  buffers: \u003cgpu.VertexBuffer\u003e[\n    gpu.VertexBuffer(\n      strideInBytes: 32,\n      attributes: \u003cgpu.VertexAttribute\u003e[\n        gpu.VertexAttribute(name: \u0027position\u0027, format: gpu.VertexFormat.float32x3),\n        gpu.VertexAttribute(\n          name: \u0027normal\u0027,\n          format: gpu.VertexFormat.float32x3,\n          offsetInBytes: 12,\n        ),\n        gpu.VertexAttribute(\n          name: \u0027texcoord\u0027,\n          format: gpu.VertexFormat.float32x2,\n          offsetInBytes: 24,\n        ),\n      ],\n    ),\n  ],\n),\n```\n\nThis is also how a caller would override the impellerc-generated default\nto skip an unused attribute or reorder the components.\n\n### Validation\n\n`createRenderPipeline` throws a Dart exception when:\n\n- A `VertexAttribute.format` doesn\u0027t match the bound vertex shader\u0027s\ndeclared scalar type class (float vs signed int vs unsigned int).\nComponent-count mismatches are NOT errors, mirroring the\ndefault-substitution rules every modern HAL uses ((0, 0, 0, 1) fill).\n- An attribute\u0027s `offsetInBytes + format.bytesPerElement` overruns the\nowning `VertexBuffer`\u0027s stride.\n- Two attributes within the same `VertexBuffer` occupy overlapping byte\nranges (i.e. `[offsetInBytes, offsetInBytes + format.bytesPerElement)`\nranges that intersect).\n- An attribute\u0027s `name` doesn\u0027t match any vertex shader input\ndeclaration.\n\n`RenderPass.bindVertexBuffer` throws `RangeError` if `slot` is outside\n`[0, 16)`.\n\n### C++ plumbing\n\n- `Shader::GetStageInputs()` exposes the impellerc-reflected attribute\nmetadata so the pipeline initializer can resolve user attribute names to\n`(location, set, columns, relaxed_precision)` and validate user formats\nagainst the shader\u0027s declared scalar type.\n- `RenderPipeline` stores its own `impeller::VertexDescriptor`, built\nfrom the user layout when supplied or fetched from the shader\u0027s\nreflection otherwise.\n- `RenderPass` upgrades `vertex_buffer` to a `std::array\u003cBufferView,\n16\u003e` indexed by binding slot, tracks the highest bound slot, and\nforwards the whole array to\n`impeller::RenderPass::SetVertexBuffer(BufferView*, count)`.\n\nThe packed `(buffer layouts, attributes, attribute names)` data is\npassed via FFI as three `ByteData` handles and copied out of the\ntyped-data handles before any callback into the Dart VM (else\n`Dart_TypedDataAcquireData` would forbid the callback). With nested\nattributes, `bufferLayouts` rows shrink to `[strideInBytes,\nattributeCount]` and `attributes` rows shrink to `[offsetInBytes,\nformatIndex, nameByteLength]`; binding slots are implicit in each\nbuffer\u0027s position, and the C++ side walks attribute rows by consuming\neach buffer\u0027s `attributeCount` in order. Attribute names are encoded as\nconcatenated UTF-8 bytes walked in parallel with the attributes integer\ntable using each entry\u0027s `nameByteLength`.\n\n### Tests\n\nAdds six `gpu_test.dart` tests covering an\nexplicit-layout-matching-default render, a slot-range check, and four\n`createRenderPipeline` validation paths (wrong format, overrun stride,\noverlapping attributes within a buffer, unknown attribute name). All\npass on `flutter_tester_opengles` (SwANGLE) and `flutter_tester` (Metal)\nlocally.\n\nFixes #145013.\n\n## Pre-launch Checklist\n\n- [x] I read the [Contributor Guide] and followed the process outlined\nthere for submitting PRs.\n- [x] I read the [AI contribution guidelines] and understand my\nresponsibilities, or I am not using AI tools.\n- [x] I read the [Tree Hygiene] wiki page, which explains my\nresponsibilities.\n- [x] I read and followed the [Flutter Style Guide], including [Features\nwe expect every widget to implement].\n- [x] I signed the [CLA].\n- [x] I listed at least one issue that this PR fixes in the description\nabove.\n- [x] I updated/added relevant documentation (doc comments with `///`).\n- [x] I added new tests to check the change I am making, or this PR is\n[test-exempt].\n- [x] I followed the [breaking change policy] and added [Data Driven\nFixes] where supported.\n- [x] All existing and new tests are passing.\n\nIf you need help, consider asking for advice on the #hackers-new channel\non [Discord].\n\nIf this change needs to override an active code freeze, provide a\ncomment explaining why. The code freeze workflow can be overridden by\ncode reviewers. See pinned issues for any active code freezes with\nguidance.\n\n**Note**: The Flutter team is currently trialing the use of [Gemini Code\nAssist for\nGitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code).\nComments from the `gemini-code-assist` bot should not be taken as\nauthoritative feedback from the Flutter team. If you find its comments\nuseful you can update your code accordingly, but if you are unsure or\ndisagree with the feedback, please feel free to wait for a Flutter team\nmember\u0027s review for guidance on which automated comments should be\naddressed.\n\n\u003c!-- Links --\u003e\n[Contributor Guide]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview\n[AI contribution guidelines]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#ai-contribution-guidelines\n[Tree Hygiene]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md\n[test-exempt]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests\n[Flutter Style Guide]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md\n[Features we expect every widget to implement]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement\n[CLA]: https://cla.developers.google.com/\n[flutter/tests]: https://github.com/flutter/tests\n[breaking change policy]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes\n[Discord]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md\n[Data Driven Fixes]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md"
    },
    {
      "commit": "095d8cf5b06e16e161ec195b9add1c1685331a25",
      "tree": "6969692d51adea2a3daf3f2397e30ef001058f46",
      "parents": [
        "ad84f8d31b2e83135b277337f0bc9d3e749746c5"
      ],
      "author": {
        "name": "b-luk",
        "email": "97480502+b-luk@users.noreply.github.com",
        "time": "Mon May 11 19:53:45 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 12 02:53:45 2026 +0000"
      },
      "message": "Fix `EmbedderTest.CanRenderTextWithImpellerMetal` test breakage (#186262)\n\nFix `EmbedderTest.CanRenderTextWithImpellerMetal` test breakage.\n\nThis broke due to https://github.com/flutter/flutter/pull/186074. That\nPR modified how light text is rendered on macOS, but did not update this\ntest\u0027s golden image.\n\nThis updates the image.\n\nIt also changes the test to explicitly render dark text on a light\nbackground and light text on a dark background. Previously it rendered\nwhite text on a transparent background.\n\n## Pre-launch Checklist\n\n- [ ] I read the [Contributor Guide] and followed the process outlined\nthere for submitting PRs.\n- [ ] I read the [AI contribution guidelines] and understand my\nresponsibilities, or I am not using AI tools.\n- [ ] I read the [Tree Hygiene] wiki page, which explains my\nresponsibilities.\n- [ ] I read and followed the [Flutter Style Guide], including [Features\nwe expect every widget to implement].\n- [ ] I signed the [CLA].\n- [ ] I listed at least one issue that this PR fixes in the description\nabove.\n- [ ] I updated/added relevant documentation (doc comments with `///`).\n- [ ] I added new tests to check the change I am making, or this PR is\n[test-exempt].\n- [ ] I followed the [breaking change policy] and added [Data Driven\nFixes] where supported.\n- [ ] All existing and new tests are passing.\n\nIf you need help, consider asking for advice on the #hackers-new channel\non [Discord].\n\nIf this change needs to override an active code freeze, provide a\ncomment explaining why. The code freeze workflow can be overridden by\ncode reviewers. See pinned issues for any active code freezes with\nguidance.\n\n**Note**: The Flutter team is currently trialing the use of [Gemini Code\nAssist for\nGitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code).\nComments from the `gemini-code-assist` bot should not be taken as\nauthoritative feedback from the Flutter team. If you find its comments\nuseful you can update your code accordingly, but if you are unsure or\ndisagree with the feedback, please feel free to wait for a Flutter team\nmember\u0027s review for guidance on which automated comments should be\naddressed.\n\n\u003c!-- Links --\u003e\n[Contributor Guide]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview\n[AI contribution guidelines]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#ai-contribution-guidelines\n[Tree Hygiene]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md\n[test-exempt]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests\n[Flutter Style Guide]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md\n[Features we expect every widget to implement]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement\n[CLA]: https://cla.developers.google.com/\n[flutter/tests]: https://github.com/flutter/tests\n[breaking change policy]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes\n[Discord]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md\n[Data Driven Fixes]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md\n\n---------\n\nCo-authored-by: Jason Simmons \u003cjsimmons@google.com\u003e"
    },
    {
      "commit": "ad84f8d31b2e83135b277337f0bc9d3e749746c5",
      "tree": "ca09815be160692336055a8e78f5ed8d8eaf5ab6",
      "parents": [
        "2fe6ec53c2c929f03a59d930b6685e678eb99d55"
      ],
      "author": {
        "name": "engine-flutter-autoroll",
        "email": "engine-flutter-autoroll@skia.org",
        "time": "Mon May 11 22:52:16 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 12 02:52:16 2026 +0000"
      },
      "message": "Roll Fuchsia Linux SDK from rFhU-YPqdCRCtCz7b... to z7ICmPtn4hspu02zk... (#186384)\n\nIf this roll has caused a breakage, revert this CL and stop the roller\nusing the controls here:\nhttps://autoroll.skia.org/r/fuchsia-linux-sdk-flutter\nPlease CC jsimmons@google.com,zra@google.com on the revert to ensure\nthat a human\nis aware of the problem.\n\nTo file a bug in Flutter:\nhttps://github.com/flutter/flutter/issues/new/choose\n\nTo report a problem with the AutoRoller itself, please file a bug:\nhttps://issues.skia.org/issues/new?component\u003d1389291\u0026template\u003d1850622\n\nDocumentation for the AutoRoller is here:\nhttps://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md"
    },
    {
      "commit": "2fe6ec53c2c929f03a59d930b6685e678eb99d55",
      "tree": "0d9d4ee867702744d479a337f165fdb0fcb01618",
      "parents": [
        "adcd0062cbce8b7be17d0bba61c3383bcd698dbe"
      ],
      "author": {
        "name": "Brandon DeRosier",
        "email": "bdero@google.com",
        "time": "Mon May 11 19:46:06 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 12 02:46:06 2026 +0000"
      },
      "message": "[Impeller] GLES: lazily allocate texture mip levels on first per-level write (#186302)\n\n`glTexSubImage2D` into a mip level not previously defined by\n`glTexImage2D` raises `GL_INVALID_OPERATION`. Both the lazy slice-init\nin `BlitCopyBufferToTextureCommandGLES::Encode` and\n`TextureGLES::InitializeContentsIfNecessary` only ever allocated level\n0, so any non-zero mip upload aborted with a fatal GL error. The\npre-existing cubemap path in `InitializeContentsIfNecessary` was also\nbroken: it would re-bind a `GL_TEXTURE_CUBE_MAP` handle to\n`GL_TEXTURE_2D` and call `glTexImage2D` on the wrong target, a latent\ncrash on the first cubemap sampler bind without a prior face upload.\n\n#185890 depends on this PR.\n\n## Approach\n\nPer-`(slice, mip_level)` initialization tracking with lazy allocation on\nfirst write:\n\n1. `slices_initialized_` becomes `std::array\u003cstd::bitset\u003c16\u003e, 6\u003e` (six\ncubemap faces by up to 16 mip levels, covering a 32k base dimension).\n2. `InitializeContentsIfNecessary` allocates only the base mip level.\nThis is byte-identical to pre-fix behavior on the 2D path, so Impeller\u0027s\nsnapshot pipeline (`Picture.toImage(generate_mips: true)` -\u003e\n`RenderTargetAllocator::CreateOffscreen[MSAA]` -\u003e render at level 0 -\u003e\n`glGenerateMipmap`) keeps its existing GL footprint. For cubemaps the\nfunction now correctly binds `GL_TEXTURE_CUBE_MAP` and allocates the\nbase level for each of the six face targets.\n3. `BlitCopyBufferToTextureCommandGLES::Encode` allocates the requested\n`(slice, mip_level)` lazily before `glTexSubImage2D`. Per-level uploads\npay only for the levels they touch, and writes to a level after\n`glGenerateMipmap` (or `MarkContentsInitialized` from the Android\nexternal-texture path) are skipped because those bits are already set.\n4. `OnSetContents` (the legacy upload path) is updated to use the new\nbit-marking API. Side-effect fix: the old `slices_initialized_ \u003d\nAddOperation(...)` assignment clobbered all six cubemap bits on every\nupload; the new API marks only the face that was actually written.\n\n## Behavior table\n\n| Code path | Pre-fix | This PR |\n|---|---|---|\n| 2D mip_count\u003d1 (overwhelming majority) | 1 `TexImage2D` | identical |\n| Snapshot path with `generate_mips\u003dtrue` | 1 `TexImage2D` upfront +\n`glGenerateMipmap` driven implicit allocations | identical |\n| Flutter GPU per-level upload (#185890) | crash (`GL_INVALID_OPERATION`\non `glTexSubImage2D`) | works; 1 `TexImage2D` per mip on first write |\n| Cubemap face upload via blit | works | identical |\n| Cubemap rebind via `Bind()` before any upload | crash (rebind to\n`GL_TEXTURE_2D` of cube handle) | works; bind to `GL_TEXTURE_CUBE_MAP`\nand allocate face base level |\n\nThis PR does not have a dedicated issue: it is a prerequisite bug fix\nfor the per-`(mip, slice)` upload path required by #185890, and the\nfailure modes (`GL_INVALID_OPERATION` on `glTexSubImage2D`, cubemap\nrebind to wrong target) are documented above. Verified via new\n`BlitCommandGLES` unit tests covering base-level, non-zero-mip,\nrepeated-upload, every-mip-on-first-write, and cubemap face cases\n(`MockGLES` wires `glTexImage2D` and `glBindTexture` to the existing\n`MOCK_METHOD` declarations); the full GLES test suite passes locally\n(749 tests); manually confirmed with `flutter_tester_opengles\n--enable-flutter-gpu` against `gpu_test.dart` from #185890 that\n`Texture.overwrite writes to a non-zero mip level` and the cubemap-face\ntests pass.\n\n## Pre-launch Checklist\n\n- [x] I read the [Contributor Guide] and followed the process outlined\nthere for submitting PRs.\n- [x] I read the [AI contribution guidelines] and understand my\nresponsibilities, or I am not using AI tools.\n- [x] I read the [Tree Hygiene] wiki page, which explains my\nresponsibilities.\n- [x] I read and followed the [Flutter Style Guide], including [Features\nwe expect every widget to implement].\n- [x] I signed the [CLA].\n- [ ] I listed at least one issue that this PR fixes in the description\nabove.\n- [x] I updated/added relevant documentation (doc comments with `///`).\n- [x] I added new tests to check the change I am making, or this PR is\n[test-exempt].\n- [x] I followed the [breaking change policy] and added [Data Driven\nFixes] where supported.\n- [x] All existing and new tests are passing.\n\n\u003c!-- Links --\u003e\n[Contributor Guide]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview\n[AI contribution guidelines]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#ai-contribution-guidelines\n[Tree Hygiene]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md\n[test-exempt]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests\n[Flutter Style Guide]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md\n[Features we expect every widget to implement]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement\n[CLA]: https://cla.developers.google.com/\n[breaking change policy]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes\n[Data Driven Fixes]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md"
    },
    {
      "commit": "adcd0062cbce8b7be17d0bba61c3383bcd698dbe",
      "tree": "96ed029a79339daf8e5a4073ec4bc56d4cd382aa",
      "parents": [
        "a77a28031c7d9bdff1625f190fd89ba8a9395d64"
      ],
      "author": {
        "name": "Brandon DeRosier",
        "email": "bdero@google.com",
        "time": "Mon May 11 19:40:16 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 12 02:40:16 2026 +0000"
      },
      "message": "[Android] Propagate --enable-flutter-gpu Intent extra to engine args (#186298)\n\nFixes flutter/flutter#186297. `flutter run --enable-flutter-gpu` now\nopts the app into Flutter GPU on Android, matching the documented\nbehavior on iOS and macOS.\n\nThe flutter tool already sends `--ez enable-flutter-gpu true` as an\nIntent boolean extra to the launched activity\n(`packages/flutter_tools/lib/src/android/android_device.dart:668`), the\nsame way it ships `enable-impeller`, `enable-vulkan-validation`,\n`enable-hcpp-and-surface-control`, etc.\n`FlutterActivity.getFlutterShellArgs()` calls\n`FlutterShellArgs.fromIntent(getIntent())` to convert those extras into\nengine arguments, but `fromIntent` is a hardcoded list of intent-key to\nengine-arg conversions, and the `enable-flutter-gpu` case was never\nadded. So the extra was silently dropped on the floor, no\n`--enable-flutter-gpu` ever reached\n`FlutterLoader.ensureInitializationComplete`, and\n`settings.enable_flutter_gpu` stayed `false`. The runtime check in\n`lib/gpu/context.cc` then threw the manifest-required exception, even\nthough its own error message explicitly says the CLI flag is one of the\nvalid opt-ins.\n\nThis PR adds two new constants and one new branch in\n`FlutterShellArgs.fromIntent`:\n\n```java\npublic static final String ARG_KEY_ENABLE_FLUTTER_GPU \u003d \"enable-flutter-gpu\";\npublic static final String ARG_ENABLE_FLUTTER_GPU \u003d \"--enable-flutter-gpu\";\n\n// In fromIntent, alongside the other boolean extras:\nif (intent.getBooleanExtra(ARG_KEY_ENABLE_FLUTTER_GPU, false)) {\n  args.add(ARG_ENABLE_FLUTTER_GPU);\n}\n```\n\nPlus two unit tests covering the present-and-absent cases.\n\n`FlutterShellArgs` is marked deprecated in favor of `FlutterEngineFlags`\n(per the pending intent-deprecation work in #180686). The fix is kept in\n`FlutterShellArgs` because (1) `FlutterShellArgs.fromIntent` is still\nthe operative path for converting tool-side Intent extras into engine\nargs, and (2) `FlutterEngineFlags.getFlagFromIntentKey` is currently\nonly used to log a deprecation warning, not to actually convert the\nextras. When #180686 lands and the conversion moves entirely to\n`FlutterEngineFlags`, this hardcoded entry will go away with the rest of\n`FlutterShellArgs`.\n\n`FlutterShellArgsTest.itPropagatesEnableFlutterGpuFromIntent` and\n`itDoesNotPropagateEnableFlutterGpuWhenAbsent` lock in the behavior at\nthe unit level. Manually verified on a Pixel 10 Pro (Android 16,\nVulkan/Impeller) with a flutter_scene-based app: with this patch\napplied, `flutter run --enable-flutter-gpu --enable-impeller` no longer\nthrows \"Flutter GPU must be enabled via the Flutter GPU manifest\nsetting\", and the `gpu.gpuContext` access proceeds normally.\n\n## Pre-launch Checklist\n\n- [x] I read the [Contributor Guide] and followed the process outlined\nthere for submitting PRs.\n- [x] I read the [AI contribution guidelines] and understand my\nresponsibilities, or I am not using AI tools.\n- [x] I read the [Tree Hygiene] wiki page, which explains my\nresponsibilities.\n- [x] I read and followed the [Flutter Style Guide], including [Features\nwe expect every widget to implement].\n- [x] I signed the [CLA].\n- [x] I listed at least one issue that this PR fixes in the description\nabove.\n- [x] I updated/added relevant documentation (doc comments with `///`).\n- [x] I added new tests to check the change I am making, or this PR is\n[test-exempt].\n- [x] I followed the [breaking change policy] and added [Data Driven\nFixes] where supported.\n- [x] All existing and new tests are passing.\n\n\u003c!-- Links --\u003e\n[Contributor Guide]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview\n[AI contribution guidelines]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#ai-contribution-guidelines\n[Tree Hygiene]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md\n[test-exempt]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests\n[Flutter Style Guide]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md\n[Features we expect every widget to implement]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement\n[CLA]: https://cla.developers.google.com/\n[breaking change policy]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes\n[Data Driven Fixes]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md"
    },
    {
      "commit": "a77a28031c7d9bdff1625f190fd89ba8a9395d64",
      "tree": "e50caa42dd611383dc389897b76c38dd10c514c2",
      "parents": [
        "037b9163ec0bb2333cd1255d543327185612fca6"
      ],
      "author": {
        "name": "chunhtai",
        "email": "47866232+chunhtai@users.noreply.github.com",
        "time": "Mon May 11 15:54:24 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon May 11 22:54:24 2026 +0000"
      },
      "message": "[ci] update no-response workflow to also look for old label name in e… (#186373)\n\n…vents\n\n\u003c!--\nThanks for filing a pull request!\nReviewers are typically assigned within a week of filing a request.\nTo learn more about code review, see our documentation on Tree Hygiene:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md\n--\u003e\n\nfixes https://github.com/flutter/flutter/issues/186223\n\n## Pre-launch Checklist\n\n- [ ] I read the [Contributor Guide] and followed the process outlined\nthere for submitting PRs.\n- [ ] I read the [AI contribution guidelines] and understand my\nresponsibilities, or I am not using AI tools.\n- [ ] I read the [Tree Hygiene] wiki page, which explains my\nresponsibilities.\n- [ ] I read and followed the [Flutter Style Guide], including [Features\nwe expect every widget to implement].\n- [ ] I signed the [CLA].\n- [ ] I listed at least one issue that this PR fixes in the description\nabove.\n- [ ] I updated/added relevant documentation (doc comments with `///`).\n- [ ] I added new tests to check the change I am making, or this PR is\n[test-exempt].\n- [ ] I followed the [breaking change policy] and added [Data Driven\nFixes] where supported.\n- [ ] All existing and new tests are passing.\n\nIf you need help, consider asking for advice on the #hackers-new channel\non [Discord].\n\nIf this change needs to override an active code freeze, provide a\ncomment explaining why. The code freeze workflow can be overridden by\ncode reviewers. See pinned issues for any active code freezes with\nguidance.\n\n**Note**: The Flutter team is currently trialing the use of [Gemini Code\nAssist for\nGitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code).\nComments from the `gemini-code-assist` bot should not be taken as\nauthoritative feedback from the Flutter team. If you find its comments\nuseful you can update your code accordingly, but if you are unsure or\ndisagree with the feedback, please feel free to wait for a Flutter team\nmember\u0027s review for guidance on which automated comments should be\naddressed.\n\n\u003c!-- Links --\u003e\n[Contributor Guide]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview\n[AI contribution guidelines]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#ai-contribution-guidelines\n[Tree Hygiene]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md\n[test-exempt]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests\n[Flutter Style Guide]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md\n[Features we expect every widget to implement]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement\n[CLA]: https://cla.developers.google.com/\n[flutter/tests]: https://github.com/flutter/tests\n[breaking change policy]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes\n[Discord]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md\n[Data Driven Fixes]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md"
    },
    {
      "commit": "037b9163ec0bb2333cd1255d543327185612fca6",
      "tree": "d5dadb0fa0bd24cc8979282eee53faf75b4e13f0",
      "parents": [
        "4613306de403ced4983de75bcf858b75d414159c"
      ],
      "author": {
        "name": "Brandon DeRosier",
        "email": "bdero@google.com",
        "time": "Mon May 11 15:54:05 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon May 11 22:54:05 2026 +0000"
      },
      "message": "[ImpellerC] Write a depfile when --shader-bundle is in use (#186341)\n\nFixes flutter/flutter#186340\n\nWhen `impellerc` is invoked with both `--depfile\u003d\u003cpath\u003e` and\n`--shader-bundle\u003d\u003cjson\u003e`, the depfile is silently dropped.\n`impellerc_main.cc` takes an early return into\n`GenerateShaderBundle(switches)` when `--shader-bundle` is set, and the\ndepfile-writing branch only runs on the non-bundle path. Build systems\nconsuming impellerc for shader bundles (notably Dart\u0027s `hooks`\nframework, which `flutter_gpu_shaders`\u0027s `buildShaderBundleJson` goes\nthrough) have no way to discover which source files and transitive\n`#include` headers contributed to the produced bundle, and therefore\ncannot rerun the bundle build when any input changes. The user-visible\neffect is that editing a `.frag` referenced by a shader bundle manifest\ndoes not invalidate the cached bundle output until `flutter clean` is\nrun, which makes shader iteration painful and confuses new users.\n\nThis change threads an optional `std::set\u003cstd::string\u003e*\nout_dependencies` parameter through `GenerateShaderBundleFlatbuffer`,\n`GenerateShaderFB`, and `GenerateShaderBackendFB`. Each `Compiler`\ninstance reports its `GetIncludedFileNames()` plus the primary shader\nsource file into the set, which dedupes naturally across the five\ntarget-platform compiles per shader. After successful bundle generation,\n`GenerateShaderBundle` emits a Ninja-style depfile when `--depfile` is\nset, mirroring the format produced by `Compiler::CreateDepfileContents`\non the single-shader compile path.\n\nManually verified end to end against a real bundle whose only shader\ntransitively `#include`s a header: the resulting depfile lists both\nfiles. The new unit tests cover both the explicit-collector path (set\ncontains the primary source files) and the null-collector path (callers\nthat don\u0027t pass a set get exactly today\u0027s behaviour). Existing\nshader-bundle unit tests continue to pass unchanged.\n\n## Pre-launch Checklist\n\n- [x] I read the [Contributor Guide] and followed the process outlined\nthere for submitting PRs.\n- [x] I read the [AI contribution guidelines] and understand my\nresponsibilities, or I am not using AI tools.\n- [x] I read the [Tree Hygiene] wiki page, which explains my\nresponsibilities.\n- [x] I read and followed the [Flutter Style Guide], including [Features\nwe expect every widget to implement].\n- [x] I signed the [CLA].\n- [x] I listed at least one issue that this PR fixes in the description\nabove.\n- [x] I updated/added relevant documentation (doc comments with `///`).\n- [x] I added new tests to check the change I am making, or this PR is\n[test-exempt].\n- [x] I followed the [breaking change policy] and added [Data Driven\nFixes] where supported.\n- [x] All existing and new tests are passing.\n\n[Contributor Guide]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview\n[AI contribution guidelines]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#ai-contribution-guidelines\n[Tree Hygiene]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md\n[test-exempt]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests\n[Flutter Style Guide]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md\n[Features we expect every widget to implement]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement\n[CLA]: https://cla.developers.google.com/\n[breaking change policy]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes\n[Data Driven Fixes]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md"
    },
    {
      "commit": "4613306de403ced4983de75bcf858b75d414159c",
      "tree": "a7ed6fffb84556d898454005cc594517e4042c82",
      "parents": [
        "b85162a79f7ec162fb3d176e71ead4b03775d51c"
      ],
      "author": {
        "name": "Nicoreia",
        "email": "nico.reiab@gmail.com",
        "time": "Tue May 12 00:44:26 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon May 11 22:44:26 2026 +0000"
      },
      "message": "docs: fix doubled-word typos in comments (#186320)\n\n## Summary\n\nRemoves accidentally repeated words (\"the the\", \"is is\") in dartdoc and\ninline comments across lutter and lutter_tools. Comment-only follow-up\nto #186319.\n\nNo code, public API, or behavior is touched. The fix is mechanical and\nwas verified by re-grepping the modified files.\n\n## Changes\n\n- `packages/flutter/lib/src/widgets/text_selection.dart`: `the the start\nhandle` -\u003e `the start handle`; `the the end handle` -\u003e `the end handle`\n- `packages/flutter_tools/lib/src/ios/lldb.dart`: dartdoc on\n`_LLDBProcess` — `[Process] that is is running LLDB` -\u003e `[Process] that\nis running LLDB`\n-\n`packages/flutter_tools/test/host_cross_arch.shard/ios_content_validation_test.dart`:\n`This is is the default for CocoaPods` -\u003e `This is the default for\nCocoaPods`\n\n## Tests\n\nNo tests added. This is a comment-only change with no executable lines\ntouched. Verified locally by grepping the touched files for residual\n`the the` / `is is` / `to to` / similar doubled tokens — none remain.\n\n## Notes for maintainers\n\n- Pre-launch checklist read; no engineering doc rewrite needed\n(docs-only).\n- No Material or Cupertino source paths are modified, so the active code\nfreeze is not impacted.\n- Authored by a human (Nicoreia) with AI tooling assistance, in line\nwith Flutter\u0027s AI contribution policy: scope is small, mechanical, and\nreviewable; no generated logic.\n\n## Pre-launch Checklist\n\n- [x] I read the [Contributor Guide] and followed the process outlined\nthere for submitting PRs.\n- [x] I read the [Tree Hygiene] page and followed its process for\nsubmitting this PR.\n- [x] I read and followed the [Flutter Style Guide].\n- [x] I signed the [CLA].\n- [x] I listed at least one issue that this PR fixes in the description\nabove.\n- [x] I updated/added relevant documentation (doc comments with `///`).\n- [x] All existing and new tests are passing.\n\n[Contributor Guide]:\nhttps://github.com/flutter/flutter/blob/master/docs/contributing/Tree-hygiene.md#overview\n[Tree Hygiene]:\nhttps://github.com/flutter/flutter/blob/master/docs/contributing/Tree-hygiene.md\n[Flutter Style Guide]:\nhttps://github.com/flutter/flutter/blob/master/docs/contributing/Style-guide-for-Flutter-repo.md\n[CLA]: https://cla.developers.google.com/"
    },
    {
      "commit": "b85162a79f7ec162fb3d176e71ead4b03775d51c",
      "tree": "14dffd17261bc416bbdb07728b974e7d11139f7a",
      "parents": [
        "927c1a624c6c790162e0c7172139c96a3983d250"
      ],
      "author": {
        "name": "engine-flutter-autoroll",
        "email": "engine-flutter-autoroll@skia.org",
        "time": "Mon May 11 18:09:22 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon May 11 22:09:22 2026 +0000"
      },
      "message": "Roll Skia from 32281401997e to 91d3c1e730af (4 revisions) (#186368)\n\nhttps://skia.googlesource.com/skia.git/+log/32281401997e..91d3c1e730af\n\n2026-05-11 thomsmit@google.com Make SkYUVAPixmap comments match behavior\n2026-05-11 bwils@google.com Manually created dawn roll.\n2026-05-11\nrecipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com\nRoll recipe dependencies (trivial).\n2026-05-11 thomsmit@google.com [graphite] Add Sparse Strips tiler\n\nIf this roll has caused a breakage, revert this CL and stop the roller\nusing the controls here:\nhttps://autoroll.skia.org/r/skia-flutter-autoroll\nPlease CC\njmbetancourt@google.com,jsimmons@google.com,kjlubick@google.com on the\nrevert to ensure that a human\nis aware of the problem.\n\nTo file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry\nTo file a bug in Flutter:\nhttps://github.com/flutter/flutter/issues/new/choose\n\nTo report a problem with the AutoRoller itself, please file a bug:\nhttps://issues.skia.org/issues/new?component\u003d1389291\u0026template\u003d1850622\n\nDocumentation for the AutoRoller is here:\nhttps://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md"
    },
    {
      "commit": "927c1a624c6c790162e0c7172139c96a3983d250",
      "tree": "2a170acd43db71f7d3491739f941f2419ebada8c",
      "parents": [
        "496e76f95b64889b03234f7d450aea0fdddf0c8e"
      ],
      "author": {
        "name": "Victoria Ashworth",
        "email": "15619084+vashworth@users.noreply.github.com",
        "time": "Mon May 11 15:17:33 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon May 11 20:17:33 2026 +0000"
      },
      "message": "Show SwiftPM warnings right before iOS/macOS build (#185984)\n\nCurrently, we show SwiftPM warnings during\n`ensureReadyForPlatformSpecificTooling`, which can happen while\ntargeting any build (such as targeting an Android device on a macOS\nhost). We should only show SwiftPM warnings when building for iOS or\nmacOS, so we move the logic to be called right before the build.\n\nFixes https://github.com/flutter/flutter/issues/185775.\n\n## Pre-launch Checklist\n\n- [x] I read the [Contributor Guide] and followed the process outlined\nthere for submitting PRs.\n- [x] I read the [AI contribution guidelines] and understand my\nresponsibilities, or I am not using AI tools.\n- [x] I read the [Tree Hygiene] wiki page, which explains my\nresponsibilities.\n- [x] I read and followed the [Flutter Style Guide], including [Features\nwe expect every widget to implement].\n- [x] I signed the [CLA].\n- [x] I listed at least one issue that this PR fixes in the description\nabove.\n- [x] I updated/added relevant documentation (doc comments with `///`).\n- [x] I added new tests to check the change I am making, or this PR is\n[test-exempt].\n- [x] I followed the [breaking change policy] and added [Data Driven\nFixes] where supported.\n- [x] All existing and new tests are passing.\n\nIf you need help, consider asking for advice on the #hackers-new channel\non [Discord].\n\nIf this change needs to override an active code freeze, provide a\ncomment explaining why. The code freeze workflow can be overridden by\ncode reviewers. See pinned issues for any active code freezes with\nguidance.\n\n**Note**: The Flutter team is currently trialing the use of [Gemini Code\nAssist for\nGitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code).\nComments from the `gemini-code-assist` bot should not be taken as\nauthoritative feedback from the Flutter team. If you find its comments\nuseful you can update your code accordingly, but if you are unsure or\ndisagree with the feedback, please feel free to wait for a Flutter team\nmember\u0027s review for guidance on which automated comments should be\naddressed.\n\n\u003c!-- Links --\u003e\n[Contributor Guide]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview\n[AI contribution guidelines]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#ai-contribution-guidelines\n[Tree Hygiene]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md\n[test-exempt]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests\n[Flutter Style Guide]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md\n[Features we expect every widget to implement]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement\n[CLA]: https://cla.developers.google.com/\n[flutter/tests]: https://github.com/flutter/tests\n[breaking change policy]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes\n[Discord]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md\n[Data Driven Fixes]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md"
    },
    {
      "commit": "496e76f95b64889b03234f7d450aea0fdddf0c8e",
      "tree": "04926cd7edff7e7ca885469d0e6e4f95c355ddc5",
      "parents": [
        "3ee0842a4aa4df2442c98c754a1c67cba98f9d33"
      ],
      "author": {
        "name": "Victoria Ashworth",
        "email": "15619084+vashworth@users.noreply.github.com",
        "time": "Mon May 11 14:31:32 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon May 11 19:31:32 2026 +0000"
      },
      "message": "Convert rebuilding-flutter-tool script to dart (#185089)\n\nConverts a bash script to dart.\n\n\u003cdetails\u003e\n\u003csummary\u003eExample\u003c/summary\u003e\n\n```\n# Chat Conversation\n\nNote: _This is purely the output of the chat conversation and does not contain any raw data, codebase snippets, etc. used to generate the output._\n\n### User Input\n\nrebuild cli\n\n*Viewed [SKILL.md](file:///Users/vashworth/Development/flutter/.agents/skills/rebuilding-flutter-tool/SKILL.md) *\n\n*User accepted the command `dart .agents/skills/rebuilding-flutter-tool/scripts/rebuild.dart`*\n\n*Checked command status*\n\n### Planner Response\n\n**Flutter tool rebuilt successfully!**\n```\n\n\u003c/details\u003e\n\n## Pre-launch Checklist\n\n- [x] I read the [Contributor Guide] and followed the process outlined\nthere for submitting PRs.\n- [x] I read the [AI contribution guidelines] and understand my\nresponsibilities, or I am not using AI tools.\n- [x] I read the [Tree Hygiene] wiki page, which explains my\nresponsibilities.\n- [x] I read and followed the [Flutter Style Guide], including [Features\nwe expect every widget to implement].\n- [x] I signed the [CLA].\n- [ ] I listed at least one issue that this PR fixes in the description\nabove.\n- [x] I updated/added relevant documentation (doc comments with `///`).\n- [x] I added new tests to check the change I am making, or this PR is\n[test-exempt].\n- [x] I followed the [breaking change policy] and added [Data Driven\nFixes] where supported.\n- [x] All existing and new tests are passing.\n\nIf you need help, consider asking for advice on the #hackers-new channel\non [Discord].\n\nIf this change needs to override an active code freeze, provide a\ncomment explaining why. The code freeze workflow can be overridden by\ncode reviewers. See pinned issues for any active code freezes with\nguidance.\n\n**Note**: The Flutter team is currently trialing the use of [Gemini Code\nAssist for\nGitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code).\nComments from the `gemini-code-assist` bot should not be taken as\nauthoritative feedback from the Flutter team. If you find its comments\nuseful you can update your code accordingly, but if you are unsure or\ndisagree with the feedback, please feel free to wait for a Flutter team\nmember\u0027s review for guidance on which automated comments should be\naddressed.\n\n\u003c!-- Links --\u003e\n[Contributor Guide]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview\n[AI contribution guidelines]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#ai-contribution-guidelines\n[Tree Hygiene]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md\n[test-exempt]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests\n[Flutter Style Guide]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md\n[Features we expect every widget to implement]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement\n[CLA]: https://cla.developers.google.com/\n[flutter/tests]: https://github.com/flutter/tests\n[breaking change policy]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes\n[Discord]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md\n[Data Driven Fixes]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md"
    },
    {
      "commit": "3ee0842a4aa4df2442c98c754a1c67cba98f9d33",
      "tree": "abac964d3059f073597d4e7851be9b49b74602b3",
      "parents": [
        "35ed55b8bbe1feb3f9fc9d53d7d1ae5c6187255e"
      ],
      "author": {
        "name": "Victoria Ashworth",
        "email": "15619084+vashworth@users.noreply.github.com",
        "time": "Mon May 11 13:08:13 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon May 11 18:08:13 2026 +0000"
      },
      "message": "Use Xcode\u0027s LLDB (#186273)\n\nSwitches `lldb` to `xcrun lldb`. Xcode\u0027s `lldb` seems to be optimized\nand has better performance.\n\nTowards https://github.com/flutter/flutter/issues/185762\n\n## Pre-launch Checklist\n\n- [x] I read the [Contributor Guide] and followed the process outlined\nthere for submitting PRs.\n- [x] I read the [AI contribution guidelines] and understand my\nresponsibilities, or I am not using AI tools.\n- [x] I read the [Tree Hygiene] wiki page, which explains my\nresponsibilities.\n- [x] I read and followed the [Flutter Style Guide], including [Features\nwe expect every widget to implement].\n- [x] I signed the [CLA].\n- [x] I listed at least one issue that this PR fixes in the description\nabove.\n- [x] I updated/added relevant documentation (doc comments with `///`).\n- [x] I added new tests to check the change I am making, or this PR is\n[test-exempt].\n- [x] I followed the [breaking change policy] and added [Data Driven\nFixes] where supported.\n- [x] All existing and new tests are passing.\n\nIf you need help, consider asking for advice on the #hackers-new channel\non [Discord].\n\nIf this change needs to override an active code freeze, provide a\ncomment explaining why. The code freeze workflow can be overridden by\ncode reviewers. See pinned issues for any active code freezes with\nguidance.\n\n**Note**: The Flutter team is currently trialing the use of [Gemini Code\nAssist for\nGitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code).\nComments from the `gemini-code-assist` bot should not be taken as\nauthoritative feedback from the Flutter team. If you find its comments\nuseful you can update your code accordingly, but if you are unsure or\ndisagree with the feedback, please feel free to wait for a Flutter team\nmember\u0027s review for guidance on which automated comments should be\naddressed.\n\n\u003c!-- Links --\u003e\n[Contributor Guide]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview\n[AI contribution guidelines]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#ai-contribution-guidelines\n[Tree Hygiene]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md\n[test-exempt]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests\n[Flutter Style Guide]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md\n[Features we expect every widget to implement]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement\n[CLA]: https://cla.developers.google.com/\n[flutter/tests]: https://github.com/flutter/tests\n[breaking change policy]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes\n[Discord]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md\n[Data Driven Fixes]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md"
    },
    {
      "commit": "35ed55b8bbe1feb3f9fc9d53d7d1ae5c6187255e",
      "tree": "e8aea640b8a4cab2ebcab949a0aee14a2d720a1a",
      "parents": [
        "aba6abfd59d1d9d489aaf861fcc75ed4f1ced503"
      ],
      "author": {
        "name": "Felipe Peter",
        "email": "mr-peipei@web.de",
        "time": "Mon May 11 10:05:31 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon May 11 17:05:31 2026 +0000"
      },
      "message": "Remove `currentMainUri` from `generateMainDartWithPluginRegistrant` (#185907)\n\nFixes #185600.\n\n`currentMainUri` was unused.\n\n## Pre-launch Checklist\n\n- [x] I read the [Contributor Guide] and followed the process outlined\nthere for submitting PRs.\n- [x] I read the [AI contribution guidelines] and understand my\nresponsibilities, or I am not using AI tools.\n- [x] I read the [Tree Hygiene] wiki page, which explains my\nresponsibilities.\n- [x] I read and followed the [Flutter Style Guide], including [Features\nwe expect every widget to implement].\n- [x] I signed the [CLA].\n- [x] I listed at least one issue that this PR fixes in the description\nabove.\n- [ ] I updated/added relevant documentation (doc comments with `///`).\n- [ ] I added new tests to check the change I am making, or this PR is\n[test-exempt].\n- [ ] I followed the [breaking change policy] and added [Data Driven\nFixes] where supported.\n- [ ] All existing and new tests are passing."
    },
    {
      "commit": "aba6abfd59d1d9d489aaf861fcc75ed4f1ced503",
      "tree": "478755f26bc85224234789b42fe69c71fad901c5",
      "parents": [
        "1072bb6ae44784a46f0b315e32ac750d765cdba4"
      ],
      "author": {
        "name": "engine-flutter-autoroll",
        "email": "engine-flutter-autoroll@skia.org",
        "time": "Mon May 11 12:35:53 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon May 11 16:35:53 2026 +0000"
      },
      "message": "Roll Skia from 2514f6b5f92b to 32281401997e (1 revision) (#186349)\n\nhttps://skia.googlesource.com/skia.git/+log/2514f6b5f92b..32281401997e\n\n2026-05-11 skia-autoroll@skia-public.iam.gserviceaccount.com Roll\nvulkan-deps from e069d6e7382e to 4391cb02adc5 (1 revision)\n\nIf this roll has caused a breakage, revert this CL and stop the roller\nusing the controls here:\nhttps://autoroll.skia.org/r/skia-flutter-autoroll\nPlease CC\njmbetancourt@google.com,jsimmons@google.com,kjlubick@google.com on the\nrevert to ensure that a human\nis aware of the problem.\n\nTo file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry\nTo file a bug in Flutter:\nhttps://github.com/flutter/flutter/issues/new/choose\n\nTo report a problem with the AutoRoller itself, please file a bug:\nhttps://issues.skia.org/issues/new?component\u003d1389291\u0026template\u003d1850622\n\nDocumentation for the AutoRoller is here:\nhttps://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md"
    },
    {
      "commit": "1072bb6ae44784a46f0b315e32ac750d765cdba4",
      "tree": "ebf12ea5033cff9cbbf2d79dbd230b9e2dd23114",
      "parents": [
        "af4fb77c80f1675bb1f426afcba23135b2ca8ebc"
      ],
      "author": {
        "name": "engine-flutter-autoroll",
        "email": "engine-flutter-autoroll@skia.org",
        "time": "Mon May 11 12:34:15 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon May 11 16:34:15 2026 +0000"
      },
      "message": "Roll Packages from 92552b16bcc1 to 19ec8b861676 (4 revisions) (#186350)\n\nhttps://github.com/flutter/packages/compare/92552b16bcc1...19ec8b861676\n\n2026-05-11 49699333+dependabot[bot]@users.noreply.github.com Bump\nactions/labeler from 6.0.1 to 6.1.0 in the all-github-actions group\n(flutter/packages#11686)\n2026-05-08 suojae.developer@gmail.com [flutter_svg] add imageBuilder\nproperty to SvgPicture (flutter/packages#11615)\n2026-05-08 katelovett@google.com [material_ui, cupertino_ui, infra]\nSupport skipping golden files for the design migration\n(flutter/packages#11649)\n2026-05-08 stuartmorgan@google.com [video_player] Add missing\nswift_version to podspec (flutter/packages#11670)\n\nIf this roll has caused a breakage, revert this CL and stop the roller\nusing the controls here:\nhttps://autoroll.skia.org/r/flutter-packages-flutter-autoroll\nPlease CC flutter-ecosystem@google.com on the revert to ensure that a\nhuman\nis aware of the problem.\n\nTo file a bug in Flutter:\nhttps://github.com/flutter/flutter/issues/new/choose\n\nTo report a problem with the AutoRoller itself, please file a bug:\nhttps://issues.skia.org/issues/new?component\u003d1389291\u0026template\u003d1850622\n\nDocumentation for the AutoRoller is here:\nhttps://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md"
    },
    {
      "commit": "af4fb77c80f1675bb1f426afcba23135b2ca8ebc",
      "tree": "fe080d4f6dbcab6d95bab52e94fe5608dbb4a8f5",
      "parents": [
        "10a788db77c7bac90a9871aa05a636024c30b877"
      ],
      "author": {
        "name": "Reid Baker",
        "email": "1063596+reidbaker@users.noreply.github.com",
        "time": "Mon May 11 09:33:31 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon May 11 13:33:31 2026 +0000"
      },
      "message": "Check for absolute paths in skills.  (#185632)\n\nAlmost all if not all inital skill pull requests had paths in backticks\nthat were relative to the root of the flutter directory because that is\nthe style we use in our documentation. That style is bad for agents who\nwant relative paths.\nThis adds a custom linter to check for paths that exist in backticks and\nmatch 2 segments of the root directory then fails validation. You can\navoid the check by having any other prefix other than a string that is 2\nfolders from the top of flutter/flutter.\n\nAdditionally fix an example in my own authored skills. \n\n- **Initial implementation of relative path from root checking**\n- **calculate relative path better error formatting**\n- **get rid of more complicated regex logic**\n\nAI assisted pr: antigravity, dragonally\nPrompt was too interactive to post and have meaning. \n\n\n## Pre-launch Checklist\n\n- [x] I read the [Contributor Guide] and followed the process outlined\nthere for submitting PRs.\n- [x] I read the [AI contribution guidelines] and understand my\nresponsibilities, or I am not using AI tools.\n- [x] I read the [Tree Hygiene] wiki page, which explains my\nresponsibilities.\n- [x] I read and followed the [Flutter Style Guide], including [Features\nwe expect every widget to implement].\n- [x] I signed the [CLA].\n- [ ] I listed at least one issue that this PR fixes in the description\nabove.\n- [x] I updated/added relevant documentation (doc comments with `///`).\n- [x] I added new tests to check the change I am making, or this PR is\n[test-exempt].\n- [x] I followed the [breaking change policy] and added [Data Driven\nFixes] where supported.\n- [x] All existing and new tests are passing.\n\n\n\u003c!-- Links --\u003e\n[Contributor Guide]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview\n[AI contribution guidelines]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#ai-contribution-guidelines\n[Tree Hygiene]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md\n[test-exempt]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests\n[Flutter Style Guide]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md\n[Features we expect every widget to implement]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement\n[CLA]: https://cla.developers.google.com/\n[flutter/tests]: https://github.com/flutter/tests\n[breaking change policy]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes\n[Discord]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md\n[Data Driven Fixes]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md"
    },
    {
      "commit": "10a788db77c7bac90a9871aa05a636024c30b877",
      "tree": "4d269c443ce90f4edfb736710de6058a4ebab959",
      "parents": [
        "712f869e0f3e6bd977a450b1289d505b315ef45a"
      ],
      "author": {
        "name": "engine-flutter-autoroll",
        "email": "engine-flutter-autoroll@skia.org",
        "time": "Mon May 11 09:03:30 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon May 11 13:03:30 2026 +0000"
      },
      "message": "Roll Skia from 9fb7d2814642 to 2514f6b5f92b (1 revision) (#186347)\n\nhttps://skia.googlesource.com/skia.git/+log/9fb7d2814642..2514f6b5f92b\n\n2026-05-11 skia-autoroll@skia-public.iam.gserviceaccount.com Roll ANGLE\nfrom ab41985470ba to 2d8f36f37859 (11 revisions)\n\nIf this roll has caused a breakage, revert this CL and stop the roller\nusing the controls here:\nhttps://autoroll.skia.org/r/skia-flutter-autoroll\nPlease CC\njmbetancourt@google.com,jsimmons@google.com,kjlubick@google.com on the\nrevert to ensure that a human\nis aware of the problem.\n\nTo file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry\nTo file a bug in Flutter:\nhttps://github.com/flutter/flutter/issues/new/choose\n\nTo report a problem with the AutoRoller itself, please file a bug:\nhttps://issues.skia.org/issues/new?component\u003d1389291\u0026template\u003d1850622\n\nDocumentation for the AutoRoller is here:\nhttps://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md"
    },
    {
      "commit": "712f869e0f3e6bd977a450b1289d505b315ef45a",
      "tree": "c151cc09420e80f220e94d21bbf79805dcea0ef5",
      "parents": [
        "a0a5c3bce65b47aa4fb90626d142e195d4e9a7bf"
      ],
      "author": {
        "name": "engine-flutter-autoroll",
        "email": "engine-flutter-autoroll@skia.org",
        "time": "Mon May 11 03:25:48 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon May 11 07:25:48 2026 +0000"
      },
      "message": "Roll Skia from 8cafb209e836 to 9fb7d2814642 (4 revisions) (#186335)\n\nhttps://skia.googlesource.com/skia.git/+log/8cafb209e836..9fb7d2814642\n\n2026-05-11\nrecipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com\nRoll recipe dependencies (trivial).\n2026-05-11 skia-autoroll@skia-public.iam.gserviceaccount.com Roll Skia\nInfra from 99ee78410476 to 4ff5776b821e (15 revisions)\n2026-05-11 skia-autoroll@skia-public.iam.gserviceaccount.com Roll\ndebugger-app-base from bb04143c038b to 18d4e53a226a\n2026-05-11 skia-autoroll@skia-public.iam.gserviceaccount.com Roll\nvulkan-deps from 3a658da10db4 to e069d6e7382e (1 revision)\n\nIf this roll has caused a breakage, revert this CL and stop the roller\nusing the controls here:\nhttps://autoroll.skia.org/r/skia-flutter-autoroll\nPlease CC\njmbetancourt@google.com,jsimmons@google.com,kjlubick@google.com on the\nrevert to ensure that a human\nis aware of the problem.\n\nTo file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry\nTo file a bug in Flutter:\nhttps://github.com/flutter/flutter/issues/new/choose\n\nTo report a problem with the AutoRoller itself, please file a bug:\nhttps://issues.skia.org/issues/new?component\u003d1389291\u0026template\u003d1850622\n\nDocumentation for the AutoRoller is here:\nhttps://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md"
    },
    {
      "commit": "a0a5c3bce65b47aa4fb90626d142e195d4e9a7bf",
      "tree": "32ce4c1288cf64b633a6175d26fff2e8f511cc39",
      "parents": [
        "d79cc862ad2517a32af8f41eaed9c4c696132da7"
      ],
      "author": {
        "name": "engine-flutter-autoroll",
        "email": "engine-flutter-autoroll@skia.org",
        "time": "Sun May 10 18:59:37 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun May 10 22:59:37 2026 +0000"
      },
      "message": "Roll Fuchsia Linux SDK from sOBiPJb0xznDBZlf5... to rFhU-YPqdCRCtCz7b... (#186328)\n\nIf this roll has caused a breakage, revert this CL and stop the roller\nusing the controls here:\nhttps://autoroll.skia.org/r/fuchsia-linux-sdk-flutter\nPlease CC jsimmons@google.com,zra@google.com on the revert to ensure\nthat a human\nis aware of the problem.\n\nTo file a bug in Flutter:\nhttps://github.com/flutter/flutter/issues/new/choose\n\nTo report a problem with the AutoRoller itself, please file a bug:\nhttps://issues.skia.org/issues/new?component\u003d1389291\u0026template\u003d1850622\n\nDocumentation for the AutoRoller is here:\nhttps://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md"
    },
    {
      "commit": "d79cc862ad2517a32af8f41eaed9c4c696132da7",
      "tree": "3f03a765e7d51f9253daeacd51c2c979e6bdffb8",
      "parents": [
        "3621426accc8f74790732d9f5da98a27a01f8504"
      ],
      "author": {
        "name": "engine-flutter-autoroll",
        "email": "engine-flutter-autoroll@skia.org",
        "time": "Sun May 10 12:55:11 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun May 10 16:55:11 2026 +0000"
      },
      "message": "Roll Skia from 05a03f99c74e to 8cafb209e836 (1 revision) (#186315)\n\nhttps://skia.googlesource.com/skia.git/+log/05a03f99c74e..8cafb209e836\n\n2026-05-10 skia-autoroll@skia-public.iam.gserviceaccount.com Roll SKP\nCIPD package from 563 to 564\n\nIf this roll has caused a breakage, revert this CL and stop the roller\nusing the controls here:\nhttps://autoroll.skia.org/r/skia-flutter-autoroll\nPlease CC\njmbetancourt@google.com,jsimmons@google.com,kjlubick@google.com on the\nrevert to ensure that a human\nis aware of the problem.\n\nTo file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry\nTo file a bug in Flutter:\nhttps://github.com/flutter/flutter/issues/new/choose\n\nTo report a problem with the AutoRoller itself, please file a bug:\nhttps://issues.skia.org/issues/new?component\u003d1389291\u0026template\u003d1850622\n\nDocumentation for the AutoRoller is here:\nhttps://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md"
    },
    {
      "commit": "3621426accc8f74790732d9f5da98a27a01f8504",
      "tree": "32ba3c1a2ea1b7432c70827c9351f9dcec2f2976",
      "parents": [
        "1887a104cc6ebd8314487886215d853aab556889"
      ],
      "author": {
        "name": "Brandon DeRosier",
        "email": "bdero@google.com",
        "time": "Sun May 10 02:57:14 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun May 10 09:57:14 2026 +0000"
      },
      "message": "[Impeller] Vulkan: don\u0027t drop user-supplied viewport X, Y, and depth range (#185886)\n\nFixes #185885\n\n`RenderPassVK::SetViewport` builds a `vk::Viewport` via chained setters\nthat never invoke `.setX(...)`. Because `vk::Viewport()`\ndefault-initializes `x` to `0.0f`, the user\u0027s X is silently dropped. Y\nis also effectively dropped (the existing code calls\n`setY(rect.GetHeight())` to perform the negative-height Y-flip, never\nreading `rect.GetY()`), and `minDepth` / `maxDepth` are hardcoded to\n0/1, ignoring the user\u0027s `DepthRange`.\n\nThe bug has been present since `e7be989feb1c` (\"Reland: Encode directly\nto command buffer.\", 2024-01-19).\n\n## Goldens\n\nOnce this lands, the existing Vulkan golden for\n`flutter_gpu_test_viewport.png` will need to be re-uploaded on Skia Gold\nto match the corrected output. The `flutter_gpu_test_viewport` test in\n`gpu_test.dart` is currently disabled on GLES (re-enabled in #185879);\nboth backends will produce the same correct render after this PR plus\n#185879 land."
    },
    {
      "commit": "1887a104cc6ebd8314487886215d853aab556889",
      "tree": "005e1d75764bd411e3a6d22bd57f7ba51d2f2563",
      "parents": [
        "f74781f6213447540225edae307acb48bbaaaf34"
      ],
      "author": {
        "name": "Michael Brase",
        "email": "mbrase@google.com",
        "time": "Sat May 09 13:07:01 2026 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat May 09 19:07:01 2026 +0000"
      },
      "message": "Update Fuchsia tests to subpackage their child components (#186259)\n\nFor Fuchsia tests which use child components from other packages, this\ncommit switches those to being subpackages. This allows the test to be\nfully contained with a single .far package, which simplifies test\nexecution and eliminates the need for packages to be published to the\nfuchsia.com namespace."
    },
    {
      "commit": "f74781f6213447540225edae307acb48bbaaaf34",
      "tree": "b75cd1b1bb1ddb20b366cec8df7441396118a97d",
      "parents": [
        "718d06274b884e9a279b0a2c73488412f758af56"
      ],
      "author": {
        "name": "Victor Sanni",
        "email": "victorsanniay@gmail.com",
        "time": "Sat May 09 09:09:29 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat May 09 16:09:29 2026 +0000"
      },
      "message": "Fix SelectableText crash with inline lambda contextMenuBuilder (#184990)\n\nInstead of disposing and recreating the `OverlayEntry` when\n`contextMenuBuilder` changes (which triggered the crash during the build\nphase), we now update the `contextMenuBuilder` in place and trigger a\nrebuild of the existing overlay entry (by calling `markNeedsBuild` in\n`ContextMenuController.show`).\n\nTo avoid calling `markNeedsBuild` during the build phase (which is not\nallowed), we defer the call to `showToolbar()` in\n`EditableTextState.didUpdateWidget` using `addPostFrameCallback`.\n\nFixes [SelectableText crashes the app if custom contextMenuBuilder is\nused, Null check operator used on a null\nvalue](https://github.com/flutter/flutter/issues/155514)"
    },
    {
      "commit": "718d06274b884e9a279b0a2c73488412f758af56",
      "tree": "89252f38dce1dfe255a0e905eebcfff18942d68d",
      "parents": [
        "a515e75ba6753534726cc52cfe5487110d5620c3"
      ],
      "author": {
        "name": "engine-flutter-autoroll",
        "email": "engine-flutter-autoroll@skia.org",
        "time": "Sat May 09 10:07:50 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat May 09 14:07:50 2026 +0000"
      },
      "message": "Roll Fuchsia Linux SDK from 5_TnhTsHSqtCx37o6... to sOBiPJb0xznDBZlf5... (#186289)\n\nIf this roll has caused a breakage, revert this CL and stop the roller\nusing the controls here:\nhttps://autoroll.skia.org/r/fuchsia-linux-sdk-flutter\nPlease CC jsimmons@google.com,zra@google.com on the revert to ensure\nthat a human\nis aware of the problem.\n\nTo file a bug in Flutter:\nhttps://github.com/flutter/flutter/issues/new/choose\n\nTo report a problem with the AutoRoller itself, please file a bug:\nhttps://issues.skia.org/issues/new?component\u003d1389291\u0026template\u003d1850622\n\nDocumentation for the AutoRoller is here:\nhttps://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md"
    },
    {
      "commit": "a515e75ba6753534726cc52cfe5487110d5620c3",
      "tree": "e44dc14a15e76d622c37bb1eec4ea380cabcbe95",
      "parents": [
        "2d424bd2888e23ab2da21d40a0b1000960b49300"
      ],
      "author": {
        "name": "engine-flutter-autoroll",
        "email": "engine-flutter-autoroll@skia.org",
        "time": "Sat May 09 02:27:45 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat May 09 06:27:45 2026 +0000"
      },
      "message": "Roll Skia from dc78d4bd2efb to 05a03f99c74e (2 revisions) (#186283)\n\nhttps://skia.googlesource.com/skia.git/+log/dc78d4bd2efb..05a03f99c74e\n\n2026-05-09 skia-autoroll@skia-public.iam.gserviceaccount.com Roll\nvulkan-deps from df94adb30172 to 3a658da10db4 (12 revisions)\n2026-05-09\nrecipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com\nRoll recipe dependencies (trivial).\n\nIf this roll has caused a breakage, revert this CL and stop the roller\nusing the controls here:\nhttps://autoroll.skia.org/r/skia-flutter-autoroll\nPlease CC\nalexisdavidc@google.com,jsimmons@google.com,kjlubick@google.com on the\nrevert to ensure that a human\nis aware of the problem.\n\nTo file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry\nTo file a bug in Flutter:\nhttps://github.com/flutter/flutter/issues/new/choose\n\nTo report a problem with the AutoRoller itself, please file a bug:\nhttps://issues.skia.org/issues/new?component\u003d1389291\u0026template\u003d1850622\n\nDocumentation for the AutoRoller is here:\nhttps://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md"
    },
    {
      "commit": "2d424bd2888e23ab2da21d40a0b1000960b49300",
      "tree": "ebb22f705db5132539b07e358e9b61fc8ee1f039",
      "parents": [
        "09a75983175593d51d313221c5e85cfb467a5358"
      ],
      "author": {
        "name": "Hari07",
        "email": "22373191+Hari-07@users.noreply.github.com",
        "time": "Sat May 09 09:40:30 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat May 09 04:10:30 2026 +0000"
      },
      "message": "Improve non rect platform view rendering  (#182662)\n\n\u003c!--\nThanks for filing a pull request!\nReviewers are typically assigned within a week of filing a request.\nTo learn more about code review, see our documentation on Tree Hygiene:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md\n--\u003e\n\nTest setup:\n```dart\nreturn Stack(\n      children: [\n        Container(color: Colors.blue), // Flutter content behind\n        const Text(\u0027Some random text\u0027),\n        ClipRRect(\n          borderRadius: BorderRadius.circular(250),\n          child: const PlatformViewWidget(), // platform view on top - red background with black text on it\n        ),\n        BackdropFilter(\n          filter: ImageFilter.blur(sigmaX: 5, sigmaY: 5),\n          child: Center( \n            child: Container(\n              height: 100,\n              width: 100,\n              color: Colors.blueAccent,\n            ),\n          ), // Flutter content infront of the blur\n        )\n      ],\n    );\n```\n\n\u003cp\u003e\nBefore\u003cbr/\u003e\n\u003cimg height\u003d\"600\" alt\u003d\"image\"\nsrc\u003d\"https://github.com/user-attachments/assets/2ea8d99a-73a5-415f-ad63-292f3b9cc12c\"\n/\u003e\n\nAfter\u003cbr/\u003e\n\u003cimg height\u003d\"600\" alt\u003d\"Simulator Screenshot - iPhone 17 Pro - 2026-02-20\nat 19 03 15\"\nsrc\u003d\"https://github.com/user-attachments/assets/ae515106-6238-474f-9aea-c6589da79bff\"\n/\u003e\n\u003c/p\u003e\n\n\n- Currently the underlay is always clipped by platform view in a\nrectangular shape. This isn\u0027t correct because the platform view can have\nclips on it such as a rounded rect or a custom path even\n- The overlay was also always drawn in a rectangular shape\n- Blurred text can only be part of the underlay because there\u0027s no\nbackground information in overlay.\n- When a blured text was in the corner of a backdrop filter containing a\nplatform view, the underlay which contains the blurred text got sliced\naway and overlay had unblurred text\n- This PR makes this flow clip aware and handles different clips\ncorrectly\n\nDefinitions:\n- Underlay: This is the flutter layer drawn below a platform view. When\nrendering we cut out holes in this layer for where the platform view\nwill be rendered to save on compute\n-\n[Overlay](https://docs.google.com/document/d/1V7Jc_RGaknrBBPPBBKB8lT7f3PKhYr8sin35MSMFAf4):\nThis is the flutter layer drawn on top of the area occupied by the\nplatform view.\n\n*List which issues are fixed by this PR. You must list at least one\nissue. An issue is not required if the PR fixes something trivial like a\ntypo.*\nFixes #150660 \n\n*If you had to change anything in the [flutter/tests] repo, include a\nlink to the migration guide as per the [breaking change policy].*\n\n## Pre-launch Checklist\n\n- [x] I read the [Contributor Guide] and followed the process outlined\nthere for submitting PRs.\n- [x] I read the [Tree Hygiene] wiki page, which explains my\nresponsibilities.\n- [x] I read and followed the [Flutter Style Guide], including [Features\nwe expect every widget to implement].\n- [x] I signed the [CLA].\n- [x] I listed at least one issue that this PR fixes in the description\nabove.\n- [x] I updated/added relevant documentation (doc comments with `///`).\n- [x] I added new tests to check the change I am making, or this PR is\n[test-exempt].\n- [x] I followed the [breaking change policy] and added [Data Driven\nFixes] where supported.\n- [x] All existing and new tests are passing.\n\nIf you need help, consider asking for advice on the #hackers-new channel\non [Discord].\n\n**Note**: The Flutter team is currently trialing the use of [Gemini Code\nAssist for\nGitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code).\nComments from the `gemini-code-assist` bot should not be taken as\nauthoritative feedback from the Flutter team. If you find its comments\nuseful you can update your code accordingly, but if you are unsure or\ndisagree with the feedback, please feel free to wait for a Flutter team\nmember\u0027s review for guidance on which automated comments should be\naddressed.\n\n\u003c!-- Links --\u003e\n[Contributor Guide]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview\n[Tree Hygiene]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md\n[test-exempt]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests\n[Flutter Style Guide]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md\n[Features we expect every widget to implement]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement\n[CLA]: https://cla.developers.google.com/\n[flutter/tests]: https://github.com/flutter/tests\n[breaking change policy]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes\n[Discord]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md\n[Data Driven Fixes]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md"
    },
    {
      "commit": "09a75983175593d51d313221c5e85cfb467a5358",
      "tree": "9fa239b282a9958467b265d4bac128ba6ab34f96",
      "parents": [
        "7e0fc7f31e0da112087ce45c2908a30b692e4981"
      ],
      "author": {
        "name": "engine-flutter-autoroll",
        "email": "engine-flutter-autoroll@skia.org",
        "time": "Fri May 08 19:31:38 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 08 23:31:38 2026 +0000"
      },
      "message": "Roll Skia from 31521f8508c7 to dc78d4bd2efb (1 revision) (#186278)\n\nhttps://skia.googlesource.com/skia.git/+log/31521f8508c7..dc78d4bd2efb\n\n2026-05-08 kylechar@google.com Revert \"Disable FramebufferFetch for\nAndroid\"\n\nIf this roll has caused a breakage, revert this CL and stop the roller\nusing the controls here:\nhttps://autoroll.skia.org/r/skia-flutter-autoroll\nPlease CC\nalexisdavidc@google.com,jsimmons@google.com,kjlubick@google.com on the\nrevert to ensure that a human\nis aware of the problem.\n\nTo file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry\nTo file a bug in Flutter:\nhttps://github.com/flutter/flutter/issues/new/choose\n\nTo report a problem with the AutoRoller itself, please file a bug:\nhttps://issues.skia.org/issues/new?component\u003d1389291\u0026template\u003d1850622\n\nDocumentation for the AutoRoller is here:\nhttps://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md"
    },
    {
      "commit": "7e0fc7f31e0da112087ce45c2908a30b692e4981",
      "tree": "7ba7c6a42bd071250efc09805925cfaf13cad683",
      "parents": [
        "a95f47df91b399b5d260b2b91147318d3b876f9a"
      ],
      "author": {
        "name": "gaaclarke",
        "email": "30870216+gaaclarke@users.noreply.github.com",
        "time": "Fri May 08 16:17:25 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 08 23:17:25 2026 +0000"
      },
      "message": "Moves wide_gamut_macos to arm64 (#186214)\n\nfixes https://github.com/flutter/flutter/issues/186211\n\n## Pre-launch Checklist\n\n- [x] I read the [Contributor Guide] and followed the process outlined\nthere for submitting PRs.\n- [x] I read the [AI contribution guidelines] and understand my\nresponsibilities, or I am not using AI tools.\n- [x] I read the [Tree Hygiene] wiki page, which explains my\nresponsibilities.\n- [x] I read and followed the [Flutter Style Guide], including [Features\nwe expect every widget to implement].\n- [x] I signed the [CLA].\n- [x] I listed at least one issue that this PR fixes in the description\nabove.\n- [x] I updated/added relevant documentation (doc comments with `///`).\n- [x] I added new tests to check the change I am making, or this PR is\n[test-exempt].\n- [x] I followed the [breaking change policy] and added [Data Driven\nFixes] where supported.\n- [x] All existing and new tests are passing.\n\nIf you need help, consider asking for advice on the #hackers-new channel\non [Discord].\n\nIf this change needs to override an active code freeze, provide a\ncomment explaining why. The code freeze workflow can be overridden by\ncode reviewers. See pinned issues for any active code freezes with\nguidance.\n\n**Note**: The Flutter team is currently trialing the use of [Gemini Code\nAssist for\nGitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code).\nComments from the `gemini-code-assist` bot should not be taken as\nauthoritative feedback from the Flutter team. If you find its comments\nuseful you can update your code accordingly, but if you are unsure or\ndisagree with the feedback, please feel free to wait for a Flutter team\nmember\u0027s review for guidance on which automated comments should be\naddressed.\n\n\u003c!-- Links --\u003e\n[Contributor Guide]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview\n[AI contribution guidelines]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#ai-contribution-guidelines\n[Tree Hygiene]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md\n[test-exempt]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests\n[Flutter Style Guide]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md\n[Features we expect every widget to implement]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement\n[CLA]: https://cla.developers.google.com/\n[flutter/tests]: https://github.com/flutter/tests\n[breaking change policy]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes\n[Discord]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md\n[Data Driven Fixes]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md"
    },
    {
      "commit": "a95f47df91b399b5d260b2b91147318d3b876f9a",
      "tree": "39821b3cb6bfc3bbcdb609cd9bc2d4dbd8084141",
      "parents": [
        "2543549ab704f6f372dc92b9ffe43336014283b1"
      ],
      "author": {
        "name": "auto-submit[bot]",
        "email": "98614782+auto-submit[bot]@users.noreply.github.com",
        "time": "Fri May 08 20:54:29 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 08 20:54:29 2026 +0000"
      },
      "message": "Reverts \"[iOS] Migrate VSyncClient to a pure Obj-C implementation (#186166)\" (#186266)\n\n\u003c!-- start_original_pr_link --\u003e\nReverts: flutter/flutter#186166\n\u003c!-- end_original_pr_link --\u003e\n\u003c!-- start_initiating_author --\u003e\nInitiated by: hellohuanlin\n\u003c!-- end_initiating_author --\u003e\n\u003c!-- start_revert_reason --\u003e\nReason for reverting: This caused a crash due to using the incorrect\ntime in G3, so reverting it.\n\u003c!-- end_revert_reason --\u003e\n\u003c!-- start_original_pr_author --\u003e\nOriginal PR Author: cbracken\n\u003c!-- end_original_pr_author --\u003e\n\n\u003c!-- start_reviewers --\u003e\nReviewed By: {hellohuanlin}\n\u003c!-- end_reviewers --\u003e\n\n\u003c!-- start_revert_body --\u003e\nThis change reverts the following previous change:\nMigrates `FlutterVSyncClient` from a hybrid C++/Obj-C implementation to\na pure Objective-C implementation by removing C++ types from its\ninterface and implementation.\n\nPreviously, `FlutterVSyncClient` stored a C++\n`flutter::VsyncWaiter::Callback` and used a temporary\n`std::unique_ptr\u003cflutter::FrameTimingsRecorder\u003e` to propagate vsync\ntimestamps. This was redundant:\n\n* `FlutterVSyncClient` allocated a temporary `FrameTimingsRecorder` and\nrecorded vsync times.\n* It passed this to a C++ lambda wrapper.\n* The lambda extracted the start/target times as seconds and passed them\nto the Obj-C block callback.\n* The temporary recorder was immediately discarded.\n* `VsyncWaiterIOS` converted the seconds back to `fml::TimePoint`.\n* `VsyncWaiter::FireCallback` allocated *another* `FrameTimingsRecorder`\nand recorded the same times again.\n\nWe now:\n* manage the callback as pure Obj-C block that accepts raw\n`CFTimeInterval` (double seconds) directly from `CADisplayLink`.\n* Remove the redundant `FrameTimingsRecorder` and C++ lambda wrapper.\n* Rely solely on `VsyncWaiter::FireCallback` to handle the final\n`FrameTimingsRecorder` creation and recording, which it already does.\n\nNo test changes because this introduces no semantic change and is\ncovered by existing tests recently added in:\n\nhttps://github.com/flutter/flutter/blob/master/engine/src/flutter/shell/platform/darwin/ios/framework/Source/VSyncClientTest.swift\n\n## Pre-launch Checklist\n\n- [X] I read the [Contributor Guide] and followed the process outlined\nthere for submitting PRs.\n- [X] I read the [AI contribution guidelines] and understand my\nresponsibilities, or I am not using AI tools.\n- [X] I read the [Tree Hygiene] wiki page, which explains my\nresponsibilities.\n- [X] I read and followed the [Flutter Style Guide], including [Features\nwe expect every widget to implement].\n- [X] I signed the [CLA].\n- [X] I listed at least one issue that this PR fixes in the description\nabove.\n- [X] I updated/added relevant documentation (doc comments with `///`).\n- [X] I added new tests to check the change I am making, or this PR is\n[test-exempt].\n- [X] I followed the [breaking change policy] and added [Data Driven\nFixes] where supported.\n- [X] All existing and new tests are passing.\n\nIf you need help, consider asking for advice on the #hackers-new channel\non [Discord].\n\nIf this change needs to override an active code freeze, provide a\ncomment explaining why. The code freeze workflow can be overridden by\ncode reviewers. See pinned issues for any active code freezes with\nguidance.\n\n**Note**: The Flutter team is currently trialing the use of [Gemini Code\nAssist for\nGitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code).\nComments from the `gemini-code-assist` bot should not be taken as\nauthoritative feedback from the Flutter team. If you find its comments\nuseful you can update your code accordingly, but if you are unsure or\ndisagree with the feedback, please feel free to wait for a Flutter team\nmember\u0027s review for guidance on which automated comments should be\naddressed.\n\n\u003c!-- Links --\u003e\n[Contributor Guide]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview\n[AI contribution guidelines]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#ai-contribution-guidelines\n[Tree Hygiene]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md\n[test-exempt]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests\n[Flutter Style Guide]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md\n[Features we expect every widget to implement]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement\n[CLA]: https://cla.developers.google.com/\n[flutter/tests]: https://github.com/flutter/tests\n[breaking change policy]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes\n[Discord]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md\n[Data Driven Fixes]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md\n\n\u003c!-- end_revert_body --\u003e\n\nCo-authored-by: auto-submit[bot] \u003cflutter-engprod-team@google.com\u003e"
    },
    {
      "commit": "2543549ab704f6f372dc92b9ffe43336014283b1",
      "tree": "29c35bd000f8e2d9e81b62315179b00248eeb25d",
      "parents": [
        "8e1aa6402a662f421b6f9119b4e745f6ee8e67ad"
      ],
      "author": {
        "name": "engine-flutter-autoroll",
        "email": "engine-flutter-autoroll@skia.org",
        "time": "Fri May 08 15:27:58 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 08 19:27:58 2026 +0000"
      },
      "message": "Roll Skia from a00db8749edb to 31521f8508c7 (2 revisions) (#186264)\n\nhttps://skia.googlesource.com/skia.git/+log/a00db8749edb..31521f8508c7\n\n2026-05-08\nrecipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com\nRoll recipe dependencies (trivial).\n2026-05-08 SCHMIDT Add SkStrikeRef: public API for cached strike access\nfrom SkFont\n\nIf this roll has caused a breakage, revert this CL and stop the roller\nusing the controls here:\nhttps://autoroll.skia.org/r/skia-flutter-autoroll\nPlease CC\nalexisdavidc@google.com,jsimmons@google.com,kjlubick@google.com on the\nrevert to ensure that a human\nis aware of the problem.\n\nTo file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry\nTo file a bug in Flutter:\nhttps://github.com/flutter/flutter/issues/new/choose\n\nTo report a problem with the AutoRoller itself, please file a bug:\nhttps://issues.skia.org/issues/new?component\u003d1389291\u0026template\u003d1850622\n\nDocumentation for the AutoRoller is here:\nhttps://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md"
    },
    {
      "commit": "8e1aa6402a662f421b6f9119b4e745f6ee8e67ad",
      "tree": "7e53fbe1401b001df6d5dc177df58700b4290d19",
      "parents": [
        "e4f3f6b0584ce369ef868ba4622c80ee9197e3e8"
      ],
      "author": {
        "name": "b-luk",
        "email": "97480502+b-luk@users.noreply.github.com",
        "time": "Fri May 08 11:32:03 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 08 18:32:03 2026 +0000"
      },
      "message": "Optimize compatible `DrawDiffRoundRect` calls to use `DrawRoundRect` (#186203)\n\nUpdates display_list_builder to optimize `DrawDiffRoundRect` calls to\ndraw an equivalent stroked RoundRect using `DrawRoundRect` when\npossible. See\nhttps://github.com/flutter/flutter/issues/185696#issuecomment-4399851139\n\nFixes https://github.com/flutter/flutter/issues/185696\n\n## Pre-launch Checklist\n\n- [x] I read the [Contributor Guide] and followed the process outlined\nthere for submitting PRs.\n- [x] I read the [AI contribution guidelines] and understand my\nresponsibilities, or I am not using AI tools.\n- [x] I read the [Tree Hygiene] wiki page, which explains my\nresponsibilities.\n- [x] I read and followed the [Flutter Style Guide], including [Features\nwe expect every widget to implement].\n- [x] I signed the [CLA].\n- [x] I listed at least one issue that this PR fixes in the description\nabove.\n- [x] I updated/added relevant documentation (doc comments with `///`).\n- [x] I added new tests to check the change I am making, or this PR is\n[test-exempt].\n- [x] I followed the [breaking change policy] and added [Data Driven\nFixes] where supported.\n- [ ] All existing and new tests are passing.\n\nIf you need help, consider asking for advice on the #hackers-new channel\non [Discord].\n\nIf this change needs to override an active code freeze, provide a\ncomment explaining why. The code freeze workflow can be overridden by\ncode reviewers. See pinned issues for any active code freezes with\nguidance.\n\n**Note**: The Flutter team is currently trialing the use of [Gemini Code\nAssist for\nGitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code).\nComments from the `gemini-code-assist` bot should not be taken as\nauthoritative feedback from the Flutter team. If you find its comments\nuseful you can update your code accordingly, but if you are unsure or\ndisagree with the feedback, please feel free to wait for a Flutter team\nmember\u0027s review for guidance on which automated comments should be\naddressed.\n\n\u003c!-- Links --\u003e\n[Contributor Guide]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview\n[AI contribution guidelines]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#ai-contribution-guidelines\n[Tree Hygiene]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md\n[test-exempt]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests\n[Flutter Style Guide]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md\n[Features we expect every widget to implement]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement\n[CLA]: https://cla.developers.google.com/\n[flutter/tests]: https://github.com/flutter/tests\n[breaking change policy]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes\n[Discord]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md\n[Data Driven Fixes]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md"
    },
    {
      "commit": "e4f3f6b0584ce369ef868ba4622c80ee9197e3e8",
      "tree": "d4b0fdb85a5781edd67296922761201629556afc",
      "parents": [
        "ea9d0ea6fac9a203f78a8f0bbbbd395b7bc23a0c"
      ],
      "author": {
        "name": "Brandon DeRosier",
        "email": "bdero@google.com",
        "time": "Fri May 08 10:47:33 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 08 17:47:33 2026 +0000"
      },
      "message": "[triage] Add Flutter GPU as a triage team (#186263)\n\nAdds Flutter GPU to the primary triage flow chart and the per-team links\nsection in `docs/triage/README.md`, and teaches `.github/labeler.yml` to\nauto-apply the existing `flutter-gpu` category label and the\n`team-fluttergpu` team label to PRs touching Flutter GPU paths.\n\nThe idea of triaging fluttergpu separately from the rest of engine came\nup in https://github.com/flutter/flutter/issues/185883, but I\u0027m very\nmuch open to what ya\u0027ll think is the best way to triage. :)\n\n## Pre-launch Checklist\n\n- [x] I read the [Contributor Guide] and followed the process outlined\nthere for submitting PRs.\n- [x] I read the [AI contribution guidelines] and understand my\nresponsibilities, or I am not using AI tools.\n- [x] I read the [Tree Hygiene] wiki page, which explains my\nresponsibilities.\n- [x] I read and followed the [Flutter Style Guide], including [Features\nwe expect every widget to implement].\n- [x] I signed the [CLA].\n- [ ] I listed at least one issue that this PR fixes in the description\nabove.\n- [x] I updated/added relevant documentation (doc comments with `///`).\n- [x] I added new tests to check the change I am making, or this PR is\n[test-exempt].\n- [x] I followed the [breaking change policy] and added [Data Driven\nFixes] where supported.\n- [x] All existing and new tests are passing.\n\n\u003c!-- Links --\u003e\n[Contributor Guide]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview\n[AI contribution guidelines]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#ai-contribution-guidelines\n[Tree Hygiene]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md\n[test-exempt]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests\n[Flutter Style Guide]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md\n[Features we expect every widget to implement]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement\n[CLA]: https://cla.developers.google.com/\n[breaking change policy]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes\n[Data Driven Fixes]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md"
    },
    {
      "commit": "ea9d0ea6fac9a203f78a8f0bbbbd395b7bc23a0c",
      "tree": "735c9b586150c5b16a1067bb8f185e6648300382",
      "parents": [
        "ab5f286a02aa8b87a0d4bbb41d61be3efb27d402"
      ],
      "author": {
        "name": "Dmitry Grand",
        "email": "dmgr@google.com",
        "time": "Fri May 08 09:56:24 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 08 16:56:24 2026 +0000"
      },
      "message": "doc: Unified Check-Run User manual (#186210)\n\nAdded Unified Check-Run flow user manual\n\n---------\n\nCo-authored-by: gemini-code-assist[bot] \u003c176961590+gemini-code-assist[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "ab5f286a02aa8b87a0d4bbb41d61be3efb27d402",
      "tree": "1724a3a26838e60b94ceb87a58861dd62121c610",
      "parents": [
        "f2d0833ed4203c41b7efc8eaa3b9a58e388ca5fc"
      ],
      "author": {
        "name": "engine-flutter-autoroll",
        "email": "engine-flutter-autoroll@skia.org",
        "time": "Fri May 08 12:39:12 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 08 16:39:12 2026 +0000"
      },
      "message": "Roll Skia from 5f7adf4403d6 to a00db8749edb (1 revision) (#186257)\n\nhttps://skia.googlesource.com/skia.git/+log/5f7adf4403d6..a00db8749edb\n\n2026-05-08 skia-autoroll@skia-public.iam.gserviceaccount.com Roll\nvulkan-deps from f2bd0563dba7 to df94adb30172 (10 revisions)\n\nIf this roll has caused a breakage, revert this CL and stop the roller\nusing the controls here:\nhttps://autoroll.skia.org/r/skia-flutter-autoroll\nPlease CC\nalexisdavidc@google.com,jsimmons@google.com,kjlubick@google.com on the\nrevert to ensure that a human\nis aware of the problem.\n\nTo file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry\nTo file a bug in Flutter:\nhttps://github.com/flutter/flutter/issues/new/choose\n\nTo report a problem with the AutoRoller itself, please file a bug:\nhttps://issues.skia.org/issues/new?component\u003d1389291\u0026template\u003d1850622\n\nDocumentation for the AutoRoller is here:\nhttps://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md"
    },
    {
      "commit": "f2d0833ed4203c41b7efc8eaa3b9a58e388ca5fc",
      "tree": "f879930c95d4a099329249a668ed0a5d95b0f775",
      "parents": [
        "08d8c951bdba72c804a2ca6e5ac1e3699ba9db25"
      ],
      "author": {
        "name": "engine-flutter-autoroll",
        "email": "engine-flutter-autoroll@skia.org",
        "time": "Fri May 08 11:59:44 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 08 15:59:44 2026 +0000"
      },
      "message": "Roll Packages from 0411f1deabb4 to 92552b16bcc1 (1 revision) (#186256)\n\nhttps://github.com/flutter/packages/compare/0411f1deabb4...92552b16bcc1\n\n2026-05-07 stuartmorgan@google.com [video_player] Convert top-level\nclasses to Swift (flutter/packages#11658)\n\nIf this roll has caused a breakage, revert this CL and stop the roller\nusing the controls here:\nhttps://autoroll.skia.org/r/flutter-packages-flutter-autoroll\nPlease CC flutter-ecosystem@google.com on the revert to ensure that a\nhuman\nis aware of the problem.\n\nTo file a bug in Flutter:\nhttps://github.com/flutter/flutter/issues/new/choose\n\nTo report a problem with the AutoRoller itself, please file a bug:\nhttps://issues.skia.org/issues/new?component\u003d1389291\u0026template\u003d1850622\n\nDocumentation for the AutoRoller is here:\nhttps://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md"
    },
    {
      "commit": "08d8c951bdba72c804a2ca6e5ac1e3699ba9db25",
      "tree": "29ae2b8d08373923b8240607ed96d0180210cfde",
      "parents": [
        "7525c7964e2979e17e9f5bd5411d0a66200d8dc1"
      ],
      "author": {
        "name": "Gray Mackall",
        "email": "34871572+gmackall@users.noreply.github.com",
        "time": "Fri May 08 08:41:58 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 08 15:41:58 2026 +0000"
      },
      "message": "Add logging to figure out jvm crashes for `hot_mode_tests` (#186107)\n\nPrints out the jvm crash seen here:\n`JVM crash log found:\nfile:///opt/s/w/ir/x/t/gallery_workspace/edited_flutter_gallery/android/hs_err_pid50777.log`\n\nhttps://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8683419392623582177/+/u/step_is_flaky:_run_hot_mode_dev_cycle__benchmark/stdout\n\nin most of the flaking tests. Maybe will help us find the root cause.\n\n---------\n\nCo-authored-by: gemini-code-assist[bot] \u003c176961590+gemini-code-assist[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "7525c7964e2979e17e9f5bd5411d0a66200d8dc1",
      "tree": "adfc53c9511678c961dbda13aa8e07fef9440410",
      "parents": [
        "405c3aa57372006caf9786ac5bff313d70cdc7eb"
      ],
      "author": {
        "name": "engine-flutter-autoroll",
        "email": "engine-flutter-autoroll@skia.org",
        "time": "Fri May 08 05:04:29 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 08 09:04:29 2026 +0000"
      },
      "message": "Roll Skia from 926c09741ce2 to 5f7adf4403d6 (3 revisions) (#186242)\n\nhttps://skia.googlesource.com/skia.git/+log/926c09741ce2..5f7adf4403d6\n\n2026-05-08 skia-autoroll@skia-public.iam.gserviceaccount.com Roll ANGLE\nfrom 95d16933d919 to ab41985470ba (11 revisions)\n2026-05-08\nrecipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com\nRoll recipe dependencies (trivial).\n2026-05-08 skia-autoroll@skia-public.iam.gserviceaccount.com Roll Skia\nInfra from f7c1e4ac4125 to 99ee78410476 (21 revisions)\n\nIf this roll has caused a breakage, revert this CL and stop the roller\nusing the controls here:\nhttps://autoroll.skia.org/r/skia-flutter-autoroll\nPlease CC\nalexisdavidc@google.com,jsimmons@google.com,kjlubick@google.com on the\nrevert to ensure that a human\nis aware of the problem.\n\nTo file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry\nTo file a bug in Flutter:\nhttps://github.com/flutter/flutter/issues/new/choose\n\nTo report a problem with the AutoRoller itself, please file a bug:\nhttps://issues.skia.org/issues/new?component\u003d1389291\u0026template\u003d1850622\n\nDocumentation for the AutoRoller is here:\nhttps://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md"
    },
    {
      "commit": "405c3aa57372006caf9786ac5bff313d70cdc7eb",
      "tree": "9a61990c8fba4f5521853830fa182fb90eceed01",
      "parents": [
        "3c64ed3cf6dbe73466062fea3dafebbdc8393710"
      ],
      "author": {
        "name": "engine-flutter-autoroll",
        "email": "engine-flutter-autoroll@skia.org",
        "time": "Fri May 08 04:44:12 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 08 08:44:12 2026 +0000"
      },
      "message": "Roll Fuchsia Linux SDK from FhyXCyvc9V-fqyHjt... to 5_TnhTsHSqtCx37o6... (#186241)\n\nIf this roll has caused a breakage, revert this CL and stop the roller\nusing the controls here:\nhttps://autoroll.skia.org/r/fuchsia-linux-sdk-flutter\nPlease CC jsimmons@google.com,zra@google.com on the revert to ensure\nthat a human\nis aware of the problem.\n\nTo file a bug in Flutter:\nhttps://github.com/flutter/flutter/issues/new/choose\n\nTo report a problem with the AutoRoller itself, please file a bug:\nhttps://issues.skia.org/issues/new?component\u003d1389291\u0026template\u003d1850622\n\nDocumentation for the AutoRoller is here:\nhttps://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md"
    },
    {
      "commit": "3c64ed3cf6dbe73466062fea3dafebbdc8393710",
      "tree": "ab5ed0b90b17ee48362d1c8eb5fb37c306bafc9d",
      "parents": [
        "b35459260fe37ea3d87ea5fafa674db3a54bea58"
      ],
      "author": {
        "name": "Chris Bracken",
        "email": "chris@bracken.jp",
        "time": "Fri May 08 16:58:35 2026 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 08 07:58:35 2026 +0000"
      },
      "message": "[iOS][macOS] ignore Swift Package Manager .build directories (#186227)\n\nWhen using SPM within the tree, such as in any examples or (in future)\nwhen generating the Swift symbols database during compile to provide\nauto code completion etc. to SourceKit-LSP (the Swift LSP\nimplementation), we don\u0027t want binary blobs being checked in.\n\nNo tests because .gitignore.\n\nIssue: https://github.com/flutter/flutter/issues/185741\n\n## Pre-launch Checklist\n\n- [X] I read the [Contributor Guide] and followed the process outlined\nthere for submitting PRs.\n- [X] I read the [AI contribution guidelines] and understand my\nresponsibilities, or I am not using AI tools.\n- [X] I read the [Tree Hygiene] wiki page, which explains my\nresponsibilities.\n- [X] I read and followed the [Flutter Style Guide], including [Features\nwe expect every widget to implement].\n- [X] I signed the [CLA].\n- [X] I listed at least one issue that this PR fixes in the description\nabove.\n- [X] I updated/added relevant documentation (doc comments with `///`).\n- [X] I added new tests to check the change I am making, or this PR is\n[test-exempt].\n- [X] I followed the [breaking change policy] and added [Data Driven\nFixes] where supported.\n- [X] All existing and new tests are passing.\n\nIf you need help, consider asking for advice on the #hackers-new channel\non [Discord].\n\nIf this change needs to override an active code freeze, provide a\ncomment explaining why. The code freeze workflow can be overridden by\ncode reviewers. See pinned issues for any active code freezes with\nguidance.\n\n**Note**: The Flutter team is currently trialing the use of [Gemini Code\nAssist for\nGitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code).\nComments from the `gemini-code-assist` bot should not be taken as\nauthoritative feedback from the Flutter team. If you find its comments\nuseful you can update your code accordingly, but if you are unsure or\ndisagree with the feedback, please feel free to wait for a Flutter team\nmember\u0027s review for guidance on which automated comments should be\naddressed.\n\n\u003c!-- Links --\u003e\n[Contributor Guide]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview\n[AI contribution guidelines]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#ai-contribution-guidelines\n[Tree Hygiene]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md\n[test-exempt]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests\n[Flutter Style Guide]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md\n[Features we expect every widget to implement]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement\n[CLA]: https://cla.developers.google.com/\n[flutter/tests]: https://github.com/flutter/tests\n[breaking change policy]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes\n[Discord]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md\n[Data Driven Fixes]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md"
    },
    {
      "commit": "b35459260fe37ea3d87ea5fafa674db3a54bea58",
      "tree": "0edf0045d3a51b535227c126486932001006ae28",
      "parents": [
        "7911b8fda9f69aec40ccbf1b4f7c39d9a52a1934"
      ],
      "author": {
        "name": "flutter-pub-roller-bot",
        "email": "137456488+flutter-pub-roller-bot@users.noreply.github.com",
        "time": "Fri May 08 00:33:09 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 08 07:33:09 2026 +0000"
      },
      "message": "Roll pub packages (#186240)\n\nThis PR was generated by `flutter update-packages --force-upgrade`."
    },
    {
      "commit": "7911b8fda9f69aec40ccbf1b4f7c39d9a52a1934",
      "tree": "767e6df32d045c7c24183ff90dda0d56af6c24f7",
      "parents": [
        "77427ecacd201c51b518692d01790b3a81f15337"
      ],
      "author": {
        "name": "engine-flutter-autoroll",
        "email": "engine-flutter-autoroll@skia.org",
        "time": "Fri May 08 02:30:30 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 08 06:30:30 2026 +0000"
      },
      "message": "Roll Skia from 3a8795df2c46 to 926c09741ce2 (3 revisions) (#186235)\n\nhttps://skia.googlesource.com/skia.git/+log/3a8795df2c46..926c09741ce2\n\n2026-05-08 skia-autoroll@skia-public.iam.gserviceaccount.com Roll\nvulkan-deps from a4ff3c87bd50 to f2bd0563dba7 (18 revisions)\n2026-05-08\nrecipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com\nRoll recipe dependencies (trivial).\n2026-05-07 kjlubick@google.com Address stack overflow in\nSkPicturePriv::MakeFromBuffer\n\nIf this roll has caused a breakage, revert this CL and stop the roller\nusing the controls here:\nhttps://autoroll.skia.org/r/skia-flutter-autoroll\nPlease CC\nalexisdavidc@google.com,jsimmons@google.com,kjlubick@google.com on the\nrevert to ensure that a human\nis aware of the problem.\n\nTo file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry\nTo file a bug in Flutter:\nhttps://github.com/flutter/flutter/issues/new/choose\n\nTo report a problem with the AutoRoller itself, please file a bug:\nhttps://issues.skia.org/issues/new?component\u003d1389291\u0026template\u003d1850622\n\nDocumentation for the AutoRoller is here:\nhttps://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md"
    },
    {
      "commit": "77427ecacd201c51b518692d01790b3a81f15337",
      "tree": "d8b86211ebdfcffebf8133721966363383811a87",
      "parents": [
        "6ffd48a4c45c95bf35b1c00c711f31e945bc8fee"
      ],
      "author": {
        "name": "Chris Bracken",
        "email": "chris@bracken.jp",
        "time": "Fri May 08 14:17:09 2026 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 08 05:17:09 2026 +0000"
      },
      "message": "[iOS] Specify Swift version in Flutter Gallery (#186231)\n\nFlutter Gallery was broken by the roll of video_player_avfoundation\n2.9.5 in packages roll https://github.com/flutter/flutter/pull/186224\n(rolled back in https://github.com/flutter/flutter/pull/186229). This\nwas due to adopting Swift in that plugin.\n\nCocoaPods target validation requires either:\n* the pod specifies a Swift version.\n* the target using it has SWIFT_VERSION set.\n\nWe didn\u0027t do either. This updates Flutter Gallery to specify this.\n\nFixes breakage caused in https://github.com/flutter/flutter/pull/186224\n\nNo tests because gallery itself acts as a test and this effectively\nfixes a build error.\n\n## Pre-launch Checklist\n\n- [X] I read the [Contributor Guide] and followed the process outlined\nthere for submitting PRs.\n- [X] I read the [AI contribution guidelines] and understand my\nresponsibilities, or I am not using AI tools.\n- [X] I read the [Tree Hygiene] wiki page, which explains my\nresponsibilities.\n- [X] I read and followed the [Flutter Style Guide], including [Features\nwe expect every widget to implement].\n- [X] I signed the [CLA].\n- [X] I listed at least one issue that this PR fixes in the description\nabove.\n- [X] I updated/added relevant documentation (doc comments with `///`).\n- [X] I added new tests to check the change I am making, or this PR is\n[test-exempt].\n- [X] I followed the [breaking change policy] and added [Data Driven\nFixes] where supported.\n- [X] All existing and new tests are passing.\n\nIf you need help, consider asking for advice on the #hackers-new channel\non [Discord].\n\nIf this change needs to override an active code freeze, provide a\ncomment explaining why. The code freeze workflow can be overridden by\ncode reviewers. See pinned issues for any active code freezes with\nguidance.\n\n**Note**: The Flutter team is currently trialing the use of [Gemini Code\nAssist for\nGitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code).\nComments from the `gemini-code-assist` bot should not be taken as\nauthoritative feedback from the Flutter team. If you find its comments\nuseful you can update your code accordingly, but if you are unsure or\ndisagree with the feedback, please feel free to wait for a Flutter team\nmember\u0027s review for guidance on which automated comments should be\naddressed.\n\n\u003c!-- Links --\u003e\n[Contributor Guide]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview\n[AI contribution guidelines]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#ai-contribution-guidelines\n[Tree Hygiene]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md\n[test-exempt]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests\n[Flutter Style Guide]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md\n[Features we expect every widget to implement]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement\n[CLA]: https://cla.developers.google.com/\n[flutter/tests]: https://github.com/flutter/tests\n[breaking change policy]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes\n[Discord]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md\n[Data Driven Fixes]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md"
    },
    {
      "commit": "6ffd48a4c45c95bf35b1c00c711f31e945bc8fee",
      "tree": "d9700a178cdb8ced5e6789a55b0e28170a8ae1b3",
      "parents": [
        "28c99d717e32278fc832a0bfcd144c30e3b04c12"
      ],
      "author": {
        "name": "auto-submit[bot]",
        "email": "98614782+auto-submit[bot]@users.noreply.github.com",
        "time": "Fri May 08 02:04:07 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 08 02:04:07 2026 +0000"
      },
      "message": "Reverts \"Roll pub packages (#186224)\" (#186229)\n\n\u003c!-- start_original_pr_link --\u003e\nReverts: flutter/flutter#186224\n\u003c!-- end_original_pr_link --\u003e\n\u003c!-- start_initiating_author --\u003e\nInitiated by: cbracken\n\u003c!-- end_initiating_author --\u003e\n\u003c!-- start_revert_reason --\u003e\nReason for reverting: breaks the tree due to a swift dependency added.\n\n```\n/Volumes/Work/s/w/ir/cache/ruby/.cipd/pkgs/0/pZTfjoFUwZNnilFjCkjEo8rdpdqPNerhy3XDi6ly8kAC/bin/darwin_ruby/lib/ruby/gems/3.1.0/gems/cocoapods-\n  1.13.0/bin/pod:55:in `\u003ctop (required)\u003e\u0027\n                  /Volumes/Work/s/w/ir/cache/ruby/bin/darwin_ruby/bin/pod:36:in `load\u0027\n                  /Volumes/Work/s/w/ir/cache/ruby/bin/darwin_ruby/bin\n\u003c!-- end_revert_reason --\u003e\n\u003c!-- start_original_pr_author --\u003e\nOriginal PR Author: flutter-pub-roller-bot\n\u003c!-- end_original_pr_author --\u003e\n\n\u003c!-- start_reviewers --\u003e\nReviewed By: {fluttergithubbot}\n\u003c!-- end_reviewers --\u003e\n\n\u003c!-- start_revert_body --\u003e\nThis change reverts the following previous change:\nThis PR was generated by `flutter update-packages --force-upgrade`.\n\u003c!-- end_revert_body --\u003e\n\nCo-authored-by: auto-submit[bot] \u003cflutter-engprod-team@google.com\u003e"
    },
    {
      "commit": "28c99d717e32278fc832a0bfcd144c30e3b04c12",
      "tree": "cbdf277a34362f84737e6d9080658d0585feba74",
      "parents": [
        "291001ef1e907da5c01453cb0d5fcb30b3a96260"
      ],
      "author": {
        "name": "engine-flutter-autoroll",
        "email": "engine-flutter-autoroll@skia.org",
        "time": "Thu May 07 20:06:22 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 08 00:06:22 2026 +0000"
      },
      "message": "Roll Skia from 3c73323d1268 to 3a8795df2c46 (3 revisions) (#186222)\n\nhttps://skia.googlesource.com/skia.git/+log/3c73323d1268..3a8795df2c46\n\n2026-05-07\nrecipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com\nRoll recipe dependencies (trivial).\n2026-05-07 kjlubick@google.com Fix assert in FuzzNicePath\n2026-05-07\nrecipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com\nRoll recipe dependencies (trivial).\n\nIf this roll has caused a breakage, revert this CL and stop the roller\nusing the controls here:\nhttps://autoroll.skia.org/r/skia-flutter-autoroll\nPlease CC\nalexisdavidc@google.com,jsimmons@google.com,kjlubick@google.com on the\nrevert to ensure that a human\nis aware of the problem.\n\nTo file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry\nTo file a bug in Flutter:\nhttps://github.com/flutter/flutter/issues/new/choose\n\nTo report a problem with the AutoRoller itself, please file a bug:\nhttps://issues.skia.org/issues/new?component\u003d1389291\u0026template\u003d1850622\n\nDocumentation for the AutoRoller is here:\nhttps://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md"
    },
    {
      "commit": "291001ef1e907da5c01453cb0d5fcb30b3a96260",
      "tree": "a441bb6adbbb4e124ad0f966f333e317ab33488e",
      "parents": [
        "e5c4fbab25957efc624ef2cdf01b5392570df7f6"
      ],
      "author": {
        "name": "Chris Bracken",
        "email": "chris@bracken.jp",
        "time": "Fri May 08 08:33:11 2026 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 07 23:33:11 2026 +0000"
      },
      "message": "[iOS] Migrate VSyncClient to a pure Obj-C implementation (#186166)\n\nMigrates `FlutterVSyncClient` from a hybrid C++/Obj-C implementation to\na pure Objective-C implementation by removing C++ types from its\ninterface and implementation.\n\nPreviously, `FlutterVSyncClient` stored a C++\n`flutter::VsyncWaiter::Callback` and used a temporary\n`std::unique_ptr\u003cflutter::FrameTimingsRecorder\u003e` to propagate vsync\ntimestamps. This was redundant:\n\n* `FlutterVSyncClient` allocated a temporary `FrameTimingsRecorder` and\nrecorded vsync times.\n* It passed this to a C++ lambda wrapper.\n* The lambda extracted the start/target times as seconds and passed them\nto the Obj-C block callback.\n* The temporary recorder was immediately discarded.\n* `VsyncWaiterIOS` converted the seconds back to `fml::TimePoint`.\n* `VsyncWaiter::FireCallback` allocated *another* `FrameTimingsRecorder`\nand recorded the same times again.\n\nWe now:\n* manage the callback as pure Obj-C block that accepts raw\n`CFTimeInterval` (double seconds) directly from `CADisplayLink`.\n* Remove the redundant `FrameTimingsRecorder` and C++ lambda wrapper.\n* Rely solely on `VsyncWaiter::FireCallback` to handle the final\n`FrameTimingsRecorder` creation and recording, which it already does.\n\nNo test changes because this introduces no semantic change and is\ncovered by existing tests recently added in:\n\nhttps://github.com/flutter/flutter/blob/master/engine/src/flutter/shell/platform/darwin/ios/framework/Source/VSyncClientTest.swift\n\n## Pre-launch Checklist\n\n- [X] I read the [Contributor Guide] and followed the process outlined\nthere for submitting PRs.\n- [X] I read the [AI contribution guidelines] and understand my\nresponsibilities, or I am not using AI tools.\n- [X] I read the [Tree Hygiene] wiki page, which explains my\nresponsibilities.\n- [X] I read and followed the [Flutter Style Guide], including [Features\nwe expect every widget to implement].\n- [X] I signed the [CLA].\n- [X] I listed at least one issue that this PR fixes in the description\nabove.\n- [X] I updated/added relevant documentation (doc comments with `///`).\n- [X] I added new tests to check the change I am making, or this PR is\n[test-exempt].\n- [X] I followed the [breaking change policy] and added [Data Driven\nFixes] where supported.\n- [X] All existing and new tests are passing.\n\nIf you need help, consider asking for advice on the #hackers-new channel\non [Discord].\n\nIf this change needs to override an active code freeze, provide a\ncomment explaining why. The code freeze workflow can be overridden by\ncode reviewers. See pinned issues for any active code freezes with\nguidance.\n\n**Note**: The Flutter team is currently trialing the use of [Gemini Code\nAssist for\nGitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code).\nComments from the `gemini-code-assist` bot should not be taken as\nauthoritative feedback from the Flutter team. If you find its comments\nuseful you can update your code accordingly, but if you are unsure or\ndisagree with the feedback, please feel free to wait for a Flutter team\nmember\u0027s review for guidance on which automated comments should be\naddressed.\n\n\u003c!-- Links --\u003e\n[Contributor Guide]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview\n[AI contribution guidelines]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#ai-contribution-guidelines\n[Tree Hygiene]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md\n[test-exempt]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests\n[Flutter Style Guide]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md\n[Features we expect every widget to implement]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement\n[CLA]: https://cla.developers.google.com/\n[flutter/tests]: https://github.com/flutter/tests\n[breaking change policy]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes\n[Discord]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md\n[Data Driven Fixes]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md"
    },
    {
      "commit": "e5c4fbab25957efc624ef2cdf01b5392570df7f6",
      "tree": "04f48db92b96cd8f4d5da15f02f8b9884d09487f",
      "parents": [
        "bd9ed954170803e323ae8c5fb0e040965d3e3ff1"
      ],
      "author": {
        "name": "flutter-pub-roller-bot",
        "email": "137456488+flutter-pub-roller-bot@users.noreply.github.com",
        "time": "Thu May 07 16:27:39 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 07 23:27:39 2026 +0000"
      },
      "message": "Roll pub packages (#186224)\n\nThis PR was generated by `flutter update-packages --force-upgrade`."
    },
    {
      "commit": "bd9ed954170803e323ae8c5fb0e040965d3e3ff1",
      "tree": "cf21c30bd893095137292032abd4e19a7cd79d0e",
      "parents": [
        "a05715c07f8e784370bfa2fb1e79c6dcf510c015"
      ],
      "author": {
        "name": "Michael Brase",
        "email": "mbrase@google.com",
        "time": "Thu May 07 16:51:53 2026 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 07 22:51:53 2026 +0000"
      },
      "message": "Update Fuchsia integration tests to use subpackaged runners (#186172)\n\nThis commit removes the \"oot_\" prefixed dart/flutter runners (e.g.\n\"oot_dart_jit_runner\") and switches to using the regular runners (e.g.\n\"dart_jit_runner) as a subpackage in the integration tests. The benefit\nof this is that the runners are fully embedded in the integration test\u0027s\npackage, and won\u0027t override the fuchsia.com packages in the base image."
    },
    {
      "commit": "a05715c07f8e784370bfa2fb1e79c6dcf510c015",
      "tree": "0aee9ee664f93986b2dc69e5f9053ccfcc81b780",
      "parents": [
        "146e6ae4394e866a8f37aa9c1be98998a4ebf1c8"
      ],
      "author": {
        "name": "Harry Terkelsen",
        "email": "1961493+harryterkelsen@users.noreply.github.com",
        "time": "Thu May 07 15:25:57 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 07 22:25:57 2026 +0000"
      },
      "message": "feat(web): implement image decoding throttling for HTML images (#186032)\n\nIntroduces a centralized ImageDecodingManager to coordinate the\nconcurrency and memory footprint of `HTMLImageElement.decode()` calls.\nThis prevents resource exhaustion and silent crashes on browsers like\niOS Safari when handling high volumes of large image assets.\n    \n- Added ImageDecodingManager to enforce safety limits (20 decodes /\n128MB).\n- Refactored HtmlImageElementCodec to use a multi-phase throttled\ndecode.\n- Implemented aggressive resource reclamation by clearing img.src on\ndisposal.\n- Added unit tests for the manager and updated codec integration tests.\n\nLargely alleviates https://github.com/flutter/flutter/issues/152709\n\n## Pre-launch Checklist\n\n- [x] I read the [Contributor Guide] and followed the process outlined\nthere for submitting PRs.\n- [x] I read the [AI contribution guidelines] and understand my\nresponsibilities, or I am not using AI tools.\n- [x] I read the [Tree Hygiene] wiki page, which explains my\nresponsibilities.\n- [x] I read and followed the [Flutter Style Guide], including [Features\nwe expect every widget to implement].\n- [x] I signed the [CLA].\n- [x] I listed at least one issue that this PR fixes in the description\nabove.\n- [x] I updated/added relevant documentation (doc comments with `///`).\n- [x] I added new tests to check the change I am making, or this PR is\n[test-exempt].\n- [x] I followed the [breaking change policy] and added [Data Driven\nFixes] where supported.\n- [x] All existing and new tests are passing.\n\nIf you need help, consider asking for advice on the #hackers-new channel\non [Discord].\n\nIf this change needs to override an active code freeze, provide a\ncomment explaining why. The code freeze workflow can be overridden by\ncode reviewers. See pinned issues for any active code freezes with\nguidance.\n\n**Note**: The Flutter team is currently trialing the use of [Gemini Code\nAssist for\nGitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code).\nComments from the `gemini-code-assist` bot should not be taken as\nauthoritative feedback from the Flutter team. If you find its comments\nuseful you can update your code accordingly, but if you are unsure or\ndisagree with the feedback, please feel free to wait for a Flutter team\nmember\u0027s review for guidance on which automated comments should be\naddressed.\n\n\u003c!-- Links --\u003e\n[Contributor Guide]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview\n[AI contribution guidelines]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#ai-contribution-guidelines\n[Tree Hygiene]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md\n[test-exempt]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests\n[Flutter Style Guide]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md\n[Features we expect every widget to implement]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement\n[CLA]: https://cla.developers.google.com/\n[flutter/tests]: https://github.com/flutter/tests\n[breaking change policy]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes\n[Discord]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md\n[Data Driven Fixes]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md"
    },
    {
      "commit": "146e6ae4394e866a8f37aa9c1be98998a4ebf1c8",
      "tree": "fc70acc112a33ded9271265282e84e0fd0ef830a",
      "parents": [
        "51af41bb7b52e9b9b232130e8933af9d99a53ada"
      ],
      "author": {
        "name": "chunhtai",
        "email": "47866232+chunhtai@users.noreply.github.com",
        "time": "Thu May 07 14:44:11 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 07 21:44:11 2026 +0000"
      },
      "message": "Update semantics accessibility block to also block keyboard focusability (#186206)\n\n\u003c!--\nThanks for filing a pull request!\nReviewers are typically assigned within a week of filing a request.\nTo learn more about code review, see our documentation on Tree Hygiene:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md\n--\u003e\n\nas title, otherwise blocksubTree won\u0027t be useful\n\n## Pre-launch Checklist\n\n- [ ] I read the [Contributor Guide] and followed the process outlined\nthere for submitting PRs.\n- [ ] I read the [AI contribution guidelines] and understand my\nresponsibilities, or I am not using AI tools.\n- [ ] I read the [Tree Hygiene] wiki page, which explains my\nresponsibilities.\n- [ ] I read and followed the [Flutter Style Guide], including [Features\nwe expect every widget to implement].\n- [ ] I signed the [CLA].\n- [ ] I listed at least one issue that this PR fixes in the description\nabove.\n- [ ] I updated/added relevant documentation (doc comments with `///`).\n- [ ] I added new tests to check the change I am making, or this PR is\n[test-exempt].\n- [ ] I followed the [breaking change policy] and added [Data Driven\nFixes] where supported.\n- [ ] All existing and new tests are passing.\n\nIf you need help, consider asking for advice on the #hackers-new channel\non [Discord].\n\nIf this change needs to override an active code freeze, provide a\ncomment explaining why. The code freeze workflow can be overridden by\ncode reviewers. See pinned issues for any active code freezes with\nguidance.\n\n**Note**: The Flutter team is currently trialing the use of [Gemini Code\nAssist for\nGitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code).\nComments from the `gemini-code-assist` bot should not be taken as\nauthoritative feedback from the Flutter team. If you find its comments\nuseful you can update your code accordingly, but if you are unsure or\ndisagree with the feedback, please feel free to wait for a Flutter team\nmember\u0027s review for guidance on which automated comments should be\naddressed.\n\n\u003c!-- Links --\u003e\n[Contributor Guide]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview\n[AI contribution guidelines]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#ai-contribution-guidelines\n[Tree Hygiene]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md\n[test-exempt]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests\n[Flutter Style Guide]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md\n[Features we expect every widget to implement]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement\n[CLA]: https://cla.developers.google.com/\n[flutter/tests]: https://github.com/flutter/tests\n[breaking change policy]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes\n[Discord]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md\n[Data Driven Fixes]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md"
    },
    {
      "commit": "51af41bb7b52e9b9b232130e8933af9d99a53ada",
      "tree": "69ae48ffb4768c8b41fed9d4b08995bb1cbf1a2a",
      "parents": [
        "26600b69014b42762ff104a11dcbd045a179ccbb"
      ],
      "author": {
        "name": "Sam Rawlins",
        "email": "srawlins@google.com",
        "time": "Thu May 07 12:52:00 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 07 19:52:00 2026 +0000"
      },
      "message": "[flutter_tools] Simplify catch with wildcard (#186202)\n\nWork towards https://github.com/dart-lang/sdk/issues/55738\n\nThe `_` StackTrace variable was unused. But also the `e` exception\nvariable was also unused, so make it a wildcard.\n\n## Pre-launch Checklist\n\n- [x] I read the [Contributor Guide] and followed the process outlined\nthere for submitting PRs.\n- [x] I read the [AI contribution guidelines] and understand my\nresponsibilities, or I am not using AI tools.\n- [x] I read the [Tree Hygiene] wiki page, which explains my\nresponsibilities.\n- [x] I read and followed the [Flutter Style Guide], including [Features\nwe expect every widget to implement].\n- [x] I signed the [CLA].\n- [x] I listed at least one issue that this PR fixes in the description\nabove.\n- [x] I updated/added relevant documentation (doc comments with `///`).\n- [x] I added new tests to check the change I am making, or this PR is\n[test-exempt].\n- [x] I followed the [breaking change policy] and added [Data Driven\nFixes] where supported.\n- [x] All existing and new tests are passing.\n\n\n\u003c!-- Links --\u003e\n[Contributor Guide]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview\n[AI contribution guidelines]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#ai-contribution-guidelines\n[Tree Hygiene]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md\n[test-exempt]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests\n[Flutter Style Guide]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md\n[Features we expect every widget to implement]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement\n[CLA]: https://cla.developers.google.com/\n[flutter/tests]: https://github.com/flutter/tests\n[breaking change policy]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes\n[Discord]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md\n[Data Driven Fixes]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md"
    },
    {
      "commit": "26600b69014b42762ff104a11dcbd045a179ccbb",
      "tree": "cfb084a64e3150865ce886696e24ed4f0db9ebc7",
      "parents": [
        "cb6eaf798aee0b908c76fe5bcaf8888a5afe677c"
      ],
      "author": {
        "name": "Qun Cheng",
        "email": "36861262+QuncCccccc@users.noreply.github.com",
        "time": "Thu May 07 12:47:21 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 07 19:47:21 2026 +0000"
      },
      "message": "Visit missing children which are removed in `childrenInHitTestOrder` (#185391)\n\nIf a parent has a traversal child but the parent is not the\n**traversal** parent, then when generate `childrenInTraversalOrder`, the\nchild will be removed from this parent and will be added under its real\ntraversal parent. In this case, the length of `childrenInTraversalOrder`\nand the length of `childrenInHitTestOrder` are different and\n`childrenInTraversalOrder` is **shorter**. In\n`AccessibilityBridge.java`, when we update node, we previously only\ntraverse `childrenInTraversalOrder` which caused missing traverse the\ngrafted children nodes. And then the grafted children nodes are removed\nearlier than expected by calling `willRemoveSemanticsNode()`.\n\nThis PR is to correct the visited children; we should visit both\nchildren orders to avoid missing any nodes.\n\nFixes https://github.com/flutter/flutter/issues/184810\n\n## Pre-launch Checklist\n\n- [x] I read the [Contributor Guide] and followed the process outlined\nthere for submitting PRs.\n- [x] I read the [AI contribution guidelines] and understand my\nresponsibilities, or I am not using AI tools.\n- [x] I read the [Tree Hygiene] wiki page, which explains my\nresponsibilities.\n- [x] I read and followed the [Flutter Style Guide], including [Features\nwe expect every widget to implement].\n- [x] I signed the [CLA].\n- [x] I listed at least one issue that this PR fixes in the description\nabove.\n- [x] I updated/added relevant documentation (doc comments with `///`).\n- [x] I added new tests to check the change I am making, or this PR is\n[test-exempt].\n- [x] I followed the [breaking change policy] and added [Data Driven\nFixes] where supported.\n- [x] All existing and new tests are passing."
    },
    {
      "commit": "cb6eaf798aee0b908c76fe5bcaf8888a5afe677c",
      "tree": "76aa3698fd5008260e79af574258819d85506ec3",
      "parents": [
        "30ad8ca92b30a9abb3057b6c88da0675bc5592e4"
      ],
      "author": {
        "name": "John Ryan",
        "email": "ryjohn@google.com",
        "time": "Thu May 07 10:50:16 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 07 17:50:16 2026 +0000"
      },
      "message": "Update Flutter logo image sources in README (#186195)\n\nThis updates the light and dark mode images in the README.\n\nThe Cloud Storage bucket that was being used was turned down. This is\nthe same image that was used before (courtesy of [Wayback\nMachine](https://web.archive.org/web/20260330071535im_/https://camo.githubusercontent.com/1f737ee00b13383af7975298c590563a81f5bcea1c457090cec623f8714a82e0/68747470733a2f2f73746f726167652e676f6f676c65617069732e636f6d2f636d732d73746f726167652d6275636b65742f36653139666565366234376233366361363133662e706e67)"
    },
    {
      "commit": "30ad8ca92b30a9abb3057b6c88da0675bc5592e4",
      "tree": "e3e5e84eaabe1bf0598c51282207f8a3dc4ed2d0",
      "parents": [
        "625275cfae17b27c9049b0740a9ef67d626b3b1c"
      ],
      "author": {
        "name": "Chris Bracken",
        "email": "chris@bracken.jp",
        "time": "Fri May 08 02:11:36 2026 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 07 17:11:36 2026 +0000"
      },
      "message": "[iOS] Pass NSTimeInterval instead of microseconds to Vsync tracing (#186190)\n\nFixes an issue in `FlutterVSyncClient` where platform vsync timestamps\nwere reported incorrectly to the timeline.\n\nIn https://github.com/flutter/flutter/pull/185918 I introduced the Obj-C\ntracing API, which originally used microseconds as an int64_t. During\nreview this was updated to use NSTimeInterval to be more idiomatic and\nuse a clear type in place of int64_t for the timestamp. The tests were\nupdated but the callsite was not.\n\nAuthoring a test that would differentiate microseconds from fractional\nseconds (NSTimeInterval) is infeasible in the current state without\nsignificant refactoring, however, that refactoring is coming in followup\npatch:\nhttps://github.com/flutter/flutter/pull/186166\n\nThat patch could be landed as an alternative as it also contains the\nfix.\n\nIssue: https://github.com/flutter/flutter/issues/112232\n\n\u003c!--\nThanks for filing a pull request!\nReviewers are typically assigned within a week of filing a request.\nTo learn more about code review, see our documentation on Tree Hygiene:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md\n--\u003e\n\n## Pre-launch Checklist\n\n- [X] I read the [Contributor Guide] and followed the process outlined\nthere for submitting PRs.\n- [X] I read the [AI contribution guidelines] and understand my\nresponsibilities, or I am not using AI tools.\n- [X] I read the [Tree Hygiene] wiki page, which explains my\nresponsibilities.\n- [X] I read and followed the [Flutter Style Guide], including [Features\nwe expect every widget to implement].\n- [X] I signed the [CLA].\n- [X] I listed at least one issue that this PR fixes in the description\nabove.\n- [X] I updated/added relevant documentation (doc comments with `///`).\n- [X] I added new tests to check the change I am making, or this PR is\n[test-exempt].\n- [X] I followed the [breaking change policy] and added [Data Driven\nFixes] where supported.\n- [X] All existing and new tests are passing.\n\nIf you need help, consider asking for advice on the #hackers-new channel\non [Discord].\n\nIf this change needs to override an active code freeze, provide a\ncomment explaining why. The code freeze workflow can be overridden by\ncode reviewers. See pinned issues for any active code freezes with\nguidance.\n\n**Note**: The Flutter team is currently trialing the use of [Gemini Code\nAssist for\nGitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code).\nComments from the `gemini-code-assist` bot should not be taken as\nauthoritative feedback from the Flutter team. If you find its comments\nuseful you can update your code accordingly, but if you are unsure or\ndisagree with the feedback, please feel free to wait for a Flutter team\nmember\u0027s review for guidance on which automated comments should be\naddressed.\n\n\u003c!-- Links --\u003e\n[Contributor Guide]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview\n[AI contribution guidelines]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#ai-contribution-guidelines\n[Tree Hygiene]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md\n[test-exempt]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests\n[Flutter Style Guide]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md\n[Features we expect every widget to implement]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement\n[CLA]: https://cla.developers.google.com/\n[flutter/tests]: https://github.com/flutter/tests\n[breaking change policy]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes\n[Discord]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md\n[Data Driven Fixes]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md"
    },
    {
      "commit": "625275cfae17b27c9049b0740a9ef67d626b3b1c",
      "tree": "e3ef46c479f567a0ee2f4e09d911806e754ee7cc",
      "parents": [
        "4b864f7be374373e799e613a9e799864a495cb6b"
      ],
      "author": {
        "name": "Ivan Inozemtsev",
        "email": "iinozemtsev@google.com",
        "time": "Thu May 07 19:09:27 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 07 17:09:27 2026 +0000"
      },
      "message": "Roll Dart 3.13 beta1 into Flutter (#186131)\n\nhttp://dart.googlesource.com/sdk/+log/28ef48b..a0451fb\n\nManually fix flutter_tools after\nhttps://dart-review.googlesource.com/c/sdk/+/492180."
    },
    {
      "commit": "4b864f7be374373e799e613a9e799864a495cb6b",
      "tree": "75c0807232cadd8d9fe9f00a9e3e0868ef5981e1",
      "parents": [
        "e00d0fcf3f05b5e18d27de357accd40bcd8dc25d"
      ],
      "author": {
        "name": "Lau Ching Jun",
        "email": "chingjun@google.com",
        "time": "Thu May 07 09:27:11 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 07 16:27:11 2026 +0000"
      },
      "message": "Make logger a public getter in mixin to fix crash (#186151)\n\nThis mixin is used in another class, and it cannot access the _logger\nfield from another file (which is private to that file), and caused a\ncrash.\n\nMake it a public getter to avoid crashing."
    },
    {
      "commit": "e00d0fcf3f05b5e18d27de357accd40bcd8dc25d",
      "tree": "744f6fc130d144932d0e48be1a5315020a23c7f9",
      "parents": [
        "f60631963830d0f45ed7744895dfe576f12240ff"
      ],
      "author": {
        "name": "engine-flutter-autoroll",
        "email": "engine-flutter-autoroll@skia.org",
        "time": "Thu May 07 12:14:31 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 07 16:14:31 2026 +0000"
      },
      "message": "Roll Skia from 799f4eda0f93 to 3c73323d1268 (1 revision) (#186189)\n\nhttps://skia.googlesource.com/skia.git/+log/799f4eda0f93..3c73323d1268\n\n2026-05-07 jmbetancourt@google.com set JSON starting object node in\nSkCapture viewer slide\n\nIf this roll has caused a breakage, revert this CL and stop the roller\nusing the controls here:\nhttps://autoroll.skia.org/r/skia-flutter-autoroll\nPlease CC\nalexisdavidc@google.com,jsimmons@google.com,kjlubick@google.com on the\nrevert to ensure that a human\nis aware of the problem.\n\nTo file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry\nTo file a bug in Flutter:\nhttps://github.com/flutter/flutter/issues/new/choose\n\nTo report a problem with the AutoRoller itself, please file a bug:\nhttps://issues.skia.org/issues/new?component\u003d1389291\u0026template\u003d1850622\n\nDocumentation for the AutoRoller is here:\nhttps://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md"
    },
    {
      "commit": "f60631963830d0f45ed7744895dfe576f12240ff",
      "tree": "8bcde636ab1d5fcc444aedec09661e81e2739ed8",
      "parents": [
        "a03fe9e5d02f01cf730f765467f00ce7e64dd52c"
      ],
      "author": {
        "name": "engine-flutter-autoroll",
        "email": "engine-flutter-autoroll@skia.org",
        "time": "Thu May 07 11:58:26 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 07 15:58:26 2026 +0000"
      },
      "message": "Roll Packages from 67ec0d36293e to 0411f1deabb4 (2 revisions) (#186191)\n\nhttps://github.com/flutter/packages/compare/67ec0d36293e...0411f1deabb4\n\n2026-05-07 aam@google.com Comment out the test that uses implemented\nNetworkInterface to accommodate dart sdk breaking change.\n(flutter/packages#11659)\n2026-05-06 fondoger@outlook.com [vector_graphics_compiler] Fix HSL color\nparsing for decimal percentage components (flutter/packages#11619)\n\nIf this roll has caused a breakage, revert this CL and stop the roller\nusing the controls here:\nhttps://autoroll.skia.org/r/flutter-packages-flutter-autoroll\nPlease CC flutter-ecosystem@google.com on the revert to ensure that a\nhuman\nis aware of the problem.\n\nTo file a bug in Flutter:\nhttps://github.com/flutter/flutter/issues/new/choose\n\nTo report a problem with the AutoRoller itself, please file a bug:\nhttps://issues.skia.org/issues/new?component\u003d1389291\u0026template\u003d1850622\n\nDocumentation for the AutoRoller is here:\nhttps://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md"
    },
    {
      "commit": "a03fe9e5d02f01cf730f765467f00ce7e64dd52c",
      "tree": "563fc15b1fecdf7175972b55401b9fa2717d12a9",
      "parents": [
        "68fb7a73b047a929bfb3d6aa39d662ea420c4168"
      ],
      "author": {
        "name": "engine-flutter-autoroll",
        "email": "engine-flutter-autoroll@skia.org",
        "time": "Thu May 07 08:32:25 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 07 12:32:25 2026 +0000"
      },
      "message": "Roll Skia from 2447c273d06c to 799f4eda0f93 (1 revision) (#186185)\n\nhttps://skia.googlesource.com/skia.git/+log/2447c273d06c..799f4eda0f93\n\n2026-05-07 skia-autoroll@skia-public.iam.gserviceaccount.com Roll\nvulkan-deps from 766d49b68e2f to a4ff3c87bd50 (2 revisions)\n\nIf this roll has caused a breakage, revert this CL and stop the roller\nusing the controls here:\nhttps://autoroll.skia.org/r/skia-flutter-autoroll\nPlease CC\nalexisdavidc@google.com,jsimmons@google.com,kjlubick@google.com on the\nrevert to ensure that a human\nis aware of the problem.\n\nTo file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry\nTo file a bug in Flutter:\nhttps://github.com/flutter/flutter/issues/new/choose\n\nTo report a problem with the AutoRoller itself, please file a bug:\nhttps://issues.skia.org/issues/new?component\u003d1389291\u0026template\u003d1850622\n\nDocumentation for the AutoRoller is here:\nhttps://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md"
    },
    {
      "commit": "68fb7a73b047a929bfb3d6aa39d662ea420c4168",
      "tree": "bd205089ad7fd382809553dea82a52fb135ad871",
      "parents": [
        "acf36225ba3a23d5b94ddb539a684597f1bf95cd"
      ],
      "author": {
        "name": "engine-flutter-autoroll",
        "email": "engine-flutter-autoroll@skia.org",
        "time": "Thu May 07 05:59:38 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 07 09:59:38 2026 +0000"
      },
      "message": "Roll Skia from 6b568d3717ca to 2447c273d06c (2 revisions) (#186181)\n\nhttps://skia.googlesource.com/skia.git/+log/6b568d3717ca..2447c273d06c\n\n2026-05-07 skia-autoroll@skia-public.iam.gserviceaccount.com Roll ANGLE\nfrom 997936e81bd4 to 95d16933d919 (20 revisions)\n2026-05-07 skia-autoroll@skia-public.iam.gserviceaccount.com Roll Skia\nInfra from c08a2903efbe to f7c1e4ac4125 (6 revisions)\n\nIf this roll has caused a breakage, revert this CL and stop the roller\nusing the controls here:\nhttps://autoroll.skia.org/r/skia-flutter-autoroll\nPlease CC\nalexisdavidc@google.com,jsimmons@google.com,kjlubick@google.com on the\nrevert to ensure that a human\nis aware of the problem.\n\nTo file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry\nTo file a bug in Flutter:\nhttps://github.com/flutter/flutter/issues/new/choose\n\nTo report a problem with the AutoRoller itself, please file a bug:\nhttps://issues.skia.org/issues/new?component\u003d1389291\u0026template\u003d1850622\n\nDocumentation for the AutoRoller is here:\nhttps://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md"
    },
    {
      "commit": "acf36225ba3a23d5b94ddb539a684597f1bf95cd",
      "tree": "415684a521cc57034e55c77e47d6fbe5e3a909a0",
      "parents": [
        "2b36357ff61bb7588142b6db2cabb5cc52830f46"
      ],
      "author": {
        "name": "engine-flutter-autoroll",
        "email": "engine-flutter-autoroll@skia.org",
        "time": "Thu May 07 03:42:30 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 07 07:42:30 2026 +0000"
      },
      "message": "Roll Skia from a52ece789e45 to 6b568d3717ca (2 revisions) (#186175)\n\nhttps://skia.googlesource.com/skia.git/+log/a52ece789e45..6b568d3717ca\n\n2026-05-07 skia-autoroll@skia-public.iam.gserviceaccount.com Roll Dawn\nfrom b64fc1768c2d to b048990c1246 (39 revisions)\n2026-05-07\nrecipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com\nRoll recipe dependencies (trivial).\n\nIf this roll has caused a breakage, revert this CL and stop the roller\nusing the controls here:\nhttps://autoroll.skia.org/r/skia-flutter-autoroll\nPlease CC\nalexisdavidc@google.com,jsimmons@google.com,kjlubick@google.com on the\nrevert to ensure that a human\nis aware of the problem.\n\nTo file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry\nTo file a bug in Flutter:\nhttps://github.com/flutter/flutter/issues/new/choose\n\nTo report a problem with the AutoRoller itself, please file a bug:\nhttps://issues.skia.org/issues/new?component\u003d1389291\u0026template\u003d1850622\n\nDocumentation for the AutoRoller is here:\nhttps://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md"
    },
    {
      "commit": "2b36357ff61bb7588142b6db2cabb5cc52830f46",
      "tree": "1d6cdc85c6ab8ef2a4aad1bfc0f9db6e1e90e9ee",
      "parents": [
        "564da98cb6874ab8cb44cf310bbf9e319643669e"
      ],
      "author": {
        "name": "engine-flutter-autoroll",
        "email": "engine-flutter-autoroll@skia.org",
        "time": "Thu May 07 01:21:39 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 07 05:21:39 2026 +0000"
      },
      "message": "Roll Fuchsia Linux SDK from ZgIKVyb6gV-PP_9so... to FhyXCyvc9V-fqyHjt... (#186170)\n\nIf this roll has caused a breakage, revert this CL and stop the roller\nusing the controls here:\nhttps://autoroll.skia.org/r/fuchsia-linux-sdk-flutter\nPlease CC jsimmons@google.com,zra@google.com on the revert to ensure\nthat a human\nis aware of the problem.\n\nTo file a bug in Flutter:\nhttps://github.com/flutter/flutter/issues/new/choose\n\nTo report a problem with the AutoRoller itself, please file a bug:\nhttps://issues.skia.org/issues/new?component\u003d1389291\u0026template\u003d1850622\n\nDocumentation for the AutoRoller is here:\nhttps://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md"
    },
    {
      "commit": "564da98cb6874ab8cb44cf310bbf9e319643669e",
      "tree": "1c70d7658cf57a7fe71914099927b2fa6b30bb39",
      "parents": [
        "3da669fae7033e0357514bca59fa3d0277ecbae3"
      ],
      "author": {
        "name": "engine-flutter-autoroll",
        "email": "engine-flutter-autoroll@skia.org",
        "time": "Thu May 07 00:01:08 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 07 04:01:08 2026 +0000"
      },
      "message": "Roll Skia from 605786788e94 to a52ece789e45 (1 revision) (#186169)\n\nhttps://skia.googlesource.com/skia.git/+log/605786788e94..a52ece789e45\n\n2026-05-07\nrecipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com\nRoll recipe dependencies (trivial).\n\nIf this roll has caused a breakage, revert this CL and stop the roller\nusing the controls here:\nhttps://autoroll.skia.org/r/skia-flutter-autoroll\nPlease CC\nalexisdavidc@google.com,jsimmons@google.com,kjlubick@google.com on the\nrevert to ensure that a human\nis aware of the problem.\n\nTo file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry\nTo file a bug in Flutter:\nhttps://github.com/flutter/flutter/issues/new/choose\n\nTo report a problem with the AutoRoller itself, please file a bug:\nhttps://issues.skia.org/issues/new?component\u003d1389291\u0026template\u003d1850622\n\nDocumentation for the AutoRoller is here:\nhttps://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md"
    },
    {
      "commit": "3da669fae7033e0357514bca59fa3d0277ecbae3",
      "tree": "c01ea635f8756ca7b4865af2cd29f355c7d933ef",
      "parents": [
        "2cf2c3d2c2ea6f9481865219894c84bf70916dcd"
      ],
      "author": {
        "name": "b-luk",
        "email": "97480502+b-luk@users.noreply.github.com",
        "time": "Wed May 06 18:32:38 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 07 01:32:38 2026 +0000"
      },
      "message": "Fix inconsistent macOS text stroke weights by supporting light/dark glyph separation in glyph atlas (#186074)\n\nThis PR addresses #185790 where text rendered using the Impeller backend\non macOS exhibits inconsistent stroke weights, particularly with light\ntext on dark backgrounds.\n\n## Cause\n\nApple\u0027s CoreText applies different font smoothing and antialiasing\ndepending on whether text is light or dark. Visually, dark text on a\nlight background looks heavier than light text on a dark background.\nCoreText tries to account for this and make light/dark text at the same\nsize have a similar visual weight by automatically dilating light text\nand eroding dark text.\n\nPrior to this PR, our (non-color) glyph atlases are based on drawing a\nblack glyph using Skia, which uses CoreText as its underlying text\nrenderer on macOS. So our glyphs all are eroded by CoreText, based on\nthe incorrect assumption that they are always displayed as dark text. As\na result, our light glyphs end up wispy and inconsistently stroked.\nLight text already appears optically lighter weight, and then CoreText\nerodes them even further based on incorrectly rendering them with\ndark-text weighting.\n\n## Fix\n\n- On macOS, update `GlyphProperties` to calculate whether a glyph is\n\"light\" based on the luminance of its color. This is stored in a new\n`is_light` property. This ensures that the same character rendered with\na light color and a dark color will result in two separate entries in\nthe glyph atlas.\n- Render light glyphs as white during atlas generation to trigger the\ncorrect CoreText smoothing for light glyphs.\n- Dark glyphs retain the existing behavior and are rendered by having\nSkia render a black glyph on an A8 bitmap.\n- Light glyphs must be rendered as white on a full-color bitmap. This is\nbecause when Skia renders to an A8 bitmap (like for the dark glyph\ncase), it is hard coded to render the glyph as black on white (from\n[here](https://skia.googlesource.com/skia.git/+/100292563cb53a2489841b389ec3aff111efaf87/src/ports/SkScalerContext_mac_ct.cpp#242)).\nSo for light glyphs, render them into an RGBA bitmap and then convert it\nto an A8 bitmap to be copied into the glyph atlas.\n\nAdditionally, this PR refactors the usage of\n`std::optional\u003cGlyphProperties\u003e` to just be `GlyphProperties`. A nullopt\nvalue was treated exactly the same as a default `GlyphProperties`: color\nis black and stroke is null. So the optionality didn\u0027t add anything. It\nrequired a lot of unnecessary and confusing branching that made the code\nharder to follow, especially with this added `is_light` property.\n\nFixes #185790\n\nThis PR makes this change only for macOS. We can also consider whether\nto do this on iOS. iOS also uses Apple\u0027s CoreText, so the same erosion\nissues with dark text apply on iOS. However, all modern iOS devices are\nhi-dpi displays which use UI scaling. This mitigates most of the visual\ninconsistencies that we see on macOS when running apps on a\nnon-UI-upscaled display. We would have to weigh whether the negative\nperformance impact of this change is worth it for iOS. Whether or not to\nexpand this to iOS is out of scope for this PR.\n\n## Newly added `AiksTest.CanRenderTextFrameWithThinLightAndDarkColors`\ngolden test\n\nThis shows the golden screenshot before this change (top half) and after\nthis change (bottom half). Light text is now heavier weight and more\nconsistently stroked. Dark text is unchanged.\n\u003cimg height\u003d\"400\" alt\u003d\"image\"\nsrc\u003d\"https://github.com/user-attachments/assets/d013603b-11b5-4154-bfda-71431b2ed855\"\n/\u003e\n\n## Flutter \"New Gallery\" app screenshots\n\nAll of these screenshots compare:\n - Top row: Dark mode\n - Bottom row: Light mode\n - Left: Before this PR, rendering with Impeller\n - Middle: After this PR, rendering with Impeller\n- Right: Rendering with Skia. It is a not a goal to replicate Skia\u0027s\nrendering exactly. But Skia\u0027s rendering is provided here for comparison.\n\n### Home screen\n- In both dark and light mode, light text in the \"Reply\" card is now\nthicker.\n- In dark mode, light text like in the \"Shrine\" card and in the category\ntitles (Material, Cupertino, Styles \u0026 Other) are thicker. In light mode,\nthis text is dark and is unaffected.\n\u003cimg height\u003d\"200\" alt\u003d\"image\"\nsrc\u003d\"https://github.com/user-attachments/assets/08b59953-116e-4ae9-b96a-08241761b6e0\"\n/\u003e\n\n### \"About Flutter Gallery\" modal\n- In dark mode, the text is now thicker and more consistently stroked.\n- Light mode is unaffected.\n\u003cimg height\u003d\"200\" alt\u003d\"image\"\nsrc\u003d\"https://github.com/user-attachments/assets/a3d15bab-8374-4ee8-8923-40cb03985ee9\"\n/\u003e\n\n### Settings screen, normal text scaling\n- In dark mode, the text is now thicker and more consistently stroked.\n- Light mode is unaffected.\n\u003cimg height\u003d\"200\" alt\u003d\"image\"\nsrc\u003d\"https://github.com/user-attachments/assets/41fae470-ce6e-478c-8b2d-eaddd02c3bed\"\n/\u003e\n\n### Settings screen, small text scaling\n- In dark mode, wispy-ness of small text is even more apparent in the\nold version.\n- Light mode is unaffected.\n\u003cimg height\u003d\"200\" alt\u003d\"image\"\nsrc\u003d\"https://github.com/user-attachments/assets/e648388c-4b46-437b-8532-bfe606c8ab71\"\n/\u003e\n\n### Settings screen, large text scaling\n- In dark mode, large text is very readable even in the old version. In\nthe new version it is noticeably thicker, but whether it looks better is\nmore subjective than in the examples with smaller and thinner text.\n- Light mode is unaffected.\n\u003cimg height\u003d\"200\" alt\u003d\"image\"\nsrc\u003d\"https://github.com/user-attachments/assets/b209a725-75f5-4a80-8ae8-5c98432f1850\"\n/\u003e\n\n\n\n## Pre-launch Checklist\n\n- [x] I read the [Contributor Guide] and followed the process outlined\nthere for submitting PRs.\n- [x] I read the [AI contribution guidelines] and understand my\nresponsibilities, or I am not using AI tools.\n- [x] I read the [Tree Hygiene] wiki page, which explains my\nresponsibilities.\n- [x] I read and followed the [Flutter Style Guide], including [Features\nwe expect every widget to implement].\n- [x] I signed the [CLA].\n- [x] I listed at least one issue that this PR fixes in the description\nabove.\n- [x] I updated/added relevant documentation (doc comments with `///`).\n- [x] I added new tests to check the change I am making, or this PR is\n[test-exempt].\n- [x] I followed the [breaking change policy] and added [Data Driven\nFixes] where supported.\n- [ ] All existing and new tests are passing.\n\nIf you need help, consider asking for advice on the #hackers-new channel\non [Discord].\n\nIf this change needs to override an active code freeze, provide a\ncomment explaining why. The code freeze workflow can be overridden by\ncode reviewers. See pinned issues for any active code freezes with\nguidance.\n\n**Note**: The Flutter team is currently trialing the use of [Gemini Code\nAssist for\nGitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code).\nComments from the `gemini-code-assist` bot should not be taken as\nauthoritative feedback from the Flutter team. If you find its comments\nuseful you can update your code accordingly, but if you are unsure or\ndisagree with the feedback, please feel free to wait for a Flutter team\nmember\u0027s review for guidance on which automated comments should be\naddressed.\n\n\u003c!-- Links --\u003e\n[Contributor Guide]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview\n[AI contribution guidelines]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#ai-contribution-guidelines\n[Tree Hygiene]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md\n[test-exempt]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests\n[Flutter Style Guide]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md\n[Features we expect every widget to implement]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement\n[CLA]: https://cla.developers.google.com/\n[flutter/tests]: https://github.com/flutter/tests\n[breaking change policy]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes\n[Discord]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md\n[Data Driven Fixes]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md"
    },
    {
      "commit": "2cf2c3d2c2ea6f9481865219894c84bf70916dcd",
      "tree": "d709c802c363842a563e54327e1f1575fc7bfd3f",
      "parents": [
        "2e0ecdf3853a8f3283c5b8267b5bb0975bfb2c66"
      ],
      "author": {
        "name": "Chris Bracken",
        "email": "chris@bracken.jp",
        "time": "Thu May 07 10:21:55 2026 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 07 01:21:55 2026 +0000"
      },
      "message": "[iOS] Use +Category.h suffix for headers with named categories (#186163)\n\nThis updates _Test.h headers, which contain `(Test)` categories on\nexisting classes to use standard Obj-C filename patterns.\n\nIn Objective-C, the standard is for headers declaring named categories\nto end in +CategoryName.h. Class extensions are typically named\n_Internal.h or _Private.h.\n\nI did a quick pass over the remaining headers named \"_*.h\" under\nflutter/shell/platform/darwin/ and they all looked correct as-is.\n\n\n## Pre-launch Checklist\n\n- [X] I read the [Contributor Guide] and followed the process outlined\nthere for submitting PRs.\n- [X] I read the [AI contribution guidelines] and understand my\nresponsibilities, or I am not using AI tools.\n- [X] I read the [Tree Hygiene] wiki page, which explains my\nresponsibilities.\n- [X] I read and followed the [Flutter Style Guide], including [Features\nwe expect every widget to implement].\n- [X] I signed the [CLA].\n- [X] I listed at least one issue that this PR fixes in the description\nabove.\n- [X] I updated/added relevant documentation (doc comments with `///`).\n- [X] I added new tests to check the change I am making, or this PR is\n[test-exempt].\n- [X] I followed the [breaking change policy] and added [Data Driven\nFixes] where supported.\n- [X] All existing and new tests are passing.\n\nIf you need help, consider asking for advice on the #hackers-new channel\non [Discord].\n\nIf this change needs to override an active code freeze, provide a\ncomment explaining why. The code freeze workflow can be overridden by\ncode reviewers. See pinned issues for any active code freezes with\nguidance.\n\n**Note**: The Flutter team is currently trialing the use of [Gemini Code\nAssist for\nGitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code).\nComments from the `gemini-code-assist` bot should not be taken as\nauthoritative feedback from the Flutter team. If you find its comments\nuseful you can update your code accordingly, but if you are unsure or\ndisagree with the feedback, please feel free to wait for a Flutter team\nmember\u0027s review for guidance on which automated comments should be\naddressed.\n\n\u003c!-- Links --\u003e\n[Contributor Guide]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview\n[AI contribution guidelines]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#ai-contribution-guidelines\n[Tree Hygiene]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md\n[test-exempt]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests\n[Flutter Style Guide]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md\n[Features we expect every widget to implement]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement\n[CLA]: https://cla.developers.google.com/\n[flutter/tests]: https://github.com/flutter/tests\n[breaking change policy]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes\n[Discord]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md\n[Data Driven Fixes]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md"
    },
    {
      "commit": "2e0ecdf3853a8f3283c5b8267b5bb0975bfb2c66",
      "tree": "4d07c6cc10fb5ccb30e5cbb9af4f151f55384864",
      "parents": [
        "b7d578c640e0bb04f5dd979bcfbbc93f1254ae4b"
      ],
      "author": {
        "name": "engine-flutter-autoroll",
        "email": "engine-flutter-autoroll@skia.org",
        "time": "Wed May 06 21:06:31 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 07 01:06:31 2026 +0000"
      },
      "message": "Roll Skia from f1b6a8479d14 to 605786788e94 (2 revisions) (#186164)\n\nhttps://skia.googlesource.com/skia.git/+log/f1b6a8479d14..605786788e94\n\n2026-05-06\nrecipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com\nRoll recipe dependencies (trivial).\n2026-05-06 skia-autoroll@skia-public.iam.gserviceaccount.com Roll\nvulkan-deps from 0cac26b01455 to 766d49b68e2f (4 revisions)\n\nIf this roll has caused a breakage, revert this CL and stop the roller\nusing the controls here:\nhttps://autoroll.skia.org/r/skia-flutter-autoroll\nPlease CC\nalexisdavidc@google.com,jsimmons@google.com,kjlubick@google.com on the\nrevert to ensure that a human\nis aware of the problem.\n\nTo file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry\nTo file a bug in Flutter:\nhttps://github.com/flutter/flutter/issues/new/choose\n\nTo report a problem with the AutoRoller itself, please file a bug:\nhttps://issues.skia.org/issues/new?component\u003d1389291\u0026template\u003d1850622\n\nDocumentation for the AutoRoller is here:\nhttps://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md"
    },
    {
      "commit": "b7d578c640e0bb04f5dd979bcfbbc93f1254ae4b",
      "tree": "ec7377373a6cdf50ee859968ccc31435a9dbd433",
      "parents": [
        "5d62b39454dd3955fdf78924602b07980c8772b4"
      ],
      "author": {
        "name": "Robert Ancell",
        "email": "robert.ancell@canonical.com",
        "time": "Thu May 07 12:42:41 2026 +1200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 07 00:42:41 2026 +0000"
      },
      "message": "Make key mapping code match existing embedder style (#185261)\n\nMove struct used in generated code to header that matches. Add fl_\nprefix on generated classes."
    },
    {
      "commit": "5d62b39454dd3955fdf78924602b07980c8772b4",
      "tree": "164c42fe186e8f9aca23b150433533e8cf419700",
      "parents": [
        "f5847b0d9cd82cc8341e0156f7b2351cd3424614"
      ],
      "author": {
        "name": "Robert Ancell",
        "email": "robert.ancell@canonical.com",
        "time": "Thu May 07 10:45:18 2026 +1200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 06 22:45:18 2026 +0000"
      },
      "message": "Don\u0027t leak gesture objects (#185517)\n\nClean up when the view is destroyed."
    },
    {
      "commit": "f5847b0d9cd82cc8341e0156f7b2351cd3424614",
      "tree": "6d02ef5816518428af828f462f67b501cfb53b78",
      "parents": [
        "240c85cf08a05c234e66f4ef28e7d8a3f2361717"
      ],
      "author": {
        "name": "Robert Ancell",
        "email": "robert.ancell@canonical.com",
        "time": "Thu May 07 10:45:11 2026 +1200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 06 22:45:11 2026 +0000"
      },
      "message": "Use g_realloc instead of realloc (#185520)\n\nIf the allocation failed the existing code would return NULL, leaking\nthe existing buffer and then likely crashing. Using g_realloc terminates\nthe program automatically if the allocation fails."
    },
    {
      "commit": "240c85cf08a05c234e66f4ef28e7d8a3f2361717",
      "tree": "1221c29ffa9791aa2eec171650b1cd2f0e33fa1f",
      "parents": [
        "3caef50368daaa47c34381fee34c8933b17bc183"
      ],
      "author": {
        "name": "Jim Graham",
        "email": "flar@google.com",
        "time": "Wed May 06 12:26:44 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 06 19:26:44 2026 +0000"
      },
      "message": "Update DisplayList rendering unittests for new SufaceProvider API and to be able to test Impeller (#185820)\n\nhttps://github.com/flutter/flutter/pull/185270 created a refactored\nSurfaceProvider API that enables better control over which backend tests\nand benchmarks can use. While the primitive rendering benchmarks were\nupdated for the new code, the rendering validation tests\n(`display_list_rendertests`) were still using a hybrid of the old API\nand some back doors to test on various platforms. This PR updates the\nrendering tests to use the new API, fills out its implementation on all\nof the supported platforms and makes the rendering validation tests more\nappropriate to run on all platforms.\n\nIt also removes a few outdated tests that we no longer care about, such\nas:\n- How do the bounds of a DisplayList compare to the bounds of an\nequivalent SkPicture?\n- Does the Skia backend draw the same thing if we execute commands\ndirectly on its SkCanvas compared to recording those same commands in\nSkPicture or DisplayList?\n- Do the SkPicture and DisplayList contain approximately the same number\nof operations?\n\nWe still test the following:\n- Does the rendering operation produce actual output for every\ncombination of attributes (no remaining cases where the rendering back\nend simply punts on an operation)\n- Does the rendering draw outside of the bounds declared by the\nDisplayList?\n- When we draw something with and without an attribute or context\nmutation (clip, transform, or save layer) does it actually produce the\nsame or different pixels compared to our expectation?\n- If a combination of rendering operation and attributes recorded in a\nDisplayList claims that it supports \"group opacity\" (i.e. the ability to\napply any opacity from outside the DisplayList to each rendering\noperation so that the caller does not have to wrap the display list in a\nSaveLayer to achieve the group opacity) then does it do that correctly\nwhen we render the constructed DisplayList with a requested group\nopacity?\n\n## Pre-launch Checklist\n\n- [x] I read the [Contributor Guide] and followed the process outlined\nthere for submitting PRs.\n- [x] I read the [AI contribution guidelines] and understand my\nresponsibilities, or I am not using AI tools.\n- [x] I read the [Tree Hygiene] wiki page, which explains my\nresponsibilities.\n- [x] I read and followed the [Flutter Style Guide], including [Features\nwe expect every widget to implement].\n- [x] I signed the [CLA].\n- [ ] I listed at least one issue that this PR fixes in the description\nabove.\n- [x] I updated/added relevant documentation (doc comments with `///`).\n- [ ] I added new tests to check the change I am making, or this PR is\n[test-exempt].\n- [x] I followed the [breaking change policy] and added [Data Driven\nFixes] where supported.\n- [x] All existing and new tests are passing.\n\nIf you need help, consider asking for advice on the #hackers-new channel\non [Discord].\n\nIf this change needs to override an active code freeze, provide a\ncomment explaining why. The code freeze workflow can be overridden by\ncode reviewers. See pinned issues for any active code freezes with\nguidance.\n\n**Note**: The Flutter team is currently trialing the use of [Gemini Code\nAssist for\nGitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code).\nComments from the `gemini-code-assist` bot should not be taken as\nauthoritative feedback from the Flutter team. If you find its comments\nuseful you can update your code accordingly, but if you are unsure or\ndisagree with the feedback, please feel free to wait for a Flutter team\nmember\u0027s review for guidance on which automated comments should be\naddressed."
    },
    {
      "commit": "3caef50368daaa47c34381fee34c8933b17bc183",
      "tree": "76345432d49164af1c10243e242d10b03452fdc8",
      "parents": [
        "30dbe066d40b1b8a6661d79dc2247bbb1aaff9e2"
      ],
      "author": {
        "name": "Mouad Debbar",
        "email": "mdebbar@google.com",
        "time": "Wed May 06 14:34:16 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 06 18:34:16 2026 +0000"
      },
      "message": "[web] Delete the old `BROWSER_IMAGE_DECODING_ENABLED` flag (#185851)\n\nCloses https://github.com/flutter/flutter/issues/95277"
    },
    {
      "commit": "30dbe066d40b1b8a6661d79dc2247bbb1aaff9e2",
      "tree": "2b750e07f9754b909271e907b9882399708b0a07",
      "parents": [
        "21b827ac0b6247f0b0632a98290038e3a217b3a8"
      ],
      "author": {
        "name": "Sana Ullah",
        "email": "sanaullah.383@hotmail.com",
        "time": "Wed May 06 23:24:08 2026 +0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 06 18:24:08 2026 +0000"
      },
      "message": "Remove semantics_tester import from cupertino/slider_test.dart (#184805)\n\nPart of #182636\n\n## Summary\n\nRemove the `semantics_tester.dart` cross-import from\n`cupertino/slider_test.dart`.\n\n## What changed\n\n* Replaced the deprecated `SemanticsTester`/`TestSemantics` assertion in\nthe slider semantics test with `tester.getSemantics(...)` and\n`matchesSemantics(...)`\n* Removed the `../widgets/semantics_tester.dart` import\n\n## Testing\n\n* `../../bin/flutter analyze test/cupertino/slider_test.dart`\n* `../../bin/flutter test test/cupertino/slider_test.dart`\n\n---------\n\nCo-authored-by: Victor Sanni \u003cvictorsanniay@gmail.com\u003e"
    }
  ],
  "next": "21b827ac0b6247f0b0632a98290038e3a217b3a8"
}
