- Reuse duplicate prevention logic in rescheduling to prevent race conditions
- Add queueName validation in plugin initialization and helper function
- Enhanced scheduleEmailProcessingJob to return boolean and accept delay parameter
- Improve error handling: rescheduling failures warn but don't fail current job
- Prevent duplicate jobs when multiple handlers complete simultaneously
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add scheduleEmailProcessingJob helper to check and schedule jobs on init
- Only schedule if no existing uncompleted job exists
- Update job handler to always reschedule itself after completion (5min interval)
- Job reschedules regardless of success/failure for continuous processing
- Initial job starts 1 minute after init, subsequent jobs every 5 minutes
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add quote escaping in display names to prevent malformed email headers
- Handle empty string defaultFromName by checking trim()
- Prevent formatting when fromName is only whitespace
- Example: John "The Boss" Doe becomes "John \"The Boss\" Doe" <email>
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add defaultFromName to MailingPluginConfig interface
- Update MailingService to format from field with name when available
- Add getDefaultFrom() helper method for consistent formatting
- Format as "Name" <email@domain.com> when both name and email are provided
- Bump version to 0.0.7
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Update transporter type to handle different email adapter interfaces
- Add type casting for payload.email to resolve compatibility issues
- Build now completes successfully without TypeScript errors
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Updated MailingService to check for Payload's email transporter when plugin transport is not configured
- Enhanced error message to indicate transport is required in either plugin or Payload config
- Bump version to 0.0.5
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Added steps for automated version tagging in `version-and-publish.yml`
- Configured workflow permissions for writing contents
- Enhanced workflow to include git tag creation and push after build steps
- Enhanced email customization documentation for the `emailWrapper` hook.
- Added examples for basic, advanced, and dynamic email layouts.
- Included guidelines for leveraging external CSS, assets, and template-specific layouts.
### 🔧 Improvements
- Updated `README.md` with detailed usage for consistent branding and responsive design in emails.
- Refined HTML structure and inline styles for improved readability and accessibility.
### 🛠 Maintenance
- Bumped version in `package.json` from `0.0.2` to `0.0.3`.
### 🔧 Improvements
- Removed all version bumping, changelog generation, and git manipulation
- Simplified to core workflow: checkout → setup → install → test → build → publish
- Removed complex conditions, branches, and notifications
- Uses whatever version is currently in package.json
### 🐛 Bug Fixes
- Eliminated potential workflow failures from complex logic
- Removed git force push operations and version conflicts
- Streamlined to reliable, standard publish pattern
### 🔧 Improvements
- Replaced Claude CLI changelog generation with simple commit-based approach
- Removed external dependency and potential authentication issues
- Simplified changelog generation to list commit messages directly
### 🐛 Bug Fixes
- Eliminated Claude CLI not found errors
- Removed timeout and authentication complexities
- Ensured workflow runs reliably in all environments
### 🔧 Improvements
- Removed complex version management and branch workflows
- Simplified to basic NPM publish on main branch push
- Removed Claude integration and complex version calculation
- Streamlined to: checkout → setup → install → test → build → publish
### 🐛 Bug Fixes
- Eliminated workflow complexity and potential failure points
- Removed dependency on external services and complex logic
- Fixed workflow reliability by using standard publish pattern
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
### 🔧 Improvements
- Deleted unnecessary step for collecting commits manually in the `version-and-publish` workflow
- Relied on Claude action for streamlined changelog generation
- Updated API key naming for compatibility with new Claude token system
### 🚀 Features
- Added Claude action to automatically maintain CHANGELOG.md file
- Claude analyzes git commits and generates categorized changelog entries
- Automatic changelog extraction for use in release commits and PRs
### 🔧 Improvements
- Uses anthropics/claude-code-action@v1 for direct file editing
- Creates or updates CHANGELOG.md with structured release entries
- Maintains persistent changelog history across releases
- Supports fallback if CHANGELOG.md is not generated
### 📚 Documentation
- CHANGELOG.md will be automatically maintained with each release
- Organized entries by features, bug fixes, improvements, docs, and performance
- Uses [Unreleased] format for upcoming releases
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
### 🔧 Improvements
- Removed complex Claude CLI integration and fallback system
- Implemented smart commit categorization based on conventional commit patterns
- Added pattern matching for features (🚀), bug fixes (🐛), docs (📚), and improvements (🔧)
- Generates structured changelog with proper sections and formatting
### 🐛 Bug Fixes
- Eliminated authentication and integration complexities with external services
- Ensures consistent changelog generation in all CI environments
- Fixed workflow reliability by removing external dependencies
### ✨ Features
- Automatic commit categorization using keywords and emojis
- Support for conventional commit patterns (feat:, fix:, docs:)
- Fallback message when no commits are found
- Detailed logging of changelog generation process
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
### 🐛 Bug Fixes
- Added debugging information for Claude CLI installation and execution
- Added fallback changelog generation from commit messages
- Uses --dangerously-skip-permissions flag for CI environment
### 🔧 Improvements
- Workflow now continues even if Claude CLI authentication fails
- Provides detailed error information for debugging
- Generates basic changelog from git commits as fallback
- Maintains workflow execution without requiring Claude authentication
### 📚 Documentation
- Added note in fallback changelog about authentication requirements
- Clear messaging about fallback vs AI-generated changelogs
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
### 🐛 Bug Fixes
- Changed from `claude-code` to `claude -p` for non-interactive execution
- Fixed YAML syntax issues with multiline command arguments
- Used separate PROMPT variable to avoid YAML parsing conflicts
### 🔧 Improvements
- Uses correct Claude CLI syntax with -p/--print flag for automation
- Properly structured command for GitHub Actions environment
- Maintains changelog generation functionality with correct CLI invocation
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
### 🔧 Improvements
- Changed Claude Code CLI installation to use npm package @anthropic-ai/claude-code
- Simpler and more reliable than curl-based installation script
- Leverages existing Node.js environment in GitHub Actions
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
### 🚀 Features
- Added step to install Claude Code CLI in GitHub Actions workflow
- Uses official installation script from claude.ai
- Adds CLI to PATH for subsequent steps
### 🔧 Improvements
- Enables AI-powered changelog generation in automated workflows
- Fails gracefully if CLI installation fails
- Ensures claude-code command is available for changelog generation
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
### 🔧 Improvements
- Disabled test execution during workflow development
- Tests will be re-enabled once workflow is stable
- Prevents workflow failures due to test issues during setup phase
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
### 🐛 Bug Fixes
- Removed explicit pnpm version specification in GitHub Actions
- Let pnpm/action-setup@v4 automatically use version from package.json packageManager field
- Resolves version conflict between workflow config and package.json
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
### 🐛 Bug Fixes
- Updated pnpm version from 10 to 10.12.4 to match package.json packageManager field exactly
- Resolves ERR_PNPM_BAD_PM_VERSION error in GitHub Actions workflow
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
### 🚀 Features
- Version bumping now compares source branch vs target branch versions
- Calculates proper increment from version differences between branches
- Applies calculated increment to target branch version for new version
### 🔧 Improvements
- Replaces branch name-based versioning with actual version analysis
- Shows detailed version calculation in workflow logs
- Validates that source version is higher than target version
- Supports increments greater than 1 (e.g., patch increases by 2)
### 🧮 Version Calculation Logic
- **Target (main)**: `1.2.3`, **Source (patch/dev)**: `1.2.5`
- **Calculation**: patch increased by 2, so increment = 1
- **Result**: `1.2.4` (target version + minimum needed increment)
### 📊 Enhanced Validation
- Fails if no version increase detected between branches
- Ensures positive increments for version calculations
- Detailed logging of version comparison and calculation steps
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
### 🚀 Features
- Push to version branches (major/*, minor/*, patch/*) now creates merge PRs
- Merge branches (merge/major-*, merge/minor-*, merge/patch-*) contain prepared releases
- Version bump, changelog generation, and validation happen before merge
- Release publishing only occurs after merge PR approval
### 🔧 Improvements
- Separated release preparation from publishing for better review workflow
- Added automatic PR creation/updating for release branches
- Streamlined publishing job that uses pre-prepared version and changelog
- Clear PR descriptions with release checklist and warnings
### 🐛 Bug Fixes
- Fixed workflow timing to allow proper review before publishing
- Eliminated race conditions between version preparation and publishing
- Improved error handling and validation throughout the process
**Workflow Structure:**
1. Push to `patch/feature-name` → Creates/updates `merge/patch-feature-name` → Opens PR to main
2. Review and approve merge PR (version already bumped, changelog included)
3. Merge PR to main → Automatically publishes to NPM and creates GitHub release
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
### 🐛 Bug Fixes
- Updated pnpm version from 8 to 10 to match package.json packageManager field
- Resolves ERR_PNPM_BAD_PM_VERSION error in workflow execution
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
### 🚀 Features
- Added `validate` job that runs on version branch PRs as required status check
- Added pre-merge validation with tests, build, and branch type detection
### 🐛 Bug Fixes
- Fixed workflow timing: now blocks PR merge until validation passes
- Changed trigger from `types: [closed]` to `types: [opened, synchronize, reopened]`
- Separated validation (PR) from publishing (post-merge) workflows
### 🔧 Improvements
- Version publishing only runs after successful merge to main
- Clear messaging about release type during PR validation
- Prevents immediate PR closure before workflow completion
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
### 🐛 Bug Fixes
- Fixed YAML parsing error on line 146 caused by improper heredoc delimiter indentation
- Removed redundant blank lines for consistent formatting throughout workflow
### 🔧 Improvements
- Ensured CLAUDE_EOF delimiter is properly indented to match YAML context
- Cleaned up workflow formatting for better readability
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Deleted VERSION_WORKFLOW.md as the content is no longer relevant with the updated branch and versioning structure
- Streamlined repository by removing obsolete documentation to prevent confusion
- Removed version folder branch validation (no longer relevant with new branch structure)
- Simplified Claude CLI integration by removing fallback installation logic
- Streamlined workflow for more concise and focused validation steps
🗂️ **New Branch Structure:**
Changed from version/ prefixes to folder-based branches:
**Old Structure:**
- version/major
- version/minor
- version/patch
**New Structure:**
- major/ (folder branch)
- minor/ (folder branch)
- patch/ (folder branch)
**Usage Examples:**
- major/breaking-api-changes
- minor/new-email-features
- patch/fix-validation-bug
**Benefits:**
✅ More intuitive folder structure
✅ Better organization of related changes
✅ Clearer semantic meaning
✅ Multiple features can be worked on in parallel under same type
**Updated Logic:**
- Uses startsWith() instead of contains() for branch detection
- Updated validation to check for folder branches
- Enhanced error messages with examples
🧹 Code Cleanup:
- Removed unused create_fallback_changelog function
- Function was left over from when we had fallback changelog generation
- Now using fail-fast approach - Claude must succeed or workflow fails
⏱️ Increased Claude Timeout:
- Claude changelog generation timeout: 60s → 240s (4x increase)
- Allows more time for complex changelog analysis
- Reduces chance of timeout failures for large changesets
- Still fails fast if Claude is unavailable or errors occur
Result: Cleaner code with more reliable Claude integration!