aboutsummaryrefslogtreecommitdiff
path: root/mingling
Commit message (Collapse)AuthorAgeFilesLines
* refactor!: replace pack! macros with derive-based pipeline types魏曹先生17 min.4-323/+162
| | | | | | | | | 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.
* feat(macros): add Wrap derive macro魏曹先生92 min.1-0/+5
| | | | | | 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.
* refactor!: remove legacy parser feature and migrate to picker魏曹先生2 hours12-2695/+62
| | | | | | | | | | The legacy `parser` feature and its module tree (`mingling::parser`, `Argument`, `Picker`, `Pickable`, etc.) have been fully removed and replaced by the `picker` feature powered by `arg-picker`. BREAKING CHANGE: Remove `parser` feature and use `picker` instead. Migration guide: Replace `features = ["parser"]` with `features = ["picker"]` and update API usage per the provided table.
* refactor!: remove Node type and simplify dispatcher macro syntax魏曹先生3 hours4-62/+53
| | | | | | | 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.
* refactor!: remove dynamic dispatcher registration API魏曹先生3 hours4-112/+89
| | | | | | | 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).
* docs: fix intra-doc links in mingling crate魏曹先生29 hours4-8/+8
|
* refactor: rename Confirmer to ResConfirm and OSC94 to ResOSC94魏曹先生34 hours9-101/+145
| | | | | | Rename `Confirmer` resource to `ResConfirm`, `ConfirmerCount` to `ConfirmCount`, and `ConfirmerPredicate` to `ConfirmPredicate`. Update related setups, guards, and documentation references.
* feat: move OSC94 under its own module and add confirmer predicates魏曹先生34 hours10-370/+570
| | | | | | Extract OSC94 state and guard types from `res` into a dedicated `osc94` module, and add `ConfirmerCount` and `ConfirmerPredicate` types with `YesConfirm` and `TrueConfirm` implementations.
* chore: replace intra-doc links with plain code spans魏曹先生34 hours3-6/+6
|
* fix: only send clean state when supported魏曹先生46 hours1-1/+3
|
* feat(res): add OSC94 resource and setup for terminal progress魏曹先生47 hours5-0/+431
|
* feat(res): add Confirmer resource and stdin args setup魏曹先生48 hours5-19/+434
| | | | | | | | Add Confirmer with cached confirmation state and predicate-based parsing for yes/no and true/false inputs. Add ConfirmerSetup to register the resource and auto-confirm when skip mode is enabled. Add StandardInputArgsSetup to read piped stdin as appended arguments. Reorganize module exports in res and setups.
* feat(example-structural-renderer): add YAML output test case魏曹先生2 days1-0/+1
|
* feat(core): move config types to public config module魏曹先生3 days6-21/+23
| | | | | | | | | Refactor program configuration types into a dedicated public `config` module under `mingling_core`, making `StructuralRendererSetting` accessible via `mingling_core::config` instead of the crate root. Update all internal references and setup modules to use the new `config::` path convention.
* chore: remove stale comment from features.rs魏曹先生3 days1-1/+0
|
* refactor: replace with_dispatchers with chained with_dispatcher calls魏曹先生3 days1-5/+10
|
* chore: add "Doc Not Optimize" comments to source files魏曹先生3 days35-0/+35
| | | | | Mark all source files with a comment indicating they are not optimized for documentation purposes.
* refactor: use `Self` and simplify lifetimes in setup types魏曹先生7 days2-13/+18
| | | | | | | Replace `ThisProgram` with `Self` where appropriate and mark constructors as `#[must_use]` and `const` where possible. Simplify explicit lifetimes in `ProgramSetup` and `Default` implementations using elided lifetimes.
* chore: update example docs for PanicSilence enum usage魏曹先生7 days1-2/+2
|
* refactor: replace boolean settings with mode enums魏曹先生7 days2-11/+22
| | | | | | | Update stdout and error output settings to use explicit `RenderOutput` and `ErrorOutput` enums, and replace the `confirm` boolean with distinct `ConfirmationMode`, `InteractionMode`, and `YesAssumption` fields for clearer control flow.
* chore: enforce pedantic clippy lints and fix warnings魏曹先生7 days15-90/+93
|
* refactor(metadata): move metadata module to core crate魏曹先生13 days2-59/+1
|
* feat(metadata): add Description convention metadata type魏曹先生13 days3-0/+63
|
* feat(gen_program): add get_metadata method stub魏曹先生13 days2-0/+11
|
* feat: add entry metadata system with compile-time typed values魏曹先生13 days2-0/+199
| | | | | | | | | | | 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.
* refactor(picker): replace global picker functions with PickerHelper魏曹先生14 days3-35/+64
| | | | trait
* chore!: rename ErrorDispatcherNotFound to EntryFallback魏曹先生14 days3-10/+10
| | | | | | | | 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(mingling): fix doc example compile error魏曹先生2026-08-031-0/+2
|
* fix: add generic program entry point variant魏曹先生2026-08-031-0/+2
|
* docs: update Mingling description wording魏曹先生2026-08-031-1/+1
|
* chore(docs): add Arborium header to docs build魏曹先生2026-08-032-1/+5
| | | | | | Add the Arborium JS library header to the documentation build via RUSTDOCFLAGS and docs.rs metadata so generated docs include the interactive Arborium components.
* docs: Add preset feature groups and improve feature docs魏曹先生2026-08-032-6/+70
| | | | | | | 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.
* feat(gen_program): add Entry struct and program constructors魏曹先生2026-08-031-3/+37
| | | | | | | Add `Entry` struct with `pub(crate)` visibility for `inner` fields, plus `new()` and `this()` constructors on `ThisProgram` for docs.rs demonstration of the `gen_program!` macro expansion.
* feat: add docs.rs generated program documentation module魏曹先生2026-08-023-0/+260
|
* revert: Remove picker_comp module and PickerArgSuggest trait魏曹先生2026-08-022-56/+0
|
* refactor!: rename `extra_macros` feature to `extras`feat/new-pipeline-model魏曹先生2026-08-014-33/+46
| | | | | Update all references across docs, examples, and configuration files to use the shorter `extras` feature name.
* docs: remove redundant macro doc comments魏曹先生2026-08-011-70/+0
|
* docs: add detailed EXAMPLES module documentation魏曹先生2026-08-012-1/+6
|
* chore: move lib.md to docs directory魏曹先生2026-08-012-1/+1
|
* feat(picker_comp): add module to bridge picker and comp subsystems魏曹先生2026-07-292-0/+56
|
* feat(example): add command macro example魏曹先生2026-07-281-0/+90
|
* feat(mingling_macros, mingling_pathf): add `#[command]` attribute macro魏曹先生2026-07-281-0/+6
| | | | | | | | | | | | | 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.
* fix(docs): rename `builds` feature to `build` in examples魏曹先生2026-07-232-5/+16
|
* feat(core): rename `builds` feature to `build`魏曹先生2026-07-231-1/+5
| | | | | | | 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`.
* feat: add `doc_cfg` feature for docs.rs build魏曹先生2026-07-221-0/+1
|
* feat(any): make `Grouped` trait unsafe and encapsulate `AnyOutput`魏曹先生2026-07-211-1/+1
| | | | | | | | | | 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.
* feat(macros): add `#[mlint(...)]` marker attribute macro魏曹先生2026-07-211-0/+3
|
* feat(macros): add render_route macro and renderify attribute for render魏曹先生2026-07-211-0/+9
| | | | pipeline error routing
* feat(core, macros): add r_append! macro and RenderResult::append_other魏曹先生2026-07-211-0/+6
| | | | | | | 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)!: replace RenderResult with buffered output model魏曹先生2026-07-213-5/+17
| | | | | | | | | | 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.