@@ -6,7 +6,7 @@ Optique changelog
66Version 0.10.4
77--------------
88
9- To be released .
9+ Released on February 19, 2026 .
1010
1111### @optique/core
1212
@@ -17,6 +17,19 @@ To be released.
1717 space at the start of the next line. The newline immediately following a
1818 ` lineBreak() ` term is now dropped instead of being converted to a space.
1919
20+ - Fixed meta commands (` help ` , ` version ` , ` completion ` , ` completions ` )
21+ disappearing from the subcommand list in help output when the parser uses
22+ a ` withDefault(or(...)) ` construct. The root cause was that
23+ ` getDocPage() ` used a ` do...while ` loop, which ran the parser at least
24+ once even with an empty argument buffer. Because ` withDefault(or(...)) `
25+ allows the inner parser to succeed without consuming any tokens, the
26+ ` longestMatch ` combinator would record the user's parser as “selected”
27+ and subsequently return only that parser's doc fragments—silently
28+ dropping the meta command entries. The loop is now a ` while ` loop that
29+ skips parsing entirely when the buffer is empty. [[ #121 ]]
30+
31+ [ #121 ] : https://github.com/dahlia/optique/issues/121
32+
2033
2134Version 0.10.3
2235--------------
@@ -929,6 +942,25 @@ to generate Unix man pages that stay synchronized with parser definitions.
929942[#77 ]: https :// github.com/dahlia/optique/issues/77
930943
931944
945+ Version 0.9 .10
946+ --------------
947+
948+ Released on February 19 , 2026.
949+
950+ ### @optique / core
951+
952+ - Fixed meta commands (` help ` , ` version ` , ` completion ` , ` completions ` )
953+ disappearing from the subcommand list in help output when the parser uses
954+ a ` withDefault(or(...)) ` construct . The root cause was that
955+ ` getDocPage() ` used a ` do...while ` loop , which ran the parser at least
956+ once even with an empty argument buffer . Because ` withDefault(or(...)) `
957+ allows the inner parser to succeed without consuming any tokens , the
958+ ` longestMatch ` combinator would record the user ' s parser as “selected”
959+ and subsequently return only that parser ' s doc fragments—silently
960+ dropping the meta command entries . The loop is now a ` while ` loop that
961+ skips parsing entirely when the buffer is empty . [[#121 ]]
962+
963+
932964Version 0.9 .9
933965------------ -
934966
@@ -1452,6 +1484,25 @@ remotes) using [isomorphic-git]. [[#71], [#72]]
14521484[#72]: https://github.com/dahlia/optique/pull/72
14531485
14541486
1487+ Version 0.8.16
1488+ --------------
1489+
1490+ Released on February 19, 2026.
1491+
1492+ ### @optique/core
1493+
1494+ - Fixed meta commands ( ` help ` , ` version ` , ` completion ` , ` completions ` )
1495+ disappearing from the subcommand list in help output when the parser uses
1496+ a ` withDefault (or (... ))` construct. The root cause was that
1497+ ` getDocPage ()` used a ` do ... while ` loop, which ran the parser at least
1498+ once even with an empty argument buffer. Because ` withDefault (or (... ))`
1499+ allows the inner parser to succeed without consuming any tokens, the
1500+ ` longestMatch ` combinator would record the user's parser as “selected”
1501+ and subsequently return only that parser's doc fragments—silently
1502+ dropping the meta command entries. The loop is now a ` while ` loop that
1503+ skips parsing entirely when the buffer is empty. [[#121]]
1504+
1505+
14551506Version 0.8.15
14561507--------------
14571508
@@ -1884,6 +1935,25 @@ parsing strategies.
18841935[LogTape]: https://logtape.org/
18851936
18861937
1938+ Version 0.7.18
1939+ --------------
1940+
1941+ Released on February 19, 2026.
1942+
1943+ ### @optique/core
1944+
1945+ - Fixed meta commands ( ` help ` , ` version ` , ` completion ` , ` completions ` )
1946+ disappearing from the subcommand list in help output when the parser uses
1947+ a ` withDefault (or (... ))` construct. The root cause was that
1948+ ` getDocPage ()` used a ` do ... while ` loop, which ran the parser at least
1949+ once even with an empty argument buffer. Because ` withDefault (or (... ))`
1950+ allows the inner parser to succeed without consuming any tokens, the
1951+ ` longestMatch ` combinator would record the user's parser as “selected”
1952+ and subsequently return only that parser's doc fragments—silently
1953+ dropping the meta command entries. The loop is now a ` while ` loop that
1954+ skips parsing entirely when the buffer is empty. [[#121]]
1955+
1956+
18871957Version 0.7.17
18881958--------------
18891959
0 commit comments