Releases: faustbrian/go-cli
Releases · faustbrian/go-cli
Release list
github.com/faustbrian/go-cli v1.0.0
[1.0.0] - 2026-08-25
Changed
-
Exclude intentional nested modules from root local-proxy archives so local,
bootstrap, CI, and public module checksums describe the same source
boundary. -
Track the pinned documentation-tool lockfile so clean CI checkouts install
the exact validated cspell dependency. -
Reconcile standalone dependency checksums against deterministic current
module archives so CI, local verification, and release consumers resolve
identical content. -
Harden standalone documentation validation with deterministic spelling and
link checks, package-specific documentation gates, and repository-local
contributor guidance.
Documentation
- Link the package README to the repository-wide Golib documentation portal.
Changed
- Publish the module from its standalone
github.com/faustbrian/go-cliidentity while preserving its documented API and behavior. - Delegate local mutation checks to the canonical exact-100 repository runner
and remove the superseded package-local Gremlins configuration. - Record PFlag as a direct dependency of the competitor benchmark harness and
remove its redundant indirect declaration. - Replace the internal Cobra/PFlag adapter with a dependency-free,
invocation-local parser while preserving the documented argv contract and
reducing service binary overhead. - Add
RunCommandfor processes that need normal command, help, and version
behavior without publishing the hidden shell-completion protocol. - Add a bounded
CommandSetcompilation path for service processes that need
direct commands, help, version, stable errors, and bounded output without
linking unsupported generic CLI features. - Allow bounded
CommandSetchildren to parse command-local typed options
without linking the complete generic command graph. - Run the local competitor benchmark harness through the repository workspace
so it can measure the unreleased canonical CLI module before initial tags.
Fixed
- Bounded fuzz worker parallelism to prevent resource saturation from turning
successful structured-output cases into harness deadline failures. - Terminated generated Markdown with exactly one newline so checked-in command
references remain byte-for-byte reproducible without trailing blank lines. - Rejected Unicode bidi controls in command identities and stripped them from
owned terminal output and public error messages. - Returned a classified error instead of panicking when manifest generation is
invoked on a nil application. - Made repeated limit and exit-code compile options preserve independent
earlier overrides. - Enforced cancellation between lifecycle phases, retained cancellation
causes, and prevented middleware from continuing an invocation twice. - Applied dynamic completion providers to shorthand values and assigned long
option values. - Made registered digit shorthands reachable without changing negative-number
parsing on sibling commands. - Enforced the output byte limit across informational and data payloads and
retained output-error classification through lifecycle callbacks. - Rejected command nodes that combine positional arguments with subcommands,
eliminating ambiguous dispatch grammars before execution. - Prevented retained middleware continuations from running handlers after
cleanup or afterRunreturns. - Added command aliases to static completion and skipped oversized provider
candidates without discarding later bounded results. - Retained dynamic completion and protocol writer failures together instead of
allowing output failure to erase the primary provider error. - Bounded aggregate command, argument, and option metadata before immutable
graph publication and generation. - Rejected option-group combinations whose required or defaulted values make
the declared constraints impossible to satisfy. - Validated enum declarations and defaults, published allowed values, and
included the root command's full contract in machine manifests. - Completed Markdown references with arguments, status, aliases, examples,
type constraints, and control-safe metadata. - Replaced parser-engine diagnostics and causes at the internal boundary with
stable framework-owned classifications and messages. - Added idempotent shutdown-controller cleanup so successful process lifetimes
release their derived cancellation context without waiting for a signal. - Expanded fuzzing across lifecycle failure and cancellation, help and
reference generation, JSON and terminal rendering, and adapter translation. - Split comparative construction from prepared dispatch, made validation and
JSON output equivalent, and added broad, deep, maximum, failure, suggestion,
conversion, output, and cancellation benchmarks. - Completed enum values for separate, assigned, and attached option forms and
arguments while redacting secret enum sets from every discovery surface. - Added a built subprocess fixture proving JSON integrity, portable success and
usage statuses, SIGTERM cancellation status, and signal cleanup at the only
boundary whereos.Exitis appropriate. - Replaced eval-based upstream completion scripts with deterministic owned
Bash, Zsh, Fish, and PowerShell templates that pass token arrays literally,
preserve safe descriptions, and undergo native syntax and injection checks. - Prevented direct handler writes from contaminating JSON stdout or stderr and
quiet-mode stdout while retaining explicit human-mode streams. - Validated custom value-type names and time layouts and published time formats
through metadata, manifests, and Markdown references.
Added
- Accept
versionas the command form of the framework-owned root version
request for command-oriented service binaries. - Established the module, supported Go range, and internal Cobra engine
boundary. - Recorded the initial parser-engine architecture decision and comparison
evidence. - Added explicit command construction, ordered immutable compiled metadata,
aliases, lifecycle-facing metadata, typed argument and option bindings, and
persistent option declarations. - Added construction-time rejection for invalid names, command cycles, reused
nodes, duplicate identities and options, inherited option shadowing, and
ambiguous positional layouts. - Added invocation-local parsing through an internal Cobra adapter with fresh
parser state for every run, explicit caller context and IO, aliases,
inherited options, combined boolean shorthands, interspersed options, and
double-dash handling. - Added typed boolean, string, integer, unsigned integer, floating-point,
duration, time, enum, string-slice, and key/value options with explicit
omitted, defaulted, and supplied value states. - Added deterministic validation, middleware, pre-run, handler, post-run, and
reverse-order bounded cleanup phases with stable failure classification and
primary-plus-cleanup error composition. - Added explicit optional, required, and forbidden interaction capabilities;
required interaction now fails before lifecycle side effects when a request
is non-interactive. - Added typed signed integer, unsigned integer, floating-point, duration, time,
and enum positional arguments, including negative numeric positional tokens
without weakening unknown-option handling. - Added malformed-value classification, secret-safe conversion causes, exact
cancellation-cause retention, invalid UTF-8 rejection, and bounded argv
count and cumulative size. - Added bounded human, quiet, and versioned deterministic JSON output policies,
terminal-control stripping for diagnostics, stable success and error
envelopes, and strict stdout/stderr separation. - Added output-failure classification for encoding errors, writer errors, and
short writes without erasing an earlier command failure. - Added deterministic nested plain-text help, Markdown command references, and
versioned JSON command manifests with argument, local option, inherited
option, alias, lifecycle metadata, and provenance. - Added side-effect-free concurrent-safe Bash, Zsh, Fish, and PowerShell
completion script generation through the internal engine boundary. - Added successful typed help and version request results, with generated help
and version content honoring human, quiet, and JSON output policies. - Added stable unknown-command, unknown-option, and missing-option-value error
classifications while reserving framework-owned help and version flags. - Added required options, mutually exclusive option groups, jointly required
option groups, explicit-empty satisfaction, and default-backed required
values, all validated before lifecycle side effects. - Added construction rejection for unregistered group members and reused typed
argument or option bindings. - Added the parallel-safe
clitestharness for isolated argv, context, stdin,
stdout, stderr, output policy, interaction policy, selected-command, error,
and exit-status assertions without process-global mutation. - Added configurable positive construction and argv limits with auditable
defaults for command depth, command count, option and argument definitions,
token count, and cumulative token bytes. - Added a concurrency-safe graceful-then-forced shutdown controller that
preserves caller context and cancellation causes while leaving operating
system signal registration and restoration under application ownership. - Exported explicit argument and option definition contracts and added generic
custom scalar parsers so application-owned value types remain typed without
exposing or extending Cobra types. - Added bounded, cancellation-aware static and explicit dynamic completion
candidates with safe metadata-only provider requests, deterministic
deduplication, hostile-description sanitization, and secret-provider
rejection. - Added the hidden Cobra-compatible completion protocol boundary used by
generated shell scripts; it n...