[3.0.0] - 2026-08-10
Features
- selfupdate: Add version selection via
patch,minor,major, or explicit semver argument - (...)tsdl selfupdatedefaults tominor(same as before).tsdl selfupdate patch/minor/majorfilters compatible releases.tsdl selfupdate 2.5.0installs an exact version with downgrade confirmation.
Performance
- Artifact (wasm, dylib, so) discovery is now exact except for custom
script
builds.
UI/UX
The display backend moved to ratatui. The information displayed are more
informative and more coherent.
Changed
- cache: Parser builds that track moving refs such as
HEADor branches now
notice when those refs move and rebuild the affected parsers. The parser cache
format changed for this major release and older cache files are not migrated. - Downloaded
tree-sittercli are now verified upon download (no crypto).
Bug Fixes
- lock: Use OS-level build locks to avoid concurrent lock acquisition races,
and replace--unlockwith an interactive SIGTERM takeover flow controlled by
--unlock-timeout. - shutdown: Handle
SIGTERM/SIGINTgracefully by terminating running build
command process groups before releasing the build lock. - install: Avoid replacing existing output files unless they are already the
same file, have identical contents, or--forceis used; replacements are now
installed through visible temporary hardlinks. --jobsis a strictly positive number now.tsdlnow fails on repos with nogrammar.js.tsdl config defaultandtsdl selfupdateno longer :- crash on malformed configs,
- write any logs unless
--logis explicitly set.
- Cycling through
--targetvalues{all,native,wasm}would not invalidate the
cache for artifacts built in the previous calls. This used to happen:tsdl build --target native # cache says native tsdl build --target wasm # cache says wasm tsdl build --target native # cache misses
Maintenance
- Bumped to rust 2024