This release completely restructures the internals and adds two features: declarative package management and installing directly from URLs.
Declarative Package Management
You can now define your packages in a TOML file and let Soar handle the rest.
Create ~/.config/soar/packages.toml:
[packages]
curl = "*" # latest version
jq = "1.7.1" # pinned to specific version
neovim = { pkg_id = "neovim-appimage", repo = "bincache" }Then run:
soar apply # install/update to match the file
soar apply --prune # also remove packages not in the file
soar apply --dry-run # see what would changeDefine once, apply anywhere.
You can get fancier with it too: pin versions, specify repositories, configure portable directories, exclude files. Run soar defpackages to generate an annotated template.
Install from URLs
No more waiting for packages to land in a repository:
soar install https://github.com/user/repo/releases/download/v1.0/tool-linux-amd64Soar figures out the package name and type from the URL. If it gets it wrong, override with --name, --pkg-type, etc.
Under the Hood
The codebase is now split into independent crates:
soar-dl— downloads with resume supportsoar-db— database layersoar-config— configuration parsingsoar-registry— package metadatasoar-package— format handling (AppImage, archives, etc.)soar-utils— shared utilities
This doesn't change anything for users, but it makes the code easier to work on. Each crate is versioned independently.
Smaller Things
--no-progressflag to suppress progress bars (useful for scripts/CI)- Fixed a bug where interrupted downloads wouldn't resume properly
- Package listing is faster now
- Better debug logging throughout
⛰️ Features
- (crate) Init soar-config crate (#108) - (135af26)
- (install) Allow remote package install - (e060033)
- (packages) Add declarative installation - (1e95aca)
- (progress) Allow disabling progress bar - (29e04ff)
🐛 Bug Fixes
- (install) Handle resume on package install - (f92350f)
- (update) Resolve random package install on update - (eaa0058)
🚜 Refactor
- (integration) Integrate soar with modular crates (#123) - (2d340e5)
- (log) Add more debug logs - (96f5ac9)
- (log) Add debug logs - (cdbf808)
- (package) Improve install/remove user experience - (df8ad1c)
⚡ Performance
- (list) Use minimal struct for listing packages - (71570c7)