From f8ec532f1ab6889964e72bff53347c78ea43abea Mon Sep 17 00:00:00 2001 From: Christian Byrne Date: Wed, 30 Jul 2025 02:31:29 -0700 Subject: [PATCH] [ci] Include litegraph changes in changelog during automated release process (#4595) --- .claude/commands/create-frontend-release.md | 107 ++++++++++++++++++-- 1 file changed, 98 insertions(+), 9 deletions(-) diff --git a/.claude/commands/create-frontend-release.md b/.claude/commands/create-frontend-release.md index 01a9b831c6..91afe7de3f 100644 --- a/.claude/commands/create-frontend-release.md +++ b/.claude/commands/create-frontend-release.md @@ -169,7 +169,79 @@ echo "Last stable release: $LAST_STABLE" 3. Generate breaking change summary 4. **COMPATIBILITY REVIEW**: Breaking changes documented and justified? -### Step 7: Generate Comprehensive Release Notes +### Step 7: Analyze Dependency Updates + +1. **Check for dependency version changes:** + ```bash + # Compare package.json between versions to detect dependency updates + PREV_PACKAGE_JSON=$(git show ${BASE_TAG}:package.json 2>/dev/null || echo '{}') + CURRENT_PACKAGE_JSON=$(cat package.json) + + # Extract litegraph versions + PREV_LITEGRAPH=$(echo "$PREV_PACKAGE_JSON" | grep -o '"@comfyorg/litegraph": "[^"]*"' | grep -o '[0-9][^"]*' || echo "not found") + CURRENT_LITEGRAPH=$(echo "$CURRENT_PACKAGE_JSON" | grep -o '"@comfyorg/litegraph": "[^"]*"' | grep -o '[0-9][^"]*' || echo "not found") + + echo "Litegraph version change: ${PREV_LITEGRAPH} → ${CURRENT_LITEGRAPH}" + ``` + +2. **Generate litegraph changelog if version changed:** + ```bash + if [ "$PREV_LITEGRAPH" != "$CURRENT_LITEGRAPH" ] && [ "$PREV_LITEGRAPH" != "not found" ]; then + echo "đŸ“Ļ Fetching litegraph changes between v${PREV_LITEGRAPH} and v${CURRENT_LITEGRAPH}..." + + # Clone or update litegraph repo for changelog analysis + if [ ! -d ".temp-litegraph" ]; then + git clone https://github.com/comfyanonymous/litegraph.js.git .temp-litegraph + else + cd .temp-litegraph && git fetch --all && cd .. + fi + + # Get litegraph changelog between versions + LITEGRAPH_CHANGES=$(cd .temp-litegraph && git log v${PREV_LITEGRAPH}..v${CURRENT_LITEGRAPH} --oneline --no-merges 2>/dev/null || \ + git log --oneline --no-merges --since="$(git log -1 --format=%ci ${BASE_TAG})" --until="$(git log -1 --format=%ci HEAD)" 2>/dev/null || \ + echo "Unable to fetch litegraph changes") + + # Categorize litegraph changes + LITEGRAPH_FEATURES=$(echo "$LITEGRAPH_CHANGES" | grep -iE "(feat|feature|add)" || echo "") + LITEGRAPH_FIXES=$(echo "$LITEGRAPH_CHANGES" | grep -iE "(fix|bug)" || echo "") + LITEGRAPH_BREAKING=$(echo "$LITEGRAPH_CHANGES" | grep -iE "(break|breaking)" || echo "") + LITEGRAPH_OTHER=$(echo "$LITEGRAPH_CHANGES" | grep -viE "(feat|feature|add|fix|bug|break|breaking)" || echo "") + + # Clean up temp directory + rm -rf .temp-litegraph + + echo "✅ Litegraph changelog extracted" + else + echo "â„šī¸ No litegraph version change detected" + LITEGRAPH_CHANGES="" + fi + ``` + +3. **Check other significant dependency updates:** + ```bash + # Extract all dependency changes for major version bumps + OTHER_DEP_CHANGES="" + + # Compare major dependency versions (you can extend this list) + MAJOR_DEPS=("vue" "vite" "@vitejs/plugin-vue" "typescript" "pinia") + + for dep in "${MAJOR_DEPS[@]}"; do + PREV_VER=$(echo "$PREV_PACKAGE_JSON" | grep -o "\"$dep\": \"[^\"]*\"" | grep -o '[0-9][^"]*' | head -1 || echo "") + CURR_VER=$(echo "$CURRENT_PACKAGE_JSON" | grep -o "\"$dep\": \"[^\"]*\"" | grep -o '[0-9][^"]*' | head -1 || echo "") + + if [ "$PREV_VER" != "$CURR_VER" ] && [ -n "$PREV_VER" ] && [ -n "$CURR_VER" ]; then + # Check if it's a major version change + PREV_MAJOR=$(echo "$PREV_VER" | cut -d. -f1 | sed 's/[^0-9]//g') + CURR_MAJOR=$(echo "$CURR_VER" | cut -d. -f1 | sed 's/[^0-9]//g') + + if [ "$PREV_MAJOR" != "$CURR_MAJOR" ]; then + OTHER_DEP_CHANGES="${OTHER_DEP_CHANGES}\n- **${dep}**: ${PREV_VER} → ${CURR_VER} (Major version change)" + fi + fi + done + ``` + +### Step 8: Generate Comprehensive Release Notes 1. Extract commit messages since base release: ```bash @@ -193,6 +265,12 @@ echo "Last stable release: $LAST_STABLE" - 📚 **Documentation** (docs:) - 🔧 **Maintenance** (chore:, refactor:) - âŦ†ī¸ **Dependencies** (deps:, dependency updates) + - **Litegraph Changes** (if version updated): + - 🚀 Features: ${LITEGRAPH_FEATURES} + - 🐛 Bug Fixes: ${LITEGRAPH_FIXES} + - đŸ’Ĩ Breaking Changes: ${LITEGRAPH_BREAKING} + - 🔧 Other Changes: ${LITEGRAPH_OTHER} + - **Other Major Dependencies**: ${OTHER_DEP_CHANGES} - Include PR numbers and links - Add issue references (Fixes #123) 4. **Save release notes:** @@ -200,9 +278,9 @@ echo "Last stable release: $LAST_STABLE" # Save release notes for PR and GitHub release echo "$RELEASE_NOTES" > release-notes-${NEW_VERSION}.md ``` -5. **CONTENT REVIEW**: Release notes clear and comprehensive? +5. **CONTENT REVIEW**: Release notes clear and comprehensive with dependency details? -### Step 8: Create Version Bump PR +### Step 9: Create Version Bump PR **For standard version bumps (patch/minor/major):** ```bash @@ -274,7 +352,7 @@ echo "Workflow triggered. Waiting for PR creation..." ``` 5. **PR REVIEW**: Version bump PR created and enhanced correctly? -### Step 9: Critical Release PR Verification +### Step 10: Critical Release PR Verification 1. **CRITICAL**: Verify PR has "Release" label: ```bash @@ -296,7 +374,7 @@ echo "Workflow triggered. Waiting for PR creation..." ``` 7. **FINAL CODE REVIEW**: Release label present and no [skip ci]? -### Step 10: Pre-Merge Validation +### Step 11: Pre-Merge Validation 1. **Review Requirements**: Release PRs require approval 2. Monitor CI checks - watch for update-locales @@ -304,7 +382,7 @@ echo "Workflow triggered. Waiting for PR creation..." 4. Check no new commits to main since PR creation 5. **DEPLOYMENT READINESS**: Ready to merge? -### Step 11: Execute Release +### Step 12: Execute Release 1. **FINAL CONFIRMATION**: Merge PR to trigger release? 2. Merge the Release PR: @@ -329,7 +407,7 @@ echo "Workflow triggered. Waiting for PR creation..." gh run watch ${WORKFLOW_RUN_ID} ``` -### Step 12: Enhance GitHub Release +### Step 13: Enhance GitHub Release 1. Wait for automatic release creation: ```bash @@ -357,7 +435,7 @@ echo "Workflow triggered. Waiting for PR creation..." gh release view v${NEW_VERSION} ``` -### Step 13: Verify Multi-Channel Distribution +### Step 14: Verify Multi-Channel Distribution 1. **GitHub Release:** ```bash @@ -395,7 +473,7 @@ echo "Workflow triggered. Waiting for PR creation..." 4. **DISTRIBUTION VERIFICATION**: All channels published successfully? -### Step 14: Post-Release Monitoring Setup +### Step 15: Post-Release Monitoring Setup 1. **Monitor immediate release health:** ```bash @@ -572,6 +650,15 @@ The command implements multiple quality gates: gh pr view ${PR_NUMBER} --json baseRefName ``` +### Issue: Incomplete Dependency Changelog +**Problem**: Litegraph or other dependency updates only show version bump, not actual changes +**Solution**: The command now automatically: +- Detects litegraph version changes between releases +- Clones the litegraph repository temporarily +- Extracts and categorizes changes between versions +- Includes detailed litegraph changelog in release notes +- Cleans up temporary files after analysis + ### Issue: Release Failed Due to [skip ci] **Problem**: Release workflow didn't trigger after merge **Prevention**: Always avoid this scenario @@ -592,4 +679,6 @@ Benefits: Cleaner than creating extra version numbers 2. **Workflow Speed**: Version bump workflow typically completes in ~20-30 seconds 3. **Update-locales Behavior**: Inconsistent - sometimes adds [skip ci], sometimes doesn't 4. **Recovery Options**: Reverting version is cleaner than creating extra versions +5. **Dependency Tracking**: Command now automatically includes litegraph and major dependency changes in changelogs +6. **Litegraph Integration**: Temporary cloning of litegraph repo provides detailed change analysis between versions