@@ -37,6 +37,34 @@ To be released.
3737[ #120 ] : https://github.com/dahlia/optique/issues/120
3838
3939
40+ Version 0.10.4
41+ --------------
42+
43+ Released on February 19, 2026.
44+
45+ ### @optique/core
46+
47+ - Fixed ` formatMessage() ` to correctly handle a ` lineBreak() ` term that is
48+ immediately followed by a newline character in the source template literal.
49+ Previously, the newline after ` ${lineBreak()} ` was normalized to a space
50+ (as single ` \n ` characters in text terms are), producing a spurious leading
51+ space at the start of the next line. The newline immediately following a
52+ ` lineBreak() ` term is now dropped instead of being converted to a space.
53+
54+ - Fixed meta commands (` help ` , ` version ` , ` completion ` , ` completions ` )
55+ disappearing from the subcommand list in help output when the parser uses
56+ a ` withDefault(or(...)) ` construct. The root cause was that
57+ ` getDocPage() ` used a ` do...while ` loop, which ran the parser at least
58+ once even with an empty argument buffer. Because ` withDefault(or(...)) `
59+ allows the inner parser to succeed without consuming any tokens, the
60+ ` longestMatch ` combinator would record the user's parser as “selected”
61+ and subsequently return only that parser's doc fragments—silently
62+ dropping the meta command entries. The loop is now a ` while ` loop that
63+ skips parsing entirely when the buffer is empty. [[ #121 ]]
64+
65+ [ #121 ] : https://github.com/dahlia/optique/issues/121
66+
67+
4068Version 0.10.3
4169--------------
4270
@@ -948,6 +976,25 @@ to generate Unix man pages that stay synchronized with parser definitions.
948976[#77 ]: https :// github.com/dahlia/optique/issues/77
949977
950978
979+ Version 0.9 .10
980+ --------------
981+
982+ Released on February 19 , 2026.
983+
984+ ### @optique / core
985+
986+ - Fixed meta commands (` help ` , ` version ` , ` completion ` , ` completions ` )
987+ disappearing from the subcommand list in help output when the parser uses
988+ a ` withDefault(or(...)) ` construct . The root cause was that
989+ ` getDocPage() ` used a ` do...while ` loop , which ran the parser at least
990+ once even with an empty argument buffer . Because ` withDefault(or(...)) `
991+ allows the inner parser to succeed without consuming any tokens , the
992+ ` longestMatch ` combinator would record the user ' s parser as “selected”
993+ and subsequently return only that parser ' s doc fragments—silently
994+ dropping the meta command entries . The loop is now a ` while ` loop that
995+ skips parsing entirely when the buffer is empty . [[#121 ]]
996+
997+
951998Version 0.9 .9
952999------------ -
9531000
@@ -1471,6 +1518,25 @@ remotes) using [isomorphic-git]. [[#71], [#72]]
14711518[#72]: https://github.com/dahlia/optique/pull/72
14721519
14731520
1521+ Version 0.8.16
1522+ --------------
1523+
1524+ Released on February 19, 2026.
1525+
1526+ ### @optique/core
1527+
1528+ - Fixed meta commands ( ` help ` , ` version ` , ` completion ` , ` completions ` )
1529+ disappearing from the subcommand list in help output when the parser uses
1530+ a ` withDefault (or (... ))` construct. The root cause was that
1531+ ` getDocPage ()` used a ` do ... while ` loop, which ran the parser at least
1532+ once even with an empty argument buffer. Because ` withDefault (or (... ))`
1533+ allows the inner parser to succeed without consuming any tokens, the
1534+ ` longestMatch ` combinator would record the user's parser as “selected”
1535+ and subsequently return only that parser's doc fragments—silently
1536+ dropping the meta command entries. The loop is now a ` while ` loop that
1537+ skips parsing entirely when the buffer is empty. [[#121]]
1538+
1539+
14741540Version 0.8.15
14751541--------------
14761542
@@ -1903,6 +1969,25 @@ parsing strategies.
19031969[LogTape]: https://logtape.org/
19041970
19051971
1972+ Version 0.7.18
1973+ --------------
1974+
1975+ Released on February 19, 2026.
1976+
1977+ ### @optique/core
1978+
1979+ - Fixed meta commands ( ` help ` , ` version ` , ` completion ` , ` completions ` )
1980+ disappearing from the subcommand list in help output when the parser uses
1981+ a ` withDefault (or (... ))` construct. The root cause was that
1982+ ` getDocPage ()` used a ` do ... while ` loop, which ran the parser at least
1983+ once even with an empty argument buffer. Because ` withDefault (or (... ))`
1984+ allows the inner parser to succeed without consuming any tokens, the
1985+ ` longestMatch ` combinator would record the user's parser as “selected”
1986+ and subsequently return only that parser's doc fragments—silently
1987+ dropping the meta command entries. The loop is now a ` while ` loop that
1988+ skips parsing entirely when the buffer is empty. [[#121]]
1989+
1990+
19061991Version 0.7.17
19071992--------------
19081993
0 commit comments