diff --git a/.claude/commands/create-frontend-release.md b/.claude/commands/create-frontend-release.md index cc57ac410..bbd6578c0 100644 --- a/.claude/commands/create-frontend-release.md +++ b/.claude/commands/create-frontend-release.md @@ -111,50 +111,7 @@ echo "Last stable release: $LAST_STABLE" ``` 7. **HUMAN ANALYSIS**: Review change summary and verify scope -### Step 3: Version Preview - -**Version Preview:** -- Current: `${CURRENT_VERSION}` -- Proposed: Show exact version number -- **CONFIRMATION REQUIRED**: Proceed with version `X.Y.Z`? - -### Step 4: Security and Dependency Audit - -1. Run security audit: - ```bash - npm audit --audit-level moderate - ``` -2. Check for known vulnerabilities in dependencies -3. Scan for hardcoded secrets or credentials: - ```bash - git log -p ${BASE_TAG}..HEAD | grep -iE "(password|key|secret|token)" || echo "No sensitive data found" - ``` -4. Verify no sensitive data in recent commits -5. **SECURITY REVIEW**: Address any critical findings before proceeding? - -### Step 5: Pre-Release Testing - -1. Run complete test suite: - ```bash - npm run test:unit - npm run test:component - ``` -2. Run type checking: - ```bash - npm run typecheck - ``` -3. Run linting (may have issues with missing packages): - ```bash - npm run lint || echo "Lint issues - verify if critical" - ``` -4. Test build process: - ```bash - npm run build - npm run build:types - ``` -5. **QUALITY GATE**: All tests and builds passing? - -### Step 6: Breaking Change Analysis +### Step 3: Breaking Change Analysis 1. Analyze API changes in: - Public TypeScript interfaces @@ -169,7 +126,7 @@ echo "Last stable release: $LAST_STABLE" 3. Generate breaking change summary 4. **COMPATIBILITY REVIEW**: Breaking changes documented and justified? -### Step 7: Analyze Dependency Updates +### Step 4: Analyze Dependency Updates 1. **Check significant dependency updates:** ```bash @@ -195,7 +152,117 @@ echo "Last stable release: $LAST_STABLE" done ``` -### Step 8: Generate Comprehensive Release Notes +### Step 5: Generate GTM Feature Summary + +1. **Collect PR data for analysis:** + ```bash + # Get list of PR numbers from commits + PR_NUMBERS=$(git log ${BASE_TAG}..HEAD --oneline --no-merges --first-parent | \ + grep -oE "#[0-9]+" | tr -d '#' | sort -u) + + # Save PR data for each PR + echo "[" > prs-${NEW_VERSION}.json + first=true + for PR in $PR_NUMBERS; do + [[ "$first" == true ]] && first=false || echo "," >> prs-${NEW_VERSION}.json + gh pr view $PR --json number,title,author,body,labels 2>/dev/null >> prs-${NEW_VERSION}.json || echo "{}" >> prs-${NEW_VERSION}.json + done + echo "]" >> prs-${NEW_VERSION}.json + ``` + +2. **Analyze for GTM-worthy features:** + ``` + + Review these PRs to identify features worthy of marketing attention. + + A feature is GTM-worthy if it meets ALL of these criteria: + - Introduces a NEW capability users didn't have before (not just improvements) + - Would be a compelling reason for users to upgrade to this version + - Can be demonstrated visually or has clear before/after comparison + - Affects a significant portion of the user base + + NOT GTM-worthy: + - Bug fixes (even important ones) + - Minor UI tweaks or color changes + - Performance improvements without user-visible impact + - Internal refactoring + - Small convenience features + - Features that only improve existing functionality marginally + + For each GTM-worthy feature, note: + - PR number, title, and author + - Media links from the PR description + - One compelling sentence on why users should care + + If there are no GTM-worthy features, just say "No marketing-worthy features in this release." + + + PR data: [contents of prs-${NEW_VERSION}.json] + ``` + +3. **Generate GTM notification:** + ```bash + # Save to gtm-summary-${NEW_VERSION}.md based on analysis + # If GTM-worthy features exist, include them with testing instructions + # If not, note that this is a maintenance/bug fix release + + # Check if notification is needed + if grep -q "No marketing-worthy features" gtm-summary-${NEW_VERSION}.md; then + echo "✅ No GTM notification needed for this release" + echo "📄 Summary saved to: gtm-summary-${NEW_VERSION}.md" + else + echo "📋 GTM summary saved to: gtm-summary-${NEW_VERSION}.md" + echo "📤 Share this file in #gtm channel to notify the team" + fi + ``` + +### Step 6: Version Preview + +**Version Preview:** +- Current: `${CURRENT_VERSION}` +- Proposed: Show exact version number based on analysis: + - Major version if breaking changes detected + - Minor version if new features added + - Patch version if only bug fixes +- **CONFIRMATION REQUIRED**: Proceed with version `X.Y.Z`? + +### Step 7: Security and Dependency Audit + +1. Run security audit: + ```bash + npm audit --audit-level moderate + ``` +2. Check for known vulnerabilities in dependencies +3. Scan for hardcoded secrets or credentials: + ```bash + git log -p ${BASE_TAG}..HEAD | grep -iE "(password|key|secret|token)" || echo "No sensitive data found" + ``` +4. Verify no sensitive data in recent commits +5. **SECURITY REVIEW**: Address any critical findings before proceeding? + +### Step 8: Pre-Release Testing + +1. Run complete test suite: + ```bash + npm run test:unit + npm run test:component + ``` +2. Run type checking: + ```bash + npm run typecheck + ``` +3. Run linting (may have issues with missing packages): + ```bash + npm run lint || echo "Lint issues - verify if critical" + ``` +4. Test build process: + ```bash + npm run build + npm run build:types + ``` +5. **QUALITY GATE**: All tests and builds passing? + +### Step 9: Generate Comprehensive Release Notes 1. Extract commit messages since base release: ```bash @@ -257,7 +324,7 @@ echo "Last stable release: $LAST_STABLE" - Ensure consistent bullet format: `- Description (#PR_NUMBER)` 5. **CONTENT REVIEW**: Release notes follow standard format? -### Step 9: Create Version Bump PR +### Step 10: Create Version Bump PR **For standard version bumps (patch/minor/major):** ```bash @@ -303,7 +370,7 @@ echo "Workflow triggered. Waiting for PR creation..." ``` 4. **PR REVIEW**: Version bump PR created with standardized release notes? -### Step 10: Critical Release PR Verification +### Step 11: Critical Release PR Verification 1. **CRITICAL**: Verify PR has "Release" label: ```bash @@ -325,7 +392,7 @@ echo "Workflow triggered. Waiting for PR creation..." ``` 7. **FINAL CODE REVIEW**: Release label present and no [skip ci]? -### Step 11: Pre-Merge Validation +### Step 12: Pre-Merge Validation 1. **Review Requirements**: Release PRs require approval 2. Monitor CI checks - watch for update-locales @@ -333,7 +400,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 12: Execute Release +### Step 13: Execute Release 1. **FINAL CONFIRMATION**: Merge PR to trigger release? 2. Merge the Release PR: @@ -366,7 +433,7 @@ echo "Workflow triggered. Waiting for PR creation..." gh run watch ${WORKFLOW_RUN_ID} ``` -### Step 13: Enhance GitHub Release +### Step 14: Enhance GitHub Release 1. Wait for automatic release creation: ```bash @@ -394,7 +461,7 @@ echo "Workflow triggered. Waiting for PR creation..." gh release view v${NEW_VERSION} ``` -### Step 14: Verify Multi-Channel Distribution +### Step 15: Verify Multi-Channel Distribution 1. **GitHub Release:** ```bash @@ -432,7 +499,7 @@ echo "Workflow triggered. Waiting for PR creation..." 4. **DISTRIBUTION VERIFICATION**: All channels published successfully? -### Step 15: Post-Release Monitoring Setup +### Step 16: Post-Release Monitoring Setup 1. **Monitor immediate release health:** ```bash @@ -508,87 +575,42 @@ echo "Workflow triggered. Waiting for PR creation..." 4. **RELEASE COMPLETION**: All post-release setup completed? -### Step 16: Generate GTM Feature Summary +### Step 17: Create Release Summary -1. **Extract and analyze PR data:** +1. **Create comprehensive release summary:** ```bash - echo "📊 Checking for marketing-worthy features..." - - # Extract all PR data inline - PR_DATA=$( - PR_LIST=$(git log ${BASE_TAG}..HEAD --grep="Merge pull request" --pretty=format:"%s" | grep -oE "#[0-9]+" | tr -d '#' | sort -u) - - echo "[" - first=true - for PR in $PR_LIST; do - [[ "$first" == true ]] && first=false || echo "," - gh pr view $PR --json number,title,author,body,files,labels,closedAt 2>/dev/null || continue - done - echo "]" - ) - - # Save for analysis - echo "$PR_DATA" > prs-${NEW_VERSION}.json + cat > release-summary-${NEW_VERSION}.md << EOF + # Release Summary: ComfyUI Frontend v${NEW_VERSION} + + **Released:** $(date) + **Type:** ${VERSION_TYPE} + **Duration:** ~${RELEASE_DURATION} minutes + **Release Commit:** ${RELEASE_COMMIT} + + ## Metrics + - **Commits Included:** ${COMMITS_COUNT} + - **Contributors:** ${CONTRIBUTORS_COUNT} + - **Files Changed:** ${FILES_CHANGED} + - **Lines Added/Removed:** +${LINES_ADDED}/-${LINES_REMOVED} + + ## Distribution Status + - ✅ GitHub Release: Published + - ✅ PyPI Package: Available + - ✅ npm Types: Available + + ## Next Steps + - Monitor for 24-48 hours + - Address any critical issues immediately + - Plan next release cycle + + ## Files Generated + - \`release-notes-${NEW_VERSION}.md\` - Comprehensive release notes + - \`post-release-checklist.md\` - Follow-up tasks + - \`gtm-summary-${NEW_VERSION}.md\` - Marketing team notification + EOF ``` -2. **Analyze for GTM-worthy features:** - ``` - - Review these PRs to identify if ANY would interest a marketing/growth team. - - Consider if a PR: - - Changes something users directly interact with or experience - - Makes something noticeably better, faster, or easier - - Introduces capabilities users have been asking for - - Has visual assets (screenshots, GIFs, videos) that could be shared - - Tells a compelling story about improvement or innovation - - Would make users excited if they heard about it - - Many releases contain only technical improvements, bug fixes, or internal changes - - that's perfectly normal. Only flag PRs that would genuinely interest end users. - - If you find marketing-worthy PRs, note: - - PR number, title, and author - - Any media links from the description - - One sentence on why it's worth showcasing - - If nothing is marketing-worthy, just say "No marketing-worthy features in this release." - - - PR data: [contents of prs-${NEW_VERSION}.json] - ``` - -3. **Generate GTM notification (only if needed):** - ``` - If there are marketing-worthy features, create a message for #gtm with: - - 🚀 Frontend Release v${NEW_VERSION} - - Timeline: Available now in nightly, ~2-3 weeks for core - - Features worth showcasing: - [List the selected PRs with media links and authors] - - Testing: --front-end-version ${NEW_VERSION} - - If there are NO marketing-worthy features, generate: - "No marketing-worthy features in v${NEW_VERSION} - mostly internal improvements and bug fixes." - ``` - -4. **Save the output:** - ```bash - # Claude generates the GTM summary and saves it - # Save to gtm-summary-${NEW_VERSION}.md - - # Check if notification is needed - if grep -q "No marketing-worthy features" gtm-summary-${NEW_VERSION}.md; then - echo "✅ No GTM notification needed for this release" - echo "📄 Summary saved to: gtm-summary-${NEW_VERSION}.md" - else - echo "📋 GTM summary saved to: gtm-summary-${NEW_VERSION}.md" - echo "📤 Share this file in #gtm channel to notify the team" - fi - ``` +2. **RELEASE COMPLETION**: All steps completed successfully? ## Advanced Safety Features