Repository navigation
Releases: jaykv/cliffy
Releases · jaykv/cliffy
Release list
0.7.1
Added
cli ai llms-txtprints the documentation bundled with cliffy as one llms.txt
file, for coding agents. It needs no model and noaiextra. The documentation site publishes the
same file at/llms.txt. See AI commands.cli validatewarns when thedefault,helporshortof a param is ignored because its type in
typesis a complete Typer definition.
Fixed
cli initaccepts names with a hyphen, ascli init --rawalways did.
0.7.0
cliffy's first release since 0.6.1. Full details are in the changelog and the migration notes.
Highlights
- Python 3.11 to 3.15. 3.9 and 3.10 are no longer supported.
- Build targets.
cli build --target zipapp|script|native: the shiv zipapp as before, a single-file script with inline dependencies (PEP 723, runs withuv run), or one native binary built with PyApp that needs nothing installed on the target machine. Built CLIs do not depend on cliffy. - Blueprints. Define your own typed YAML spec and map it to a CLI;
load,run,render,test,docsandbuildall work on spec files. Blueprints can be local files,module:Classreferences or installed plugins. - Callbacks on the CLI and on groups, for both backends.
- Shell lines on pybash 0.4.
&&,||,;, pipes, redirects,$(command)capture, any expression in{{ }}, and injection-safe interpolation in>shell lines. - Errors point at the manifest. A mistake in a run block is reported with file, command, line and column, with no traceback.
cli validatecompiles and imports the generated code. - AI commands ported to pydantic-ai 2.x with provider-agnostic model selection and validated output.
- Click backend parity with Typer for params,
typesandconfig. - Reproducible output. Generated code no longer carries a timestamp; examples appear in the generated CLI's
--help. - Docs rewritten: tutorial, guides, generated CLI and manifest reference.
Security and safety fixes
- Manifest strings (help text, names, defaults) can no longer inject code into the generated module.
- CLI names are validated, so
cli rmand related commands cannot touch files outside cliffy's directories. - A launcher is only overwritten or removed when it is exactly the one cliffy wrote; links are never followed.
requiresentries can no longer be passed to pip as options.
Breaking changes
The main ones; the migration notes list all of them.
- Python 3.11 is the minimum.
typer-slimis replaced bytyper. manifestVersionother thanv3is an error.$lines pass arguments exactly as a shell would (pybash 0.4 quoting).- Click backend: a param written without
--is a positional argument, as with Typer. cli validateimports the generated code, so module-level code in a manifest runs during validation.cli testexits 1 when any test fails, andcli buildexits 1 on failure.cliffy[ai]needs pydantic-ai 2.x; model names carry a provider prefix.
0.6.1
0.6.0
What's Changed
- new
cli aicommands- see AI Features - new
cli docscommand to generate docs
MRs
Full Changelog: 0.5.3...0.6.0
0.5.3
What's Changed
- (experimental) support generating Click CLIs- add
use_click: truein manifest. seeclickhelloexample - support multi-layer command nesting- see
nested-cliexample
MRs
- Migrate to uv by @jaykv in #44
- More tests by @jaykv in #48
- Refactor commander and Click support by @jaykv in #49
Full Changelog: 0.5.2...0.5.3
0.5.2
What's Changed
- functions now supports a single string block + list of string blocks
- small edge-case fixes with command params parsing- explicit None check, wrapping quotes, normalizing param name
- new example- aiprompt (Claude-generated CLI using the new cliffy LLM system prompt)
MRs
Full Changelog: 0.5.1...0.5.2
0.5.1
0.5.0
Breaking changes- manifest v3
- args
->params` to clarify CLI options and arguments are params + to match common CLI convention - Options will now require -- prefix to identify it as option/flag
- short field will require - prefix to identify it as short-alias for option
- is_option field removed from Command def
What's Changed
- Add JSON schema generation support by @jaykv in #36
- Update documentation with logo, framework comparison, and JSON schema details by @jaykv in #38
- Refactor: Rename arg to param by @jaykv in #39
- 📝 Add docstrings by @coderabbitai in #40
New Contributors
- @coderabbitai made their first contribution in #40
Full Changelog: 0.4.0...0.5.0
0.4.0
What's Changed
- New Manifest Structure: The manifest format has been updated to v2, with a new structure and features.
- Command Templates: Introduces the ability to define command templates that can be reused across multiple commands.
- Pre/Post Run Hooks: Adds pre_run and post_run options to commands, allowing for custom logic to be executed before and after a command's main logic.
- New docs: https://jaykv.github.io/cliffy
MRs
- Manifest v2 by @jaykv in #33
- Support Command templates + pre_run + post_run by @jaykv in #34
- setup docs by @jaykv in #35
Full Changelog: 0.3.8...0.4.0