jan-cli 0.27.0

YAML-defined CLI trees with progressive help, optional exec aliases, merged extra specs, and SQLite audit logging keyed by git branch
Documentation
# Releasing

Publish **`jan-cli`** to crates.io. The interactive helper is `scripts/release.sh`.

## From `jan-cli/`

```bash
./scripts/release.sh              # patch bump (0.15.0 → 0.15.1)
./scripts/release.sh --minor      # minor bump
./scripts/release.sh --major      # major bump
./scripts/release.sh --set 1.2.3  # exact version
./scripts/release.sh --dry-run
./scripts/release.sh --skip-tests
./scripts/release.sh --resume     # finish an aborted bump
```

Monorepo aliases:

```bash
m run jan-cli release
m run jan-cli release-dry-run
m run jan-cli release-minor
m run jan-cli release-major
```

## Flow

1. Bump `Cargo.toml` + prepend `CHANGELOG.md`; sync `Cargo.lock` via `cargo check`.
2. Interactively set/confirm the commit message (Enter keeps `Release jan-cli $NEW`).
3. Commit **only** those version files.
4. `cargo test` (unless `--skip-tests`); re-check `Cargo.lock` is clean.
5. Confirm, then `m run jan-cli publish` (`cargo publish`).

Requires an interactive TTY (refuses to release when stdin is not a terminal, except `--dry-run`).

Optional: `RELEASE_NOTES` for the changelog bullet (default: `Release $NEW`).

Other dirty files under `jan-cli/` are **not** included in the version commit — commit features first.

## After publish

Push the release commit when ready. The crate `readme` is `README.md`; keep the crates.io blurb accurate even though the full reference is this site.