v1.9.29
abx-pkg v1.9.29
✨ Highlights
- Added
abx-pkg run, a direct exec path that resolves a binary through the configured providers and then hands off execution cleanly. - Added
abx, a thinabx-pkg --install run ...alias that behaves like a cross-providernpx/uvx/pipx run. - Unified provider install-root defaults around
ABX_PKG_LIB_DIR, provider-specificABX_PKG_<NAME>_ROOToverrides, and a platform-aware default lib dir. - Added a generated GitHub Pages landing page with a docs build pipeline and a much more structured README.
- Made provider behavior more explicit by removing silent
uv/pnpmauto-switching fromPipProviderandNpmProvider.
🧭 Quick Examples
abx yt-dlp --help
abx --binproviders=env,uv,pip,brew yt-dlp --version
abx-pkg --binproviders=pip --install run black --versionexport ABX_PKG_LIB_DIR=~/.config/abx/lib
export ABX_PKG_PIP_ROOT=~/.cache/abx/pip
abx-pkg --binproviders=pip,uv install black
abx-pkg --postinstall-scripts=False --min-release-age=7 install yt-dlp🛠 What Changed
- Exposed the full
Binary/BinProviderconfiguration surface on the CLI, including install roots, timeouts, release-age controls, postinstall-script policy, and overrides. - Hardened the new
run/abxcommand path for macOS,--handling, bare boolean flags, and child-arg forwarding. - Switched the centralized default lib dir to
platformdirs, while keeping explicit kwargs and provider-specific env vars highest priority. - Landed a GitHub Pages deployment workflow, docs renderer, and generated landing page for the provider matrix and API surface.
- Propagated security flags to Playwright bootstrap installs and tightened several provider-specific install-root edge cases.
- Expanded test coverage heavily, especially around the CLI, install-root precedence, and real subprocess execution.
⚠️ Behavioral Changes
PipProviderno longer silently falls through touv; chooseUvProviderexplicitly when you wantuvsemantics.NpmProviderno longer silently falls through topnpm; choosePnpmProviderexplicitly when you wantpnpmsemantics.- Providers with isolated install roots now follow one clear precedence order: explicit kwargs >
ABX_PKG_<NAME>_ROOT>ABX_PKG_LIB_DIR/<name>> provider default.
🧪 Verification
- GitHub Actions passed on
mainfor the release line before the version bump. - Local checks passed with
uv run pyrightand focuseduv run pytestslices covering the new CLI/install-root work.
Thanks to everyone pushing on the provider edge cases and CLI ergonomics. 🚀