Skip to content

Commit 300cfb7

Browse files
committed
chore: release v6.0.0
1 parent 10b5f1f commit 300cfb7

12 files changed

Lines changed: 197 additions & 315 deletions

File tree

CHANGELOG.md

Lines changed: 112 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,117 @@
11
# Changelog
22

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+
3115
## [5.1.0](https://github.com/jdx/usage/compare/v5.0.0..v5.1.0) - 2026-08-09
4116

5117
### 🚀 Features

0 commit comments

Comments
 (0)