Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
17 commits
Select commit Hold shift + click to select a range
f394aef
feat(release): add structured release notes template
BhaskarKulshrestha Nov 14, 2025
ac7b9f7
feat(release): add configurable categorization system
BhaskarKulshrestha Nov 14, 2025
fbb2463
docs(github): enhance PR template for automated release notes
BhaskarKulshrestha Nov 14, 2025
85395f7
feat(ci): implement automated release notes generation workflow
BhaskarKulshrestha Nov 14, 2025
651fb5a
test(ci): add comprehensive release notes testing workflow
BhaskarKulshrestha Nov 14, 2025
eacbe55
feat(ci): integrate release notes generation with npm publish workflow
BhaskarKulshrestha Nov 14, 2025
b4328dd
docs(release): add comprehensive automated release notes documentation
BhaskarKulshrestha Nov 14, 2025
3588010
docs(readme): add automated release notes system section
BhaskarKulshrestha Nov 14, 2025
094d81d
refactor(release): add refactoring section to release notes template
BhaskarKulshrestha Nov 14, 2025
b5bf772
fix(ci): update workflow to handle refactoring section in template
BhaskarKulshrestha Nov 14, 2025
2324aff
config(release): add refactoring section to categorization rules
BhaskarKulshrestha Nov 14, 2025
4b2008a
docs(release): update documentation with refactoring section info
BhaskarKulshrestha Nov 14, 2025
9f50219
test(release): add validation for refactoring section categorization
BhaskarKulshrestha Nov 14, 2025
806e372
chore(cleanup): remove temporary test script
BhaskarKulshrestha Nov 14, 2025
aaee2c4
docs(meta): add improvement tracking file for release notes system
BhaskarKulshrestha Nov 14, 2025
eb7b2b7
1.17.0
BhaskarKulshrestha Nov 14, 2025
ee445e3
added the release note into the config file
BhaskarKulshrestha Nov 14, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 24 additions & 7 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,21 @@
Explain the change in 1–3 sentences. Reference any related issues (e.g. Closes #123).

## Type of Change
- [ ] Feature
- [ ] Bug fix
- [ ] Chore / Refactor
- [ ] Docs
- [ ] Tests
- [ ] CI / Build
- [ ] Other
<!-- Select the primary type of change. This helps with automated release note generation. -->
- [ ] 🚀 **Feature** (`feat:`) - New functionality for users
- [ ] 🐛 **Bug fix** (`fix:`) - Fixes an issue for users
- [ ] ⚠️ **Breaking Change** (`feat!:` or `fix!:`) - Changes that break backward compatibility
- [ ] 📚 **Docs** (`docs:`) - Documentation updates only
- [ ] 🔧 **Chore / Refactor** (`chore:`, `refactor:`) - Internal changes, no user impact
- [ ] 🧪 **Tests** (`test:`) - Test additions or updates
- [ ] 🚀 **CI / Build** (`ci:`) - Build system or CI changes
- [ ] 📦 **Dependencies** (`deps:`) - Dependency updates
- [ ] 🎉 **Other** - Changes that don't fit the above categories

## Release Notes Impact
<!-- This helps generate better automated release notes -->
- [ ] **User-facing change** - Should be included in release notes
- [ ] **Internal change only** - No need to include in release notes

## Motivation / Context
Why is this change needed? What problem does it solve or what capability does it add?
Expand Down Expand Up @@ -42,12 +50,21 @@ node bin/index.js demo --services node --no-install --yes
```
Result: ✅ / ❌

## Breaking Changes & Migration
<!-- If this is a breaking change, provide details for users -->
**Breaking changes:**

**Migration steps:**

**Configuration changes needed:**

## Screenshots / Logs (Optional)
Add any helpful output (chalk-styled CLI messages, error reproduction, etc.).

## Docs
- [ ] Updated `README.md` if needed
- [ ] Updated `.github/copilot-instructions.md` if internal conventions changed
- [ ] Added/updated relevant documentation for user-facing changes
- [ ] Not applicable

## Checklist
Expand Down
165 changes: 165 additions & 0 deletions .github/release-notes-config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,165 @@
# Release Notes Configuration

# This file contains configuration for the automated release notes generation system.
# It defines how commits are categorized and what patterns to look for.

# Commit categorization patterns (regex patterns, case-insensitive)
categorization:
features:
patterns:
- "^feat(\\(.*\\))?:"
- "^add "
- "^implement "
- "new feature"
- "added support"

bugfixes:
patterns:
- "^fix(\\(.*\\))?:"
- "^bug "
- "^patch "
- "resolve.*issue"
- "fixed.*problem"

breaking_changes:
patterns:
- "^feat(\\(.*\\))?!:"
- "^fix(\\(.*\\))?!:"
- "breaking"
- "^BREAKING CHANGE"
- "backwards incompatible"

documentation:
patterns:
- "^docs(\\(.*\\))?:"
- "documentation"
- "readme"
- "update.*docs"
- "add.*docs"

internal:
patterns:
- "^chore(\\(.*\\))?:"
- "^ci(\\(.*\\))?:"
- "^test(\\(.*\\))?:"
- "^refactor(\\(.*\\))?:"
- "^build(\\(.*\\))?:"
- "^perf(\\(.*\\))?:"
- "internal changes"
- "code cleanup"

dependencies:
patterns:
- "^deps(\\(.*\\))?:"
- "dependencies"
- "package.*update"
- "bump.*version"
- "upgrade.*to"
- "update.*dependency"

# Section configuration
sections:
features:
title: "🚀 Features Added"
description: "New functionality and capabilities added in this release"

bugfixes:
title: "🐛 Bug Fixes"
description: "Issues and problems resolved in this release"

breaking_changes:
title: "⚠️ Breaking Changes"
description: "Changes that may break backward compatibility"
priority: 1 # Show first after main description

documentation:
title: "📚 Documentation"
description: "Documentation updates and improvements"

internal:
title: "🔧 Internal/DevOps"
description: "Internal improvements, build system, and development tooling changes"

dependencies:
title: "📦 Dependencies"
description: "Dependency updates and package management changes"

other:
title: "🎉 Other Changes"
description: "Other notable changes that don't fit the above categories"

refactoring:
title: "🔄 Refactoring & Performance"
description: "Code quality improvements and performance optimizations"

# Template configuration
template:
# Whether to include sections that have no items
include_empty_sections: false

# Maximum number of commits to show per section (0 = unlimited)
max_commits_per_section: 0

# Whether to include commit hashes in the output
include_commit_hashes: true

# Whether to include author information
include_authors: true

# Date format for the release
date_format: "YYYY-MM-DD"

# Contributors configuration
contributors:
# Whether to include a contributors section
include_contributors: true

# How to format contributor names
format: "@{username}"

# Whether to exclude bot accounts
exclude_bots: true

# List of usernames to exclude from contributors list
exclude_users:
- "dependabot[bot]"
- "github-actions[bot]"

# Validation rules
validation:
# Minimum number of commits required for a release
min_commits: 1

# Whether to fail if no categorized changes are found
require_categorized_changes: false

# Whether to validate that breaking changes have migration notes
require_breaking_change_notes: true

# Custom replacements for commit messages (useful for cleaning up automated commits)
message_replacements:
- pattern: "^Merge pull request #\\d+ from .*"
replacement: "" # Remove merge commit messages
- pattern: "^Merge branch '.*' into .*"
replacement: "" # Remove branch merge messages
- pattern: "\\(#(\\d+)\\)"
replacement: "(#$1)" # Normalize PR references

# Integration settings
integrations:
github:
# Whether to link to GitHub commits
link_commits: true

# Whether to link to GitHub issues/PRs
link_issues: true

# Base URL for the repository
base_url: "https://github.com/{owner}/{repo}"

npm:
# Whether to include npm installation instructions
include_install_instructions: true

# Package name for installation instructions
package_name: "create-polyglot"
1 change: 1 addition & 0 deletions .github/release-notes-improvements.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
<!-- This file tracks improvements to the release notes system -->
61 changes: 61 additions & 0 deletions .github/release-notes-template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
# Release Notes Template

This template is used to automatically generate release notes for create-polyglot.

## Release Notes for v{version}

### 🚀 Features Added
{features}

### 🐛 Bug Fixes
{bugfixes}

### ⚠️ Breaking Changes
{breaking}

### 📚 Documentation
{documentation}

### 🔧 Internal/DevOps
{internal}

### 📦 Dependencies
{dependencies}

### 🎉 Other Changes
{other}

### 🔄 Refactoring & Performance
{refactoring}

---

**Full Changelog**: {compare_url}

## What's Changed Since Last Release

{commits}

## Contributors

Thanks to all the contributors who made this release possible!

{contributors}

---

### Installation

```bash
npm install -g create-polyglot@{version}
# or
npx create-polyglot@{version} init my-project
```

### Upgrade Notes

{upgrade_notes}

### Known Issues

{known_issues}
29 changes: 28 additions & 1 deletion .github/workflows/npm-publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,33 @@ on:
types: [created]

jobs:
generate-release-notes:
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: read
steps:
- name: Trigger release notes generation
uses: actions/github-script@v7
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
// Trigger the release notes workflow
await github.rest.actions.createWorkflowDispatch({
owner: context.repo.owner,
repo: context.repo.repo,
workflow_id: 'release-notes.yml',
ref: 'main',
inputs: {
tag_name: '${{ github.event.release.tag_name }}',
target_commitish: '${{ github.event.release.target_commitish }}'
}
});
console.log('Release notes generation triggered');

// Wait a bit for the workflow to complete
await new Promise(resolve => setTimeout(resolve, 5000));

build:
runs-on: ubuntu-latest
steps:
Expand All @@ -22,7 +49,7 @@ jobs:
- run: npm test

publish-npm:
needs: build
needs: [generate-release-notes, build]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
Expand Down
Loading
Loading