aboutsummaryrefslogtreecommitdiff
path: root/CHANGELOG.md
Commit message (Collapse)AuthorAgeFilesLines
* fix(core): resolve subcommands after global parameters魏曹先生2 days1-0/+9
| | | | Fix command tree matching when global flags precede the subcommand.
* feat(comps): improve bash completion script word tracking魏曹先生2 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魏曹先生2 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魏曹先生2 days1-0/+8
| | | | trait
* chore: add EntryFallback completion support魏曹先生2 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魏曹先生2 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魏曹先生3 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魏曹先生3 days1-5/+7
|
* docs: add CRATE_ROOT module for docs_rs builds魏曹先生3 days1-1/+5
|
* revert: Remove picker_comp module and PickerArgSuggest trait魏曹先生4 days1-8/+0
|
* feat(core): add batch methods to Suggest and update macro魏曹先生4 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魏曹先生4 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魏曹先生8 days1-0/+8
|
* feat(core/comp): add Suggest::combine method for merging suggestions魏曹先生8 days1-0/+2
|
* feat(dispatcher, gen_program): add From impl and default Entry pack type魏曹先生8 days1-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魏曹先生8 days1-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魏曹先生8 days1-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魏曹先生8 days1-1/+7
|
* feat(picker): add convenience methods to PickArgParsed tuples魏曹先生9 days1-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魏曹先生9 days1-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魏曹先生9 days1-2/+2
|
* feat(macros): split monolith into one-macro-per-file modules魏曹先生10 days1-4/+5
|
* docs(changelog): fix item numbering in changelog魏曹先生11 days1-4/+3
|
* feat(core): consolidate sync/async exec pipeline with `might_be_async`魏曹先生13 days1-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魏曹先生13 days1-0/+50
|
* refactor(core): rename ResourceMarker methods to internal names魏曹先生13 days1-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
|
* feat(core)!: replace RenderResult with buffered output model魏曹先生2026-07-211-0/+44
| | | | | | | | | | Remove `Deref<Target=str>` and `render_text:String` in favor of `render_buffer:Vec<(String, RenderResultMode)>` and an `immediate_output` flag. Add `RenderResultMode` enum, `r_eprint!`/`r_eprintln!` macros, and new buffer manipulation methods (`append_to_buffer`, `eprint`, etc.). Update `Display` to trim output and remove trailing newline. Migrate all callers and tests away from `Deref` usage.
* feat(macros): add `#[buffer]` attribute and re-export `r_print!(ln)`魏曹先生2026-07-201-4/+17
| | | | | | | | | | | macros Reintroduce `r_print!` and `r_println!` macros as public exports, now supporting both explicit buffer argument and implicit `#[buffer]` attr. Add `#[buffer]` attribute macro that wraps unit-returning functions to produce a `RenderResult` with an automatically injected buffer variable. Relax `RenderResult::print()` and `println()` to accept `impl AsRef<str>`.
* feat(macros): preserve user function as standalone item in codegen魏曹先生2026-07-201-0/+10
| | | | | | | | | | | Refactor #[chain], #[renderer], #[help], and #[completion] macros to keep the original user function as a named item instead of inlining its body. Trait method implementations now call the original function by name, injecting resources from the application context. This improves debugging (stack traces reference user function names), error messages, and macro expansion clarity.
* feat(core)!: remove `to_chain` and `to_render` from `Grouped` trait魏曹先生2026-07-201-0/+19
| | | | | Move routing methods exclusively to the `Routable` trait and update all macro-generated code to reference `Routable` instead of `Grouped`
* feat(extensions): add routeify extension macro for error routing魏曹先生2026-07-201-0/+26
|
* chore(macros): reorganize module hierarchy in mingling_macros魏曹先生2026-07-201-0/+13
| | | | | | Restructure flat module layout into logical directories (attr/, derive/, func/, systems/, extensions/, utils.rs). Tighten internal function visibility to pub(crate). All public API signatures remain unchanged.
* feat(macros): add extension point mechanism for attribute macros魏曹先生2026-07-201-0/+6
| | | | | | | Implement an `extensions` module in `mingling_macros` that allows attribute macros to accept extension identifiers (e.g., `routeify`) which are re-dispatched as outer attributes before the core macro logic runs, enabling extensibility without modifying existing macros
* feat(macros): update `route!` to use `Routable` trait for error routing魏曹先生2026-07-191-1/+7
| | | | | | | Add `Routable` implementation for `ChainProcess<ThisProgram>` to enable direct routing of chain process values through the `route!` macro without double-wrapping, improving semantics and flexibility of error conversion
* fix!: rename `Groupped` to `Grouped` across the codebase魏曹先生2026-07-191-1/+12
|
* feat(macros:chain): accept any return type in chain functions魏曹先生2026-07-191-0/+27
|
* feat(setups): refactor picker subsystem with new argument manipulation魏曹先生2026-07-181-0/+23
| | | | | | | | | | API Refactor six setup types into `mingling::setups::picker` to use chained `PickerArg<Flag>` parsing, replacing direct `global_argument` access. Add `get_args_mut`, `take_args`, and `replace_args` to `Program` for enhanced argument control. These changes are gated behind the `picker` feature, with legacy implementations preserved when the feature is off.