Skip to content

Releases: tweag/topiary

v0.7.0 - Heavenly Hemlock - 2025-10-29

29 Oct 18:02
4206972

Choose a tag to compare

Release Notes

Full list of changes

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 ~/.config on non-linux systems
  • #1080 Allow formatting existing tree-sitter trees, thanks to @shadr
  • #1094 Added topiary check-grammar subcommand
  • #1105 Add new @keep_whitespace capture for leaf node, thanks to @blindFS

Changed

Fixed

  • #1085 CSS formatting fixes
  • #1092 Log early returns during formatting
  • #1113 Update dist to 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 | sh

Install 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

27 May 15:21
c0839ef

Choose a tag to compare

Release Notes

Full list of changes

Added

Changed

  • #859 Break up integration tests per language, thanks to @mkatychev
  • #871 Switch to mold linker for CI tests, thanks to @mkatychev
  • #893 Use gix lib instead of system git
  • #896 Use official grammar repo for OpenSCAD, thanks to @mkatychev
  • #933 Bump the tree-sitter dependency 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 | sh

Download 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

03 Feb 18:50
5435a6b

Choose a tag to compare

Release Notes

Full list of changes

Added

  • #747 Added support for specifying paths to prebuilt grammars in Topiary's configuration
  • #785 Added the coverage command, 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-cli configuration to workspace Cargo.toml for spellchecking, thanks to @mkatychev
  • #838 Added @upper_case and @lower_case captures, 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-sitter dependency to 0.24, thanks to @ZedThree
  • #801 Improved documentation of the visualise subcommand
  • #811 The config subcommand now outputs a Nickel file instead of some inner representation
  • #830 Use tree-sitter-loader to 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 | sh

Download 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

24 Oct 12:58
37d6294

Choose a tag to compare

Release Notes

Full list of changes

Added

  • #705 Added support for Nickel 1.7 extended pattern formatting
  • #737 Added the prefetch command, 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_name predicate, 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 | sh

Download 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 | sh

Download 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

17 May 15:21

Choose a tag to compare

Release Notes

Full list of changes

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 | sh

Download 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

02 Oct 14:06

Choose a tag to compare

Release Notes

Full list of changes

Added

  • #538 Using cargo-dist to release Topiary binaries.
  • #528 #609 Created a topiary-queries crate 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_scope and @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 | sh

Install prebuilt binaries via powershell script

irm https://github.com/tweag/topiary/releases/download/v0.3.0/topiary-cli-installer.ps1 | iex

Download 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

20 Jun 14:31
ee9dc88

Choose a tag to compare

Full list of changes

Added

  • #513 Added the -t, --tolerate-parsing-errors flags to Topiary, tolerate_parsing_errors to the Format
    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 the README.md.

Changed

  • #523 Skips rebuilding the tree-
    sitter Query when performing the idempotence check. This improves performance
    when not skipping the idempotence check by about 35% for OCaml formatting.

Removed

  • #508 Simplified language
    detection by treating ocaml and ocaml_interface as two distinct languages.
    This ensures we only have one grammar per language. This
    removed the -l ocaml_implementation flag from Topiary and the
    SupportedLanguage::OcamlImplementation from 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

12 Jun 13:45
442b441

Choose a tag to compare

Full list of changes

Added

  • #498 Updated the playground to include a nicer editor.
  • #487 Added a flag to format function 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_operator named node.

Fixed

  • #493 Fixed #492 by only trimming newlines in prettyprinting.
  • #491 Fixed #481, a SIGSEGV in exhaustivity testing.

v0.2.1 - Cyclic Cypress - 2023-05-23

23 May 10:02
4d96605

Choose a tag to compare

Full list of changes

Fixed

  • Correctly bumped version number in Cargo.toml.

v0.2.0 - Cyclic Cypress - 2023-05-22

22 May 13:39
1aabc72

Choose a tag to compare

Full list of changes

Added

  • Topiary website, web-based playground and logos.
  • Full Nickel formatting support.
  • Improved OCaml formatting support.
  • @append_antispace and @prepend_antispace formatting 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.