safe-chains v0.230.0
Released 2026-09-03 · View on GitHub
- feat *(schema)* Optional_valued — a flag whose value is optional
- feat *(guards)* Enumerate long-flag arity mismodelling, and fix the four it found
- feat *(git)* Claim ls-files output as paths, and settle what modes v1 must decide
- feat *(pathgate)* Value-aware mode clauses, and dart format stops being Rust
- feat *(pathgate)* A when clause can re-role a flag's value, not only the positionals
- feat *(cli)* --suggest is informational and writes nothing
- feat *(refusal)* One builder for refusal copy, keyed on what we emit
- feat *(refusal)* Pin the advice to the behaviour with a grant-pairing guard
- fix *(docs+guard)* The proposed
$(which X)output claim is a fail-open, not a gap - fix *(pathgate)* The in-place formatters read by default, like the linters already did
- fix *(facet)* Derive an ordinal's hazard from its direction, and pin the trust ladders
- fix *(dispatch)* A File executor is governed by its own grammar unless it passes argv
- fix *(explain)* A denied compound names the command inside it
- fix *(targets)* --setup refuses a settings file it cannot read, instead of replacing it
- fix *(targets)* Grok and cursor self-filter; neither exemption survived checking
- fix *(grants)* A grant that NAMES a credential store opens it for reading
- fix *(pathgate)* A
whenclause stops scanning at--; refusal copy cannot forge a line - other Reorganize TODO.md around what this repo is responsible for
- other Re-measure the command-modes customers before building; four are served
- other Record why re-tokenizing split words is not built, with the blocker measured