Repository navigation
feat!: Reorder release notes and enhance change file validation - #15
Conversation
… release notes Reorder the GitHub Release body around what a user needs before installing: prerelease warning, headline, GitHub alerts (safety, withdrawn versions, breaking changes, upgrade requirements, notices), what is new since the previous prerelease, then the kind sections with Safety and Security first, known issues, contributors with first-time contributors, and a compare link. Change files gain upgrade, advisories, authors and yanks fields and reject unknown keys. Notice levels become caution, warning, important and note. Lint fails a breaking change that does not tell users what to do. The PR check reports per-file findings as annotations, honours ignore_paths and fails without a change file by default. Stable releases archive consumed change files to .changes/released/<version>/ and mark yanked versions in CHANGELOG.md. release.json moves to schema version 2. BREAKING CHANGE: info and error notice levels are gone, release.json is schema version 2, and the action's check mode now requires a change file.
|
Warning Review limit reachedYou've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. Next included review available in 42 minutes. View limit details
No actionable comments were generated in the recent review.
|
| Layer / File(s) | Summary |
|---|---|
Change-file contracts and linting .changes/README.md, README.md, cmd/changes_readme.md, cmd/init.go, internal/changes/* |
Change files support upgrade constraints, advisories, authors, and yanked versions. Parsing validates these fields and rejects unknown frontmatter keys. The change adds known-issue reading, reserved-file handling, and lint findings for breaking, safety, and title text. |
Change checks and findings README.md, action.yml, cmd/check.go, cmd/findings.go, cmd/status.go, internal/release/check.go, internal/release/check_body_test.go, internal/release/check_test.go |
Checks include structured findings and can skip a PR when all changed paths match ignore_paths. The action adds require-changes, and command output reports findings as GitHub annotations when running in GitHub Actions. Status reports known issues and lint findings without failing. |
Release data and prerelease comparison README.md, cmd/prerelease.go, internal/git/*, internal/release/build.go, internal/release/build_test.go |
release.json advances to schema version 2. Release data aggregates upgrade requirements, yanks, authors, known issues, and contributor information. Prerelease processing can identify a previous matching prerelease and its intervening changes. |
Release notes and changelog rendering README.md, cmd/root.go, internal/release/changelog.go, internal/release/changelog_test.go, internal/release/render_test.go |
Rendering adds ordered alerts, safety and security sections, configurable folding, prerelease notices and deltas, known issues, and contributor credits. Changelog rendering marks matching release headings as yanked. |
Release execution and change-file archiving .changes/safety-first-release-notes.md, README.md, cmd/stable.go, cmd/stable_test.go, cmd/release_flow_test.go |
Stable releases lint pending changes and read release metadata before building release data. They move consumed files and an existing headline into .changes/released/<version>/, and mark yanked changelog headings. Release-flow tests cover archiving, lint failures, and prerelease deltas. |
Priority:
Estimated code review effort: 4 (Complex) | ~60 minutes
Change: Feature
Sequence Diagram(s)
sequenceDiagram
participant runRelease
participant changes
participant BuildData
participant WriteNotes
participant ReleaseFiles
runRelease->>changes: lint pending files and read headline and known issues
runRelease->>BuildData: build release data
runRelease->>WriteNotes: render release notes
runRelease->>ReleaseFiles: archive consumed change files and headline
Merge Risk: 
Minimal · previous review 61f7c
-
No confirmed issue currently blocks merging; complete the normal checks before release.
Pre-merge checks: 
4 · 
1
-
Failed checks: 1 warning Passed checks: 4 passedFull details: Docstring Coverage
-
Explanation
Docstring coverage is 37.08% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff with cyclomatic complexity of at least 2. Documentation-only edits and deletions within surviving functions are included; unchanged diff context and fully deleted functions are excluded. Analyzed 89 functions across 21 files. (5 skipped: 5 unsupported.)
Resolution
Write docstrings for the functions missing them to satisfy the coverage threshold.
-
Finishing Touches: 💡 1
-
📝 Generate docstrings: 💡
-
- Commit to this branch
- Create a new PR
🧪 Generate unit tests (beta)
-
- Commit to this branch
- Create a new PR
-
- Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.
Comment @coderabbitai help to get the list of available commands.
Change file check✅ OK: 1 valid change file(s) added in this PR. Version impact: major bump (breaking change). The next release will be 1.0.0 (latest stable: 0.6.0). |
A valid PR's comment now states the bump level of its change files and the next release version with and without it, relative to the latest stable tag. The verdict JSON carries the same data as impact.
Reorder the GitHub Release body around what a user needs before installing: prerelease warning, headline, GitHub alerts (safety, withdrawn versions, breaking changes, upgrade requirements, notices), what is new since the previous prerelease, then the kind sections with Safety and Security first, known issues, contributors with first-time contributors, and a compare link.
Change files gain upgrade, advisories, authors and yanks fields and reject unknown keys. Notice levels become caution, warning, important and note. Lint fails a breaking change that does not tell users what to do. The PR check reports per-file findings as annotations, honours ignore_paths and fails without a change file by default. Stable releases archive consumed change files to .changes/released// and mark yanked versions in CHANGELOG.md. release.json moves to schema version 2.
This pull request introduces significant improvements to the release notes workflow, change file format, and automation for the release process. The changes focus on making safety, breaking changes, and upgrade requirements more visible to users, enhancing the structure and validation of change files, and improving the developer experience with better linting, configuration, and documentation.
Key improvements include:
Release Notes and Change File Format Improvements
.changes/safety-first-release-notes.md,README.md,.changes/README.md,cmd/changes_readme.md)kind(e.g., safety, security, added, fixed), supports new fields (upgrade,advisories,authors,yanks), and enforces stricter linting for breaking changes and unknown keys. Notices use four levels: caution, warning, important, and note. (.changes/README.md,README.md,cmd/changes_readme.md)_headline.mdand_known-issues.mdare now documented and reserved for release summaries and known issues. (README.md,.changes/README.md,cmd/changes_readme.md)Automation, Linting, and PR Checks
require-changes), with the ability to ignore certain paths viaignore_pathsin.changes/config.json. (README.md,action.yml)cmd/findings.go,cmd/check.go).changes/released/<version>/instead of deleting them, improving traceability. (README.md)Documentation and Onboarding
README.md,.changes/README.md,cmd/changes_readme.md) has been updated throughout to reflect the new change file format, notice levels, and release process, including CLI usage and configuration examples.These changes make the release process safer, more transparent, and easier for both users and contributors to understand and participate in.
BREAKING CHANGE: info and error notice levels are gone, release.json is schema version 2, and the action's check mode now requires a change file.
Summary by CodeRabbit