<feed xmlns='http://www.w3.org/2005/Atom'>
<title>mingling.git/mingling_core/src/program/hook.rs, branch 0.4.0</title>
<subtitle>用于开发多子命令的命令行框架
</subtitle>
<link rel='alternate' type='text/html' href='https://git.catilgrass.cn/mingling.git/'/>
<entry>
<title>feat(core): allow pre_dispatch hooks to mutate arguments</title>
<updated>2026-08-14T19:28:02+00:00</updated>
<author>
<name>魏曹先生</name>
<email>1992414357@qq.com</email>
</author>
<published>2026-08-14T19:28:02+00:00</published>
<link rel='alternate' type='text/html' href='https://git.catilgrass.cn/mingling.git/commit/?id=ec6c87d12062576271231b88364a4aa00765ae65'/>
<id>ec6c87d12062576271231b88364a4aa00765ae65</id>
<content type='text'>
Change `HookPreDispatchInfo.arguments` from `&amp;[String]` to `&amp;mut
Vec&lt;String&gt;`
so hooks can rewrite command-line arguments before dispatch.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Change `HookPreDispatchInfo.arguments` from `&amp;[String]` to `&amp;mut
Vec&lt;String&gt;`
so hooks can rewrite command-line arguments before dispatch.
</pre>
</div>
</content>
</entry>
<entry>
<title>feat(core): move config types to public config module</title>
<updated>2026-08-14T10:02:09+00:00</updated>
<author>
<name>魏曹先生</name>
<email>1992414357@qq.com</email>
</author>
<published>2026-08-14T09:47:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.catilgrass.cn/mingling.git/commit/?id=9c8fe13c2629a4318bd12815c07cef1371ba85a2'/>
<id>9c8fe13c2629a4318bd12815c07cef1371ba85a2</id>
<content type='text'>
Refactor program configuration types into a dedicated public `config`
module under `mingling_core`, making `StructuralRendererSetting`
accessible via `mingling_core::config` instead of the crate root.

Update all internal references and setup modules to use the new
`config::` path convention.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Refactor program configuration types into a dedicated public `config`
module under `mingling_core`, making `StructuralRendererSetting`
accessible via `mingling_core::config` instead of the crate root.

Update all internal references and setup modules to use the new
`config::` path convention.
</pre>
</div>
</content>
</entry>
<entry>
<title>chore: add "Doc Not Optimize" comments to source files</title>
<updated>2026-08-13T16:23:06+00:00</updated>
<author>
<name>魏曹先生</name>
<email>1992414357@qq.com</email>
</author>
<published>2026-08-13T16:23:06+00:00</published>
<link rel='alternate' type='text/html' href='https://git.catilgrass.cn/mingling.git/commit/?id=1198f2b81a845bd475594cdf42d04e7bd750ebd2'/>
<id>1198f2b81a845bd475594cdf42d04e7bd750ebd2</id>
<content type='text'>
Mark all source files with a comment indicating they are not optimized
for documentation purposes.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Mark all source files with a comment indicating they are not optimized
for documentation purposes.
</pre>
</div>
</content>
</entry>
<entry>
<title>fix: suppress future_not_send lint and tighten Send bounds</title>
<updated>2026-08-11T18:34:39+00:00</updated>
<author>
<name>魏曹先生</name>
<email>1992414357@qq.com</email>
</author>
<published>2026-08-11T18:34:39+00:00</published>
<link rel='alternate' type='text/html' href='https://git.catilgrass.cn/mingling.git/commit/?id=4e163438f9d9af83c1492826acf742337ec147c9'/>
<id>4e163438f9d9af83c1492826acf742337ec147c9</id>
<content type='text'>
Add `#[allow(clippy::future_not_send)]` to chain invocation methods and
clarify Send requirements for `exec` bounds.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Add `#[allow(clippy::future_not_send)]` to chain invocation methods and
clarify Send requirements for `exec` bounds.
</pre>
</div>
</content>
</entry>
<entry>
<title>refactor(core): improve code style and public API clarity</title>
<updated>2026-08-10T07:49:31+00:00</updated>
<author>
<name>魏曹先生</name>
<email>1992414357@qq.com</email>
</author>
<published>2026-08-10T07:49:31+00:00</published>
<link rel='alternate' type='text/html' href='https://git.catilgrass.cn/mingling.git/commit/?id=a9d5943939261e27e58bcf5cacbb618a0f63e999'/>
<id>a9d5943939261e27e58bcf5cacbb618a0f63e999</id>
<content type='text'>
Replace bool-based settings with enums, refine visibility and
signatures, and standardize `Self` usage across the crate.

- Introduce `ErrorOutput`, `RenderOutput`, `PanicSilence`, `Verbosity`,
  `ColorOutput`, and `ProgressOutput` enums for clearer configuration
  semantics
- Make `GlobalResources`, `ProgramCell`, and
  `split_input`/`split_input_string` public
- Change hook info parameters to accept references and
  `split_input_string` to take `&amp;str`
- Apply `Self` shorthand throughout implementations and add
  `#[must_use]` attributes where appropriate
- Enable strict clippy lints with targeted allowances
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Replace bool-based settings with enums, refine visibility and
signatures, and standardize `Self` usage across the crate.

- Introduce `ErrorOutput`, `RenderOutput`, `PanicSilence`, `Verbosity`,
  `ColorOutput`, and `ProgressOutput` enums for clearer configuration
  semantics
- Make `GlobalResources`, `ProgramCell`, and
  `split_input`/`split_input_string` public
- Change hook info parameters to accept references and
  `split_input_string` to take `&amp;str`
- Apply `Self` shorthand throughout implementations and add
  `#[must_use]` attributes where appropriate
- Enable strict clippy lints with targeted allowances
</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>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!: 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>
<entry>
<title>feat: require renderers to return RenderResult instead of mutating one</title>
<updated>2026-07-11T06:44:17+00:00</updated>
<author>
<name>魏曹先生</name>
<email>1992414357@qq.com</email>
</author>
<published>2026-07-11T06:44:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.catilgrass.cn/mingling.git/commit/?id=c5736152b0adeef17349265c4b9277ba17b8bcfd'/>
<id>c5736152b0adeef17349265c4b9277ba17b8bcfd</id>
<content type='text'>
BREAKING CHANGE: The `render` method on `Renderer`, `HelpRequest`, and
`ProgramCollect` now returns `RenderResult` instead of taking
`&amp;mut RenderResult`. The `r_print!` and `r_println!` macros have been
removed in favor of using `std::io::Write` directly on `RenderResult`.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
BREAKING CHANGE: The `render` method on `Renderer`, `HelpRequest`, and
`ProgramCollect` now returns `RenderResult` instead of taking
`&amp;mut RenderResult`. The `r_print!` and `r_println!` macros have been
removed in favor of using `std::io::Write` directly on `RenderResult`.
</pre>
</div>
</content>
</entry>
</feed>
