--- name: prepare-flet-release description: Use when asked to prepare new Flet release by bumping versions and author release notes. --- ## Inputs * Previous Flet version from repo tags. * Whether it's minor or major release. ## Related Skills Always use [`flet-deprecation`](../flet-deprecation/SKILL.md) during release prep to audit deprecations for the target version. Also use it when release prep includes: - adding new deprecations in this release, - removing APIs whose `delete_version` equals this release version, - auditing changelog entries that mention deprecations/removals. Use [`write-changelog-entry`](../write-changelog-entry/SKILL.md) for drafting or refining individual changelog items. That skill is the source of truth for item wording, scope selection, and what should or should not be mentioned in a single entry. ## Steps * Take latest Flet release version from the repo and increment third (patch) digit to get the next version if it's a minor release or second (minor) digit if it's a major release. * Pull the latest `main` and create a new branch named `prepare-release-{new_version}` from `main`. * Set new version in packages/flet/pubspec.yaml. * Run pub get in /client dir to refresh pubspec.lock with new version. * Add new entries into `packages/flet/CHANGELOG.md` and `/CHANGELOG.md` from the git log since the last release. * Use [`write-changelog-entry`](../write-changelog-entry/SKILL.md) for every individual item. * Build the candidate set from relevant commits, PRs, and issues since the last release. * Ensure that all inferred PRs and issues in the changelog have the `{version}` milestone attached on GitHub. * If a related issue or PR is missing the `{version}` milestone, update the milestone on GitHub and keep the link in the changelog. * When selecting candidates for `packages/flet/CHANGELOG.md`, prefer items with meaningful Flutter-side impact. * When selecting candidates for `sdk/python/packages/*/CHANGELOG.md`, prefer published Python-facing changes; do not include extension-internal Flutter implementation work unless it materially changes user-visible Python behavior. * If the release includes breaking changes, API removals, or deprecations, update `website/docs/updates/release-notes.md` and `website/docs/updates/breaking-changes/index.md`. * Use [`flet-deprecation`](../flet-deprecation/SKILL.md) for deprecation guide requirements and sidebar placement. * Group related deprecations into one migration guide page where possible, and add guide pages under the release version in `website/sidebars.yml`. * Scan all changelogs for `Unreleased` sections, not only the root ones: * `/CHANGELOG.md` * `packages/flet/CHANGELOG.md` * `sdk/python/packages/*/CHANGELOG.md` Recommended check command: `rg -n "^##\\s*\\[?Unreleased\\]?|^##\\s*Unreleased" -S CHANGELOG.md packages/flet/CHANGELOG.md sdk/python/packages/*/CHANGELOG.md` * If any changelog has an `Unreleased` section, convert that section into the new release section (`## {new_version}`), preserving and re-sorting its items. Do not leave duplicate release content in both `Unreleased` and `{new_version}`. This conversion must be done for every matched changelog from the scan above. * Sort items in changelogs as follows, omitting empty sections: * New features * Improvements * Breaking changes * Deprecations * Bug fixes * Documentation * Other changes (chore, refactor, etc.) Put removals of previously deprecated APIs under `Breaking changes`, and keep newly deprecated-but-still-working APIs under `Deprecations`. * Templates are in `sdk/python/templates/` and automatically packaged as zip artifacts with the GitHub Release. No manual branch creation in external repos is needed.