Skip to content

Milestones

List view

  • Overhaul bunli's validation layer for better DX, Standard Schema compatibility, and richer error reporting. ## Key Changes - **Auto-coercion pipeline**: Boolean → Number → Date → string fallback (no more `z.coerce.*`) - **`define*` rename**: `option()` → `defineOption()`, `createPlugin()` → `definePlugin()` (consistent API) - **Error accumulation**: Report all validation errors at once - **Typo suggestions**: Levenshtein-based "did you mean?" for flags and subcommands - **File/path validators**: `file()` and `directory()` combinators with `mustExist`/`extensions` - **Effect Schema**: First-class support via Standard Schema V1 + auto-coercion ## Design Decisions - Coerce-first strategy with schema-rejection fallback - Hard break, no deprecation (pre-1.0) - Validation combinators over dedicated option types - Levenshtein distance ≤ 2 ## Dependency Order 1. `define*` rename (mechanical, clears noise) 2. Auto-coercion pipeline (foundational) 3. Error accumulation (builds on coercion) 4. Typo suggestions (builds on accumulation) 5. File/path validators (independent)

    No due date
    0/5 issues closed