<feed xmlns='http://www.w3.org/2005/Atom'>
<title>mingling.git/mingling_core/src/program, branch wip/mingling-cli-ux</title>
<subtitle>用于开发多子命令的命令行框架
</subtitle>
<link rel='alternate' type='text/html' href='https://git.catilgrass.cn/mingling.git/'/>
<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!: rename ErrorDispatcherNotFound to EntryFallback</title>
<updated>2026-08-03T05:36:13+00:00</updated>
<author>
<name>魏曹先生</name>
<email>1992414357@qq.com</email>
</author>
<published>2026-08-03T05:36:13+00:00</published>
<link rel='alternate' type='text/html' href='https://git.catilgrass.cn/mingling.git/commit/?id=9c8f5c8d60f3066fec8a1573aa3f5673e0b2ecb8'/>
<id>9c8f5c8d60f3066fec8a1573aa3f5673e0b2ecb8</id>
<content type='text'>
Rename the internal fallback type and its associated `ProgramCollect`
plumbing from `ErrorDispatcherNotFound`/`build_dispatcher_not_found` to
`EntryFallback`/`build_entry_fallback`, along with the generated enum
variant and pack type. Update all documentation, examples, and tests
accordingly.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Rename the internal fallback type and its associated `ProgramCollect`
plumbing from `ErrorDispatcherNotFound`/`build_dispatcher_not_found` to
`EntryFallback`/`build_entry_fallback`, along with the generated enum
variant and pack type. Update all documentation, examples, and tests
accordingly.
</pre>
</div>
</content>
</entry>
<entry>
<title>refactor!: rename `extra_macros` feature to `extras`</title>
<updated>2026-08-01T14:42:41+00:00</updated>
<author>
<name>魏曹先生</name>
<email>1992414357@qq.com</email>
</author>
<published>2026-08-01T14:42:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.catilgrass.cn/mingling.git/commit/?id=0f9ca0745e3e80c751404f45cb2b97d4d14c97d3'/>
<id>0f9ca0745e3e80c751404f45cb2b97d4d14c97d3</id>
<content type='text'>
Update all references across docs, examples, and configuration files to
use the shorter `extras` feature name.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Update all references across docs, examples, and configuration files to
use the shorter `extras` feature name.
</pre>
</div>
</content>
</entry>
<entry>
<title>refactor(once_exec, repl_exec): unify sync and async execution paths</title>
<updated>2026-07-23T17:27:33+00:00</updated>
<author>
<name>魏曹先生</name>
<email>1992414357@qq.com</email>
</author>
<published>2026-07-23T17:27:33+00:00</published>
<link rel='alternate' type='text/html' href='https://git.catilgrass.cn/mingling.git/commit/?id=c28028c69d02b723745167b23fdaf25db673a2e9'/>
<id>c28028c69d02b723745167b23fdaf25db673a2e9</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>feat(core): consolidate sync/async exec pipeline with `might_be_async`</title>
<updated>2026-07-23T17:05:34+00:00</updated>
<author>
<name>魏曹先生</name>
<email>1992414357@qq.com</email>
</author>
<published>2026-07-23T17:05:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.catilgrass.cn/mingling.git/commit/?id=d67fec8ef6cb9c53e0480fa91d7387a9f160c2cc'/>
<id>d67fec8ef6cb9c53e0480fa91d7387a9f160c2cc</id>
<content type='text'>
Replace manual `#[cfg(feature = "async")]` code duplication in `exec`
and
`exec_with_args` with `#[might_be_async::func]` annotations and
`might_be_async::invoke!()` wrappers, reducing two code paths to one.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Replace manual `#[cfg(feature = "async")]` code duplication in `exec`
and
`exec_with_args` with `#[might_be_async::func]` annotations and
`might_be_async::invoke!()` wrappers, reducing two code paths to one.
</pre>
</div>
</content>
</entry>
<entry>
<title>feat(any): make `Grouped` trait unsafe and encapsulate `AnyOutput`</title>
<updated>2026-07-21T11:16:31+00:00</updated>
<author>
<name>魏曹先生</name>
<email>1992414357@qq.com</email>
</author>
<published>2026-07-21T11:16:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.catilgrass.cn/mingling.git/commit/?id=1803dd427416ef19918c0ec7d50093b6d45f29af'/>
<id>1803dd427416ef19918c0ec7d50093b6d45f29af</id>
<content type='text'>
fields

Declare `Grouped` as `unsafe trait` to make its soundness invariant
visible.
Make `AnyOutput.type_id` and `member_id` private; add public accessors
and
the `unsafe fn new_bare` constructor.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
fields

Declare `Grouped` as `unsafe trait` to make its soundness invariant
visible.
Make `AnyOutput.type_id` and `member_id` private; add public accessors
and
the `unsafe fn new_bare` constructor.
</pre>
</div>
</content>
</entry>
<entry>
<title>feat(core): return `&amp;mut Self` from builder methods</title>
<updated>2026-07-20T19:58:44+00:00</updated>
<author>
<name>魏曹先生</name>
<email>1992414357@qq.com</email>
</author>
<published>2026-07-20T19:58:44+00:00</published>
<link rel='alternate' type='text/html' href='https://git.catilgrass.cn/mingling.git/commit/?id=a3b75b7eeae5e7a0c53b6167bafb75a85fa6d9ce'/>
<id>a3b75b7eeae5e7a0c53b6167bafb75a85fa6d9ce</id>
<content type='text'>
Enables method chaining for `with_resource`, `with_dispatcher`,
`with_dispatchers`, `with_hook`, and `with_setup`
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Enables method chaining for `with_resource`, `with_dispatcher`,
`with_dispatchers`, `with_hook`, and `with_setup`
</pre>
</div>
</content>
</entry>
<entry>
<title>fix(core): delegate stdout flushing to RenderResult::std_print</title>
<updated>2026-07-20T19:54:42+00:00</updated>
<author>
<name>魏曹先生</name>
<email>1992414357@qq.com</email>
</author>
<published>2026-07-20T19:54:42+00:00</published>
<link rel='alternate' type='text/html' href='https://git.catilgrass.cn/mingling.git/commit/?id=57746fc1512400fde467d3ccac4589915341416c'/>
<id>57746fc1512400fde467d3ccac4589915341416c</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>chore: add missing docs lint and document public API</title>
<updated>2026-07-20T06:49:47+00:00</updated>
<author>
<name>魏曹先生</name>
<email>1992414357@qq.com</email>
</author>
<published>2026-07-20T06:49:47+00:00</published>
<link rel='alternate' type='text/html' href='https://git.catilgrass.cn/mingling.git/commit/?id=9f5a0f2e9325264564bc6fe9ff544c034ad16287'/>
<id>9f5a0f2e9325264564bc6fe9ff544c034ad16287</id>
<content type='text'>
Add `#![deny(missing_docs)]` across multiple crates and fill in
documentation for all public items, including struct fields, enum
variants, trait methods, and proc macros.  Also mark two shell scripts
as executable.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Add `#![deny(missing_docs)]` across multiple crates and fill in
documentation for all public items, including struct fields, enum
variants, trait methods, and proc macros.  Also mark two shell scripts
as executable.
</pre>
</div>
</content>
</entry>
<entry>
<title>fix!: rename `Groupped` to `Grouped` across the codebase</title>
<updated>2026-07-19T02:45:07+00:00</updated>
<author>
<name>魏曹先生</name>
<email>1992414357@qq.com</email>
</author>
<published>2026-07-19T02:32:33+00:00</published>
<link rel='alternate' type='text/html' href='https://git.catilgrass.cn/mingling.git/commit/?id=320ea9a3a418daa17174dc78f1262509b96b13b9'/>
<id>320ea9a3a418daa17174dc78f1262509b96b13b9</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
</feed>
