)]}'
{
  "log": [
    {
      "commit": "3f34a6f7a79b841714ee0038b70330dd6b9745cc",
      "tree": "6ffd0fd95b05726f83bb5e096dd4f714be888842",
      "parents": [
        "4cb0506dddae4f9861145c48f4b27b17907fe251"
      ],
      "author": {
        "name": "engine-flutter-autoroll",
        "email": "engine-flutter-autoroll@skia.org",
        "time": "Sun Nov 01 16:10:18 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Nov 01 16:10:18 2026"
      },
      "message": "Roll Flutter from ee8b48245d7a to fcfb4f203eae (3 revisions) (#13520)\n\nhttps://github.com/flutter/flutter/compare/ee8b48245d7a...fcfb4f203eae\n\n2026-11-01 engine-flutter-autoroll@skia.org Roll Skia from 3df52f9ec546 to e43478a2f9f8 (1 revision) (flutter/flutter#195761)\n2026-10-31 engine-flutter-autoroll@skia.org Roll Skia from 607de4b035dc to 3df52f9ec546 (1 revision) (flutter/flutter#195748)\n2026-10-31 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from x2SqGbVUkOm4d6vk_... to kW0A0xxNkqf38ljm4... (flutter/flutter#195740)\n\nIf this roll has caused a breakage, revert this CL and set the roller\nto dry run mode using the controls here:\nhttps://autoroll.skia.org/r/flutter-packages\nPlease CC stuartmorgan@google.com,tarrinneal@google.com on the revert to ensure that a human\nis aware of the problem.\n\nTo file a bug in Packages: https://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": "4cb0506dddae4f9861145c48f4b27b17907fe251",
      "tree": "fa2c06af2f789cf1cd25e9f45c702ad585535f2c",
      "parents": [
        "88bd37412a1ffd21452e3f2a994a0ee1046efc4d"
      ],
      "author": {
        "name": "engine-flutter-autoroll",
        "email": "engine-flutter-autoroll@skia.org",
        "time": "Sat Oct 31 16:26:25 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Oct 31 16:26:25 2026"
      },
      "message": "Roll Flutter from 5e805bfd5816 to ee8b48245d7a (17 revisions) (#13512)\n\nhttps://github.com/flutter/flutter/compare/5e805bfd5816...ee8b48245d7a\n\n2026-10-31 engine-flutter-autoroll@skia.org Roll Skia from 9bab765df357 to 607de4b035dc (1 revision) (flutter/flutter#195728)\n2026-10-31 engine-flutter-autoroll@skia.org Roll Skia from 284054bec98a to 9bab765df357 (2 revisions) (flutter/flutter#195726)\n2026-10-31 engine-flutter-autoroll@skia.org Roll Skia from 3a3f56f7ddd4 to 284054bec98a (1 revision) (flutter/flutter#195724)\n2026-10-31 engine-flutter-autoroll@skia.org Roll Skia from 466994d27b1e to 3a3f56f7ddd4 (1 revision) (flutter/flutter#195719)\n2026-10-30 kevmoo@users.noreply.github.com Fix XcodeProjectInterpreter dependency cycle in flutter_tools (flutter/flutter#195694)\n2026-10-30 49402500+fahaddoc@users.noreply.github.com Document that Positioned also works inside an Overlay (flutter/flutter#190607)\n2026-10-30 engine-flutter-autoroll@skia.org Roll Skia from ce0b85b46db6 to 466994d27b1e (3 revisions) (flutter/flutter#195711)\n2026-10-30 30870216+gaaclarke@users.noreply.github.com Adds Vulkan sync validation test run (flutter/flutter#195596)\n2026-10-30 1048052188@qq.com [Android] Let the raster thread use every core of a chip without little cores (flutter/flutter#195071)\n2026-10-30 engine-flutter-autoroll@skia.org Roll Skia from 121d04c01e2d to ce0b85b46db6 (6 revisions) (flutter/flutter#195699)\n2026-10-30 bardiakzm@gmail.com [web] Anchor platform view slots to top-left to fix RTL document layout (flutter/flutter#194601)\n2026-10-30 katelovett@google.com Update golden file testing docs (flutter/flutter#195449)\n2026-10-30 bkonyi@google.com [tool] Migrate Cache.flutterRoot static state to instance configuration (flutter/flutter#190795)\n2026-10-30 victorsanniay@gmail.com Apply view metrics overrides below the framework (flutter/flutter#194311)\n2026-10-30 engine-flutter-autoroll@skia.org Roll Skia from c0c46ee9f938 to 121d04c01e2d (9 revisions) (flutter/flutter#195687)\n2026-10-30 evanwall@buffalo.edu Use uniforms in the Porter Duff blend shader instead of specialization constants (flutter/flutter#195458)\n2026-10-30 bkonyi@google.com [flutter_tools] Inject dependencies into iOS, macOS, and Windows application packages (flutter/flutter#194047)\n\nIf this roll has caused a breakage, revert this CL and set the roller\nto dry run mode using the controls here:\nhttps://autoroll.skia.org/r/flutter-packages\nPlease CC stuartmorgan@google.com,tarrinneal@google.com on the revert to ensure that a human\nis aware of the problem.\n\nTo file a bug in Packages: https://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": "88bd37412a1ffd21452e3f2a994a0ee1046efc4d",
      "tree": "2b8c3ef218f9bdbf0c5284ef397abffca2d2fabd",
      "parents": [
        "39533dabfd5d0a7b3e74eea028b005949a229f65"
      ],
      "author": {
        "name": "zhongliugo",
        "email": "zhongliu88889@gmail.com",
        "time": "Fri Oct 30 21:54:20 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 30 21:54:20 2026"
      },
      "message": "[VPAT] Describe the a11y_assessments dialog for screen readers (#13462)\n\n## Problem\nOn the a11y_assessments dialog demo, screen readers do not read the\ndialog text. When the dialog opens, focus moves to the autofocused OK\nbutton and VoiceOver only says \"OK, button\". The text merges into the\ndialog\u0027s semantics node as its label, and on web a dialog\u0027s label is not\nexposed unless it names the route, so the text never reaches the DOM.\n\n## Fix\nThe text gets its own semantics node with `namesRoute: true`. On web the\ndialog\u0027s `aria-describedby` then points at it, so screen readers read it\nas the dialog\u0027s description when it opens. OK keeps its autofocus. A new\ntest checks that the text names the dialog.\n\n## Demo\nRun the test app on web, open #/dialog, turn on VoiceOver, and activate\nShow Dialog. Before, only \"OK, button\" is read. After, VoiceOver also\nreads \"This is a typical dialog.\""
    },
    {
      "commit": "39533dabfd5d0a7b3e74eea028b005949a229f65",
      "tree": "3088c1b4fdf81053a55d4b84cdb1a5b26424394c",
      "parents": [
        "c81561ecec8e142fbb7c97626e519e3828ee1dd2"
      ],
      "author": {
        "name": "Νικόλας Πατέρας",
        "email": "npateras@protonmail.com",
        "time": "Fri Oct 30 21:34:08 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 30 21:34:08 2026"
      },
      "message": "[go_router_builder] Allow `build` 5 (#13455)\n\nWidens the `build` constraint to `\"\u003e\u003d3.0.0 \u003c6.0.0\"` so apps can use `build_runner` 2.17.1, which requires `build` 5.\n\n`build` 5.0.0 republishes the retracted 4.1.0 as a major version. Its only breaking change is the new `BuildStep.librarySourceSink` member, which breaks packages that implement `BuildStep`. `go_router_builder` only receives a `BuildStep` in `GoRouterGenerator.generate` and does not implement it, so no code changes are needed.\n\nThis also removes the `TODO(piinks): Pin version once new stable rolls.` above the constraint. It was added in #10078 because the Flutter stable of the time pinned a `test` version that could not resolve `build` 4, so the range had to include `build` 3; the plan was to switch to `^4.0.0` once a newer stable shipped. The range is now meant to span `build` 4 and 5, and pinning to `^5.0.0` would force `build_runner` 2.17.1 and `analyzer` 14.3 on every user, so the TODO no longer applies. Happy to restore it if you\u0027d rather keep it.\n\nTested locally on Flutter 3.47.8 (Dart 3.13.7), which resolves `build` 5.0.0, `build_test` 3.5.23, `build_runner` 2.17.1, `source_gen` 4.3.1 and `analyzer` 14.6.0:\n- `custom-test --packages\u003dgo_router_builder` (the `tool/run_tests.dart` builder golden tests): all 56 pass.\n- `dart-test --packages\u003dgo_router_builder --platform\u003dvm`: all pass (10 in the package, 19 in the example). On stable the example still resolves `build` 4.0.11 and `build_runner` 2.16.1, because the `test_api` pinned by `flutter_test` caps `analyzer` below 14.\n- `analyze --packages\u003dgo_router_builder`: no issues. `analyze --downgrade` resolves `build` 4.0.4 and also reports no issues.\n\nTest exemption: this is a manual dependency roll that only widens a constraint. The existing builder tests cover generation with `build` 5 resolved.\n\nFixes flutter/flutter#194542\n\n## Pre-Review Checklist\n\n**Note**: The Flutter team is currently trialing the use of [Gemini Code Assist for GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code). Comments from the `gemini-code-assist` bot should not be taken as authoritative feedback from the Flutter team. If you find its comments useful you can update your code accordingly, but if you are unsure or disagree with the feedback, please feel free to wait for a Flutter team member\u0027s review for guidance on which automated comments should be addressed.\n\n[^1]: Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling."
    },
    {
      "commit": "c81561ecec8e142fbb7c97626e519e3828ee1dd2",
      "tree": "fb10372594e1ca472d077f4521f955557a5d5124",
      "parents": [
        "07cf58c304f87e50a49d794bc9daf7cb0f79bcbe"
      ],
      "author": {
        "name": "Maxime Rougieux",
        "email": "73878075+MaximeRougieux@users.noreply.github.com",
        "time": "Fri Oct 30 21:00:52 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 30 21:00:52 2026"
      },
      "message": "[go_router] Support nested parentheses, groups, and lookaround assertions in path parameters (#12571)\n\n* Fixes https://github.com/flutter/flutter/issues/117307\r\n* Fixes an issue that prevented developers to use all kinds of groups in regexp patterns\r\n\r\nExample:\r\n`/tags/:slug((?!politics|economy)[^/]+)` should match `/tags/culture` and not match `/tags/politics`, but the current behavior is that the internal parenthesis are unhandled and the pattern is then used _literally_ :\r\n\r\n* `/tags/flutter` -\u003e No match\r\n* `/tags/politics` -\u003e No match\r\n* `/tags/flutter((?!politics|economy))[^/]+)` -\u003e Match, slug\u003d\"flutter\"\r\n\r\nDisclosure: I did the investigation and fix using AI, which i carefully reviewed and tried to improve as much as I could according to the AI contribution guidelines. I think it\u0027s still better to mention it\r\n\r\nA few things to note:\r\n* Not a big fan of the \"string-scanner\" to find the closing parenthesis, but this is unachievable with a regex and needed for the fix to work as expected, and it\u0027s tested\r\n* You might be wondering why the `_escapeGroup` function is completely gone (and why it was there in the first place if we can just remove it like that). The AI retraces this to when the repository transitioned from using the `path_to_regexp` package to having the functions in the codebase. This package seems to be using positional group matching, whereas go_router relies on named group matching, so escaping characters like :,- or ! is unnecessary as they can\u0027t disrupt the matching from working as expected.\r\n\r\n## Pre-Review Checklist"
    },
    {
      "commit": "07cf58c304f87e50a49d794bc9daf7cb0f79bcbe",
      "tree": "30c65c9744e1fc907c38515c8403293073fae6ec",
      "parents": [
        "22fa2fc5fbc4d5238dea2178d026a978c3fb2455"
      ],
      "author": {
        "name": "LouiseHsu",
        "email": "louisehsu@google.com",
        "time": "Fri Oct 30 20:27:07 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 30 20:27:07 2026"
      },
      "message": "[in_app_purchase_storekit] Add SK2Transaction.currentEntitlements() (#13373)\n\nExposes StoreKit 2\u0027s [`Transaction.currentEntitlements`](https://developer.apple.com/documentation/storekit/transaction/3851204-currententitlements) via `SK2Transaction.currentEntitlements()`.\r\nPreviously, `SK2Transaction.transactions()` only wrapped `Transaction.all`, which returns the user\u0027s full transaction history rather than only their currently active entitlements (non-consumable purchases and active auto-renewable/non-renewing subscriptions). Adding `SK2Transaction.currentEntitlements()` allows callers to query active subscriptions and entitlements directly without invoking `restorePurchases()` or manually filtering historical transactions.\r\n\r\nFixes https://github.com/flutter/flutter/issues/61339 and https://github.com/flutter/flutter/issues/118960\r\n\r\n## Pre-Review Checklist"
    },
    {
      "commit": "22fa2fc5fbc4d5238dea2178d026a978c3fb2455",
      "tree": "a5e118bfa92b714ec04fba41ac665f43ad6af434",
      "parents": [
        "f3f97373ccad87e201671bdc1bc4457840b21177"
      ],
      "author": {
        "name": "Reid-Agent",
        "email": "269567208+reidbaker-agent@users.noreply.github.com",
        "time": "Fri Oct 30 20:15:23 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 30 20:15:23 2026"
      },
      "message": "[all] Remove broken .claude/skills symlink (#13492)\n\nRemoves the `.claude/skills` symlink at the repo root. It has never worked.\n\nThe link is `.claude/skills -\u003e .agents/skills`. Symlink targets resolve relative to the link\u0027s own folder, so it points at `.claude/.agents/skills`, which does not exist. The working version in flutter/flutter is `.claude/skills -\u003e ../.agents/skills`.\n\nSince the link points at nothing, Claude Code gets no skills from it today. Removing it changes no behavior. A working link can come back later if the repo decides it wants Claude Code support.\n\nNo linked issue. This is a one-line repo cleanup with no package changes.\n\n## Pre-Review Checklist\n\n[^1]: Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling."
    },
    {
      "commit": "f3f97373ccad87e201671bdc1bc4457840b21177",
      "tree": "bcb920e2700a06dcccd38cef0c81ef28c0f4ee40",
      "parents": [
        "3742a4eecd6b2603755bb44287889c340d98abaf"
      ],
      "author": {
        "name": "engine-flutter-autoroll",
        "email": "engine-flutter-autoroll@skia.org",
        "time": "Fri Oct 30 18:20:12 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 30 18:20:12 2026"
      },
      "message": "Roll Flutter from c09109874faa to 5e805bfd5816 (15 revisions) (#13504)\n\nhttps://github.com/flutter/flutter/compare/c09109874faa...5e805bfd5816\n\n2026-10-30 bpleekm@gmail.com Fix/shared thread merger expired lease (flutter/flutter#194200)\n2026-10-30 269567208+reidbaker-agent@users.noreply.github.com [FGP] Report the real error when applying kotlin-android fails (flutter/flutter#195080)\n2026-10-30 zanderso@users.noreply.github.com [Impeller] Minify GLSL shaders (flutter/flutter#195240)\n2026-10-30 engine-flutter-autoroll@skia.org Roll Packages from 0b72e92bf5dd to 3742a4eecd6b (12 revisions) (flutter/flutter#195686)\n2026-10-30 engine-flutter-autoroll@skia.org Roll Dart SDK from 52c908c00267 to fe609902984b (2 revisions) (flutter/flutter#195679)\n2026-10-30 engine-flutter-autoroll@skia.org Roll Skia from 0789f2ab93b8 to c0c46ee9f938 (1 revision) (flutter/flutter#195671)\n2026-10-30 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from SORPfa9tgFn83M1CR... to x2SqGbVUkOm4d6vk_... (flutter/flutter#195670)\n2026-10-30 engine-flutter-autoroll@skia.org Roll Skia from 4470b8abaad6 to 0789f2ab93b8 (2 revisions) (flutter/flutter#195665)\n2026-10-30 engine-flutter-autoroll@skia.org Roll Dart SDK from 89f7a35480d6 to 52c908c00267 (1 revision) (flutter/flutter#195659)\n2026-10-30 engine-flutter-autoroll@skia.org Roll Skia from 9f4e3117465e to 4470b8abaad6 (4 revisions) (flutter/flutter#195658)\n2026-10-30 engine-flutter-autoroll@skia.org Roll Skia from ec13cd547e98 to 9f4e3117465e (1 revision) (flutter/flutter#195650)\n2026-10-30 zhongliu88889@gmail.com [web] Keep semantics editing state while the text input connection is open (flutter/flutter#195141)\n2026-10-30 Rusino@users.noreply.github.com [web_paragraph] Fix multi-span BiDi span order and region direction (flutter/flutter#194980)\n2026-10-30 1961493+harryterkelsen@users.noreply.github.com [web] Unskip web tests that pass on CanvasKit and Skwasm: accessibility_inspector_test, color_filter_test (flutter/flutter#195541)\n2026-10-30 engine-flutter-autoroll@skia.org Roll Skia from 4ecd22a4a1d0 to ec13cd547e98 (10 revisions) (flutter/flutter#195647)\n\nIf this roll has caused a breakage, revert this CL and set the roller\nto dry run mode using the controls here:\nhttps://autoroll.skia.org/r/flutter-packages\nPlease CC stuartmorgan@google.com,tarrinneal@google.com on the revert to ensure that a human\nis aware of the problem.\n\nTo file a bug in Packages: https://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": "3742a4eecd6b2603755bb44287889c340d98abaf",
      "tree": "7234f59ad2b9df3d66bd945c1286bfba78080eac",
      "parents": [
        "e830a53712a7344872c827360c0e9ae87c9f243d"
      ],
      "author": {
        "name": "stuartmorgan",
        "email": "stuart.morgan@gmail.com",
        "time": "Fri Oct 30 14:38:49 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 30 14:38:49 2026"
      },
      "message": "[pigeon] Allow event channel unregistration (#13438)\n\nAdds a new class for each event channel API that wraps the underlying EventChannel and allows setting the stream handler, matching the underlying Flutter API. This allows clients that need to set a new handler later (notably, removing a handler to avoid an engine-lifetime reference to a handler for a transient channel) to do so, using the same API that non-Pigeon event channel code would use.\r\n\r\nThe existing static `register` method is kept to avoid unnecessary breaking changes, but clients no longer need to use it if they want to create the channel directly.\r\n\r\nFixes https://github.com/flutter/flutter/issues/195049\r\n\r\n## Pre-Review Checklist\r\n\r\n[^1]: Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling."
    },
    {
      "commit": "e830a53712a7344872c827360c0e9ae87c9f243d",
      "tree": "85c61d0fd9149aacd15fcf05a001fec57b7e1224",
      "parents": [
        "b9975c9d1cd7acebad60ae6c53309d5eae13b13c"
      ],
      "author": {
        "name": "Mekala Mohankrishna",
        "email": "mmohankrishna@google.com",
        "time": "Fri Oct 30 09:59:27 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 30 09:59:27 2026"
      },
      "message": "[material_ui] Fix Escape key not closing MenuAnchor opened by tap or click (#13430)\n\nFixes an issue where pressing the `Escape` key does not close a `MenuAnchor` menu that was opened by a tap or click when `childFocusNode` is not provided.\n\n### Root Cause\n1. When a `MenuAnchor` is opened via a tap or click (e.g. from a `TextButton` or `IconButton`) without a `childFocusNode`, the button does not request focus on tap and `RawMenuAnchorState.open` only requests focus on `widget.childFocusNode`. As a result, `FocusManager.instance.primaryFocus` remains outside both `RawMenuAnchor` and `_Submenu`, so key events never route through their `Shortcuts` or `Actions` widgets.\n2. In `_Submenu.build`, `FocusScope(node: anchor._menuScopeNode)` was placed above `Actions` and `Shortcuts`, so even when `_menuScopeNode` itself had primary focus, key events walked up past `FocusScope` without passing through `_Submenu`\u0027s `Shortcuts` and `Actions`.\n\n### Fix\n1. Wrap `FocusScope(node: anchor._menuScopeNode)` inside `Actions` and `Shortcuts` in `_Submenu.build` so key events dispatched to `_menuScopeNode` walk up through `_kMenuTraversalShortcuts` and `DismissMenuAction`.\n2. In `_MenuAnchorState._handleMenuOpenRequest`, when a root menu opens without a `childFocusNode` and focus is not already inside the `MenuAnchor` subtree, move focus to `_menuScopeNode` via `FocusScope.of(context).setFirstFocus(_menuScopeNode)` (and detach `_menuScopeNode` cleanly if closed/disposed before `FocusScope` mounts).\n\nFixes https://github.com/flutter/flutter/issues/195059\n\n## Pre-Review Checklist\n\n**Note**: The Flutter team is currently trialing the use of [Gemini Code Assist for GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code). Comments from the `gemini-code-assist` bot should not be taken as authoritative feedback from the Flutter team. If you find its comments useful you can update your code accordingly, but if you are unsure or disagree with the feedback, please feel free to wait for a Flutter team member\u0027s review for guidance on which automated comments should be addressed.\n\n[^1]: Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling."
    },
    {
      "commit": "b9975c9d1cd7acebad60ae6c53309d5eae13b13c",
      "tree": "d58cc7c1270a0c9f6fcc8d72f7a4f3b30a45517f",
      "parents": [
        "3258d45ac0f73c86fbe53a2e2c7b0ea4946d793c"
      ],
      "author": {
        "name": "Tarrin Neal",
        "email": "tarrinneal@gmail.com",
        "time": "Fri Oct 30 07:27:57 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 30 07:27:57 2026"
      },
      "message": "manual roll and manual build and copy (#13495)\n\nremoves deprecated method and bumps ci flutter master version.\r\n\r\nUnblocks roller"
    },
    {
      "commit": "3258d45ac0f73c86fbe53a2e2c7b0ea4946d793c",
      "tree": "2baedeb8164acfe84474abaac7d8774b42c60c3e",
      "parents": [
        "09e67ffed232196104dee63c6611efc4a6717adc"
      ],
      "author": {
        "name": "Tarrin Neal",
        "email": "tarrinneal@gmail.com",
        "time": "Thu Oct 29 22:17:48 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 29 22:17:48 2026"
      },
      "message": "[pigeon] Separate native interop Dart bindings into a conditionally imported companion file (#13393)\n\nSeparates generated Dart native interop code (`dart:ffi`, `dart:io`, `package:jni`, `package:ffi`, `package:objective_c`, and `.ffi.dart`/`.jni.dart` bindings) into a companion `*.native_interop.g.dart` file that is conditionally imported (`if (dart.library.ffi)`) by the main `*.g.dart` file.\r\n\r\nThis allows the main generated `*.g.dart` file (data classes, enums, codecs, and method-channel APIs) to be imported on Web without failing `dart2js` / `dart2wasm` compilation due to transitive `dart:ffi` / `dart:io` imports (preventing the issue worked around in https://github.com/flutter/packages/pull/13380).\r\n\r\n## Pre-Review Checklist\r\n\r\n**Note**: The Flutter team is currently trialing the use of [Gemini Code Assist for GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code). Comments from the `gemini-code-assist` bot should not be taken as authoritative feedback from the Flutter team. If you find its comments useful you can update your code accordingly, but if you are unsure or disagree with the feedback, please feel free to wait for a Flutter team member\u0027s review for guidance on which automated comments should be addressed.\r\n\r\n[^1]: Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling."
    },
    {
      "commit": "09e67ffed232196104dee63c6611efc4a6717adc",
      "tree": "ede1f0f214e5545515d4c43f5c1ad64c1c705543",
      "parents": [
        "fb19211dbd8400778ba887e261c6cc0bb90fc534"
      ],
      "author": {
        "name": "victogomez-cs",
        "email": "victor.orozco@cloudsufi.com",
        "time": "Thu Oct 29 21:45:07 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 29 21:45:07 2026"
      },
      "message": "[image_picker_ios] PR 4/5 Migrate the view provider, PHPicker save operation, and image utilities to Swift (#13394)\n\nMigrates the Objective-C helpers that `ImagePickerPlugin` calls into the Swift target:\r\n\r\n* `FIPViewProvider` becomes `ViewProvider` / `DefaultViewProvider`.\r\n* `FLTPHPickerSaveImageToPathOperation` becomes `PHPickerSaveImageToPathOperation`.\r\n* `FLTImagePickerImageUtil`, `FLTImagePickerMetaDataUtil`, and `FLTImagePickerPhotoAssetUtil` become `ImagePickerImageUtil`, `ImagePickerMetaDataUtil`, and `ImagePickerPhotoAssetUtil`.\r\n* The `PHImageManager` seam becomes `ImageDataRequesting`.\r\n* `PHPickerResult` conforms to `PickerItem`, replacing the `BridgedPickerItem` wrapper.\r\n\r\nDeletes the custom module map and `image_picker_ios.h` umbrella header. The `image_picker_ios_objc` target remains for the Pigeon messages until the next PR. CocoaPods no longer sets `s.module_map`.\r\n\r\nBumps image_picker_ios to **0.8.13+14**.\r\n\r\nPR 4/5 of the Obj-C → Swift migration, stacked on https://github.com/flutter/packages/pull/13235. Part of https://github.com/flutter/flutter/issues/119107\r\n\r\n## Pre-Review Checklist\r\n\r\n**Note**: The Flutter team is currently trialing the use of [Gemini Code Assist for GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code). Comments from the `gemini-code-assist` bot should not be taken as authoritative feedback from the Flutter team. If you find its comments useful you can update your code accordingly, but if you are unsure or disagree with the feedback, please feel free to wait for a Flutter team member\u0027s review for guidance on which automated comments should be addressed.\r\n\r\n[^1]: Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling."
    },
    {
      "commit": "fb19211dbd8400778ba887e261c6cc0bb90fc534",
      "tree": "9771c23c51475dbf0b61d792bb69b41ed6574a73",
      "parents": [
        "8615faf05e6e8abde2014a0d0dc97e078050616c"
      ],
      "author": {
        "name": "Flutter GitHub Bot",
        "email": "fluttergithubbot@gmail.com",
        "time": "Thu Oct 29 21:00:13 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 29 21:00:13 2026"
      },
      "message": "Sync release-material_ui-1.9.0 to main (#13479)\n\nThis automated PR syncs the changes from the release branch release-material_ui-1.9.0 back to the main branch."
    },
    {
      "commit": "8615faf05e6e8abde2014a0d0dc97e078050616c",
      "tree": "e8689c9612840ed1973469df98e0456d712d517c",
      "parents": [
        "ccbe75fe6bc3b8a22e733b5a11b06bc1a29d4b53"
      ],
      "author": {
        "name": "Harry Terkelsen",
        "email": "1961493+harryterkelsen@users.noreply.github.com",
        "time": "Thu Oct 29 20:27:59 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 29 20:27:59 2026"
      },
      "message": "[material_ui] Unskip web tests that pass on CanvasKit and Skwasm: time_picker_test (#13471)\n\nRemoves the `@TestOn(\u0027!chrome\u0027)` annotation from `packages/material_ui/test/time_picker_test.dart` so that its tests run on the web. All 190 tests in the file now pass on Chrome under both CI web renderers (CanvasKit with dart2js and Skwasm with dart2wasm). The time picker state restoration group still does not work on the web, so it is now skipped individually with `skip: kIsWeb` instead of skipping the whole file.\n\nPart of https://github.com/flutter/flutter/issues/33615 (the state restoration group remains skipped on web pending that issue).\n\nThis is a test-only change, so it is exempt from version and CHANGELOG updates.\n\n## Pre-Review Checklist\n\n**Note**: The Flutter team is currently trialing the use of [Gemini Code Assist for GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code). Comments from the `gemini-code-assist` bot should not be taken as authoritative feedback from the Flutter team. If you find its comments useful you can update your code accordingly, but if you are unsure or disagree with the feedback, please feel free to wait for a Flutter team member\u0027s review for guidance on which automated comments should be addressed.\n\n[^1]: Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling."
    },
    {
      "commit": "ccbe75fe6bc3b8a22e733b5a11b06bc1a29d4b53",
      "tree": "65323d9fefe8d4234378d6d1610420241bbbd88f",
      "parents": [
        "faab724e57d881c8ac9ec33bdf86b418cf0822df"
      ],
      "author": {
        "name": "Mac kingsley",
        "email": "48776784+mackings@users.noreply.github.com",
        "time": "Thu Oct 29 17:19:12 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 29 17:19:12 2026"
      },
      "message": "[vector_graphics] Dispose pictures decoded after their VectorGraphic is removed (#13435)\n\nIf a `VectorGraphic` was removed while its picture was still loading, the picture was never disposed, so it leaked.\n\nThe fix caches the picture first, and lets a removed widget release it a moment later. That way, if another widget is waiting on the same load, it can still pick it up, and the picture only gets disposed when nobody is using it.\n\nI didn\u0027t use the fix suggested in the issue because it disposes the picture too early when two widgets share a load, and the remaining one ends up drawing a disposed picture. There\u0027s a test for that case too.\n\nFixes https://github.com/flutter/flutter/issues/190185\n\n## Pre-Review Checklist\n\n**Note**: The Flutter team is currently trialing the use of [Gemini Code Assist for GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code). Comments from the `gemini-code-assist` bot should not be taken as authoritative feedback from the Flutter team. If you find its comments useful you can update your code accordingly, but if you are unsure or disagree with the feedback, please feel free to wait for a Flutter team member\u0027s review for guidance on which automated comments should be addressed.\n\n[^1]: Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling."
    },
    {
      "commit": "faab724e57d881c8ac9ec33bdf86b418cf0822df",
      "tree": "b47aeffb5dcad68bbe0a7d6a240daf45ce34b91f",
      "parents": [
        "c99c1e1ac078ad21e2fd60617fef6ab22a175ee9"
      ],
      "author": {
        "name": "Mairramer",
        "email": "50643541+Mairramer@users.noreply.github.com",
        "time": "Thu Oct 29 16:54:03 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 29 16:54:03 2026"
      },
      "message": "[camera_android_x] implement CameraX RecordingStats and VideoRecordEvent APIs (#13330)\n\nFixes https://github.com/flutter/flutter/issues/148138\n\n## Pre-Review Checklist\n\n**Note**: The Flutter team is currently trialing the use of [Gemini Code Assist for GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code). Comments from the `gemini-code-assist` bot should not be taken as authoritative feedback from the Flutter team. If you find its comments useful you can update your code accordingly, but if you are unsure or disagree with the feedback, please feel free to wait for a Flutter team member\u0027s review for guidance on which automated comments should be addressed.\n\n[^1]: Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling."
    },
    {
      "commit": "c99c1e1ac078ad21e2fd60617fef6ab22a175ee9",
      "tree": "e95e72adf11c0dca36e437513e9a1308cbedf24b",
      "parents": [
        "1c015332a7639c7243ff9067e5ea3f76eda30e60"
      ],
      "author": {
        "name": "Flutter GitHub Bot",
        "email": "fluttergithubbot@gmail.com",
        "time": "Thu Oct 29 16:19:17 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 29 16:19:17 2026"
      },
      "message": "Sync release-go_router-18.1.2 to main (#13480)\n\nThis automated PR syncs the changes from the release branch release-go_router-18.1.2 back to the main branch."
    },
    {
      "commit": "1c015332a7639c7243ff9067e5ea3f76eda30e60",
      "tree": "99fc32fdc5ea464a51108bbd56ddd756c757168a",
      "parents": [
        "10f15b38407ff0e0074d47bb612e84d1b14ec4ca"
      ],
      "author": {
        "name": "Flutter GitHub Bot",
        "email": "fluttergithubbot@gmail.com",
        "time": "Thu Oct 29 16:19:14 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 29 16:19:14 2026"
      },
      "message": "Sync release-cupertino_ui-1.1.5 to main (#13481)\n\nThis automated PR syncs the changes from the release branch release-cupertino_ui-1.1.5 back to the main branch."
    },
    {
      "commit": "10f15b38407ff0e0074d47bb612e84d1b14ec4ca",
      "tree": "1590e08bf972bb6b610468f601ea1ce6fe9acf4b",
      "parents": [
        "0b72e92bf5dd9ed6e8cbeace392b64b95938b4c3"
      ],
      "author": {
        "name": "Rohan Jariwala",
        "email": "34390549+rohanjariwala03@users.noreply.github.com",
        "time": "Thu Oct 29 15:43:20 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 29 15:43:20 2026"
      },
      "message": "[vector_graphics_compiler] Fix em units in text positions (#13388)\n\nText `x`, `y`, `dx` and `dy` values in `em` were treated as pixels. For example, `dy\u003d\".35em\"` with `font-size\u003d\"425px\"` moved the text down by 0.35 pixels instead of about 149, so text centered this way was drawn too high.\r\n\r\n`DoubleOrPercentage.fromString` stripped the unit with `parseDouble`, so an `em` value ended up the same as a plain number. Now it remembers that the value is in `em`, and `computeTextPosition` multiplies it by the element\u0027s font size, including one inherited from a parent. Without a font size it uses `kDefaultFontSize` (16), the same default `computeTextConfig` uses when drawing the text. The bug is in `vector_graphics_compiler`, which `flutter_svg` uses to parse SVGs.\r\n\r\nFixes https://github.com/flutter/flutter/issues/158758\r\n\r\n## Pre-Review Checklist\r\n\r\n**Note**: The Flutter team is currently trialing the use of [Gemini Code Assist for GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code). Comments from the `gemini-code-assist` bot should not be taken as authoritative feedback from the Flutter team. If you find its comments useful you can update your code accordingly, but if you are unsure or disagree with the feedback, please feel free to wait for a Flutter team member\u0027s review for guidance on which automated comments should be addressed.\r\n\r\n[^1]: Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling."
    },
    {
      "commit": "0b72e92bf5dd9ed6e8cbeace392b64b95938b4c3",
      "tree": "b4f9a08c4b6f3c26cab711b680e3de9bd75731fe",
      "parents": [
        "2def459cbe2d81d689b6583f35c1c644e6699e4e"
      ],
      "author": {
        "name": "Alex Talebi",
        "email": "31685655+SalehTZ@users.noreply.github.com",
        "time": "Thu Oct 29 10:10:20 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 29 10:10:20 2026"
      },
      "message": "[material_ui] Mirror the GappedSliderTrackShape secondary track correctly in RTL (#13226)\n\nIn RTL, `GappedSliderTrackShape` drew the secondary track from `secondaryOffset.dx - trackGap` to `thumbCenter.dx`. That filled the gap next to the thumb, which the main track segments and the LTR secondary track keep empty. The corner radii were also copied from the LTR case instead of being mirrored, so the far end had the small inside corners and the end by the thumb was fully rounded.\r\n\r\nThis PR draws the RTL secondary track from `secondaryOffset.dx` to `thumbCenter.dx - trackGap`, with the fully rounded corners on the far end and the small inside corners next to the thumb. That is the mirror image of the LTR case. The existing visibility check just above already used `thumbCenter.dx - trackGap`, so it matches the new geometry.\r\n\r\nBefore and after, LTR on top and RTL below, with `Slider(year2023: false, secondaryTrackValue: ...)` and `trackHeight: 24`:\r\n\r\n\u003cdetails open\u003e\r\n\u003csummary\u003eScreenshots demonstration\u003c/summary\u003e\r\n\r\n| State | Direction | Screenshot |\r\n| :---: | :---: | :---: |\r\n| **Before** | \u003ckbd\u003eLTR ➔\u003c/kbd\u003e\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e\u003ckbd\u003e⬅ RTL\u003c/kbd\u003e | \u003cimg width\u003d\"1200\" height\u003d\"320\" alt\u003d\"2_gapped_BEFORE\" src\u003d\"https://github.com/user-attachments/assets/dfc9eb92-9b0c-4fd6-a087-253e7a0b586d\" /\u003e |\r\n| **After** | \u003ckbd\u003eLTR ➔\u003c/kbd\u003e\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e\u003ckbd\u003e⬅ RTL\u003c/kbd\u003e | \u003cimg width\u003d\"1200\" height\u003d\"320\" alt\u003d\"2_gapped_AFTER\" src\u003d\"https://github.com/user-attachments/assets/99599f28-dd24-41b6-80f3-cf889bc2fa74\" /\u003e |\r\n\r\n\u003c/details\u003e\r\n\r\nI extended the existing `Default Slider when year2023 is false` test. It now also asserts the exact LTR secondary track, and has a new RTL block with the mirrored inactive, active and secondary tracks, including corner radii. The RTL block fails without the fix.\r\n\r\nFixes https://github.com/flutter/flutter/issues/194279\r\n\r\n## Pre-Review Checklist\r\n\r\n**Note**: The Flutter team is currently trialing the use of [Gemini Code Assist for GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code). Comments from the `gemini-code-assist` bot should not be taken as authoritative feedback from the Flutter team. If you find its comments useful you can update your code accordingly, but if you are unsure or disagree with the feedback, please feel free to wait for a Flutter team member\u0027s review for guidance on which automated comments should be addressed.\r\n\r\n[^1]: Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling."
    },
    {
      "commit": "2def459cbe2d81d689b6583f35c1c644e6699e4e",
      "tree": "12b738160a29b87bb62e0bbff3c9c87a4a1f33f0",
      "parents": [
        "4dd0e3e70904e563ee369fe5b8fb403ecb50709d"
      ],
      "author": {
        "name": "Tarrin Neal",
        "email": "tarrinneal@gmail.com",
        "time": "Thu Oct 29 03:13:04 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 29 03:13:04 2026"
      },
      "message": "[pigeon] update jni dependency to ^1.1.1 and remove workaround proguard rules (#13464)\n\nThis should remove the need for manual proguard rules"
    },
    {
      "commit": "4dd0e3e70904e563ee369fe5b8fb403ecb50709d",
      "tree": "b9b64f67d0e810c83dc3b75bc8466fb899ccaced",
      "parents": [
        "9d6cf9ad383dae5fa26eff228dd1d4cb57a17af0"
      ],
      "author": {
        "name": "Samarpreet Singh",
        "email": "45147003+samar70@users.noreply.github.com",
        "time": "Wed Oct 28 21:39:26 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 28 21:39:26 2026"
      },
      "message": "[cupertino_ui] Document translucent default background of CupertinoSlidingSegmentedControl (#13178)\n\nFixes flutter/flutter#164073\r\nPorts flutter/flutter#186645. Part of flutter/flutter#188444.\r\n\r\nDocuments that the default background of CupertinoSlidingSegmentedControl is translucent, so content behind unselected segments shows through unless an opaque color is passed. The original issue is https://github.com/flutter/flutter/issues/164073. Tracking issue: flutter/flutter#188444.\r\n\r\ncc @NadeemIqbal\r\n\r\nDocs-only change, so this is test-exempt. I used AI assistance to port the approved documentation.\r\n\r\n## Pre-Review Checklist\r\n\r\n**Note**: The Flutter team is currently trialing the use of [Gemini Code Assist for GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code). Comments from the `gemini-code-assist` bot should not be taken as authoritative feedback from the Flutter team. If you find its comments useful you can update your code accordingly, but if you are unsure or disagree with the feedback, please feel free to wait for a Flutter team member\u0027s review for guidance on which automated comments should be addressed.\r\n\r\n[^1]: Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling."
    },
    {
      "commit": "9d6cf9ad383dae5fa26eff228dd1d4cb57a17af0",
      "tree": "ae3161e1ca1c9cc678eb1da12d433bbe1eaf9af5",
      "parents": [
        "0f3656e584297e8cfcf83ae44f2ca32706f0ad54"
      ],
      "author": {
        "name": "Francis Rath",
        "email": "fr@ncis.no",
        "time": "Wed Oct 28 20:53:23 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 28 20:53:23 2026"
      },
      "message": "[flutter_svg] Throw on non-2xx responses in SvgNetworkLoader (#13403)\n\n`SvgNetworkLoader.prepareMessage` returned `response.bodyBytes` without checking the status code, so a 404 or 503 HTML error page was handed to the SVG parser and failed with a misleading `StateError: Bad state: Invalid SVG data`. This PR makes it throw an `http.ClientException` naming the status code and URL for any status outside 200–299, so the real failure is visible.\n\nIt also moves closing an internally created client into a `finally`, so that client is closed on the error path too (and if `get` itself throws). Tests cover a 404 (throws, client still closed) and a 200 (returns the body).\n\nFixes https://github.com/flutter/flutter/issues/195162\n\n## Pre-Review Checklist\n\n**Note**: The Flutter team is currently trialing the use of [Gemini Code Assist for GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code). Comments from the `gemini-code-assist` bot should not be taken as authoritative feedback from the Flutter team. If you find its comments useful you can update your code accordingly, but if you are unsure or disagree with the feedback, please feel free to wait for a Flutter team member\u0027s review for guidance on which automated comments should be addressed.\n\n[^1]: Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling."
    },
    {
      "commit": "0f3656e584297e8cfcf83ae44f2ca32706f0ad54",
      "tree": "0111e811d15a1c86d1618b6afc4b311ff3016cbd",
      "parents": [
        "6f61327e965fd589e1af5c9c572ec66dc2d2de20"
      ],
      "author": {
        "name": "Elliott Brooks",
        "email": "21270878+elliette@users.noreply.github.com",
        "time": "Wed Oct 28 19:33:20 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 28 19:33:20 2026"
      },
      "message": "[tool] Fix package matching logic for `--package-tags` filter (#13472)\n\nhttps://github.com/flutter/packages/pull/12763 introduced a new `--package-tags` flag that can be used to specify which flags to filter a package\u0027s tests with. After some investigation, I realized it wasn\u0027t working on CI.\n\nThis is because we were trying to match the package key set in the [YAML file](https://github.com/flutter/packages/blob/13d38e0d97a8e1227379f2887847bc178f22c73a/script/configs/web_dart_unit_test_tags.yaml#L5) (in this case `material_ui`) to [`RepositoryPackage.displayName`](https://github.com/flutter/packages/blob/9919dfd51491a82547033aa1a8aa9aa5a185c61c/script/tool/lib/src/common/repository_package.dart#L41) which removes everything in the path up to the first path component named `packages`. On CI, the repository is checked out into a directory named packages, so `RepositoryPackage.displayName`  returned the package\u0027s path with a leading `packages/` (e.g. `packages/material_ui`). As a result, it never matched in CI. Tag lookup now uses `_packageTagKey`, which returns the package\u0027s path relative to the `packages/` directory that contains it (e.g. `material_ui`), regardless of where the repository is checked out.\n\nWork towards https://github.com/flutter/flutter/issues/192308\n\n## Pre-Review Checklist\n\n**Note**: The Flutter team is currently trialing the use of [Gemini Code Assist for GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code). Comments from the `gemini-code-assist` bot should not be taken as authoritative feedback from the Flutter team. If you find its comments useful you can update your code accordingly, but if you are unsure or disagree with the feedback, please feel free to wait for a Flutter team member\u0027s review for guidance on which automated comments should be addressed.\n\n[^1]: Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling."
    },
    {
      "commit": "6f61327e965fd589e1af5c9c572ec66dc2d2de20",
      "tree": "5f89d1f40134368c772bf7f190f1cc09609db758",
      "parents": [
        "13d38e0d97a8e1227379f2887847bc178f22c73a"
      ],
      "author": {
        "name": "engine-flutter-autoroll",
        "email": "engine-flutter-autoroll@skia.org",
        "time": "Wed Oct 28 17:53:19 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 28 17:53:19 2026"
      },
      "message": "Roll Flutter from d4c857754c0e to 0c2473cd50c8 (21 revisions) (#13470)\n\nhttps://github.com/flutter/flutter/compare/d4c857754c0e...0c2473cd50c8\n\n2026-10-28 engine-flutter-autoroll@skia.org Roll Packages from a8549ae8080b to 13d38e0d97a8 (9 revisions) (flutter/flutter#195488)\n2026-10-28 kevmoo@users.noreply.github.com Use int.oneBitCount in PersistentHashMap and scope 53-bit caps to JS (flutter/flutter#195005)\n2026-10-28 137456488+flutter-pub-roller-bot@users.noreply.github.com Roll pub packages (flutter/flutter#195483)\n2026-10-28 41930132+hellohuanlin@users.noreply.github.com [iPhone Duo] Use the correct UIScreen to report the display size and update when fold/unfold (flutter/flutter#195199)\n2026-10-28 jonnywang@google.com [fuchsia] Fix portable_ui_test.h includes for newer Fuchsia SDKs (flutter/flutter#195420)\n2026-10-28 evanwall@buffalo.edu Change default pipeline options to match production draw calls (flutter/flutter#194597)\n2026-10-28 engine-flutter-autoroll@skia.org Roll Fuchsia Test Scripts from 2T18KC7-LDQtmQiLP... to xl1LWBuppzu-BnOzV... (flutter/flutter#195450)\n2026-10-27 bkonyi@google.com [flutter_tools] Inject dependencies into Darwin build targets, native assets, and Xcode build settings (flutter/flutter#194052)\n2026-10-27 154381524+flutteractionsbot@users.noreply.github.com Revert: Reland square corners fix (flutter/flutter#195436)\n2026-10-27 bkonyi@google.com [flutter_tools] Add DeviceService app launch and flutter run support for tool extensions (flutter/flutter#194589)\n2026-10-27 mohammed@al-samarrai.com [engine] Honor targetWidth/targetHeight for animated images (flutter/flutter#194615)\n2026-10-27 louisehsu@google.com [Android][a11y] Set visibleToUser\u003dfalse for hidden semantics nodes (flutter/flutter#194411)\n2026-10-27 jmccandless@google.com Fix repo deletion test flake (flutter/flutter#195349)\n2026-10-27 engine-flutter-autoroll@skia.org Roll Packages from 23a05b6ad5d5 to a8549ae8080b (10 revisions) (flutter/flutter#195434)\n2026-10-27 1961493+harryterkelsen@users.noreply.github.com [web] Capture pointers to the Flutter view so drags survive platform view iframes (flutter/flutter#195187)\n2026-10-27 1961493+harryterkelsen@users.noreply.github.com [web] Add opt-in raw samples, measured sample count and warm-up phase hook to the web benchmark recorder (flutter/flutter#195118)\n2026-10-27 jmccandless@google.com Link migration guide in deprecation messages (flutter/flutter#195361)\n2026-10-27 30870216+gaaclarke@users.noreply.github.com Pin basic_material_app_macos__compile to macOS 26 (flutter/flutter#195429)\n2026-10-27 evanwall@buffalo.edu Add benchmark for warmed pipeline usage (flutter/flutter#195001)\n2026-10-27 bkonyi@google.com [flutter_tools] Add device log streaming support to DeviceService and ExtensionBackedDevice (flutter/flutter#194964)\n2026-10-27 engine-flutter-autoroll@skia.org Roll Dart SDK from 1d16c04dc346 to 65fc979759ca (4 revisions) (flutter/flutter#195383)\n\nIf this roll has caused a breakage, revert this CL and set the roller\nto dry run mode using the controls here:\nhttps://autoroll.skia.org/r/flutter-packages\nPlease CC stuartmorgan@google.com,tarrinneal@google.com on the revert to ensure that a human\nis aware of the problem.\n\nTo file a bug in Packages: https://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": "13d38e0d97a8e1227379f2887847bc178f22c73a",
      "tree": "9c0d81109d1918f58b72f605a75c0006e29a5685",
      "parents": [
        "8cdc6e5a99fb6cfdcafb5ad87a1fff012dbf914b"
      ],
      "author": {
        "name": "Mouad Debbar",
        "email": "mdebbar@google.com",
        "time": "Wed Oct 28 04:04:21 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 28 04:04:21 2026"
      },
      "message": "[material_ui] Unskip long press drag test on web (#13358)\n\nFollow-up to https://github.com/flutter/flutter/pull/194877.\n\n`long press drag extends the selection to the word under the drag and shows toolbar on lift on non-Apple platforms` is skipped on the web, but the only thing that actually breaks there is the drag geometry: `textOffsetToPosition` nudges the position by 1px on web, so `moveBy(const Offset(-200, 0))` lands exactly on the glyph boundary between `Peel` and the following space, and `getWordAtOffset` resolves to the whitespace instead of the word. `_expectMaterialToolbarForPartialSelection()` already handles `isContextMenuProvidedByPlatform`, so the skip is not needed once the drag targets are fixed.\n\nThis PR drags to the middle of each target word instead of relative offsets, drops the skip, and tags the test with `reduced-web-test-set` so it runs on the web shards. Verified with `flutter test`, `flutter test --platform chrome`, and `flutter test --platform chrome --wasm`.\n\nTest-only change, so no version bump or CHANGELOG entry is needed."
    },
    {
      "commit": "8cdc6e5a99fb6cfdcafb5ad87a1fff012dbf914b",
      "tree": "1f895578d8c50b5cccc50b42c5d8f7379bb28e5f",
      "parents": [
        "9919dfd51491a82547033aa1a8aa9aa5a185c61c"
      ],
      "author": {
        "name": "LouiseHsu",
        "email": "louisehsu@google.com",
        "time": "Wed Oct 28 00:18:27 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 28 00:18:27 2026"
      },
      "message": "[google_maps_flutter_ios, pigeon, webview_flutter_wkwebview] Migrate remaining example apps to uiscene (#13280)\n\nFixes https://github.com/flutter/flutter/issues/194284 (+ a bonus extra special migration for `pigeon/example/native_interop_app`!! Wow!)\r\n\r\nThese four example apps got missed out in the original round of migrations.\r\n\r\n- `webview_flutter_wkwebview/example`\r\n  - In the initial example migration [sweep](https://github.com/flutter/packages/pull/12182), `webview_flutter/webview_flutter/example` was migrated while `webview_flutter_wkwebview/example` was missed which is understandable\r\n- `google_maps_flutter_ios_sdk9/example` \u0026 `google_maps_flutter_ios_sdk10/example`\r\n  - when I [migrated](https://github.com/flutter/packages/pull/11001) `AppDelegate.swift` in `google_maps_flutter_ios_shared_code`, the sync script copied `AppDelegate.swift` into sdk9 and sdk10. But `Info.plist `isn\u0027t in shared_code, so the script didn\u0027t copy `Info.plist`\r\n- `pigeon/example/native_interop_app`\r\n  - This was landed post the round of example migrations. Its `AppDelegate.swift` already adopts `FlutterImplicitEngineDelegate`, so it only needed `UIApplicationSceneManifest` in `Info.plist`.\r\n\r\n## Pre-Review Checklist\r\n\r\n- [] I added new tests to check the change I am making, or I have commented below to indicate which [test exemption] this PR falls under[^1]."
    },
    {
      "commit": "9919dfd51491a82547033aa1a8aa9aa5a185c61c",
      "tree": "d9b54d53a76984f31b9ab325b6832bc4e41e7045",
      "parents": [
        "2066e32e68b05377b4699c984efff5b6c4b07620"
      ],
      "author": {
        "name": "Tarrin Neal",
        "email": "tarrinneal@gmail.com",
        "time": "Tue Oct 27 23:39:20 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 27 23:39:20 2026"
      },
      "message": "manually roll flutter and fix flaky video player test that is preventing roll from landing (#13465)\n\nroll flutter and fix flake!"
    },
    {
      "commit": "2066e32e68b05377b4699c984efff5b6c4b07620",
      "tree": "697412031bb1b13845bd2b96f8a0f928a11a14be",
      "parents": [
        "d9885d789da599040af0c24a859592431db01331"
      ],
      "author": {
        "name": "Harry Terkelsen",
        "email": "1961493+harryterkelsen@users.noreply.github.com",
        "time": "Tue Oct 27 23:13:21 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 27 23:13:21 2026"
      },
      "message": "[material_ui] Unskip web tests that pass on CanvasKit and Skwasm: data_table_test, floating_action_button_test, text_field_cursor_test (#13460)\n\nRemoves web skips from three `material_ui` test files whose tests now pass on Chrome under both web renderers used in CI (CanvasKit/dart2js and Skwasm/dart2wasm). Keeping the skips hides web regressions in these widgets.\n\n- `data_table_test.dart`: removes the file-level `@TestOn(\u0027!chrome\u0027)`. The column/cell padding finders now use `\u0027${6.0}\u0027` instead of `\u00276.0\u0027`, so they match the text on dart2js (JS prints doubles with no fractional part as `6`, not `6.0`). Only the M3 `InkSparkle` press test stays skipped on web (https://github.com/flutter/flutter/issues/100587).\n- `floating_action_button_test.dart`: removes the file-level `@TestOn(\u0027!chrome\u0027)`, which turns 43 tests back on for web. The two ink splash clipping tests stay skipped on web (https://github.com/flutter/flutter/issues/20483).\n- `text_field_cursor_test.dart`: removes the file-level `@TestOn(\u0027!chrome\u0027)`. All 9 cursor animation, timing, and platform radius variants pass on web.\n\nVerified locally with `flutter test --platform chrome` and `flutter test --platform chrome --wasm` for each file.\n\nPart of https://github.com/flutter/flutter/issues/100587\nPart of https://github.com/flutter/flutter/issues/20483\n\n## Pre-Review Checklist\n\nThis PR only changes tests, so it is exempt from version/CHANGELOG updates and from the new-test requirement.\n\n**Note**: The Flutter team is currently trialing the use of [Gemini Code Assist for GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code). Comments from the `gemini-code-assist` bot should not be taken as authoritative feedback from the Flutter team. If you find its comments useful you can update your code accordingly, but if you are unsure or disagree with the feedback, please feel free to wait for a Flutter team member\u0027s review for guidance on which automated comments should be addressed.\n\n[^1]: Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling."
    },
    {
      "commit": "d9885d789da599040af0c24a859592431db01331",
      "tree": "9fd1d2df50452ad41ae944824948ef3a0d4a2d5b",
      "parents": [
        "65b6fab74dde6aa436a4c851aad6f435dd2fc7eb"
      ],
      "author": {
        "name": "Kevin Moore",
        "email": "kevmoo@users.noreply.github.com",
        "time": "Tue Oct 27 22:09:08 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 27 22:09:08 2026"
      },
      "message": "[material_ui] Decouple disabled CheckboxListTile state in a11y_assessments (#13177)\n\nDecouples the disabled `CheckboxListTile` (`enabled: false`) in `a11y_assessments`\u0027s `/check-box-list-tile` use case from the enabled tile\u0027s mutable `_checked` state so toggling the first checkbox does not also flip the disabled checkbox to checked (the other 5 use cases originally in this branch landed in #13159 and #13243). Only the `a11y_assessments` test app changes, so no package version or CHANGELOG update is needed.\n\nFixes https://github.com/flutter/flutter/issues/194905\n\n## Pre-Review Checklist\n\n**Note**: The Flutter team is currently trialing the use of [Gemini Code Assist for GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code). Comments from the `gemini-code-assist` bot should not be taken as authoritative feedback from the Flutter team. If you find its comments useful you can update your code accordingly, but if you are unsure or disagree with the feedback, please feel free to wait for a Flutter team member\u0027s review for guidance on which automated comments should be addressed.\n\n[^1]: Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling."
    },
    {
      "commit": "65b6fab74dde6aa436a4c851aad6f435dd2fc7eb",
      "tree": "7f61bfff42acbda35c51392783923c857f7c7577",
      "parents": [
        "4a1f3c5cf60ad6ab5bb513495a024ec1ddc4057a"
      ],
      "author": {
        "name": "Oleg Toplionkin",
        "email": "oleg.toplionkin@gmail.com",
        "time": "Tue Oct 27 21:10:20 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 27 21:10:20 2026"
      },
      "message": "[camera_web] Skip video input devices that cannot be started in availableCameras (#13196)\n\n`availableCameras` opens every video input device to read its facing mode. If one device cannot be started (for example the OBS Virtual Camera on Windows while OBS is not running), `getUserMedia` rejects with `NotReadableError` and the whole call throws `cameraNotReadable`, so the cameras that work are not returned either.\n\nThis PR skips a device whose stream cannot be started and continues with the remaining devices. If no camera is available and a device failed, the first device error is still thrown, so a single broken camera keeps reporting its error instead of returning an empty list.\n\nThe platform interface documents that `availableCameras` returns an empty list when no cameras are available. `availableCameras` already throws today when a device cannot be started, and this PR keeps that behavior when no device can be started at all, so a single busy or broken camera still reports why it failed. I\u0027m happy to return an empty list instead if that is preferred.\n\nFixes https://github.com/flutter/flutter/issues/194184\n\n## Pre-Review Checklist\n\n**Note**: The Flutter team is currently trialing the use of [Gemini Code Assist for GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code). Comments from the `gemini-code-assist` bot should not be taken as authoritative feedback from the Flutter team. If you find its comments useful you can update your code accordingly, but if you are unsure or disagree with the feedback, please feel free to wait for a Flutter team member\u0027s review for guidance on which automated comments should be addressed.\n\n[^1]: Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling."
    },
    {
      "commit": "4a1f3c5cf60ad6ab5bb513495a024ec1ddc4057a",
      "tree": "9a707ab97c2a9788e76c14d4b1645cee84fd441a",
      "parents": [
        "559aeed8cfb041a3a384568e552e56d3296cfede"
      ],
      "author": {
        "name": "Paul Shin",
        "email": "happytoday83@naver.com",
        "time": "Tue Oct 27 20:49:20 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 27 20:49:20 2026"
      },
      "message": "[camera] Add support for zero-shutter-lag capture (#12374)\n\nCombines the interface and both implementations in one PR per the [federated plugin process](https://github.com/flutter/flutter/blob/master/docs/ecosystem/contributing/README.md#changing-federated-plugins); splits into an interface-first PR once the direction is approved. The API shape is a proposal for https://github.com/flutter/flutter/issues/190598 — happy to reshape it however you prefer.\n\nAdds explicit **zero-shutter-lag** control: an opt-in on Android, where the default capture mode leaves it off, and an opt-out on iOS, where the OS enables it automatically when the session supports it.\n\n## What\u0027s added\n\n`camera_platform_interface` — two methods on `CameraPlatform`, modeled on the existing `setJpegImageQuality` / `getSupportedVideoStabilizationModes` patterns. Defaults are `false` / no-op, so nothing changes for platforms or apps that don\u0027t opt in:\n\n```dart\nFuture\u003cbool\u003e isZeroShutterLagSupported(int cameraId);\nFuture\u003cvoid\u003e setZeroShutterLagEnabled(int cameraId, bool enabled);\n```\n\n`camera_android_camerax` — [`CameraInfo.isZslSupported()`](https://developer.android.com/reference/androidx/camera/core/CameraInfo#isZslSupported()) and [`ImageCapture.Builder.setCaptureMode(CAPTURE_MODE_ZERO_SHUTTER_LAG)`](https://developer.android.com/reference/androidx/camera/core/ImageCapture.Builder#setCaptureMode(int)). The capture mode is construction-only, so the use case is recreated — the approach `setJpegImageQuality` already uses for the same constraint, now sharing one helper so the two settings can\u0027t drop each other.\n\n`camera_avfoundation` — [`isZeroShutterLagSupported`](https://developer.apple.com/documentation/avfoundation/avcapturephotooutput/iszeroshutterlagsupported) / [`isZeroShutterLagEnabled`](https://developer.apple.com/documentation/avfoundation/avcapturephotooutput/iszeroshutterlagenabled) (iOS 17+). Enabling is guarded on the support query (setting it while unsupported throws `NSInvalidArgumentException`) and wrapped in `beginConfiguration`/`commitConfiguration`. The requested state is reapplied after camera switches, which silently reset it. Apps that never call the setter are left untouched, so iOS keeps its automatic behavior on upgrade.\n\n## Notes for reviewers\n\n- **Platform defaults differ**: Android leaves ZSL off by default, iOS 17+ turns it on automatically when supported — so the same call is an opt-in on Android and an opt-out on iOS. Measurements below.\n- **Experimental API**: `CAPTURE_MODE_ZERO_SHUTTER_LAG` is `@ExperimentalZeroShutterLag`, handled with per-declaration `@OptIn` like this plugin\u0027s existing `ExperimentalCamera2Interop` / `ExperimentalLensFacing` / `ExperimentalPersistentRecording`. `gradlew lint` is clean.\n- **Unsupported cases need no app handling**: CameraX falls back on its own; iOS is guarded by the support query.\n- **Generated files**: regenerating with pigeon 26.1.5 also reverts two pre-existing hand-edits from #11616 (a redundant `Int32` cast and a missing doc comment).\n- **CI**: the publish check is red by design — the last commit holds the `make-deps-path-based` overrides and is reverted before landing.\n\n\u003cdetails\u003e\u003csummary\u003eOn-device measurements\u003c/summary\u003e\n\n**Android** — Galaxy S21 (SM-G991N), 5 captures per mode, shutter fired via `adb shell input tap`. A running millisecond stopwatch was photographed; the time visible in each saved photo shows how far behind the shutter tap the captured frame is.\n\n| | Captured frame | Shutter → file saved |\n|---|---|---|\n| `MINIMIZE_LATENCY` (current) | baseline | 912 ms |\n| `ZERO_SHUTTER_LAG` | **629 ms earlier** | 639 ms |\n\n**iOS** — iPhone (iOS 26.5), `ResolutionPreset.max`, 5 captures per mode after discarding one warm-up capture. Compares `AVCapturePhoto.timestamp` against the host-clock time of the `capturePhoto` call, so a negative value means the saved frame predates the call.\n\n| | Frame vs. shutter call | Shutter → delegate |\n|---|---|---|\n| ZSL off | +279 ms | 941 ms |\n| ZSL on | **−74 ms** | 689 ms |\n\nWith ZSL on, every captured frame predated the capture call. Support is session-dependent rather than device-wide: the same device reports supported at `ResolutionPreset.max` and unsupported at `medium`.\n\nSince iOS enables this automatically, these numbers describe what the toggle controls — not an improvement this PR delivers on iOS.\n\n\u003c/details\u003e\n\nPart of https://github.com/flutter/flutter/issues/190598\n\n## Pre-Review Checklist\n\n[^1]: Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling."
    },
    {
      "commit": "559aeed8cfb041a3a384568e552e56d3296cfede",
      "tree": "48afc059cd35037fc1abb4c7cd9dd503352ee15f",
      "parents": [
        "727c73ee44f30191e6851a6c8a591975a9aaa638"
      ],
      "author": {
        "name": "LouiseHsu",
        "email": "louisehsu@google.com",
        "time": "Tue Oct 27 19:45:32 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 27 19:45:32 2026"
      },
      "message": "[in_app_purchase_storekit} Fix more test flakes  (#13279)\n\nFixes https://github.com/flutter/flutter/issues/194285 (hopefully)\r\n\r\nThe main cause of https://github.com/flutter/flutter/issues/194285 (where `Product.products(for:)` returned `[]` across StoreKit 2 tests on the iOS 27 simulator) was fixed in https://github.com/flutter/packages/pull/13213 by preventing the example app from calling StoreKit APIs before `SKTestSession` initialized. However, `testGetProductsWithStoreKitError` and `testFailedNetworkErrorPurchase` remains fragile in iOS 26.2+\r\n\r\nThis is still because product caching in `StoreKitTest` is still 1. Opaque 2. unable to be manually cleared - the product cache sticks around even after calling `resetToDefaultState()`. Thus, the state of the cache depends on the order that the tests will run. :/ So, if a test that purchases a product succeeds, if we later hit `setSimulatedError(..., forAPI: .loadProducts)`, the cached product will be returned, causing the test to fail. \r\n\r\nThis is an issue that RevenueCat also ran into as shown here: https://github.com/RevenueCat/purchases-ios/pull/6088, where they skip tests using `.loadProduct` for anything above ios 26. Instead of keeping dead tests around, I think its fair to just remove them and avoid just keeping dead code around till the end of time. Additionally, the code paths tested by the removed tests are already being hit by `testFailedProductUnavilablePurchase`, so we arent really losing coverage. \r\n\r\nAdditionally in this PR I fix up some leaky states between tests.\r\n\r\n## Pre-Review Checklist"
    },
    {
      "commit": "727c73ee44f30191e6851a6c8a591975a9aaa638",
      "tree": "70ff38eff728be9e8ab06eb5d844e682e4412189",
      "parents": [
        "a8549ae8080b70a087f0eb7faee991fc12113dd9"
      ],
      "author": {
        "name": "Elliott Brooks",
        "email": "21270878+elliette@users.noreply.github.com",
        "time": "Tue Oct 27 18:28:23 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 27 18:28:23 2026"
      },
      "message": "[material_ui] Refactor `typography.dart` and `text_theme.dart` in preparation for M3E (#13371)\n\nThis PR is a no-op refactor of `typography.dart` and `text_theme.dart` to prepare for the Material 3 Expressive text styles. These changes were split out from my larger M3E typography changes to prevent that PR from being too big. \r\n\r\nSpecifically, this PR:\r\n- uses dartdoc templates in the `TextTheme` documentation to reduce documentation duplication\r\n- uses a helper method inside `apply` to reduce code duplication (helpful since we will be adding 15 new text styles with M3E)\r\n- adds a similar helper method inside `merge` to reduce code duplication\r\n- adds a `_withM3Colors` factory constructor to `Typography`. Currently this is only used once for M3, but it will also be used for M3E. \r\n\r\nThe tests in this PR are purely to increase coverage since these changes are all no-ops. They are not regression tests.\r\n\r\nFixes https://github.com/flutter/flutter/issues/195011\r\n\r\n## Pre-Review Checklist\r\n\r\n**Version and changelog exemption:** Purely a refactor, no user-noticeable changes.\r\n\r\n**Note**: The Flutter team is currently trialing the use of [Gemini Code Assist for GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code). Comments from the `gemini-code-assist` bot should not be taken as authoritative feedback from the Flutter team. If you find its comments useful you can update your code accordingly, but if you are unsure or disagree with the feedback, please feel free to wait for a Flutter team member\u0027s review for guidance on which automated comments should be addressed.\r\n\r\n[^1]: Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling."
    },
    {
      "commit": "a8549ae8080b70a087f0eb7faee991fc12113dd9",
      "tree": "eed590f24f2158421664f0a10b1713b2f868569b",
      "parents": [
        "587ee23a639b86e06a74964399e0bcb9f5b158d5"
      ],
      "author": {
        "name": "Elliott Brooks",
        "email": "21270878+elliette@users.noreply.github.com",
        "time": "Tue Oct 27 16:56:50 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 27 16:56:50 2026"
      },
      "message": "[material_ui] Deprecate the black/white parameters in `Typography.material2021` (#13443)\n\nAdds a deprecation message to the black/white parameters in the `Typography.material2021` factory constructor.\n\nFixes https://github.com/flutter/flutter/issues/195200\n\n## Pre-Review Checklist\n\n**Note**: The Flutter team is currently trialing the use of [Gemini Code Assist for GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code). Comments from the `gemini-code-assist` bot should not be taken as authoritative feedback from the Flutter team. If you find its comments useful you can update your code accordingly, but if you are unsure or disagree with the feedback, please feel free to wait for a Flutter team member\u0027s review for guidance on which automated comments should be addressed.\n\n[^1]: Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling."
    },
    {
      "commit": "587ee23a639b86e06a74964399e0bcb9f5b158d5",
      "tree": "2969933c319b183fd70166b4c154025c346fffe5",
      "parents": [
        "d155a332f1c5e06c8cfe4d2903c0b50fca486318"
      ],
      "author": {
        "name": "Kenneth Koh",
        "email": "kkmk1999@gmail.com",
        "time": "Tue Oct 27 06:20:09 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 27 06:20:09 2026"
      },
      "message": "[shared_preferences] Defer SharedPreferences fetch in `LegacySharedPreferencesPlugin` until first use on Android (#13431)\n\nDefers `getSharedPreferences` in `LegacySharedPreferencesPlugin` out of `onAttachedToEngine` until first use, avoiding synchronous disk I/O on the Android main thread during startup.\n\nThe following screenshot shows that the time taken for `RegisterFlutterPlugin` significantly decreases with the change, which validates the fix:\n\u003cimg width\u003d\"1920\" height\u003d\"552\" alt\u003d\"shared_preferences_registration_comparison_perfetto\" src\u003d\"https://github.com/user-attachments/assets/c1fea032-a499-4fa4-91de-13648ea03999\" /\u003e\n\nI also previously implemented this in my app, which was later negated by an upgrade of the shared_preferences packages into g3 and caused cold startup latency regression alerts on my app. Hoping to upstream the fix to get this optimization to all Flutter users.\n\nhttps://github.com/flutter/flutter/issues/195313 will be fixed by this PR.\n\n## Pre-Review Checklist\n\n**Note**: The Flutter team is currently trialing the use of [Gemini Code Assist for GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code). Comments from the `gemini-code-assist` bot should not be taken as authoritative feedback from the Flutter team. If you find its comments useful you can update your code accordingly, but if you are unsure or disagree with the feedback, please feel free to wait for a Flutter team member\u0027s review for guidance on which automated comments should be addressed.\n\n[^1]: Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling."
    },
    {
      "commit": "d155a332f1c5e06c8cfe4d2903c0b50fca486318",
      "tree": "6f2bb82b3ce507c1964f866674584b6fe0db94ca",
      "parents": [
        "d2e97da548fa6ba5f2dabbfc910a4c1e8dc39a25"
      ],
      "author": {
        "name": "Kevin Moore",
        "email": "kevmoo@users.noreply.github.com",
        "time": "Tue Oct 27 05:41:08 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 27 05:41:08 2026"
      },
      "message": "[material_ui] Fix MenuAnchor non-Unicode shortcut labels on JS web (#13370)\n\nDelegate unlocalized trigger fallback in `_LocalizedShortcutLabeler.getShortcutLabel` directly to `trigger.keyLabel` instead of masking `keyId` with `LogicalKeyboardKey.planeMask` (`0x0ff00000000`), which truncates to `0` under 32-bit JS bitwise `\u0026` and renders keys like `Tab` and `F1` as raw char codes (`\\t`, `\\u0801`).\n\nFixes flutter/flutter#195003\n\n## Pre-Review Checklist\n\n[^1]: Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling."
    },
    {
      "commit": "d2e97da548fa6ba5f2dabbfc910a4c1e8dc39a25",
      "tree": "5edd33d60cc4b12f47a9fd669f0989793ddfaf69",
      "parents": [
        "e71b3fd3c5edced244c0e9e8c2d3861250ddbf59"
      ],
      "author": {
        "name": "Munawer Ali",
        "email": "117514685+Munawer-Ali@users.noreply.github.com",
        "time": "Tue Oct 27 02:50:14 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 27 02:50:14 2026"
      },
      "message": "[material_ui] Add Checkbox.markInsets (#12690)\n\nThis PR ports my changes from https://github.com/flutter/flutter/pull/188258 to\r\n  flutter/packages,\r\n  as part of https://github.com/flutter/flutter/issues/188444          \r\n\r\n  Adds `Checkbox.markInsets` and `CheckboxThemeData.markInsets`, which inset the check\r\n  mark and the\r\n  indeterminate dash within the checkbox without changing the size of the box itself. The\r\n  mark and its\r\n  stroke shrink proportionally, and the mark is not painted if the insets leave no room.\r\n\r\n  Fixes https://github.com/flutter/flutter/issues/188031                      \r\n\r\n  ## Tests\r\n\r\n  Added to `packages/material_ui/test/checkbox_test.dart`:\r\n  - `Checkbox.markInsets` defaults to null\r\n  -  Checkbox with no `markInsets` paints the check at full stroke width (backward-compat)\r\n  - `Checkbox.markInsets` shrinks the check mark and its stroke\r\n  - `Checkbox.markInsets` shrinks the indeterminate dash\r\n  - `Checkbox.markInsets` larger than the box collapses the mark without crashing\r\n  - `Checkbox.markInsets` falls back to `CheckboxThemeData.markInsets`\r\n  - `Checkbox.markInsets` overrides `CheckboxThemeData.markInsets`\r\n\r\n  ## Pre-Review Checklist\r\n\r\n  submitting PRs.\r\n  am not using AI tools.\r\n  brackets, e.g. `[shared_preferences]`\r\n  and the [repository CHANGELOG style], or I have commented below to indicate which\r\n  documented exception this PR falls under[^1].\r\n  indicate which [test exemption] this PR falls under[^1].\r\n  \r\n**Note**: The Flutter team is currently trialing the use of [Gemini Code Assist for GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code). Comments from the `gemini-code-assist` bot should not be taken as authoritative feedback from the Flutter team. If you find its comments useful you can update your code accordingly, but if you are unsure or disagree with the feedback, please feel free to wait for a Flutter team member\u0027s review for guidance on which automated comments should be addressed.\r\n\r\n[^1]: Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling."
    },
    {
      "commit": "e71b3fd3c5edced244c0e9e8c2d3861250ddbf59",
      "tree": "1916d9dae146caffc41c69034c5c46d5a8057e93",
      "parents": [
        "b48550d3c72dae2124e7b8443610d303a4f792a7"
      ],
      "author": {
        "name": "Mac kingsley",
        "email": "48776784+mackings@users.noreply.github.com",
        "time": "Tue Oct 27 02:38:56 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 27 02:38:56 2026"
      },
      "message": "[vector_graphics_compiler] Handle coordinate lists on text and tspan (#13287)\n\nSVG allows `x`, `y`, `dx` and `dy` on `text` and `tspan` to be a list, one value per character. The compiler parsed them as a single number, so a list like `x\u003d\"0 4.86 10.01\"` threw a confusing `FormatException: Invalid double`.\n\nLists aren\u0027t supported, so it now throws an `UnimplementedError` that names the attribute and value. Single values work as before.\n\nFixes https://github.com/flutter/flutter/issues/165490\n\n## Pre-Review Checklist\n\n**Note**: The Flutter team is currently trialing the use of [Gemini Code Assist for GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code). Comments from the `gemini-code-assist` bot should not be taken as authoritative feedback from the Flutter team. If you find its comments useful you can update your code accordingly, but if you are unsure or disagree with the feedback, please feel free to wait for a Flutter team member\u0027s review for guidance on which automated comments should be addressed.\n\n[^1]: Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling."
    },
    {
      "commit": "b48550d3c72dae2124e7b8443610d303a4f792a7",
      "tree": "d21bf6924ae4f7f493917b222813b0e32950e2ad",
      "parents": [
        "3ada763bb5ce7014624d52d0a68cf843836d41a8"
      ],
      "author": {
        "name": "Harry Terkelsen",
        "email": "1961493+harryterkelsen@users.noreply.github.com",
        "time": "Tue Oct 27 02:38:52 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 27 02:38:52 2026"
      },
      "message": "[cupertino_ui] Unskip web tests that pass on CanvasKit and Skwasm: nav_bar_transition_test, refresh_test, route_test, text_field_cursor_test (#13439)\n\nRemoves the whole-file `@TestOn(\u0027!chrome\u0027)` annotations from four `cupertino_ui` test files so they run on the web:\n\n- `nav_bar_transition_test.dart`\n- `refresh_test.dart`\n- `route_test.dart` (keeps the existing targeted web skip on the state restoration test)\n- `text_field_cursor_test.dart`\n\nAll of the newly enabled tests pass on Chrome under both CI web renderers: CanvasKit (`flutter test --platform chrome`) and Skwasm (`flutter test --platform chrome --wasm`). None of them use golden files. Leaving the skips in place hides web regressions in these widgets.\n\nPart of https://github.com/flutter/flutter/issues/33615 (the original web limitation behind these skips is closed; the one test that still depends on state restoration stays skipped on web).\n\nThis is a test-only change, so it is exempt from version and CHANGELOG updates.\n\n## Pre-Review Checklist\n\n**Note**: The Flutter team is currently trialing the use of [Gemini Code Assist for GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code). Comments from the `gemini-code-assist` bot should not be taken as authoritative feedback from the Flutter team. If you find its comments useful you can update your code accordingly, but if you are unsure or disagree with the feedback, please feel free to wait for a Flutter team member\u0027s review for guidance on which automated comments should be addressed.\n\n[^1]: Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling."
    },
    {
      "commit": "3ada763bb5ce7014624d52d0a68cf843836d41a8",
      "tree": "88abdf91c7da42bc635bfe94462fd08226f84b0d",
      "parents": [
        "d96c511e90cb2af6af56f1188de6710640ce791c"
      ],
      "author": {
        "name": "Elliott Brooks",
        "email": "21270878+elliette@users.noreply.github.com",
        "time": "Tue Oct 27 02:38:48 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 27 02:38:48 2026"
      },
      "message": "[material_ui] Fix `TextTheme` and `Typography` `debugFillProperties` defaults (#13374)\n\n`TextTheme.debugFillProperties` and `Typography.debugFillProperties` decide which values to report by comparing them against a default. Both defaults were out of date:\n- `TextTheme` compared against `Typography.material2018(...).black`\n- `Typography` compared against `Typography.material2014()`\n\nThis PR:\n- compares `TextTheme` styles against `ThemeData.fallback().textTheme`.\n- compares `Typography` text themes against `ThemeData.fallback().typography`. This matches how `ThemeData.debugFillProperties` already reports typography.\n- Treats null `TextTheme` styles as default. When a `TextTheme` is merged into a `ThemeData`, a null style falls back to the default style, so it shouldn\u0027t be reported as a difference.\n\nFixes https://github.com/flutter/flutter/issues/194981\n\n## Pre-Review Checklist\n\n**Note**: The Flutter team is currently trialing the use of [Gemini Code Assist for GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code). Comments from the `gemini-code-assist` bot should not be taken as authoritative feedback from the Flutter team. If you find its comments useful you can update your code accordingly, but if you are unsure or disagree with the feedback, please feel free to wait for a Flutter team member\u0027s review for guidance on which automated comments should be addressed.\n\n[^1]: Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling."
    },
    {
      "commit": "d96c511e90cb2af6af56f1188de6710640ce791c",
      "tree": "f33e3c8297d2b3b1f7b7c6ecb019ffe384cad147",
      "parents": [
        "d9db25a3c24929b10225ff2d7509857fb5d07dbd"
      ],
      "author": {
        "name": "Elliott Brooks",
        "email": "21270878+elliette@users.noreply.github.com",
        "time": "Tue Oct 27 02:38:45 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 27 02:38:45 2026"
      },
      "message": "[material_ui] Update out-of-date typography documentation (#13372)\n\nUpdates out-of-date documentation for typography, which is missing reference to the 2021 theme (the current default).\r\n\r\nFixes https://github.com/flutter/flutter/issues/195013\r\n\r\n## Pre-Review Checklist\r\n\r\n**Text exemption:** Documentation changes only.\r\n\r\n**Note**: The Flutter team is currently trialing the use of [Gemini Code Assist for GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code). Comments from the `gemini-code-assist` bot should not be taken as authoritative feedback from the Flutter team. If you find its comments useful you can update your code accordingly, but if you are unsure or disagree with the feedback, please feel free to wait for a Flutter team member\u0027s review for guidance on which automated comments should be addressed.\r\n\r\n[^1]: Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling."
    },
    {
      "commit": "d9db25a3c24929b10225ff2d7509857fb5d07dbd",
      "tree": "e01484006d014fcfe5802dd163ebd46bac11ab8b",
      "parents": [
        "ae20ca6bc95abcc6e97814b948e5157887ec76d1"
      ],
      "author": {
        "name": "Tarrin Neal",
        "email": "tarrinneal@gmail.com",
        "time": "Tue Oct 27 02:17:31 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 27 02:17:31 2026"
      },
      "message": "[shared_preferences_foundation] Fix web compilation of apps that import the package (#13447)\n\nSince 2.6.0 (https://github.com/flutter/packages/pull/12329), `package:shared_preferences_foundation/shared_preferences_foundation.dart` transitively imports `dart:ffi` and `package:objective_c`, causing multi-platform apps that import it (for example to use `SharedPreferencesAsyncFoundationOptions`) to fail compilation on web. This currently breaks `shared_preferences/example` web drive tests in CI.\n\nFollowing the same approach as `shared_preferences_android` in https://github.com/flutter/packages/pull/13380, this conditionally exports a stub of the plugin classes when `dart.library.ffi` is unavailable and moves `SharedPreferencesAsyncFoundationOptions` into its own FFI-free file."
    },
    {
      "commit": "ae20ca6bc95abcc6e97814b948e5157887ec76d1",
      "tree": "8aad7d85418746112186fd12cdea66ae88ce7146",
      "parents": [
        "23a05b6ad5d55bc0df5b9340623570b69064edf1"
      ],
      "author": {
        "name": "stuartmorgan",
        "email": "stuart.morgan@gmail.com",
        "time": "Mon Oct 26 16:04:29 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 26 16:04:29 2026"
      },
      "message": "Fix AI guidelines link in PR template (#13411)\n\nThe AI contribution guidelines were moved to a separate page; this updates the checklist to link to the new location."
    },
    {
      "commit": "23a05b6ad5d55bc0df5b9340623570b69064edf1",
      "tree": "73b86ea3295a9845b6ec47df7dfcf4569a24ba9a",
      "parents": [
        "9919b956c616fb9864fc22cc29c5ef55f6f28691"
      ],
      "author": {
        "name": "stuartmorgan",
        "email": "stuart.morgan@gmail.com",
        "time": "Fri Oct 23 23:38:32 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 23 23:38:32 2026"
      },
      "message": "[video_player] Fix crash regression with async calls on iOS/macOS (#13383)\n\nBecause Pigeon closures have references to the bridge object that serves as the API handler, it\u0027s not safe for it to have an `unowned` reference to the player instance that it delegates to. This changes it to a weak reference, and uses dummy return values as necessary for cases where the player has already been destroyed by the time the async call reaches the bridge.\r\n\r\nAlso includes a unit test simulating that situation, which crashes without the fix.\r\n\r\nFixes https://github.com/flutter/flutter/issues/195056\r\n\r\n## Pre-Review Checklist\r\n\r\n[^1]: Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling."
    },
    {
      "commit": "9919b956c616fb9864fc22cc29c5ef55f6f28691",
      "tree": "53db43ad682f026367de67d417428da53c45b03e",
      "parents": [
        "25bc5075cbeb64b27f889f2594e6b222e32ce029"
      ],
      "author": {
        "name": "Luis Cardoza Bird",
        "email": "luisalfonsocb83@gmail.com",
        "time": "Fri Oct 23 23:12:30 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 23 23:12:30 2026"
      },
      "message": "[material_ui] Migrate M3 SegmentedButton template to use new gen_defaults (#13227)\n\nWork toward https://github.com/flutter/flutter/issues/187899\nFixes https://github.com/flutter/flutter/issues/188432\n\nMigrates the M3 SegmentedButton template to the new `gen_defaults`. The generated defaults are unchanged. The first commit only moves the files out of `temporarily_excluded/`.\n\nThe opacities in `resolveStateColor` now come from the state layer tokens instead of being hard-coded, the values are the same.\n\nNo version bump or changelog since there\u0027s no change for users, same as the other template migrations.\n\n## Pre-Review Checklist\n\n[^1]: Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling."
    },
    {
      "commit": "25bc5075cbeb64b27f889f2594e6b222e32ce029",
      "tree": "4b0b179ebc38b6e6f1305842f2ad71e6de6ddf46",
      "parents": [
        "b7ec2d0a7f9003bf6bb2bd65f537c5700e4d3bbf"
      ],
      "author": {
        "name": "Luis Cardoza Bird",
        "email": "luisalfonsocb83@gmail.com",
        "time": "Fri Oct 23 21:17:06 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 23 21:17:06 2026"
      },
      "message": "[material_ui] Migrate M3 Slider template to use new gen_defaults (#13195)\n\nWork toward https://github.com/flutter/flutter/issues/187899\nFixes https://github.com/flutter/flutter/issues/188433\n\nMigrates the M3 Slider template to the new `gen_defaults`. The generated defaults are unchanged. The first commit only moves the files out of `temporarily_excluded/`.\n\n`activeTickMarkColor` and `inactiveTickMarkColor` still use `.withOpacity(1.0)` instead of `colorWithOpacity`, because that helper drops it when opacity is 1.0 and the output would change.\n\nNo version bump or changelog since there\u0027s no change for users, same as the other template migrations.\n\n## Pre-Review Checklist\n\n[^1]: Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling."
    },
    {
      "commit": "b7ec2d0a7f9003bf6bb2bd65f537c5700e4d3bbf",
      "tree": "0bb904d43e97e9429e52aa059051746ec9247ff3",
      "parents": [
        "108dad0d562e9368a45b6b5cdcc26c137bc071c4"
      ],
      "author": {
        "name": "Elliott Brooks",
        "email": "21270878+elliette@users.noreply.github.com",
        "time": "Fri Oct 23 19:04:11 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 23 19:04:11 2026"
      },
      "message": "[material_ui] Migrate M3 BottomAppBar template to use new gen_defaults (#13385)\n\nWork toward https://github.com/flutter/flutter/issues/187899\nFixes https://github.com/flutter/flutter/issues/188403\n\nThis PR migrates the M3 BottomAppBar defaults template to use the new gen_defaults in material_ui.\n\n## Pre-Review Checklist\n\n**Changelog/version exemption:** No-op, pure migration.\n\n**Note**: The Flutter team is currently trialing the use of [Gemini Code Assist for GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code). Comments from the `gemini-code-assist` bot should not be taken as authoritative feedback from the Flutter team. If you find its comments useful you can update your code accordingly, but if you are unsure or disagree with the feedback, please feel free to wait for a Flutter team member\u0027s review for guidance on which automated comments should be addressed.\n\n[^1]: Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling."
    },
    {
      "commit": "108dad0d562e9368a45b6b5cdcc26c137bc071c4",
      "tree": "31f7389d9316dcbdec7a07d1f8ba338f1d5a6154",
      "parents": [
        "9b05755726268005298745274cd34cca709d177e"
      ],
      "author": {
        "name": "Qun Cheng",
        "email": "36861262+QuncCccccc@users.noreply.github.com",
        "time": "Thu Oct 22 23:41:09 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 22 23:41:09 2026"
      },
      "message": "[material_ui] Migrate M3 IconButton template to use new gen_defaults (#12922)\n\nWork toward https://github.com/flutter/flutter/issues/187899.\r\nFixes https://github.com/flutter/flutter/issues/188417.\r\n\r\nThis PR migrates the M3 IconButton defaults templates to use the new `gen_defaults` in `material_ui`.\r\n\r\nThe `IconButton`, `IconButton.filled`, `IconButton.filledTonal`, and `IconButton.outlined` defaults are generated into separate files. The generated defaults remain unchanged.\r\n\r\n## Pre-Review Checklist"
    },
    {
      "commit": "9b05755726268005298745274cd34cca709d177e",
      "tree": "717259c692b28f47a801b0928992d7f23edc2f39",
      "parents": [
        "ecf4f2fc3de8bfc5df4b703aac53047a78287c3a"
      ],
      "author": {
        "name": "Qun Cheng",
        "email": "36861262+QuncCccccc@users.noreply.github.com",
        "time": "Thu Oct 22 23:36:27 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 22 23:36:27 2026"
      },
      "message": "[material_ui] Migrate M3 NavigationBar template to use new gen_defaults (#13067)\n\nWork toward https://github.com/flutter/flutter/issues/187899.\r\nFixes https://github.com/flutter/flutter/issues/188423.\r\n\r\nThis PR migrates the M3 NavigationBar defaults template to use the new gen_defaults in material_ui.\r\nThe generated defaults remain unchanged.\r\n\r\n## Pre-Review Checklist\r\n\r\n**Note**: The Flutter team is currently trialing the use of [Gemini Code Assist for GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code). Comments from the `gemini-code-assist` bot should not be taken as authoritative feedback from the Flutter team. If you find its comments useful you can update your code accordingly, but if you are unsure or disagree with the feedback, please feel free to wait for a Flutter team member\u0027s review for guidance on which automated comments should be addressed.\r\n\r\n[^1]: Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling."
    },
    {
      "commit": "ecf4f2fc3de8bfc5df4b703aac53047a78287c3a",
      "tree": "01be5edfc534b5aea2840ef7ee3d82abea6d25d2",
      "parents": [
        "48b67e1cd13e49a78fbfe71097c42b605b6564f2"
      ],
      "author": {
        "name": "Qun Cheng",
        "email": "36861262+QuncCccccc@users.noreply.github.com",
        "time": "Thu Oct 22 22:45:57 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 22 22:45:57 2026"
      },
      "message": "[material_ui] Remove obsolete `SurfaceTint` defaults template (#13276)\n\nWork toward https://github.com/flutter/flutter/issues/187899.\r\nFixes https://github.com/flutter/flutter/issues/188435.\r\n\r\nSurface tint is no longer recommended by the Material 3 specification, so it should not be migrated to the new gen_defaults.\r\n\r\nThis PR removes the obsolete `SurfaceTint` template and generated defaults. The existing elevation and opacity values remain hard-coded in elevation_overlay.dart for backwards compatibility.\r\n\r\nThe runtime behavior remains unchanged.\r\n\r\n## Pre-Review Checklist"
    },
    {
      "commit": "48b67e1cd13e49a78fbfe71097c42b605b6564f2",
      "tree": "8b66608c7852cdb5b2acad8fc0d1d120cd319606",
      "parents": [
        "695c444c699d7d44855fbf74ce2f23e9d909ac6b"
      ],
      "author": {
        "name": "Qun Cheng",
        "email": "36861262+QuncCccccc@users.noreply.github.com",
        "time": "Thu Oct 22 22:00:15 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 22 22:00:15 2026"
      },
      "message": "[material_ui] Migrate M3 Radio template to use new gen_defaults (#13210)\n\nWork toward https://github.com/flutter/flutter/issues/187899.\nFixes https://github.com/flutter/flutter/issues/188428.\n\nThis PR migrates the M3 Radio defaults template to use the new gen_defaults in material_ui.\nThe generated defaults remain unchanged.\n\n## Pre-Review Checklist\n\n**Note**: The Flutter team is currently trialing the use of [Gemini Code Assist for GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code). Comments from the `gemini-code-assist` bot should not be taken as authoritative feedback from the Flutter team. If you find its comments useful you can update your code accordingly, but if you are unsure or disagree with the feedback, please feel free to wait for a Flutter team member\u0027s review for guidance on which automated comments should be addressed.\n\n[^1]: Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling."
    },
    {
      "commit": "695c444c699d7d44855fbf74ce2f23e9d909ac6b",
      "tree": "1d941bb3d497631d0198a57b50f1cbbc7005e9fa",
      "parents": [
        "1e35bcab6c67fcb692fe7ec752ebb0b0b523ccca"
      ],
      "author": {
        "name": "Qun Cheng",
        "email": "36861262+QuncCccccc@users.noreply.github.com",
        "time": "Thu Oct 22 21:56:45 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 22 21:56:45 2026"
      },
      "message": "[material_ui] Migrate M3 NavigationDrawer template to use new gen_defaults (#13068)\n\nWork toward https://github.com/flutter/flutter/issues/187899.\r\nFixes https://github.com/flutter/flutter/issues/188424.\r\n\r\nThis PR migrates the M3 NavigationDrawer defaults template to use the new gen_defaults in material_ui.\r\nThe generated defaults remain unchanged.\r\n\r\n## Pre-Review Checklist\r\n\r\n**Note**: The Flutter team is currently trialing the use of [Gemini Code Assist for GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code). Comments from the `gemini-code-assist` bot should not be taken as authoritative feedback from the Flutter team. If you find its comments useful you can update your code accordingly, but if you are unsure or disagree with the feedback, please feel free to wait for a Flutter team member\u0027s review for guidance on which automated comments should be addressed.\r\n\r\n[^1]: Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling."
    },
    {
      "commit": "1e35bcab6c67fcb692fe7ec752ebb0b0b523ccca",
      "tree": "c41266af571bb6fee30d013364f91d20a4e3b593",
      "parents": [
        "0e3b72607acad4c86d22253dd0b0ca68b0e5ec76"
      ],
      "author": {
        "name": "victogomez-cs",
        "email": "victor.orozco@cloudsufi.com",
        "time": "Thu Oct 22 21:24:22 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 22 21:24:22 2026"
      },
      "message": "[image_picker_ios] PR 3/5 Split SPM packaging and migrate the plugin class to Swift (#13235)\n\nSplits the Swift package into a Swift target and an `image_picker_ios_objc` target. The Swift target depends on the Objective-C target, which still holds the view provider, image utilities, PHPicker save operation, and Pigeon messages. Migrates `FLTImagePickerPlugin` to `ImagePickerPlugin` and moves the camera, photo library, and PHPicker seams into that Swift target. `pluginClass` is now `ImagePickerPlugin`.\r\n\r\nPlugin behavior is unchanged. Bumps `image_picker_ios` to **0.8.13+13**.\r\n\r\nPR 3/5 of the Obj-C → Swift migration. Part of https://github.com/flutter/flutter/issues/119107\r\n\r\n## Pre-Review Checklist\r\n\r\n**Note**: The Flutter team is currently trialing the use of [Gemini Code Assist for GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code). Comments from the `gemini-code-assist` bot should not be taken as authoritative feedback from the Flutter team. If you find its comments useful you can update your code accordingly, but if you are unsure or disagree with the feedback, please feel free to wait for a Flutter team member\u0027s review for guidance on which automated comments should be addressed.\r\n\r\n[^1]: Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling."
    },
    {
      "commit": "0e3b72607acad4c86d22253dd0b0ca68b0e5ec76",
      "tree": "fe267b044e317c20c112e2724ca11a8f4244ef5f",
      "parents": [
        "f5dc2554e6a10f9e9b55f9cbd8165160108a65f9"
      ],
      "author": {
        "name": "Kate Lovett",
        "email": "katelovett@google.com",
        "time": "Thu Oct 22 21:17:12 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 22 21:17:12 2026"
      },
      "message": "[ci] Increase check-discovery timeout in release workflows (#13392)\n\nPost-submit `release.yml` runs on `main` have been regularly flaking at `Wait for test check-in` with:\n\n```\nMatching checks have not been found yet, will check again in 30 seconds. (Limit: 60s)\nThe requested check was never run against this ref, exiting...\n```\n\nWhen a PR merges to `main`, Cocoon cannot register post-submit LUCI check-runs until the commit mirrors from GitHub to Git-on-Borg, relying on Cloud Pub/Sub exponential backoff retries (up to 15 minutes). That routinely takes ~3–4 minutes, losing the race against `lewagon/wait-on-check-action`\u0027s default 60-second `checks-discovery-timeout` (often by just 3–7 seconds).\n\nThis PR sets `checks-discovery-timeout: 900` (15 minutes, matching Cocoon\u0027s Git-on-Borg sync window) on `Wait for test check-in` in `release.yml` (and in `reusable_release.yml` to keep them in sync).\n\nFollow-up PRs will address blocking `auto-submit` when a release workflow fails and guarding against version gaps in repo tooling.\n\nPart of https://github.com/flutter/flutter/issues/194870\n\n## Pre-Review Checklist\n\n**Note**: The Flutter team is currently trialing the use of [Gemini Code Assist for GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code). Comments from the `gemini-code-assist` bot should not be taken as authoritative feedback from the Flutter team. If you find its comments useful you can update your code accordingly, but if you are unsure or disagree with the feedback, please feel free to wait for a Flutter team member\u0027s review for guidance on which automated comments should be addressed.\n\n[^1]: Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling."
    },
    {
      "commit": "f5dc2554e6a10f9e9b55f9cbd8165160108a65f9",
      "tree": "05ff5666a6c8cb5334e7bbd47c192b4e61f59d43",
      "parents": [
        "cfc64d1af8ba81f2623d277a1cde6d043bf1f73d"
      ],
      "author": {
        "name": "Qun Cheng",
        "email": "36861262+QuncCccccc@users.noreply.github.com",
        "time": "Thu Oct 22 21:07:45 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 22 21:07:45 2026"
      },
      "message": "[material_ui] Migrate M3 `Switch` template to use new gen_defaults (#13274)\n\nWork toward https://github.com/flutter/flutter/issues/187899.\nFixes https://github.com/flutter/flutter/issues/188436.\n\nThis PR migrates the M3 `Switch` defaults template to use the new gen_defaults in material_ui.\nThe generated defaults remain unchanged.\n\n## Pre-Review Checklist"
    },
    {
      "commit": "cfc64d1af8ba81f2623d277a1cde6d043bf1f73d",
      "tree": "89040e6e2c21af78b9a75e0bf9aa4b6469a5f8ac",
      "parents": [
        "9fba981f77e08f905b353b8e22f055924b753799"
      ],
      "author": {
        "name": "Qun Cheng",
        "email": "36861262+QuncCccccc@users.noreply.github.com",
        "time": "Thu Oct 22 20:44:08 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 22 20:44:08 2026"
      },
      "message": "[material_ui] Migrate M3 PopupMenu template to use new gen_defaults (#13209)\n\nWork toward https://github.com/flutter/flutter/issues/187899.\nFixes https://github.com/flutter/flutter/issues/188426.\n\nThis PR migrates the M3 PopupMenu defaults template to use the new gen_defaults in material_ui.\nThe generated defaults remain unchanged.\n\n## Pre-Review Checklist\n\n**Note**: The Flutter team is currently trialing the use of [Gemini Code Assist for GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code). Comments from the `gemini-code-assist` bot should not be taken as authoritative feedback from the Flutter team. If you find its comments useful you can update your code accordingly, but if you are unsure or disagree with the feedback, please feel free to wait for a Flutter team member\u0027s review for guidance on which automated comments should be addressed.\n\n[^1]: Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling."
    },
    {
      "commit": "9fba981f77e08f905b353b8e22f055924b753799",
      "tree": "88cb57747cfcb596f58f15ff618fc25c0fb130a5",
      "parents": [
        "db55a59e9a26df9ef0ef95c2b693852ee9fedc9b"
      ],
      "author": {
        "name": "Kitamura Hisao",
        "email": "hisao.shio.kosyo@gmail.com",
        "time": "Thu Oct 22 20:39:52 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 22 20:39:52 2026"
      },
      "message": "[material_ui] Add day and weekday builders to CalendarDatePicker and showDatePicker (#12587)\n\n`CalendarDatePicker` does not provide a way to customize individual day cells or weekday headers while retaining the default picker behavior.\r\n\r\nThis PR adds `dayBuilder` and `weekdayBuilder` callbacks for customizing individual day cells and weekday headers.\r\n\r\nThe callbacks are exposed through `CalendarDatePicker`, `DatePickerDialog`, and `showDatePicker`. The day builder receives the current widget states while the picker retains its semantics, focus, and tap handling.\r\n\r\nTests cover customized days and weekday headers, day widget states, and `showDatePicker` parameter forwarding.\r\n\r\nFixes https://github.com/flutter/flutter/issues/68106\r\n\r\n## Pre-Review Checklist\r\n\r\n**Note**: The Flutter team is currently trialing the use of [Gemini Code Assist for GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code). Comments from the `gemini-code-assist` bot should not be taken as authoritative feedback from the Flutter team. If you find its comments useful you can update your code accordingly, but if you are unsure or disagree with the feedback, please feel free to wait for a Flutter team member\u0027s review for guidance on which automated comments should be addressed.\r\n\r\n[^1]: Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling."
    },
    {
      "commit": "db55a59e9a26df9ef0ef95c2b693852ee9fedc9b",
      "tree": "f0f7c4f0702b36b9743b166f81cbde78b5a19a14",
      "parents": [
        "4e6f88a6cc87f83c9e4284ad74087f7aab08cf93"
      ],
      "author": {
        "name": "Qun Cheng",
        "email": "36861262+QuncCccccc@users.noreply.github.com",
        "time": "Thu Oct 22 20:26:31 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 22 20:26:31 2026"
      },
      "message": "[material_ui] Migrate M3 `SearchView` template to use new gen_defaults (#13272)\n\nWork toward https://github.com/flutter/flutter/issues/187899.\nFixes https://github.com/flutter/flutter/issues/188431.\n\nThis PR migrates the M3 `SearchView` defaults template to use the new gen_defaults in material_ui.\nThe generated defaults remain unchanged.\n\n## Pre-Review Checklist"
    },
    {
      "commit": "4e6f88a6cc87f83c9e4284ad74087f7aab08cf93",
      "tree": "74e4d69c6da499d93aa16e2bc33ab96e88ed558c",
      "parents": [
        "cc839b7f2bbf9b2d4aed9d956b8721d16a834309"
      ],
      "author": {
        "name": "Qun Cheng",
        "email": "36861262+QuncCccccc@users.noreply.github.com",
        "time": "Thu Oct 22 20:19:16 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 22 20:19:16 2026"
      },
      "message": "[material_ui] Migrate M3 `TextField` template to use new gen_defaults (#13275)\n\nWork toward https://github.com/flutter/flutter/issues/187899.\nFixes https://github.com/flutter/flutter/issues/188438.\n\nThis PR migrates the M3 `TextField` defaults template to use the new gen_defaults in material_ui.\nThe generated defaults remain unchanged.\n\n## Pre-Review Checklist"
    },
    {
      "commit": "cc839b7f2bbf9b2d4aed9d956b8721d16a834309",
      "tree": "e1ba88d4a12dd3515562b752d3429ddd44a48983",
      "parents": [
        "e872aea015cfaf05c5c6fc3dbdbf84151808fc75"
      ],
      "author": {
        "name": "Qun Cheng",
        "email": "36861262+QuncCccccc@users.noreply.github.com",
        "time": "Thu Oct 22 20:09:56 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 22 20:09:56 2026"
      },
      "message": "[material_ui] Migrate M3 RangeSlider template to use new gen_defaults (#13215)\n\nWork toward https://github.com/flutter/flutter/issues/187899.\nFixes https://github.com/flutter/flutter/issues/188429.\n\nThis PR migrates the M3 RangeSlider defaults template to use the new gen_defaults in material_ui.\nThe generated defaults remain unchanged.\n\n## Pre-Review Checklist\n\n**Note**: The Flutter team is currently trialing the use of [Gemini Code Assist for GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code). Comments from the `gemini-code-assist` bot should not be taken as authoritative feedback from the Flutter team. If you find its comments useful you can update your code accordingly, but if you are unsure or disagree with the feedback, please feel free to wait for a Flutter team member\u0027s review for guidance on which automated comments should be addressed.\n\n[^1]: Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling."
    },
    {
      "commit": "e872aea015cfaf05c5c6fc3dbdbf84151808fc75",
      "tree": "cceefea52c5ba27e886055d3193f1711c2defdc5",
      "parents": [
        "ea7e0317d7094be8400d918e83961025c013d0d3"
      ],
      "author": {
        "name": "Agustín Ponce de León",
        "email": "52173599+agpdl@users.noreply.github.com",
        "time": "Thu Oct 22 19:18:31 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 22 19:18:31 2026"
      },
      "message": "[go_router] Keep web autocomplete focused in shell routes (#13348)\n\n## Summary\n\nFixes flutter/flutter#194873. Opening an `Autocomplete` overlay inside a\n`ShellRoute` can add a semantics parent above the focused field. On\nFlutter web, that detaches the field\u0027s DOM input and drops focus.\n\n```diff\n ShellRoute navigator semantics\n-  Semantics(container: true, child: navigator)\n+  Semantics(container: true, explicitChildNodes: true, child: navigator)\n```\n\nThe change keeps the field\u0027s semantics ancestry stable while retaining\nthe shell navigator boundary added to preserve shell chrome semantics.\nIt includes a regression test and a pending patch changelog entry for\nthe batched release workflow.\n\n## Evidence\n\n- **Before:** The regression test fails on unmodified `main`: the\nfocused field\u0027s semantics ancestor IDs change from `[6, 4, 3, 2, 1, 0]`\nto `[6, 4, 7, 3, 2, 1, 0]` when options open. In a Chrome release web\nrepro with published `go_router` 18.1.1, typing `t`, `e`, `x` leaves the\nfield empty and browser focus leaves the input.\n- **After:** The regression test passes. In the same Chrome repro with\nthe patched package, the field retains browser focus and contains `tex`;\nshell navigation remains in the semantics tree.\n- **Checks:** `format`, `analyze`, `dart-test`, `validate`, and\n`publish-check` through `flutter_plugin_tools` pass for `go_router`. The\npackage and example tests pass.\n\n## Merge Danger\n\n**Door:** Two-way. The patch can be reverted without data migration.\n\n**Blast Radius:** ShellRoute semantics trees. Explicit child nodes can\naffect accessibility traversal and announcements for routed content;\nexisting shell chrome semantics tests and the new overlay regression\ntest pass. Human review should include accessibility behavior on\nsupported platforms.\n\n## Pre-Review 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] page, which explains my\nresponsibilities.\n- [x] I read and followed the [relevant style guides] and ran [the\nauto-formatter].\n- [x] I signed the [CLA].\n- [x] The title of the PR starts with the name of the package surrounded\nby square brackets, e.g. `[shared_preferences]`\n- [x] I [linked to at least one issue that this PR fixes] in the\ndescription above.\n- [x] I followed [the version and CHANGELOG instructions], using\n[semantic versioning] and the [repository CHANGELOG style], or I have\ncommented below to indicate which documented exception this PR falls\nunder[^1].\n- [ ] I updated/added any relevant documentation (doc comments with\n`///`).\n- [x] I added new tests to check the change I am making, or I have\ncommented below to indicate which [test exemption] this PR falls\nunder[^1].\n- [x] All existing and new tests are passing.\n\nNo public API or doc comments changed; the bug fix does not introduce a\nnew API. `go_router` uses pending changelog files for batched releases;\nthis PR adds a patch entry there. This PR was prepared with AI\nassistance and reviewed by the contributor.\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[^1]: Regular contributors who have demonstrated familiarity with the\nrepository guidelines only need to comment if the PR is not\nauto-exempted by repo tooling.\n\n\u003c!-- Links --\u003e\n[Contributor Guide]:\nhttps://github.com/flutter/packages/blob/main/CONTRIBUTING.md\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/master/docs/contributing/Tree-hygiene.md\n[relevant style guides]:\nhttps://github.com/flutter/packages/blob/main/CONTRIBUTING.md#style\n[the auto-formatter]:\nhttps://github.com/flutter/packages/blob/main/script/tool/README.md#format-code\n[CLA]: https://cla.developers.google.com/\n[Discord]:\nhttps://github.com/flutter/flutter/blob/master/docs/contributing/Chat.md\n[linked to at least one issue that this PR fixes]:\nhttps://github.com/flutter/flutter/blob/master/docs/contributing/Tree-hygiene.md#overview\n[the version and CHANGELOG instructions]:\nhttps://github.com/flutter/flutter/blob/master/docs/ecosystem/contributing/README.md#version-and-changelog-updates\n[semantic versioning]:\nhttps://dart.dev/tools/pub/versioning#semantic-versions\n[repository CHANGELOG style]:\nhttps://github.com/flutter/flutter/blob/master/docs/ecosystem/contributing/README.md#changelog-style\n[test exemption]:\nhttps://github.com/flutter/flutter/blob/master/docs/contributing/Tree-hygiene.md#tests"
    },
    {
      "commit": "ea7e0317d7094be8400d918e83961025c013d0d3",
      "tree": "a89b8c6ac6a758ae65a901de4f41db3cbd0f6519",
      "parents": [
        "a40053c660b12d38031a9ea610759678a18097e8"
      ],
      "author": {
        "name": "Mouad Debbar",
        "email": "mdebbar@google.com",
        "time": "Thu Oct 22 19:03:32 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 22 19:03:32 2026"
      },
      "message": "[shared_preferences_android] Fix web compilation of apps that import the package (#13380)\n\nSince 2.5.0 (https://github.com/flutter/packages/pull/12329), `package:shared_preferences_android/shared_preferences_android.dart` transitively imports `package:jni`, which needs `dart:ffi`. So any app that imports it fails to compile for web, even if it only uses `SharedPreferencesAsyncAndroidOptions` the way the `shared_preferences` README shows. This currently breaks `shared_preferences/example` in the web unit test shards on every Flutter roll PR:\n\n```\njni-1.1.0/lib/src/jni.dart:5:8: Error: Dart library \u0027dart:ffi\u0027 is not available on this platform.\n```\n\nExample CI failures:\n- https://ci.chromium.org/b/8667231073363438673\n- https://ci.chromium.org/b/8667231073314809361\n- https://ci.chromium.org/b/8667308711483341649\n\nThis uses the same approach as `path_provider_android`: the library exports a stub of the plugin classes when `dart.library.ffi` isn\u0027t available, and the option types move to their own file that doesn\u0027t depend on FFI. The package\u0027s own tests now import `src/shared_preferences_android_real.dart` directly, since the analyzer resolves the conditional export to the stub.\n\nTest coverage comes from the existing `shared_preferences/example` web tests, which import this library and fail to compile without this change."
    },
    {
      "commit": "a40053c660b12d38031a9ea610759678a18097e8",
      "tree": "bfe46eb003d2b1f9788a6f44d282d9ebdd49f111",
      "parents": [
        "5de92e4242de80fb925f6edda5218d7a78d213a5"
      ],
      "author": {
        "name": "Qun Cheng",
        "email": "36861262+QuncCccccc@users.noreply.github.com",
        "time": "Thu Oct 22 18:49:02 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 22 18:49:02 2026"
      },
      "message": "[material_ui] Migrate M3 NavigationRail template to use new gen_defaults (#13069)\n\nWork toward https://github.com/flutter/flutter/issues/187899.\r\nFixes https://github.com/flutter/flutter/issues/188425.\r\n\r\nThis PR migrates the M3 NavigationRail defaults template to use the new gen_defaults in material_ui.\r\nThe generated defaults remain unchanged.\r\n\r\n## Pre-Review Checklist\r\n\r\n**Note**: The Flutter team is currently trialing the use of [Gemini Code Assist for GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code). Comments from the `gemini-code-assist` bot should not be taken as authoritative feedback from the Flutter team. If you find its comments useful you can update your code accordingly, but if you are unsure or disagree with the feedback, please feel free to wait for a Flutter team member\u0027s review for guidance on which automated comments should be addressed.\r\n\r\n[^1]: Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling."
    },
    {
      "commit": "5de92e4242de80fb925f6edda5218d7a78d213a5",
      "tree": "d9021835fe9880cc46483fd814f742d4c1d4b8f5",
      "parents": [
        "3bd8bacba4498c85002a63dfbd6670016a844633"
      ],
      "author": {
        "name": "Qun Cheng",
        "email": "36861262+QuncCccccc@users.noreply.github.com",
        "time": "Thu Oct 22 18:42:53 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 22 18:42:53 2026"
      },
      "message": "[material_ui] Migrate M3 SearchBar template to use new gen_defaults (#13216)\n\nWork toward https://github.com/flutter/flutter/issues/187899.\nFixes https://github.com/flutter/flutter/issues/188430.\n\nThis PR migrates the M3 SearchBar defaults template to use the new gen_defaults in material_ui.\nThe generated defaults remain unchanged.\n\n## Pre-Review Checklist\n\n**Note**: The Flutter team is currently trialing the use of [Gemini Code Assist for GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code). Comments from the `gemini-code-assist` bot should not be taken as authoritative feedback from the Flutter team. If you find its comments useful you can update your code accordingly, but if you are unsure or disagree with the feedback, please feel free to wait for a Flutter team member\u0027s review for guidance on which automated comments should be addressed.\n\n[^1]: Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling."
    },
    {
      "commit": "3bd8bacba4498c85002a63dfbd6670016a844633",
      "tree": "815eebaf923371550e4898fc017eeb5f36db0a44",
      "parents": [
        "95c83e581c75e5715be94d2194d139380b2f389c"
      ],
      "author": {
        "name": "Lam Nhan",
        "email": "lamnhan066@gmail.com",
        "time": "Thu Oct 22 18:05:03 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 22 18:05:03 2026"
      },
      "message": "[material_ui] Fix for time picker error in locales that do not use Latin digits (#13035)\n\nPort of flutter/flutter#186311, fixes flutter/flutter#85527\r\n\r\nThe time picker currently uses `int.parse` and `int.tryParse` to parse the entered number. However, in some locales, numbers are not represented using Latin digits, which causes the parsing to fail. In this implementation, I use `MaterialLocalizations` to parse the number directly, ensuring that it works correctly for all locales.\r\n\r\nA test has been added to ensure that the new implementation works as expected and does not cause any breaking changes.\r\n\r\n## Pre-Review Checklist"
    },
    {
      "commit": "95c83e581c75e5715be94d2194d139380b2f389c",
      "tree": "5afabb4e38cd6b7201fd48d6e4f578d2f162052e",
      "parents": [
        "6c3361d86ccb5c06543914076633f398f67806aa"
      ],
      "author": {
        "name": "Abdullah Taş",
        "email": "29359748+abdullahtas0@users.noreply.github.com",
        "time": "Thu Oct 22 18:00:01 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 22 18:00:01 2026"
      },
      "message": "[material_ui] Fix MenuAnchor scrollbar safe-area padding (#12470)\n\nMaterial `Scrollbar` uses the surrounding `MediaQuery.padding` as painter padding when no explicit padding is provided. A `MenuAnchor` overlay is already positioned within the safe area, so inheriting the view padding again shortens the scrollbar track and prevents the thumb from reaching its visual end.\n\nThis change removes safe-area padding only for the menu\u0027s `Scrollbar`, then restores the original `MediaQueryData` below it so custom menu children continue to observe the same media query values as before. It also adds a regression test and a patch changelog entry.\n\nFixes flutter/flutter#188155.\n\nThis supersedes flutter/flutter#191085, which cannot land in `flutter/flutter` because Material framework changes have moved to `material_ui`.\n\nValidation:\n\n- The regression test failed before the source change with a 24 logical pixel bottom scrollbar padding and passes after the change.\n- `flutter test test/menu_anchor_test.dart` (171 passed, 1 skipped)\n- `flutter analyze --no-pub`\n- `flutter_plugin_tools format --packages\u003dmaterial_ui`\n- `flutter_plugin_tools validate --packages\u003dmaterial_ui --check-for-missing-changes`\n\n## Pre-Review Checklist\n\n**Note**: The Flutter team is currently trialing the use of [Gemini Code Assist for GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code). Comments from the `gemini-code-assist` bot should not be taken as authoritative feedback from the Flutter team. If you find its comments useful you can update your code accordingly, but if you are unsure or disagree with the feedback, please feel free to wait for a Flutter team member\u0027s review for guidance on which automated comments should be addressed.\n\n[^1]: Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling."
    },
    {
      "commit": "6c3361d86ccb5c06543914076633f398f67806aa",
      "tree": "4d13d4e552a1b7ac3099f65ef8e90ef277b9d67b",
      "parents": [
        "e0e148bbfcb216526875eec854c76996fe5a5ad1"
      ],
      "author": {
        "name": "Hameed Habeeblahi Gbolahan",
        "email": "ahabeeblahi1@gmail.com",
        "time": "Thu Oct 22 17:56:06 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 22 17:56:06 2026"
      },
      "message": "[material_ui] Document Material 3 fallback for Divider.color and VerticalDivider.color (#12967)\n\nPort of https://github.com/flutter/flutter/pull/193136 — the original PR could not land on flutter/flutter due to the Material/Cupertino code freeze on `packages/flutter/lib/src/material` (see flutter/flutter#188444). Re-opening the doc fix here in `material_ui`.\n\nThe `Divider.color` and `VerticalDivider.color` docstrings currently state that when both the local `color` and `DividerThemeData.color` are null, `ThemeData.dividerColor` is used. In Material 3 (the default since Flutter 3.16) the effective fallback is actually `ColorScheme.outlineVariant`, as `Divider.createBorderSide` already documents. This PR aligns the public field docstrings with the actual runtime behavior.\n\nFixes: https://github.com/flutter/flutter/issues/190534\n\nNotes for reviewers:\n- The `Divider.color` docstring is a `{@template material_ui.Divider.color}` reused via `{@macro}` elsewhere, so the fix propagates.\n- `VerticalDivider.color` carries a duplicate (non-macro) docstring, which has been updated to match.\n- A prior attempt on flutter/flutter (#190535) was approved by @elliette before being auto-closed for inactivity on a whitespace nit; this port takes that direction into the correct repo per the decoupling policy."
    },
    {
      "commit": "e0e148bbfcb216526875eec854c76996fe5a5ad1",
      "tree": "b0d3af9c9d775427e260cce8c0d2abb6e79b3f7f",
      "parents": [
        "9e9e3e968ee577717a84c957f826fb2b232957fd"
      ],
      "author": {
        "name": "Valentin Vignal",
        "email": "32538273+ValentinVignal@users.noreply.github.com",
        "time": "Thu Oct 22 17:12:52 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 22 17:12:52 2026"
      },
      "message": "[material_ui] Migrate M3 tabs template to use new gen_defaults (#13139)\n\nWork toward https://github.com/flutter/flutter/issues/187899.\r\nFixes https://github.com/flutter/flutter/issues/188437\r\n\r\n## Pre-Review Checklist\r\n\r\n**Note**: The Flutter team is currently trialing the use of [Gemini Code Assist for GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code). Comments from the `gemini-code-assist` bot should not be taken as authoritative feedback from the Flutter team. If you find its comments useful you can update your code accordingly, but if you are unsure or disagree with the feedback, please feel free to wait for a Flutter team member\u0027s review for guidance on which automated comments should be addressed.\r\n\r\n[^1]: Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling."
    },
    {
      "commit": "9e9e3e968ee577717a84c957f826fb2b232957fd",
      "tree": "f1c28930594df7736ecddc17dc28149d6e34f31e",
      "parents": [
        "a64e51a2561cd1e5b7ad009d1bbcccb212db9856"
      ],
      "author": {
        "name": "fkrhzbllh",
        "email": "72785248+fkrhzbllh@users.noreply.github.com",
        "time": "Thu Oct 22 16:45:17 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 22 16:45:17 2026"
      },
      "message": "[material_ui] Migrate M3 progress indicator defaults to new gen_defaults (#13026)\n\nWork toward https://github.com/flutter/flutter/issues/187899 \r\n\r\nFix https://github.com/flutter/flutter/issues/188427 \r\n\r\n## Pre-Review Checklist"
    },
    {
      "commit": "a64e51a2561cd1e5b7ad009d1bbcccb212db9856",
      "tree": "e76a7b78401cdc7a14b1f38dfe634ace39c14f8e",
      "parents": [
        "93baed9106f64115eda4dd55d1fd0e92d1e871d6"
      ],
      "author": {
        "name": "victogomez-cs",
        "email": "victor.orozco@cloudsufi.com",
        "time": "Thu Oct 22 15:26:08 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 22 15:26:08 2026"
      },
      "message": "[google_sign_in] Convert the iOS example app and UI tests to Swift (#13271)\n\nConverts the `google_sign_in_ios` iOS example runner and XCUITests from Objective-C to Swift. The plugin itself was already Swift-only after the earlier migration PRs.\n\nGID URL schemes, `Info.plist` keys, and the existing `RunnerTests` target (shared `darwin/Tests`) are unchanged. `Runner-Bridging-Header.h` is required so the Swift `AppDelegate` can import Flutter\u0027s generated Objective-C `GeneratedPluginRegistrant`, matching `url_launcher_ios` and the app-facing `google_sign_in` example.\n\nBumps `google_sign_in_ios` to **6.3.8**.\n\nThis is leftover example/UI-test work from the Obj-C → Swift migration. Completes https://github.com/flutter/flutter/issues/119103 for the iOS example app.\n\nExisting XCUITests were ported from Objective-C to Swift; no new behavior.\n\n## Pre-Review Checklist\n\n**Note**: The Flutter team is currently trialing the use of [Gemini Code Assist for GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code). Comments from the `gemini-code-assist` bot should not be taken as authoritative feedback from the Flutter team. If you find its comments useful you can update your code accordingly, but if you are unsure or disagree with the feedback, please feel free to wait for a Flutter team member\u0027s review for guidance on which automated comments should be addressed.\n\n[^1]: Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling."
    },
    {
      "commit": "93baed9106f64115eda4dd55d1fd0e92d1e871d6",
      "tree": "d84d3e7593d596870abea69ad8e1e2f784c82fd2",
      "parents": [
        "83c3b824506ecbe2e46f39e25c15eb8e25438d35"
      ],
      "author": {
        "name": "Burak Karahan",
        "email": "burak.karahan@mail.ru",
        "time": "Thu Oct 22 00:10:12 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 22 00:10:12 2026"
      },
      "message": "[material_ui] Port flutter/flutter #186777 MaterialColor test (#12858)\n\nThis PR ports the Material-specific test from [flutter/flutter#186777](https://github.com/flutter/flutter/pull/186777) to `material_ui`.\r\n\r\nThe `MaterialColor swatch comparison` test verifies equality for separate swatch maps containing the same standard `Color` values.\r\n\r\nThis is a test-only port, so no package version or changelog entry is needed.\r\n\r\nPart of [flutter/flutter#188444](https://github.com/flutter/flutter/issues/188444).\r\n\r\nThe PR that removes the test in the framework is https://github.com/flutter/flutter/pull/192716"
    },
    {
      "commit": "83c3b824506ecbe2e46f39e25c15eb8e25438d35",
      "tree": "75221b97e9eddec0c9885e6da6ded7e4d5a99702",
      "parents": [
        "1e207065e4bb3fdfa6cd3dd8040fc96f2b8ad1d1"
      ],
      "author": {
        "name": "Ricardo Dalarme",
        "email": "ricardodalarme@outlook.com",
        "time": "Wed Oct 21 22:41:44 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 21 22:41:44 2026"
      },
      "message": "[rfw] Migrate to material_ui (#12811)\n\nMigrates `rfw` to use `package:material_ui` and updates minimum supported SDK version to Flutter 3.44/Dart 3.12.\n\nPart of: https://github.com/flutter/flutter/issues/191322\n\n## Pre-Review Checklist"
    },
    {
      "commit": "1e207065e4bb3fdfa6cd3dd8040fc96f2b8ad1d1",
      "tree": "bef74914d175fb87b12aff81dc35c9d44fd5184c",
      "parents": [
        "f9624a51a9033485344f1360c44f748bca612c5d"
      ],
      "author": {
        "name": "Ahmed Mohamed Sameh",
        "email": "ahmedsameha1@gmail.com",
        "time": "Wed Oct 21 22:06:24 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 21 22:06:24 2026"
      },
      "message": "[cupertino_ui] Fix the installing command of the cupertino_ui package (#13141)\n\nShould fix https://github.com/flutter/flutter/issues/193843#issuecomment-6010069652."
    },
    {
      "commit": "f9624a51a9033485344f1360c44f748bca612c5d",
      "tree": "2d33b2b669f1499bcddb89668ab321e32582eabc",
      "parents": [
        "2ef3d183983b75d955913dc22f65ab2b3663b880"
      ],
      "author": {
        "name": "Harry Terkelsen",
        "email": "1961493+harryterkelsen@users.noreply.github.com",
        "time": "Wed Oct 21 21:36:20 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 21 21:36:20 2026"
      },
      "message": "[cupertino_ui] Unskip web tests that pass on CanvasKit and Skwasm: date_picker_test, spell_check_suggestions_toolbar_test (#13367)\n\nRemoves web skips from two `cupertino_ui` tests that now pass on the web under both CanvasKit (dart2js) and Skwasm (dart2wasm), so web regressions in these tests are no longer hidden:\n\n- `date_picker_test.dart`: the `getColumnWidth` unicode spaces calculation test was skipped with `isBrowser` (flutter/flutter#39998); it now passes on web.\n- `spell_check_suggestions_toolbar_test.dart`: the \"more than three suggestions throws an error\" test was skipped with `kIsWeb`; the assertion is thrown correctly on web. The now-unused `package:flutter/foundation.dart` import is removed.\n\nVerified locally with `flutter test --platform chrome` and `flutter test --platform chrome --wasm` for both files (all tests pass). Neither unskipped test uses golden files.\n\nRelated: https://github.com/flutter/flutter/issues/39998\n\nThis is a test-only change, so no version bump or CHANGELOG entry is needed.\n\n## Pre-Review Checklist\n\n**Note**: The Flutter team is currently trialing the use of [Gemini Code Assist for GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code). Comments from the `gemini-code-assist` bot should not be taken as authoritative feedback from the Flutter team. If you find its comments useful you can update your code accordingly, but if you are unsure or disagree with the feedback, please feel free to wait for a Flutter team member\u0027s review for guidance on which automated comments should be addressed.\n\n[^1]: Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling."
    },
    {
      "commit": "2ef3d183983b75d955913dc22f65ab2b3663b880",
      "tree": "32d8ae1ef606578a5666a2fe63027a51c6776f01",
      "parents": [
        "18f9c64fadb80b416f1d26293507c0ec87de087f"
      ],
      "author": {
        "name": "stuartmorgan",
        "email": "stuart.morgan@gmail.com",
        "time": "Wed Oct 21 21:05:37 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 21 21:05:37 2026"
      },
      "message": "[video_player] Convert player classes to Swift (#13197)\n\nConverts `VideoPlayer` and `TextureBasedVideoPlayer` to Swift. Also converts `AVAssetTrackUtils` since it simplifies calling from Swift, and that\u0027s a very simple conversion, as well as the `AV*` class wrappers, in order to replace deprecated methods with newer, Swift-friendlier alternatives. As part of the conversion, adopts Swift Pigeon for the instance-level APIs, so that all of the Pigeon generation in Swift-based (and combines the Pigeon definition files now that they can share a single config). Also adopts Pigeon\u0027s new `async` support to make handling async code simpler, so does require some test changes for the API surface change.\r\n\r\nIntentionally left to later PRs, to limit scope:\r\n- The remaining utility files in the `video_player_avfoundation_objc` subtarget (although these should be relatively simple)\r\n- The code in `video_player_avfoundation_ios` and `video_player_avfoundation_macos`\r\n- Switching the manual event channel code in FVPEventBridge to Pigeon\u0027s Swift event channel support\r\n\r\nAs part of the conversion, the minimum Flutter version has been changed to 3.47, which allows dropping versions of iOS and macOS that are no longer supported in 3.47, and thus avoiding the need to convert legacy codepaths that only existing for those no-longer-supported versions.\r\n\r\nUpdates CI\u0027s iOS version to target for deprecation checks to iOS 15, rather than 14, to allow using things that require iOS 15 without failing that check (which overrides the deployment version, but is intended to *raise* it, not lower it).\r\n\r\nAlso replaces a number of methods that are deprecated in iOS 16, but for which the replacements were added in iOS 15.\r\n\r\nPart of https://github.com/flutter/flutter/issues/119105\r\n\r\n## Pre-Review Checklist\r\n\r\n[^1]: Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling."
    },
    {
      "commit": "18f9c64fadb80b416f1d26293507c0ec87de087f",
      "tree": "1535a3cc1436fe4a09ee2b9ac10ff71f91201751",
      "parents": [
        "8e058b4619d48110cda64ca4fc8b3174e57769d1"
      ],
      "author": {
        "name": "llfbandit",
        "email": "llfbandit@gmail.com",
        "time": "Wed Oct 21 20:36:39 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 21 20:36:39 2026"
      },
      "message": "[camera_windows] Fall back to a physical stream for cameras that reject preferred-stream selectors (#12748)\n\nFixes [#140014](https://github.com/flutter/flutter/issues/140014)\r\n\r\n## Pre-Review Checklist\r\n\r\n**Note**: The Flutter team is currently trialing the use of [Gemini Code Assist for GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code). Comments from the `gemini-code-assist` bot should not be taken as authoritative feedback from the Flutter team. If you find its comments useful you can update your code accordingly, but if you are unsure or disagree with the feedback, please feel free to wait for a Flutter team member\u0027s review for guidance on which automated comments should be addressed.\r\n\r\n[^1]: Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling."
    },
    {
      "commit": "8e058b4619d48110cda64ca4fc8b3174e57769d1",
      "tree": "a479bc6a679557ce0e3bbf70fb7c1e8ffc80cc2a",
      "parents": [
        "66acaa8b66514f01324e6b91c78322078a12619d"
      ],
      "author": {
        "name": "Ben Konyi",
        "email": "bkonyi@google.com",
        "time": "Wed Oct 21 20:22:13 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 21 20:22:13 2026"
      },
      "message": "[google_sign_in_ios, video_player] Specify types for pattern variable declarations (#13362)\n\nAdds explicit type annotations to pattern-declared local variables where the matched value\u0027s type is not syntactically obvious to satisfy `specify_nonobvious_local_variable_types` (blocking https://dart-review.googlesource.com/c/sdk/+/548220).\n\n## Pre-Review Checklist"
    },
    {
      "commit": "66acaa8b66514f01324e6b91c78322078a12619d",
      "tree": "e096887c1d2c9dc09b6c31df0546dd6c6d2455ec",
      "parents": [
        "4a08a5452e382d7afb66aebf94c47c8d51ce831d"
      ],
      "author": {
        "name": "Zubascu Ionut",
        "email": "ionutzubascu@yahoo.com",
        "time": "Wed Oct 21 20:15:08 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 21 20:15:08 2026"
      },
      "message": "[google_maps_flutter_web] Issue 64073 implement my location (#12186)\n\nImplement my location button, add blue dot location\r\n\r\nFixes https://github.com/flutter/flutter/issues/64073\r\n\r\n## Pre-Review Checklist\r\n\r\n**Note**: The Flutter team is currently trialing the use of [Gemini Code Assist for GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code). Comments from the `gemini-code-assist` bot should not be taken as authoritative feedback from the Flutter team. If you find its comments useful you can update your code accordingly, but if you are unsure or disagree with the feedback, please feel free to wait for a Flutter team member\u0027s review for guidance on which automated comments should be addressed.\r\n\r\n[^1]: Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling."
    },
    {
      "commit": "4a08a5452e382d7afb66aebf94c47c8d51ce831d",
      "tree": "9268f5379f2c21b56a2b80bed96e93442d2e2abf",
      "parents": [
        "1383427519099a5aae10ca2e1c5c232a6fd88901"
      ],
      "author": {
        "name": "Harry Terkelsen",
        "email": "1961493+harryterkelsen@users.noreply.github.com",
        "time": "Wed Oct 21 20:10:03 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 21 20:10:03 2026"
      },
      "message": "[material_ui] Unskip web tests that pass on CanvasKit and Skwasm: app_bar_theme_test, input_decorator_test, paginated_data_table_test, spell_check_suggestions_toolbar_test (#13352)\n\nRemoves web skips (`skip: kIsWeb` / `skip: isBrowser`) from tests in `packages/material_ui/test` that now pass on Chrome with both CI web renderers, CanvasKit (dart2js) and Skwasm (dart2wasm). Leaving them skipped hides web regressions.\n\n- `app_bar_theme_test.dart`: the `AppBarThemeData implements debugFillProperties` test. Doubles now print the same on web as on other platforms. Also removes the comment that explained the old skip.\n- `input_decorator_test.dart`: 8 tests: the `OutlineInputBorder` paint/path tests (skipped for #55317) and the `textWidthBasis` clip tests (skipped for #44020).\n- `paginated_data_table_test.dart`: the large text test (skipped for #43433). It no longer times out.\n- `spell_check_suggestions_toolbar_test.dart`: `more than three suggestions throws an error`. Also removes the `package:flutter/foundation.dart` import, which is unused now.\n\nNone of the unskipped tests use goldens.\n\nFixes https://github.com/flutter/flutter/issues/43433\nFixes https://github.com/flutter/flutter/issues/44020\nFixes https://github.com/flutter/flutter/issues/55317\n\nRelated issues:\n- https://github.com/flutter/flutter/issues/87364\n\nThis PR changes tests only, so it is exempt from version and CHANGELOG updates.\n\n## Pre-Review Checklist\n\n**Note**: The Flutter team is currently trialing the use of [Gemini Code Assist for GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code). Comments from the `gemini-code-assist` bot should not be taken as authoritative feedback from the Flutter team. If you find its comments useful you can update your code accordingly, but if you are unsure or disagree with the feedback, please feel free to wait for a Flutter team member\u0027s review for guidance on which automated comments should be addressed.\n\n[^1]: Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling."
    },
    {
      "commit": "1383427519099a5aae10ca2e1c5c232a6fd88901",
      "tree": "ff1f8ef6a82b104ec6ce10774dba486009e85324",
      "parents": [
        "82c9ad5e618b6142e33dd1c583ee65f51deaa888"
      ],
      "author": {
        "name": "Yevhen Beshkarov",
        "email": "ybeshkarov@icloud.com",
        "time": "Wed Oct 21 01:13:26 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 21 01:13:26 2026"
      },
      "message": "[shared_preferences] Keep Kotlin classes used through JNI in Android release builds (#13311)\n\n`shared_preferences_android` 2.5.0 calls its Kotlin code through JNI. The generated Dart bindings and `package:jni` look up some Kotlin standard library classes by name, but nothing keeps them, so R8 renames them in release builds. From `mapping.txt` of a release build with 2.5.0:\n\n```\nkotlin.Result -\u003e l1.d:\nkotlin.Result$Failure -\u003e l1.c:\nkotlin.Unit -\u003e l1.g:\nkotlin.coroutines.Continuation -\u003e o1.d:\nkotlin.coroutines.intrinsics.CoroutineSingletons -\u003e p1.a:\n```\n\nThe generated classes are kept by `@Keep`, but R8 rewrites their method descriptors with the renamed `Continuation`. So every call fails with a `NoSuchMethodError`, for example:\n\n```\nNoSuchMethodError: no non-static method \"Lio/flutter/plugins/sharedpreferences/SharedPreferencesAsyncApiRegistrar;.getAll(Ljava/util/List;Lio/flutter/plugins/sharedpreferences/SharedPreferencesPigeonOptions;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;\"\n```\n\nand `SharedPreferences.getInstance()`, `SharedPreferencesAsync` and `SharedPreferencesWithCache.create()` all throw. Debug and profile builds work.\n\nThis PR adds `android/consumer-rules.pro` with the six keep rules from Pigeon\u0027s native interop guide (\"Step 5: Android Release Build Configuration (JNI)\") and lists it in `consumerProguardFiles`, the same way `packages/pigeon/platform_tests/test_plugin` does. R8 then applies the rules to every app that uses the plugin. The six classes are the ones looked up by name: `kotlin.coroutines.Continuation` in the descriptors of the `suspend` methods and `kotlin.Unit` in `messages*.g.dart`, plus `kotlin.Unit`, `kotlin.Result`, `kotlin.Result$Failure`, `kotlin.coroutines.Continuation`, `CoroutineSingletons` and `IntrinsicsKt` in `lib/src/kotlin.dart` of `jni` 1.1.0. The other Kotlin types in the bindings (`DefaultConstructorMarker`, `EnumEntries`) only appear in synthetic constructors and `getEntries`, which the plugin never calls. A TODO in `consumer-rules.pro` and `build.gradle.kts` points to dart-lang/native#3732, so the rules can be removed once `jni` ships them.\n\nFixes https://github.com/flutter/flutter/issues/194649\n\nHow I verified it: a fresh `flutter create --platforms android` app with `shared_preferences: ^2.5.5` that calls `SharedPreferencesWithCache.create()` in `main()` and counts launches. I built it with `flutter build apk --release --target-platform android-arm64` (Flutter 3.44.2, AGP 9.0.1, Gradle 9.1.0, R8 on by default) and ran it on an API 37 arm64 emulator.\n\n- With `shared_preferences_android` 2.5.0 from pub.dev, the app stays on the splash screen and logcat shows the `NoSuchMethodError` above from `SharedPreferencesWithCache.create`.\n- With a `dependency_overrides` path to this branch, `configuration.txt` of the build lists the rules from the plugin\u0027s consumer file, `mapping.txt` maps each class to itself (for example `kotlin.coroutines.Continuation -\u003e kotlin.coroutines.Continuation:`), and the app starts. It logs `launches\u003d1`, and `launches\u003d2` after a restart.\n- A second entry point that round-trips every value type, `getKeys`, `getAll`, `remove` and `clear` through `SharedPreferencesAsync` and the legacy `SharedPreferences` API fails for both APIs with 2.5.0 and passes for both with this branch.\n\nI also ran `flutter test` in the package (39 tests pass) and `validate --check-for-missing-changes`, `analyze`, `format`, `dart-test`, `publish-check` and `license-check` of the repo tooling for the package. None of them reported an issue.\n\nTest exemption: I\u0027d like to request one. The change is build configuration that only affects R8 in an app\u0027s release build, and as far as I can tell no CI target runs a release build of a plugin. `drive-examples`, the native integration tests and Firebase Test Lab use debug builds, and `android_build_all_packages` builds the all_packages app in release but doesn\u0027t run it. If there is a place where a release-mode test would fit, I\u0027m happy to add one.\n\n## Pre-Review Checklist\n\n**Note**: The Flutter team is currently trialing the use of [Gemini Code Assist for GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code). Comments from the `gemini-code-assist` bot should not be taken as authoritative feedback from the Flutter team. If you find its comments useful you can update your code accordingly, but if you are unsure or disagree with the feedback, please feel free to wait for a Flutter team member\u0027s review for guidance on which automated comments should be addressed.\n\n[^1]: Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling."
    },
    {
      "commit": "82c9ad5e618b6142e33dd1c583ee65f51deaa888",
      "tree": "9d7d5db400fbe7f8d53edd04686b8f76151d1df7",
      "parents": [
        "5b1f9751446ff727acab8a2c195ce40b08c857a4"
      ],
      "author": {
        "name": "Jenn Magder",
        "email": "magder@google.com",
        "time": "Tue Oct 20 21:57:46 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 21:57:46 2026"
      },
      "message": "[webview_flutter_wkwebview] Roll back iOS and macOS versions (#13354)\n\nRevert part of #13294 that updated the iOS and macOS versions. Re-add the availability checks. Still fix the `SecTrustGetCertificateAtIndex` deprecation issue.\r\nDue to Swift Package Manager issue https://github.com/flutter/flutter/pull/194864, this broke plugins with dependencies targeting lower versions.\r\n\r\nUnblocks https://github.com/flutter/flutter/issues/194871\r\n\r\n## Pre-Review Checklist\r\n\r\n**Note**: The Flutter team is currently trialing the use of [Gemini Code Assist for GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code). Comments from the `gemini-code-assist` bot should not be taken as authoritative feedback from the Flutter team. If you find its comments useful you can update your code accordingly, but if you are unsure or disagree with the feedback, please feel free to wait for a Flutter team member\u0027s review for guidance on which automated comments should be addressed.\r\n\r\n[^1]: Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling."
    },
    {
      "commit": "5b1f9751446ff727acab8a2c195ce40b08c857a4",
      "tree": "dc3cb80ab147bb1ee4eca3a4ebf334dfd9873ca6",
      "parents": [
        "301ab8641742cc53084b3820d2d06dc742a15153"
      ],
      "author": {
        "name": "hellohuanlin",
        "email": "41930132+hellohuanlin@users.noreply.github.com",
        "time": "Tue Oct 20 21:20:59 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 21:20:59 2026"
      },
      "message": "[camera]fix resolution test failure due to hardware restriction (#13356)\n\nThis fixes a failure when running on iPhone 17. \r\n\r\nThe reason is: \r\n\r\n```\r\ncase .low:\r\n  if videoCaptureSession.canSetSessionPreset(.cif352x288) { ... break }\r\n  fallthrough\r\ndefault:\r\n  if videoCaptureSession.canSetSessionPreset(.low) {\r\n    videoCaptureSession.sessionPreset \u003d .low   // size is up to the device\r\n```\r\n\r\nOn iPhone 17, `.cif352x288` is not supported, so it falls back to `.low`, which is 480p (480x640). This actually fails even before iOS 27, but we didn\u0027t catch it because it requires hardware device. \r\n\r\nTo prevent similar failures in the future, we shouldn\u0027t assume hardware capabilities (e.g. photo resolution). So I updated the test to verify photos in higher settings have relatively higher resolutions. \r\n\r\nNote that I did not change Android - I think it was as fragile as iOS and could break in the future. However, unlike iOS, the Android tests do run on real devices in our CI, so we should be able to catch any failure if that happens, so I wouldn\u0027t be concerned about it. \r\n\r\n*List which issues are fixed by this PR. You must list at least one issue.*\r\nFixes https://github.com/flutter/flutter/issues/191202\r\n\r\n## Pre-Review Checklist\r\n\r\n- [ x I updated/added any relevant documentation (doc comments with `///`).\r\n\r\n**Note**: The Flutter team is currently trialing the use of [Gemini Code Assist for GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code). Comments from the `gemini-code-assist` bot should not be taken as authoritative feedback from the Flutter team. If you find its comments useful you can update your code accordingly, but if you are unsure or disagree with the feedback, please feel free to wait for a Flutter team member\u0027s review for guidance on which automated comments should be addressed.\r\n\r\n[^1]: Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling."
    },
    {
      "commit": "301ab8641742cc53084b3820d2d06dc742a15153",
      "tree": "ace46f73c7adcf8371ab1eb330b845d4bb3c1508",
      "parents": [
        "759473e08b8ba4766bf1d6356761cf9e2a900f88"
      ],
      "author": {
        "name": "Mouad Debbar",
        "email": "mdebbar@google.com",
        "time": "Tue Oct 20 18:51:54 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 18:51:54 2026"
      },
      "message": "[google_maps_flutter_web] Fail fast and deduplicate map setup in integration tests (#13092)\n\nSplit out from https://github.com/flutter/packages/pull/13059.\n\nIntegration tests have no default timeout, so when a map fails to initialize on CI, the test hangs until `flutter drive` gives up after 20 minutes with an opaque `DriverError` and no browser state in the log. Also, tests that construct multiple `GoogleMapController` instances reused `mapId \u003d 33930`, which collides in `platformViewRegistry.registerViewFactory` so `controller.widget` renders the first test\u0027s `\u003cdiv\u003e`.\n\n- Add `pumpMap` and `pumpPlatformMap` helpers that bound map creation to 30s and dump the Maps SDK / DOM `\u003cdiv\u003e` state on timeout.\n- Add `getNextMapId()` so each test controller registers a unique platform view factory.\n- Set a 2-minute per-test timeout in the real-map suites and a 5-minute driver timeout in `test_driver/integration_test.dart`.\n- Fix `marker_clustering_test` waiting for `clusters.isNotEmpty` instead of `clusters.isEmpty` after removing all clusters.\n\nPart of https://github.com/flutter/flutter/issues/193452"
    },
    {
      "commit": "759473e08b8ba4766bf1d6356761cf9e2a900f88",
      "tree": "f27ded7530bc0a2fadfa5c9d7ceb6b76f27db3cc",
      "parents": [
        "848216333d95070fa01004b5b8323502705bebb0"
      ],
      "author": {
        "name": "Jenn Magder",
        "email": "magder@google.com",
        "time": "Tue Oct 20 18:15:47 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 18:15:47 2026"
      },
      "message": "[camera_avfoundation] Fix Swift analyzer issues in tests (#13340)\n\nI don\u0027t know why these analyzer issues are being reported one-at-a-time in CI on https://github.com/flutter/packages/pull/13284 instead of all at once, but https://github.com/flutter/packages/pull/13332 was only one of a few analyzer issues:\r\n```\r\ndarwin/Tests/CameraSessionPresetsTests.swift:28:9: error: variable \u0027currentFormat\u0027 was never mutated; consider changing to \u0027let\u0027 constant\r\n    var currentFormat: CaptureDeviceFormat \u003d captureFormatMock\r\n    ~~~ ^\r\n    let\r\ndarwin/Tests/CameraInitRaceConditionsTests.swift:62:24: warning: immutable value \u0027_captureSessionQueue\u0027 was never used; consider replacing with \u0027_\u0027 or removing it [#NoUsage]\r\n60 | \r\n61 |   func testFlutterChannelInitializedWhenStartingImageStream() {\r\n62 |     let (cameraPlugin, _captureSessionQueue) \u003d createCameraPlugin()\r\ndarwin/Tests/AvailableCamerasTests.swift:49:11: warning: variable \u0027requiredTypes\u0027 was never mutated; consider changing to \u0027let\u0027 constant [#VariableNeverMutated]\r\n 47 |       telephotoCamera.position \u003d .back\r\n 48 | \r\n 49 |       var requiredTypes: [AVCaptureDevice.DeviceType] \u003d [\r\ndarwin/Tests/AvailableCamerasTests.swift:52:11: warning: variable \u0027cameras\u0027 was never mutated; consider changing to \u0027let\u0027 constant [#VariableNeverMutated]\r\n 50 |         .builtInWideAngleCamera, .builtInTelephotoCamera, .builtInUltraWideCamera,\r\n 51 |       ]\r\n 52 |       var cameras \u003d [wideAngleCamera, frontFacingCamera, telephotoCamera, ultraWideCamera]\r\ndarwin/Tests/AvailableCamerasTests.swift:86:11: warning: variable \u0027requiredTypes\u0027 was never mutated; consider changing to \u0027let\u0027 constant [#VariableNeverMutated]\r\n 84 |       frontFacingCamera.position \u003d .front\r\n 85 | \r\n 86 |       var requiredTypes: [AVCaptureDevice.DeviceType] \u003d [\r\ndarwin/Tests/AvailableCamerasTests.swift:118:11: warning: variable \u0027requiredTypes\u0027 was never mutated; consider changing to \u0027let\u0027 constant [#VariableNeverMutated]\r\n116 |       unspecifiedCamera.position \u003d .unspecified\r\n117 | \r\n118 |       var requiredTypes: [AVCaptureDevice.DeviceType] \u003d [\r\ndarwin/Tests/CameraOrientationTests.swift:120:14: warning: weak variable \u0027weakDevice\u0027 was never mutated; consider changing to \u0027let\u0027 constant [#VariableNeverMutated::WeakMutability]\r\n118 |     let captureSessionQueue \u003d DispatchQueue(label: \"capture_session_queue\")\r\n119 |     weak var weakPlugin: CameraPlugin?\r\n120 |     weak var weakDevice \u003d mockDevice\r\ndarwin/Tests/CameraOrientationTests.swift:157:14: warning: weak variable \u0027weakEventAPI\u0027 was never mutated; consider changing to \u0027let\u0027 constant [#VariableNeverMutated::WeakMutability]\r\n155 |     }\r\n156 | \r\n157 |     weak var weakEventAPI \u003d mockEventAPI\r\n\r\n```\r\n\r\nThis wasn\u0027t showing up in CI due to https://github.com/flutter/flutter/issues/194517.\r\n\r\n## Pre-Review Checklist\r\n\r\n**Note**: The Flutter team is currently trialing the use of [Gemini Code Assist for GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code). Comments from the `gemini-code-assist` bot should not be taken as authoritative feedback from the Flutter team. If you find its comments useful you can update your code accordingly, but if you are unsure or disagree with the feedback, please feel free to wait for a Flutter team member\u0027s review for guidance on which automated comments should be addressed.\r\n\r\n[^1]: Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling."
    },
    {
      "commit": "848216333d95070fa01004b5b8323502705bebb0",
      "tree": "874735df04b88a19b3ba0ad7af4702e3a01273fb",
      "parents": [
        "497b0b1215dfe70720b4b838a17415433f2d79b4"
      ],
      "author": {
        "name": "Flutter GitHub Bot",
        "email": "fluttergithubbot@gmail.com",
        "time": "Tue Oct 20 17:59:43 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 17:59:43 2026"
      },
      "message": "Sync release-material_ui-1.8.0 to main (#13346)\n\nThis automated PR syncs the changes from the release branch release-material_ui-1.8.0 back to the main branch."
    },
    {
      "commit": "497b0b1215dfe70720b4b838a17415433f2d79b4",
      "tree": "cbfe727d8397ada3c71e844ebc7fd56557693cc8",
      "parents": [
        "7e1d1c6e5af9abc8d4870ddeb8f216d75874eb86"
      ],
      "author": {
        "name": "Luca Venir",
        "email": "luca@venir.dev",
        "time": "Tue Oct 20 17:43:03 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 17:43:03 2026"
      },
      "message": "[material_ui] add a `barFocusNode` to `SearchAnchor.bar` (ref: flutter/flutter#186073) (#12863)\n\nPorts flutter/flutter#186073 to `material_ui`, as per flutter/flutter#188444. The old PR (and tagged as `Decoupling: Port to flutter/packages`) was reviewed and approved by @QuncCccccc and @justinmc.\r\n\r\n---\r\n\r\n_quick recap_.\r\n\r\nFixes flutter/flutter#177454.\r\n\r\nAdds a `barFocusNode` parameter to `SearchAnchor.bar` (and its internal `_SearchAnchorWithSearchBar` implementation), allowing external code to control the focus of the underlying `SearchBar`.\r\n\r\n---\r\n\r\n## Pre-Review Checklist"
    },
    {
      "commit": "7e1d1c6e5af9abc8d4870ddeb8f216d75874eb86",
      "tree": "2f58972b72887275d497248ecf0bb8f2dc72c943",
      "parents": [
        "5da18a30d16a29a88c6c4eea77f34a31f3c4db3c"
      ],
      "author": {
        "name": "LouiseHsu",
        "email": "louisehsu@google.com",
        "time": "Tue Oct 20 17:12:16 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 17:12:16 2026"
      },
      "message": "[in_app_purchase_storekit] Expose sk2Transaction on SK2PurchaseDetails (#13341)\n\nFixes https://github.com/flutter/flutter/issues/186488\nExposes the underlying `SK2Transaction` on `SK2PurchaseDetails` so callers can access fields like `originalId` and `quantity` from `purchaseStream` updates. Returns `null` when a purchase has not produced a transaction .\n## Pre-Review Checklist"
    },
    {
      "commit": "5da18a30d16a29a88c6c4eea77f34a31f3c4db3c",
      "tree": "25e51798c854a400f8697338ad7423488dea786f",
      "parents": [
        "100100e5470b9e04490ccd89d07c41433bcd7608"
      ],
      "author": {
        "name": "Flutter GitHub Bot",
        "email": "fluttergithubbot@gmail.com",
        "time": "Tue Oct 20 17:05:53 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 17:05:53 2026"
      },
      "message": "Sync release-cupertino_ui-1.1.4 to main (#13350)\n\nThis automated PR syncs the changes from the release branch release-cupertino_ui-1.1.4 back to the main branch."
    },
    {
      "commit": "100100e5470b9e04490ccd89d07c41433bcd7608",
      "tree": "2daa7ba60f5fd25c2249a00e7961c5427920e7f8",
      "parents": [
        "5e3747e8be2b6980ea8c05b445b836f25eec33b2"
      ],
      "author": {
        "name": "Mouad Debbar",
        "email": "mdebbar@google.com",
        "time": "Tue Oct 20 16:46:50 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 16:46:50 2026"
      },
      "message": "[google_maps_flutter_web] Don\u0027t hang `onMapCreated` when tiles fail to load (#13059)\n\nThe web plugin reported a map as ready (triggering `onMapCreated`) only on the first `tilesloaded` event. That event requires every visible tile to download, so a single stalled or failed tile request leaves `onMapCreated` pending forever. On CI, this hangs `projection_test`, `overlays_test`, and `marker_clustering_test` until `flutter drive` fails with an opaque `DriverError` after 20 minutes.\n\nExample CI failures:\n- https://ci.chromium.org/b/8669392206413648801\n- https://ci.chromium.org/b/8669672566864354113\n\n- Report the map as ready on the first `tilesloaded` or the first `idle` event once the map `\u003cdiv\u003e` is attached and has a non-zero size, when the projection and bounds are available.\n- Re-enable the tests skipped in https://github.com/flutter/packages/pull/13047.\n\nFixes https://github.com/flutter/flutter/issues/193452"
    },
    {
      "commit": "5e3747e8be2b6980ea8c05b445b836f25eec33b2",
      "tree": "00643e25ae3bbba0943a592f23a6396edad4c147",
      "parents": [
        "250879b67bf3335cc978f3e13c714de82b638c1c"
      ],
      "author": {
        "name": "Harry Terkelsen",
        "email": "1961493+harryterkelsen@users.noreply.github.com",
        "time": "Tue Oct 20 16:26:17 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 16:26:17 2026"
      },
      "message": "[material_ui] Unskip web tests that pass on CanvasKit and Skwasm: adaptive_text_selection_toolbar_test, material_button_test, outlined_button_test, text_button_test (#13335)\n\nRemoves web skips (`skip: isBrowser`) from tests in `packages/material_ui/test` that now pass on both CI web renderers (CanvasKit and Skwasm). Keeping these skips hides web regressions in these tests.\n\n- `adaptive_text_selection_toolbar_test.dart`: `Builds the right toolbar on each platform, including web, and shows buttonItems` was skipped for `Path.combine` not working with the (now removed) HTML renderer.\n- `material_button_test.dart`, `outlined_button_test.dart`, `text_button_test.dart`: the `meetsGuideline(textContrastGuideline)` accessibility tests now run on the web.\n\nEach file was run with `flutter test --platform chrome` (CanvasKit) and `flutter test --platform chrome --wasm` (Skwasm) and all tests passed. None of the unskipped tests use goldens. The diff is the skip removal plus the formatter rewrap that results from dropping the trailing `skip:` argument.\n\nPart of https://github.com/flutter/flutter/issues/44115\nRelated: https://github.com/flutter/flutter/issues/108382 (closed)\n\nTest-only change, so no version bump or CHANGELOG entry is needed.\n\n## Pre-Review Checklist\n\n**Note**: The Flutter team is currently trialing the use of [Gemini Code Assist for GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code). Comments from the `gemini-code-assist` bot should not be taken as authoritative feedback from the Flutter team. If you find its comments useful you can update your code accordingly, but if you are unsure or disagree with the feedback, please feel free to wait for a Flutter team member\u0027s review for guidance on which automated comments should be addressed.\n\n[^1]: Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling."
    },
    {
      "commit": "250879b67bf3335cc978f3e13c714de82b638c1c",
      "tree": "55c3359078ed1f87f4486694cb6b02619337d4fb",
      "parents": [
        "5e67d847c74db2bca25f3622aa82464444bbb9b5"
      ],
      "author": {
        "name": "Flutter GitHub Bot",
        "email": "fluttergithubbot@gmail.com",
        "time": "Tue Oct 20 16:15:23 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 16:15:23 2026"
      },
      "message": "Sync release-go_router-18.1.1 to main (#13347)\n\nThis automated PR syncs the changes from the release branch release-go_router-18.1.1 back to the main branch."
    },
    {
      "commit": "5e67d847c74db2bca25f3622aa82464444bbb9b5",
      "tree": "4d5cf88e3807288eb74ca8aa7bd417856092a119",
      "parents": [
        "618afba3141906e80f6cae71abb9be16826f4bde"
      ],
      "author": {
        "name": "toyaji",
        "email": "happytoday83@naver.com",
        "time": "Tue Oct 20 15:49:59 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 15:49:59 2026"
      },
      "message": "[camera] Add zero-shutter-lag support to camera_android_camerax and camera_avfoundation (#13199)\n\nPlatform implementation portion of #12374, split out per the [federated plugin process](https://github.com/flutter/flutter/blob/master/docs/ecosystem/contributing/README.md#changing-federated-plugins) now that `camera_platform_interface` 2.15.0 is published (#12996). No changes from what was reviewed there, other than rebasing onto `main` and resolving version/CHANGELOG conflicts.\n\nImplements `isZeroShutterLagSupported` / `setZeroShutterLagEnabled` in:\n\n- `camera_android_camerax` (0.7.6)\n- `camera_avfoundation` (0.11.1, iOS 17+)\n\nPart of https://github.com/flutter/flutter/issues/190598\n\n## Pre-Review Checklist\n\n[^1]: Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling."
    },
    {
      "commit": "618afba3141906e80f6cae71abb9be16826f4bde",
      "tree": "f54eac3e8720b16ae0b35263c7ceead6e9680471",
      "parents": [
        "ef6ad7bdb576e50156beabaf2711c9b7463c1299"
      ],
      "author": {
        "name": "Tarrin Neal",
        "email": "tarrinneal@gmail.com",
        "time": "Tue Oct 20 01:15:22 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 01:15:22 2026"
      },
      "message": "[pigeon] add version checking for objective_c and jni dependencies (#13283)\n\nTo avoid surprising build errors"
    },
    {
      "commit": "ef6ad7bdb576e50156beabaf2711c9b7463c1299",
      "tree": "30f9a4568664a1c9fee8f4d9b1b1f864b51e2311",
      "parents": [
        "5d26c9bd4e37f298976ce4f434178e235fe42a3b"
      ],
      "author": {
        "name": "Kevin Moore",
        "email": "kevmoo@users.noreply.github.com",
        "time": "Mon Oct 19 23:11:20 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 19 23:11:20 2026"
      },
      "message": "[go_router_builder] Adopt shared analyzer helpers from source_helper: ^1.4.0 (#13337)\n\nFixes https://github.com/flutter/flutter/issues/194817\n\nAdopts shared analyzer helpers published in [`package:source_helper` `1.4.0`](https://github.com/google/source_helper.dart/pull/78) to replace local copies in `go_router_builder`:\n\n- Bumps `source_helper` constraint to `^1.4.0` and `go_router_builder` to `4.5.2`.\n- Replaces local `ExecutableElement.qualifiedName`, `withoutNullability` / `_isNullableType`, and `isEnumConstant` filtering across `type_helpers.dart`, `route_config.dart`, and `go_router_generator.dart` with `ExecutableElement.qualifiedName`, `DartType.toStringNonNullable()`, and `DartType.enumConstants` from `package:source_helper/source_helper.dart`.\n\nPure internal deduplication; generated code is unchanged (`tool/run_tests.dart` and `example/test/ensure_build_test.dart` pass with zero diffs).\n\n## Pre-Review Checklist\n\n[^1]: Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling."
    },
    {
      "commit": "5d26c9bd4e37f298976ce4f434178e235fe42a3b",
      "tree": "6cf2392f0f5a673b75887f879473debd4ea4ccec",
      "parents": [
        "efedf51e79945da5417458568a5de302685136c6"
      ],
      "author": {
        "name": "Tarrin Neal",
        "email": "tarrinneal@gmail.com",
        "time": "Mon Oct 19 22:50:43 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 19 22:50:43 2026"
      },
      "message": "[pigeon] fix instance manager test flake (#13303)\n\nhopefully this solves the problem with this test."
    },
    {
      "commit": "efedf51e79945da5417458568a5de302685136c6",
      "tree": "2b1172419b347fb5743721a0e6636f819b706435",
      "parents": [
        "f2c6798b45a7ae936feb6798fe45cb51f832dc18"
      ],
      "author": {
        "name": "Michael Allen",
        "email": "mike@tecarta.com",
        "time": "Mon Oct 19 21:38:28 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 19 21:38:28 2026"
      },
      "message": "[vector_graphics] Don\u0027t report a handled loading error as unhandled (#13315)\n\n`_VectorGraphicWidgetState._loadPicture` registers `result.whenComplete(...)` to clear `_pendingPictures`, and drops the future that `whenComplete` returns. That future completes with `result`\u0027s error and nothing listens to it, so every asynchronous loading failure — an asset whose fetch fails on web when the network drops, for instance — is reported to the zone as unhandled, even though `_loadAssetBytes` catches the same error and `errorBuilder` shows it. Crash reporters record these as fatal.\n\nThe dropped future is now `.ignore()`d. `result` itself is unchanged, so `_loadAssetBytes` still sees the error and shows `errorBuilder` as before.\n\nThe existing `can handle errors from bytes loader` test didn\u0027t catch this because its loader throws synchronously, before `whenComplete` is reached. The new test uses a loader whose `loadBytes` is `async`; it fails without the fix with the `UnimplementedError` reported by the test framework.\n\nFixes https://github.com/flutter/flutter/issues/194705.\n\n## Pre-Review Checklist\n\n[^1]: Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling."
    },
    {
      "commit": "f2c6798b45a7ae936feb6798fe45cb51f832dc18",
      "tree": "6ed6df0c4cc39d76b8be4aae6bc30373e54f4e47",
      "parents": [
        "b7efc3697862c46b34fd2685987daea0e4113543"
      ],
      "author": {
        "name": "Jenn Magder",
        "email": "magder@google.com",
        "time": "Mon Oct 19 21:17:15 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 19 21:17:15 2026"
      },
      "message": "[file_selector_macos] Drop deprecated allowedFileTypes code path (#13302)\n\nUpdate to Flutter 3.47 which also picks up the macOS 12 minimum. Remove old availability checks.\r\nDelete the `forceLegacyTypes` codepath.\r\n\r\nThis wasn\u0027t showing up in CI due to https://github.com/flutter/flutter/issues/194517.\r\n\r\nFixes https://github.com/flutter/flutter/issues/194573\r\n\r\n## Pre-Review Checklist\r\n\r\n**Note**: The Flutter team is currently trialing the use of [Gemini Code Assist for GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code). Comments from the `gemini-code-assist` bot should not be taken as authoritative feedback from the Flutter team. If you find its comments useful you can update your code accordingly, but if you are unsure or disagree with the feedback, please feel free to wait for a Flutter team member\u0027s review for guidance on which automated comments should be addressed.\r\n\r\n[^1]: Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling."
    },
    {
      "commit": "b7efc3697862c46b34fd2685987daea0e4113543",
      "tree": "2e0e2b9abbef995232cbf80d038308a24967f8d2",
      "parents": [
        "dbb784d6f02af51ec3d780426adcd4172f9a05a1"
      ],
      "author": {
        "name": "Matt Boetger",
        "email": "matt.boetger@gmail.com",
        "time": "Mon Oct 19 21:13:00 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 19 21:13:00 2026"
      },
      "message": "[shared_preferences_android] Update androidx.datastore:datastore to 1.2.1 (#13334)\n\nUpdate androidx.datastore deps for 16kb page size\r\n\r\nFixes: https://github.com/flutter/flutter/issues/194699\r\n\r\n## Pre-Review Checklist"
    }
  ],
  "next": "dbb784d6f02af51ec3d780426adcd4172f9a05a1"
}
