Skip to content

Releases: bglgwyng/zat

v0.5.3

06 Apr 12:15
c3d58c6

Choose a tag to compare

What's Changed

  • Exit code 1 is now returned for unsupported file types

v0.5.2

30 Mar 04:12
1633c25

Choose a tag to compare

What's Changed

  • Show line ranges for multi-line nodes — Outline now displays L26-L42 instead of L26 for constructs like classes, functions, and modules, showing the full extent of each symbol.
  • Ruby: show closing end — Class and module outlines now include the closing end keyword.
  • Test improvements — Added pretty_assertions for readable diffs and assertions for unique @name/@show_if_ref captures per pattern.

Full Changelog: v0.5.1...v0.5.2

v0.5.1

29 Mar 09:21
31ce23d

Choose a tag to compare

What's New

  • Multi-line function signatures preserved: return types (e.g. -> io::Result<()>) are no longer cut off from outlines
  • parse() split from extract_outline(): callers now own the tree, enabling downstream access to tree-sitter nodes

v0.5.0

29 Mar 08:17
9930744

Choose a tag to compare

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 with fd, xargs, etc.
  • Directory support removedzat now 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

24 Mar 13:21
eea6b17

Choose a tag to compare

Full Changelog: v0.4.5...v0.4.6

v0.4.5

24 Mar 07:10
551740d

Choose a tag to compare

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 only def 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) @hide on function_definition and class_definition
  • Ruby: (body_statement) @hide and "end" @hide on method and singleton_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

21 Mar 08:51

Choose a tag to compare

  • Show pub struct 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

20 Mar 14:36

Choose a tag to compare

  • Add Homebrew install instructions to README

v0.4.2

20 Mar 14:29

Choose a tag to compare

  • Hide class field initializers in TypeScript outline
  • Show object type members in TypeScript type aliases

v0.4.1

20 Mar 14:23

Choose a tag to compare

  • Improve directory view: use .: header for file listing section