|
1 | 1 | # Changelog |
2 | 2 |
|
| 3 | +## [6.0.0](https://github.com/jdx/usage/compare/v5.1.0..v6.0.0) - 2026-08-17 |
| 4 | + |
| 5 | +### 🚀 Features |
| 6 | + |
| 7 | +- **(argv)** add a zero-allocation argv parser by [@jdx](https://github.com/jdx) in [#798](https://github.com/jdx/usage/pull/798) |
| 8 | +- **(argv)** emit a usage spec from static metadata by [@jdx](https://github.com/jdx) in [#801](https://github.com/jdx/usage/pull/801) |
| 9 | +- **(argv)** a bound stops a variadic by [@jdx](https://github.com/jdx) in [#826](https://github.com/jdx/usage/pull/826) |
| 10 | +- **(argv)** route a word that names nothing to the default subcommand by [@jdx](https://github.com/jdx) in [#848](https://github.com/jdx/usage/pull/848) |
| 11 | +- **(argv)** join static tables at compile time by [@jdx](https://github.com/jdx) in [#851](https://github.com/jdx/usage/pull/851) |
| 12 | +- **(argv)** render the usage line, byte-identical to usage-lib's by [@jdx](https://github.com/jdx) in [#854](https://github.com/jdx/usage/pull/854) |
| 13 | +- **(argv)** render `-h`, byte-identical to usage-lib's by [@jdx](https://github.com/jdx) in [#860](https://github.com/jdx/usage/pull/860) |
| 14 | +- **(argv)** render `--help` too, byte-identical to usage-lib's by [@jdx](https://github.com/jdx) in [#866](https://github.com/jdx/usage/pull/866) |
| 15 | +- **(argv)** answer `--help` and `-h` by [@jdx](https://github.com/jdx) in [#870](https://github.com/jdx/usage/pull/870) |
| 16 | +- **(argv)** answer the `help` subcommand by [@jdx](https://github.com/jdx) in [#872](https://github.com/jdx/usage/pull/872) |
| 17 | +- **(argv)** split a command line the way the shell that typed it would by [@jdx](https://github.com/jdx) in [#874](https://github.com/jdx/usage/pull/874) |
| 18 | +- **(argv)** read the cursor's position off a real parse by [@jdx](https://github.com/jdx) in [#876](https://github.com/jdx/usage/pull/876) |
| 19 | +- **(argv)** offer what the reference offers, from compiled tables by [@jdx](https://github.com/jdx) in [#877](https://github.com/jdx/usage/pull/877) |
| 20 | +- **(argv)** generate the shell script each shell wants by [@jdx](https://github.com/jdx) in [#887](https://github.com/jdx/usage/pull/887) |
| 21 | +- **(argv)** let a Rust function answer for a value by [@jdx](https://github.com/jdx) in [#888](https://github.com/jdx/usage/pull/888) |
| 22 | +- **(argv)** write the `run=` a declared completer answers by [@jdx](https://github.com/jdx) in [#890](https://github.com/jdx/usage/pull/890) |
| 23 | +- **(argv)** say what went wrong the way clap says it by [@jdx](https://github.com/jdx) in [#895](https://github.com/jdx/usage/pull/895) |
| 24 | +- **(argv)** suggest what was probably meant by [@jdx](https://github.com/jdx) in [#897](https://github.com/jdx/usage/pull/897) |
| 25 | +- **(argv)** answer `--version`, which an adopter loses on the way from clap by [@jdx](https://github.com/jdx) in [#909](https://github.com/jdx/usage/pull/909) |
| 26 | +- **(bench)** count what a parse allocates, and stop allocating for commands nobody ran by [@jdx](https://github.com/jdx) in [#829](https://github.com/jdx/usage/pull/829) |
| 27 | +- **(cli)** hold a spec's declaration order, the way clap-sort holds a clap CLI's by [@jdx](https://github.com/jdx) in [#915](https://github.com/jdx/usage/pull/915) |
| 28 | +- **(complete)** complete config keys and values from the spec by [@jdx](https://github.com/jdx) in [#840](https://github.com/jdx/usage/pull/840) |
| 29 | +- **(config)** generate the settings registry from the spec by [@jdx](https://github.com/jdx) in [#864](https://github.com/jdx/usage/pull/864) |
| 30 | +- **(config)** carry a setting's choices into the generated registry by [@jdx](https://github.com/jdx) in [#869](https://github.com/jdx/usage/pull/869) |
| 31 | +- **(derive)** compile a struct into parse tables and a spec by [@jdx](https://github.com/jdx) in [#803](https://github.com/jdx/usage/pull/803) |
| 32 | +- **(derive)** compile subcommands from an enum by [@jdx](https://github.com/jdx) in [#816](https://github.com/jdx/usage/pull/816) |
| 33 | +- **(derive)** check what a parse cannot decide on its own by [@jdx](https://github.com/jdx) in [#817](https://github.com/jdx/usage/pull/817) |
| 34 | +- **(derive)** nest commands to any depth by [@jdx](https://github.com/jdx) in [#818](https://github.com/jdx/usage/pull/818) |
| 35 | +- **(derive)** declare which flags conflict and which require each other by [@jdx](https://github.com/jdx) in [#820](https://github.com/jdx/usage/pull/820) |
| 36 | +- **(derive)** let a flag displace another, the last one given winning by [@jdx](https://github.com/jdx) in [#821](https://github.com/jdx/usage/pull/821) |
| 37 | +- **(derive)** let a command answer to more than one name by [@jdx](https://github.com/jdx) in [#827](https://github.com/jdx/usage/pull/827) |
| 38 | +- **(derive)** let a variant hold its command in a `Box` by [@jdx](https://github.com/jdx) in [#828](https://github.com/jdx/usage/pull/828) |
| 39 | +- **(derive)** let a field be the type it means by [@jdx](https://github.com/jdx) in [#833](https://github.com/jdx/usage/pull/833) |
| 40 | +- **(derive)** declare the words a value may be by [@jdx](https://github.com/jdx) in [#838](https://github.com/jdx/usage/pull/838) |
| 41 | +- **(derive)** hold the bytes a word arrived as by [@jdx](https://github.com/jdx) in [#841](https://github.com/jdx/usage/pull/841) |
| 42 | +- **(derive)** declare the properties mise patches in by hand by [@jdx](https://github.com/jdx) in [#842](https://github.com/jdx/usage/pull/842) |
| 43 | +- **(derive)** accept a value the OS accepts and UTF-8 does not by [@jdx](https://github.com/jdx) in [#844](https://github.com/jdx/usage/pull/844) |
| 44 | +- **(derive)** share declarations between commands with flatten by [@jdx](https://github.com/jdx) in [#852](https://github.com/jdx/usage/pull/852) |
| 45 | +- **(derive)** say three things about a CLI the spec could and the derive could not by [@jdx](https://github.com/jdx) in [#853](https://github.com/jdx/usage/pull/853) |
| 46 | +- **(derive)** answer a completion request from the binary itself by [@jdx](https://github.com/jdx) in [#885](https://github.com/jdx/usage/pull/885) |
| 47 | +- **(derive)** bind a flag to a setting, from what the parser saw by [@jdx](https://github.com/jdx) in [#889](https://github.com/jdx/usage/pull/889) |
| 48 | +- **(derive)** a setting can be declared wherever a flag is by [@jdx](https://github.com/jdx) in [#896](https://github.com/jdx/usage/pull/896) |
| 49 | +- **(derive)** let a field name the function that completes it by [@jdx](https://github.com/jdx) in [#892](https://github.com/jdx/usage/pull/892) |
| 50 | +- **(derive)** say how an argument relates to `--`, all four ways by [@jdx](https://github.com/jdx) in [#900](https://github.com/jdx/usage/pull/900) |
| 51 | +- **(derive)** a default a collecting field can hold by [@jdx](https://github.com/jdx) in [#902](https://github.com/jdx/usage/pull/902) |
| 52 | +- **(derive)** say what a command does to the world by [@jdx](https://github.com/jdx) in [#905](https://github.com/jdx/usage/pull/905) |
| 53 | +- **(derive)** name a value the way clap names it, and say which usage can read the spec by [@jdx](https://github.com/jdx) in [#907](https://github.com/jdx/usage/pull/907) |
| 54 | +- **(derive)** let `parse()` answer a failure the way a program does by [@jdx](https://github.com/jdx) in [#910](https://github.com/jdx/usage/pull/910) |
| 55 | +- **(derive)** read the package's version, and be called what the binary is called by [@jdx](https://github.com/jdx) in [#917](https://github.com/jdx/usage/pull/917) |
| 56 | +- **(derive)** a command that takes nothing can be written that way by [@jdx](https://github.com/jdx) in [#923](https://github.com/jdx/usage/pull/923) |
| 57 | +- **(derive)** say that a command cannot be run alone, which it knew and did not write by [@jdx](https://github.com/jdx) in [#937](https://github.com/jdx/usage/pull/937) |
| 58 | +- **(derive)** keep command aliases on their args by [@jdx](https://github.com/jdx) in [#946](https://github.com/jdx/usage/pull/946) |
| 59 | +- **(generate)** add json-schema for a CLI's config file by [@jdx](https://github.com/jdx) in [#839](https://github.com/jdx/usage/pull/839) |
| 60 | +- **(go)** emit Go parse tables from a spec, which is what Go has instead of a derive by [@jdx](https://github.com/jdx) in [#931](https://github.com/jdx/usage/pull/931) |
| 61 | +- **(help)** line the flag column up, and give the short page a column at all by [@jdx](https://github.com/jdx) in [#912](https://github.com/jdx/usage/pull/912) |
| 62 | +- **(help)** list the flags a command inherits by [@jdx](https://github.com/jdx) in [#913](https://github.com/jdx/usage/pull/913) |
| 63 | +- **(help)** list `--help` and `--version`, which every page answers by [@jdx](https://github.com/jdx) in [#914](https://github.com/jdx/usage/pull/914) |
| 64 | +- **(spec)** support flag relationships by [@jdx](https://github.com/jdx) in [#793](https://github.com/jdx/usage/pull/793) |
| 65 | +- **(spec)** add help_heading, and render it by [@jdx](https://github.com/jdx) in [#802](https://github.com/jdx/usage/pull/802) |
| 66 | +- **(spec)** allow a mount at the top level by [@jdx](https://github.com/jdx) in [#806](https://github.com/jdx/usage/pull/806) |
| 67 | +- **(spec)** make unknown flags configurable, and keep them as values by [@jdx](https://github.com/jdx) in [#810](https://github.com/jdx/usage/pull/810) |
| 68 | +- **(spec)** add `conflicts` to flags by [@jdx](https://github.com/jdx) in [#819](https://github.com/jdx/usage/pull/819) |
| 69 | +- **(spec)** say that one flag needs another, which nothing here could by [@jdx](https://github.com/jdx) in [#925](https://github.com/jdx/usage/pull/925) |
| 70 | +- **(spec)** **breaking** a group, for the rule that no single flag can state by [@jdx](https://github.com/jdx) in [#927](https://github.com/jdx/usage/pull/927) |
| 71 | + |
| 72 | +### 🐛 Bug Fixes |
| 73 | + |
| 74 | +- **(argv)** stop a repeatable flag from eating a positional by [@jdx](https://github.com/jdx) in [#799](https://github.com/jdx/usage/pull/799) |
| 75 | +- **(argv)** inherit `unknown_flags`, which reached one command out of a tree by [@jdx](https://github.com/jdx) in [#939](https://github.com/jdx/usage/pull/939) |
| 76 | +- **(argv)** reject duplicate flags by [@jdx](https://github.com/jdx) in [#945](https://github.com/jdx/usage/pull/945) |
| 77 | +- **(ci)** unblock releases by cutting usage-derive's dev-dependency by [@jdx](https://github.com/jdx) in [#811](https://github.com/jdx/usage/pull/811) |
| 78 | +- **(ci)** check the version the crates promise, and promise one that is true by [@jdx](https://github.com/jdx) in [#918](https://github.com/jdx/usage/pull/918) |
| 79 | +- **(clap)** say what clap would do with an unknown flag by [@jdx](https://github.com/jdx) in [#899](https://github.com/jdx/usage/pull/899) |
| 80 | +- **(cli)** recognize about as root command help by [@jdx](https://github.com/jdx) in [#794](https://github.com/jdx/usage/pull/794) |
| 81 | +- **(derive)** let a `--`-only argument follow a variadic by [@jdx](https://github.com/jdx) in [#823](https://github.com/jdx/usage/pull/823) |
| 82 | +- **(derive)** three more descriptions a spec keeps and the derive lost by [@jdx](https://github.com/jdx) in [#861](https://github.com/jdx/usage/pull/861) |
| 83 | +- **(derive)** name the mistake when `settings` has nothing to collect by [@jdx](https://github.com/jdx) in [#904](https://github.com/jdx/usage/pull/904) |
| 84 | +- **(derive)** emit the tables beside the user's types, not in a module above them by [@jdx](https://github.com/jdx) in [#938](https://github.com/jdx/usage/pull/938) |
| 85 | +- **(docs)** link multi-word commands to their real source files by [@jdx](https://github.com/jdx) in [#845](https://github.com/jdx/usage/pull/845) |
| 86 | +- **(docs)** link every command to the file that implements it by [@jdx](https://github.com/jdx) in [#846](https://github.com/jdx/usage/pull/846) |
| 87 | +- **(docs)** keep hidden entries out of help by [@jdx](https://github.com/jdx) in [#859](https://github.com/jdx/usage/pull/859) |
| 88 | +- **(help)** a command's page should say what that command does by [@jdx](https://github.com/jdx) in [#911](https://github.com/jdx/usage/pull/911) |
| 89 | +- **(help)** a declared name is not a short form, and blank help is no help by [@jdx](https://github.com/jdx) in [#916](https://github.com/jdx/usage/pull/916) |
| 90 | +- **(help)** render the page for the mount the words reached by [@jdx](https://github.com/jdx) in [#928](https://github.com/jdx/usage/pull/928) |
| 91 | +- **(parse)** keep every `--` after the first by [@jdx](https://github.com/jdx) in [#809](https://github.com/jdx/usage/pull/809) |
| 92 | +- **(parse)** stop losing a flag that is missing its value by [@jdx](https://github.com/jdx) in [#807](https://github.com/jdx/usage/pull/807) |
| 93 | +- **(parse)** answer the five vectors the reference implementation was failing by [@jdx](https://github.com/jdx) in [#930](https://github.com/jdx/usage/pull/930) |
| 94 | +- **(spec)** make the config block survive being written out by [@jdx](https://github.com/jdx) in [#832](https://github.com/jdx/usage/pull/832) |
| 95 | +- **(spec)** apply default_subcommand only at the root by [@jdx](https://github.com/jdx) in [#850](https://github.com/jdx/usage/pull/850) |
| 96 | +- **(spec)** split a clap default by the delimiter clap splits it by by [@jdx](https://github.com/jdx) in [#901](https://github.com/jdx/usage/pull/901) |
| 97 | + |
| 98 | +### 🧪 Testing |
| 99 | + |
| 100 | +- **(spec)** import the argv questions clap's suite answers and ours did not by [@jdx](https://github.com/jdx) in [#926](https://github.com/jdx/usage/pull/926) |
| 101 | + |
| 102 | +### 🛡️ Security |
| 103 | + |
| 104 | +- **(docs)** render the config block by [@jdx](https://github.com/jdx) in [#837](https://github.com/jdx/usage/pull/837) |
| 105 | +- **(spec)** the config vocabulary by [@jdx](https://github.com/jdx) in [#835](https://github.com/jdx/usage/pull/835) |
| 106 | + |
| 107 | +### 🔍 Other Changes |
| 108 | + |
| 109 | +- agent/complete files by [@jdx](https://github.com/jdx) in [#883](https://github.com/jdx/usage/pull/883) |
| 110 | + |
| 111 | +### 📦️ Dependency Updates |
| 112 | + |
| 113 | +- update rust crate syn to v3 by [@renovate[bot]](https://github.com/renovate[bot]) in [#808](https://github.com/jdx/usage/pull/808) |
| 114 | + |
3 | 115 | ## [5.1.0](https://github.com/jdx/usage/compare/v5.0.0..v5.1.0) - 2026-08-09 |
4 | 116 |
|
5 | 117 | ### 🚀 Features |
|
0 commit comments