Repository navigation
usage 6.2.0 - #300376
Merged
Merged
usage 6.2.0#300376
Conversation
fxcoudert
approved these changes
Aug 24, 2026
Contributor
|
🤖 An automated task has requested bottles to be published to this PR. Caution Please do not push to this PR branch before the bottle commits have been pushed, as this results in a state that is difficult to recover from. If you need to resolve a merge conflict, please use a merge commit. Do not force-push to this PR branch. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Created by
brew bumpCreated with
brew bump-formula-pr.Details
release notes
embedded::outcomeand the derive-generatedCli::embedded_outcome/embedded_outcome_intolet N-API, WASM, editor, and test-runner hosts parse without terminating the process, returning a renderedOutcome::Exitwith stream and clap-compatible status (#1250, #1270, #1281).diagnostic::reportreturns a stableCode, subject, and optionalArgvSpan(index plus byte offsets intoOsStr) so hosts can label parse failures without scraping terminal text (#1255).usage::response::expandpre-parses@filearguments with shell-style quoting, nested includes,@@escaping, and cycle detection — kept off the zero-allocation parse path (#1259).#[usage(multiple)]on anArgGroupenum collects related flags like-A/-W/-DintoVec<T>in argv order (#1271).ArgGrouptuple variants now declare one value-taking flag (Migrate(Source),StdinFilepath(PathBuf)), bound throughFromStr, lossless path conversion, orValueEnum(#1253).#[usage(validate_with = …)]runs command-wide invariants after field conversion, and#[usage(try_into = DomainType)]addsparse_into*entry points that finalize throughTryFrom(#1254).default_fnevaluates a typed default at parse time, withdefault_notefor help prose that describes it honestly (#1256).usage-dynamiccrate merges runtime-discovered plugin specs into a derived host's help, completion, and parsing viaCatalog::builder, attaching to a staticexternal_subcommandcatch-all (#1275).help::topicsandhelp::render_topicrender a single standard orhelp_headingsection without inventing fake subcommands (#1257).--helprenders Markdown-style bold, italic, inline-code, and strikethrough spans in prose, leaving plain and piped output unchanged (#1245).kind(Command,Flag,File,Directory,Value) so PowerShell can use nativeCompletionResulttypes, plus adisplaylabel so zsh and PowerShell can show a richer name while insertingvalue(#1239, #1242).type="path:toml,yaml"(or use.extensions("toml", "yaml")onFilePath/AnyPath) and every generated completion script filters accordingly; directories still traverse (#1240).CompletionTracerecords words, prefix, command path, cursor owner, separator state, candidates, and shell path fallback for a Tab answer (#1241).{{grouped_args}},{{ungrouped_args}},{{grouped_flags}}, and{{ungrouped_flags}}let templates interleave namedhelp_headinggroups with default lists (#1251).heading("Ignore Files", help = "…")(andheading "Title" help="…"in KDL) puts a sentence under a named section, next to the entries it explains (#1282).outputblocks with text/JSON/JSONL framing, selectors, defaults, JSON Schemas (includingschema file="…"), an optionalmedia_type, and documentedexitcodes — surfaced through derives, MCP, generated Python/TypeScript SDKs, Markdown, and manpages (#1249, #1274).#[usage(note = "…", warning = "…")](or KDLnote/warningchildren) render as labeled admonitions in long help and portable Markdown blockquotes (#1273).#[usage(surface = "…", available_if(…))]carries descriptive audience labels through KDL, JSON, docs, and conformance tables without changing parse behavior (#1258).MarkdownRenderer::with_templateand theusage generate markdown --template NAME=PATHflag replace individual bundled Tera templates while unchanged ones remain available via{% include %}(#1267).Changed
MarkdownTheme::Compact— dense grouped lists instead of one heading per argument or flag, with title-cased metadata labels, "Output Formats" instead of "Output", and long output catalogs collapsed behind<details>. The previous layout isMarkdownTheme::Detailed(#1272, #1280).-hand--help. Rows now show one aligned column of leaf names plus a short summary; usage syntax and children's fulllong_helpstay on their own pages. mise's root--helpdrops from hundreds of lines to 136 (#1284).[env: …]no longer run off the terminal on-h; they join first and wrap into the description column together, matching what--helphas always done (#1287).[possible values: …],(default: …), and env notes now sit under the description they qualify instead of at a fixed four-space indent (#1291).Fixed
--format=jnow completes as--format=json— static choices, named completers, and runtime overlays route through the attached-value context. Generated specs also materialize the parser-supplied help/version spellings asbuiltin=#trueflags so listings and completions see them (#1277).select, and exit codes declared on flattenedArgstypes survive spec emission (including nested flatten) (#1268).default_fnmay return an empty or non-advertised typed value (#1269).mise --log-level=v --traceused to be accepted by usage-argv (and usage-go) because the post-binding choice check sat inside thegivenguard thatoverridesclears. Both parsers now judge a displaced flag's leftover choice like usage-lib and clap do; Go exports a matchingCheckDisplaced(#1286).write_groupquotes dashed members ("--allow"not--allow),cmdwriteshelp_headingbeforehelp, and rootbefore_help/after_helpmove earlier and into before-then-after order. A maximal fixture now covers every node both writers emit (#1289).#[expect(clippy::pub_underscore_fields)]onPartialstructs keeps internal fields public for cross-module flattening without noisy adopter lints (#1278).str downcaseusage on Windows so case-insensitive command matching keeps working (#1262 by @TheBearodactyl).Performance
New Contributors
💚 Sponsor usage
usage is maintained by @jdx, an open source developer for entire.io, the title sponsor of the jdx.dev open source tools including mise, aube, hk, and more. Work on usage is funded by sponsorships.
If
usagepowers CLI specs, docs, or completions for a tool you maintain or use, please consider sponsoring at jdx.dev. Every sponsorship helps the project stay independent and moving.View the full release notes at https://github.com/jdx/usage/releases/tag/v6.2.0.