Changelog
0.4.2
14 July 2026
- Every failure now exits 2 with a one line message on stderr instead of a
stack trace. Malformed JSON, YAML and XML are all covered.
- A closed pipe is no longer reported as an error, so
treesift ... | head exits cleanly.
- Documents that are empty or contain only whitespace are skipped rather than
treated as a parse failure. This mostly matters when globbing a directory.
0.4.1
28 June 2026
- Format sniffing now trusts the file extension before inspecting the content,
so a
.json file that opens with a blank line is no longer read
as YAML.
--sort-keys was ignored in compact mode.
0.4.0
9 June 2026
- XML input, mapped so that attributes become keys and repeated elements become
lists. Mixed content is reachable as
#text.
--exit-code for branching on absence without inspecting output.
- Negative list indices.
0.3.1
21 May 2026
- Quoted keys, so that
['odd.key'] selects a key containing a dot.
- Multi document YAML separated by
--- is read in full instead of
stopping at the first document.
0.3.0
4 May 2026
- A key step applied to a list is now distributed over its elements, so
users.name means what people kept expecting it to mean.
- Selector syntax is considered stable from this release onwards.
0.2.0
12 April 2026
- YAML input via PyYAML, kept optional so that JSON only use needs no
dependencies.
--raw and --compact output modes.
0.1.0
23 March 2026
- First release. JSON input, dotted selectors, list indexing.