intentional

Releases

Latest 0.4.1 Release notes on GitHub

Changelog

0.4.1

Fixes
  • init no longer fails on a package.json without a string name, 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 run init, including the contract-1 upgrade.

0.4.0

Breaking
  • Configuration contract contract-2 replaces contract-1. A bump name always states the significance of a change: before 1.0.0, major gives 0.(x+1).0, and minor and patch give 0.x.(y+1). settings.pre-1-0-bump-mapping is removed. Every command except init refuses a contract-1 configuration and says to run intentional init, which upgrades it, keeps its comments, and accepts release tags created under contract-1. A component configuration with pending intents gets a reviewable bump-translation choice in the init plan, or init --bump-translation parity|significance.

    An intent can graduate a 0.x release unit to exactly 1.0.0 with { bump: major, graduate: true }, or add --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, and check fails 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: parity keeps the versions that Changesets would release, so major at 0.x becomes major with graduate, and minor becomes major; each renamed bump gets a note in the intent. significance keeps the bump names, and the parity comparison reports the version changes as expected-difference.

0.3.0

Breaking
  • check fails when a committed projection 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, every committed projection 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 to check, which compares projections with the tag-derived version. tag retains strict release validation. status reports drift on injected projections without failing check; neither command reads none projections.

0.2.1

Features
  • A projection file that starts with / is relative to the repository root, so that several release units can write their versions into one shared json, toml, or yaml file while each changelog stays at its release-unit path. Configuration load refuses two projections that write the same field of one file, and status, check, apply, stamp, and tag also 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.
  • apply and stamp no longer lose an edit when release units reach one shared projection file through different paths, such as symlinks, letter case, or a ./ prefix. A json pointer now selects an array element only by its index without leading zeros, so that /versions/01 cannot 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, and check commands, canonical digest-bound release plans, changelogs, drift detection, channel releases, and dry runs.
  • A tag-triggered release pipeline and a plumbing GitHub Action.