Releases: tweag/topiary
Releases · tweag/topiary
v0.7.0 - Heavenly Hemlock - 2025-10-29
Release Notes
Added
- #921 man pages for the Topiary CLI
 - #1015 Add support for include expressions to Nickel formatting
 - #1049 Add support for rich grammar parsing errors using miette
 - #1069 split CI nix dependent tests into separate jobs
 - #1070 Implemented parallelism for query coverage
 - #1072 Add source spans to query coverage results
 - #1077 Add handling for 
~/.configon non-linux systems - #1080 Allow formatting existing tree-sitter trees, thanks to @shadr
 - #1094 Added 
topiary check-grammarsubcommand - #1105 Add new 
@keep_whitespacecapture for leaf node, thanks to @blindFS 
Changed
- #1031 Removed the Bash rewrite rule for converting POSIX 
[to Bash's[[ - #1095 Update to Rust 2024 edition
 - #1111 Updated WIT grammar repository to track https://github.com/bytecodealliance/tree-sitter-wit
 
Fixed
- #1085 CSS formatting fixes
 - #1092 Log early returns during formatting
 - #1113 Update 
distto 0.30 - #1117 Handle inline comments and trailing commas in WIT
 
Install topiary-cli 0.7.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/tweag/topiary/releases/download/v0.7.0/topiary-cli-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/tweag/topiary/releases/download/v0.7.0/topiary-cli-installer.ps1 | iex"Download topiary-cli 0.7.0
| File | Platform | Checksum | 
|---|---|---|
| topiary-cli-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum | 
| topiary-cli-x86_64-apple-darwin.tar.xz | Intel macOS | checksum | 
| topiary-cli-x86_64-pc-windows-msvc.zip | x64 Windows | checksum | 
| topiary-cli-aarch64-unknown-linux-gnu.tar.xz | ARM64 Linux | checksum | 
| topiary-cli-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum | 
v0.6.1 - Gilded Ginkgo - 2025-05-27
Release Notes
Added
- #862 Added support for the Simple Domain Modeling Language (SDML), thanks to @johnstonskj
 - #884 The Topiary Book
 - #918 Language prefetching utilities for Nix
 - #933 Added support for WIT, thanks to @mkatychev
 - #987 Support for prefetching a single language, thanks to @ErinvanderVeen
 
Changed
- #859 Break up integration tests per language, thanks to @mkatychev
 - #871 Switch to 
moldlinker for CI tests, thanks to @mkatychev - #893 Use 
gixlib instead of systemgit - #896 Use official grammar repo for OpenSCAD, thanks to @mkatychev
 - #933 Bump the 
tree-sitterdependency to 0.25, thanks to @mkatychev 
Fixed
- #867 Enable coverage check and add code samples for OpenSCAD
 - #867 Fixed #969: unhandled trailing comment in multiline list for OpenSCAD, thanks to @mkatychev
 - #869 Disable parallel grammar building on Windows
 - #908 #907 #939 #955 #964 #967 #975 Various OCaml issues and improvements
 - #953 Coverage output when there are zero queries
 - #974 No longer remove trailing spaces after pretty-printing
 - #992 Fixed openscad-LSP#48: unhandled newline separation for transform chains, thanks to @mkatychev
 - #999 Fixed #997: erroneous spacing of block comments in OpenSCAD
 
Install topiary-cli 0.6.1
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/tweag/topiary/releases/download/v0.6.1/topiary-cli-installer.sh | shDownload topiary-cli 0.6.1
| File | Platform | Checksum | 
|---|---|---|
| topiary-cli-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum | 
| topiary-cli-x86_64-apple-darwin.tar.xz | Intel macOS | checksum | 
| topiary-cli-x86_64-pc-windows-msvc.zip | x64 Windows | checksum | 
| topiary-cli-aarch64-unknown-linux-gnu.tar.xz | ARM64 Linux | checksum | 
| topiary-cli-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum | 
v0.6.0 - Gilded Ginkgo - 2025-01-30
Release Notes
Added
- #747 Added support for specifying paths to prebuilt grammars in Topiary's configuration
 - #785 Added the 
coveragecommand, that checks how much of the query file is used by the input - #786 Re-introduce tests to check that all of the language queries are useful
 - #832 Added 
typos-cliconfiguration to workspaceCargo.tomlfor spellchecking, thanks to @mkatychev - #838 Added 
@upper_caseand@lower_casecaptures, thanks to @ctdunc - #845 Added support for OpenSCAD, thanks to @mkatychev
 - #851 Added support for following symlinks when specifying input files for formatting
 
Changed
- #780 Measuring scopes are now independent from captures order
 - #790 No longer merge config files by default, use priority instead
 - #794 Bump the 
tree-sitterdependency to 0.24, thanks to @ZedThree - #801 Improved documentation of the 
visualisesubcommand - #811 The 
configsubcommand now outputs a Nickel file instead of some inner representation - #830 Use 
tree-sitter-loaderto build grammars, rather than rolling our own 
Fixed
- #779 Load relevant grammars before CLI tests
 - #799 Line break after table-less pairs in TOML
 - #813 In-place writing on Windows (also introduced a minimal Windows CI)
 - #822 Various Bash fixes and improvements
 - #826 Various Tree-sitter query fixes, thanks to @mkatychev
 - #853 Small fixes to CLI logging and IO
 
topiary-cli 0.6.0
Install topiary-cli 0.6.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/tweag/topiary/releases/download/v0.6.0/topiary-cli-installer.sh | shDownload topiary-cli 0.6.0
| File | Platform | Checksum | 
|---|---|---|
| topiary-cli-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum | 
| topiary-cli-x86_64-apple-darwin.tar.xz | Intel macOS | checksum | 
| topiary-cli-x86_64-pc-windows-msvc.zip | x64 Windows | checksum | 
| topiary-cli-aarch64-unknown-linux-gnu.tar.xz | ARM64 Linux | checksum | 
| topiary-cli-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum | 
v0.5.1 - Fragrant Frangipani - 2024-10-22
Release Notes
Added
- #705 Added support for Nickel 1.7 extended pattern formatting
 - #737 Added the 
prefetchcommand, that prefetches and caches all grammars in the current configuration - #755 Introduce measuring scopes, which can be used in conjunction with regular scopes to add expressivity to the formatting queries.
 - #760 Introduce optional 
query_namepredicate, to help with query logging and debugging. 
Fixed
- #720 #722 #723 #724 #735 #738 #739 #745 #755 #759 #764 Various OCaml improvements
 - #762 Various Rust improvements
 - #744 #768 Nickel: fix the formatting of annotated multiline let-bindings
 - #763 Various Bash fixes and improvements
 - #761 No longer use error code 1 for unspecified errors
 - #770 Fallback to compile-time included query files when formatting a file
 
Changed
- #704 Refactors our postprocessing code to be more versatile.
 - #711 Feature gate all grammars, with supported and contributed languages built by default.
 - #716 Dynamicly fetch, compile, and load language grammars. Topiary now no longer ships with statically linked grammars.
 - #732 Change how function application and parenthesized expressions are treated in Nickel to reduce the overall noise and indentation
 - #736 Updates our Nickel grammar, and adds support for let blocks.
 - #769 Move the web playground to a separate branch
 - #773 Change the status of Bash from "experimental" to "supported"
 
topiary-cli 0.5.1
Install topiary-cli 0.5.1
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/tweag/topiary/releases/download/v0.5.1/topiary-cli-installer.sh | shDownload topiary-cli 0.5.1
| File | Platform | Checksum | 
|---|---|---|
| topiary-cli-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum | 
| topiary-cli-x86_64-apple-darwin.tar.xz | Intel macOS | checksum | 
| topiary-cli-x86_64-pc-windows-msvc.zip | x64 Windows | checksum | 
| topiary-cli-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum | 
client-app 0.5.1
Install client-app 0.5.1
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/tweag/topiary/releases/download/v0.5.1/client-app-installer.sh | shDownload client-app 0.5.1
| File | Platform | Checksum | 
|---|---|---|
| client-app-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum | 
| client-app-x86_64-apple-darwin.tar.xz | Intel macOS | checksum | 
| client-app-x86_64-pc-windows-msvc.zip | x64 Windows | checksum | 
| client-app-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum | 
v0.4.0 - Exquisite Elm - 2024-05-15
Release Notes
Added
- #589 Added syntax highlighting to the playground (excluding Nickel)
 - #686 Added support for Nickel pattern formatting
 - #697 Setting the log level to INFO now outputs the pattern locations in a (row, column) way.
 - #699 Added support for CSS, thanks to @lavigneer
 
Fixed
- #626 #627 #628 #626 Various OCaml improvements
 - #673 Various TOML fixes
 - #678 Ensures the client example project builds, and is tested in CI
 - #677 Ensures our playground builds consistently in CI
 - #682 Removes prepended linebreaks from equal signs in Nickel annotations
 - #692 Improves our installation instructions, thanks to @Jasha10
 
Changed
- #664 Ensures source positions in the logs are consistent thanks to @evertedsphere
 - #668 Updates our Nickel grammar
 - #672 Completely refactors our crate layout, preparing for a release on crates.io
 
topiary-cli 0.4.0
Install topiary-cli 0.4.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/tweag/topiary/releases/download/v0.4.0/topiary-cli-installer.sh | shDownload topiary-cli 0.4.0
| File | Platform | Checksum | 
|---|---|---|
| topiary-cli-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum | 
| topiary-cli-x86_64-apple-darwin.tar.xz | Intel macOS | checksum | 
| topiary-cli-x86_64-pc-windows-msvc.zip | x64 Windows | checksum | 
| topiary-cli-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum | 
v0.3.0 - Dreamy Dracaena - 2023-09-22
Release Notes
Added
- #538 Using 
cargo-distto release Topiary binaries. - #528 #609 Created a 
topiary-queriescrate that exports the builtin query files. - #526 Multi-line comments can be indented properly using the new predicate @multi_line_indent_all.
 - #533 Topiary can now process multiple files with one call.
 - #553 In Nickel, indent when a new infix_expr chain starts.
 - #557 Topiary now falls back to the buildin queries when no other query files could be located.
 - #573 Added OCamllex support (without injections).
 - #576 Added append/prepend versions of scope captures.
 
Changed
- #535 Improved error message when idempotency fails due to invalid output in the first pass.
 - #576 Allows prepending/appending 
@begin_scopeand@end_scope - #583 Modernisation of the command line interface (see the CLI Migration Guide, for details)
 - #535 Change the error message for an idempotency error to be more descriptive.
 - #536 #537 #578 #626 #627 #628 Various OCaml improvements.
 - #623 #624 #625 Various Toml improvements thanks @pjjw.
 
Fixed
- #533 Bump tree-sitter-ocaml version, which allowed reintroduction of some removed queries.
 - #550 Fixed handling of antispace in post-processing.
 - #552 Fixed Nickel tag removal.
 - #554 #555 Fixed Nickel idempotency issue related to annotations.
 - #565 Fixed an issue where Topiary would remove whitespace between predicate parameters in query files.
 
Install topiary-cli 0.3.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/tweag/topiary/releases/download/v0.3.0/topiary-cli-installer.sh | shInstall prebuilt binaries via powershell script
irm https://github.com/tweag/topiary/releases/download/v0.3.0/topiary-cli-installer.ps1 | iexDownload topiary-cli 0.3.0
| target | kind | download | 
|---|---|---|
| aarch64-apple-darwin | tarball | topiary-cli-aarch64-apple-darwin.tar.xz | 
| x86_64-apple-darwin | tarball | topiary-cli-x86_64-apple-darwin.tar.xz | 
| x86_64-pc-windows-msvc | tarball | topiary-cli-x86_64-pc-windows-msvc.zip | 
| x86_64-unknown-linux-gnu | tarball | topiary-cli-x86_64-unknown-linux-gnu.tar.xz | 
v0.2.3 - Cyclic Cypress - 2023-06-20
Added
- #513 Added the 
-t, --tolerate-parsing-errorsflags to Topiary,tolerate_parsing_errorsto theFormat
operation of the library, and a "Tolerate parsing errors" checkmark to the
playground. These options make Topiary ignore errors in the parsed file, and
attempt to format it. - #506 Allows the users to
configure Topiary through a user-defined configuration file. More information
can be found in theREADME.md. 
Changed
- #523 Skips rebuilding the tree-
sitterQuerywhen performing the idempotence check. This improves performance
when not skipping the idempotence check by about35%for OCaml formatting. 
Removed
- #508 Simplified language
detection by treatingocamlandocaml_interfaceas two distinct languages.
This ensures we only have one grammar per language. This
removed the-l ocaml_implementationflag from Topiary and the
SupportedLanguage::OcamlImplementationfrom the library. 
Fixed
- #522 Reverted the bump to the
OCaml grammar and queries. This bump (for as of yet unknown reasons) had a
catastrophic impact on Topiary's performance. 
v0.2.2 - Cyclic Cypress - 2023-06-12
Added
- #498 Updated the playground to include a nicer editor.
 - #487 Added a flag to 
formatfunction that allows skipping the idempotency check. - #486 Added the processing time to the online playground.
 - #484 Enabled the playground to perform on-the-fly formatting.
 - #480 Shows which languages are marked as experimental in the playground.
 
Changed
- #490 Bumped the Nickel grammar.
 - #494 Bumped the OCaml grammar, and fixed for the renamed 
infix_operatornamed node. 
Fixed
v0.2.1 - Cyclic Cypress - 2023-05-23
v0.2.0 - Cyclic Cypress - 2023-05-22
Added
- Topiary website, web-based playground and logos.
 - Full Nickel formatting support.
 - Improved OCaml formatting support.
 @append_antispaceand@prepend_antispaceformatting capture names.- WASM build target, for the web-based playground.
 - Arbitrary whitespace indentation support.
 - Exhaustive query checking in tests.
 - Maintain a CHANGELOG and a documented release process.
 
Changed
- Move to a build configuration file, rather than a mixture of hardcoding and parsing query predicates at runtime.
 - Conditional predicates, in the query language, to reduce the number of formatting capture names.
 - Higher fidelity exit codes.
 - Idempotency check in terminal-based playground.
 - Reduced verbosity of failed integration test output.
 - Various improvements to the test suite.
 - Idiomatic improvements to the Rust codebase.
 - Restructured repository into a Cargo workspace.
 
Fixed
- OCaml idempotency issues.
 - Idempotency checking in integration tests.
 - Don't process queries that match below leaf nodes.
 - Skip over zero-byte matched nodes.