All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
0.2.2 - 2025-12-07
- Fix unwrap during binary bruteforcing
0.2.1 - 2025-10-28
- Support for
.tar.xzcompressed artifacts in releases - Includes the following new tools:
- Some packages not being updated in CI due to
.toolchainlib.<rev>build metadata not getting stripped properly - Newer
asphaltreleases not working due to.tar.xzarchives, refer to previous change
- Deprecated
blinkpackage in favor of1axen/blink
0.2.0 - 2025-09-22
This release focuses on updating to newer verions of pesde and Lune, which incur breaking changes for all binaries. Future changes regarding
breaking toolchainlib releases will be versioned as +toolchainlib.<rev> versions, where <rev> denotes an ordinal number signifying the count
of the release.
Since the wrapper binary packages are versioned to correspond to their upstream counterparts, we cannot properly follow semver
and breaking versions of toolchainlib may have newer runtime requirements that can cause breakage. As a result, it is always a good practice to
commit your pesde.lock lockfiles in order to prevent an auto-update of a tool to a newer version without your knowledge. To migrate, update the
engines requirement for your project by updating pesde.toml as such and run pesde update after:
[engines]
lune = "^0.10.2"
pesde = "^0.7.0"It may also be necessary to update any scripts of your own that depend on Lune. Take a look at the Lune CHANGELOG for a list of their breaking changes with v0.10.0.
- New internal scripts to autogenerate badges table on README for convenience
- Contributing docs on README
- Support for overriding arguments passed to tools by specifying an
argsargument - CI workflow for automatically updating and publishing new versions of tools (#20)
- Support for Lune v0.10.x and the new Luau require-by-string semantics (#28)
- Special case of stripping out build metadata in the form of
toolchainlib.revfrom version in package manifest for convenience wrapper
- Updated dependencies
- Bumped minimum Lune and pesde requirements to
^v0.10.2and^0.7.0respectively - Update reference to
luau-lspon README toluau_lsppackage (#32)
0.1.15 - 2025-05-13
- Includes the following new tools:
- Add support for multi-arch binaries, currently only MacOS
- Respect the PESDE_HOME environmental variable
- Fix support for MacOS binaries
- Fix installations forcing interactive mode
0.1.14 - 2025-04-29
- Includes the following new tools:
- Locked Lune to 0.8.x versions only to prevent breakage with Lune 0.9.0
- Synced package READMEs for
asphalt
0.1.13 - 2025-04-21
- Added support for inferring non-interactivity status from process context (#8)
- Includes the following new tools:
- Synced package READMEs to upstream for
asphaltandstylua
0.1.12 - 2025-02-12
- Includes the following new tools:
- Fixed faulty calculation of lock expiration timestamp due to bad assumption about
os.timeunits - Write progress bar cleanup ANSI sequences to stderr instead to stdout to avoid managling command output
- Fix TOCTOU race condition by using an atomic operation for acquiring the installation lock
- Migrated internal codebase to pesde v0.6.0
- Updated dependencies:
dirsto v0.3.0pathfsto v0.3.0
0.1.11 - 2025-01-23
- Progress bars are now written to stderr to prevent issues with parsing managed tooling outputs
- It is now possible for dependents of toolchainlib to programatically disable interactive features (like progress bars) by setting
_G.interactivetofalse. - Includes the following new tools:
- Fixed attempt to clear progress bar even when not in interactive mode
0.1.10 - 2025-01-22
- Locking mechanism to prevent conflicting accesses of underlying tool binaries. The lock is an on-disk file which exists during the installation process, and is removed once it is complete. It is located at
~/.pesde/bin/.tool_storage/<tool_id>/<version>/LOCKand is a JSON file of the following structure:
- Fixed concurrent installations failing due to OS errors during resource access by using aforementioned locking mechanism
- Fixed faulty check for existence of tool installation directory
- Improved internal structuring for conditional progress bar rendering
0.1.9 - 2025-01-16
- Fixed a
TypeErrorin internal decompression function for ZIP - Fixed certain PE executables not being detected correctly due to incorrectly reading the DOS offset
0.1.8 - 2025-01-16
- Includes the following new tools:
- Use
luau-unzipto extract archives instead of using an external program
0.1.7 - 2024-12-28
- Includes the following new tools:
- Conditionally handle
ProgressBar:nextStageresult, fixing an error when being consumed as a library without the use of the__callmetamethod shorthand - Fix error when the
ghCLI is not installed by correctly handling it as aResult
0.1.6 - 2024-12-25
- Includes the following new tools:
- Propagate and consume
Resultreturned byProgressBar:nextStage - Fix error while trying to migrate old tool_storage dir when the new one is already present
0.1.5 - 2024-12-22
- Includes the following new tools:
- Make internal
ProgressBarutility returnResultinstead of erroring
0.1.4 - 2024-12-16
- Fix old tool_storage migration not correctly occuring automatically on first run
0.1.3 - 2024-12-16
- ✨ Colorful ✨ progress bar for initial installation process when being consumed from binary packages that use toolchainlib with the default
__callshorthand - Use
GITHUB_TOKENenvironment variable for getting a GitHub authorization token, or default to thegh auth tokencommand output if theghCLI is present - Make manifest accesses type-safe
- Download optimization by only downloading assets with formats we support
- Includes the following new tools:
- Improve
ResultandOptiontyping by not overriding metatables and instead using an extension pattern - Remove reliance on semver, now supporting non-semver tools as well
- Move tool_storage directory to
~/.pesde/bin/.tool_storageto prevent potential package name conflicts in the future - Update internal tooling updater script to fetch package READMEs from original repositories
- Fix some bugs with version matching with internal tooling updater script
0.1.2 - 2024-12-1
- Reorganize types for internal
Githubclass - Support custom request payload for internal
Githubclass - Includes the following new tools:
- Removed duplicate version defaulting code
- Fixed panic for invalid binaries within artifacts returning an empty
PlatformDescriptor
0.1.1 - 2024-11-30
- Updated tool_storage system to not tamper the base binary name, to prevent bad help menus in some tools (like selene), which change the executable mentioned in the help menu based on the name of the currently running path
- Supports tools which do not specify an executable bit in their published archives by manually changing the binary's mode on unix-like systems
- Includes the following new tools:
- Fixes a conditional fall-through where an invalid or corrupted executable would default to the Mach-O type, which was incorrect
0.1.0 - 2024-11-26
- Initial library release 🎉
- Includes the following new tools:
{ "resource": "/home/usr/.pesde/bin/.tool_storage/<tool_id>/<version>/<tool>", // The path to the resource being protected, i.e., the tool binary "expiration": 1737480284 // The timestamp until which the lock is considered valid, which is 60s from its creation }