`homeboy version`
Synopsis
homeboy version <COMMAND>Subcommands
show
homeboy version show [<component_id>]Shows the current version for the specified component, or the Homeboy binary version if omitted.
bump
homeboy version bump <component_id> <patch|minor|major>Alias for homeboy release. Bumps version, finalizes changelog, commits, tags, and optionally pushes.
Flags (same as release):
--dry-run: Preview without making changes--no-tag: Skip git tag creation--no-push: Skip pushing to remote--no-commit: Fail if uncommitted changes exist (strict mode)--commit-message <MESSAGE>: Custom pre-release commit message
set
homeboy version set [<component_id>] <new_version>set writes the version targets directly without incrementing and does not finalize the changelog.
Description
homeboy version bump:
Alias for homeboy release. Delegates to the release command for full release pipeline execution. See release for details.
homeboy version set:
- Writes the new version directly to targets without touching the changelog.
Changelog entries must be added before running version bump (recommended: homeboy changelog add --json ...). Make sure the changelog includes ALL changes since the last update, not just the ones you personally worked on.
Recommended release workflow (non-enforced):
- Land work as scoped feature/fix commits first.
- Use
homeboy changes <component_id>to review everything since the last tag. - Add changelog items as user-facing release notes that capture anything impacting user or developer experience (not a copy of commit subjects).
- Run
homeboy version bump ...when the only remaining local changes are release metadata (changelog + version).
Note: --json for changelog entries is on homeboy changelog add (not homeboy changelog).
Arguments:
[<component_id>]: component ID (optional, shows Homeboy binary version when omitted)<patch|minor|major>: version bump type
JSON output
Note: all command output is wrapped in the global JSON envelope described in the JSON output contract.
homeboy versionreturns aVersionOutputobject as thedatapayload.
Note: all command output is wrapped in the global JSON envelope described in the JSON output contract. homeboy version returns a VersionOutput object as the data payload.
command:version.showcomponent_idversion(detected current version)targets: array of{ file, pattern, full_path, match_count }
Note: all command output is wrapped in the global JSON envelope described in the JSON output contract. homeboy version returns a VersionOutput object as the data payload.
command:version.bumpcomponent_idbump_type: patch, minor, or majordry_run: booleanno_tag: booleanno_push: booleanno_commit: booleancommit_message(omitted if not specified)plan(present when--dry-run): release plan objectrun(present when not--dry-run): release run result object
homeboy version show data payload:
homeboy version bump data payload:
command:version.setcomponent_idold_versionnew_versiontargets: array of{ file, pattern, full_path, match_count }
See release for full plan and run object schemas.
bumperrors follow the same validation asrelease. See release for error conditions.
Exit code
show:0on success; errors if the version cannot be parsed.bump:0on success.set:0on success.
Notes
- Components must have
version_targetsconfigured (non-empty). Homeboy uses the first target as the primary version source. - Each
version_targets[]entry hasfileand optionalpattern. Whenpatternis omitted, Homeboy checks extension-provided version patterns for that file type; if none are provided, the command errors.
Changelog Requirements
homeboy version set data payload:
- A changelog file to exist
- The
changelog_targetto be configured on the component
Errors:
homeboy component set <id> --changelog-target "CHANGELOG.md"version bump requires:
Auto-Generation from Commits
Setup:
- All changes are committed (uncommitted changes are invisible to auto-gen)
- The Unreleased section is empty (existing entries skip auto-gen)
- At least one commit has an entry-producing prefix
| Commit prefix | Changelog section |
|---|---|
feat: | Added |
fix: | Fixed |
BREAKING / !: | Changed |
| Other (non-conventional) | Changed |
docs:, chore: | Skipped |
To bypass changelog finalization entirely, use version set instead of version bump.
version bump can auto-generate changelog entries from commits since the last tag, but only if:
Related Workflows
Important: If ALL commits are docs: or chore:, auto-generation produces nothing and you’ll get an error.
homeboy changelog add <component_id> "Added: new feature"
homeboy changelog add <component_id> -m "Fixed: bug" -m "Changed: behavior"To manually add entries: homeboy changelog add <id> "message" --type fixed
homeboy git push <component_id>
homeboy git tag <component_id>Rollback Procedure
Before bumping, add changelog entries:
1. Revert local changes
git checkout -- CHANGELOG.md Cargo.toml package.json # your version files2. Delete local tag (if created)
git tag -d v0.X.Y3. Delete remote tag (if pushed)
git push origin --delete v0.X.Y4. Force push (if committed and pushed)
git reset --hard HEAD~1
git push --force-with-leaseAfter bumping, push and optionally tag:
homeboy version bump <component_id> patch --dry-run