--- name: release-dry-run description: "Dry run for release: summarize changes since last release and suggest version bump." targets: - "*" --- This is a dry run command for release. It will summarize the changes since the last release and suggest the appropriate version bump based on semantic versioning. ## Steps 1. Get the latest release tag. - Run `git fetch --tags` to ensure all tags are available. - Run `git describe --tags --abbrev=0` to get the latest tag. - Assign the result to $latest_tag. 2. Compare code changes between the latest tag and the current HEAD. - Run `git log ${latest_tag}..HEAD --oneline` to get the commit list. - Run `git diff ${latest_tag}..HEAD --stat` to get the file change statistics. 3. Analyze the changes and create a summary in the following format: ``` ## Changes Summary ### Commits since ${latest_tag} - List of commits with their messages ### Changed Files - Summary of file changes (added, modified, deleted) ### Change Categories - **Breaking Changes**: List any breaking changes (API changes, removed features, etc.) - **New Features**: List new features added - **Bug Fixes**: List bug fixes - **Other Changes**: List other changes (refactoring, documentation, tests, etc.) ``` 4. Based on the analysis, suggest the appropriate version bump following semantic versioning rules: - **MAJOR** (X.0.0): Breaking changes that are not backward compatible - Removed or renamed public APIs - Changed behavior of existing features - Dropped support for older Node.js versions - **MINOR** (x.Y.0): New features that are backward compatible - New CLI commands or options - New configuration options - New tool support - **PATCH** (x.y.Z): Bug fixes and minor improvements - Bug fixes - Documentation updates - Internal refactoring without API changes - Dependency updates (unless they cause breaking changes) **Important**: Whenever the changes include any feature removal or a change in the behavior of an existing feature, do not hesitate to choose a MAJOR version bump. Prioritize protecting users from unexpected breakage over keeping the version number low. 5. Output the final recommendation in the following format: ``` ## Version Bump Recommendation Current version: ${latest_tag} Recommended bump: MAJOR / MINOR / PATCH Suggested new version: vX.Y.Z ### Reasoning - Explain why this version bump is recommended based on the changes. ``` **Note**: This is a dry run only. No files will be modified and no commits will be made.