Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
36 changes: 34 additions & 2 deletions .claude/CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -259,7 +259,39 @@ When user input contains "marco" (case insensitive):
- Platform-specific CI testing (excludes emulated archs)

### Release Process
- **Semantic release** with emoji commits
- **Semantic release** with conventional commits
- **git-cliff** generates changelog entries and GitHub release notes
- **GitHub Actions** for build/test/publish
- **Binary wheels** for multiple platforms
- Version sync between pyproject.toml and _version.py
- Version sync between pyproject.toml and _version.py

## Conventional Commits & Version Bumps

**CRITICAL: The commit TYPE controls version bumps, NOT the scope.**

Semantic-release uses the angular parser which determines version bumps
based on commit type prefix:

### Types that trigger version bumps:
- `feat:` → **minor** bump (new feature)
- `fix:` → **patch** bump (bug fix)
- `perf:` → **patch** bump (performance improvement)

### Types that do NOT trigger version bumps:
- `ci:` → no bump (CI/CD changes)
- `build:` → no bump (build system changes)
- `chore:` → no bump (maintenance)
- `docs:` → no bump (documentation)
- `style:` → no bump (formatting)
- `refactor:` → no bump (code restructuring)
- `test:` → no bump (test changes)

### Common Mistake to Avoid:
```
❌ fix(ci): update workflow → triggers patch bump (type is "fix")
✅ ci(publish): update workflow → no bump (type is "ci")
```

The scope in parentheses is for categorization/changelog only - it does
NOT affect whether a version bump occurs. Always use the correct TYPE
for CI/build/chore work to avoid accidental releases.
33 changes: 32 additions & 1 deletion CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -105,12 +105,43 @@ cmake/ # CMake configuration
- Platform-specific CI testing (excludes emulated archs)

### Release Process
- **Semantic release** with emoji commits
- **Semantic release** with conventional commits
- **git-cliff** generates changelog entries and GitHub release notes
- **GitHub Actions** for build/test/publish
- **Binary wheels** for multiple platforms
- Version sync between pyproject.toml and _version.py

## Conventional Commits & Version Bumps

**CRITICAL: The commit TYPE controls version bumps, NOT the scope.**

Semantic-release uses the angular parser which determines version bumps
based on commit type prefix:

### Types that trigger version bumps:
- `feat:` → **minor** bump (new feature)
- `fix:` → **patch** bump (bug fix)
- `perf:` → **patch** bump (performance improvement)

### Types that do NOT trigger version bumps:
- `ci:` → no bump (CI/CD changes)
- `build:` → no bump (build system changes)
- `chore:` → no bump (maintenance)
- `docs:` → no bump (documentation)
- `style:` → no bump (formatting)
- `refactor:` → no bump (code restructuring)
- `test:` → no bump (test changes)

### Common Mistake to Avoid:
```
❌ fix(ci): update workflow → triggers patch bump (type is "fix")
✅ ci(publish): update workflow → no bump (type is "ci")
```

The scope in parentheses is for categorization/changelog only - it does
NOT affect whether a version bump occurs. Always use the correct TYPE
for CI/build/chore work to avoid accidental releases.

## Unicode Support (Issue #207)

### Problem
Expand Down
Loading