Releases: leodido/structcli
Releases · leodido/structcli
v0.18.0
What's Changed
Breaking Changes 🛠
- feat!: remove
MethodByName, wireFieldHookProvider/RegisterTypeby @leodido in #157 - refactor!: remove
shortfromDefineHookFuncsignature by @leodido in #160
Features & Enhancements 🎉
- feat: add
RegisterType[T],FieldHookProvider, andFieldCompleterAPIs by @leodido in #156 - feat(ci): add WASM build and behavioral parity CI by @leodido in #162
- feat(ci): expand wasm parity to all 8 examples by @leodido in #163
- feat(ci): add functional parity checks for DCE-safe APIs by @leodido in #164
Documentation 📖
- docs: update README for new custom type hook APIs by @leodido in #158
- docs: add customtypes example by @leodido in #159
- docs: clean up LLM tells and stale references by @leodido in #161
- docs: document WASM support in README by @leodido in #165
Full Changelog: v0.17.0...v0.18.0
v0.17.0
What's Changed
Features & Enhancements 🎉
- feat: add standalone capability interfaces (
Validatable,Transformable,ContextInjector) by @leodido in #141 - feat: add
Bind(cmd, opts)for flag definition and auto-unmarshal registration by @leodido in #142 - feat: add
ExecuteC+ bind pipeline for auto-unmarshal by @leodido in #149 - feat: add
Setuporchestrator with functional options by @leodido in #144 - feat: add
WithAppNameandWithConfigtoSetupby @leodido in #145 - refactor: rewrite examples to use
Setup+Bind+ExecuteCby @leodido in #146 - fix: bind pipeline runtime fixes for shared opts, repeated ExecuteC, and config reload by @leodido in #148
- refactor: extract
DefaultValidateTagNameandDefaultModTagNameconstants by @leodido in #152 - refactor: unify annotation prefix by @leodido in #154
Bug Fixes 🪤
- fix: allow
--jsonschemaand--debug-optionson commands withoutRunEby @leodido in #140 - fix: warn when
Bind-registered command has subcommands butTraverseChildrenis false by @leodido in #151 - fix: warn when
Bindis used withoutExecuteCby @leodido in #153
Documentation 📖
- docs: update README, ai-native.md, and examples for Setup + Bind + ExecuteC API by @leodido in #147
- docs: explain
WithDebugnon-variadic signature inSetupgodoc by @leodido in #150 - docs: remove em/en dashes and undeprecate composite interfaces by @leodido in #155
Full Changelog: v0.16.1...v0.17.0
v0.16.1
v0.16.0
What's Changed
Features & Enhancements 🎉
- refactor: replace
unsafe.Pointerwith safe reflect in define path by @leodido in #104 - refactor: replace unreachable pflag error handling with panic helpers by @leodido in #114
- feat: add
RegisterEnumfor automatic string enum flag handling by @leodido in #115 - feat: add
RegisterIntEnumfor integer-based enum flags by @leodido in #116 - refactor: migrate
zapcore.LeveltoRegisterIntEnumby @leodido in #118 - feat: add flagkit package with
Followtype for agent-friendly streaming by @leodido in #119 - feat: add flagkit.LogLevel types (ZapLogLevel, SlogLogLevel, LogLevel alias) by @leodido in #125
- feat: add
flagkit.Outputtype withOutputFormatenum andRegisterOutputFormatsby @leodido in #121 - feat: add
flagkit.Verboseandflagkit.DryRuntypes by @leodido in #122 - feat: add flagkit.Timeout and flagkit.Quiet types by @leodido in #126
- feat: add JSON debug output and source attribution for
UseDebugby @leodido in #129 - feat: add
SetupHelpTopicsfor env-vars and config-keys help topics by @leodido in #133 - feat: close
--jsonschemagaps and add cross-tree CLI support by @leodido in #134
Bug Fixes 🪤
- fix: P1.2 preset round-trip must exclude comma from values by @leodido in #109
- fix: filter non-callable commands in agents.go and skill.go by @leodido in #111
- fix: handle embedded struct name collision in
Unmarshalby @leodido in #124 - fix: show inherited persistent flags in subcommand help by @leodido in #131
- docs: update README debug section and all help text snippets by @leodido in #130
- fix: reject
--jsonschemaon help topic commands by @leodido in #135 - fix: validate
--jsonschemaflag values and deduplicateWithFullTreeby @leodido in #136
Documentation 📖
- docs: add
RegisterEnumsection to README by @leodido in #128 - docs: fix non-compiling minimal example and stale flagcustom tag by @leodido in #132
Other Changes 🫶
Full Changelog: v0.15.0...v0.16.0
v0.15.0
What's Changed
Features & Enhancements 🎉
- Add
flaghiddenannotation by @leodido in #92 - Add command factory for captured output streams by @fntlnz in #97
- Deduplicate enum help-text building logic by @leodido in #96
Bug Fixes 🪤
- Check
InferDecodeHooksreturn in flagcustom fallback path by @leodido in #94 - Propagate
SetAnnotationerror fromInferDecodeHooksby @leodido in #95 - Signal truncation in config description when paths exceed 3 by @leodido in #98
- Remove throwaway "" map entry in
Groups()by @leodido in #100 - Discard unreachable
MarkHiddenerror to fix diff coverage by @leodido in #93
Other Changes 🫶
- Finalize v0.14.0 release notes by @leodido in #89
- Add devcontainer Dockerfile and config by @leodido in #90
- Add "Build with Ona" button to README by @leodido in #91
- Add v0.15.0 release notes by @leodido in #99
- Bump
Versionconstant to 0.15.0 by @leodido in #101
New Contributors
Full Changelog: v0.14.0...v0.15.0
v0.14.0
What's Changed
Features & Enhancements 🎉
- Add stdio MCP server support by @leodido in #82
- Include runnable parent commands in discovery files by @leodido in #80
- Remove
os.Exitfrom JSON Schema and MCP interceptors by @leodido in #83 - Add
Versionconstant and CI gate against tag drift by @leodido in #79
Bug Fixes 🪤
Other Changes 🫶
- Dogfood generators on the full example CLI by @leodido in #77
- Add
SetupMCPto README and AI Native guide by @leodido in #86 - Restore project coverage above 90% by @leodido in #84
- Boost coverage for
values/net.goandjsonschema.goby @leodido in #85 - Add unreleased entries for v0.14.0 by @leodido in #87
- Bump Version constant to 0.14.0 by @leodido in #88
Full Changelog: v0.13.0...v0.14.0
v0.13.0
What's Changed
Features & Enhancements 🎉
- Add
--jsonschemaflag for machine-readable CLI self-description by @leodido in #62 - Add semantic exit codes for AI-native CLIs by @leodido in #63
- Add
EnumValuerinterface and store enum values in flag annotations by @leodido in #66 - Store validate/mod tags as annotations with custom tag name support by @leodido in #67
- Add
Details()toValidationErrorwith generalized interface by @leodido in #68 - Structured JSON errors with typed interception and semantic exit codes by @leodido in #65
- Emit integer schema types for integral flags by @leodido in #72
- Make JSON Schema setup composable and configurable by @leodido in #73
- Add SKILL.md, llms.txt, and AGENTS.md generators by @leodido in #76
Bug Fixes 🪤
- Fix memory cleanup assertion math by @leodido in #69
- Keep missing flags and config errors distinct by @leodido in #71
- Recurse into unexported embedded structs by @leodido in #78
Other Changes 🫶
- Add "Build AI-Native CLIs" section to README by @leodido in #64
- Preserve exact env restoration in tests by @leodido in #74
- Remove tracked
structerrbinary by @leodido in #70 - Align contract and changelog by @leodido in #75
Full Changelog: v0.12.0...v0.13.0
v0.12.0
What's Changed
Features & Enhancements 🎉
- Establish byte type contract primitives by @leodido in #52
- Add
Hex/Base64typed bytes support for flags, env, and config by @leodido in #53 - Support
net.IP/net.IPMask/net.IPNet/[]net.IPacross flags, env, and config by @leodido in #54 - Add built-in slice (
[]time.Duration,[]bool,[]uint) families by @leodido in #58 - Add map families (
map[string]string,map[string]int,map[string]int64) and example by @leodido in #61
Bug Fixes 🪤
Other Changes 🫶
- Codify separator policy by @leodido in #56
- Document byte built-ins and clean stale comment by @leodido in #55
- Run collections example (
examples/collections) coverage by @leodido in #60
Full Changelog: v0.11.0...v0.12.0
v0.11.0
What's Changed
Features & Enhancements 🎉
- Add first-class flag presets for alias/value combos by @leodido in #47
- Auto-register
Complete<FieldName>flag completions by @leodido in #50 - Add runnable
flagpresetdemo command by @leodido in #48
Other Changes 🫶
- Add e2e completion coverage and precedence docs by @leodido in #51
- Normalize go.work.sum by @leodido in #49
Full Changelog: v0.10.0...v0.11.0
v0.10.0
What's Changed
Features & Enhancements 🎉
- Add float32/float64 support by @leodido in #33
- Add opt-in config key validation by @leodido in #44
- Reconcile root config and command effective viper scopes by @leodido in #42
- Clarify options contract for validate/transform by @leodido in #35
Bug Fixes 🪤
- Stop swallowing env/config/define errors by @leodido in #28
- Eliminate SetEnvPrefix data races by @leodido in #29
- Clear env prefix in
Reset()by @leodido in #32 - Apply defaults when unmarshal runs on leaf command by @leodido in #37
- Scope remapping metadata to command context by @leodido in #38
- Support nested alias keys during remapping by @leodido in #39
- Wrap commands added after
SetupDebugby @leodido in #43 - Fix config remapping typo by @leodido in #45
Security 🔒
- Bump golang.org/x/crypto to v0.45.0 by @leodido in #30
- Bump golang.org/x/crypto from 0.39.0 to 0.45.0 in /examples/full by @dependabot[bot] in #31
Other Changes 🫶
- Remove
goto definition_doneby @leodido in #34 - Clarify config key forms, precedence, and env scope by @leodido in #40
- Add characterization coverage for key remapping by @leodido in #36
- Characterize global vs scoped viper config boundary by @leodido in #41
Full Changelog: v0.9.2...v0.10.0