aboutsummaryrefslogtreecommitdiff
path: root/CHANGELOG.md
Commit message (Collapse)AuthorAgeFilesLines
* feat(parselib): remove invalid naming case variants魏曹先生4 days1-0/+9
| | | | | Remove `Title`, `Lower`, and `Upper` variants from `ParserStyleNamingCase` as they are not valid naming conventions.
* feat: replace boolean program config with typed enums魏曹先生4 days1-0/+43
| | | | | | | | | Replace boolean flags in `ProgramStdoutSetting` and `ProgramUserContext` with semantic enum types, improving type safety and self-documentation. BREAKING CHANGE: Boolean fields are replaced by enums, e.g. `verbose`/`quiet`/`debug` become `verbosity`, `dry_run`/`force` become `execution`.
* fix(comps): fix PowerShell completion word index and arg passing魏曹先生6 days1-0/+9
| | | | | Correct off-by-one word index computation and conditionally pass option values only when non-empty to avoid spurious parsing.
* feat(pathf): remove BasicStructPattern from analyzer魏曹先生8 days1-0/+9
| | | | | | | | Remove the BasicStructPattern from pathf's pattern analyzer to eliminate noise from plain structs not associated with any Mingling macro. Also clean up the now-unused `basic_struct` module and update the integration test to assert plain structs are no longer collected.
* fix(core): write RenderResult::eprintln to stderr魏曹先生9 days1-0/+2
| | | | | Fix the method to use `eprintln!` instead of `println!` when `immediate_output` is enabled, ensuring error output goes to stderr.
* docs: document completion description support魏曹先生10 days1-0/+4
| | | | | Update changelog and issue tracker notes for the enhanced `default_completion` behavior.
* chore(core): merge custom completions with defaults魏曹先生10 days1-0/+8
| | | | | | | When a concrete entry's custom completion handler produces a `Suggest` value, combine it with the default subcommand suggestions instead of replacing them entirely. `FileCompletion` still falls back to the default completion since it cannot be meaningfully merged.
* refactor(dispatch_tree): match longest registered prefix in trie魏曹先生10 days1-0/+10
| | | | | | | | Refactor `build_dispatch_body` to take a caller-provided `no_match` fallback token stream instead of hardcoding `build_entry_fallback` calls. Thread the fallback through recursive calls so child paths are preferred over exact endpoints at the same depth, matching the dynamic dispatcher's longest-prefix-wins behavior.
* feat(metadata): add Description convention metadata type魏曹先生10 days1-0/+27
|
* feat: add entry metadata system with compile-time typed values魏曹先生10 days1-0/+31
| | | | | | | | | | | Add `Metadata<B>` trait and `#[metadata(Entry)]` attribute macro to attach arbitrary, compile-time-typed metadata to entries. Implement `ProgramCollect::get_metadata<T>()` 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.
* feat(comp): add prefix and suffix methods to Suggest魏曹先生11 days1-0/+7
|
* fix(core): resolve subcommands after global parameters魏曹先生11 days1-0/+9
| | | | Fix command tree matching when global flags precede the subcommand.
* feat(comps): improve bash completion script word tracking魏曹先生11 days1-0/+2
| | | | | | | | Rework bash completion script to fix word-index tracking when the cursor is in the middle of a word, compute the current word from COMP_LINE truncated at COMP_POINT, and use space-separated option arguments. Also trim colon prefixes from completion items when COMP_WORDBREAKS includes colons.
* chore: escape colons in zsh completion descriptions魏曹先生11 days1-1/+1
| | | | | | | Fix zsh completion script to escape colons in completion items and descriptions, preventing parsing issues with `_describe`. Also iterate over the original completions array for simple completions to correctly extract completion items.
* refactor(picker): replace global picker functions with PickerHelper魏曹先生11 days1-0/+8
| | | | trait
* chore: add EntryFallback completion support魏曹先生11 days1-0/+23
| | | | | | Add `#[completion(EntryFallback)]` syntax to enable custom completion suggestions for unmatched entries, merging fallback results with default completions via `Suggest::combine()`.
* chore!: rename ErrorDispatcherNotFound to EntryFallback魏曹先生11 days1-0/+20
| | | | | | | | 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.
* docs: Add preset feature groups and improve feature docs魏曹先生12 days1-0/+12
| | | | | | | Add convenience presets (`mini`, `advanced`, `full`, `build_advanced`, `build_full`) to `mingling/Cargo.toml` and document them in both English and Chinese feature docs. Update getting-started guides to reflect the new default `core`/`macros` features.
* docs: update changelog for CRATE_ROOT module placement魏曹先生12 days1-5/+7
|
* docs: add CRATE_ROOT module for docs_rs builds魏曹先生12 days1-1/+5
|
* revert: Remove picker_comp module and PickerArgSuggest trait魏曹先生12 days1-8/+0
|
* feat(core): add batch methods to Suggest and update macro魏曹先生12 days1-0/+7
| | | | | | | | | Add `add_suggest()` and `add_suggest_with_description()` methods to `Suggest` for ergonomic batch population of suggestion sets from collections of strings. Update the `suggest!` macro to use these new methods and accept expressions beyond string literals for suggestion items.
* refactor!: rename `extra_macros` feature to `extras`feat/new-pipeline-model魏曹先生13 days1-10/+31
| | | | | Update all references across docs, examples, and configuration files to use the shorter `extras` feature name.
* feat(picker_comp): add module to bridge picker and comp subsystems魏曹先生2026-07-291-0/+8
|
* feat(core/comp): add Suggest::combine method for merging suggestions魏曹先生2026-07-291-0/+2
|
* feat(dispatcher, gen_program): add From impl and default Entry pack type魏曹先生2026-07-281-0/+4
| | | | | | Add a `From<pack_Type> for crate::Entry` implementation in `dispatcher!()` macro and a default `Entry` pack type in `gen_program!()` for ergonomic program entry handling
* feat(macros): wrap gen_program output in a hidden module魏曹先生2026-07-281-4/+7
| | | | | | Move pathf type resolution from `program_final_gen` to `gen_program` and isolate generated code inside `__this_program_impl` to prevent namespace pollution
* feat(mingling_macros, mingling_pathf): add `#[command]` attribute macro魏曹先生2026-07-281-0/+40
| | | | | | | | | | | | | Add a new `#[command]` attribute macro (feature-gated behind `extra_macros`) that converts a plain function with a `Vec<String>` parameter into a fully wired Mingling command. The macro generates a `dispatcher!` call, a `#[chain]` wrapper, and a hidden module re-exporting all generated types. Also add `CommandPattern` to the pathf pattern analyzer to recognize `#[command]`-annotated functions and track their generated hidden modules.
* refactor(pathf): move type resolution from compile-time to build-time魏曹先生2026-07-281-1/+7
|
* feat(picker): add convenience methods to PickArgParsed tuples魏曹先生2026-07-281-0/+8
| | | | | Add `unwrap_or_default`, `unwrap_or_else`, and `expect` methods to reduce boilerplate when working with parsed argument tuples
* feat(picker): add filesystem-aware path value types魏曹先生2026-07-281-0/+35
| | | | | | | | | Add `FilePath`, `NoFilePath`, `DirPath`, `NoDirPath`, `SymlinkPath`, `NoSymlinkPath`, `NoPath`, and `RecursiveFiles` wrapper types with filesystem validation at parse time. Each type implements `SinglePickable` and provides standard conversions via `From`, `AsRef`, `Deref`, and `DerefMut`.
* chore(changelog): mark release 0.3.0 as released on 2026-07-27魏曹先生2026-07-271-2/+2
|
* feat(macros): split monolith into one-macro-per-file modules魏曹先生2026-07-261-4/+5
|
* docs(changelog): fix item numbering in changelog魏曹先生2026-07-251-4/+3
|
* feat(core): consolidate sync/async exec pipeline with `might_be_async`魏曹先生2026-07-241-0/+10
| | | | | | | 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.
* feat(core): add RendererInvoker and ChainInvoker types魏曹先生2026-07-241-0/+50
|
* refactor(core): rename ResourceMarker methods to internal names魏曹先生2026-07-241-0/+10
|
* feat(core): rename `builds` feature to `build`魏曹先生2026-07-231-0/+7
| | | | | | | Replace the `builds` feature with `build` across the crate, keeping a backward-compatible alias for the old name. Update all internal visibility from `#[doc(hidden)] pub mod` to `pub(crate) mod` and reorganize the `__private` module into a dedicated `private.rs`.
* docs(core): add Clone and Eq derives to RenderResult魏曹先生2026-07-221-0/+7
|
* feat(any): make `Grouped` trait unsafe and encapsulate `AnyOutput`魏曹先生2026-07-211-0/+35
| | | | | | | | | | 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.
* docs(changelog): add Mingling 0.3.0 release notes魏曹先生2026-07-211-0/+10
|
* feat(macros): add `#[mlint(...)]` marker attribute macro魏曹先生2026-07-211-0/+13
|
* feat(macros): add render_route macro and renderify attribute for render魏曹先生2026-07-211-0/+38
| | | | pipeline error routing
* feat(pathf): add foreign item support with is_foreign flag魏曹先生2026-07-211-0/+8
| | | | | | | | | | Add `AnalyzeItem::foreign()` and `AnalyzeItem::local()` constructors to distinguish items resolved via `use` imports from local definitions. Update `GroupPattern` to collect use imports at file and module levels, resolving `group!(TypeName)` against them. Migrate all pattern implementations to use the new constructors, and adjust `type_mapping_builder` to skip the file's own module prefix for foreign items.
* feat(core): add generic parameter `C` to `StructuralData` trait魏曹先生2026-07-211-0/+20
| | | | | | | Make `StructuralData` and `StructuralDataSealed` generic over a program collector type to bypass the orphan rule for `group_structural!`. This enables external types to implement `StructuralData<crate::ThisProgram>` without violating coherence.
* fix: detect both opening and closing bracket forms for attribute macro魏曹先生2026-07-211-1/+8
| | | | patterns
* feat(core): add From impl for RenderResult with closure coercion魏曹先生2026-07-211-0/+21
|
* feat(core, macros): add r_append! macro and RenderResult::append_other魏曹先生2026-07-211-0/+8
| | | | | | | Implement `RenderResult::append_other()` to merge buffered content and immediate output behavior from one result into another. Add the `r_append!` macro with both explicit buffer (`dst, src`) and implicit buffer (`src`) usage forms, re-exported from `mingling::prelude`.
* feat(core): return `&mut Self` from builder methods魏曹先生2026-07-211-0/+26
| | | | | Enables method chaining for `with_resource`, `with_dispatcher`, `with_dispatchers`, `with_hook`, and `with_setup`
* fix(core): delegate stdout flushing to RenderResult::std_print魏曹先生2026-07-211-0/+4
|