Skip to content

Latest commit

 

History

History
266 lines (180 loc) · 30.1 KB

File metadata and controls

266 lines (180 loc) · 30.1 KB

Changelog

0.2.3 (2026-04-12)

Features

  • flag_groups: use pattern syntax for flag group definitions, support bool flags and value constraints (#300) (ec284c3)

0.2.2 (2026-04-12)

Features

  • config: declare version guards with required_runok_version (#299) (2990a0e)
  • rules: add <flag:name> placeholder to inspect every value of repeated and aliased flags in when clauses (#278) (2fe0c76)

Bug Fixes

  • rules: evaluate subshell-wrapped arguments through the wrapper path (#297) (5afc9c8)

Dependencies

0.2.1 (2026-04-03)

Features

  • cli: support runok migrate command to auto-convert deprecated sandbox fs config (#252) (3dccd3e)
  • sandbox: support read/write sub-sections in sandbox fs config with read denial (#236) (9f06e51)

Bug Fixes

  • command_parser: handle negated_command as a transparent container (#266) (3aebc80)
  • config: add runok warning: prefix and config file path to deprecation warnings (#242) (1706f2e)
  • config: remove unused definitions.commands field (#235) (31ebb2c)
  • test: strip inline tests from remote presets on load (#227) (725cf6e)

Dependencies

  • update rust crate clap to v4.5.61 (#241) (42992c9)
  • update rust crate clap to v4.6.0 (#245) (39cd8c8)
  • update rust crate libc to v0.2.183 (#220) (22e7f27)
  • update rust crate serde-saphyr to v0.0.22 (#259) (123c2f1)
  • update rust crate terminal_size to v0.4.4 (#268) (14a436a)
  • update rust crate tree-sitter to v0.26.7 (#254) (983c835)

0.2.0 (2026-03-15)

⚠ BREAKING CHANGES

  • treat * inside quotes as glob, support \* escape for literal asterisk (#157)

Features

  • audit: improve audit subcommand output with table format and colors (#200) (490e206)
  • audit: support audit logging for command evaluation results (#103) (25c6749)
  • cli: add --dir filter option to runok audit (#207) (71b768e)
  • cli: add runok test subcommand for rule verification (#204) (cfafb18)
  • cli: add update-presets command (#197) (4c57355)
  • rules: add typed variable definitions (definitions.vars) with <var:name> placeholder (#201) (ffee2ec)
  • rules: support <var:name> in command position and per-value type (#208) (c5995ae)
  • rules: support redirects and pipe variables in when clauses (#203) (a513e1b)
  • rules: support fused short flag pattern matching (-n3) (#205) (7a74122)
  • treat * inside quotes as glob, support \* escape for literal asterisk (#157) (23c7789)

Bug Fixes

  • cli: reject unknown flags before -- in exec/check subcommands (#202) (7344abd)
  • cli: remove exec --dry-run option (#216) (155c0d3)
  • pattern-matcher: skip flag-starting token sequences in <cmd> placeholder matching (#206) (f706488)

Dependencies

0.1.5 (2026-03-12)

Bug Fixes

  • rules: handle =-joined flag tokens in Alternation matching (#196) (15fe774)
  • rules: prevent flag negation from being consumed as preceding flag's value (#191) (31b76a8)

0.1.4 (2026-03-11)

Features

  • init: warn when other PreToolUse hooks conflict with runok sandbox (#186) (94a506f)
  • rules: apply order-independent matching to literal tokens (#177) (e257cad)

Bug Fixes

  • rules: allow flag-only negation to pass with empty command tokens (#179) (1d6c757)
  • rules: match FlagWithValue patterns against =-joined tokens (#180) (6ebb296)
  • rules: match flag-only negation patterns against =-joined tokens (#175) (7cf8eaa)
  • rules: resolve unmatched sub-commands to concrete actions in compound evaluation (#178) (377f83d)

0.1.3 (2026-03-09)

Features

  • config: resolve relative paths based on config file parent directory (#166) (ee1a7c3)
  • preset: add file-based locking for concurrent preset cache access (#168) (27c31f4)
  • preset: support path specification in GitHub shorthand references (#167) (eff4b56)

Bug Fixes

  • config: resolve preset rules referenced via extends (#174) (abc5e41)
  • config: traverse ancestor directories to find project config (#165) (a49f916)
  • preset: remove unnecessary mutable reference warning (#169) (c1d9d3c)
  • rules: apply order-independent matching to flag-only negation patterns (#171) (9c43c91)

Dependencies

  • update rust crate serde-saphyr to v0.0.21 (#162) (56c0827)

0.1.2 (2026-03-06)

Features

Bug Fixes

  • evaluate command substitutions nested in quoted strings (#151) (af784b6)
  • resolve stack overflow in compound command evaluation with command substitutions (#149) (97b46a7)
  • rules: stop flag alternation from consuming placeholder as flag value (#154) (24a951a)
  • treat -- as a positional literal instead of a flag (#153) (c2f6d72)

Dependencies

  • update rust crate dialoguer to v0.12.0 (#158) (9e3cd2e)
  • update rust crate tempfile to v3.26.0 (#147) (02fba8a)
  • update rust crate tree-sitter to v0.26.6 (#156) (f44c9a6)

0.1.1 (2026-03-02)

Bug Fixes

  • cli: add --version flag (#138) (a284a3b)
  • config: support runok.yaml for global config file discovery (#141) (b338d30)

Dependencies

0.1.0 (2026-03-01)

  • trigger initial release (c9f190c)

Features

  • adapter: add CheckAdapter for generic check interface (#53) (cb6dc15)
  • adapter: add Endpoint trait and common evaluation flow (#51) (0aee28c)
  • adapter: implement ExecAdapter (#52) (36e6453)
  • adapter: include matched rule, reason, and fix suggestion in deny feedback (#58) (bd8f929)
  • adapter: support Endpoint implementation for Claude Code PreToolUse Hook (#54) (0c0eabf)
  • cli: add --dry-run and --verbose options to exec/check subcommands (#59) (f2eee5e)
  • cli: add --output-format option and rename --format to --input-format (#95) (5fc9592)
  • cli: implement exec/check subcommands with stdin input routing (#55) (041fc33)
  • cli: return spec-compliant exit codes per subcommand (#56) (2030cbc)
  • cli: support plaintext stdin input for check subcommand (#57) (2efb529)
  • cli: unify check command input to positional args matching exec (#96) (e5a3f8f)
  • config: add config validation (#18) (9421327)
  • config: detect circular references in nested extends (#48) (00bcbe3)
  • config: expand <path:name> references in sandbox preset fs.deny (#66) (3fbaf0e)
  • config: generate JSON Schema for runok.yml via config-schema feature (#93) (beacb7f)
  • config: prefer $XDG_CONFIG_HOME for global config directory (#118) (ff30229)
  • config: support global and local config merging (#25) (4ecb66c)
  • config: support global local override via runok.local.yml (#105) (c9091d3)
  • config: support loading local preset files from extends (#36) (6b5e3cf)
  • config: support per-project personal config override via runok.local.yml (#89) (bb9e03a)
  • config: support remote preset resolution via git clone --depth 1 (#43) (5368ddb)
  • config: support YAML config file parsing (#6) (c1b3d64)
  • define common error types for each layer (#2) (14cb840)
  • exec: add dry-run mode to CommandExecutor (#41) (77eb8ce)
  • exec: fall back to ask on extension errors (#24) (91395e6)
  • exec: support command execution with exit code forwarding via CommandExecutor (#38) (5c04095)
  • exec: support JSON-RPC 2.0 communication with extension plugins (#19) (d30c9ab)
  • pattern: support alternation syntax in command name position (#91) (6fabb81)
  • pattern: support multi-word alternation syntax in command position (#94) (2fdea25)
  • pattern: support wildcard * as command name in patterns (#77) (82c343c)
  • rules: add pattern-to-command matching engine (#37) (823d96b)
  • rules: add rule engine with Explicit Deny Wins priority (#40) (28834e5)
  • rules: implement LexToken-based pattern parser (#5) (556ef10)
  • rules: implement CEL expression evaluator for when-clause conditions (#8) (227252f)
  • rules: implement command string tokenizer (#7) (f780588)
  • rules: implement pattern string lexer for tokenization (#4) (397e6d8)
  • rules: structure command strings into flags and arguments (#21) (47feaba)
  • rules: support command extraction from subshells (#23) (07cafa8)
  • rules: support compound command evaluation with result aggregation (#49) (4395c0b)
  • rules: support recursive command extraction from control structures (#26) (ac7ac89)
  • rules: support recursive wrapper command evaluation (#45) (c6fd568)
  • sandbox: implement SandboxPolicy construction and policy resolution (#63) (a77bcca)
  • sandbox: implement Linux sandbox helper binary (#68) (545ae31)
  • sandbox: implement macOS SandboxExecutor using Seatbelt/SBPL (#67) (32d7e96)
  • wrapper: add <opts> and <vars> placeholders for wrapper patterns (#84) (0d41c66)

Bug Fixes

  • adapter: evaluate extracted sub-command instead of raw input for simplified compound constructs (#87) (0c463b7)
  • cli: unwrap Result from shell_quote_join call in route_check (#100) (730633e)
  • command_parser: skip comment nodes in collect_commands (#88) (9882e01)
  • command_parser: strip env-prefix variable assignments from command nodes (#90) (c2f7c76)
  • command_parser: treat variable_assignment as transparent container to exclude bare assignments from command extraction (#82) (ff881b5)
  • config: preserve global definitions.paths during config merge (#28) (7a30d16)
  • hook: include sandbox-wrapped updatedInput for ask decisions (#81) (75bf7c4)
  • hook: use snake_case serde rename for HookInput (#76) (78f3e39)
  • linux-sandbox: enforce glob patterns in deny list via bubblewrap (#122) (dd02db7)
  • linux-sandbox: remove obsolete runok-linux-sandbox: prefix from warning messages (#128) (a3862e7)
  • parser: handle redirects in command rule matching (#102) (10c9e9c)
  • pattern: allow literal [ as a command name in patterns (#83) (ce99efe)
  • pattern: allow wildcard * in command position to match multi-word commands (#98) (7d0b0ba)
  • pattern: apply glob matching to literal tokens containing * (#106) (b95f957)
  • pattern: match flags inside optional groups in order-independent manner (#97) (6c029e6)
  • pattern: match non-aliased flags in order-independent manner (#80) (ebb23e3)
  • pattern: prevent flags from consuming literal ] as a value in bracket commands (#85) (68daac1)
  • pattern: prevent wildcard from matching across shell operators in compound commands (#108) (067ab7e)
  • pattern: treat * inside alternation parts as a glob wildcard (#101) (0ab984f)
  • resolve ETXTBSY flaky tests on Linux CI by retrying spawn (#32) (6980503)
  • rule_engine: resolve unmatched sub-commands in compound evaluation via defaults.action (#79) (43ba553)
  • sandbox: fall back to defaults.sandbox when matched rule has no sandbox attribute (#78) (eb53670)

Dependencies

  • update rust crate anyhow to v1.0.102 (#117) (ba79bd5)
  • update rust crate clap to v4.5.58 (#47) (fca519c)
  • update rust crate clap to v4.5.59 (#86) (cc80443)
  • update rust crate clap to v4.5.60 (#113) (34219e0)
  • update rust crate landlock to v0.4.4 (#69) (9abbb8d)
  • update rust crate serde_json to v1.0.149 (#20) (98d5d1a)
  • update rust crate serde-saphyr to v0.0.17 (#14) (336b13d)
  • update rust crate serde-saphyr to v0.0.18 (#42) (ea3bad4)
  • update rust crate serde-saphyr to v0.0.19 (#70) (aa6e315)
  • update rust crate serde-saphyr to v0.0.20 (#130) (0f502c2)
  • update rust crate sha2 to v0.10.9 (#46) (62c8316)