From 42d9989533960f62d0dab1021c8a64dba27dea63 Mon Sep 17 00:00:00 2001 From: Eric Rakestraw Date: Mon, 19 Oct 2026 20:00:09 +0000 Subject: [PATCH] Prepare core alias release notes --- docs/releases/v0.3.0.md | 48 ++++++++++++++++++++++++++++++++++ docs/roadmap/implementation.md | 8 ++++++ 2 files changed, 56 insertions(+) create mode 100644 docs/releases/v0.3.0.md diff --git a/docs/releases/v0.3.0.md b/docs/releases/v0.3.0.md new file mode 100644 index 0000000..9fc6106 --- /dev/null +++ b/docs/releases/v0.3.0.md @@ -0,0 +1,48 @@ +# CommandKit v0.3.0 + +## Summary + +CommandKit v0.3.0 adds application-owned command and flag aliases. This +pre-1.0 minor release also updates the installation declaration type and +Invocation struct shape; review the migration guidance before upgrading. + +## 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 ""`. + +## 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 +longer compile. Use keyed fields, for example +`commandkit.Invocation{Context: ctx, Streams: streams}`, when constructing an +Invocation outside command execution. CommandKit populates the route fields for +executed handlers. + +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) diff --git a/docs/roadmap/implementation.md b/docs/roadmap/implementation.md index 3e10888..3ff76f7 100644 --- a/docs/roadmap/implementation.md +++ b/docs/roadmap/implementation.md @@ -728,6 +728,14 @@ deferred-work record and accepted ADR were left unchanged. footer are correct. No release launcher, remote push, or tag operation occurs as part of implementing this plan. +**Completed:** Added `docs/releases/v0.3.0.md` with the `...Declaration` +migration, command-slice conversion, function-value signature impact, +positional `Invocation` guidance, alias behavior, and `-c=` empty-value +correction. The note retains Go 1.26.0 and maintainer Go 1.26.8 and includes +candidate-tag links plus the required immutable licensing footer. No published +release note, dependency version, sum file, tag, or remote was changed. Prepare +integration dependency adoption only after core v0.3.0 is published. + ## Stage 17: Verify the complete target and finish **Work**