0.47.0 (2026-09-01)
Features
- ctest: add compact output filter (c75522e)
- ls: cap listing with tee tail hint and standard dotfile semantics (aa40853)
- mvn: add rtk mvnd support for Maven Daemon (774465e)
- phpt: add PHP .phpt filter for php-src run-tests.php (-99%) (e8541d1)
Bug Fixes
- bom: degrade gracefully on unparseable Gemini settings, strip BOM on claude/gemini hook stdin and rtk json fallback (b6f354c)
- diff: keep +/- markers at column 0 in condense_unified_diff (cf6d99d)
- diff: measure savings against the classic diff, not a dump of both files (8495176)
- diff: remove misleading overflow indicator from condense_unified_diff (947467e)
- emit classic hunk headers in the diff fallback (1246ce3)
- filters: tighten overly broad spring-boot/liquibase/ssh matching (0de9610)
- git-diff: count one truncated line as singular (75dda6c)
- git-diff: decode quoted paths, and read the header kind before splitting (7409cb5)
- git-diff: emit hunk lines at column 0 so
^-anchors again (b166396) - git-diff: end hunks at their declared length, keep context adjacent (844d6fa)
- git-diff: pass word diffs through, and stop guessing at path pairs (e59276e)
- git-diff: reset hunk state on combined diffs, exempt leading context (5d4b549)
- git-diff: slice markers as bytes, and bound a combined hunk by every parent (eac9b99)
- git-diff: stop dropping hunk content that starts with
++or--(60ec79f) - grep: free -m for GNU --max-count instead of rtk --max (d9a5893)
- grep: stop -l and -t shadowing native grep flags (16228b7)
- grep: stop -l/-t shadowing native grep flags (4ea0555)
- hooks,json: hermetic gemini BOM test, restore serde diagnostics, honest init summary, zero-copy fallback (ed8b0eb)
- hooks: honor CLAUDE_CONFIG_DIR when loading permission rules (196780d)
- hooks: honour exclude_commands for head and tail (7dc503d)
- hooks: keep exclude_commands honoured under routable wrappers (2eed6de)
- hooks: match exclude_commands against the peeled command form (e533c40)
- hooks: strip the BOM on Mistral Vibe hook stdin too (ac3389a)
- init,utils: propagate Gemini settings parse errors, add from_json_str wrapper (dd867b2)
- json,deps: tolerate UTF-8 BOM at the remaining JSON parse sites (7e7be16)
- json,deps: tolerate UTF-8 BOM at the three remaining JSON parse sites (a39a872)
- ls: avoid underflow in verbose reduction stat (2f75c7a)
- ls: record dot noise dirs under -A and track real args (a7e7329)
- render a real diff instead of dumping both files for modified lines (e4b9705)
- tsc: count global diagnostics and keep the failure head (6232c37)
- tsc: handle pretty diagnostics (a93d63b)
- tsc: strip escapes before the blank filter and bound the failure dump (1906cb2)
- grep:
rtk grep --file-typeand its-tshort are removed. The option never reached the engine, so it was a silent no-op;-tnow flows through, which meansrtk rg -t rustfilters by type whilertk grep -t rustreturns grep's owninvalid option -- 't'.-land-munderrtk grepare likewise the native grep flags now rather than rtk's --max-len and --max.
Performance Improvements
- hook: avoid Pi package barrel import (322db4d)
Miscellaneous Chores
- release 0.47.0 (fde8b79)
Code Refactoring
- grep: trim comments and align the siblings of the flag change (eb3f814)