Files
commandkit/docs/releases/v0.5.0.md

2.6 KiB

CommandKit v0.5.0

CommandKit v0.5.0 fixes defects in deferred reporting and YAML value preservation, reduces repeated work in command installation and alias help, and simplifies typed input preparation and replay of captured flags.

Changes

  • Acceptance of deferred messages now closes atomically when invocation finalization begins. Concurrent submissions are included in the final batch or rejected with ErrReporterClosed; accepted messages can no longer be silently lost between batch detachment and closure.
  • Finalized reporting state releases its direct references to borrowed output and diagnostic writers while retaining presentation results. Writers remain caller-owned.
  • DecodeYAMLReport follows resolved YAML scalar tags, preserving numeric-looking strings as strings. YAML report rendering preserves explicit numeric meaning for values beyond the resolver's ordinary numeric range.
  • Compilation of flag aliases reuses resolved chain suffixes. Alias discovery and help reuse the existing source tree, and declaration validation reuses one scratch path across siblings, formatting paths only for diagnostics.
  • Typed input preparation reconstructs occurrence order without general sorting; replay of captured flags merges already ordered streams. Parsing and completion share flag-consumption mechanics while retaining their distinct handling of errors and incomplete input.
  • The core reporting example preserves its default scenario when the optional operand is omitted. The interactive completion fixture no longer collides with the reserved --format flag. FlagMeta documentation now states the existing naming and reserved-spelling rules.

Compatibility and upgrade

The public core Go API, CLI grammar, and Go 1.26.0 consumer minimum are unchanged. The maintainer release toolchain remains Go 1.27.0.

Applications using background producers should coordinate deferred submissions before the handler returns and handle ErrReporterClosed once finalization begins. See the invocation reporting guide.

Callers supplying YAML with numbers beyond the resolver's ordinary range should use explicit !!int or !!float tags when numeric meaning is intended. Untagged values resolved as strings now retain that type. See DecodeYAMLReport for the conversion contract.

COPYRIGHT | LICENSE | ATTRIBUTION