Skip to content

Releases: lbliii/milo-cli

milo-cli 0.3.1

23 May 18:52
ecd6820

Choose a tag to compare

Patch release focused on post-0.3.0 dependency alignment, template verification, and steward guidance.

Highlights

  • Kida 0.9 adoption — Milo now depends on kida-templates>=0.9.0,<0.10.0.
  • Template verificationscripts/check_templates.py now enforces Kida strict end tags and refactor-safe same-folder imports while still compiling through Milo's terminal-aware filters and globals.
  • Steward network — Root and scoped AGENTS.md guidance now includes verification status, cross-cutting concerns, known regression patterns, steward questions, and self-audit tracking.

Changed

  • Refreshed the lockfile for Kida 0.9.
  • Expanded steward guidance across core, docs, examples, site, benchmarks, scaffold, templates, input, and tests.

Fixed

  • Cleaned bundled component imports to use refactor-safe ./_defs.kida same-folder paths.
  • Removed the generic try close from error.kida so the bundled templates satisfy the stricter local template gate without relying on Kida 0.9's inconsistent try close suggestion.

milo-cli 0.3.0

04 May 15:45
36d64cf

Choose a tag to compare

Feature release focused on agent-native CLI authoring, stricter template contracts, release stewardship, and command/MCP/schema parity hardening.

Highlights

  • Agent-native authoringmilo new <name> scaffolds a tested CLI project, and milo verify <path> runs import, schema, dispatch, in-process MCP, and subprocess MCP transport checks.
  • Agent repair loops — MCP validation errors now carry structured argument and constraint context; llms.txt output marks required, optional, and defaulted inputs more clearly.
  • Kida 0.7 adoption — Milo now uses kida-templates>=0.7.0,<0.8.0, with inline component compilation and validated template calls enabled by default.
  • Strict undefined templates — Stock templates already satisfy strict rendering. User templates that relied on silent undefined fallbacks now raise UndefinedError; pass get_env(strict_undefined=False) to keep loose rendering.
  • Terminal layout filters — New display-cell filters and open-rule helpers make table, frame, divider, meter, and truncation output align by rendered cell width.
  • Steward system — Scoped AGENTS.md files define ownership, contract checklists, consultation triggers, and review expectations across core, docs, tests, templates, examples, site, benchmarks, and scaffold domains.

Added

  • milo components for listing bundled and user-defined Kida component defs, with --json output for tooling and --path for extra template directories.
  • milo.live re-exports for LiveRenderer, Spinner, stream_to_terminal, and terminal_env.
  • function_to_schema(..., warn_missing_docs=True) to surface undocumented typed parameters during verification.
  • form_schema() for form introspection.
  • Agent docs, testing guidance, migration recipes, example docs, and optional Markdown snippet verification.
  • Silent-exception linting with explicit # silent: <reason> annotations.
  • Output-gallery guidance, scaffolded verification coverage, terminal cleanup checks, dispatch lock edge coverage, and display-cell rendering benchmarks.

Changed

  • get_env() defaults to inline_components=True and validate_calls=True, and accepts enable_capture for static-site and capture flows.
  • Gateway, registry, and saga executor pools use Kida workload-aware worker sizing.
  • pipeline_progress and pipeline_detail templates include flush boundaries to encode their streaming contract.
  • Documentation site navigation is reorganized around reader intent: About, Get Started, Build CLIs, Build Apps, Quality and Operations, Reference, Examples, and Applied Tutorials.
  • Steward guidance now includes evidence-backed review finding format, collateral update rules, synthesis requirements, and parity-matrix expectations.
  • Internal code adopts more Python 3.14 patterns, including PEP 695 type aliases, pattern matching in form key handlers, and frozen/slotted dataclasses in tests.

Fixed

  • Contract regressions found in the project-wide bugbash across command dispatch, MCP, schema generation, app runtime, flow, form, llms.txt, and docs.
  • Context injection parity, JSON-RPC invalid-request handling, gateway progress routing, Store shutdown/listener serialization, and CLI/schema contract drift.

milo-cli 0.2.2

13 Apr 23:51
db0426e

Choose a tag to compare

Patch release adding pipeline observability, refactoring command dispatch internals, improving performance, and fixing a batch of sharp edges.

Added

  • Pipeline observabilityPhaseLog dataclass with @@PHASE_LOG action and ring-buffer reducer for per-phase stdout/stderr capture (opt-in via Pipeline(capture_output=True)). New phase_detail() and pipeline_detail() kida macros for interactive TUI with cursor navigation, log scrolling, and auto-follow. PipelineViewState + make_detail_reducer() for Elm-style keyboard-driven expand/collapse interaction. milo://pipeline/timeline MCP resource exposes phase execution timeline as structured JSON. Gateway --status now shows real CLI metrics and pipeline state.

Changed

  • kida-templates 0.5.0 — Correctness fix for variable bindings inside unrolled for-loops (affects form, select, pipeline, and component templates) and faster template compilation from cached str.join and filter folding.
  • Dispatch performance — Replaced SHA256 with builtin hash and deferred recording append outside the lock. Fixed get_env() singleton cache (122us to 125ns). Bulk task accounting for Batch effects.
  • Command dispatch refactor — Shared builtin-mode handling, command resolution, hook execution, middleware execution, generator consumption, and output writing across run(), call(), and call_raw() without changing the public API.

Fixed

  • call() / call_raw() error handling — Re-raise exceptions instead of calling sys.exit(1), restoring the pre-refactor behavior for programmatic invocations.
  • Sharp edges (batch 1) — Fix 7 Python 2 except A, B: syntax errors, replace silent exception swallowing with warnings/logging, add atomic file writes, guard unhandled template lookups, and add raise_on_error to Config.validate().
  • Sharp edges (batch 2) — Warn on silent template/config fallbacks, validate PhasePolicy and pipeline dependencies eagerly, fix exit code on aborted confirmations (130 instead of 0), suppress display_result=False across all output formats, tighten Context injection type check, return default from confirm() in dry-run mode, add fail_fast option to hook invocation and parallel pipelines.
  • Sharp edges (batch 3) — Additional syntax errors, silent failures, and strict API fixes.

milo-cli 0.2.1

12 Apr 15:23
83ccab3

Choose a tag to compare

Patch release fixing group command help display, lazy command argument defaults, and schema handling.

Fixed

  • Group help display — Bare invocation of a command group now correctly shows group help instead of "Unknown command". Help output lists subcommands by name instead of raw argparse internals.
  • Lazy command defaults — Lazy commands now propagate function signature defaults to argparse. Schema defaults are JSON-safe, boolean schema defaults are respected, boolean default=True parameters use --no-xxx flags, schema enum values become argparse choices, and display_result=False suppresses plain-format output while preserving --output-file and --format json.
  • Lazy command hardeningGroup.lazy_command() supports examples, confirm, and annotations kwargs for parity with CLI.lazy_command().

milo-cli Added Changed Deprecated Removed Fixed Security 0.2.0

10 Apr 18:31
5e18323

Choose a tag to compare

Feature release focused on saga effect expansion, structured concurrency primitives, extended theming, and orchestration-layer resilience.

Highlights

  • Saga effects expansion — Race (first-wins with loser cancellation), All (wait-all with fail-fast), Take (pause until action dispatched), and Debounce (cancel-and-restart timer)
  • Structured concurrency — SagaContext for cancellation trees, EffectResult handler registry, TakeEvery/TakeLatest higher-order effects, configurable thread pool with max_workers and on_pool_pressure
  • Orchestration hardening — Timeout wrapper effect, TryCall structured error handling, saga cancellation tokens, PhasePolicy (retry/skip/stop), DFS cycle detection, phase context forwarding
  • Extended theme colorsThemeStyle now supports 256-color (int index), truecolor (#rrggbb hex), and background colors (bg field)
  • Pipeline TUI — Interactive buildpipe example with real-time phase visualization and progress bar
  • pipeline_progress macro — Reusable component for rendering PipelineState with status and progress bar
  • kida-templates 0.4.0 — Match blocks, try/fallback error boundaries, unless conditionals, and public terminal_color API

MCP gateway improvements

  • Per-request timeout enforcement
  • Graceful child restart on failure
  • Gateway test suite covering namespacing, routing, proxying, idle reaping, and error handling

Schema improvements

  • Tuple, set, and frozenset schema support
  • $ref for recursive dataclasses
  • Fallback warnings for unsupported types

Infrastructure

  • Adopted Towncrier for changelog management with CI enforcement
  • Comprehensive benchmarks and free-threading stress tests for saga effects

milo-cli 0.1.1

04 Apr 13:52
bb33a1b

Choose a tag to compare

Patch release focused on Elm Architecture ergonomics, Bubbletea-inspired effect patterns, CLI table-stakes features, and internal code health.

Highlights

  • Reducer combinatorsquit_on, with_cursor, with_confirm decorators stack to eliminate boilerplate key/cursor/confirm handling
  • Cmd effects — Lightweight Cmd thunks as a simpler alternative to sagas for one-shot side effects, with Batch (concurrent) and Sequence (serial) combinators
  • TickCmd — Self-sustaining tick pattern with per-component, dynamic tick control
  • ViewState — Declarative terminal state management (alt_screen, cursor_visible, window_title, mouse_mode) with diff-based rendering
  • Message filterApp(filter=fn) intercepts actions before dispatch to drop or transform them
  • Shell completionsinstall_completions() generates bash, zsh, and fish completions from CLI definitions
  • Doctor diagnosticsrun_doctor() validates environment, dependencies, and config health with structured Check specs
  • Version checking — automatic PyPI upgrade notices (respects NO_UPDATE_CHECK env var)
  • App.from_dir() — automatic template directory discovery, no manual loader setup
  • Context.run_app() — bridge CLI command handlers to interactive Elm Architecture apps
  • Built-in template macrosselectable_list, scrollable_list, format_time in components/_defs.kida

CLI polish

  • Structured error handling with MiloError code + hint display
  • Command examples render in help output and generate_help_all()
  • Did-you-mean fuzzy suggestions on unknown commands
  • Before/after hooks via HookRegistry
  • Confirm gates for destructive commands
  • Dry-run and output-file global option flags
  • Progress bars via CLIProgress
  • Context.log() with leveled stderr output
  • Config.validate() type-checks against spec defaults
  • Config.init() scaffolds starter config files
  • invoke() test helper splits stdout/stderr
  • Retry saga effect with backoff
  • Saga/Cmd error recovery — unhandled exceptions dispatch @@SAGA_ERROR/@@CMD_ERROR instead of being swallowed

Internal improvements

  • Extracted _command_defs.py, _cli_help.py, _jsonrpc.py, and _mcp_router.py from monolithic modules
  • Unified command registration between CLI and Group via _make_command_def
  • Middleware wired into CLI.run() and CLI.call() dispatch paths
  • Parallelized health checks and gateway discovery with ThreadPoolExecutor
  • Lazy walk_commands generators avoid eager materialization
  • Pre-computed property sets in workflow detection eliminate O(n²) work
  • Fixed registry N+1 file reads in doctor checks
  • Cached _list_tools in MCP server to avoid per-request recomputation
  • Fixed execution_order() set rebuild performance
  • Bulletproof terminal cleanup — each step in App.run() finally block is individually guarded

Bug fixes

  • HelpRenderer now wired as default formatter in CLI.build_parser() and subparsers
  • Action group capture in help uses formatter lifecycle instead of parser attributes
  • Docstring descriptions propagate through schema to argparse help text
  • components/*.kida included in package data
  • --version rendering guards template path when no action groups are captured
  • Fixed unclosed backtick in generate_help_all global options
  • uv detection for version upgrade notices
  • Version string drift — all modules now use __version__ from __init__.py
  • ViewState merging in combine_reducers — fields from multiple reducers are merged, not overwritten
  • Message filter + Ctrl+C — filtered @@QUIT no longer locks out subsequent Ctrl+C
  • CLI.call() provides a proper Context to middleware instead of None
  • Gateway child I/O enforces a 30-second read timeout to prevent deadlocks
  • Store.shutdown() waits for pending work; Batch uses a 60-second timeout
  • Failed @@SAGA_ERROR/@@CMD_ERROR dispatches are logged instead of silently swallowed
  • Before/after hook errors are caught and reported instead of crashing

New examples

  • devtool — showcases doctor diagnostics, hooks, command examples in help, structured errors, and shell completions
  • spinner — showcases Cmd, Batch, TickCmd, and ViewState patterns

milo-cli 0.1.0

30 Mar 23:06
b014b00

Choose a tag to compare

What's Changed

  • Add milo CLI framework for free-threaded Python by @lbliii in #1
  • Add README and Bengal documentation site by @lbliii in #2
  • Add production maturity tooling by @lbliii in #3
  • Fix production baseurl so GitHub Pages styles load by @lbliii in #4
  • Bump kida-templates to 0.3.0, add terminal rendering and examples by @lbliii in #5
  • Add Bengal-ready CLI primitives: groups, config, pipeline, plugins by @lbliii in #6
  • Add MCP gateway, terminal renderer, examples, and docs by @lbliii in #7
  • Add MCP v2: persistent gateway, resources, prompts, middleware, observability by @lbliii in #8
  • Rename template files from .txt to .kida by @lbliii in #9

New Contributors

  • @lbliii made their first contribution in #1

Full Changelog: https://github.com/lbliii/milo-cli/commits/v0.1.0