Skip to content

Commit 21363ee

Browse files
committed
Merge tag '0.10.3'
Optique 0.10.3 # -----BEGIN PGP SIGNATURE----- # # iQEzBAABCgAdFiEEN0sVrzI3lqYqsbzjxCns1X7tbMoFAmmVg1EACgkQxCns1X7t # bMpbWQgA0n3LajDTf5sLXHRrQSI27fSyZJUMAqLTysG+UPPfgIz34C/faichQvqu # RtzKuyZgxNtAGj2CZlSnN/wg73sR7X2SI4JE3UrP9Q1OiJUy5u7u7u5xkD82LkKx # 2otPaHTzyFZcT1VW7LokA94zjWAEmm+o3nlJGx7kWd5VcD3nVjUbLcvdN0AycKx7 # Ys7gWhmeh/0pAHlSHfJsxIIGihaemkwgtNlHMqrI1ao27dayXeGDla63r/uDJ3P8 # jQfwd+RlmXhzouGI4qqjZoCMP54j2mGZ03jIDUfN7VUoClAkuwJV4oLVqf69qqXv # 2yQEtdw/xw/UlpVT9gy9cbT0XGp0LQ== # =PK7B # -----END PGP SIGNATURE----- # gpg: Signature made Wed 18 Feb 2026 06:16:01 PM KST # gpg: using RSA key 374B15AF323796A62AB1BCE3C429ECD57EED6CCA # gpg: Good signature from "Hong Minhee <hong@minhee.org>" [ultimate] # gpg: aka "Hong Minhee <minhee@dahlia.kr>" [ultimate] # gpg: aka "Hong Minhee <hong.minhee@gmail.com>" [ultimate] # gpg: aka "Hong Minhee <dahlia@lunant.net>" [ultimate] # gpg: aka "Hong Minhee <hongminhee@member.fsf.org>" [ultimate] # Conflicts: # CHANGES.md # examples/gitique/package.json # packages/config/deno.json # packages/config/package.json # packages/core/deno.json # packages/core/package.json # packages/git/deno.json # packages/git/package.json # packages/logtape/deno.json # packages/logtape/package.json # packages/man/deno.json # packages/man/package.json # packages/run/deno.json # packages/run/package.json # packages/temporal/deno.json # packages/temporal/package.json # packages/valibot/deno.json # packages/valibot/package.json # packages/zod/deno.json # packages/zod/package.json
2 parents 5769648 + 4fbad3e commit 21363ee

File tree

9 files changed

+993
-106
lines changed

9 files changed

+993
-106
lines changed

CHANGES.md

Lines changed: 205 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,61 @@ To be released.
3737
[#120]: https://github.com/dahlia/optique/issues/120
3838

3939

40+
Version 0.10.3
41+
--------------
42+
43+
Released on February 18, 2026.
44+
45+
### @optique/core
46+
47+
- Fixed how `brief` and `description` are displayed in subcommand help
48+
pages. [[#118], [#119]]
49+
50+
- Each help page now shows `brief` at the very top (before the Usage
51+
line) and `description` below the Usage line, consistent with how
52+
the root-level help page works.
53+
54+
- The `run()`-level `brief` and `description` no longer bleed into a
55+
subcommand's help page. Previously, when a subcommand had no
56+
`description` of its own, the description supplied to `run()` would
57+
appear on the subcommand's help page (e.g. `repro file --help` would
58+
show “Description for repro CLI” even though that text describes the
59+
top-level program, not the `file` subcommand). Now, only the
60+
subcommand's own `brief` and `description` (if any) are shown;
61+
run-level docs are used only for the root-level help page.
62+
63+
- When `command()` is wrapped with `group()`, the command's `brief`,
64+
`description`, and `footer` are now correctly forwarded to the help
65+
page. Previously `group()` only forwarded `description`, so `brief`
66+
was silently dropped and the run-level brief appeared instead.
67+
68+
- Fixed contradictory “Did you mean?” suggestion when a subcommand name is
69+
provided at the wrong level. Previously, a structure like
70+
`command("file", or(add, remove))` given the input `add --help` would
71+
report `Expected command file, but got add.` and then illogically suggest
72+
`Did you mean add?` even though `add` is only valid *inside* `file`.
73+
Suggestions in `command()` errors now derive from
74+
`extractLeadingCommandNames()`, which limits candidates to commands that
75+
are actually valid at the current parse position, not commands nested
76+
inside other commands. The same scoping is applied when a custom
77+
`notMatched` callback receives its `suggestions` argument. [[#117]]
78+
79+
- Fixed `group()` label leaking into a selected subcommand's own nested
80+
command list. Previously, when a `group()`-wrapped command (e.g.,
81+
`alias`) itself contained further subcommands (e.g., `delete`, `set`),
82+
viewing `alias --help` would show those inner commands under the outer
83+
group's label (e.g., “Additional commands:”), which was incorrect.
84+
The fix compares current command entries against the initial set of
85+
commands that the group originally labeled; the label is now applied
86+
only when the visible commands are the group's own top-level commands,
87+
not commands from a deeper level. [[#116]]
88+
89+
[#116]: https://github.com/dahlia/optique/issues/116
90+
[#117]: https://github.com/dahlia/optique/issues/117
91+
[#118]: https://github.com/dahlia/optique/issues/118
92+
[#119]: https://github.com/dahlia/optique/issues/119
93+
94+
4095
Version 0.10.2
4196
--------------
4297

@@ -893,6 +948,56 @@ to generate Unix man pages that stay synchronized with parser definitions.
893948
[#77]: https://github.com/dahlia/optique/issues/77
894949

895950

951+
Version 0.9.9
952+
-------------
953+
954+
Released on February 18, 2026.
955+
956+
### @optique/core
957+
958+
- Fixed how `brief` and `description` are displayed in subcommand help
959+
pages. [[#118], [#119]]
960+
961+
- Each help page now shows `brief` at the very top (before the Usage
962+
line) and `description` below the Usage line, consistent with how
963+
the root-level help page works.
964+
965+
- The `run()`-level `brief` and `description` no longer bleed into a
966+
subcommand's help page. Previously, when a subcommand had no
967+
`description` of its own, the description supplied to `run()` would
968+
appear on the subcommand's help page (e.g. `repro file --help` would
969+
showDescription for repro CLIeven though that text describes the
970+
top-level program, not the `file` subcommand). Now, only the
971+
subcommand's own `brief` and `description` (if any) are shown;
972+
run-level docs are used only for the root-level help page.
973+
974+
- When `command()` is wrapped with `group()`, the command's `brief`,
975+
`description`, and `footer` are now correctly forwarded to the help
976+
page. Previously `group()` only forwarded `description`, so `brief`
977+
was silently dropped and the run-level brief appeared instead.
978+
979+
- Fixed contradictoryDid you mean?suggestion when a subcommand name is
980+
provided at the wrong level. Previously, a structure like
981+
`command("file", or(add, remove))` given the input `add --help` would
982+
report `Expected command file, but got add.` and then illogically suggest
983+
`Did you mean add?` even though `add` is only valid *inside* `file`.
984+
Suggestions in `command()` errors now derive from
985+
`extractLeadingCommandNames()`, which limits candidates to commands that
986+
are actually valid at the current parse position, not commands nested
987+
inside other commands. The same scoping is applied when a custom
988+
`notMatched` callback receives its `suggestions` argument. [[#117]]
989+
990+
- Fixed `group()` label leaking into a selected subcommand's own nested
991+
command list. Previously, when a `group()`-wrapped command (e.g.,
992+
`alias`) itself contained further subcommands (e.g., `delete`, `set`),
993+
viewing `alias --help` would show those inner commands under the outer
994+
group's label (e.g., “Additional commands:”), which was incorrect.
995+
The fix compares current command entries against the initial set of
996+
commands that the group originally labeled; the label is now applied
997+
only when the visible commands are the group's own top-level commands,
998+
not commands from a deeper level. [[#116]]
999+
1000+
8961001
Version 0.9.8
8971002
-------------
8981003

@@ -1366,6 +1471,56 @@ remotes) using [isomorphic-git]. [[#71], [#72]]
13661471
[#72]: https://github.com/dahlia/optique/pull/72
13671472
13681473
1474+
Version 0.8.15
1475+
--------------
1476+
1477+
Released on February 18, 2026.
1478+
1479+
### @optique/core
1480+
1481+
- Fixed how `brief` and `description` are displayed in subcommand help
1482+
pages. [[#118], [#119]]
1483+
1484+
- Each help page now shows `brief` at the very top (before the Usage
1485+
line) and `description` below the Usage line, consistent with how
1486+
the root-level help page works.
1487+
1488+
- The `run()`-level `brief` and `description` no longer bleed into a
1489+
subcommand's help page. Previously, when a subcommand had no
1490+
`description` of its own, the description supplied to `run()` would
1491+
appear on the subcommand's help page (e.g. `repro file --help` would
1492+
show “Description for repro CLI” even though that text describes the
1493+
top-level program, not the `file` subcommand). Now, only the
1494+
subcommand's own `brief` and `description` (if any) are shown;
1495+
run-level docs are used only for the root-level help page.
1496+
1497+
- When `command()` is wrapped with `group()`, the command's `brief`,
1498+
`description`, and `footer` are now correctly forwarded to the help
1499+
page. Previously `group()` only forwarded `description`, so `brief`
1500+
was silently dropped and the run-level brief appeared instead.
1501+
1502+
- Fixed contradictory “Did you mean?” suggestion when a subcommand name is
1503+
provided at the wrong level. Previously, a structure like
1504+
`command("file", or(add, remove))` given the input `add --help` would
1505+
report `Expected command file, but got add.` and then illogically suggest
1506+
`Did you mean add?` even though `add` is only valid *inside* `file`.
1507+
Suggestions in `command()` errors now derive from
1508+
`extractLeadingCommandNames()`, which limits candidates to commands that
1509+
are actually valid at the current parse position, not commands nested
1510+
inside other commands. The same scoping is applied when a custom
1511+
`notMatched` callback receives its `suggestions` argument. [[#117]]
1512+
1513+
- Fixed `group()` label leaking into a selected subcommand's own nested
1514+
command list. Previously, when a `group()`-wrapped command (e.g.,
1515+
`alias`) itself contained further subcommands (e.g., `delete`, `set`),
1516+
viewing `alias --help` would show those inner commands under the outer
1517+
group's label (e.g., “Additional commands:”), which was incorrect.
1518+
The fix compares current command entries against the initial set of
1519+
commands that the group originally labeled; the label is now applied
1520+
only when the visible commands are the group's own top-level commands,
1521+
not commands from a deeper level. [[#116]]
1522+
1523+
13691524
Version 0.8.14
13701525
--------------
13711526
@@ -1748,6 +1903,56 @@ parsing strategies.
17481903
[LogTape]: https://logtape.org/
17491904
17501905
1906+
Version 0.7.17
1907+
--------------
1908+
1909+
Released on February 18, 2026.
1910+
1911+
### @optique/core
1912+
1913+
- Fixed how `brief` and `description` are displayed in subcommand help
1914+
pages. [[#118], [#119]]
1915+
1916+
- Each help page now shows `brief` at the very top (before the Usage
1917+
line) and `description` below the Usage line, consistent with how
1918+
the root-level help page works.
1919+
1920+
- The `run()`-level `brief` and `description` no longer bleed into a
1921+
subcommand's help page. Previously, when a subcommand had no
1922+
`description` of its own, the description supplied to `run()` would
1923+
appear on the subcommand's help page (e.g. `repro file --help` would
1924+
show “Description for repro CLI” even though that text describes the
1925+
top-level program, not the `file` subcommand). Now, only the
1926+
subcommand's own `brief` and `description` (if any) are shown;
1927+
run-level docs are used only for the root-level help page.
1928+
1929+
- When `command()` is wrapped with `group()`, the command's `brief`,
1930+
`description`, and `footer` are now correctly forwarded to the help
1931+
page. Previously `group()` only forwarded `description`, so `brief`
1932+
was silently dropped and the run-level brief appeared instead.
1933+
1934+
- Fixed contradictory “Did you mean?” suggestion when a subcommand name is
1935+
provided at the wrong level. Previously, a structure like
1936+
`command("file", or(add, remove))` given the input `add --help` would
1937+
report `Expected command file, but got add.` and then illogically suggest
1938+
`Did you mean add?`—even though `add` is only valid *inside* `file`.
1939+
Suggestions in `command()` errors now derive from
1940+
`extractLeadingCommandNames()`, which limits candidates to commands that
1941+
are actually valid at the current parse position, not commands nested
1942+
inside other commands. The same scoping is applied when a custom
1943+
`notMatched` callback receives its `suggestions` argument. [[#117]]
1944+
1945+
- Fixed `group()` label leaking into a selected subcommand's own nested
1946+
command list. Previously, when a `group()`-wrapped command (e.g.,
1947+
`alias`) itself contained further subcommands (e.g., `delete`, `set`),
1948+
viewing `alias --help` would show those inner commands under the outer
1949+
group's label (e.g., “Additional commands:”), which was incorrect.
1950+
The fix compares current command entries against the initial set of
1951+
commands that the group originally labeled; the label is now applied
1952+
only when the visible commands are the group's own top-level commands,
1953+
not commands from a deeper level. [[#116]]
1954+
1955+
17511956
Version 0.7.16
17521957
--------------
17531958

0 commit comments

Comments
 (0)