<feed xmlns='http://www.w3.org/2005/Atom'>
<title>mingling.git/CHANGELOG.md, branch picker-0.2.0</title>
<subtitle>用于开发多子命令的命令行框架
</subtitle>
<link rel='alternate' type='text/html' href='https://git.catilgrass.cn/catilgrass/mingling.git/'/>
<entry>
<title>feat(parselib): remove invalid naming case variants</title>
<updated>2026-08-10T08:54:46+00:00</updated>
<author>
<name>魏曹先生</name>
<email>1992414357@qq.com</email>
</author>
<published>2026-08-10T08:54:46+00:00</published>
<link rel='alternate' type='text/html' href='https://git.catilgrass.cn/catilgrass/mingling.git/commit/?id=d5b800200ab19b8dbb52535f459899e06885d66b'/>
<id>d5b800200ab19b8dbb52535f459899e06885d66b</id>
<content type='text'>
Remove `Title`, `Lower`, and `Upper` variants from
`ParserStyleNamingCase` as they are not valid naming conventions.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Remove `Title`, `Lower`, and `Upper` variants from
`ParserStyleNamingCase` as they are not valid naming conventions.
</pre>
</div>
</content>
</entry>
<entry>
<title>feat: replace boolean program config with typed enums</title>
<updated>2026-08-10T08:11:04+00:00</updated>
<author>
<name>魏曹先生</name>
<email>1992414357@qq.com</email>
</author>
<published>2026-08-10T08:11:04+00:00</published>
<link rel='alternate' type='text/html' href='https://git.catilgrass.cn/catilgrass/mingling.git/commit/?id=e9529fac72e8d6bbe466c00b4f60716880c2d03f'/>
<id>e9529fac72e8d6bbe466c00b4f60716880c2d03f</id>
<content type='text'>
Replace boolean flags in `ProgramStdoutSetting` and `ProgramUserContext`
with semantic enum types, improving type safety and self-documentation.

BREAKING CHANGE: Boolean fields are replaced by enums, e.g.
`verbose`/`quiet`/`debug` become `verbosity`, `dry_run`/`force` become
`execution`.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Replace boolean flags in `ProgramStdoutSetting` and `ProgramUserContext`
with semantic enum types, improving type safety and self-documentation.

BREAKING CHANGE: Boolean fields are replaced by enums, e.g.
`verbose`/`quiet`/`debug` become `verbosity`, `dry_run`/`force` become
`execution`.
</pre>
</div>
</content>
</entry>
<entry>
<title>fix(comps): fix PowerShell completion word index and arg passing</title>
<updated>2026-08-08T18:51:25+00:00</updated>
<author>
<name>魏曹先生</name>
<email>1992414357@qq.com</email>
</author>
<published>2026-08-08T18:51:06+00:00</published>
<link rel='alternate' type='text/html' href='https://git.catilgrass.cn/catilgrass/mingling.git/commit/?id=ba02e78e26991a99744f9b546626c314f6bd7982'/>
<id>ba02e78e26991a99744f9b546626c314f6bd7982</id>
<content type='text'>
Correct off-by-one word index computation and conditionally pass
option values only when non-empty to avoid spurious parsing.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Correct off-by-one word index computation and conditionally pass
option values only when non-empty to avoid spurious parsing.
</pre>
</div>
</content>
</entry>
<entry>
<title>feat(pathf): remove BasicStructPattern from analyzer</title>
<updated>2026-08-06T08:59:34+00:00</updated>
<author>
<name>魏曹先生</name>
<email>1992414357@qq.com</email>
</author>
<published>2026-08-06T08:59:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.catilgrass.cn/catilgrass/mingling.git/commit/?id=815cc96a09b86eb890d6fa36d9afe8ed18afb867'/>
<id>815cc96a09b86eb890d6fa36d9afe8ed18afb867</id>
<content type='text'>
Remove the BasicStructPattern from pathf's pattern analyzer to eliminate
noise from plain structs not associated with any Mingling macro.

Also clean up the now-unused `basic_struct` module and update the
integration test to assert plain structs are no longer collected.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Remove the BasicStructPattern from pathf's pattern analyzer to eliminate
noise from plain structs not associated with any Mingling macro.

Also clean up the now-unused `basic_struct` module and update the
integration test to assert plain structs are no longer collected.
</pre>
</div>
</content>
</entry>
<entry>
<title>fix(core): write RenderResult::eprintln to stderr</title>
<updated>2026-08-05T04:26:52+00:00</updated>
<author>
<name>魏曹先生</name>
<email>1992414357@qq.com</email>
</author>
<published>2026-08-05T04:26:52+00:00</published>
<link rel='alternate' type='text/html' href='https://git.catilgrass.cn/catilgrass/mingling.git/commit/?id=08e804e75478953aa656064ac25903858bf5ef64'/>
<id>08e804e75478953aa656064ac25903858bf5ef64</id>
<content type='text'>
Fix the method to use `eprintln!` instead of `println!` when
`immediate_output` is enabled, ensuring error output goes to stderr.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Fix the method to use `eprintln!` instead of `println!` when
`immediate_output` is enabled, ensuring error output goes to stderr.
</pre>
</div>
</content>
</entry>
<entry>
<title>docs: document completion description support</title>
<updated>2026-08-04T07:00:42+00:00</updated>
<author>
<name>魏曹先生</name>
<email>1992414357@qq.com</email>
</author>
<published>2026-08-04T07:00:42+00:00</published>
<link rel='alternate' type='text/html' href='https://git.catilgrass.cn/catilgrass/mingling.git/commit/?id=a97f8d32a856ae72d128ed61aebfb20709b7d4b9'/>
<id>a97f8d32a856ae72d128ed61aebfb20709b7d4b9</id>
<content type='text'>
Update changelog and issue tracker notes for the enhanced
`default_completion` behavior.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Update changelog and issue tracker notes for the enhanced
`default_completion` behavior.
</pre>
</div>
</content>
</entry>
<entry>
<title>chore(core): merge custom completions with defaults</title>
<updated>2026-08-04T06:33:49+00:00</updated>
<author>
<name>魏曹先生</name>
<email>1992414357@qq.com</email>
</author>
<published>2026-08-04T06:33:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.catilgrass.cn/catilgrass/mingling.git/commit/?id=b5e14df41a2b77d71e3367fe44bf466f5c8ad1b5'/>
<id>b5e14df41a2b77d71e3367fe44bf466f5c8ad1b5</id>
<content type='text'>
When a concrete entry's custom completion handler produces a `Suggest`
value, combine it with the default subcommand suggestions instead of
replacing them entirely. `FileCompletion` still falls back to the
default completion since it cannot be meaningfully merged.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
When a concrete entry's custom completion handler produces a `Suggest`
value, combine it with the default subcommand suggestions instead of
replacing them entirely. `FileCompletion` still falls back to the
default completion since it cannot be meaningfully merged.
</pre>
</div>
</content>
</entry>
<entry>
<title>refactor(dispatch_tree): match longest registered prefix in trie</title>
<updated>2026-08-04T06:26:14+00:00</updated>
<author>
<name>魏曹先生</name>
<email>1992414357@qq.com</email>
</author>
<published>2026-08-04T06:26:14+00:00</published>
<link rel='alternate' type='text/html' href='https://git.catilgrass.cn/catilgrass/mingling.git/commit/?id=5b281566c7ba56d3de1cdc9f0909da6eb32884ab'/>
<id>5b281566c7ba56d3de1cdc9f0909da6eb32884ab</id>
<content type='text'>
Refactor `build_dispatch_body` to take a caller-provided `no_match`
fallback token stream instead of hardcoding `build_entry_fallback`
calls. Thread the fallback through recursive calls so child paths are
preferred over exact endpoints at the same depth, matching the dynamic
dispatcher's longest-prefix-wins behavior.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Refactor `build_dispatch_body` to take a caller-provided `no_match`
fallback token stream instead of hardcoding `build_entry_fallback`
calls. Thread the fallback through recursive calls so child paths are
preferred over exact endpoints at the same depth, matching the dynamic
dispatcher's longest-prefix-wins behavior.
</pre>
</div>
</content>
</entry>
<entry>
<title>feat(metadata): add Description convention metadata type</title>
<updated>2026-08-04T05:37:19+00:00</updated>
<author>
<name>魏曹先生</name>
<email>1992414357@qq.com</email>
</author>
<published>2026-08-04T05:37:19+00:00</published>
<link rel='alternate' type='text/html' href='https://git.catilgrass.cn/catilgrass/mingling.git/commit/?id=26ef5d88f36f69bb856aedc7bb50138933d1e036'/>
<id>26ef5d88f36f69bb856aedc7bb50138933d1e036</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>feat: add entry metadata system with compile-time typed values</title>
<updated>2026-08-04T05:26:48+00:00</updated>
<author>
<name>魏曹先生</name>
<email>1992414357@qq.com</email>
</author>
<published>2026-08-04T05:26:48+00:00</published>
<link rel='alternate' type='text/html' href='https://git.catilgrass.cn/catilgrass/mingling.git/commit/?id=4588e17f7ddacd8391a5c881a209735e08d48797'/>
<id>4588e17f7ddacd8391a5c881a209735e08d48797</id>
<content type='text'>
Add `Metadata&lt;B&gt;` trait and `#[metadata(Entry)]` attribute macro
to attach arbitrary, compile-time-typed metadata to entries.
Implement `ProgramCollect::get_metadata&lt;T&gt;()` for runtime retrieval,
backed by a global registry populated by `register_metadata!`.

Extend `pathf` with `MetadataPattern` to resolve metadata types
across modules at build time. Add two examples demonstrating
metadata usage with and without pathf integration.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Add `Metadata&lt;B&gt;` trait and `#[metadata(Entry)]` attribute macro
to attach arbitrary, compile-time-typed metadata to entries.
Implement `ProgramCollect::get_metadata&lt;T&gt;()` for runtime retrieval,
backed by a global registry populated by `register_metadata!`.

Extend `pathf` with `MetadataPattern` to resolve metadata types
across modules at build time. Add two examples demonstrating
metadata usage with and without pathf integration.
</pre>
</div>
</content>
</entry>
</feed>
