Releases: bglgwyng/zat
v0.5.3
v0.5.2
What's Changed
- Show line ranges for multi-line nodes — Outline now displays
L26-L42instead ofL26for constructs like classes, functions, and modules, showing the full extent of each symbol. - Ruby: show closing
end— Class and module outlines now include the closingendkeyword. - Test improvements — Added
pretty_assertionsfor readable diffs and assertions for unique@name/@show_if_refcaptures per pattern.
Full Changelog: v0.5.1...v0.5.2
v0.5.1
v0.5.0
What's New
- Markdown support: show heading structure (14th supported language)
- Import/include statements: now shown in outlines for JavaScript, TypeScript, Python, Java, C, C++, C#, Ruby, Rust, and Go
Breaking Changes
- Unknown file types now exit with code 1 instead of falling back to
cat -n— composable withfd,xargs, etc. - Directory support removed —
zatnow only accepts files, keeping it a single-purpose tool that composes well with other Unix tools
Fixes
- Fix nested class outline when nodes share the same range
- Fix various output artifacts (trailing whitespace, semicolons, indentation)
- Snapshot test suite for all supported languages
v0.4.6
Full Changelog: v0.4.5...v0.4.6
v0.4.5
What's Changed
Show full text for multi-line constructs
Previously, outline nodes were displayed using only their first line, which caused multi-line constructs to be truncated:
- Re-exports like
export { A, B } from '...'showed only{ - Multi-line function signatures like
def hello(\n name,\n age\n)showed onlydef hello(
The outline engine now stores the full node text and removes @hide/@strip regions by byte range, instead of manipulating the first line with string matching. This is both simpler and correct for multi-line nodes.
Explicit body hiding in Python and Ruby
Python and Ruby queries previously relied on the first-line-only behavior to implicitly hide function/class bodies. They now use explicit @hide captures on body nodes, making the intent clear:
- Python:
body: (block) @hideonfunction_definitionandclass_definition - Ruby:
(body_statement) @hideand"end" @hideonmethodandsingleton_method
Closing delimiters removed
Block nodes (classes, functions, structs, etc.) no longer show a trailing } / end in the outline. The line range comment (e.g. // L1-L10) already indicates scope.
Full Changelog: v0.4.4...v0.4.5
v0.4.4
- Show
pubstruct fields in Rust outline - Refactor: extract outline engine to
src/outline.rs - README: add cargo install instructions, pre-built binary download link, update directory outline example
v0.4.3
- Add Homebrew install instructions to README
v0.4.2
- Hide class field initializers in TypeScript outline
- Show object type members in TypeScript type aliases
v0.4.1
- Improve directory view: use
.:header for file listing section