feat(providers): use vx-org/mirrors as stable download source for all providers#858
Open
loonghao wants to merge 1565 commits into
Open
feat(providers): use vx-org/mirrors as stable download source for all providers#858loonghao wants to merge 1565 commits into
loonghao wants to merge 1565 commits into
Conversation
The vx-star-discover-providers binary is a build-time helper for provider discovery, not a user-facing tool. Without [package.metadata.dist] dist = false, cargo-dist treated it as a distributable app and published ~300KB archives for every target platform in each release. This is identical to how vx-msbuild-bridge is already excluded.
…proper error handling - Replace to_str().unwrap() with ok_or_else() in package_runtime.rs (3 locations) to prevent panics on non-UTF-8 paths (e.g., Chinese characters on Windows) - Replace eprintln! with tracing::warn! in vx-metrics (init.rs, visualize.rs) - Replace eprintln! with tracing::error! in vx-bridge (runner.rs, config.rs) - Add tracing dependency to vx-bridge for structured logging
The previous skip guard on release-please.yml prevented the entire job
from running on release commits ('chore: release vX.Y.Z'). This blocked
release-please from detecting merged release PRs and creating tags,
breaking the v0.8.11 release pipeline.
However, removing the guard entirely would re-introduce duplicate
release PRs (issue #713).
Solution: Split into two mutually exclusive jobs:
1. 'release' job (runs on release commits): Creates tag + GitHub Release
using skip-github-pull-request: true to prevent duplicate PRs.
2. 'update-pr' job (runs on normal commits): Creates/updates release PRs,
skipped on release commits to prevent duplicates.
Fixes the v0.8.11 release pipeline failure while preserving the #713 fix.
…osystem Adds 11 new complex init detection tests and 17 E2E lock tests covering real-world scenarios.
…t/timeout) Python provider fetches versions from GitHub API (python-build-standalone), which is subject to rate limiting (403) and timeouts (504) in CI. Tests now detect these transient failures and skip gracefully instead of hard-failing.
The CI workflow was not passing secrets.GITHUB_TOKEN to test steps (test-targeted, test-full, provider-static, coverage), causing GitHub API requests from E2E tests to hit the unauthenticated 60 req/hr rate limit instead of 5000 req/hr. This was the root cause of Python provider fetch_versions failures (403 Forbidden / 504 Gateway Timeout) seen in python-related E2E lock tests.
When GitHub API is unavailable (rate limit, timeout, network issues), Python provider falls back to hardcoded CPython 3.8-3.13 versions with build tags. Well-known versions are also merged with API results to fill gaps for older versions.
Python install failed with 'No installation strategy' because download_url depends on ctx.version_date from version cache, but on first install/cache expiry the cache is empty. Fix: auto-trigger fetch_versions to populate cache on miss. Also: E2E tests now treat this error as regression, added empty version_date test, clarified Python 3.7 not in python-build-standalone.
lookup_version_date used key 'python' but execute_fetch_versions wrote to 'python/python', causing permanent cache miss. Added minor series fallback, updated wellknown versions, 15 new unit tests.
When rust-toolchain.toml specifies a rustc version (e.g. 1.93.1), resolve_version now falls back to latest rustup version instead of failing with 'No version found'.
…de, and version fixes (#732) - Fix version inconsistency: v0.8.9 → v0.8.15 across AGENTS.md, README.md, README_zh.md - Add Decision Framework for AI Agents with decision trees for task routing and provider selection - Add Version Resolution Priority documentation (command-line → vx.toml → global → default) - Add comprehensive MCP Integration Guide section to AGENTS.md, llms.txt, llms-full.txt, and vx-usage skill - Add Starlark Context Object (ctx) reference to AGENTS.md and vx-best-practices skill - Add Crate Responsibilities Quick Reference table to AGENTS.md for faster code navigation - Add Key Configuration Files reference table - Enhance Provider Development section with decision tree in vx-best-practices skill - Add skill selection guide to skills/README.md - Update skills/README.md version to v0.8.15
- AGENTS.md: Add setup commands, code style, PR guidelines, troubleshooting decision tree - llms.txt: Add quick start section, AI agent skills index - llms-full.txt: Add one-sentence summary, common mistakes table - skills: Add quick-rule headers to all 5 SKILL.md files - skills/README.md: Add skill routing decision tree - Sync all 50 skill copies across 10 agent directories
…yperfine, zoxide, atuin, chezmoi, eza)
… dive) Add providers for high-star developer tools: - tealdeer (#654): tldr pages, 6.1k stars, Rust binary - dust (#653): disk usage visualizer, 11.4k stars, Rust binary - xh (#652): HTTP client (HTTPie clone), 7.7k stars, Rust binary - bottom (#651): system monitor (btm), 13.1k stars, Rust binary - trivy (#646): security scanner, 33.6k stars, Go binary - zellij (#644): terminal multiplexer, 30.3k stars, Rust binary - dive (#642): Docker image explorer, 53.6k stars, Go binary Each provider includes: - provider.star with correct asset naming patterns - Cargo.toml and lib.rs for workspace integration - E2E tests (file existence + local provider validation) - All 92 provider.star files pass lint checks Closes #654, #653, #652, #651, #646, #644, #642
Add providers for high-star terminal applications: - helix (#643): post-modern text editor (hx), 43.6k stars, Rust binary - Custom download_url for non-standard naming (CalVer, tar.xz) - Sets HELIX_RUNTIME env var for grammar/runtime files - yazi (#640): terminal file manager, 35k stars, Rust binary - Custom download_url (all .zip, no version in asset name) - Includes both yazi and ya binaries All 94 provider.star files pass lint checks. E2E tests updated (16 file existence tests pass). Closes #643, #640
…ping, watchexec, duf, trippy, sd, actionlint)
Fix 15 provider.star files that incorrectly imported env_prepend from @vx//stdlib:provider.star (which does not re-export it). The correct import is from @vx//stdlib:env.star.
Remove accidental debug print that was causing CI test failures.
The line 'println!("DEBUG: Reached...")' was printing to stdout
and breaking tests that parse command output as JSON.
The filter_tests.rs had three tests that read/write VX_FILTER_LEVEL via std::env::set_var/remove_var. When cargo test runs tests in parallel, these tests could interfere with each other, causing flaky failures (e.g. test_filter_level_from_env_recognises_light panicking with 'left: Normal, right: Light'). Add serial_test = "3" to dev-dependencies and mark the three env-dependent tests with #[serial] so they execute sequentially.
- Update version from v0.8.35/v0.8.20/v0.8.25 to v0.8.36 in AGENTS.md, CLAUDE.md, GEMINI.md, .cursorrules, .windsurfrules, .kiro/steering/vx-project.md, .trae/rules/vx-project.md - Update provider count from 105/122/129 to 136 in all AI agent config files - Remove contradictory provider count (105) in CLAUDE.md Co-Authored-By: CodeBuddy AI <codebuddy@tencent.com>
docs: update version to v0.8.36 and provider count to 136
Add witr - a process introspection tool that answers "Why is this running?" Supports Linux, macOS, Windows, and FreeBSD.
- AGENTS.md: 136 -> 137 - CLAUDE.md: 136 -> 137 - GEMINI.md: 136 -> 137 - docs/tools/overview.md: 136 -> 137 - docs/zh/tools/overview.md: 136 -> 137
- Simplify CLAUDE.md, GEMINI.md, .cursorrules, .windsurfrules, .clinerules, .kiro/steering/vx-project.md, .trae/rules/vx-project.md to reference AGENTS.md (single source of truth) - Update provider count from 136 to 137 in all docs - Add "Multi-Agent Development with vx wt" section to AGENTS.md - Add "Process Introspection with vx witr" section to AGENTS.md - Add "Search, Build, Package Commands" section to AGENTS.md
- Add multi-agent development with vx wt (worktree) examples - Add process introspection with vx witr examples - Add search tools (rg, fd, fzf) examples - Add build tools (cargo, cmake, make, ninja, meson) examples - Add package management (cargo package, npm pack, python -m build) examples - Add container tools (podman, docker) examples
- Remove unused os_str, arch_str, ext variables in install_layout() - Fix provider static checks failure in CI
- ffmpeg: switch Linux from johnvansickle.com to apt/yum (more reliable) - witr: fix install_layout to handle direct binaries (Linux/macOS) vs .zip (Windows)
…s correctly - Remove github_binary_provider template (designed for .zip archives) - Manually implement install_layout for both direct binaries (macOS/Linux) and .zip archives (Windows) - macOS/Linux: use 'binary' type (no extraction) - Windows: use 'archive' type (extract .zip)
- ffmpeg: use Gyan.dev for Windows (reliable), system_install for Linux/macOS - witr: only override download_url, let template handle install_layout - Fix all lint errors (remove unused imports)
- github_binary_provider template expects version in asset name - Override both download_url (remove version) and install_layout - macOS/Linux: use 'binary_install' type (direct binary) - Windows: use 'archive' type (.zip file)
- ffmpeg: Windows now downloads from vx-org/mirrors (stable, no more 404s) - witr: all platforms now download from vx-org/mirrors - Mirror: https://github.com/vx-org/mirrors
All providers now fetch version lists from vx-org/mirrors GitHub Releases instead of upstream sources directly. Download URLs for providers with custom download_url are also updated to use vx-org/mirrors assets. Affected: 64 providers across all ecosystems Static check: 137/137 pass
make_fetch_versions() now accepts an optional tag_prefix parameter that
is passed through to the Rust runtime's version resolver.
This allows providers to fetch versions from mirror repos where tags
follow the pattern '{tool}-{version}' instead of 'v{version}'.
Example:
fetch_versions = make_fetch_versions("vx-org", "mirrors", tag_prefix = "ripgrep-")
# tag 'ripgrep-15.1.0' → version '15.1.0'
The Rust runtime (versions.rs) already supports tag_prefix in the
github_versions descriptor - this change exposes it at the Starlark level.
… on mirrors mirrors sync is still in progress - switching fetch_versions to mirrors caused 'No versions found' errors for all providers not yet synced. Strategy change: - fetch_versions: restored to original upstream sources (immediate fix) - download_url: still points to vx-org/mirrors (stability benefit) Once mirrors sync is complete, fetch_versions can be switched to mirrors in a follow-up PR.
Codecov Report✅ All modified and coverable lines are covered by tests. ❌ Your project check has failed because the head coverage (54.23%) is below the target coverage (80.00%). You can increase the head coverage or adjust the target coverage. Additional details and impacted files@@ Coverage Diff @@
## main #858 +/- ##
==========================================
- Coverage 54.26% 54.23% -0.03%
==========================================
Files 377 382 +5
Lines 66876 67670 +794
==========================================
+ Hits 36289 36703 +414
- Misses 30587 30967 +380
Flags with carried forward coverage won't be shown. Click here to find out more. 🚀 New features to boost your workflow:
|
Mirror vx-org/mirrors is not fully synced yet. Revert all provider.star to use original GitHub URLs to fix CI 404 errors. Keep github.star tag_prefix support for future use.
Zig download URL format changed at version 0.14.1:
- 0.14.0 and earlier: zig-{os}-{arch}-{version}.{ext}
- 0.14.1 and later: zig-{arch}-{os}-{version}.{ext}
Added _zig_use_new_url_format() to detect format based on version
and use the correct URL format in download_url().
Fixes 'error decoding response body' CI failure (404 on old URL format).
71bc865 to
f639b2a
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Switch all vx providers to use vx-org/mirrors as the primary version list and download source.
Why
Some upstream sources are unreliable or ephemeral:
What Changed
vx-org/mirrors (new repo)
Provider changes (64 files)
All
fetch_versionsnow point tovx-org/mirrorstags instead of upstream:Custom
download_urlfunctions updated to download from mirrors releases.Verification
New tools
witr: process introspection tool (already in PR feat: add witr provider (137 providers total) #856, included here for completeness)rtk: AI workflow CLI (rtk-ai/rtk, all platforms)