intentional
Releases
Changelog
0.4.1
Fixes
initno longer fails on apackage.jsonwithout a stringname, such as a private manifest that only holds dependencies. Like a Cargo manifest without[package], it describes no versioned project, so it is not a discovery candidate. A repository with such a manifest can now runinit, including thecontract-1upgrade.
0.4.0
Breaking
-
Configuration contract
contract-2replacescontract-1. A bump name always states the significance of a change: before 1.0.0,majorgives0.(x+1).0, andminorandpatchgive0.x.(y+1).settings.pre-1-0-bump-mappingis removed. Every command exceptinitrefuses acontract-1configuration and says to runintentional init, which upgrades it, keeps its comments, and accepts release tags created undercontract-1. Acomponentconfiguration with pending intents gets a reviewablebump-translationchoice in the init plan, orinit --bump-translation parity|significance.An intent can graduate a
0.xrelease unit to exactly 1.0.0 with{ bump: major, graduate: true }, oradd --graduate <id>. Graduation is the only way to reach 1.0.0. It graduates a whole fixed group, or the releasing members of a linked group, andcheckfails when the release unit is already at 1.0.0 or later.status, the release plan (graduates), and the changelog report the graduation.Changesets adoption translates pending changesets once. The default
bump-translation: paritykeeps the versions that Changesets would release, somajorat0.xbecomesmajorwithgraduate, andminorbecomesmajor; each renamed bump gets a note in the intent.significancekeeps the bump names, and the parity comparison reports the version changes asexpected-difference.
0.3.0
Breaking
checkfails when acommittedprojection holds a version other than the tag-derived current version, naming the release unit, file, pointer, found version, and expected version. When a release unit has an applied release that waits for its tag, everycommittedprojection of the unit must hold that release version, including a prerelease above the last stable tag, so the commit of a full apply passes and a partly applied release fails. An existing changelog whose leading heading is not plain SemVer supplies no applied release tocheck, which compares projections with the tag-derived version.tagretains strict release validation.statusreports drift oninjectedprojections without failingcheck; neither command readsnoneprojections.
0.2.1
Features
- A projection
filethat starts with/is relative to the repository root, so that several release units can write their versions into one sharedjson,toml, oryamlfile while each changelog stays at its release-unit path. Configuration load refuses two projections that write the same field of one file, andstatus,check,apply,stamp, andtagalso refuse them when they reach one file through a symlink, a hard link, or letter case. Every command refuses a projection file or changelog that resolves outside the repository.
Fixes
- Refuse a baseline when an existing release record’s tag id, version, contract, or baseline field does not match the tag it occupies.
applyandstampno longer lose an edit when release units reach one shared projection file through different paths, such as symlinks, letter case, or a./prefix. Ajsonpointer now selects an array element only by its index without leading zeros, so that/versions/01cannot write the same element as/versions/1.- Document that an internal dependency bump propagates only between release units that share an ecosystem adapter.
0.2.0
Breaking
- Building from source now requires Rust 1.88 or later, so that Intentional can use gix 0.89.
Fixes
- Clarify repository initialization and existing-release bootstrap in the documentation and embedded agent skill; keep the README focused on getting started.
0.1.8
Fixes
- Establish a baseline for a release unit added after other release units have released.
0.1.7
Fixes
- Keep every release unit’s edit when units at different paths project into one shared file.
- Tolerate annotated pre-Intentional tags as history in tag records.
- Tag releases in which only some release units moved; units already at their released version are no longer treated as part of the next release.
- Generate Homebrew formulae that pass strict audit and style checks.
0.1.6
Fixes
- Add deterministic tagger headers to annotated release records for strict Git integrity checks.
- Accept sealed release plans generated by the immediately preceding published Intentional version during self-hosted tagging.
- Published Linux GNU archives support Ubuntu 22.04 LTS through the pinned cross-rs compatibility baseline.
0.1.5
Fixes
- Correct initialization plans, tag retries, and native archive integrity verification.
0.1.4
Fixes
- Make initialization repository-complete and safely remove authorized release-tool proxies.
0.1.3
Features
- Embed the agent workflow skill in the CLI.
0.1.2
Features
- Detect Dev Container Features and Templates as explicit release-unit candidates.
Fixes
- Generate portable release checksums that validate downloaded assets directly.
0.1.1
Fixes
- Include the project README in both published Rust crates.
0.1.0
Initial release.
Features
- Intent-driven polyglot versioning across npm, Cargo, Pub, Python, MSBuild, and Go, with format-preserving JSON, TOML, and YAML projections.
- The
init,add,status,plan,apply,stamp,tag, andcheckcommands, canonical digest-bound release plans, changelogs, drift detection, channel releases, and dry runs. - A tag-triggered release pipeline and a plumbing GitHub Action.