<feed xmlns='http://www.w3.org/2005/Atom'>
<title>mingling.git/mingling_cli/src/proj_mgr, branch wip/new-mingling-ci</title>
<subtitle>用于开发多子命令的命令行框架
</subtitle>
<link rel='alternate' type='text/html' href='https://git.catilgrass.cn/mingling.git/'/>
<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>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: normalize test path for Windows verbatim prefixes</title>
<updated>2026-08-10T10:49:45+00:00</updated>
<author>
<name>魏曹先生</name>
<email>1992414357@qq.com</email>
</author>
<published>2026-08-10T10:49:45+00:00</published>
<link rel='alternate' type='text/html' href='https://git.catilgrass.cn/mingling.git/commit/?id=f9f0a06ca78aaeb8b520aab179da5709edf36bc9'/>
<id>f9f0a06ca78aaeb8b520aab179da5709edf36bc9</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>fix: strip verbatim prefix from canonicalized paths on Windows</title>
<updated>2026-08-10T06:40:37+00:00</updated>
<author>
<name>魏曹先生</name>
<email>1992414357@qq.com</email>
</author>
<published>2026-08-10T06:40:37+00:00</published>
<link rel='alternate' type='text/html' href='https://git.catilgrass.cn/mingling.git/commit/?id=6b18873666e17ab68ffce799b1707c030166738f'/>
<id>6b18873666e17ab68ffce799b1707c030166738f</id>
<content type='text'>
Refactor `find_project_root` to use `deverbatim` on canonicalized paths,
removing the `\\?\` prefix on Windows to ensure proper path handling.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Refactor `find_project_root` to use `deverbatim` on canonicalized paths,
removing the `\\?\` prefix on Windows to ensure proper path handling.
</pre>
</div>
</content>
</entry>
<entry>
<title>fix(class-add): resolve project root by walking up for `.mling`</title>
<updated>2026-08-09T11:41:49+00:00</updated>
<author>
<name>魏曹先生</name>
<email>1992414357@qq.com</email>
</author>
<published>2026-08-09T11:41:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.catilgrass.cn/mingling.git/commit/?id=471d11e12d1bbbf29a0c07a00311ebe5eac893ec'/>
<id>471d11e12d1bbbf29a0c07a00311ebe5eac893ec</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>feat(class-add): implement class-add command</title>
<updated>2026-08-09T11:39:44+00:00</updated>
<author>
<name>魏曹先生</name>
<email>1992414357@qq.com</email>
</author>
<published>2026-08-09T11:39:44+00:00</published>
<link rel='alternate' type='text/html' href='https://git.catilgrass.cn/mingling.git/commit/?id=be03071241c0fb54a7dfbfa1980a64a6e8686fec'/>
<id>be03071241c0fb54a7dfbfa1980a64a6e8686fec</id>
<content type='text'>
Add the `class-add` command to create project classes from
templates registered in `.mling/classes.toml`. Supports name
derivation (snake_case, PascalCase, etc.), template expansion,
and shell completions.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Add the `class-add` command to create project classes from
templates registered in `.mling/classes.toml`. Supports name
derivation (snake_case, PascalCase, etc.), template expansion,
and shell completions.
</pre>
</div>
</content>
</entry>
<entry>
<title>feat(proj_mgr): add support for conditional directory removal</title>
<updated>2026-08-09T11:23:49+00:00</updated>
<author>
<name>魏曹先生</name>
<email>1992414357@qq.com</email>
</author>
<published>2026-08-09T11:23:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.catilgrass.cn/mingling.git/commit/?id=0b02cbd797ab13ff0877031d83e2ecc85a7916b5'/>
<id>0b02cbd797ab13ff0877031d83e2ecc85a7916b5</id>
<content type='text'>
Add `[[hide-dir]]` rule to remove entire directories when their
condition evaluates to true, extending the existing file-level
hide functionality to directory trees.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Add `[[hide-dir]]` rule to remove entire directories when their
condition evaluates to true, extending the existing file-level
hide functionality to directory trees.
</pre>
</div>
</content>
</entry>
<entry>
<title>feat(rule_solver): support `!=` comparison and reject trailing tokens</title>
<updated>2026-08-09T11:04:19+00:00</updated>
<author>
<name>魏曹先生</name>
<email>1992414357@qq.com</email>
</author>
<published>2026-08-09T11:04:19+00:00</published>
<link rel='alternate' type='text/html' href='https://git.catilgrass.cn/mingling.git/commit/?id=3e9e70b32e8b1f77c81bd8652d9e53a3882d7297'/>
<id>3e9e70b32e8b1f77c81bd8652d9e53a3882d7297</id>
<content type='text'>
Add `!=` operator support in rule expressions and ensure the entire
expression is consumed during parsing, invalidating any trailing
garbage tokens that would previously be silently ignored.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Add `!=` operator support in rule expressions and ensure the entire
expression is consumed during parsing, invalidating any trailing
garbage tokens that would previously be silently ignored.
</pre>
</div>
</content>
</entry>
<entry>
<title>feat(proj_mgr): add toggle mutex validation and program crate name</title>
<updated>2026-08-09T10:46:17+00:00</updated>
<author>
<name>魏曹先生</name>
<email>1992414357@qq.com</email>
</author>
<published>2026-08-09T10:45:47+00:00</published>
<link rel='alternate' type='text/html' href='https://git.catilgrass.cn/mingling.git/commit/?id=c6f695bf5e757fdae8115abfcefb547745cd37be'/>
<id>c6f695bf5e757fdae8115abfcefb547745cd37be</id>
<content type='text'>
Support `[[user.toggle-mutex]]` groups in rule.toml to enforce
mutually exclusive toggle options, and derive `program_crate_name`
from `program_name` using snake_case conversion.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Support `[[user.toggle-mutex]]` groups in rule.toml to enforce
mutually exclusive toggle options, and derive `program_crate_name`
from `program_name` using snake_case conversion.
</pre>
</div>
</content>
</entry>
<entry>
<title>refactor(proj_init): simplify template expansion logic</title>
<updated>2026-08-09T09:44:28+00:00</updated>
<author>
<name>魏曹先生</name>
<email>1992414357@qq.com</email>
</author>
<published>2026-08-09T09:44:28+00:00</published>
<link rel='alternate' type='text/html' href='https://git.catilgrass.cn/mingling.git/commit/?id=a05379b0dcf8b53fdb644f4dd803c46a1d8325fb'/>
<id>a05379b0dcf8b53fdb644f4dd803c46a1d8325fb</id>
<content type='text'>
Remove `tmpl_` prefix stripping and special `.mling` handling, rendering
all files as templates except metadata files.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Remove `tmpl_` prefix stripping and special `.mling` handling, rendering
all files as templates except metadata files.
</pre>
</div>
</content>
</entry>
</feed>
