)]}'
{
  "log": [
    {
      "commit": "b2ef63459e3c2f337decb07e2647425f649c9c20",
      "tree": "8eba6e5faf4d4e2bad3160e7c00ed68dc6680770",
      "parents": [
        "8b8e4353632e39776a36b09b1348928ca54bfe98"
      ],
      "author": {
        "name": "Dmitry Grand (dmgr)",
        "email": "dmgr@google.com",
        "time": "Tue Jul 14 18:29:49 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 14 18:29:49 2026"
      },
      "message": "ordered presubmit builds processing (#5104)\n\nfix: https://github.com/flutter/flutter/issues/189029"
    },
    {
      "commit": "8b8e4353632e39776a36b09b1348928ca54bfe98",
      "tree": "7cb256f57e76e603e31998f9e4e0270f6fbfb8af",
      "parents": [
        "18bfc77abd4f27de76b961f5f489b555cefaba44"
      ],
      "author": {
        "name": "John \"codefu\" McDole",
        "email": "codefu@google.com",
        "time": "Fri Jul 10 21:28:32 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 10 21:28:32 2026"
      },
      "message": "refactor(presubmit_guard): update API used by wait_for_tests to support more Cocoon scheduled tests. (#5102)\n\nEnhances `_getCiStagingFallback` in the presubmit guard handler to\nhandle task rerun sequences chronologically and filter bringup tasks.\n\n\u003e [!NOTE]\n\u003e We should probably rename this function since it now blends all tests.\nIts really just \"give me the tests... please\".\n\n| Repository | Unified Status | Presubmit | GitHub Merge Queue |\nPost-Submit |\n| :--- | :--- | :---: | :--- | :--- |\n| **`flutter/flutter`** | Non-Unified | **Yes** | Engine Phase Only |\nEngine Phase + Tasks |\n| **`flutter/flutter`** | Unified | **Yes** | Engine Phase Only | Engine\nPhase + Tasks |\n| **`flutter/packages`** | Non-Unified | **No** | *No Merge Queue* |\nTasks Only |\n| **`flutter/packages`** | Unified | **Yes** | *No Merge Queue* | Tasks\nOnly |\n\n\u003e [!NOTE]\n\u003e * **`flutter/flutter`** always uses `ciStaging` (Engine Phase) in the\nMerge Queue and blends them with general tasks in Post-Submit.\n\u003e * **`flutter/packages`** does not have a Merge Queue. It only includes\nPresubmit tasks once unified, and transitions directly to general tasks\nin Post-Submit.\n\u003e * **`flutter/packages`** does not use wait_for_tests in presubmits, so\nenabling unified checkruns fixes this.."
    },
    {
      "commit": "18bfc77abd4f27de76b961f5f489b555cefaba44",
      "tree": "b1b0b373c0bdd5927a0cf6171e2385dd7e63c2a6",
      "parents": [
        "c82f779e201b2d22f43b531268cfbd2ce4fbd4ab"
      ],
      "author": {
        "name": "Dmitry Grand (dmgr)",
        "email": "dmgr@google.com",
        "time": "Thu Jul 09 22:00:50 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 09 22:00:50 2026"
      },
      "message": "Delete legacy flow for closeMqGuardAfterPresubmit \u003d\u003d false (#5101)\n\nDeleting legacy `closeMqGuardAfterPresubmit \u003d false` flow as it obsolete\r\n\r\n**Context:**\r\nWe have 2  different processing flows based on whether `processJobStatusUpdate` config variable is `true` or `false`:\r\n\r\n1. **Legacy**. if `closeMqGuardAfterPresubmit` flag is set to `false` then flow is the following: \r\n\r\n```mermaid\r\nsequenceDiagram\r\n    LUCI-\u003e\u003eCocoon: Build complete\u003cbr/\u003enotification\r\n    Cocoon-\u003e\u003eGithub: Update Check\r\n    Github-\u003e\u003eCocoon: Check complete\u003cbr/\u003enotification\r\n    Note over Cocoon: Check complete processing\r\n    Cocoon-\u003e\u003eGithub: If all success\u003cbr/\u003eunlock merge queue\r\n```\r\n\r\nFor **Check complete processing** `processJobStatusUpdate()` called with `PresubmitJobState` constructed from check using `PresubmitJobState.fromCheckRun()` \r\n\r\n2. **Current**.  if `closeMqGuardAfterPresubmit` flag is set to `true` or for **Unified Check Run** flow :\r\n\r\n```mermaid\r\nsequenceDiagram\r\n    LUCI-\u003e\u003eCocoon: Build complete\u003cbr/\u003enotification\r\n    Note over Cocoon: Build complete processing\r\n    Cocoon-\u003e\u003eGithub: Update Check\u003cbr/\u003eor Job in firestore\r\n    Cocoon-\u003e\u003eGithub: If all success\u003cbr/\u003eunlock merge queue\r\n    Github-\u003e\u003eCocoon: Check complete\u003cbr/\u003enotification\r\n    Note over Cocoon: Ignoring\r\n```"
    },
    {
      "commit": "c82f779e201b2d22f43b531268cfbd2ce4fbd4ab",
      "tree": "acfe6ac8528091ddc250938e41987d6c9c3e67d7",
      "parents": [
        "25ad54ecf9ef93265712e30e552489b0792151f8"
      ],
      "author": {
        "name": "John \"codefu\" McDole",
        "email": "codefu@google.com",
        "time": "Mon Jul 06 20:59:56 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 06 20:59:56 2026"
      },
      "message": "fix(ci): dart must be setup (#5098)\n\nAction was missing \"uses\" clause to setup dart on the runner.\n+ Includes a change to make `gh act` local development possible"
    },
    {
      "commit": "25ad54ecf9ef93265712e30e552489b0792151f8",
      "tree": "e0599b618621fa764cbad8ec8b699a45952e7b9f",
      "parents": [
        "67ef3d40727ec85574f718d4e2fe911bf72de3de"
      ],
      "author": {
        "name": "John \"codefu\" McDole",
        "email": "codefu@google.com",
        "time": "Wed Jul 01 23:08:01 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 01 23:08:01 2026"
      },
      "message": "feat(wait-action): add wait_for_tests shared GitHub Action and CLI tool (#5097)\n\nAdd the wait_for_tests action package to the Cocoon workspace. This will\nallow flutter/flutter and flutter/packages to wait on Cocoon scheduled\ntests to complete. This is made more important with the upcoming\nUniversal Presubmits on the flutter dashboard.\n\nKey additions:\n- Configured the GitHub Action workflow definition in `action.yml`.\n- Created the wait_for_tests CLI tool in `bin/wait_for_tests.dart`\nsupporting environment-variable or command-line arguments\n- Implemented robust polling, status clamping (between 30 and 600\nseconds), and evaluation logic in `lib/wait_for_tests.dart` using the\nshared `TaskStatus` from `package:cocoon_common`.\n- Added tests.\n- Registered the package in the workspace root `pubspec.yaml`."
    },
    {
      "commit": "67ef3d40727ec85574f718d4e2fe911bf72de3de",
      "tree": "04b25d0535806149a8d9cc5b53e1dd44206943cc",
      "parents": [
        "e9537ace317f42b75b2d80e02f5bfb2014339831"
      ],
      "author": {
        "name": "John \"codefu\" McDole",
        "email": "codefu@google.com",
        "time": "Wed Jul 01 20:55:42 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 01 20:55:42 2026"
      },
      "message": "feat(docker): support native multi-arch (amd64/arm64) builds (#5096)\n\n- Update Dockerfile.base to exclude prepackaged cache on arm64/aarch64\nand trigger native SDK bootstrapping.\n- Exclude .pub-preload-cache by default on all architectures to optimize\nsize.\n- Update Dockerfile to download yq dynamically based on target\narchitecture.\n- Refactor cloudbuild.yaml to use docker buildx with QEMU emulation and\ndirect manifest-list pushing.\n- Remove hardcoded amd64 platform constraints from docker-compose.yml.\n- Update README.md to document arm64 capabilities and simplify local\ncommands.\n\nfixes: flutter/flutter#188873"
    },
    {
      "commit": "e9537ace317f42b75b2d80e02f5bfb2014339831",
      "tree": "9a4289c05a6fd79a78dbc9410ae3bf39003e620a",
      "parents": [
        "cd0c18df65594e5e8b638d7228e6b4dffd8165f7"
      ],
      "author": {
        "name": "John \"codefu\" McDole",
        "email": "codefu@google.com",
        "time": "Tue Jun 30 19:57:52 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 30 19:57:52 2026"
      },
      "message": "feat(app_dart): fall back to ciStaging in GetPresubmitGuard when no guards found (#5094)\n\nIn the Unified Check Run flow, if no modern `UnifiedCheckRun` presubmit guards are found for a commit, retrieve the legacy `ciStaging` documents as a fallback. This will make waiting for check-runs to pass universal.\r\n\r\n- Implement `CiStaging.getCiStagingForCommitSha` to query staging documents by repository and commit SHA.\r\n- Refactor `GetPresubmitGuard` to invoke `_getCiStagingFallback` when no guards are present.\r\n- Extract `check_run_id` from the staging `checkRunGuard` JSON, and look up pull request and author metadata via `PrCheckRuns`.\r\n- Add unit tests verifying `ciStaging` fallback execution and JSON response structure.\r\n- Clean up related linter warnings (redundant imports, type annotations, and curly braces).\r\n\r\nfixes flutter/flutter#188756"
    },
    {
      "commit": "cd0c18df65594e5e8b638d7228e6b4dffd8165f7",
      "tree": "a531ce770a96f1b6c03339882f0791ecf2a33d96",
      "parents": [
        "31a0b69748e2da3b4ee2b875861a77e2bed024b4"
      ],
      "author": {
        "name": "Dmitry Grand (dmgr)",
        "email": "dmgr@google.com",
        "time": "Mon Jun 29 20:50:02 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 29 20:50:02 2026"
      },
      "message": "comments (#5093)\n\nAdded comments to explain what presubmit guards and presubmit jobs terms means"
    },
    {
      "commit": "31a0b69748e2da3b4ee2b875861a77e2bed024b4",
      "tree": "9bb97156b5161743efdd17ea7713a721d202af8e",
      "parents": [
        "2dd521d8e7b06de33e992b46266252e3f1afc9e3"
      ],
      "author": {
        "name": "Dmitry Grand (dmgr)",
        "email": "dmgr@google.com",
        "time": "Mon Jun 29 20:17:06 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 29 20:17:06 2026"
      },
      "message": "Polishing (#5092)\n\nrenamed:\r\n - `get-presubmit-jobs` to `get-presubmit-job` since it returns run details of one job\r\n - `builds` to `jobs` in get-presubmit-guard response"
    },
    {
      "commit": "2dd521d8e7b06de33e992b46266252e3f1afc9e3",
      "tree": "ac339287c55d8d7c9a47c56f013ba9d02ee38d8e",
      "parents": [
        "994995d408ef4d6a45d001b4b7fa48ae0d67fbe6"
      ],
      "author": {
        "name": "Jackson Gardner",
        "email": "jacksongardner@google.com",
        "time": "Fri Jun 26 22:11:23 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 26 22:11:23 2026"
      },
      "message": "Remove revert bot from autosubmit. (#5091)\n\nThis functionality has been replaced by a GitHub action, so we\u0027re going to remove this feature from cocoon."
    },
    {
      "commit": "994995d408ef4d6a45d001b4b7fa48ae0d67fbe6",
      "tree": "7bb25988e2e4d860cdab8d1b30aaf4c27b08cbb9",
      "parents": [
        "0548289e8570f66ce802dc4351d81569942f3495"
      ],
      "author": {
        "name": "John \"codefu\" McDole",
        "email": "codefu@google.com",
        "time": "Fri Jun 26 17:07:03 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 26 17:07:03 2026"
      },
      "message": "fix(docker): coder-up should report some progress (#5090)\n\nRefactor environment startup to pull images before starting.\r\n\r\n```\r\n❯ coder-up\r\nPulling image for: pr-review...\r\nTrying to pull us-docker.pkg.dev/flutter-infra/flutter-infra/flutter_docker:stable...\r\nGetting image source signatures\r\nCopying blob sha256:d6cecff2cfc0d8bdbed2c1efdef4de8531c66487a8380b2b954f014daf825fc9\r\nCopying blob sha256:7072d26cd09a3c77bb7b35b9c22b3893c89392b79baf4840e7425aacdb09e080\r\nCopying blob sha256:cb259a83ac3dd9fea0b394df41df2b298adf0df938fef5999475af18a751c257\r\nCopying blob sha256:86b721c394db1bb8086ba7973e5e93ea83ed9fef5b6c153886babb2c666530e1\r\nCopying blob sha256:a3c9bf3c2c2f678b4dce5bd10dff513a847ea4d28768519d1cb59e8e4c0da5b9\r\nCopying blob sha256:5f635f4c089e00f4b39a1b5666f94a365ebcd733fa901351a22373bdcd53f71a\r\nCopying blob sha256:aa2962c22a5f8d7291663569925f0f78061fbc432594f6d7190e42f2d56126f5\r\nCopying blob sha256:2815e56b3171962731fc48f3d358dfd5d4c87a68ef645c19f1fde2de83856c8f\r\nCopying blob sha256:cbf3095671ca2d21c59e0bf0f8eabd2e9f3ac096d6d5e7124c633af529d8cb40\r\nCopying blob sha256:15478765193d849298501e70753e4e776e8bcbf13e991ed69ee5ddcd01bfd5b5\r\nCopying blob sha256:59647213e5b0a5ab5dbc04d5e1d6c7934b1e5b70ebcedc3af3f631a15316da63\r\nCopying blob sha256:a1833780d6af2b6427b6dbe64d4984b13074cc86c00b07146e93e2fa995b5558\r\nCopying config sha256:e2ce22a9680f3303f296f1fb672d91d308570df998981a722097844abad8cae3\r\nWriting manifest to image destination\r\nWARNING: image platform (linux/amd64) does not match the expected platform (linux/arm64)\r\ne2ce22a9680f3303f296f1fb672d91d308570df998981a722097844abad8cae3\r\nStarting development environment: pr-review...\r\nWARNING: image platform (linux/amd64) does not match the expected platform (linux/arm64)\r\ne2ce22a9680f3303f296f1fb672d91d308570df998981a722097844abad8cae3\r\n6a534a8c0b384ae7f3897654cca354d94ec06f02542031ac6b00cbb393717a3b\r\n6c5fbce2f44bd49a723a3bbdfd39bfc09671b243a06cfe773bec6ce55df2da33\r\npr-review\r\n```"
    },
    {
      "commit": "0548289e8570f66ce802dc4351d81569942f3495",
      "tree": "73cabb60f0fce6a4fc388594f2a4b2805aad514b",
      "parents": [
        "77d6f1e8a0a3062f77278aaa61d80837d1f6896e"
      ],
      "author": {
        "name": "Dmitry Grand (dmgr)",
        "email": "dmgr@google.com",
        "time": "Thu Jun 25 22:19:13 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 25 22:19:13 2026"
      },
      "message": "light theme UI fixes (#5089)\n\nfix: https://github.com/flutter/flutter/issues/188111"
    },
    {
      "commit": "77d6f1e8a0a3062f77278aaa61d80837d1f6896e",
      "tree": "f5e5f25305656245426c05be1748d06d677733ce",
      "parents": [
        "31f34160ebef687ea0fc15c1b1fe1113c8667de5"
      ],
      "author": {
        "name": "John \"codefu\" McDole",
        "email": "codefu@google.com",
        "time": "Thu Jun 25 21:50:28 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 25 21:50:28 2026"
      },
      "message": "fix: add install of jq to orchestrator (#5088)\n\nTwo AI reviews suggested \"jq\" was included; it was in fact a lie.\n\nRan the cloud-sdk image locally in docker with this and it was able to\nwork. Triggered remotely and waiting for confirmation"
    },
    {
      "commit": "31f34160ebef687ea0fc15c1b1fe1113c8667de5",
      "tree": "dfc52df0361800194ff183322dd47e4280de8f92",
      "parents": [
        "7a4ae880af963916bb473fab3fb828071e770397"
      ],
      "author": {
        "name": "Jackson Gardner",
        "email": "jacksongardner@google.com",
        "time": "Thu Jun 25 21:36:13 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 25 21:36:13 2026"
      },
      "message": "Refactor CICD label management to use per-PR sequential queue (#5035)\n\nThis change overhauls the management of the `CICD` label in Cocoon to address race conditions and non-idempotent operations that caused issues in the previous attempt.\r\n\r\nKey changes:\r\n- Introduced `PullRequestManager` to handle events for a single PR sequentially via an operation queue.\r\n- Moved PR-specific logic from `webhook_subscription.dart` to `PullRequestManager`, thinning out the webhook handler.\r\n- Implemented new state machine logic for `opened` and `synchronize` events to handle privileged users and draft PRs correctly.\r\n- Made `_scheduleIfMergeable` idempotent by tracking `scheduledSha` in Firestore to prevent duplicate triggering of presubmits for the same SHA.\r\n- Refactored `PullRequestManager` creation to be synchronous in the cache, queueing the asynchronous initialization to avoid creation race conditions.\r\n- Restored `cicd_flowchart.md` from a previous commit to document the flow.\r\n- Fixed all static analysis issues and ensured all tests pass."
    },
    {
      "commit": "7a4ae880af963916bb473fab3fb828071e770397",
      "tree": "0bc3ff39729757a6d963750734dd41873d0f85aa",
      "parents": [
        "bc6c7466dc74123650ef3f38e167d3c8824ce3a1"
      ],
      "author": {
        "name": "John \"codefu\" McDole",
        "email": "codefu@google.com",
        "time": "Thu Jun 25 21:25:48 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 25 21:25:48 2026"
      },
      "message": "Change logging option to CLOUD_LOGGING_ONLY (#5087)\n\nUpdated logging options to send logs directly to Cloud Logging."
    },
    {
      "commit": "bc6c7466dc74123650ef3f38e167d3c8824ce3a1",
      "tree": "4972d30e7faafc85a97cab732d9ad9a8318d6dda",
      "parents": [
        "96f9f25f537ab3367959155fcc7465befe1b6cde"
      ],
      "author": {
        "name": "John \"codefu\" McDole",
        "email": "codefu@google.com",
        "time": "Thu Jun 25 20:27:03 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 25 20:27:03 2026"
      },
      "message": "ci(flutter_agy_docker): conditionally tag docker images by release channel (#5086)\n\nAdd `orchestrator.yaml` to fetch the latest `stable` Flutter version and automatically trigger the `flutter-agy-docker` build with the correct version substitution.\r\n\r\nUpdate `cloudbuild.yaml` to fetch the official Flutter releases JSON and conditionally apply docker tags:\r\n- Tag and push as `stable` and `latest` if the built version matches the current stable release.\r\n- Tag and push as `beta` if the built version matches the current beta release.\r\n- Remove the unconditional `latest` tagging that applied to every build.\r\n\r\nFlows:\r\n\r\n```mermaid\r\nsequenceDiagram\r\n    autonumber\r\n    actor Scheduler as Cloud Scheduler\r\n    actor User as Manual Trigger\r\n    participant Orchestrator as orchestrator.yaml\r\n    participant CloudBuild as cloudbuild.yaml\r\n    participant Storage as Google Cloud Storage (Releases)\r\n    participant AR as Artifact Registry\r\n\r\n    %% Cloud Scheduler Flow\r\n    rect rgb(240, 248, 255)\r\n        note over Scheduler, AR: Flow 1: Automated Stable Build\r\n        Scheduler-\u003e\u003eOrchestrator: Trigger daily/weekly\r\n        Orchestrator-\u003e\u003eStorage: Fetch releases_linux.json\r\n        Storage--\u003e\u003eOrchestrator: Return JSON\r\n        Orchestrator-\u003e\u003eOrchestrator: Parse latest stable version (e.g. 3.44.4)\r\n        Orchestrator-\u003e\u003eCloudBuild: gcloud builds triggers run \u003cbr/\u003e(_FLUTTER_VERSION\u003d3.44.4)\r\n\r\n        CloudBuild-\u003e\u003eCloudBuild: Build images (flutter_base, flutter_docker)\r\n        CloudBuild-\u003e\u003eStorage: Fetch releases_linux.json (Step 3)\r\n        Storage--\u003e\u003eCloudBuild: Return JSON\r\n\r\n        CloudBuild-\u003e\u003eCloudBuild: Compare _FLUTTER_VERSION to stable/beta\r\n        note right of CloudBuild: Matches Stable\r\n\r\n        CloudBuild-\u003e\u003eAR: Push tag: :3.44.4\r\n        CloudBuild-\u003e\u003eAR: Push tag: :stable\r\n        CloudBuild-\u003e\u003eAR: Push tag: :latest\r\n    end\r\n\r\n    %% Manual Trigger Flow\r\n    rect rgb(255, 248, 240)\r\n        note over User, AR: Flow 2: Manual Version Build\r\n        User-\u003e\u003eCloudBuild: Trigger manually \u003cbr/\u003e(_FLUTTER_VERSION\u003dX.Y.Z)\r\n\r\n        CloudBuild-\u003e\u003eCloudBuild: Build images (flutter_base, flutter_docker)\r\n        CloudBuild-\u003e\u003eStorage: Fetch releases_linux.json (Step 3)\r\n        Storage--\u003e\u003eCloudBuild: Return JSON\r\n\r\n        CloudBuild-\u003e\u003eCloudBuild: Compare _FLUTTER_VERSION to stable/beta\r\n\r\n        alt Matches Stable Version\r\n            CloudBuild-\u003e\u003eAR: Push tag: :X.Y.Z\r\n            CloudBuild-\u003e\u003eAR: Push tag: :stable\r\n            CloudBuild-\u003e\u003eAR: Push tag: :latest\r\n        else Matches Beta Version\r\n            CloudBuild-\u003e\u003eAR: Push tag: :X.Y.Z\r\n            CloudBuild-\u003e\u003eAR: Push tag: :beta\r\n        else Neither (Random Version)\r\n            CloudBuild-\u003e\u003eAR: Push tag: :X.Y.Z\r\n            note right of CloudBuild: Skips stable, latest, and beta tags\r\n        end\r\n    end\r\n```"
    },
    {
      "commit": "96f9f25f537ab3367959155fcc7465befe1b6cde",
      "tree": "2010fce312d3b797caade115505b20da319388ed",
      "parents": [
        "54f00db3b4dfeb5598e4eb1833de6e6f87017291"
      ],
      "author": {
        "name": "Dmitry Grand (dmgr)",
        "email": "dmgr@google.com",
        "time": "Thu Jun 25 15:57:08 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 25 15:57:08 2026"
      },
      "message": "Mobile layout (#5084)\n\nMobile layout implementation\r\n\r\n\u003cimg width\u003d\"377\" height\u003d\"722\" alt\u003d\"image\" src\u003d\"https://github.com/user-attachments/assets/4a632589-0281-4b0b-b4b1-49772eb32f63\" /\u003e\r\n\r\n\u003cimg width\u003d\"375\" height\u003d\"718\" alt\u003d\"image\" src\u003d\"https://github.com/user-attachments/assets/13ec5d5f-9715-4c96-94aa-9b66efb43ec8\" /\u003e\r\n\r\nChanged default layout: \r\n - lowered paddings \r\n-  moved `Filter jobs` and `Re-run failed` buttons to the side view\r\n\u003cimg width\u003d\"850\" height\u003d\"462\" alt\u003d\"image\" src\u003d\"https://github.com/user-attachments/assets/228c12bd-1173-47de-a792-fb9143e2c622\" /\u003e\r\n\r\nfix: https://github.com/flutter/flutter/issues/188344"
    },
    {
      "commit": "54f00db3b4dfeb5598e4eb1833de6e6f87017291",
      "tree": "e14c51c0febaa93c6620ba830c34094025ba8b5e",
      "parents": [
        "2f052338c64bba556e6f892fb8e023a5b8d908dd"
      ],
      "author": {
        "name": "John \"codefu\" McDole",
        "email": "codefu@google.com",
        "time": "Wed Jun 24 20:21:51 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 24 20:21:51 2026"
      },
      "message": "refactor(docker): optimize base image and clean up build steps (#5085)\n\n- Use /etc/sudoers.d/coder for sudo configuration in Dockerfile.\n- Delete unused Flutter engine artifacts and pub cache assets to reduce\nimage size.\n- Explicitly extract Flutter to /opt with --no-same-owner.\n- Add \u0027flutter doctor\u0027 verification step.\n\nThis should reduce the overall image size by several hundred megs."
    },
    {
      "commit": "2f052338c64bba556e6f892fb8e023a5b8d908dd",
      "tree": "6acfdf4a6912542103d4c7446977cac22028f237",
      "parents": [
        "a3516aac5e6b574e694b924d85c8ee3df88d5aaf"
      ],
      "author": {
        "name": "Dmitry Grand (dmgr)",
        "email": "dmgr@google.com",
        "time": "Tue Jun 23 23:38:16 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 23 23:38:16 2026"
      },
      "message": "fix: prevent redundant presubmit builds by checking for existing LUCI… (#5083)\n\nTo avoid re-running all checks if the CICD label is removed and added after presubmits have started, check if builds already exist for the current SHA. If builds already exist, there is no need to cancel them and create new ones.\r\n\r\nfix: https://github.com/flutter/flutter/issues/188126"
    },
    {
      "commit": "a3516aac5e6b574e694b924d85c8ee3df88d5aaf",
      "tree": "0884066953a877f4d9d12d4cc95b073c7299b547",
      "parents": [
        "4da2038215d9ed1e49fe278773ca4e4ee258afb5"
      ],
      "author": {
        "name": "John \"codefu\" McDole",
        "email": "codefu@google.com",
        "time": "Tue Jun 23 23:07:00 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 23 23:07:00 2026"
      },
      "message": "feat: add skill update script and fix docker build context (#5082)\n\nThis commit introduces a new script for updating agent skills. Just run\n`update_skills.sh` and it will download to your mapped `~/.gemini`\nfolder (or the `.agents/skills` in your current working directory with\n`--local`).\n\n- **update_skills.sh**: Added a script to efficiently fetch and update\nagent skills from known GitHub repositories (flutter/skills,\ndart-lang/skills, kevmoo/dash_skills). Features include:\n- Support for global (`~/.gemini/config/skills`) or local\n(`.agents/skills`) installations.\n  - Avoids full clones by utilizing `git ls-remote` for commit checks.\n- Uses `git ls-tree` to track individual skill hashes and only update\nwhat changed.\n- **Dockerfile**: Added `update_skills.sh` to `/usr/local/bin` and made\nit executable.\n- **cloudbuild.yaml**: Fixed the Docker build steps by explicitly\nsetting `dir: \u0027cloud_build/flutter_agy_docker/\u0027` and using relative\npaths for the Dockerfile and build context, resolving potential build\ncontext issues.\n\n\n```shell\n$ update_skills.sh\nUpdating skills in /home/coder/.gemini/config/skills...\n----------------------------------------\n[\u003d] flutter/skills is up to date.\n[\u003d] dart-lang/skills is up to date.\n[\u003d] kevmoo/dash_skills is up to date.\n----------------------------------------\nSummary:\nChecked 3 repositories.\nAll skills are up to date.\nSkills available in: /home/coder/.gemini/config/skill\n```"
    },
    {
      "commit": "4da2038215d9ed1e49fe278773ca4e4ee258afb5",
      "tree": "605c5aab9b470133e9f5aa0a5f2a1441efefc20c",
      "parents": [
        "07125d46d87884335350f09c5c5eac4c0c02534c"
      ],
      "author": {
        "name": "Jackson Gardner",
        "email": "jacksongardner@google.com",
        "time": "Tue Jun 23 21:00:50 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 23 21:00:50 2026"
      },
      "message": "Show `bringup: true` tasks by default. (#5066)"
    },
    {
      "commit": "07125d46d87884335350f09c5c5eac4c0c02534c",
      "tree": "89b3ffd6a46b89e20e8ab1e3d0cbb03b8aa7a0d5",
      "parents": [
        "f3422bf3a5581fec4bd7ef4cf990dfde8288a701"
      ],
      "author": {
        "name": "John \"codefu\" McDole",
        "email": "codefu@google.com",
        "time": "Tue Jun 23 17:57:33 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 23 17:57:33 2026"
      },
      "message": "build(docker): split flutter image into base and dev images (#5080)\n\nWhy? Improves caching - flutter maybe has an update weekly; os /\nantigravity release more often.\n\n- Create `Dockerfile.base` to handle heavy Flutter SDK downloads and\nconfiguration.\n- Update `Dockerfile` to focus on user configuration and development\ntools, removing the heavy fetcher stage.\n- Update `cloudbuild.yaml` to implement a multi-step build, creating the\nstatic base image first, then the auto-updating dev image.\n- Inject a `CACHE_BUSTER` build argument in `cloudbuild.yaml` to force\n`apt-get` updates on the dev image"
    },
    {
      "commit": "f3422bf3a5581fec4bd7ef4cf990dfde8288a701",
      "tree": "600cbb512a1116f4b787ef3aa3a163b9d0ceaec0",
      "parents": [
        "a0cf6a7d696623b14efea811a96546233c492647"
      ],
      "author": {
        "name": "Dmitry Grand (dmgr)",
        "email": "dmgr@google.com",
        "time": "Tue Jun 23 17:29:29 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 23 17:29:29 2026"
      },
      "message": "Enrolled Justin to unified checkrun (#5081)\n\nEnrolled Justin to Unified Checkrun"
    },
    {
      "commit": "a0cf6a7d696623b14efea811a96546233c492647",
      "tree": "8c005e91069366bb183ba990788e2c9e4e576456",
      "parents": [
        "92a1b90b2d63fada430dd912bc92f905e9be375d"
      ],
      "author": {
        "name": "Dmitry Grand (dmgr)",
        "email": "dmgr@google.com",
        "time": "Tue Jun 23 17:07:05 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 23 17:07:05 2026"
      },
      "message": "update test data for packages check run flow (#5079)\n\nupdated seeder test data"
    },
    {
      "commit": "92a1b90b2d63fada430dd912bc92f905e9be375d",
      "tree": "a4923d8c6d5e046b8bb08a385e1f3d80219a4b31",
      "parents": [
        "a363eef1eb2e4417cf33692c9ee6dc754c83f18f"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Jun 22 07:07:41 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 22 07:07:41 2026"
      },
      "message": "chore(deps): bump actions/checkout from 6 to 7 (#5078)\n\nBumps [actions/checkout](https://github.com/actions/checkout) from 6 to 7.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href\u003d\"https://github.com/actions/checkout/releases\"\u003eactions/checkout\u0027s releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev7.0.0\u003c/h2\u003e\n\u003ch2\u003eWhat\u0027s Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eblock checking out fork pr for pull_request_target and workflow_run by \u003ca href\u003d\"https://github.com/aiqiaoy\"\u003e\u003ccode\u003e@​aiqiaoy\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/actions/checkout/pull/2454\"\u003eactions/checkout#2454\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/publish-immutable-action from 0.0.3 to 0.0.4 in the minor-actions-dependencies group across 1 directory by \u003ca href\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href\u003d\"https://redirect.github.com/actions/checkout/pull/2458\"\u003eactions/checkout#2458\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump flatted from 3.3.1 to 3.4.2 by \u003ca href\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href\u003d\"https://redirect.github.com/actions/checkout/pull/2460\"\u003eactions/checkout#2460\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump js-yaml from 4.1.0 to 4.2.0 by \u003ca href\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href\u003d\"https://redirect.github.com/actions/checkout/pull/2461\"\u003eactions/checkout#2461\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003e@​actions/core\u003c/code\u003e and \u003ccode\u003e@​actions/tool-cache\u003c/code\u003e and Remove uuid by \u003ca href\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href\u003d\"https://redirect.github.com/actions/checkout/pull/2459\"\u003eactions/checkout#2459\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eupgrade module to esm and update dependencies by \u003ca href\u003d\"https://github.com/aiqiaoy\"\u003e\u003ccode\u003e@​aiqiaoy\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/actions/checkout/pull/2463\"\u003eactions/checkout#2463\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the minor-npm-dependencies group across 1 directory with 3 updates by \u003ca href\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href\u003d\"https://redirect.github.com/actions/checkout/pull/2462\"\u003eactions/checkout#2462\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003egetting ready for checkout v7 release by \u003ca href\u003d\"https://github.com/aiqiaoy\"\u003e\u003ccode\u003e@​aiqiaoy\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/actions/checkout/pull/2464\"\u003eactions/checkout#2464\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eupdate error wording by \u003ca href\u003d\"https://github.com/aiqiaoy\"\u003e\u003ccode\u003e@​aiqiaoy\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/actions/checkout/pull/2467\"\u003eactions/checkout#2467\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/aiqiaoy\"\u003e\u003ccode\u003e@​aiqiaoy\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href\u003d\"https://redirect.github.com/actions/checkout/pull/2454\"\u003eactions/checkout#2454\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href\u003d\"https://github.com/actions/checkout/compare/v6.0.3...v7.0.0\"\u003ehttps://github.com/actions/checkout/compare/v6.0.3...v7.0.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev6.0.3\u003c/h2\u003e\n\u003ch2\u003eWhat\u0027s Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate changelog by \u003ca href\u003d\"https://github.com/ericsciple\"\u003e\u003ccode\u003e@​ericsciple\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/actions/checkout/pull/2357\"\u003eactions/checkout#2357\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: expand merge commit SHA regex and add SHA-256 test cases by \u003ca href\u003d\"https://github.com/yaananth\"\u003e\u003ccode\u003e@​yaananth\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/actions/checkout/pull/2414\"\u003eactions/checkout#2414\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix checkout init for SHA-256 repositories by \u003ca href\u003d\"https://github.com/yaananth\"\u003e\u003ccode\u003e@​yaananth\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/actions/checkout/pull/2439\"\u003eactions/checkout#2439\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate changelog for v6.0.3 by \u003ca href\u003d\"https://github.com/yaananth\"\u003e\u003ccode\u003e@​yaananth\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/actions/checkout/pull/2446\"\u003eactions/checkout#2446\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/yaananth\"\u003e\u003ccode\u003e@​yaananth\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href\u003d\"https://redirect.github.com/actions/checkout/pull/2414\"\u003eactions/checkout#2414\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href\u003d\"https://github.com/actions/checkout/compare/v6...v6.0.3\"\u003ehttps://github.com/actions/checkout/compare/v6...v6.0.3\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev6.0.2\u003c/h2\u003e\n\u003ch2\u003eWhat\u0027s Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd orchestration_id to git user-agent when ACTIONS_ORCHESTRATION_ID is set by \u003ca href\u003d\"https://github.com/TingluoHuang\"\u003e\u003ccode\u003e@​TingluoHuang\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/actions/checkout/pull/2355\"\u003eactions/checkout#2355\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix tag handling: preserve annotations and explicit fetch-tags by \u003ca href\u003d\"https://github.com/ericsciple\"\u003e\u003ccode\u003e@​ericsciple\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/actions/checkout/pull/2356\"\u003eactions/checkout#2356\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href\u003d\"https://github.com/actions/checkout/compare/v6.0.1...v6.0.2\"\u003ehttps://github.com/actions/checkout/compare/v6.0.1...v6.0.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev6.0.1\u003c/h2\u003e\n\u003ch2\u003eWhat\u0027s Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate all references from v5 and v4 to v6 by \u003ca href\u003d\"https://github.com/ericsciple\"\u003e\u003ccode\u003e@​ericsciple\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/actions/checkout/pull/2314\"\u003eactions/checkout#2314\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd worktree support for persist-credentials includeIf by \u003ca href\u003d\"https://github.com/ericsciple\"\u003e\u003ccode\u003e@​ericsciple\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/actions/checkout/pull/2327\"\u003eactions/checkout#2327\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eClarify v6 README by \u003ca href\u003d\"https://github.com/ericsciple\"\u003e\u003ccode\u003e@​ericsciple\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/actions/checkout/pull/2328\"\u003eactions/checkout#2328\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href\u003d\"https://github.com/actions/checkout/compare/v6...v6.0.1\"\u003ehttps://github.com/actions/checkout/compare/v6...v6.0.1\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href\u003d\"https://github.com/actions/checkout/blob/main/CHANGELOG.md\"\u003eactions/checkout\u0027s changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eChangelog\u003c/h1\u003e\n\u003ch2\u003ev7.0.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBlock checking out fork PR for pull_request_target and workflow_run by \u003ca href\u003d\"https://github.com/aiqiaoy\"\u003e\u003ccode\u003e@​aiqiaoy\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/actions/checkout/pull/2454\"\u003eactions/checkout#2454\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/publish-immutable-action from 0.0.3 to 0.0.4 in the minor-actions-dependencies group across 1 directory by \u003ca href\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href\u003d\"https://redirect.github.com/actions/checkout/pull/2458\"\u003eactions/checkout#2458\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump flatted from 3.3.1 to 3.4.2 by \u003ca href\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href\u003d\"https://redirect.github.com/actions/checkout/pull/2460\"\u003eactions/checkout#2460\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump js-yaml from 4.1.0 to 4.2.0 by \u003ca href\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href\u003d\"https://redirect.github.com/actions/checkout/pull/2461\"\u003eactions/checkout#2461\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003e@​actions/core\u003c/code\u003e and \u003ccode\u003e@​actions/tool-cache\u003c/code\u003e and Remove uuid by \u003ca href\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href\u003d\"https://redirect.github.com/actions/checkout/pull/2459\"\u003eactions/checkout#2459\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eupgrade module to esm and update dependencies by \u003ca href\u003d\"https://github.com/aiqiaoy\"\u003e\u003ccode\u003e@​aiqiaoy\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/actions/checkout/pull/2463\"\u003eactions/checkout#2463\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the minor-npm-dependencies group across 1 directory with 3 updates by \u003ca href\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href\u003d\"https://redirect.github.com/actions/checkout/pull/2462\"\u003eactions/checkout#2462\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev6.0.3\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix checkout init for SHA-256 repositories by \u003ca href\u003d\"https://github.com/yaananth\"\u003e\u003ccode\u003e@​yaananth\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/actions/checkout/pull/2439\"\u003eactions/checkout#2439\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: expand merge commit SHA regex and add SHA-256 test cases by \u003ca href\u003d\"https://github.com/yaananth\"\u003e\u003ccode\u003e@​yaananth\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/actions/checkout/pull/2414\"\u003eactions/checkout#2414\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev6.0.2\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix tag handling: preserve annotations and explicit fetch-tags by \u003ca href\u003d\"https://github.com/ericsciple\"\u003e\u003ccode\u003e@​ericsciple\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/actions/checkout/pull/2356\"\u003eactions/checkout#2356\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev6.0.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd worktree support for persist-credentials includeIf by \u003ca href\u003d\"https://github.com/ericsciple\"\u003e\u003ccode\u003e@​ericsciple\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/actions/checkout/pull/2327\"\u003eactions/checkout#2327\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev6.0.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePersist creds to a separate file by \u003ca href\u003d\"https://github.com/ericsciple\"\u003e\u003ccode\u003e@​ericsciple\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/actions/checkout/pull/2286\"\u003eactions/checkout#2286\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate README to include Node.js 24 support details and requirements by \u003ca href\u003d\"https://github.com/salmanmkc\"\u003e\u003ccode\u003e@​salmanmkc\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/actions/checkout/pull/2248\"\u003eactions/checkout#2248\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev5.0.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePort v6 cleanup to v5 by \u003ca href\u003d\"https://github.com/ericsciple\"\u003e\u003ccode\u003e@​ericsciple\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/actions/checkout/pull/2301\"\u003eactions/checkout#2301\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev5.0.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate actions checkout to use node 24 by \u003ca href\u003d\"https://github.com/salmanmkc\"\u003e\u003ccode\u003e@​salmanmkc\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/actions/checkout/pull/2226\"\u003eactions/checkout#2226\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev4.3.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePort v6 cleanup to v4 by \u003ca href\u003d\"https://github.com/ericsciple\"\u003e\u003ccode\u003e@​ericsciple\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/actions/checkout/pull/2305\"\u003eactions/checkout#2305\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev4.3.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003edocs: update README.md by \u003ca href\u003d\"https://github.com/motss\"\u003e\u003ccode\u003e@​motss\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/actions/checkout/pull/1971\"\u003eactions/checkout#1971\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd internal repos for checking out multiple repositories by \u003ca href\u003d\"https://github.com/mouismail\"\u003e\u003ccode\u003e@​mouismail\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/actions/checkout/pull/1977\"\u003eactions/checkout#1977\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDocumentation update - add recommended permissions to Readme by \u003ca href\u003d\"https://github.com/benwells\"\u003e\u003ccode\u003e@​benwells\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/actions/checkout/pull/2043\"\u003eactions/checkout#2043\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdjust positioning of user email note and permissions heading by \u003ca href\u003d\"https://github.com/joshmgross\"\u003e\u003ccode\u003e@​joshmgross\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/actions/checkout/pull/2044\"\u003eactions/checkout#2044\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate README.md by \u003ca href\u003d\"https://github.com/nebuk89\"\u003e\u003ccode\u003e@​nebuk89\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/actions/checkout/pull/2194\"\u003eactions/checkout#2194\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate CODEOWNERS for actions by \u003ca href\u003d\"https://github.com/TingluoHuang\"\u003e\u003ccode\u003e@​TingluoHuang\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/actions/checkout/pull/2224\"\u003eactions/checkout#2224\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate package dependencies by \u003ca href\u003d\"https://github.com/salmanmkc\"\u003e\u003ccode\u003e@​salmanmkc\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/actions/checkout/pull/2236\"\u003eactions/checkout#2236\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev4.2.2\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eurl-helper.ts\u003c/code\u003e now leverages well-known environment variables by \u003ca href\u003d\"https://github.com/jww3\"\u003e\u003ccode\u003e@​jww3\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/actions/checkout/pull/1941\"\u003eactions/checkout#1941\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExpand unit test coverage for \u003ccode\u003eisGhes\u003c/code\u003e by \u003ca href\u003d\"https://github.com/jww3\"\u003e\u003ccode\u003e@​jww3\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/actions/checkout/pull/1946\"\u003eactions/checkout#1946\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev4.2.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCheck out other refs/* by commit if provided, fall back to ref by \u003ca href\u003d\"https://github.com/orhantoy\"\u003e\u003ccode\u003e@​orhantoy\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/actions/checkout/pull/1924\"\u003eactions/checkout#1924\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/actions/checkout/commit/9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0\"\u003e\u003ccode\u003e9c091bb\u003c/code\u003e\u003c/a\u003e update error wording (\u003ca href\u003d\"https://redirect.github.com/actions/checkout/issues/2467\"\u003e#2467\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/actions/checkout/commit/1044a6dea927916f2c38ba5aeffbc0a847b1221a\"\u003e\u003ccode\u003e1044a6d\u003c/code\u003e\u003c/a\u003e getting ready for checkout v7 release (\u003ca href\u003d\"https://redirect.github.com/actions/checkout/issues/2464\"\u003e#2464\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/actions/checkout/commit/f0282184c7ce73ab54c7e4ab5a617122602e575f\"\u003e\u003ccode\u003ef028218\u003c/code\u003e\u003c/a\u003e Bump the minor-npm-dependencies group across 1 directory with 3 updates (\u003ca href\u003d\"https://redirect.github.com/actions/checkout/issues/2462\"\u003e#2462\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/actions/checkout/commit/d914b262ffc244530a203ab40decab34c3abf34d\"\u003e\u003ccode\u003ed914b26\u003c/code\u003e\u003c/a\u003e upgrade module to esm and update dependencies (\u003ca href\u003d\"https://redirect.github.com/actions/checkout/issues/2463\"\u003e#2463\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/actions/checkout/commit/537c7ef99cef6e5ddb5e7ff5d16d14510503801d\"\u003e\u003ccode\u003e537c7ef\u003c/code\u003e\u003c/a\u003e Bump \u003ccode\u003e@​actions/core\u003c/code\u003e and \u003ccode\u003e@​actions/tool-cache\u003c/code\u003e and Remove uuid (\u003ca href\u003d\"https://redirect.github.com/actions/checkout/issues/2459\"\u003e#2459\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/actions/checkout/commit/130a169078a413d3a5246a393625e8e742f387f6\"\u003e\u003ccode\u003e130a169\u003c/code\u003e\u003c/a\u003e Bump js-yaml from 4.1.0 to 4.2.0 (\u003ca href\u003d\"https://redirect.github.com/actions/checkout/issues/2461\"\u003e#2461\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/actions/checkout/commit/7d09575332117a40b46e5e020664df234cd416f3\"\u003e\u003ccode\u003e7d09575\u003c/code\u003e\u003c/a\u003e Bump flatted from 3.3.1 to 3.4.2 (\u003ca href\u003d\"https://redirect.github.com/actions/checkout/issues/2460\"\u003e#2460\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/actions/checkout/commit/0f9f3aa320cb53abeb534aeb54048075d9697a0e\"\u003e\u003ccode\u003e0f9f3aa\u003c/code\u003e\u003c/a\u003e Bump actions/publish-immutable-action (\u003ca href\u003d\"https://redirect.github.com/actions/checkout/issues/2458\"\u003e#2458\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/actions/checkout/commit/f9e715a95fcd1f9253f77dd28f11e88d2d6460c7\"\u003e\u003ccode\u003ef9e715a\u003c/code\u003e\u003c/a\u003e block checking out fork pr for pull_request_target and workflow_run (\u003ca href\u003d\"https://redirect.github.com/actions/checkout/issues/2454\"\u003e#2454\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href\u003d\"https://github.com/actions/checkout/compare/v6...v7\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name\u003dactions/checkout\u0026package-manager\u003dgithub_actions\u0026previous-version\u003d6\u0026new-version\u003d7)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don\u0027t alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\u003c/details\u003e"
    },
    {
      "commit": "a363eef1eb2e4417cf33692c9ee6dc754c83f18f",
      "tree": "bd5cd6a25f35a995111af04fd97eb25499a65f6c",
      "parents": [
        "cfea040f8bee40cb182183fb5ec00a1334e5f0ca"
      ],
      "author": {
        "name": "Dmitry Grand (dmgr)",
        "email": "dmgr@google.com",
        "time": "Thu Jun 18 22:46:32 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 18 22:46:32 2026"
      },
      "message": "added mboetger to unified check run (#5077)\n\nTurned on unified check run feature to Matt"
    },
    {
      "commit": "cfea040f8bee40cb182183fb5ec00a1334e5f0ca",
      "tree": "3e8ce11177ef963258e9dcdeefe630aaef8d5e08",
      "parents": [
        "2e641090c9a4d34b08fa61aec460d8fcd86815f8"
      ],
      "author": {
        "name": "John \"codefu\" McDole",
        "email": "codefu@google.com",
        "time": "Thu Jun 18 22:41:22 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 18 22:41:22 2026"
      },
      "message": "docs(docker): add FAQ for using git worktrees (#5076)\n\nAdded a new FAQ \u0026 Troubleshooting section to the flutter_agy_docker README.\r\nThis section explains how to configure Git to use relative paths for worktrees\r\nwhen working within the container to prevent broken worktree references.\r\n\r\nAlso make sure the next image has this turned on so when you type \"gwta fu\" you get a \".git\" that is relative."
    },
    {
      "commit": "2e641090c9a4d34b08fa61aec460d8fcd86815f8",
      "tree": "532881f877d80bdbd3f0c8c728e39b4782cc2dff",
      "parents": [
        "6590183e6636d7d31a6c0a3add4ced5b9ebda2ac"
      ],
      "author": {
        "name": "John \"codefu\" McDole",
        "email": "codefu@google.com",
        "time": "Thu Jun 18 21:40:45 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 18 21:40:45 2026"
      },
      "message": "feat(docker): add dev environment compose file and helper scripts (#5075)\n\n- Adds a simple. README.md\n- Adds docker-compose.yml configured to use the flutter_docker image,\nwith volume mappings for .dart_tool, build cache, and the .gemini\nfolder.\n- Adds functions.sh with coder-up, coder-attach, and coder-down\nconvenience functions to manage the podman container lifecycle and\nconnect via tmux."
    },
    {
      "commit": "6590183e6636d7d31a6c0a3add4ced5b9ebda2ac",
      "tree": "818041b83e4630cfcd630b5dee104cb283bd3ee6",
      "parents": [
        "8c6e7392131e3a2f80ff9f18069d81c1d4fba3c1"
      ],
      "author": {
        "name": "Dmitry Grand (dmgr)",
        "email": "dmgr@google.com",
        "time": "Wed Jun 17 20:58:07 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 17 20:58:07 2026"
      },
      "message": "188117 shaselector (#5074)\n\nShow date and status in ShaSelector drop down menu while collapsed\r\nfix: https://github.com/flutter/flutter/issues/188117"
    },
    {
      "commit": "8c6e7392131e3a2f80ff9f18069d81c1d4fba3c1",
      "tree": "4c938d9907880831eb1e91db0f8c285d315f47b8",
      "parents": [
        "265d8974a2f5604d3881679198b2976c29e0ba9e"
      ],
      "author": {
        "name": "John \"codefu\" McDole",
        "email": "codefu@google.com",
        "time": "Wed Jun 17 15:19:01 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 17 15:19:01 2026"
      },
      "message": "Default user \u003d\u003d coder (#5073)\n\nUbuntu sets `ubuntu` as user 1000. I want this as `coder`. This fixes mounting files into the image."
    },
    {
      "commit": "265d8974a2f5604d3881679198b2976c29e0ba9e",
      "tree": "f8f3f30ada8f12261fa0a6f7fa21e8affcd4e067",
      "parents": [
        "b8b2020b071dd58c36347c4992c175e34edf6c44"
      ],
      "author": {
        "name": "Dmitry Grand (dmgr)",
        "email": "dmgr@google.com",
        "time": "Tue Jun 16 23:31:09 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 16 23:31:09 2026"
      },
      "message": "fix comments (#5072)\n\nfix few comment leftovers from https://github.com/flutter/cocoon/pull/5070 renames"
    },
    {
      "commit": "b8b2020b071dd58c36347c4992c175e34edf6c44",
      "tree": "31ff55ff61dc95ee0e938d90f0618b86e2bc36b5",
      "parents": [
        "29f66bdccc3cb7336e7b535b628ba9e2af14d15a"
      ],
      "author": {
        "name": "Dmitry Grand (dmgr)",
        "email": "dmgr@google.com",
        "time": "Tue Jun 16 23:13:23 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 16 23:13:23 2026"
      },
      "message": "Rename “Flutter Presubmits” check to “Dashboard Checks” check (#5070)\n\nRename “Flutter Presubmits” check to “Dashboard Checks” check and add some description"
    },
    {
      "commit": "29f66bdccc3cb7336e7b535b628ba9e2af14d15a",
      "tree": "2e52c1e8fa722cea12f7e1c6d34999bdbb8c4d0f",
      "parents": [
        "6b504a599be5722d2c11928afda0cf9b69d122c4"
      ],
      "author": {
        "name": "Dmitry Grand (dmgr)",
        "email": "dmgr@google.com",
        "time": "Tue Jun 16 22:28:08 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 16 22:28:08 2026"
      },
      "message": "added beta testers of unified check run (#5069)\n\nAdded Victoria and Loïc to beta testers"
    },
    {
      "commit": "6b504a599be5722d2c11928afda0cf9b69d122c4",
      "tree": "340ca4c6ba4a754ef80c186bf4d68552a035aac6",
      "parents": [
        "2862ed40de6807eb395e29f0bb2576c78261ae41"
      ],
      "author": {
        "name": "John \"codefu\" McDole",
        "email": "codefu@google.com",
        "time": "Tue Jun 16 22:17:17 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 16 22:17:17 2026"
      },
      "message": "git version 2.54.0 (#5071)\n\nDocker image needs newer version of Git to support relative workspaces."
    },
    {
      "commit": "2862ed40de6807eb395e29f0bb2576c78261ae41",
      "tree": "16a39eccc6da87031b2941f012cdfd177988f5cd",
      "parents": [
        "80616b25f31f6836ee4f457a60d55f66890ff416"
      ],
      "author": {
        "name": "John \"codefu\" McDole",
        "email": "codefu@google.com",
        "time": "Tue Jun 16 19:27:19 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 16 19:27:19 2026"
      },
      "message": "Change Docker build context to `cloud_build/flutter_agy_docker` (#5068)\n\nThis works if you run the cloud build command in the folder, but Cloud Console needs to know the directory though\r\n\r\nAfter this change we can setup a schedule."
    },
    {
      "commit": "80616b25f31f6836ee4f457a60d55f66890ff416",
      "tree": "08dd842c7d569d59110f6308fb0cf84abc410244",
      "parents": [
        "22c0a9e5cf8d9f3c575df5c2b17790c7023358fe"
      ],
      "author": {
        "name": "John \"codefu\" McDole",
        "email": "codefu@google.com",
        "time": "Tue Jun 16 18:33:11 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 16 18:33:11 2026"
      },
      "message": "Update Docker image registry from us-central1 to us (#5067)\n\nmultiregion"
    },
    {
      "commit": "22c0a9e5cf8d9f3c575df5c2b17790c7023358fe",
      "tree": "2600ee51f7d1612774a71300a73c7a48e410143c",
      "parents": [
        "abceaae43c0d7258ad9057097127b25bfafcb717"
      ],
      "author": {
        "name": "Dmitry Grand (dmgr)",
        "email": "dmgr@google.com",
        "time": "Tue Jun 16 18:21:24 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 16 18:21:24 2026"
      },
      "message": "store state entirely in query parameters (#5064)\n\nfix: https://github.com/flutter/flutter/issues/186357"
    },
    {
      "commit": "abceaae43c0d7258ad9057097127b25bfafcb717",
      "tree": "21b9d4cdf558ebf390bb9c63a8b02ba8441f183e",
      "parents": [
        "0f861a93e86cfa1a6c1e00a51af5e6dce33ebff5"
      ],
      "author": {
        "name": "John \"codefu\" McDole",
        "email": "codefu@google.com",
        "time": "Tue Jun 16 18:13:53 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 16 18:13:53 2026"
      },
      "message": "bug(cloudbuild): explicitly tell cloudbuild where to send logs. (#5065)\n\nCloud build triggers need this line."
    },
    {
      "commit": "0f861a93e86cfa1a6c1e00a51af5e6dce33ebff5",
      "tree": "0f27d50cf605bdf3b6854c487b6c8306150214bc",
      "parents": [
        "43dcc7d1abbcaaa605d5c08fc2ddd6d85fc31703"
      ],
      "author": {
        "name": "John \"codefu\" McDole",
        "email": "codefu@google.com",
        "time": "Tue Jun 16 01:14:12 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 16 01:14:12 2026"
      },
      "message": "feat(flutter_agy_docker): add Dockerfile and Cloud Build configuration (#5063)\n\nNew Dockerfile and cloudbuild.yaml to produce a development image.\n\nThe Dockerfile sets up a multi-stage build that fetches, hydrates, and\nconfigures the Flutter SDK, and installs opinionated developer tools."
    },
    {
      "commit": "43dcc7d1abbcaaa605d5c08fc2ddd6d85fc31703",
      "tree": "b72f46aa77b6c3e8ca977295296e33f715759fc5",
      "parents": [
        "41fbbe2a453a9cb8086520f5346db5d4de9c65dd"
      ],
      "author": {
        "name": "Dmitry Grand (dmgr)",
        "email": "dmgr@google.com",
        "time": "Mon Jun 15 18:32:55 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 15 18:32:55 2026"
      },
      "message": "Fixed light mode style discrepancies (#5062)\n\nfix: https://github.com/flutter/flutter/issues/187964"
    },
    {
      "commit": "41fbbe2a453a9cb8086520f5346db5d4de9c65dd",
      "tree": "2a410eb53281e3ca8245e2160e7d079475cc93c7",
      "parents": [
        "5e6ac217a14e35554e922f59607efc5647aa0ffd"
      ],
      "author": {
        "name": "Dmitry Grand (dmgr)",
        "email": "dmgr@google.com",
        "time": "Wed Jun 10 17:40:30 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 10 17:40:30 2026"
      },
      "message": "Recursively extract logs of failed steps in build or its subbuilds (#5061)\n\nfix: https://github.com/flutter/flutter/issues/187764"
    },
    {
      "commit": "5e6ac217a14e35554e922f59607efc5647aa0ffd",
      "tree": "3c33e22e00a4673bf0edc28a3b21739d4dcec5b9",
      "parents": [
        "eb605563185f5b0cf50b4bf75d3b87c521997f32"
      ],
      "author": {
        "name": "Dmitry Grand",
        "email": "dmgr@google.com",
        "time": "Thu Jun 04 19:33:30 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 04 19:33:30 2026"
      },
      "message": "show markdown for log analysis (#5059)\n\nfix: https://github.com/flutter/flutter/issues/187577"
    },
    {
      "commit": "eb605563185f5b0cf50b4bf75d3b87c521997f32",
      "tree": "4a42452e44813afd0923848f7f114fb79194df5c",
      "parents": [
        "adbeb316fb3c8888053b5eaada13e20ace89eaeb"
      ],
      "author": {
        "name": "Dmitry Grand",
        "email": "dmgr@google.com",
        "time": "Thu Jun 04 19:32:37 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 04 19:32:37 2026"
      },
      "message": "unlock merge queue for cocoon (#5060)\n\nfix: https://github.com/flutter/flutter/issues/187582"
    },
    {
      "commit": "adbeb316fb3c8888053b5eaada13e20ace89eaeb",
      "tree": "4d795db00121be1160093d4bc3cc38e4ee73a26e",
      "parents": [
        "d0b57da7e0e7144c73c94cba1c635012932430dd"
      ],
      "author": {
        "name": "Dmitry Grand",
        "email": "dmgr@google.com",
        "time": "Tue Jun 02 21:00:41 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 02 21:00:41 2026"
      },
      "message": "Do not immediately unlock `Flutter Presubmits` on non-fusion repos for unified check run flow (#5058)\n\nModified `triggerPresubmitTargets` event handler logic to do not immediately unlock `MergeQueueGuard` for non-fusion repositories if the unified check run flow is enabled\r\n\r\nfix: https://github.com/flutter/flutter/issues/187458"
    },
    {
      "commit": "d0b57da7e0e7144c73c94cba1c635012932430dd",
      "tree": "a107561483be99b98ffdc2bfd9669be8f5bbb8e4",
      "parents": [
        "b596b13d361670c5e6039adf65669d6e86b4d510"
      ],
      "author": {
        "name": "Dmitry Grand",
        "email": "dmgr@google.com",
        "time": "Mon Jun 01 19:55:17 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 01 19:55:17 2026"
      },
      "message": "Check-runs statuses are not updated for flutter/packages (#5057)\n\nFix: https://github.com/flutter/flutter/issues/187387\r\n\r\n1. Match Scheduled Stage: Conditionally set the stage argument passed to scheduleTryBuilds to match the repository type.\r\n2. Do Not Bypass Completed Unified Check Runs: Modified the early return condition in processCheckRunCompleted so that unified checkrun events for non-fusion repositories are processed.\r\n3. Unlock Merge Queue Guard on genericTests Completion: When the stage is CiStage.genericTests and the unified check run completes successfully, close/unlock the merge queue guard."
    },
    {
      "commit": "b596b13d361670c5e6039adf65669d6e86b4d510",
      "tree": "3304174ff84bdce6a36f83e4e6d70915e0705318",
      "parents": [
        "200915d86d64884f56ad5a1352443ed55f073bf8"
      ],
      "author": {
        "name": "Dmitry Grand",
        "email": "dmgr@google.com",
        "time": "Thu May 28 23:00:22 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 28 23:00:22 2026"
      },
      "message": "updated sign_in_button version (#5056)\n\n1. Updated sign_in_button version to 5.0.0 to fix error: \r\n\r\n```\r\n/builder/home/.pub-cache/hosted/pub.dev/font_awesome_flutter-10.12.0/lib/src/icon_data.dart:28:31:\r\nStep #0: Error: The class \u0027IconData\u0027 can\u0027t be extended outside of its library because it\u0027s a final class.\r\nStep #0: class IconDataRegular extends IconData {\r\n```\r\n\r\n2. Added unit test to make sure `presubmit_guard` document created for `flutter/packages` when unified check run enabled for user."
    },
    {
      "commit": "200915d86d64884f56ad5a1352443ed55f073bf8",
      "tree": "955318a9798230b815ce083644c07249a69e54f8",
      "parents": [
        "1abc9863af7f7c3ff488fb88a23876b77ad58d39"
      ],
      "author": {
        "name": "Dmitry Grand",
        "email": "dmgr@google.com",
        "time": "Wed May 27 17:27:55 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 27 17:27:55 2026"
      },
      "message": "create presubmit_guard for non flutter repos in unified check run flow (#5055)\n\nfix: https://github.com/flutter/flutter/issues/186485"
    },
    {
      "commit": "1abc9863af7f7c3ff488fb88a23876b77ad58d39",
      "tree": "c484d93cf29c83b9277a530dd61370dba97db73f",
      "parents": [
        "80a6c47b6fed985e94769a55684f2f8f8cd1d0d6"
      ],
      "author": {
        "name": "Dmitry Grand",
        "email": "dmgr@google.com",
        "time": "Thu May 21 21:18:27 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 21 21:18:27 2026"
      },
      "message": "Changed buildId type to Int64 (#5054)\n\nChanged buildId type to Int64 to correspond with Build.id type"
    },
    {
      "commit": "80a6c47b6fed985e94769a55684f2f8f8cd1d0d6",
      "tree": "d1b20ade4eee144e0bfd944226a1fe3046977d40",
      "parents": [
        "b5fde752e164040188a25c7f162a10dd3eeadfe2"
      ],
      "author": {
        "name": "John \"codefu\" McDole",
        "email": "codefu@google.com",
        "time": "Mon May 18 22:42:56 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon May 18 22:42:56 2026"
      },
      "message": "Add more checks to JWTs (#5053)\n\nRequires RS256 in alg field\nRejects other headers (paranoid)"
    },
    {
      "commit": "b5fde752e164040188a25c7f162a10dd3eeadfe2",
      "tree": "7d19e75a735593562a44c60c2f78b87d4fd87960",
      "parents": [
        "ae834c235b06262f7120fd5a85ed08d181e1dc99"
      ],
      "author": {
        "name": "Dmitry Grand",
        "email": "dmgr@google.com",
        "time": "Thu May 14 21:31:46 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 14 21:31:46 2026"
      },
      "message": "Added Evan to unified checkrun beta testers (#5052)\n\nAdded Evan to unified check run beta testers"
    },
    {
      "commit": "ae834c235b06262f7120fd5a85ed08d181e1dc99",
      "tree": "36ec1397e421808829b16d243f36337d7700ba69",
      "parents": [
        "f34e34b70ee12837ee49dff15140ab2aab3b2de4"
      ],
      "author": {
        "name": "Dmitry Grand",
        "email": "dmgr@google.com",
        "time": "Wed May 13 19:35:33 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 13 19:35:33 2026"
      },
      "message": "removed Justin from beta testers (#5051)\n\nremoved Justin from beta testers unless test flutter/packages flow"
    },
    {
      "commit": "f34e34b70ee12837ee49dff15140ab2aab3b2de4",
      "tree": "d7ef1332b659055688e5526b8d0a2b44e5ab09f4",
      "parents": [
        "c8e3ba5e0bd2a75e3b06a4e2b17ba4c666ea637c"
      ],
      "author": {
        "name": "Dmitry Grand",
        "email": "dmgr@google.com",
        "time": "Fri May 08 22:29:23 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 08 22:29:23 2026"
      },
      "message": "[Gemini Log Analyzer] Part 4: Frontend Integration (Dashboard UI) (#5044)\n\nThis is Part 4 of the stacked Pull Request series implementing the Gemini Log Analyzer feature.\n\n**Depends on Part 3:** #5043 (Note: Targets `main` due to GitHub cross-repo limits, but chains to #5043 via description).\n\nThis PR integrates the feature into the Cocoon Dashboard UI:\n- Adds \"Log Analysis\" tab to display the Gemini log analyzer results when available.\n- Adds \"Analyze Logs with Gemini\" action button to trigger the API from the presubmit dashboard.\n- Implements spellchecking, permission-checking, and error-handling for the trigger action.\n\n### Stacked PR Series:\n- Part 1: Backend Foundation (Models \u0026 Setup) (Merged)\n- Part 2: Backend Infrastructure (Config \u0026 Database Data Flow) (#5045)\n- Part 3: Backend Core API (Genkit Logic \u0026 Handlers) (#5043)\n- **Part 4: Frontend Dashboard UI** (This PR)"
    },
    {
      "commit": "c8e3ba5e0bd2a75e3b06a4e2b17ba4c666ea637c",
      "tree": "c0cf4d7ba248257c8dfbf9a1b41796b6462e6fde",
      "parents": [
        "6f645b46451b156c348dfcae98ba0f4f4a511b43"
      ],
      "author": {
        "name": "Dmitry Grand",
        "email": "dmgr@google.com",
        "time": "Thu May 07 17:39:12 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 07 17:39:12 2026"
      },
      "message": "Added Andy, Camille and Justin to unified check run users (#5041)\n\nAdded Andy, Camille and Justin to unified check run users"
    },
    {
      "commit": "6f645b46451b156c348dfcae98ba0f4f4a511b43",
      "tree": "759e4e57049efa5e66f6b64be72cbd103b2daf0f",
      "parents": [
        "915cf5fd42bb4905568b44afb82d3a05b0eced69"
      ],
      "author": {
        "name": "Dmitry Grand",
        "email": "dmgr@google.com",
        "time": "Thu May 07 15:48:20 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 07 15:48:20 2026"
      },
      "message": "[Gemini Log Analyzer] Part 3: Backend Core (Analyze Logs API \u0026 Service) (#5043)\n\nThis is Part 3 of the stacked Pull Request series implementing the Gemini Log Analyzer feature.\r\n\r\n**Part 1 \u0026 Part 2 Backend Infrastructure have been merged!** This PR now contains only the core API implementation on top of main.\r\n\r\nThis PR implements the core backend service and API request handlers for analyzing logs:\r\n- Instantiates the Genkit client and configures plugins (using `googleAI`) in `gae_server.dart`.\r\n- Implements `LogAnalyzer` and its Genkit integration to fetch and parse LUCI build logs.\r\n- Adds the `analyze_logs` request handler and exposes it as the `/api/analyze-logs` endpoint.\r\n\r\n### Stacked PR Series:\r\n- Part 1: Backend Foundation (Models \u0026 Setup) (Merged)\r\n- Part 2: Backend Infrastructure (Config \u0026 Database Data Flow) (Merged)\r\n- **Part 3: Backend Core API (Genkit Logic \u0026 Handlers)** (This PR)\r\n- Part 4: Frontend Dashboard UI"
    },
    {
      "commit": "915cf5fd42bb4905568b44afb82d3a05b0eced69",
      "tree": "1c0afc34c435f5284a38f90b1999a6821f1ce0af",
      "parents": [
        "02d2850fe05d628ab68ecd57ef1cfaf4194ee39f"
      ],
      "author": {
        "name": "John \"codefu\" McDole",
        "email": "codefu@google.com",
        "time": "Wed May 06 22:27:23 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 06 22:27:23 2026"
      },
      "message": "fix: make some APIs cron-only (#5049)\n\nThe biggest part of this change is trying to keep\nDashboardAuthentication somewhat flexible. You can extract a \"cron only\"\nauthentication from the chain of responsibility."
    },
    {
      "commit": "02d2850fe05d628ab68ecd57ef1cfaf4194ee39f",
      "tree": "f5bbf9950755e3aa66cebbcc6f2375f6e948a148",
      "parents": [
        "70d12d440e67fcdd1dd4183b8c5b520d8d80d7b8"
      ],
      "author": {
        "name": "Jason Simmons",
        "email": "jason-simmons@users.noreply.github.com",
        "time": "Wed May 06 22:25:51 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 06 22:25:51 2026"
      },
      "message": "When properties are extracted from a target configuration, exclude properties that affect source locations used by LUCI recipes (#5050)\n\nThese properties should only be set by Cocoon\u0027s build scheduler.\n\nSee http://b/509842706"
    },
    {
      "commit": "70d12d440e67fcdd1dd4183b8c5b520d8d80d7b8",
      "tree": "a2850f36a62a71b1f6c2cd907f5b6fa708ef2293",
      "parents": [
        "e34a5ab3f07a4c32a4419d26522aecff93f508e3"
      ],
      "author": {
        "name": "Dmitry Grand",
        "email": "dmgr@google.com",
        "time": "Wed May 06 20:09:07 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 06 20:09:07 2026"
      },
      "message": "on refresh fetch shas and guards even if pr and sha not changed (#5048)\n\nfix: https://github.com/flutter/flutter/issues/184529"
    },
    {
      "commit": "e34a5ab3f07a4c32a4419d26522aecff93f508e3",
      "tree": "ffb0f88de9d1c39fd25d32b89f82e88ca0a893b8",
      "parents": [
        "926e2c1982168b7d24eac135eea054e5a0ac54bf"
      ],
      "author": {
        "name": "John \"codefu\" McDole",
        "email": "codefu@google.com",
        "time": "Wed May 06 17:22:37 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 06 17:22:37 2026"
      },
      "message": "fix: check allowed repositories in vacuum commit api. (#5047)\n\ncc: @straka"
    },
    {
      "commit": "926e2c1982168b7d24eac135eea054e5a0ac54bf",
      "tree": "20021f2591a6f421a2bc3a02db0c991656d8e41c",
      "parents": [
        "9cf4c69d35eeb3da55d8a3271950605ad2fbc300"
      ],
      "author": {
        "name": "John \"codefu\" McDole",
        "email": "codefu@google.com",
        "time": "Wed May 06 16:53:51 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 06 16:53:51 2026"
      },
      "message": "fix: add extra verifications to JWT checks. (#5046)"
    },
    {
      "commit": "9cf4c69d35eeb3da55d8a3271950605ad2fbc300",
      "tree": "53ff88ff00999ab69ae2cf2d72a2e55f65a2862c",
      "parents": [
        "348ac7e4bacd026273e5a67765afa43d0880fdeb"
      ],
      "author": {
        "name": "Dmitry Grand",
        "email": "dmgr@google.com",
        "time": "Tue May 05 23:29:06 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 05 23:29:06 2026"
      },
      "message": "[Gemini Log Analyzer] Part 2: Backend Infrastructure (Config, Models, \u0026 Database Flow) (#5045)\n\nThis is Part 2 of the stacked Pull Request series implementing the Gemini Log Analyzer feature.\n\n**Depends on Part 1 (already merged):** #5042\n\nThis PR extracts the backend data flow, configuration, dynamic config flags, and serialization models from the API implementation branch into a clean infrastructure layer:\n- Configures AppEngine service config and flags in `config.yaml` and generated dynamic config files.\n- Implements database storage interface `storeLogAnalysis` in `UnifiedCheckRun`.\n- Adds the `logAnalysis` field to the `PresubmitJobResponse` RPC models to serialize results.\n\n### Stacked PR Series:\n- Part 1: Backend Foundation (Models \u0026 Setup) (Merged)\n- **Part 2: Backend Infrastructure (Config \u0026 Database Data Flow)** (This PR)\n- Part 3: Backend Core API (Genkit Logic \u0026 Handlers)\n- Part 4: Frontend Dashboard UI"
    },
    {
      "commit": "348ac7e4bacd026273e5a67765afa43d0880fdeb",
      "tree": "1fc8648c3f98d11eb31e95c19ac1e9f3bbf07d45",
      "parents": [
        "6df3c8f5cb7c04e3330eea4aefe88ad1b1038763"
      ],
      "author": {
        "name": "Dmitry Grand",
        "email": "dmgr@google.com",
        "time": "Tue May 05 21:54:16 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 05 21:54:16 2026"
      },
      "message": "[Gemini Log Analyzer] Part 1: Backend Foundation (Models, Config, \u0026 Setup) (#5042)\n\nThis is Part 1 of a stacked PR series implementing the Gemini Log Analyzer feature: https://github.com/flutter/flutter/issues/185700\r\n\r\nThis PR establishes the required foundation:\r\n- Adds `APP_DART_GEMINI_LOG_ANALYZER_KEY` secret config property to `Config`.\r\n- Adds `log_analysis` and `build_id` fields to Firestore `PresubmitJob` model.\r\n- Adds `build_id` to `PresubmitJobResponse` RPC model in `cocoon_common`.\r\n\r\n### Stacked PR Series:\r\n- **Part 1: Backend Foundation** (This PR)\r\n- Part 2: Backend Core API\r\n- Part 3: Frontend Dashboard UI"
    },
    {
      "commit": "6df3c8f5cb7c04e3330eea4aefe88ad1b1038763",
      "tree": "2d45f76890ae46a28c56af54daece9f9152d5158",
      "parents": [
        "0e1244eee81badf4dbfc3b9ac505bcd1599d7c7b"
      ],
      "author": {
        "name": "Kate Lovett",
        "email": "katelovett@google.com",
        "time": "Tue May 05 17:52:56 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 05 17:52:56 2026"
      },
      "message": "De-duplicate GitHub check runs by name and keep latest result (#5040)\n\nFixes https://github.com/flutter/flutter/issues/185898\r\n\r\nWhen a workflow runs multiple times on the same commit (e.g. when triggered repeatedly by labeling events), superseded failures can unintentionally block pull requests during Auto-Submit validations.\r\n\r\nThis PR updates the CiSuccessful.validateCheckRuns validation logic to:\r\n\r\n- Group checkRuns by checkRun.name.\r\n- De-duplicate check runs of the same name by evaluating their startedAt timestamp.\r\n- Exclusively retain and validate the latest result per check run name when proceeding with PR validation."
    },
    {
      "commit": "0e1244eee81badf4dbfc3b9ac505bcd1599d7c7b",
      "tree": "a8d34bbbe50609faa597f526f5b50804222dc72d",
      "parents": [
        "22eeee3338982c35b8d902dc1acf910d0f3529ab"
      ],
      "author": {
        "name": "John \"codefu\" McDole",
        "email": "codefu@google.com",
        "time": "Fri May 01 15:37:20 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 01 15:37:20 2026"
      },
      "message": "update golang (#5039)"
    },
    {
      "commit": "22eeee3338982c35b8d902dc1acf910d0f3529ab",
      "tree": "52b4ce8ed12e0c2b4685687cf6d12222e513182d",
      "parents": [
        "93db417d688244741a0640d0b76ce154258c7bd3"
      ],
      "author": {
        "name": "John \"codefu\" McDole",
        "email": "codefu@google.com",
        "time": "Fri May 01 15:25:57 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 01 15:25:57 2026"
      },
      "message": "remove gemini-cli-action workflows for now. (#5038)"
    },
    {
      "commit": "93db417d688244741a0640d0b76ce154258c7bd3",
      "tree": "793c0ff3c560ff6350ec84929164bb9c7fcd1f54",
      "parents": [
        "b375de7ee27124a45c41cd2c3adf9f0da0fa6a9b"
      ],
      "author": {
        "name": "Kate Lovett",
        "email": "katelovett@google.com",
        "time": "Thu Apr 30 21:33:39 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 30 21:33:39 2026"
      },
      "message": "[flutter-gold] Consider neutral checks completed (#5036)\n\nFixes https://github.com/flutter/flutter/issues/185832\n\nThis PR improves how Flutter Gold status updates are computed by\naccounting for completed checks that end in a `NEUTRAL` conclusion\n(alongside `SUCCESS`). It also streamlines logging and fortifies the\ncheck status evaluation.\n\n* Updates the evaluation logic so that PR checks ending in NEUTRAL are\nno longer grouped alongside incomplete or failing tests.\n* Added explicit status verification for check runs. If a check run does\nnot have the status \u0027COMPLETED\u0027, it is now safely and reliably\nclassified as incomplete.\n* Moved the log.debug statement to only capture check runs that are\ntruly incomplete or failing, significantly reducing log output noise.\n\n## Pre-launch Checklist\n\n- [x] I read the [Contributor Guide] and followed the process outlined\nthere for submitting PRs.\n- [x] I read the [Tree Hygiene] wiki page, which explains my\nresponsibilities.\n- [x] I read the [Flutter Style Guide] _recently_, and have followed its\nadvice.\n- [x] I signed the [CLA].\n- [x] I listed at least one issue that this PR fixes in the description\nabove.\n- [x] I updated/added relevant documentation (doc comments with `///`).\n- [x] I added new tests to check the change I am making, or this PR is\n[test-exempt].\n- [x] All existing and new tests are passing.\n\nIf you need help, consider asking for advice on the #hackers-new channel\non [Discord].\n\n\u003c!-- Links --\u003e\n[Contributor Guide]:\nhttps://github.com/flutter/flutter/blob/master/docs/contributing/Tree-hygiene.md#overview\n[Tree Hygiene]:\nhttps://github.com/flutter/flutter/blob/master/docs/contributing/Tree-hygiene.md\n[test-exempt]:\nhttps://github.com/flutter/flutter/blob/master/docs/contributing/Tree-hygiene.md#tests\n[Flutter Style Guide]:\nhttps://github.com/flutter/flutter/blob/master/docs/contributing/Style-guide-for-Flutter-repo.md\n[CLA]: https://cla.developers.google.com/\n[flutter/tests]: https://github.com/flutter/tests\n[breaking change policy]:\nhttps://github.com/flutter/flutter/blob/master/docs/contributing/Tree-hygiene.md#handling-breaking-changes\n[Discord]:\nhttps://github.com/flutter/flutter/blob/master/docs/contributing/Chat.md\n\n---------\n\nCo-authored-by: John \"codefu\" McDole \u003cjohn@mcdole.org\u003e\nCo-authored-by: John McDole \u003ccodefu@google.com\u003e"
    },
    {
      "commit": "b375de7ee27124a45c41cd2c3adf9f0da0fa6a9b",
      "tree": "517150279ffa8a6dd51d7a774ac02453b7612773",
      "parents": [
        "45be26a06d2a973d669308c2f24c612fe5b123c1"
      ],
      "author": {
        "name": "gaaclarke",
        "email": "30870216+gaaclarke@users.noreply.github.com",
        "time": "Tue Apr 28 01:26:22 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 28 01:26:22 2026"
      },
      "message": "Made it so dismissed approvals don\u0027t block the autosubmit bot. (#5025)\n\nfixes https://github.com/flutter/flutter/issues/185224"
    },
    {
      "commit": "45be26a06d2a973d669308c2f24c612fe5b123c1",
      "tree": "5fa7426e996a33d33ddb510fc1b4e04e2766975b",
      "parents": [
        "e642968955b980eb6c8ade0bd0051f6cf7d2c4bf"
      ],
      "author": {
        "name": "Jackson Gardner",
        "email": "jacksongardner@google.com",
        "time": "Mon Apr 27 20:46:21 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 27 20:46:21 2026"
      },
      "message": "Unlock Flutter Presubmits and Merge Queue Guard when emergency label is added. (#5033)\n\nThis addresses https://github.com/flutter/flutter/issues/185628"
    },
    {
      "commit": "e642968955b980eb6c8ade0bd0051f6cf7d2c4bf",
      "tree": "f36f23e7482a901139e82b697d6730af089d8002",
      "parents": [
        "11e416d62629e8371c76bee8da266a187d50c425"
      ],
      "author": {
        "name": "Dmitry Grand",
        "email": "dmgr@google.com",
        "time": "Mon Apr 27 20:20:24 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 27 20:20:24 2026"
      },
      "message": "Ensure sequential fetch and refetch available sha if PR is not provided (#5032)\n\nfix: https://github.com/flutter/flutter/issues/185631"
    },
    {
      "commit": "11e416d62629e8371c76bee8da266a187d50c425",
      "tree": "e599ecd96e854f31e431cc645c8862b9940d93b8",
      "parents": [
        "a02c4490abd6b7c1ba2bdaf008ff945f71c4ec17"
      ],
      "author": {
        "name": "Dmitry Grand",
        "email": "dmgr@google.com",
        "time": "Fri Apr 24 22:59:50 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 24 22:59:50 2026"
      },
      "message": "refresh all the time unless page is inactive (#5031)\n\nfix: https://github.com/flutter/flutter/issues/184529"
    },
    {
      "commit": "a02c4490abd6b7c1ba2bdaf008ff945f71c4ec17",
      "tree": "aa0dfe60eab18cf2b18222e6c233900eb7aeafa0",
      "parents": [
        "383a09b3096d1b4fcd6a5de17a7995f20fbe42e8"
      ],
      "author": {
        "name": "Dmitry Grand",
        "email": "dmgr@google.com",
        "time": "Thu Apr 23 21:22:21 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 23 21:22:21 2026"
      },
      "message": "fix `Re-run` and `Re-run failed` issue (#5030)\n\nfixed `Re-run` and `Re-run failed` issue finding PR by Merge Queue Guard Id\r\n\r\nFix: https://github.com/flutter/flutter/issues/185498"
    },
    {
      "commit": "383a09b3096d1b4fcd6a5de17a7995f20fbe42e8",
      "tree": "0dd82d7f725c1e308344d3af723c20e9d5d8f4bd",
      "parents": [
        "7cbf0ea54e768b3086347337e67b60473c8c5f5e"
      ],
      "author": {
        "name": "Jackson Gardner",
        "email": "jacksongardner@google.com",
        "time": "Thu Apr 23 17:37:14 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 23 17:37:14 2026"
      },
      "message": "Revert \"Overhaul CICD label management for presubmits (#5028)\" (#5029)\n\nThis reverts commit 7cbf0ea54e768b3086347337e67b60473c8c5f5e.\r\n\r\nThis change caused issues where we were double-scheduling presubmits on roller bots, which caused failures. Rolling this back until we get this problem resolved."
    },
    {
      "commit": "7cbf0ea54e768b3086347337e67b60473c8c5f5e",
      "tree": "37a60f07761d9f7be9a19d8ca875ef8938d6c5f9",
      "parents": [
        "f7d5009f84f8c34d2ea3d7cf31b7ba9cc41081a0"
      ],
      "author": {
        "name": "Jackson Gardner",
        "email": "jacksongardner@google.com",
        "time": "Wed Apr 22 21:27:11 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 22 21:27:11 2026"
      },
      "message": "Overhaul CICD label management for presubmits (#5028)\n\nThis change overhauls the state management for the `CICD` label to ensure trusted users can run CI seamlessly and external contributors require explicit approval.\r\n\r\n- PR Opened: Privileged users (non-draft) auto-trigger CI and get the label. Non-privileged or draft PRs go to awaiting state.\r\n- Changes Pushed (Synchronize): Privileged users trigger CI if label is present. Non-privileged users have the label removed and go to awaiting state.\r\n- Edits: Removed automatic label adding on base branch changes.\r\n- Consolidated usage of `_scheduleIfMergeable` to ensure consistent conflict checking and label processing.\r\n- Added flowchart documentation in `app_dart/docs/cicd_flowchart.md`.\r\n\r\nOnce this is merged and deployed, we can remove the \"remove CICD label\" workflows from the other repos since that\u0027s all handled in cocoon now."
    },
    {
      "commit": "f7d5009f84f8c34d2ea3d7cf31b7ba9cc41081a0",
      "tree": "0dd82d7f725c1e308344d3af723c20e9d5d8f4bd",
      "parents": [
        "710bc917c7dc1c6af48a0954533fd88a2b825c44"
      ],
      "author": {
        "name": "Dmitry Grand",
        "email": "dmgr@google.com",
        "time": "Wed Apr 22 17:05:50 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 22 17:05:50 2026"
      },
      "message": "feat: add app lifecycle observer to pause and resume presubmit timer (#5027)\n\nadd app lifecycle observer to pause and resume presubmit timer\r\nfix: https://github.com/flutter/flutter/issues/184529"
    },
    {
      "commit": "710bc917c7dc1c6af48a0954533fd88a2b825c44",
      "tree": "7efc902fe2046ff7650e938f6f51c50c05abb3ac",
      "parents": [
        "54754928c4b7f645822e8769029ba2de2bda5f08"
      ],
      "author": {
        "name": "chunhtai",
        "email": "47866232+chunhtai@users.noreply.github.com",
        "time": "Mon Apr 20 17:52:26 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 20 17:52:26 2026"
      },
      "message": "update waiting for customer response label (#5026)\n\nthe label has been renamed to \"waiting for response\""
    },
    {
      "commit": "54754928c4b7f645822e8769029ba2de2bda5f08",
      "tree": "0ecab8adc217fe2c3ec905c36a92e364c7c8adbe",
      "parents": [
        "0ed75953c51c4a333a045f2c992e12662ca82240"
      ],
      "author": {
        "name": "Jackson Gardner",
        "email": "jacksongardner@google.com",
        "time": "Fri Apr 17 20:29:07 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 17 20:29:07 2026"
      },
      "message": "Create a separate \"Flutter Presubmits\" checkrun for the unified checkrun flow. (#5022)\n\nThis allows us to add \"Flutter Presubmits\" to the required checks for release candidate branches as well, and have a less confusing name (since release candidate branches don\u0027t use the merge queue).\r\n\r\nMerge Queue Guard is still created but immediately completed when unified checkruns are created, because this is a required check.\r\n\r\nSimilarly, \"Flutter Presubmits\" is always created, and if the unified checkruns are disabled, we immediately complete it as well. This allows us to make this a required check for the `master` branch and the release candidate branches as well."
    },
    {
      "commit": "0ed75953c51c4a333a045f2c992e12662ca82240",
      "tree": "4f84c081f621e6975898b8b5a3635e76f870c3ad",
      "parents": [
        "1f542c36145bf37cfdea294310784e968568aeb7"
      ],
      "author": {
        "name": "Chris Bracken",
        "email": "chris@bracken.jp",
        "time": "Fri Apr 17 13:53:26 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 17 13:53:26 2026"
      },
      "message": "Update the bot check to recognise Swift tests (#5024)\n\nFiles ending in `Test.swift` are now recognised as valid tests. Previously, we checked for extensions like `.mm`, `.cc`, `.dart`, etc., but did not include `.swift`. This change ensures that Swift files are also covered.\r\n\r\nFixes: https://github.com/flutter/flutter/issues/185194\r\n\r\n- [S] I listed at least one issue that this PR fixes in the description above."
    },
    {
      "commit": "1f542c36145bf37cfdea294310784e968568aeb7",
      "tree": "7cd4e1978228f046fecf369a9199f29e103d1592",
      "parents": [
        "d731396eefc717aee1361bb1a3ad761224d04839"
      ],
      "author": {
        "name": "Gray Mackall",
        "email": "34871572+gmackall@users.noreply.github.com",
        "time": "Wed Apr 15 23:08:52 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 15 23:08:52 2026"
      },
      "message": "Add logs for checking of team membership (#5023)\n\nDetermine why we aren\u0027t adding the label. Gemini suggested it\u0027s possible the token doesn\u0027t have `read:org` or `read:discussion` scope, either way these logs may be helpful."
    },
    {
      "commit": "d731396eefc717aee1361bb1a3ad761224d04839",
      "tree": "9bb85ac6b1bb32a158f7934770b741d008273b03",
      "parents": [
        "63a990867f4b747d1fac8ed9140fdf6f68c11a1f"
      ],
      "author": {
        "name": "Jackson Gardner",
        "email": "jacksongardner@google.com",
        "time": "Mon Apr 13 18:22:21 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 13 18:22:21 2026"
      },
      "message": "Add an explicit checkrun which indicates that the CICD label needs to be added. (#5018)\n\nIt\u0027s very easy to forget to add the CICD label, and it isn\u0027t always clear that is what our checkruns are waiting on. This adds an explicit checkrun that says that we are waiting on the CICD label."
    },
    {
      "commit": "63a990867f4b747d1fac8ed9140fdf6f68c11a1f",
      "tree": "f14e371212c6f7079c4e98032c4f5817070cbea0",
      "parents": [
        "e7059bb9e20ca6850e4fdacfd5462653eaaa81d9"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Apr 13 07:05:05 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 13 07:05:05 2026"
      },
      "message": "chore(deps): bump actions/github-script from 8.0.0 to 9.0.0 (#5021)\n\nBumps [actions/github-script](https://github.com/actions/github-script) from 8.0.0 to 9.0.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href\u003d\"https://github.com/actions/github-script/releases\"\u003eactions/github-script\u0027s releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev9.0.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eNew features:\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003egetOctokit\u003c/code\u003e factory function\u003c/strong\u003e — Available directly in the script context. Create additional authenticated Octokit clients with different tokens for multi-token workflows, GitHub App tokens, and cross-org access. See \u003ca href\u003d\"https://github.com/actions/github-script#creating-additional-clients-with-getoctokit\"\u003eCreating additional clients with \u003ccode\u003egetOctokit\u003c/code\u003e\u003c/a\u003e for details and examples.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eOrchestration ID in user-agent\u003c/strong\u003e — The \u003ccode\u003eACTIONS_ORCHESTRATION_ID\u003c/code\u003e environment variable is automatically appended to the user-agent string for request tracing.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eBreaking changes:\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003erequire(\u0027@actions/github\u0027)\u003c/code\u003e no longer works in scripts.\u003c/strong\u003e The upgrade to \u003ccode\u003e@actions/github\u003c/code\u003e v9 (ESM-only) means \u003ccode\u003erequire(\u0027@actions/github\u0027)\u003c/code\u003e will fail at runtime. If you previously used patterns like \u003ccode\u003econst { getOctokit } \u003d require(\u0027@actions/github\u0027)\u003c/code\u003e to create secondary clients, use the new injected \u003ccode\u003egetOctokit\u003c/code\u003e function instead — it\u0027s available directly in the script context with no imports needed.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003egetOctokit\u003c/code\u003e is now an injected function parameter. Scripts that declare \u003ccode\u003econst getOctokit \u003d ...\u003c/code\u003e or \u003ccode\u003elet getOctokit \u003d ...\u003c/code\u003e will get a \u003ccode\u003eSyntaxError\u003c/code\u003e because JavaScript does not allow \u003ccode\u003econst\u003c/code\u003e/\u003ccode\u003elet\u003c/code\u003e redeclaration of function parameters. Use the injected \u003ccode\u003egetOctokit\u003c/code\u003e directly, or use \u003ccode\u003evar getOctokit \u003d ...\u003c/code\u003e if you need to redeclare it.\u003c/li\u003e\n\u003cli\u003eIf your script accesses other \u003ccode\u003e@actions/github\u003c/code\u003e internals beyond the standard \u003ccode\u003egithub\u003c/code\u003e/\u003ccode\u003eoctokit\u003c/code\u003e client, you may need to update those references for v9 compatibility.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eWhat\u0027s Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd ACTIONS_ORCHESTRATION_ID to user-agent string by \u003ca href\u003d\"https://github.com/Copilot\"\u003e\u003ccode\u003e@​Copilot\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/actions/github-script/pull/695\"\u003eactions/github-script#695\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: use deployment: false for integration test environments by \u003ca href\u003d\"https://github.com/salmanmkc\"\u003e\u003ccode\u003e@​salmanmkc\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/actions/github-script/pull/712\"\u003eactions/github-script#712\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat!: add getOctokit to script context, upgrade \u003ccode\u003e@​actions/github\u003c/code\u003e v9, \u003ccode\u003e@​octokit/core\u003c/code\u003e v7, and related packages by \u003ca href\u003d\"https://github.com/salmanmkc\"\u003e\u003ccode\u003e@​salmanmkc\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/actions/github-script/pull/700\"\u003eactions/github-script#700\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/Copilot\"\u003e\u003ccode\u003e@​Copilot\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href\u003d\"https://redirect.github.com/actions/github-script/pull/695\"\u003eactions/github-script#695\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href\u003d\"https://github.com/actions/github-script/compare/v8.0.0...v9.0.0\"\u003ehttps://github.com/actions/github-script/compare/v8.0.0...v9.0.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/actions/github-script/commit/3a2844b7e9c422d3c10d287c895573f7108da1b3\"\u003e\u003ccode\u003e3a2844b\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href\u003d\"https://redirect.github.com/actions/github-script/issues/700\"\u003e#700\u003c/a\u003e from actions/salmanmkc/expose-getoctokit + prepare re...\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/actions/github-script/commit/ca10bbdd1a7739de09e99a200c7a59f5d73a4079\"\u003e\u003ccode\u003eca10bbd\u003c/code\u003e\u003c/a\u003e fix: use \u003ccode\u003e@​octokit/core/\u003c/code\u003etypes import for v7 compatibility\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/actions/github-script/commit/86e48e20ac85c970ed1f96e718fd068173948b7b\"\u003e\u003ccode\u003e86e48e2\u003c/code\u003e\u003c/a\u003e merge: incorporate main branch changes\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/actions/github-script/commit/c1084728b5b935ec4ddc1e4cee877b01797b3ff9\"\u003e\u003ccode\u003ec108472\u003c/code\u003e\u003c/a\u003e chore: rebuild dist for v9 upgrade and getOctokit factory\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/actions/github-script/commit/afff112e4f8b57c718168af75b89ce00bc8d091d\"\u003e\u003ccode\u003eafff112\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href\u003d\"https://redirect.github.com/actions/github-script/issues/712\"\u003e#712\u003c/a\u003e from actions/salmanmkc/deployment-false + fix user-ag...\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/actions/github-script/commit/ff8117e5b78c415f814f39ad6998f424fee7b817\"\u003e\u003ccode\u003eff8117e\u003c/code\u003e\u003c/a\u003e ci: fix user-agent test to handle orchestration ID\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/actions/github-script/commit/81c6b7876079abe10ff715951c9fc7b3e1ab389d\"\u003e\u003ccode\u003e81c6b78\u003c/code\u003e\u003c/a\u003e ci: use deployment: false to suppress deployment noise from integration tests\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/actions/github-script/commit/3953caf8858d318f37b6cc53a9f5708859b5a7b7\"\u003e\u003ccode\u003e3953caf\u003c/code\u003e\u003c/a\u003e docs: update README examples from \u003ca href\u003d\"https://github.com/v8\"\u003e\u003ccode\u003e@​v8\u003c/code\u003e\u003c/a\u003e to \u003ca href\u003d\"https://github.com/v9\"\u003e\u003ccode\u003e@​v9\u003c/code\u003e\u003c/a\u003e, add getOctokit docs and v9 brea...\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/actions/github-script/commit/c17d55b90dcdb3d554d0027a6c180a7adc2daf78\"\u003e\u003ccode\u003ec17d55b\u003c/code\u003e\u003c/a\u003e ci: add getOctokit integration test job\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/actions/github-script/commit/a047196d9a02fe92098771cafbb98c2f1814e408\"\u003e\u003ccode\u003ea047196\u003c/code\u003e\u003c/a\u003e test: add getOctokit integration tests via callAsyncFunction\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href\u003d\"https://github.com/actions/github-script/compare/ed597411d8f924073f98dfc5c65a23a2325f34cd...3a2844b7e9c422d3c10d287c895573f7108da1b3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name\u003dactions/github-script\u0026package-manager\u003dgithub_actions\u0026previous-version\u003d8.0.0\u0026new-version\u003d9.0.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don\u0027t alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\u003c/details\u003e"
    },
    {
      "commit": "e7059bb9e20ca6850e4fdacfd5462653eaaa81d9",
      "tree": "b5513876707e55cc52fffcb347024b8f5a96e1f0",
      "parents": [
        "6e04c32328bdc235be45aee552131524a475ae43"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Apr 13 07:05:03 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 13 07:05:03 2026"
      },
      "message": "chore(deps): bump actions/create-github-app-token from 3.0.0 to 3.1.1 (#5020)\n\nBumps [actions/create-github-app-token](https://github.com/actions/create-github-app-token) from 3.0.0 to 3.1.1.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href\u003d\"https://github.com/actions/create-github-app-token/releases\"\u003eactions/create-github-app-token\u0027s releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.1.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href\u003d\"https://github.com/actions/create-github-app-token/compare/v3.1.0...v3.1.1\"\u003e3.1.1\u003c/a\u003e (2026-04-11)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eimprove error message when app identifier is empty (\u003ca href\u003d\"https://redirect.github.com/actions/create-github-app-token/issues/362\"\u003e#362\u003c/a\u003e) (\u003ca href\u003d\"https://github.com/actions/create-github-app-token/commit/07e2b760664f080c40eec4eacf7477256582db36\"\u003e07e2b76\u003c/a\u003e), closes \u003ca href\u003d\"https://redirect.github.com/actions/create-github-app-token/issues/249\"\u003e#249\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev3.1.0\u003c/h2\u003e\n\u003ch1\u003e\u003ca href\u003d\"https://github.com/actions/create-github-app-token/compare/v3.0.0...v3.1.0\"\u003e3.1.0\u003c/a\u003e (2026-04-11)\u003c/h1\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e bump p-retry from 7.1.1 to 8.0.0 (\u003ca href\u003d\"https://redirect.github.com/actions/create-github-app-token/issues/357\"\u003e#357\u003c/a\u003e) (\u003ca href\u003d\"https://github.com/actions/create-github-app-token/commit/3bbe07d928e2d6c30bf3e37c6b89edbc4045facf\"\u003e3bbe07d\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd \u003ccode\u003eclient-id\u003c/code\u003e input and deprecate \u003ccode\u003eapp-id\u003c/code\u003e (\u003ca href\u003d\"https://redirect.github.com/actions/create-github-app-token/issues/353\"\u003e#353\u003c/a\u003e) (\u003ca href\u003d\"https://github.com/actions/create-github-app-token/commit/e6bd4e6970172bed9fe138b2eaf4cbffa4cca8f9\"\u003ee6bd4e6\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate permission inputs (\u003ca href\u003d\"https://redirect.github.com/actions/create-github-app-token/issues/358\"\u003e#358\u003c/a\u003e) (\u003ca href\u003d\"https://github.com/actions/create-github-app-token/commit/076e9480ca6e9633bff412d05eff0fc2f1e7d2be\"\u003e076e948\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/actions/create-github-app-token/commit/1b10c78c7865c340bc4f6099eb2f838309f1e8c3\"\u003e\u003ccode\u003e1b10c78\u003c/code\u003e\u003c/a\u003e build(release): 3.1.1 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/actions/create-github-app-token/commit/07e2b760664f080c40eec4eacf7477256582db36\"\u003e\u003ccode\u003e07e2b76\u003c/code\u003e\u003c/a\u003e fix: improve error message when app identifier is empty (\u003ca href\u003d\"https://redirect.github.com/actions/create-github-app-token/issues/362\"\u003e#362\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/actions/create-github-app-token/commit/ea0121618bb39abc1cff180c258978a02d4e04fd\"\u003e\u003ccode\u003eea01216\u003c/code\u003e\u003c/a\u003e ci: remove publish-immutable-action workflow (\u003ca href\u003d\"https://redirect.github.com/actions/create-github-app-token/issues/361\"\u003e#361\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/actions/create-github-app-token/commit/7bd03711494f032dfa3be3558f7dc8787b0be333\"\u003e\u003ccode\u003e7bd0371\u003c/code\u003e\u003c/a\u003e build(release): 3.1.0 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/actions/create-github-app-token/commit/e6bd4e6970172bed9fe138b2eaf4cbffa4cca8f9\"\u003e\u003ccode\u003ee6bd4e6\u003c/code\u003e\u003c/a\u003e feat: add \u003ccode\u003eclient-id\u003c/code\u003e input and deprecate \u003ccode\u003eapp-id\u003c/code\u003e (\u003ca href\u003d\"https://redirect.github.com/actions/create-github-app-token/issues/353\"\u003e#353\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/actions/create-github-app-token/commit/076e9480ca6e9633bff412d05eff0fc2f1e7d2be\"\u003e\u003ccode\u003e076e948\u003c/code\u003e\u003c/a\u003e feat: update permission inputs (\u003ca href\u003d\"https://redirect.github.com/actions/create-github-app-token/issues/358\"\u003e#358\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/actions/create-github-app-token/commit/3bbe07d928e2d6c30bf3e37c6b89edbc4045facf\"\u003e\u003ccode\u003e3bbe07d\u003c/code\u003e\u003c/a\u003e fix(deps): bump p-retry from 7.1.1 to 8.0.0 (\u003ca href\u003d\"https://redirect.github.com/actions/create-github-app-token/issues/357\"\u003e#357\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/actions/create-github-app-token/commit/28a99e369c23d11dbaf8e9ff29e577c7129aaa6c\"\u003e\u003ccode\u003e28a99e3\u003c/code\u003e\u003c/a\u003e build(deps-dev): bump c8 from 10.1.3 to 11.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/actions/create-github-app-token/commit/4df50600ef5eaf70cb3514fbb1716e183ec4b25d\"\u003e\u003ccode\u003e4df5060\u003c/code\u003e\u003c/a\u003e build(deps-dev): bump open-cli from 8.0.0 to 9.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/actions/create-github-app-token/commit/4843c538d99b70fef283d0c8a7e12a8f4c9a7b70\"\u003e\u003ccode\u003e4843c53\u003c/code\u003e\u003c/a\u003e build(deps-dev): bump the development-dependencies group with 3 updates\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href\u003d\"https://github.com/actions/create-github-app-token/compare/f8d387b68d61c58ab83c6c016672934102569859...1b10c78c7865c340bc4f6099eb2f838309f1e8c3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name\u003dactions/create-github-app-token\u0026package-manager\u003dgithub_actions\u0026previous-version\u003d3.0.0\u0026new-version\u003d3.1.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don\u0027t alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\u003c/details\u003e"
    },
    {
      "commit": "6e04c32328bdc235be45aee552131524a475ae43",
      "tree": "d2e919270564dd8a30f3c6fdb878063cca4bf1a0",
      "parents": [
        "f20d3ad75de8c8a9a5a326c7bedf83dec34aa8cc"
      ],
      "author": {
        "name": "Jackson Gardner",
        "email": "jacksongardner@google.com",
        "time": "Wed Apr 08 16:55:55 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 08 16:55:55 2026"
      },
      "message": "Bubble up more descriptive logs from GitHub when enqueuing a PR fails. (#5017)\n\nGitHub does provide useful and descriptive messages when there is some issue with enqueuing the PR into the merge queue. Unfortunately, right now we\u0027re just saying `400 GraphQL mutate failed` which doesn\u0027t help the user figure out how to unblock their PR. This change adds the info from the GitHub response in to the message."
    },
    {
      "commit": "f20d3ad75de8c8a9a5a326c7bedf83dec34aa8cc",
      "tree": "9e48f6d3053d38e64fc92a4ef9d127ace87b579d",
      "parents": [
        "569810c2ea3fa61b13d6b01998d3a5d27bc2f034"
      ],
      "author": {
        "name": "Dmitry Grand",
        "email": "dmgr@google.com",
        "time": "Mon Apr 06 17:11:05 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 06 17:11:05 2026"
      },
      "message": "default text if summary is null or empty (#5016)\n\nFix: https://github.com/flutter/flutter/issues/184360"
    },
    {
      "commit": "569810c2ea3fa61b13d6b01998d3a5d27bc2f034",
      "tree": "2f4c028a927705b6572e76817de106c66d3e0a88",
      "parents": [
        "24a0c2801dbcaa66b98304f2a1580acc466d444f"
      ],
      "author": {
        "name": "Jackson Gardner",
        "email": "jacksongardner@google.com",
        "time": "Fri Apr 03 18:02:56 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 03 18:02:56 2026"
      },
      "message": "Gracefully handle failure to acknowledge a pubsub message. (#5015)\n\nIf the pubsub message has expired for whatever reason, we should catch the exception and continue with the rest of the code path."
    },
    {
      "commit": "24a0c2801dbcaa66b98304f2a1580acc466d444f",
      "tree": "d750dfa4b52853812f489218e289c4d58d24936a",
      "parents": [
        "b9a228d14310bacfaebea73052721ca088f4c271"
      ],
      "author": {
        "name": "Dmitry Grand",
        "email": "dmgr@google.com",
        "time": "Thu Apr 02 23:11:50 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 02 23:11:50 2026"
      },
      "message": "Store DateTime in millisecondsSinceEpoch (#5014)\n\nFix: https://github.com/flutter/flutter/issues/184542"
    },
    {
      "commit": "b9a228d14310bacfaebea73052721ca088f4c271",
      "tree": "875dd5bd312c4208e425f2b16fb4ce34f7c96d92",
      "parents": [
        "fe79f8342e3337d4333c303ea7b3d30bd528e86f"
      ],
      "author": {
        "name": "Dmitry Grand",
        "email": "dmgr@google.com",
        "time": "Thu Apr 02 21:13:24 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 02 21:13:24 2026"
      },
      "message": "Lookup for sha in presubmit_guards if it is not found in ciStaging (#5013)\n\nLookup for sha in `presubmit_guards` if it is not found in `ciStaging` in `GetEngineArtifactsReady` api.\r\n\r\nFix: https://github.com/flutter/flutter/issues/184530"
    },
    {
      "commit": "fe79f8342e3337d4333c303ea7b3d30bd528e86f",
      "tree": "04680708bed94804cfe1cf866c2fe57df90242c2",
      "parents": [
        "0158e58b92b7c55aa003f75a0027161565839d42"
      ],
      "author": {
        "name": "Dmitry Grand",
        "email": "dmgr@google.com",
        "time": "Thu Apr 02 18:03:58 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 02 18:03:58 2026"
      },
      "message": "implemented default job details (#5012)\n\nRenamed execution log to execution details.\r\nImplemented default job execution details is summary is empty.\r\nChanged  job `status` type from `String` to `TaskStatus`.\r\nFixed unit tests.\r\n\r\nFix: https://github.com/flutter/flutter/issues/184360"
    },
    {
      "commit": "0158e58b92b7c55aa003f75a0027161565839d42",
      "tree": "9677b8616f7dd1ae95118a77beb52890fee30a92",
      "parents": [
        "25fe8ecb00ca81555c60685a10da1dc80c2f8de4"
      ],
      "author": {
        "name": "chunhtai",
        "email": "47866232+chunhtai@users.noreply.github.com",
        "time": "Wed Apr 01 21:06:09 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 01 21:06:09 2026"
      },
      "message": "pin sign_in_button to 4.0.1 (#5011)\n\nsign_in_button 4.1.0 uses a range version for font_awesome_flutter, but it doesn\u0027t work with font_awesome_flutter v11\r\nhttps://github.com/juliansteenbakker/sign_in_button/blob/cf597c72df3c1925680f824041b74dc32166c79c/pubspec.yaml#L15\r\n\r\npin the sign_in_button to 4.0.1"
    },
    {
      "commit": "25fe8ecb00ca81555c60685a10da1dc80c2f8de4",
      "tree": "6834115e654783a47ec8f00bc8de5996e1615d44",
      "parents": [
        "98cdde6c6c7d3bb94ec7373d2650fcd45d7605ec"
      ],
      "author": {
        "name": "Dmitry Grand",
        "email": "dmgr@google.com",
        "time": "Tue Mar 31 21:49:43 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 31 21:49:43 2026"
      },
      "message": "properly handle deleting sha from query parameters (#5009)\n\nFix: https://github.com/flutter/flutter/issues/184372"
    },
    {
      "commit": "98cdde6c6c7d3bb94ec7373d2650fcd45d7605ec",
      "tree": "0a076af625f9af6aab0870f409a6d2b289cec3e1",
      "parents": [
        "22e7ba8e3e8df2b40dd8bfe345822b4cc62b07e7"
      ],
      "author": {
        "name": "Dmitry Grand",
        "email": "dmgr@google.com",
        "time": "Tue Mar 31 21:44:16 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 31 21:44:16 2026"
      },
      "message": "Store `buildNumber` in `presubmitJob` on `inProgress` event (#5008)\n\nStore `buildNumber` in `presubmitJob` on `inProgress` event\r\n\r\nFix: https://github.com/flutter/flutter/issues/184371"
    },
    {
      "commit": "22e7ba8e3e8df2b40dd8bfe345822b4cc62b07e7",
      "tree": "c51119d89560c71eb731e7649fc4ff35bb5b0f2d",
      "parents": [
        "ff3b197edf806daa7a1eae30f069cfcd888d2bd0"
      ],
      "author": {
        "name": "Gray Mackall",
        "email": "34871572+gmackall@users.noreply.github.com",
        "time": "Tue Mar 31 20:37:53 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 31 20:37:53 2026"
      },
      "message": "Auto add CICD label when PR author is a member or owner of flutter organization (#4997)\n\nFixes https://github.com/flutter/flutter/issues/183618"
    },
    {
      "commit": "ff3b197edf806daa7a1eae30f069cfcd888d2bd0",
      "tree": "7c007c1f71db0b0e41361f5f568ef11cc3261e4a",
      "parents": [
        "59239db4b7ffababd532836d8064b2c8592f47fe"
      ],
      "author": {
        "name": "Kate Lovett",
        "email": "katelovett@google.com",
        "time": "Tue Mar 31 20:31:45 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 31 20:31:45 2026"
      },
      "message": "Add pub roller to autoroller list (#5010)\n\nFixes https://github.com/flutter/flutter/issues/183617\r\nThe flutter-pub-roller-bot was omitted from the list of autorollers."
    },
    {
      "commit": "59239db4b7ffababd532836d8064b2c8592f47fe",
      "tree": "cc4dc06fd8d2f7b858185a4c4e8a0adfde827a94",
      "parents": [
        "3837952b1066e309e7f9245e0a810c26e68442fb"
      ],
      "author": {
        "name": "Gray Mackall",
        "email": "34871572+gmackall@users.noreply.github.com",
        "time": "Tue Mar 31 17:43:06 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 31 17:43:06 2026"
      },
      "message": "Fix `pullRequestApprovalRequirementsMessage` for non-flutter-hackers approval groups (#5007)\n\nFixes the message when the approval group is not `flutter-hackers`, see:\r\nhttps://github.com/dart-lang/tools/pull/2351#issuecomment-4158318594"
    },
    {
      "commit": "3837952b1066e309e7f9245e0a810c26e68442fb",
      "tree": "c8d851bd427cced9eb03ac7b7a3e0b02ea4822fb",
      "parents": [
        "6631586512d93e728d8d9d557a80bd1168849fca"
      ],
      "author": {
        "name": "Dmitry Grand",
        "email": "dmgr@google.com",
        "time": "Mon Mar 30 18:04:52 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 30 18:04:52 2026"
      },
      "message": "added Jackson (#5004)\n\nAdded unified check run functionality to Jackson"
    },
    {
      "commit": "6631586512d93e728d8d9d557a80bd1168849fca",
      "tree": "e12d094d826f3089d6ac16fe391152b263acfce4",
      "parents": [
        "66fbf98e79565f48e9a1b2a91a7ccad9a07f6575"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Mar 30 07:05:21 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 30 07:05:21 2026"
      },
      "message": "chore(deps): bump subosito/flutter-action from 2.22.0 to 2.23.0 (#5005)\n\nBumps [subosito/flutter-action](https://github.com/subosito/flutter-action) from 2.22.0 to 2.23.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href\u003d\"https://github.com/subosito/flutter-action/releases\"\u003esubosito/flutter-action\u0027s releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.23.0\u003c/h2\u003e\n\u003ch2\u003eWhat\u0027s Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efeat: fvm support by \u003ca href\u003d\"https://github.com/pedroafmonteiro\"\u003e\u003ccode\u003e@​pedroafmonteiro\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/subosito/flutter-action/pull/383\"\u003esubosito/flutter-action#383\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd separate pub-cache boolean flag by \u003ca href\u003d\"https://github.com/kuhnroyal\"\u003e\u003ccode\u003e@​kuhnroyal\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/subosito/flutter-action/pull/377\"\u003esubosito/flutter-action#377\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echores by \u003ca href\u003d\"https://github.com/bartekpacia\"\u003e\u003ccode\u003e@​bartekpacia\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/subosito/flutter-action/pull/390\"\u003esubosito/flutter-action#390\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eadd a CI job that checks out a specific master commit by \u003ca href\u003d\"https://github.com/bartekpacia\"\u003e\u003ccode\u003e@​bartekpacia\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/subosito/flutter-action/pull/391\"\u003esubosito/flutter-action#391\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ereadme: minor updates by \u003ca href\u003d\"https://github.com/bartekpacia\"\u003e\u003ccode\u003e@​bartekpacia\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/subosito/flutter-action/pull/392\"\u003esubosito/flutter-action#392\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSimplify extraction of zip files by \u003ca href\u003d\"https://github.com/kuhnroyal\"\u003e\u003ccode\u003e@​kuhnroyal\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/subosito/flutter-action/pull/379\"\u003esubosito/flutter-action#379\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/pedroafmonteiro\"\u003e\u003ccode\u003e@​pedroafmonteiro\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href\u003d\"https://redirect.github.com/subosito/flutter-action/pull/383\"\u003esubosito/flutter-action#383\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href\u003d\"https://github.com/subosito/flutter-action/compare/v2...v2.23.0\"\u003ehttps://github.com/subosito/flutter-action/compare/v2...v2.23.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/subosito/flutter-action/commit/1a449444c387b1966244ae4d4f8c696479add0b2\"\u003e\u003ccode\u003e1a44944\u003c/code\u003e\u003c/a\u003e Simplify extraction of zip files (\u003ca href\u003d\"https://redirect.github.com/subosito/flutter-action/issues/379\"\u003e#379\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/subosito/flutter-action/commit/4efee115f1f8f612aafcb187ee16db202d7e4376\"\u003e\u003ccode\u003e4efee11\u003c/code\u003e\u003c/a\u003e readme: minor updates (\u003ca href\u003d\"https://redirect.github.com/subosito/flutter-action/issues/392\"\u003e#392\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/subosito/flutter-action/commit/d97c38e97db7a24bc6d2e3f8fb2cda7c88af10d9\"\u003e\u003ccode\u003ed97c38e\u003c/code\u003e\u003c/a\u003e add a CI job that checks out a specific master commit (\u003ca href\u003d\"https://redirect.github.com/subosito/flutter-action/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/subosito/flutter-action/commit/75b905c640a294aa31848f7ce354543c0e1bdf88\"\u003e\u003ccode\u003e75b905c\u003c/code\u003e\u003c/a\u003e chores (\u003ca href\u003d\"https://redirect.github.com/subosito/flutter-action/issues/390\"\u003e#390\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/subosito/flutter-action/commit/7ff07e9ecd05af9a026fc24436c812d388c5b311\"\u003e\u003ccode\u003e7ff07e9\u003c/code\u003e\u003c/a\u003e Add separate pub-cache boolean flag (\u003ca href\u003d\"https://redirect.github.com/subosito/flutter-action/issues/377\"\u003e#377\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/subosito/flutter-action/commit/6622f58c447610e884866ffcba3ac6dff23b1039\"\u003e\u003ccode\u003e6622f58\u003c/code\u003e\u003c/a\u003e feat: fvm support (\u003ca href\u003d\"https://redirect.github.com/subosito/flutter-action/issues/383\"\u003e#383\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href\u003d\"https://github.com/subosito/flutter-action/compare/0ca7a949e71ae44c8e688a51c5e7e93b2c87e295...1a449444c387b1966244ae4d4f8c696479add0b2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name\u003dsubosito/flutter-action\u0026package-manager\u003dgithub_actions\u0026previous-version\u003d2.22.0\u0026new-version\u003d2.23.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don\u0027t alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\u003c/details\u003e"
    },
    {
      "commit": "66fbf98e79565f48e9a1b2a91a7ccad9a07f6575",
      "tree": "2b28ac425a27933a56559713b0b5aff9a71c8407",
      "parents": [
        "fa4caccb12b57bf8df8885ea2f7959a4431730d5"
      ],
      "author": {
        "name": "Dmitry Grand",
        "email": "dmgr@google.com",
        "time": "Thu Mar 26 23:47:17 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Mar 26 23:47:17 2026"
      },
      "message": "Retry failed firestore transaction if re-run requested while check-run is not yet completed. (#5003)\n\nRetry failed firestore transaction if re-run requested while check-run\nis not yet completed.\n\nDecreased `delayFactor` to default 200 milliseconds and increased\n`maxAttempts` from 8 by default to 10 to lover first retry delay and\npotentially decrease response while survive flood of change requested\nfrom scheduled to in progress.\n\nfix: https://github.com/flutter/flutter/issues/184215"
    },
    {
      "commit": "fa4caccb12b57bf8df8885ea2f7959a4431730d5",
      "tree": "819afd29ac4c654bdb5712ea5a36d03dc9914ee0",
      "parents": [
        "ede56c79fbb0bbca032954403ce688ad4aec45ab"
      ],
      "author": {
        "name": "Dmitry Grand",
        "email": "dmgr@google.com",
        "time": "Thu Mar 26 00:06:35 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Mar 26 00:06:35 2026"
      },
      "message": "rename check/build to job (#5000)\n\nrename check/build to job"
    },
    {
      "commit": "ede56c79fbb0bbca032954403ce688ad4aec45ab",
      "tree": "ffc7e8d8d26a16ad8688ecec5ef755d1cafce91a",
      "parents": [
        "5bfe550478c376cc1f612f6228e2545cea1f700d"
      ],
      "author": {
        "name": "Dmitry Grand",
        "email": "dmgr@google.com",
        "time": "Wed Mar 25 23:46:04 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Mar 25 23:46:04 2026"
      },
      "message": "Temporary remove Jackson from beta users of Unified Check Run (#5002)\n\nTemporary remove Jackson from beta users of Unified Check Run"
    },
    {
      "commit": "5bfe550478c376cc1f612f6228e2545cea1f700d",
      "tree": "bcae585f375ca6381b3205161e678c5d4fcb5899",
      "parents": [
        "ccfc4279441740ac2e2d7dd417cd8a22b71ab1e8"
      ],
      "author": {
        "name": "Dmitry Grand",
        "email": "dmgr@google.com",
        "time": "Wed Mar 25 19:42:29 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Mar 25 19:42:29 2026"
      },
      "message": "turned on unified check run for Jackson (#4999)\n\nAdded Jackson to beta testers of Unified Check Run\r\n\r\nPart of: https://github.com/flutter/flutter/issues/176988"
    },
    {
      "commit": "ccfc4279441740ac2e2d7dd417cd8a22b71ab1e8",
      "tree": "312d96e593a0c2ff99aaad96fe8b3c1c423cc802",
      "parents": [
        "4d064c3a3a06631c65cb4af40ce8d2ad76a801e3"
      ],
      "author": {
        "name": "John \"codefu\" McDole",
        "email": "codefu@google.com",
        "time": "Tue Mar 24 20:51:28 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 24 20:51:28 2026"
      },
      "message": "fix: error suppressing tests on packages (#4996)\n\nvarious problems:\r\n- dialog widgets aren\u0027t mounted and getting dismissed\r\n- githubService.getIssue() is odd (Future\u003cIssue\u003e?)\r\n- Add fake auth to dashboard for non-prod\r\n- Add fake issue response for testing\r\n- see flutter/packages"
    },
    {
      "commit": "4d064c3a3a06631c65cb4af40ce8d2ad76a801e3",
      "tree": "a76e4b603c312a218b5c2fcab6c95978fb015a9c",
      "parents": [
        "39f906ca0995060927c1b3ba23f0e6b5ad78035a"
      ],
      "author": {
        "name": "Dmitry Grand",
        "email": "dmgr@google.com",
        "time": "Tue Mar 24 13:52:16 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 24 13:52:16 2026"
      },
      "message": "Show link to presubmit dashboard (#4995)\n\nShow link to presubmit dashboard on `Merge Queue Guard` check once it created\r\n\r\nFix: https://github.com/flutter/flutter/issues/184032"
    }
  ],
  "next": "39f906ca0995060927c1b3ba23f0e6b5ad78035a"
}
