Skip to content

Releases: jaykv/cliffy

0.7.1

Choose a tag to compare

@jaykv jaykv released this 12 Oct 22:06
94f5905

Added

  • cli ai llms-txt prints the documentation bundled with cliffy as one llms.txt
    file, for coding agents. It needs no model and no ai extra. The documentation site publishes the
    same file at /llms.txt. See AI commands.
  • cli validate warns when the default, help or short of a param is ignored because its type in
    types is a complete Typer definition.

Fixed

  • cli init accepts names with a hyphen, as cli init --raw always did.

0.7.0

Choose a tag to compare

@jaykv jaykv released this 12 Oct 21:27
cf5ca6f

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 with uv 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, docs and build all work on spec files. Blueprints can be local files, module:Class references 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 validate compiles 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, types and config.
  • 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 rm and 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.
  • requires entries 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-slim is replaced by typer.
  • manifestVersion other than v3 is 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 validate imports the generated code, so module-level code in a manifest runs during validation.
  • cli test exits 1 when any test fails, and cli build exits 1 on failure.
  • cliffy[ai] needs pydantic-ai 2.x; model names carry a provider prefix.

0.6.1

Choose a tag to compare

@jaykv jaykv released this 06 Feb 01:56
58732e7

What's Changed

  • Default model to gemini-2.0-exp by @jaykv in #51

Full Changelog: 0.6.0...0.6.1

0.6.0

Choose a tag to compare

@jaykv jaykv released this 02 Feb 21:03

What's Changed

  • new cli ai commands- see AI Features
  • new cli docs command to generate docs

MRs

  • setup docs and ai commands by @jaykv in #50

Full Changelog: 0.5.3...0.6.0

0.5.3

Choose a tag to compare

@jaykv jaykv released this 24 Jan 18:44

What's Changed

  • (experimental) support generating Click CLIs- add use_click: true in manifest. see clickhello example
  • support multi-layer command nesting- see nested-cli example

MRs

Full Changelog: 0.5.2...0.5.3

0.5.2

Choose a tag to compare

@jaykv jaykv released this 16 Jan 10:57
d0d905c

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

  • refactor: command parameter parsing and docs by @jaykv in #42

Full Changelog: 0.5.1...0.5.2

0.5.1

Choose a tag to compare

@jaykv jaykv released this 16 Jan 06:37
d0cef7a

Changes

  • fix: set manifestVersion to latest on cli init

What's Changed

  • Update Cliffy CLI framework documentation and add todo CLI example by @jaykv in #41

Full Changelog: 0.5.0...0.5.1

0.5.0

Choose a tag to compare

@jaykv jaykv released this 14 Jan 05:38
74aaa4e

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

Full Changelog: 0.4.0...0.5.0

0.4.0

Choose a tag to compare

@jaykv jaykv released this 11 Jan 06:43

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

Full Changelog: 0.3.8...0.4.0

0.3.8

Choose a tag to compare

@jaykv jaykv released this 26 Aug 04:35

What's Changed

Full Changelog: 0.3.7...0.3.8