<feed xmlns='http://www.w3.org/2005/Atom'>
<title>mingling.git/mingling_macros, branch try-new-badges</title>
<subtitle>用于开发多子命令的命令行框架
</subtitle>
<link rel='alternate' type='text/html' href='https://git.catilgrass.cn/mingling.git/'/>
<entry>
<title>feat(ci-new): add test-all task with per-crate config support</title>
<updated>2026-08-18T02:01:53+00:00</updated>
<author>
<name>魏曹先生</name>
<email>1992414357@qq.com</email>
</author>
<published>2026-08-18T02:01:53+00:00</published>
<link rel='alternate' type='text/html' href='https://git.catilgrass.cn/mingling.git/commit/?id=570b2bc1710c0ab8a68ad69a6121144e4f5e3aca'/>
<id>570b2bc1710c0ab8a68ad69a6121144e4f5e3aca</id>
<content type='text'>
Add a new `test-all` command that runs tests across all crates with
optional per-crate command overrides via `mingling-ci.toml` files.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Add a new `test-all` command that runs tests across all crates with
optional per-crate command overrides via `mingling-ci.toml` files.
</pre>
</div>
</content>
</entry>
<entry>
<title>fix: generate async-compatible empty do_chain fallback</title>
<updated>2026-08-17T21:18:48+00:00</updated>
<author>
<name>魏曹先生</name>
<email>1992414357@qq.com</email>
</author>
<published>2026-08-17T21:18:48+00:00</published>
<link rel='alternate' type='text/html' href='https://git.catilgrass.cn/mingling.git/commit/?id=d28dbd820af73aa9dc93d2df6c89d6f8c840e907'/>
<id>d28dbd820af73aa9dc93d2df6c89d6f8c840e907</id>
<content type='text'>
When a program declares no chains, the synthesized `do_chain` now
respects the `async` feature by emitting a boxed future signature
with a `Box::pin(async { panic! })` body, matching the trait
requirement and fixing E0053 in async builds.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
When a program declares no chains, the synthesized `do_chain` now
respects the `async` feature by emitting a boxed future signature
with a `Box::pin(async { panic! })` body, matching the trait
requirement and fixing E0053 in async builds.
</pre>
</div>
</content>
</entry>
<entry>
<title>refactor!: replace build.rs with compile-time macro build steps</title>
<updated>2026-08-17T11:21:52+00:00</updated>
<author>
<name>魏曹先生</name>
<email>1992414357@qq.com</email>
</author>
<published>2026-08-17T11:21:52+00:00</published>
<link rel='alternate' type='text/html' href='https://git.catilgrass.cn/mingling.git/commit/?id=89bf57f33a9f0f5a96fc50e272c83d926fa35c4a'/>
<id>89bf57f33a9f0f5a96fc50e272c83d926fa35c4a</id>
<content type='text'>
BREAKING CHANGE: Replace the `build`/`builds` feature system with
compile-time macro-driven generation. `gen_program!()` now automatically
invokes `build_comp!()` and `build_pathf!()` when the `comp`/`pathf`
features are enabled, eliminating the need for `build.rs` and
`[build-dependencies]` blocks.

This removes the `build` feature, the `mingling::build` module, and all
related build-time API functions. Completion scripts are now written to
`{target_directory}/mingling/` instead of `target/release/`. The
`mingling_cli` uses `build_comp!("mling")` for its custom binary name.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
BREAKING CHANGE: Replace the `build`/`builds` feature system with
compile-time macro-driven generation. `gen_program!()` now automatically
invokes `build_comp!()` and `build_pathf!()` when the `comp`/`pathf`
features are enabled, eliminating the need for `build.rs` and
`[build-dependencies]` blocks.

This removes the `build` feature, the `mingling::build` module, and all
related build-time API functions. Completion scripts are now written to
`{target_directory}/mingling/` instead of `target/release/`. The
`mingling_cli` uses `build_comp!("mling")` for its custom binary name.
</pre>
</div>
</content>
</entry>
<entry>
<title>feat(macros)!: change completion context parameter to owned type</title>
<updated>2026-08-16T23:35:42+00:00</updated>
<author>
<name>魏曹先生</name>
<email>1992414357@qq.com</email>
</author>
<published>2026-08-16T23:35:42+00:00</published>
<link rel='alternate' type='text/html' href='https://git.catilgrass.cn/mingling.git/commit/?id=40bb7ffd6954184fac718c8f99c9cdc3e054e4eb'/>
<id>40bb7ffd6954184fac718c8f99c9cdc3e054e4eb</id>
<content type='text'>
BREAKING CHANGE: `#[completion]` functions must now take `ShellContext`
by value instead of `&amp;ShellContext`. Reference parameters are reserved
for resource injection.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
BREAKING CHANGE: `#[completion]` functions must now take `ShellContext`
by value instead of `&amp;ShellContext`. Reference parameters are reserved
for resource injection.
</pre>
</div>
</content>
</entry>
<entry>
<title>feat(macros): relax completion attribute signature</title>
<updated>2026-08-16T22:57:09+00:00</updated>
<author>
<name>魏曹先生</name>
<email>1992414357@qq.com</email>
</author>
<published>2026-08-16T22:57:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.catilgrass.cn/mingling.git/commit/?id=c6ab865d5b19e3a57b76562adb9540cbf03d77c4'/>
<id>c6ab865d5b19e3a57b76562adb9540cbf03d77c4</id>
<content type='text'>
Allow completion functions to omit the context parameter, accept owned
ShellContext or any From&lt;&amp;ShellContext&gt; type, and return any type
implementing Into&lt;Suggest&gt;. Add From&lt;&amp;str&gt; for SuggestItem and derive
Clone for ShellContext.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Allow completion functions to omit the context parameter, accept owned
ShellContext or any From&lt;&amp;ShellContext&gt; type, and return any type
implementing Into&lt;Suggest&gt;. Add From&lt;&amp;str&gt; for SuggestItem and derive
Clone for ShellContext.
</pre>
</div>
</content>
</entry>
<entry>
<title>refactor!: replace pack! macros with derive-based pipeline types</title>
<updated>2026-08-16T21:49:19+00:00</updated>
<author>
<name>魏曹先生</name>
<email>1992414357@qq.com</email>
</author>
<published>2026-08-16T21:49:19+00:00</published>
<link rel='alternate' type='text/html' href='https://git.catilgrass.cn/mingling.git/commit/?id=57c53affe3542cb6bd4e79ee4c18f20a1bd76b2d'/>
<id>57c53affe3542cb6bd4e79ee4c18f20a1bd76b2d</id>
<content type='text'>
Remove the `pack!`, `pack_err!`, `pack_structural!`, and
`pack_err_structural!` macros, replacing all pipeline type definitions
with `#[derive(Grouped)]` and `#[derive(Grouped, Wrap)]` attributes.
This changes the generated struct shape from named-field structs with an
`inner` field to tuple structs accessed via `.0`, and removes the
auto-generated `name` and `info` fields from error types.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Remove the `pack!`, `pack_err!`, `pack_structural!`, and
`pack_err_structural!` macros, replacing all pipeline type definitions
with `#[derive(Grouped)]` and `#[derive(Grouped, Wrap)]` attributes.
This changes the generated struct shape from named-field structs with an
`inner` field to tuple structs accessed via `.0`, and removes the
auto-generated `name` and `info` fields from error types.
</pre>
</div>
</content>
</entry>
<entry>
<title>feat(macros): add Wrap derive macro</title>
<updated>2026-08-16T20:33:54+00:00</updated>
<author>
<name>魏曹先生</name>
<email>1992414357@qq.com</email>
</author>
<published>2026-08-16T20:33:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.catilgrass.cn/mingling.git/commit/?id=7b901b44cab92b15a673a801de6785c309b73ddd'/>
<id>7b901b44cab92b15a673a801de6785c309b73ddd</id>
<content type='text'>
Add `#[derive(Wrap)]` to treat a struct as its inner type, generating
`From`, `Deref`, and `DerefMut` implementations. Supports single-field
structs or multi-field structs with a `#[wrap]`-marked field.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Add `#[derive(Wrap)]` to treat a struct as its inner type, generating
`From`, `Deref`, and `DerefMut` implementations. Supports single-field
structs or multi-field structs with a `#[wrap]`-marked field.
</pre>
</div>
</content>
</entry>
<entry>
<title>refactor!: remove Node type and simplify dispatcher macro syntax</title>
<updated>2026-08-16T19:27:46+00:00</updated>
<author>
<name>魏曹先生</name>
<email>1992414357@qq.com</email>
</author>
<published>2026-08-16T19:27:46+00:00</published>
<link rel='alternate' type='text/html' href='https://git.catilgrass.cn/mingling.git/commit/?id=c23c590330af83afb6e146bcd9b0a274b3689d22'/>
<id>c23c590330af83afb6e146bcd9b0a274b3689d22</id>
<content type='text'>
The `dispatcher!` macro no longer requires a `CMD*` dispatcher type
argument; the dispatcher struct is now generated internally as
`__Dispatcher{Pascal}`. The `Node` type, `node!` macro, and
`Dispatcher::node()` / `clone_dispatcher()` methods are removed.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The `dispatcher!` macro no longer requires a `CMD*` dispatcher type
argument; the dispatcher struct is now generated internally as
`__Dispatcher{Pascal}`. The `Node` type, `node!` macro, and
`Dispatcher::node()` / `clone_dispatcher()` methods are removed.
</pre>
</div>
</content>
</entry>
<entry>
<title>refactor!: remove dynamic dispatcher registration API</title>
<updated>2026-08-16T18:39:56+00:00</updated>
<author>
<name>魏曹先生</name>
<email>1992414357@qq.com</email>
</author>
<published>2026-08-16T18:29:30+00:00</published>
<link rel='alternate' type='text/html' href='https://git.catilgrass.cn/mingling.git/commit/?id=6980fbf2f9fb4c599d8dc6ff549a8b3288eb24e9'/>
<id>6980fbf2f9fb4c599d8dc6ff549a8b3288eb24e9</id>
<content type='text'>
Dispatchers are now always registered at compile time, removing the
`with_dispatcher` / `with_dispatchers` methods and the
`PathfinderConfig` API. The `dispatch_tree` feature now only controls
the matching strategy (trie vs linear list).
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Dispatchers are now always registered at compile time, removing the
`with_dispatcher` / `with_dispatchers` methods and the
`PathfinderConfig` API. The `dispatch_tree` feature now only controls
the matching strategy (trie vs linear list).
</pre>
</div>
</content>
</entry>
<entry>
<title>refactor!: rename dispatch_args_trie to dispatch_args</title>
<updated>2026-08-16T17:35:00+00:00</updated>
<author>
<name>魏曹先生</name>
<email>1992414357@qq.com</email>
</author>
<published>2026-08-16T17:35:00+00:00</published>
<link rel='alternate' type='text/html' href='https://git.catilgrass.cn/mingling.git/commit/?id=4c191b2b46a67a0dda6e9a867b40f45156af4f9c'/>
<id>4c191b2b46a67a0dda6e9a867b40f45156af4f9c</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
</feed>
