Skip to content

Releases: WireCatLabs/cli-base

0.51.0

Choose a tag to compare

@leemour leemour released this 24 Oct 20:05
db4a9fa

0.51.0 — 24.10.2026

Added

  • Comparison pages live in the site repository, and our marks are re-checked at each release (WC-CMP-11, Comparisons). The page is written in cli-docs (wirecat.dev) because a comparison changes when other tools change, not when we release; the CLI repository keeps a short docs/compare.md that links to it. The release report lists the compare page as checked. Nothing changes in code.

Changed — may break callers

  • Shared command contracts require explicit overrides before host edits. sharedCommand, assertSharedContracts, overrideSharedContract and customizeSharedCommand live in /commands; original definitions and exact accepted edits remain available for audits. Independent shell replacements must supply static, exact before/after declarations; a new Core default or a changed provider builder fails until those declarations are reviewed. Provider additions are allowed; inherited subcommands cannot disappear silently. /commands now loads Commander at runtime.

  • Cross-CLI contract drift cannot be accepted through a lint baseline. Declare intentional differences with
    their exact expected values and a specific reason; a changed or stale exemption fails. audit --complete
    collects actual schemas and error reasons from commands info --json and refuses missing coverage. Canonical capability manifests and validated inherited definitions distinguish explicit provider variants from drift. Global
    options satisfy matching command-local controls, so their placement alone is no longer a divergence.

Fixed

  • Complete audits keep runtime availability separate from static contracts. A currently denied or available command retains the same protected grammar and output definition.

  • Command lint distinguishes list filters from computation and output controls. Ranking weights, timezone, output context and byte pagination remain controls even when an answer exposes similarly named fields; singleton targets are not list filters. Native query fields and id/time filtering remain checked.

0.35.0

Choose a tag to compare

@leemour leemour released this 15 Oct 21:07
f17ee07

Added

  • Bounded batches share parsing, correlation and sequential execution. prepareBatch, readBatchInput and
    runBatch accept explicit registered handlers, cap input/count/read reservations and retained output, and keep
    a result for every input on budget refusal. Failed reads never refund their reserved ceiling; it is not a byte
    consumption measurement. Hosts retain account authorization, cancellation, final rendering and resource cleanup.
    projectBatchAnswers selects nested answer fields while retaining ids, errors and completeness.

Full changelog

0.31.1

Choose a tag to compare

@leemour leemour released this 15 Oct 01:46
ee9a38f

Fixed

  • Nested field selection traverses arrays and retains report coverage. Item/list envelopes, continuation, missing data and operation identifiers are handled by one shared projector; consumers no longer need to unwrap item answers.

Full changelog

0.20.0

Choose a tag to compare

@leemour leemour released this 11 Oct 14:59

Changed — may break callers

  • resolvePaths gives the XDG layout on macOS too — ~/.config/<app>, ~/.local/share/<app> and
    ~/.cache/<app>, or the XDG_* variables when set — instead of ~/Library/Preferences,
    ~/Library/Application Support and ~/Library/Caches. One layout on every Unix is one set of
    documentation and one place to look. Linux and Windows paths do not change, and the *_DIR overrides
    still win. It now reads HOME, the XDG_* variables, USERPROFILE, APPDATA and LOCALAPPDATA
    from the env it is given, not from the global process.env, and takes an optional platform.
    On macOS, a CLI that adopts this release finds none of its existing files until it calls
    migrateLegacyMacPaths at start. A keyring service name built from the config path changes with it.

Added

  • migrateLegacyMacPaths moves an older release's ~/Library folders to the new ones, once.
    On macOS, with no *_DIR override set, it moves each old folder whose new one is missing or empty,
    all of them or none, and returns what moved. It never merges into a folder that has files, and
    across file systems it copies, checks the copy and keeps the old folder. It throws a
    configuration_error naming the processes when lsof shows a file open in a pending folder — stop a
    running serve or MCP server and run again. lsof sees only files open at that moment, so a caller
    that knows its own lock files should report their holders through holders. Call it at program start, before anything resolves a
    path; with nothing to move it costs one lstat per folder. legacyMacPaths gives the old folders.

Removed

  • The env-paths dependency. The paths it gave on Windows are kept as they were.

0.19.4

Choose a tag to compare

@leemour leemour released this 11 Oct 14:59
769b256

Fixed

  • Package references, documentation and fixtures use the WireCat namespace throughout.

  • The owner-migration helper covers meetings, testing, Zoom and the shared organization repositories, so their links and package names migrate with the original CLIs.

0.19.3

Choose a tag to compare

@leemour leemour released this 11 Oct 14:59
89f6fee

Fixed

  • Zero command deadlines abort synchronously before a body can execute, matching the documented
    immediate deadline instead of scheduling a timer that could lose to a fast command. They create
    no sleep or timer; an already aborted parent retains its cancellation reason.

0.19.2

Choose a tag to compare

@leemour leemour released this 11 Oct 14:59
95f4bec

Added

  • Portable command control helpers expose fieldsOf, projectFields, createOutputBuffer
    and createDeadline from the root export. Field projection retains list and operation metadata;
    a bounded UTF-8 buffer delays data until hosts finish cleanup. Deadlines use injected sleep and
    cancellation, waiting for the body to settle before callers close resources. Callers must propagate
    the signal, dispose the deadline and discard buffered output on failure; no provider/store lifecycle
    or automatic retries are imported.

Fixed

  • Windows maintenance commands support portable relative PATH entries and custom or sanitized command-processor environments while preserving separate arguments.

Security

  • Release checks include source and secret analysis; critical production advisories and critical source findings block publication. Workflow findings are reported for review. PR security remains the fast secret scan.

0.19.0

Choose a tag to compare

@leemour leemour released this 11 Oct 14:59
17583d2

Fixed

  • Windows updater and MCP setup commands resolve through absolute PATH entries and use an explicit command processor, avoiding accidental execution from the current folder. POSIX resolution is unchanged.

Added

  • /update exports executableOnPath and executableEnvironment for consumers using the same Windows command resolution.

0.18.2

Choose a tag to compare

@leemour leemour released this 11 Oct 14:59
17e76a1

Changed — may break callers

  • The project is now licensed under Apache License 2.0. See LICENSE for the terms.

0.18.1

Choose a tag to compare

@leemour leemour released this 11 Oct 14:59
5940608

Fixed

  • The shared spelling list knows wirecat. cspell no longer flags the new package scope in READMEs.