<feed xmlns='http://www.w3.org/2005/Atom'>
<title>mingling.git/mingling_macros/src/attr, branch picker-0.2.0</title>
<subtitle>用于开发多子命令的命令行框架
</subtitle>
<link rel='alternate' type='text/html' href='https://git.catilgrass.cn/mingling.git/'/>
<entry>
<title>refactor: simplify macro parsing code and fix clippy warnings</title>
<updated>2026-08-10T08:19:45+00:00</updated>
<author>
<name>魏曹先生</name>
<email>1992414357@qq.com</email>
</author>
<published>2026-08-10T08:19:45+00:00</published>
<link rel='alternate' type='text/html' href='https://git.catilgrass.cn/mingling.git/commit/?id=2d0aae4b2d595ced100f7a2ec8d13b872a5eb65e'/>
<id>2d0aae4b2d595ced100f7a2ec8d13b872a5eb65e</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>refactor(macros): clean up clippy lints and simplify code</title>
<updated>2026-08-10T08:04:57+00:00</updated>
<author>
<name>魏曹先生</name>
<email>1992414357@qq.com</email>
</author>
<published>2026-08-10T08:04:57+00:00</published>
<link rel='alternate' type='text/html' href='https://git.catilgrass.cn/mingling.git/commit/?id=eebcdf6b163174ec1629d121264c0477652e3323'/>
<id>eebcdf6b163174ec1629d121264c0477652e3323</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/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>
<entry>
<title>chore: use idiomatic boolean and reference patterns</title>
<updated>2026-08-02T17:38:42+00:00</updated>
<author>
<name>魏曹先生</name>
<email>1992414357@qq.com</email>
</author>
<published>2026-08-02T17:38:42+00:00</published>
<link rel='alternate' type='text/html' href='https://git.catilgrass.cn/mingling.git/commit/?id=88c3cbb27cc840d38e16ae8ab39c9a168a653a88'/>
<id>88c3cbb27cc840d38e16ae8ab39c9a168a653a88</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>refactor: simplify boolean and type assignment logic</title>
<updated>2026-08-02T17:37:34+00:00</updated>
<author>
<name>魏曹先生</name>
<email>1992414357@qq.com</email>
</author>
<published>2026-08-02T17:37:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.catilgrass.cn/mingling.git/commit/?id=c078df6c97d13240d8f8bbaa0d86e830a5b71b4c'/>
<id>c078df6c97d13240d8f8bbaa0d86e830a5b71b4c</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>fix(dispatch_tree): emit re-export token stream directly</title>
<updated>2026-07-28T12:42:08+00:00</updated>
<author>
<name>魏曹先生</name>
<email>1992414357@qq.com</email>
</author>
<published>2026-07-28T12:42:08+00:00</published>
<link rel='alternate' type='text/html' href='https://git.catilgrass.cn/mingling.git/commit/?id=16999dd66dc6162184790ef5480d483d0fb81f4a'/>
<id>16999dd66dc6162184790ef5480d483d0fb81f4a</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>feat(attr): allow #[command] on functions with no args param</title>
<updated>2026-07-28T12:12:56+00:00</updated>
<author>
<name>魏曹先生</name>
<email>1992414357@qq.com</email>
</author>
<published>2026-07-28T12:12:56+00:00</published>
<link rel='alternate' type='text/html' href='https://git.catilgrass.cn/mingling.git/commit/?id=53033ae52c3b7a251fda2cadee46ae148cdb2846'/>
<id>53033ae52c3b7a251fda2cadee46ae148cdb2846</id>
<content type='text'>
Previously, #[command] required at least one owned parameter for
args injection.  Now, if the first parameter is a reference or
there are no parameters, a synthetic entry parameter is inserted
so the function can still be used with #[chain].
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Previously, #[command] required at least one owned parameter for
args injection.  Now, if the first parameter is a reference or
there are no parameters, a synthetic entry parameter is inserted
so the function can still be used with #[chain].
</pre>
</div>
</content>
</entry>
<entry>
<title>feat(mingling_macros, mingling_pathf): add `#[command]` attribute macro</title>
<updated>2026-07-28T11:11:14+00:00</updated>
<author>
<name>魏曹先生</name>
<email>1992414357@qq.com</email>
</author>
<published>2026-07-28T11:11:14+00:00</published>
<link rel='alternate' type='text/html' href='https://git.catilgrass.cn/mingling.git/commit/?id=2dff21cc78fd2d6a4fa4f227f6ad94e3f7baa943'/>
<id>2dff21cc78fd2d6a4fa4f227f6ad94e3f7baa943</id>
<content type='text'>
Add a new `#[command]` attribute macro (feature-gated behind
`extra_macros`) that converts a plain function with a `Vec&lt;String&gt;`
parameter into a fully wired Mingling command. The macro generates a
`dispatcher!` call, a `#[chain]` wrapper, and a hidden module
re-exporting
all generated types.

Also add `CommandPattern` to the pathf pattern analyzer to recognize
`#[command]`-annotated functions and track their generated hidden
modules.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Add a new `#[command]` attribute macro (feature-gated behind
`extra_macros`) that converts a plain function with a `Vec&lt;String&gt;`
parameter into a fully wired Mingling command. The macro generates a
`dispatcher!` call, a `#[chain]` wrapper, and a hidden module
re-exporting
all generated types.

Also add `CommandPattern` to the pathf pattern analyzer to recognize
`#[command]`-annotated functions and track their generated hidden
modules.
</pre>
</div>
</content>
</entry>
<entry>
<title>feat(macros): split monolith into one-macro-per-file modules</title>
<updated>2026-07-26T12:56:24+00:00</updated>
<author>
<name>魏曹先生</name>
<email>1992414357@qq.com</email>
</author>
<published>2026-07-26T12:56:24+00:00</published>
<link rel='alternate' type='text/html' href='https://git.catilgrass.cn/mingling.git/commit/?id=5714eba48ee9031d61858425583c219b881f2d13'/>
<id>5714eba48ee9031d61858425583c219b881f2d13</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>refactor(chain): replace Into turbofish with Routable::to_chain</title>
<updated>2026-07-20T22:37:21+00:00</updated>
<author>
<name>魏曹先生</name>
<email>1992414357@qq.com</email>
</author>
<published>2026-07-20T22:37:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.catilgrass.cn/mingling.git/commit/?id=8a230bd93b4801cc9001d0611ade16261e4f0cc4'/>
<id>8a230bd93b4801cc9001d0611ade16261e4f0cc4</id>
<content type='text'>
Remove the `origin_return_type` parameter and replace the generic `Into`
conversion with a direct call to `Routable::&lt;#program_type&gt;::to_chain`.
For non-unit returns, also wrap the function call expression in
`to_chain()` upfront to satisfy the `ChainProcess&lt;C&gt;` requirement of
`__modify_res_and_return_route`.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Remove the `origin_return_type` parameter and replace the generic `Into`
conversion with a direct call to `Routable::&lt;#program_type&gt;::to_chain`.
For non-unit returns, also wrap the function call expression in
`to_chain()` upfront to satisfy the `ChainProcess&lt;C&gt;` requirement of
`__modify_res_and_return_route`.
</pre>
</div>
</content>
</entry>
</feed>
