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.34.4 - 2026-03-25
- Installer will install .NET runtime prerequisite
- Npm will bootstrap .NET runtime on install
- Added Chinese Simplified translation for Windows installer
- Bumped Scriban to 7.0.3
- Fixed unable to clean read-only cache files
- Fixed compatibility issue in placement with tooth package made with older version of lip(0.32.0 e.g.)
0.34.4-beta.2 - 2026-03-25
- Installer will install .NET runtime prerequisite
- Npm will bootstrap .NET runtime on install
- Bumped Scriban to 6.6.0
- Fixed unable to clean read-only cache files
- Fixed compatibility issue in placement with tooth package made with older version of lip(0.32.0 e.g.)
0.34.3 - 2026-03-24
- Add native npm distribution for
@futrime/lip, bundlinglipandlipdbinaries for all supported platforms in one package. - Add Windows Inno Setup installers for
win-x64andwin-arm64releases.
- Switch release binaries back to framework-dependent single-file builds with
--no-self-containedto keep npm package size manageable. - Publish release assets directly from the matrix build workflow, including portable archives, npm artifacts, Windows installers, and winget updates.
0.34.2 - 2026-03-15
- Added Windows installer(.msi)
0.34.1 - 2026-03-10
- Support
installanduninstalllifecycle script aliases intooth.json, including package variants and migrated legacy manifests.
0.34.0 - 2026-03-06
- Get available versions from one available source among Go proxy, lipr, and GitHub
- Publish builds with embedded debug info
- Update package explicitness correctly during install, uninstall, and update
0.33.4 - 2026-03-04
- Mitigate file corruption after failed downloads by using a temporary directory workflow
0.33.3 - 2026-03-03
- Fix script handling in package manifest
- Restrict package script execution to one script per stage
- Adapt to latest lipr changes
- Fix typo
0.33.2 - 2026-03-02
- Fix stdio competition between command runner, git runner and lip daemon
0.33.1 - 2026-02-27
- Adapt to latest lipr format
- Fix variant label support
- Fix downloading via GitHub proxies
- Fix irregular error printing for aggregate exceptions
- Fix
$refusage in schema docs
0.33.0 - 2026-02-21
- Support latest lipr index format with package metadata and version info in dict form
- Support getting versions from lipr
- Support latest lipr schema
- Add CLI for lipd
- Add
--versionoption to show version information - Support shorthand option for
--dry-runacross install, uninstall, and update commands - Add
--jsonforlip versionscommand - Support
--jsonoutput for config and list commands - Add
lip versionsand support package id inlip view - Publish to winget when releasing
- Update variant label format
- Rename schemas
- Rename source provider to source
- Log messages to stderr instead of stdout
- Use Microsoft.Extensions.DependencyInjection for type registration and resolution
- Better exception handling in CLI app
- Merge lip and lipd releases into one
- Update lipr schema to include stars and updated fields
- Documentation improvements
- Avoid duplicate ConsoleUserInteraction instance creation
- Return consistent error code in exception handling
lipclientlist()method should return string
0.33.0-beta.2 - 2026-02-13
- Add lip daemon
0.33.0-beta.1 - 2026-02-11
- Rewrite the whole project
0.32.0 - 2025-09-18
- Added --overwrite-files and UserInteraction when meet existing file @harry-xi
- Skip instead of throwing an exception when a file is duplicated @harry-xi
- Improved exception output @harry-xi
- Use system default proxy #282 @harry-xi
- Fixed fail to remove git repo from cache @harry-xi
0.31.0 - 2025-03-23
- Set second-pick default GitHub proxy to https://github.levimc.org
0.30.2 - 2025-03-21
- Self-contained installer
0.30.1 - 2025-03-19
- Installer will open browser to download .NET when it is not installed
0.30.0 - 2025-03-18
- Not self-contained builds
- Installer now installs not self-contained builds
0.29.0 - 2025-03-17
- Try Git cloning on Go module proxy failure
- Fixed cache manager not cloning repos from all GitHub proxies
- Fixed not applying GitHub proxies when listing remote versions with Git
- Fixed abnormal installation
0.28.3 - 2025-03-15
- Replaced List with IAsyncEnumerable in IFileSource.GetAllEntries
- Save content in memory for entries
- Suppress no await warning with Task.CompletedTask
- Fixed GitHub clone not via GitHub proxies
- Fixed missing +incompatible in CacheManager
- Fixed directory not delete when uninstall #218
0.28.2 - 2025-03-12
- Disabled CET to keep old Windows's compability
- Fixed an issue where packages with major version >= 2 were uninstalled when installing packages
0.28.1 - 2025-03-10
- Return 0 when no command specified
0.28.0 - 2025-03-09
- Windows installer for lip CLI
0.27.2 - 2025-03-09
- Add installer for Windows
0.27.1 - 2025-03-08
- Use goproxy.io as default go_module_proxies
- Fixed globbed platform when use lip migrate
- Removed useless platform property when manifest v2 doesn't have platforms property
- Fixed issue with +incompatible build metadata
0.27.0 - 2025-03-07
- Install latest versions when omitting versions
lip migratecommand to migrate tooth.json to the latest schema version
- If
files.placeexists both inside and outsideplatformsin manifest v2, thefiles.placein theplatformstakes precedence.
- Fail to process rooted file paths
0.26.2 - 2025-03-07
- Fixed wrong placements type caused by lip manifest v2 when files property is not in platforms property
0.26.1 - 2025-03-07
- Do not wait until scripts end
0.26.0 - 2025-03-06
- Show download speed
- Throw error on download failure
- Throw error on command failure
- Prefer latest dependency
- Ambiguous error messages when no variant matches
0.25.1 - 2025-03-05
- Error message for invalid package specifiers not clear enough
- Scripts not kept in migration
lip installwithout arguments not installing current directory
0.25.0 - 2025-03-05
- Multiple variant support
- Glob pattern support for files
- Glob pattern support for platform matching
- Multiple asset support
- Alternative asset source support
- Migration support for schema version 1 and 2 to 3
- Dependency resolution support
- Package pruning support
- Git support for asset source
- Rewrite everything with C# and .NET 9.0
- Update schema to version 3
- Rewrite lip core library as a C# class library
0.24.0 - 2024-10-01
specifiers.txtsupport
- Allow colons in tags
- Parse arguments with
urfave/cli
0.23.2 - 2024-08-17
- Partially resolved #157 by adding .tmp extension to incomplete downloads (#158)
0.23.1 - 2024-07-28
- Add colorlog detector (#146)
- Add a line break to the end of the output of
lip --version
0.23.0 - 2024-07-12
- Add version variable support for asset_url #134
0.22.0 - 2024-03-23
--no-colorflag to disable color output.- NSIS installer.
0.21.2 - 2024-02-21
- Some ambiguous error messages.
- Not prompting for confirmation to overwrite existing files when installing a tooth.
0.21.1 - 2024-02-17
- Untidy error messages.
- Failed to install any tooth without setting a proxy.
0.21.0 - 2024-02-17
- Proxy configuration support.
- Support more kinds of GitHub mirrors
- Support
NO_COLORenvironment variable to disable color output.
- Set
https://github.comas the default GitHub mirror.
- Panic when dependencies and prerequisites have malformed version strings.
0.20.1 - 2024-02-04
- Version string.
0.20.0 - 2024-02-03
- Support Go module URL as asset URL.
- Files downloaded from GitHub mirror are now cached in different paths.
sourcefield intooth.json.
0.19.0 - 2024-01-20
- Tons of debug logging.
- Show available versions without installing.
- Optimize error logging.
- Wildcard not parsing correctly.
- Wrong error output when "%" is used in messages.
- Wrong version
@0.0.0when stringify specifiers without version.
0.18.1 - 2024-01-12
- Platform-specific items in tooth.json.
- Go module path escaping.
0.18.0 - 2024-01-12
- Config support.
- GitHub mirror support.
- Use
github.com/sirupsen/logrusfor logging. - Use
github.com/blang/semver/v4for versioning. - Refactor most of the code.
- Remove
lip autoremovecommand. - Percentage progress bar.
- Some bugs.
0.17.0 - 2023-12-30
- Warning for deprecated tooth.json format versions.
info.sourcefield for indicating the source repo of a tooth.
- Check tooth repo validity with Go official module library.
- Failed to uninstall a tooth when some of its files are already removed.
0.16.1 - 2023-10-11
- Unable to specify which version to install.
0.16.0 - 2023-10-09
- Prerequisite support.
- Failing to parse files under root directory of a tooth.
0.15.2 - 2023-09-05
- Inconsistent tooth.json schema with lipIndex.
- Wrong help messages.
0.15.1 - 2023-09-01
- Wrong help message for
--jsonflag oflip showcommand. - Wrong regex for validating versions.
0.15.0 - 2023-06-23
- Tooth file preservation and removal.
- Optimize output information format.
- Change tooth.json format to version 2.
- Force to specify output path in
lip tooth packcommand. - Refactor all code and optimize performance.
lip execcommand.- Tooth file possession (use "preserve" and "remove" instead).
- Number-only progress bar.
- Registry support.
- Placed files display in
lip showcommand.
0.14.2 - 2023-04-24
- Remove misleading message when dependencies are satisfied.
- Packed tooth file not able to be installed.
0.14.1 - 2023-04-20
- Broken GOOS and GOARCH specifiers of placement.
0.14.0 - 2023-03-24
lip tooth packcommand to pack a tooth into a tooth file.- Questions when initializing a tooth.
- Not properly parsing placement sometimes.
- Not aborting when a tooth fails to install.
0.13.0 - 2023-03-05
- Aliases for subcommands.
- Tool should be registered in
tooth.jsonmanually now.
0.12.0 - 2023-02-27
- Dependency version validation when installing.
lip autoremovecommand to remove teeth not required by other teeth.
- Failing to run tools with arguments.
- Dependencies still being installed when the dependent is not going to be installed.
0.11.45141 - 2023-02-19
- Wrongly showing debug information when redirecting to local lip.
0.11.4514 - 2023-02-17
- Showing information about installed teeth in
lip listcommand.
0.11.0 - 2023-02-17
--availableflag forlip showcommand.--numeric-progressflag forlip installcommand.--no-dependenciesflag forlip installcommand.confirmationfield intooth.jsonto show messages and ask for confirmation before installing.- Check for invalid additional arguments.
- Structured information output.
- Support for multiple GOPROXYs.
--keep-possessionflag forlip uninstallcommand.- Automatic deletion of empty directories when uninstalling a tooth.
- Support for file possession.
- Remove wrongly displayed debug information.
- Failing to re-download when a broken tooth file exists in cache.
0.10.0 - 2023-02-12
- Verbose and quiet mode.
- JSON output support for
lip listandlip show.
0.9.0 - 2023-02-11
- HTTP Code reporting when failing to make a request.
lip list --upgradablecommand.- Topological sorting for dependencies.
- Progress bar for downloading tooth files.
- No notice when a tooth file is cached.
- Tooth paths in
dependenciesfield oftooth.jsonnot converting to lowercase. - Mistakes in help message of
lip cache purge.
0.8.3 - 2023-02-09
- Mistakes in path prefix extraction when there is only one file in the tooth.
0.8.2 - 2023-02-09
- Failing to input anything to post-install and pre-uninstall commands.
- Wrong installation order of dependencies.
- Registry not working in
lip show. - Unstable versions can be wrongly installed when no specific version is specified.
0.8.1 - 2023-02-07
- Failing to get information from registry with other index than index.json.
0.8.0 - 2023-02-06
- Registry support. The default registry is https://registry.litebds.com.
- Failing to uninstall teeth with uppercase letters in provided tooth path.
0.7.1 - 2023-02-05
- Failing to hot update or remove lip in local directory.
0.7.0 - 2023-02-01
- Support for installing anything to any path.
- Prompt for confirmation when installing to a path that is not in working directory.
0.6.0 - 2023-01-31
- Support for on-demand installation depending on OS and platform.
- Removal for downloaded tooth files that do not pass the validation.
0.5.1 - 2023-01-30
- Failing to install any tool.
0.5.0 - 2023-01-30
- Available version list in
lip showcommand. - Redirection to local lip executable when running
lip. - Support for pre-uninstall scripts.
- Support for hot update of lip.
- Support for executing tools in
.lip/toolsdirectory.
0.4.0 - 2023-01-26
- Post-install script support.
- Tooth path validation.
- Flexible tooth.json parsing.
0.3.4 - 2023-01-25
- Bumped github.com/fatih/color from 1.14.0 to 1.14.1.
- Misleading error hints.
- Failing to fetch tooth with major version v0 or v1.
- Failing to match dependencies.
- Failing to fetch tooth when uppercase letters exist in tooth path.
0.3.3 - 2023-01-24
- Default to earliest version when no version is specified in tooth.json.
- Panic when tooth.json is invalid.
0.3.2 - 2023-01-23
- "Add to PATH" option in setup utility.
- Mac OS, Linux and OpenBSD support.
- Arm64 support.
0.3.1 - 2023-01-21
- Setup utility to install lip.
0.3.0 - 2023-01-20
- Possession keeping support when force-reinstalling or upgrading.
--force-reinstallflag and--upgradeflag support.
0.2.1 - 2023-01-18
- Failing to fetch tooth whose version has suffix
+incompatible. - Failing to parse wildcards.
0.2.0 - 2023-01-18
- Possession field in tooth.json to specify directory to remove when uninstalling a tooth.
- Change extension name of tooth files to .tth
- Fix failing to fetch tooth when the repository does not contain go.mod file.
- Fix failing to parse tooth file when the tooth is downloaded via GOPROXY.
- Fix failing to parse tooth when tooth.json is the only file in the tooth.
0.1.0 - 2023-01-17
- Basic functions: cache, install, list, show, tooth init, and uninstall.