<feed xmlns='http://www.w3.org/2005/Atom'>
<title>mingling.git/examples/example-combine-pathf-dispatch-tree, branch try-new-badges</title>
<subtitle>用于开发多子命令的命令行框架
</subtitle>
<link rel='alternate' type='text/html' href='https://git.catilgrass.cn/mingling.git/'/>
<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>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>chore(release): bump version to 0.5.0</title>
<updated>2026-08-16T16:05:53+00:00</updated>
<author>
<name>魏曹先生</name>
<email>1992414357@qq.com</email>
</author>
<published>2026-08-16T16:05:53+00:00</published>
<link rel='alternate' type='text/html' href='https://git.catilgrass.cn/mingling.git/commit/?id=62d2f8637da3274fc22debb62b79f15e521d503e'/>
<id>62d2f8637da3274fc22debb62b79f15e521d503e</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>refactor: move example tests into per-example test.toml files</title>
<updated>2026-08-14T18:37:21+00:00</updated>
<author>
<name>魏曹先生</name>
<email>1992414357@qq.com</email>
</author>
<published>2026-08-14T18:22:42+00:00</published>
<link rel='alternate' type='text/html' href='https://git.catilgrass.cn/mingling.git/commit/?id=48cfd06560db6155536f45f3a0209289779a134e'/>
<id>48cfd06560db6155536f45f3a0209289779a134e</id>
<content type='text'>
Replace the centralized `examples/test-examples.toml` with individual
`test.toml` files in each example directory, updating the test runner
and related documentation accordingly.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Replace the centralized `examples/test-examples.toml` with individual
`test.toml` files in each example directory, updating the test runner
and related documentation accordingly.
</pre>
</div>
</content>
</entry>
<entry>
<title>chore: enforce pedantic clippy lints and fix warnings</title>
<updated>2026-08-10T06:57:16+00:00</updated>
<author>
<name>魏曹先生</name>
<email>1992414357@qq.com</email>
</author>
<published>2026-08-10T06:57:16+00:00</published>
<link rel='alternate' type='text/html' href='https://git.catilgrass.cn/mingling.git/commit/?id=782d2458dc4ad4336e1407e1f107e43e39b0b991'/>
<id>782d2458dc4ad4336e1407e1f107e43e39b0b991</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>chore: update package versions to 0.4.0 in lock files</title>
<updated>2026-08-08T21:01:47+00:00</updated>
<author>
<name>魏曹先生</name>
<email>1992414357@qq.com</email>
</author>
<published>2026-08-08T21:01:47+00:00</published>
<link rel='alternate' type='text/html' href='https://git.catilgrass.cn/mingling.git/commit/?id=76e42ad0b79d012581629268879620261575d1a1'/>
<id>76e42ad0b79d012581629268879620261575d1a1</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</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>feat: add `might_be_async` dependency and update lockfiles</title>
<updated>2026-07-23T16:15:40+00:00</updated>
<author>
<name>魏曹先生</name>
<email>1992414357@qq.com</email>
</author>
<published>2026-07-23T16:15:40+00:00</published>
<link rel='alternate' type='text/html' href='https://git.catilgrass.cn/mingling.git/commit/?id=e15f7d2d72f44009a9443a1660a8956d9330718d'/>
<id>e15f7d2d72f44009a9443a1660a8956d9330718d</id>
<content type='text'>
Introduce `might_be_async` as a workspace dependency, add it to
`mingling_core`, and regenerate all Cargo.lock files accordingly.
Multiple examples and test packages also pick up a newly transitive
`equivalent` crate.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Introduce `might_be_async` as a workspace dependency, add it to
`mingling_core`, and regenerate all Cargo.lock files accordingly.
Multiple examples and test packages also pick up a newly transitive
`equivalent` crate.
</pre>
</div>
</content>
</entry>
<entry>
<title>ix(macros)!: require explicit `.into()` on chain function return values</title>
<updated>2026-07-17T17:53:59+00:00</updated>
<author>
<name>魏曹先生</name>
<email>1992414357@qq.com</email>
</author>
<published>2026-07-17T17:53:59+00:00</published>
<link rel='alternate' type='text/html' href='https://git.catilgrass.cn/mingling.git/commit/?id=f5a4cebde2f12eb980de73ea41eb8d9e133ae49a'/>
<id>f5a4cebde2f12eb980de73ea41eb8d9e133ae49a</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>feat(picker2): complete Picker2 prototype</title>
<updated>2026-07-16T19:25:24+00:00</updated>
<author>
<name>魏曹先生</name>
<email>1992414357@qq.com</email>
</author>
<published>2026-07-16T19:24:51+00:00</published>
<link rel='alternate' type='text/html' href='https://git.catilgrass.cn/mingling.git/commit/?id=b9f208deed7b8e012fbcd84202e2fb1d5eb8eeb9'/>
<id>b9f208deed7b8e012fbcd84202e2fb1d5eb8eeb9</id>
<content type='text'>
Picker2 replaces the original Picker1 with a two-phase (tag → pick) +
mask-bitmap architecture, decoupling argument matching from type
conversion via a composable matcher pipeline.

Architecture
- FlagMatcher — boolean flags (--verbose)
- ArgMatcher — single flag+value pairs (--name Alice)
- MultiArgMatcher — multi-value flag groups (--files a.txt b.txt)
- PositionalMatcher — positional arguments, respects `--`
- SingleMatcher — composite for Single-type Pickables

Types
- Flag (Active/Inactive) — semantic bool flag value
- String + 14 numeric types via SinglePickable trait
- Vec&lt;T&gt; — greedy multi-value (all SinglePickable types)
- VecUntil&lt;T&gt; — bounded multi-value via BoundaryCheck trait
- VecUntil&lt;T&gt;, pick_string, pick_numbers, pick_bool, pick_flag

Style system
- UNIX_STYLE (kebab), POWERSHELL_STYLE (Pascal), WINDOWS_STYLE (Pascal)
- naming_case auto-conversion via just_fmt integration
- Style-aware separator (= for Unix, : for PS/Windows)

Infrastructure
- internal_repeat! macro generates PickerPattern1..=32
- SinglePickable blanket impl → Pickable
- MultiPickableWithBoundary trait with greedy/bounded variants
- 151 integration tests
- Docs updated for parser feature
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Picker2 replaces the original Picker1 with a two-phase (tag → pick) +
mask-bitmap architecture, decoupling argument matching from type
conversion via a composable matcher pipeline.

Architecture
- FlagMatcher — boolean flags (--verbose)
- ArgMatcher — single flag+value pairs (--name Alice)
- MultiArgMatcher — multi-value flag groups (--files a.txt b.txt)
- PositionalMatcher — positional arguments, respects `--`
- SingleMatcher — composite for Single-type Pickables

Types
- Flag (Active/Inactive) — semantic bool flag value
- String + 14 numeric types via SinglePickable trait
- Vec&lt;T&gt; — greedy multi-value (all SinglePickable types)
- VecUntil&lt;T&gt; — bounded multi-value via BoundaryCheck trait
- VecUntil&lt;T&gt;, pick_string, pick_numbers, pick_bool, pick_flag

Style system
- UNIX_STYLE (kebab), POWERSHELL_STYLE (Pascal), WINDOWS_STYLE (Pascal)
- naming_case auto-conversion via just_fmt integration
- Style-aware separator (= for Unix, : for PS/Windows)

Infrastructure
- internal_repeat! macro generates PickerPattern1..=32
- SinglePickable blanket impl → Pickable
- MultiPickableWithBoundary trait with greedy/bounded variants
- 151 integration tests
- Docs updated for parser feature
</pre>
</div>
</content>
</entry>
</feed>
