name: Quarterly Scheduled Tasks
on:
  schedule:
    # Triggers quarterly at 09:40 UTC on the 2nd of Feb, May, Aug, Nov
    # Use https://crontab.guru to test and adjust schedules
    # Actions can be delayed or dropped during heavy load periods,
    # e.g. top of the hour, first of the month. Offset accordingly.
    - cron: 40 09 2 2,5,8,11 *
  workflow_dispatch:

jobs:
  create_issues:
    name: Create quarterly task issues
    runs-on: ubuntu-latest
    if: ${{ github.repository == 'flutter/flutter' }}
    permissions:
      issues: write
    steps:
      - name: Create localization update issue
        run: |
          gh issue create \
            --title "$TITLE" \
            --assignee "$ASSIGNEES" \
            --label "$LABELS" \
            --body "$BODY"
        env:
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          GH_REPO: ${{ github.repository }}
          TITLE: '[Automated Task] Quarterly Localizations Update (flutter_localizations)'
          ASSIGNEES: QuncCccccc
          LABELS: 'automated task,a: internationalization,team-framework'
          BODY: |
            ### Quarterly Localization Update

            **Context**: Ahead of the upcoming stable release cut, localized strings need to be synchronized from the internal console into the framework.

            ### Checklist
            - [ ] Check for any new strings that need to be sent upstream for translation.
            - [ ] Pull latest translations from internal translation console.
            - [ ] Update localizations in `flutter_localizations`, Material (`material_ui`), and Cupertino (`cupertino_ui`).
              - [ ] **Follow-up check**: Note that updates to Material or Cupertino localizations might need to wait for the stable roll. If so, file a new follow-up issue to complete after the stable roll.
            - [ ] Run test suite for localizations.
            - [ ] Open PR to close this issue.

            *This issue was automatically generated by GitHub Actions workflow.*

      - name: Create goldctl update issue
        run: |
          gh issue create \
            --title "$TITLE" \
            --assignee "$ASSIGNEES" \
            --label "$LABELS" \
            --body "$BODY"
        env:
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          GH_REPO: ${{ github.repository }}
          TITLE: '[Automated Task] Bump goldctl version in .ci.yaml'
          ASSIGNEES: Piinks
          LABELS: 'automated task,team-ecosystem,infra: flutter gold'
          BODY: |
            ### Quarterly goldctl Version Update

            **Context**: Ahead of the upcoming stable release cut, the `goldctl` binary version used for golden file testing needs to be updated to the latest revision in both `flutter/flutter` and `flutter/packages`.

            ### Checklist
            - [ ] Check for the latest `goldctl` git revision (e.g. from [CIPD](https://chrome-infra-packages.appspot.com/p/skia/tools/goldctl) or the [Skia Gold repository](https://skia.googlesource.com/buildbot/+/refs/heads/main/gold-client)).
            - [ ] Update `goldctl` in `flutter/flutter`:
              - [ ] Update `git_revision` for `goldctl` instances in `.ci.yaml`.
              - [ ] Validate `.ci.yaml` changes and ensure tests pass.
              - [ ] Open PR in `flutter/flutter` to close this issue.
            - [ ] Update `goldctl` in `flutter/packages`:
              - [ ] Update `goldctl` version in `.ci.yaml`.
              - [ ] Run golden file tests and verify CI checks pass.
              - [ ] Open PR in `flutter/packages`.

            *This issue was automatically generated by GitHub Actions workflow.*

      - name: Create Dart SDK constraint bump issue
        run: |
          gh issue create \
            --title "$TITLE" \
            --assignee "$ASSIGNEES" \
            --label "$LABELS" \
            --body "$BODY"
        env:
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          GH_REPO: ${{ github.repository }}
          TITLE: '[Automated Task] Quarterly Dart SDK constraint bump'
          ASSIGNEES: justinmc
          LABELS: 'automated task,team-framework'
          BODY: |
            ### Quarterly Dart SDK Constraint Bump

            **Context**: Ahead of the upcoming stable release, the minimum Dart SDK version constraint across `flutter/flutter` should be bumped to align with the current stable release.

            See [Bumping the Dart SDK version constraint](https://github.com/flutter/flutter/blob/main/docs/infra/Bumping-the-Dart-SDK-version.md) for full instructions and policies.

            ### Checklist
            - [ ] Verify the target Dart SDK has rolled into the repository (check Engine stamp / cache).
            - [ ] Run the bump script across `flutter/flutter`:
              ```bash
              dart dev/tools/bin/bump_version_constraints.dart <OLD_SDK_CONSTRAINT> <NEW_SDK_CONSTRAINT>
              ```
              *(Alternatively, use the `bump-dart` agent skill).*
            - [ ] Update checksums and lockfiles:
              ```bash
              flutter update-packages --force-upgrade --update-hashes
              ```
            - [ ] Run static analysis and tests:
              ```bash
              dart --enable-asserts dev/bots/analyze.dart
              ```
            - [ ] Open PR in `flutter/flutter` to close this issue.

            *This issue was automatically generated by GitHub Actions workflow.*
