Files
automaker/docs/release.md
Cody Seibert 7b760090e4 feat(automaker): enhance feature management and UI components
- Updated `.gitignore` to include agent context files and user-uploaded images for better organization.
- Added "Uncategorized" category to `categories.json` for improved feature classification.
- Populated `feature_list.json` with new features, including detailed descriptions and image attachments for better context.
- Changed application icon to `icon_gold.png` for a refreshed look.
- Enhanced `AutoModeService` to support max concurrency and periodic checks, improving feature execution management.
- Updated image handling in `DescriptionImageDropZone` to save images in the project directory.
- Improved UI components with better styling and responsiveness, including drag-and-drop functionality for project management.

This update significantly enhances the feature management process and user experience within the application.
2025-12-09 21:23:09 -05:00

4.5 KiB

Release Command

This command creates a git tag with a version bump and description of changes.

Usage

/release [major|minor|patch] [description]

Examples:

  • /release minor "✨ Added inventory drag and drop functionality"
  • /release patch "🐛 Fixed bug with item selection"
  • /release major "💥 Breaking: Refactored API endpoints"
  • /release minor "Version 0.20.0: Added new features and improvements"

Steps to Execute

1. Parse Version Type and Description

  • Extract the version type from the command: major, minor, or patch
  • Extract the description (rest of the command, if provided)
  • If no version type provided or invalid, show usage and exit
  • Description is optional - if not provided, will auto-generate from commits

2. Generate Changelog from Commits

  • Find the last git tag (version tag):
    git describe --tags --abbrev=0
    
  • If no previous tag exists, use the initial commit or handle gracefully
  • Get all commits between the last tag and HEAD:
    git log <last-tag>..HEAD --pretty=format:"%h %s" --no-merges
    
  • Parse commit messages and generate a changelog description:
    • Group commits by type (feature, fix, improvement, etc.) based on commit message patterns
    • Use emojis to categorize changes (see Emoji Usage section)
    • Format as a multi-line changelog with categorized entries
    • If user provided a description, prepend it to the auto-generated changelog
    • If no commits found, use a default message or prompt user

3. Read Current Version

  • Read app/package.json to get the current version (e.g., "0.1.0")
  • Parse the version into major, minor, and patch components
  • Calculate the new version based on the type:
    • major: ${major + 1}.0.0 (e.g., 0.1.0 → 1.0.0)
    • minor: ${major}.${minor + 1}.0 (e.g., 0.1.0 → 0.2.0)
    • patch: ${major}.${minor}.${patch + 1} (e.g., 0.1.0 → 0.1.1)

4. Create Git Tag

  • Create an annotated git tag with the new version and description:
    git tag -a v<new-version> -m "<description>"
    
  • Example: git tag -a v0.2.0 -m "✨ Added inventory drag and drop functionality"

5. Push Tag to Remote

  • Push the tag to remote:
    git push origin v<new-version>
    

Emoji Usage

You can use emojis in release notes to categorize changes:

  • New features - New functionality, features, additions
  • 🐛 Bug fixes - Bug fixes and error corrections
  • 🔧 Improvements - Refactoring, optimizations, code quality
  • Performance - Performance improvements
  • 💥 Breaking changes - Breaking API changes, major refactors
  • 🎨 UI/UX - Visual and user experience updates
  • ⚙️ Configuration - Config and environment changes
  • 📝 Documentation - Documentation updates
  • 🏗️ Infrastructure - Build, deployment, infrastructure
  • 🎵 Audio - Sound effects, music, audio changes

Changelog Generation

The release command automatically generates a changelog by analyzing commits between the last tag and HEAD:

  1. Find Last Tag: Uses git describe --tags --abbrev=0 to find the most recent version tag
  2. Get Commits: Retrieves all commits between the last tag and HEAD using git log <last-tag>..HEAD
  3. Parse and Categorize: Analyzes commit messages to categorize changes:
    • Looks for conventional commit patterns (feat:, fix:, refactor:, etc.)
    • Detects emoji prefixes in commit messages
    • Groups similar changes together
  4. Generate Description: Creates a formatted changelog with:
    • User-provided description (if any) at the top
    • Categorized list of changes with appropriate emojis
    • Commit hash references for traceability

Example Generated Changelog

✨ Added inventory drag and drop functionality

Changes since v0.1.0:

✨ Features:
- Add drag and drop support for inventory items (abc1234)
- Implement new sidebar navigation (def5678)

🐛 Bug Fixes:
- Fix item selection bug in list view (ghi9012)
- Resolve memory leak in component cleanup (jkl3456)

🔧 Improvements:
- Refactor API endpoint structure (mno7890)
- Optimize database queries (pqr2345)

Notes

  • The tag message should describe what changed in this release
  • Use descriptive messages with emojis to categorize changes
  • Tags follow semantic versioning (e.g., v0.1.0, v0.2.0, v1.0.0)
  • Version is automatically calculated based on the type specified
  • If no previous tag exists, all commits from the repository start will be included
  • User-provided description (if any) will be prepended to the auto-generated changelog