Skip to main content

Release Management

MIU uses Release-Please for automated versioning, changelog generation, and release management.

How It Works

1

Commit with Conventional Format

git commit -m "feat(agent): add streaming support"
2

Release-Please Creates PR

Analyzes commits, updates versions, generates CHANGELOG
3

Review & Merge

Verify changelog and version bumps, then merge
4

Automatic Release

GitHub creates release, triggers PyPI publication

Commit Types

TypeSectionVersion Bump
featFeaturesMinor
fixBug FixesPatch
perfPerformancePatch
refactorRefactoringPatch (hidden)
docsDocumentationNone
choreMiscellaneousNone

Commit Format

<type>(<scope>): <subject>

<body>

<footer>
git commit -m "feat(agent): add message streaming"

Configuration Files

Manifest

.release-please-manifest.json - Version source of truth:
{
  "packages/miu_core": "0.1.0",
  "packages/miu_code": "0.1.0",
  "packages/miu_examples": "0.1.0",
  "packages/miu_studio": "0.1.0",
  "packages/miu_mono": "0.1.0"
}

Config

release-please-config.json - Main configuration:
SettingValuePurpose
release-typepythonSemver + pyproject.toml
separate-pull-requeststrueOne PR per package
include-component-in-tagtrueTag: miu-core-v0.1.0

Version Strategy

Semantic Versioning (SemVer):
MAJOR.MINOR.PATCH
  │      │      └─ Bug fixes (fix: commits)
  │      └──────── New features (feat: commits)
  └───────────── Breaking changes (BREAKING CHANGE)
Examples:
  • 0.1.00.1.1 (patch fix)
  • 0.1.10.2.0 (new feature)
  • 0.2.01.0.0 (breaking change)

Tag Format

miu-core-v0.2.0      # miu_core package
miu-code-v0.1.1      # miu_code patch
miu-v1.0.0           # miu meta-package

CHANGELOG Generation

Each package maintains its own CHANGELOG.md:
# Changelog

## [0.2.0](link) (2025-12-30)

### Features
* add streaming support ([abc1234](link))

### Bug Fixes
* resolve file validation issue ([ghi9012](link))

Before Committing

Troubleshooting

Cause: No commits with conventional format since last releaseSolution: Ensure commits use feat:, fix:, etc.
Cause: Commit type doesn’t match intended changeSolution: Use correct type - feat: for minor, fix: for patch
Cause: Release-Please scans commit messagesSolution: Ensure conventional commits before release PR creation

Manual Release Trigger

# Using Release-Please CLI
npx release-please release-pr \
  --repo-url=https://github.com/vanducng/miu-mono \
  --token=$GITHUB_TOKEN

# Create releases
npx release-please github-release \
  --repo-url=https://github.com/vanducng/miu-mono \
  --token=$GITHUB_TOKEN