2026-10-19 20:00:09 +00:00
|
|
|
# CommandKit v0.3.0
|
|
|
|
|
|
|
|
|
|
## Summary
|
|
|
|
|
|
2026-10-26 03:57:11 +00:00
|
|
|
CommandKit v0.3.0 adds application-owned command and flag aliases and shared
|
|
|
|
|
invocation reporting. This pre-1.0 minor release also updates the installation
|
|
|
|
|
declaration type and Invocation struct shape, replaces the error-first outcome
|
|
|
|
|
and diagnostic-delivery APIs, and reserves reporting flag names; review the
|
|
|
|
|
migration guidance before upgrading.
|
2026-10-19 20:00:09 +00:00
|
|
|
|
|
|
|
|
## Changes
|
|
|
|
|
|
|
|
|
|
- Declare command shortcuts and global or canonical-command-scoped flag
|
|
|
|
|
spellings with `Alias`, `FlagAlias`, and `FlagAliasFor`. Install routing rules
|
|
|
|
|
beside canonical commands through `New` or `App.Register`. Aliases route to
|
|
|
|
|
existing handlers and preserve the target command's operand and binding
|
|
|
|
|
behavior.
|
|
|
|
|
- Read the entered and canonical command paths from `Invocation` with
|
|
|
|
|
`EnteredPath` and `CanonicalPath`.
|
|
|
|
|
- Interpret a canonical short value flag such as `-c=` as an explicitly
|
|
|
|
|
supplied empty value, consistent with `--color=` and `-c ""`.
|
2026-10-26 03:57:11 +00:00
|
|
|
- Obtain an invocation-scoped `Reporter` from each handler's `Invocation` for
|
|
|
|
|
substantive output, Warning/Info/Progress/Debug messages, deferred messages,
|
|
|
|
|
and managed report rendering. The shared `--quiet`, `--verbose`, `--debug`,
|
|
|
|
|
and `--progress` flags apply across core and integration commands.
|
|
|
|
|
- Return terminal explanation text with `Failure`, `Usage`, or
|
|
|
|
|
`Outcome.WithExplanation`; attach an optional operation error separately with
|
|
|
|
|
`Outcome.WithCause`. Returned `Outcome.Presentation` records output and
|
|
|
|
|
diagnostic delivery observations without changing the operation cause.
|
2026-10-19 20:00:09 +00:00
|
|
|
|
|
|
|
|
## Compatibility and migration
|
|
|
|
|
|
|
|
|
|
`New` and `App.Register` now accept `...Declaration` instead of `...Command`.
|
|
|
|
|
Command, group, and integration command factories still return `Command`, so
|
|
|
|
|
individual factory calls can be passed directly. A `[]Command` cannot be
|
|
|
|
|
expanded into `...Declaration`; use a `[]Declaration` for mixed reusable
|
|
|
|
|
collections or convert each command element before expanding it. Function
|
|
|
|
|
values whose parameter type is `...Command`, including wrappers assigned from
|
|
|
|
|
`New` or `Register`, must update their signature to `...Declaration`.
|
|
|
|
|
|
|
|
|
|
Adding private route fields to `Invocation` means positional struct literals no
|
2026-10-26 03:57:11 +00:00
|
|
|
longer compile. `Invocation` no longer contains `Streams`; `App.Execute` supplies
|
|
|
|
|
the reporter and route paths to handlers. `Streams` remains the argument to
|
|
|
|
|
`App.Execute`, where the caller owns the result and diagnostic writers.
|
|
|
|
|
|
|
|
|
|
Handlers that used `invocation.Streams.Out` or `.Err` should use
|
|
|
|
|
`invocation.Reporter().Output()` or the categorized reporting methods. Replace
|
|
|
|
|
`Failure(err)` and `Usage(err)` with an operator-facing explanation and an
|
|
|
|
|
optional `.WithCause(err)`; causes alone are not rendered. Replace
|
|
|
|
|
`Outcome.Diagnostics` submissions and terminal `SeverityError` records with
|
|
|
|
|
reporter messages and an `Outcome` explanation. Provider-returned
|
|
|
|
|
`Acquired.Diagnostics` remain passive data for the owning integration to
|
|
|
|
|
submit. Replace `ReportIncomplete`, `DiagnosticDelivery`, and `DeliveryError`
|
|
|
|
|
with `Outcome.Presentation.Output` and `.Diagnostics`, whose `DeliveryResult`
|
|
|
|
|
contains a state plus first render and write errors.
|
|
|
|
|
|
|
|
|
|
The long flags `--quiet`, `--verbose`, `--debug`, and `--progress` are reserved
|
|
|
|
|
for CommandKit reporting and cannot be declared by applications. Application
|
|
|
|
|
aliases may target them. See the current [CLI reporting contract](../cli.md#reporting)
|
|
|
|
|
and [consumer migration guide](../consumers/guide.md#invocation-reporting) for
|
|
|
|
|
their behavior and API examples.
|
2026-10-19 20:00:09 +00:00
|
|
|
|
|
|
|
|
The consumer minimum remains Go 1.26.0 and the maintainer release toolchain
|
|
|
|
|
remains Go 1.26.8. Core v0.3.0 must be published before preparing dependent
|
|
|
|
|
integration releases that adopt it and record downloaded dependency sums; this
|
|
|
|
|
release does not change their v0.1.0 release records.
|
|
|
|
|
|
|
|
|
|
See the [consumer guide](https://gitea.maximumdirect.net/eric/CommandKit/src/tag/v0.3.0/docs/consumers/guide.md),
|
|
|
|
|
[CLI reference](https://gitea.maximumdirect.net/eric/CommandKit/src/tag/v0.3.0/docs/cli.md),
|
|
|
|
|
and [maintainer release procedure](https://gitea.maximumdirect.net/eric/CommandKit/src/tag/v0.3.0/docs/release.md).
|
|
|
|
|
|
|
|
|
|
[COPYRIGHT](https://gitea.maximumdirect.net/eric/CommandKit/src/tag/v0.3.0/COPYRIGHT) |
|
|
|
|
|
[LICENSE](https://gitea.maximumdirect.net/eric/CommandKit/src/tag/v0.3.0/LICENSE) |
|
|
|
|
|
[ATTRIBUTION](https://gitea.maximumdirect.net/eric/CommandKit/src/tag/v0.3.0/docs/oss/attribution.md)
|