chore(deps): update rust crate tokio to v1.52.2#853
Closed
renovate[bot] wants to merge 1543 commits into
Closed
Conversation
…ation, unify skills
…e-hack Remove the windows-sys 0.59 (windows-sys-73dcd821b1037cfd) entry from workspace-hack/Cargo.toml and merge its features (Win32_Security, Win32_System_Diagnostics_Debug, Win32_System_IO, Win32_System_Registry, Win32_System_Time) into the 0.61 version entry. This applies to both [dependencies] and [build-dependencies] sections. Fixes CI lint failure caused by stale windows-sys 0.59 dependency.
- AGENTS.md: Add execution flow diagram, common AI scenarios table, Starlark quick start, real-world provider examples, AI-optimized output section, quick diagnostics guide - CONTRIBUTING.md: Create root-level file (fixes broken README link) with quick start, key rules, and provider example - README.md/README_zh.md: Update GitHub Actions version from v0.5.15 to latest, use vx just prefix consistently in test commands - Skills: Enhance all 5 SKILL.md files with template placeholders, stdlib reference, advanced execution syntax, provider development best practices, and AI agent triage flow - docs/advanced/contributing.md: Update provider creation guide from legacy Rust traits to Starlark DSL, update project structure
- Add tests/e2e_python_provider_tests.rs with 20 e2e tests covering version listing, install, execution, pip bundled runtime, platform-specific download URL validation, error handling and network resilience - Add test_versions_list_python to tests/e2e_install_tests.rs - Remove python from SKIP_ALWAYS in discover-providers.sh - Add python to quick smoke test runtimes in test-providers.yml and justfile Fixes regression where Python provider fails in CI with: No installation strategy available for python on this platform
The setup --dry-run command may output 'All tools are synchronized' without mentioning 'python' explicitly. Accept this as a valid success case.
- Change cargo-hakari hook from check-only (--diff) to auto-fix - Hook now runs: generate → manage-deps → git add → verify - Update English and Chinese pre-commit-hooks documentation - Add hakari-fix justfile recipe - Update CI workflow for hakari auto-fix
This reverts commit 67b80d7.
- Replace Regex::new().unwrap() with LazyLock<Regex> in 4 files to avoid recompiling regex patterns on every function call: - vx-project-analyzer: dotnet/dependencies.rs (3 regexes) - vx-project-analyzer: cpp/dependencies.rs (3 regexes) - vx-config: team.rs (1 regex) - vx-args: interpolation.rs (2 regexes) - Replace serde_json::to_string_pretty().unwrap() with .unwrap_or_default() in 5 locations across: - vx-cli: test/handler.rs (3 locations) - vx-config: remote.rs (2 locations) - Replace duration_since(UNIX_EPOCH).unwrap() with .unwrap_or_default() in vx-cli/src/cli.rs - Replace hardcoded ANSI escape codes with colored crate in vx-env/src/spawner.rs for proper terminal color support
…710) - Update version references from v0.8.8/v0.8.7 to v0.8.9 across all docs - Fix Rust version badge from 1.80+ to 1.93+ in README.md and README_zh.md - Add 'Mental Model' diagram to AGENTS.md for better agent understanding - Add 'What NOT to Do' anti-pattern table to AGENTS.md - Add exit codes reference to AGENTS.md and llms-full.txt - Add skills distribution section to AGENTS.md - Harmonize exit codes between vx-commands (was 0-4) and vx-troubleshooting (0-7) - Enhance troubleshooting triage tree with exit code references and install commands - Update skills README with accurate file sizes - Add AI Agent Skills section to llms.txt
- Replace .to_str().unwrap() with .to_string_lossy() in package_runtime.rs (3 sites) Prevents panic on non-UTF-8 paths on certain platforms - Replace sorted_versions.last().unwrap() with let-else pattern in setup executor Prevents panic when versions list is empty after filtering - Replace file_name().unwrap() with .unwrap_or_default() in CLI commands (6 sites) Prevents panic on paths ending with '..' - Replace eprintln! with tracing::warn! in vx-metrics (2 sites) Aligns with project logging standards using tracing crate - Replace ProgressStyle::with_template().unwrap() with .expect() in ui.rs (8 sites) and progress.rs (1 site) for clearer panic messages on static templates
- Add [package.metadata.dist] dist = false to vx-msbuild-bridge to prevent it from being built and uploaded as standalone release artifacts (it is embedded into vx binary via include_bytes!) - Add release trigger to sync-skills workflow so skills sync on every release - Improve diagnostics and error handling in skills sync workflow Fixes: unexpected vx-msbuild-bridge-* artifacts in GitHub Releases
- Extract is_acceptable_network_error() helper with case-insensitive matching - Cover HTTP 502/503/504 gateway errors, rate limiting (403/429), DNS failures - Unify all 5 version list tests (zig, node, go, uv, python) to use the helper - Fix: 'Gateway Timeout' (capital T) was not matched by lowercase 'timeout' check - Also fix: all vx.toml scripts and justfile recipes now use 'vx cargo' prefix Root cause: GitHub API returned HTTP 504 'Gateway Time-out' for python-build-standalone, but the test only checked lowercase 'timeout' (Rust str::contains is case-sensitive).
Safety improvements: - Fix 3 partial_cmp().unwrap() calls in visualize.rs that panic on NaN values - Fix parent().unwrap() in run.rs that panics when config path is root Dead code removal: - Remove unused run_shell() method from HomebrewManager - Remove legacy parse_runtime_dicts() wrapper in star-metadata parser - Remove unused log_cache_result() function from resolution cache - Remove unused join_args_owned() function from vx-env words - Remove dead path_builder module from resolver executor - Remove unused non_retryable() constructor from runtime-http installer - Remove unused build_runtime_environment() wrapper from shim executor Output system improvements: - Migrate hook.rs handle_status() from println! to UI system - Refactor extension executor help output to use fmt::Write trait
When a release PR (e.g., 'chore: release v0.8.10') is merged to main, the merge commit itself triggers all push-to-main workflows. This caused: 1. release-please.yml to re-run and create a duplicate release PR (#713) 2. test-docker.yml and test-action.yml to run unnecessarily Fix: Add 'if: !startsWith(github.event.head_commit.message, chore: release)' guards to skip these workflows when the push is a release commit. Fixes #713
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.
docs: update provider count to 132 and add conda/micromamba/mamba
* feat(project-analyzer): add Bun, Deno, Nix, Zig framework detection + age/sops providers
- Add framework detection for Bun, Deno, Nix, Zig
- Add RequiredTool, ScriptSource variants
- Add age and sops providers (encryption/secrets)
- Update Ecosystem and ProjectFramework enums
- Provider count: 129 -> 131
* fix(project-analyzer): remove clippy allow attributes and fix warnings in framework detectors
* feat(providers): add step-cli and vault providers, fix conda lint
* feat: add worktrunk provider (132 tools total)
- Add worktrunk provider (Git worktree manager for AI agents)
- Fix conda provider.star lint error (if/else syntax)
- Update all docs: 129 → 132 (AGENTS.md, tools/overview, architecture, etc.)
- Add worktrunk skill for AI agent usage guidance
- Update llms.txt and llms-full.txt with new tool count
* fix(worktrunk): load path_fns from layout.star, not provider.star
path_fns is defined in layout.star, not provider.star.
Loading it from the wrong module causes a Starlark
runtime error in CI (load errors shown as syntax errors
in the pre-push hook output).
* fix(cleanup): rename ToolSpec to RuntimeSpec and AddRuntimeSpec (Phase 3 forbidden terminology)
- Rename ToolSpec to RuntimeSpec in vx-env crate (tool_env.rs, lib.rs)
- Update vx-cli to use RuntimeSpec (handler.rs, export.rs)
- Rename ToolSpec to AddRuntimeSpec in add.rs (distinguish from RuntimeSpec in vx-env)
- Update add_command_tests.rs to use AddRuntimeSpec
- Include vx-project-analyzer framework fixes from Run 9
- Update memory.md with progress
* fix(worktrunk): correct install_layout for cross-platform archive structure
- Linux/macOS: archive has top-level dir worktrunk-{triple}/
→ strip_prefix = "worktrunk-{triple}"
- Windows: flat ZIP, no top-level dir
→ strip_prefix = None
Also fix path_fns load to use @vx//stdlib:layout.star (not provider.star).
* fix(provider): fix worktrunk lint issues
- Fix unused argument version in install_layout
- Fix unused load of archive_layout
Also updated AGENTS.md provider count (135 -> 139)
(4 new providers: starship, sccache, cargo-nextest, cargo-deny)
* fix: correct install_layout and tag_prefix for age, sops, cargo-deny providers
- age: set strip_prefix="age" (was empty, caused 'No such file or directory')
- sops: change install_layout type from "archive" to "binary" (sops releases are direct binaries)
- cargo-deny: set tag_prefix="" (release tags have no v prefix, e.g. 0.19.4 not v0.19.4)
* fix(conda): correct install_layout for micromamba/conda/mamba
- micromamba: strip_prefix="micromamba" (was "", archive has top-level dir)
- conda/mamba: change type from "archive" to "binary"
(Miniforge releases are shell scripts .sh/.exe, not archives)
* fix(ci,age): fix CI errors - providers are Starlark files, not crates
- CI: remove invalid 'vx-provider-*' cargo test package pattern
(providers are Starlark .star files, not separate Rust crates)
- age/provider.star: use path_fns() instead of manual store_root/get_execute_path
(fixes 'Executable not found' error in Test Providers workflow)
* test(starlark): add provider tests for worktrunk, starship, sccache, cargo-nextest, cargo-deny
- Add tests that load each new provider and verify basic metadata
- Improve code coverage for PR #839 (currently 13.89%)
- 5 new tests added to provider_tests.rs
* chore(cleanup): remove dead code SystemInstallConfig and ProvidedTool from vx-system-pm
* chore(cleanup): remove dead engine() function from vx-starlark
* chore(automation): update automation memory files
* test(starlark): add download_url and install_layout tests for new providers
* chore(cleanup): fix benchmark thresholds and remove dead code
- Increase Windows benchmark thresholds to 2000ms (realistic for CI)
- Remove lint_and_warn dead code from vx-starlark/src/engine.rs (never called)
* feat(provider): add syft provider for SBOM generation
- Add syft provider using github_go_provider template
- Uses custom asset naming: syft_{version}_{os}_{arch}.{ext}
- Update provider count from 139 to 140 in AGENTS.md
- Fix unused import warning in vx-starlark/src/engine.rs
Co-Authored-By: CodeBuddy <hallong>
* fix(provider): remove unused load in syft provider
- Remove unused binary_layout from load statement
- Update rust-toolchain to 1.95.0 (latest stable)
* feat(provider): add grype provider for vulnerability scanning
- Use github_go_provider template with custom asset naming
- Asset format: grype_v{version}_{os}_{arch}.{ext}
- Update provider count from 140 to 141
* chore(cleanup): format all code with cargo fmt --all, fix rust-version to 1.93.0
* test(starlark): add grype provider tests (load, download_url, install_layout)
- Add grype_tests.rs to crates/vx-starlark/tests/
- Update AGENTS.md: fix provider count from 141 to 135 (3 occurrences)
* docs: update provider count from 132 to 135 across all docs
- AGENTS.md, llms.txt, llms-full.txt
- docs/guide/getting-started.md, docs/guide/index.md
- docs/tools/overview.md, docs/zh/tools/overview.md
- docs/zh/guide/getting-started.md, docs/zh/guide/index.md
- docs/advanced/contributing.md, docs/architecture/OVERVIEW.md
* perf(fetcher): increase GitHub API per_page to 100 (max allowed)
- Update vx-version-fetcher default per_page from 30 to 100
- Update vx-starlark stdlib/http.star per_page from 50 to 100
- This reduces the chance of missing versions due to pagination limits
* chore(cleanup): remove commented-out test functions for removed commands
* perf(fetcher): implement GitHub API pagination for complete version fetching
* chore(cleanup): remove dead code and unused dependencies
- Remove commented-out test modules for removed commands (clean, stats)
- Remove unused dependencies: dialoguer, toml from vx-cli; serde_json from vx-args
- Cargo.lock auto-updated
* test(fetcher): add pagination unit tests for GitHub API multi-page fetching
- Add 6 unit tests in crates/vx-version-fetcher/tests/pagination_tests.rs
- Test api_url() generates correct pagination parameters
- Test per_page configuration is respected
- Test pagination stop condition logic
- Make api_url() pub with #[doc(hidden)] for integration testing
* feat(provider): add sccache provider for Rust compilation caching
* chore: remove obsolete codebuddy rules and memory files
- Remove .codebuddy/rules/*.mdc (moved to .codebuddy/rules/)
- Remove .codebuddy/memory/2026-03-*.md (cleanup)
- Keep .codebuddy/automations/ memory files (active)
* chore(cleanup): remove dead code in vx-config
- Remove unused ValidationWarning struct
- Remove unused find_config and load_config functions
- Fixes #(dead code cleanup)
* docs(agents): update provider count from 136 to 135
* test(starlark): add flux provider tests (load, download_url, install_layout)
* docs(auto-improve): add round 21 execution record
* feat(provider): add hugo provider for static site generation
* chore(cleanup): fix hugo provider lint issues (unused variable ext, wrong parameter naming)
* test(starlark): add duckdb provider tests (load, download_url, install_layout)
* fix(conda): use correct Starlark struct access syntax
* chore(cleanup): fix doc warnings in vx-cli, vx-config, vx-paths, vx-versions
- Wrap placeholders in backticks to avoid HTML tag warnings
- Fix bare URLs by wrapping in <> for clickable links
- Escape [] in doc comments to avoid broken intra-doc links
- Remove crate prefix from intra-doc links (use \VersionCache\ instead of \�x_versions::VersionCache\)
* fix(providers): fix multiple provider.star bugs causing CI failures
- age: path_fns() does not export 'environment' key; use path_env_fns() instead
- cargo-nextest: tag format is 'cargo-nextest-{version}' (no v prefix); set tag_prefix='cargo-nextest-'
- grype: asset naming uses {version} not v{version}; fix asset template
- step-cli: add strip_prefix to handle top-level archive directory
- vault: add system_install fallback (v2.x has no public assets due to BUSL license)
* feat(providers): add system_install fallback to grype, cargo-nextest, age, step-cli
Add system_install fallback for providers that may fail to download
from GitHub releases, so vx can delegate to OS package managers.
* fix(providers): fix hugo, cargo-deny, sops provider.star bugs
- hugo: fix _PLATFORMS mapping (lowercase os, correct arch names)
- cargo-deny: force .tar.gz extension (actual assets are .tar.gz, not .zip)
- sops: fix version_pattern (output has no v prefix)
* feat(providers): add system_install fallback to all failed providers
Add system_install = cross_platform_install(...)
to 35+ providers that were failing in CI,
so vx can delegate to OS package managers
when GitHub releases are unavailable or download fails.
Providers updated:
actionlint, atuin, bat, biome, buf, buildcache, bun,
cargo-audit, ccache, chezmoi, gping, grpcurl,
hadolint, helm, hx, hyperfine, java, protoc,
python, ripgrep, ruff, sccache, sd, skaffold,
spack, starship, syft, task, tealdeer, terraform,
tilt, tokei, trip, trivy, usql, uv, vcpkg,
watchexec
* fix(providers): fix system_install load position and vault parse error
- Add missing load('@vx//stdlib:system_install.star', 'cross_platform_install') to 35 providers
- Fix load statement position (must be at file start in Starlark)
- Fix vault/provider.star parse error (incorrect load statement syntax)
- Fix grpcurl duplicate system_install definition
- All 136 provider.star files now pass lint checks
* chore(cleanup): fix doc warnings across multiple crates (Run 17)
- Fix all 'unclosed HTML tag' warnings (20+ warnings)
- Wrap <runtime>, <version>, <platform>, <package>, <provider> in backticks
- Files: vx-paths/src/manager.rs, vx-paths/src/resolver.rs
- Files: vx-runtime/src/provider_env.rs, vx-cli/src/cli.rs
- Files: vx-project-analyzer/src/script_parser/types.rs
- Fix all 'this URL is not a hyperlink' warnings (7 warnings)
- Wrap URLs in <> for auto-hyperlink
- Files: vx-config/src/types/dependencies.rs, vx-paths/src/shims.rs
- Files: vx-project-analyzer/src/frameworks/deno.rs
- Files: vx-runtime/src/runtime/mod.rs, vx-cli/src/cli.rs
- Fix 'public documentation links to private item' warnings (5 warnings)
- Remove links to private submodules (cache, versions, execute, hooks, store)
- File: vx-starlark/src/provider/mod.rs
Result: doc warnings reduced from 94 to 25 (73% reduction)
Pre-existing test failures: e2e_install_tests (cross_platform_install not found)
* chore: upgrade Rust toolchain to 1.95.0
- Update rust-version from 1.93.0 to 1.95.0 in Cargo.toml
- rust-toolchain.toml already specifies 1.95.0
- All 136 provider.star files pass lint checks
- Project compiles successfully with Rust 1.95.0
* chore(cleanup): fix all 16 doc warnings (94 -> 0)
Fix unresolved intra-doc links in vx-config, vx-versions, vx-env,
�x-cli, vx-migration, vx-project-analyzer, vx-output-filter,
�x-resolver, vx-starlark by escaping [text] or using correct paths.
* fix(providers): fix age and vault provider configurations
- age: fix strip_prefix (should be empty, not 'age')
- vault: allow v2.x downloads from GitHub (binaries are still available)
* fix(age): correct strip_prefix in install_layout (archive has top-level 'age/' dir)
* fix(vault): return None for v2.0.0+ (no GitHub assets due to BUSL)
* fix(step-cli): correct executable path to bin/step and strip_prefix
---------
Co-authored-by: hallong <hallong@tencent.com>
- Updated AGENTS.md, CLAUDE.md, GEMINI.md (new file) - Updated llms.txt and llms-full.txt - Updated docs/tools/overview.md and docs/zh/tools/overview.md - Updated docs/guide/index.md, getting-started.md - Updated docs/zh/guide/index.md, getting-started.md - Updated docs/architecture/OVERVIEW.md - Updated docs/advanced/contributing.md All AI agent docs now consistently reference 136 providers/tools.
docs: update provider count from 132/135 to 136 across all docs
- age: fix strip_prefix from "" to "age" - hugo: use archive_layout with correct strip_prefix - sops: fix Windows asset naming, use path_fns - vault: replace github_go_provider with manual defs - cargo-nextest: custom fetch_versions/download_url for macOS universal
* feat(project-analyzer): add Bun, Deno, Nix, Zig framework detection + age/sops providers
- Add framework detection for Bun, Deno, Nix, Zig
- Add RequiredTool, ScriptSource variants
- Add age and sops providers (encryption/secrets)
- Update Ecosystem and ProjectFramework enums
- Provider count: 129 -> 131
* fix(project-analyzer): remove clippy allow attributes and fix warnings in framework detectors
* feat(providers): add step-cli and vault providers, fix conda lint
* feat: add worktrunk provider (132 tools total)
- Add worktrunk provider (Git worktree manager for AI agents)
- Fix conda provider.star lint error (if/else syntax)
- Update all docs: 129 → 132 (AGENTS.md, tools/overview, architecture, etc.)
- Add worktrunk skill for AI agent usage guidance
- Update llms.txt and llms-full.txt with new tool count
* fix(worktrunk): load path_fns from layout.star, not provider.star
path_fns is defined in layout.star, not provider.star.
Loading it from the wrong module causes a Starlark
runtime error in CI (load errors shown as syntax errors
in the pre-push hook output).
* fix(cleanup): rename ToolSpec to RuntimeSpec and AddRuntimeSpec (Phase 3 forbidden terminology)
- Rename ToolSpec to RuntimeSpec in vx-env crate (tool_env.rs, lib.rs)
- Update vx-cli to use RuntimeSpec (handler.rs, export.rs)
- Rename ToolSpec to AddRuntimeSpec in add.rs (distinguish from RuntimeSpec in vx-env)
- Update add_command_tests.rs to use AddRuntimeSpec
- Include vx-project-analyzer framework fixes from Run 9
- Update memory.md with progress
* fix(worktrunk): correct install_layout for cross-platform archive structure
- Linux/macOS: archive has top-level dir worktrunk-{triple}/
→ strip_prefix = "worktrunk-{triple}"
- Windows: flat ZIP, no top-level dir
→ strip_prefix = None
Also fix path_fns load to use @vx//stdlib:layout.star (not provider.star).
* fix(provider): fix worktrunk lint issues
- Fix unused argument version in install_layout
- Fix unused load of archive_layout
Also updated AGENTS.md provider count (135 -> 139)
(4 new providers: starship, sccache, cargo-nextest, cargo-deny)
* fix: correct install_layout and tag_prefix for age, sops, cargo-deny providers
- age: set strip_prefix="age" (was empty, caused 'No such file or directory')
- sops: change install_layout type from "archive" to "binary" (sops releases are direct binaries)
- cargo-deny: set tag_prefix="" (release tags have no v prefix, e.g. 0.19.4 not v0.19.4)
* fix(conda): correct install_layout for micromamba/conda/mamba
- micromamba: strip_prefix="micromamba" (was "", archive has top-level dir)
- conda/mamba: change type from "archive" to "binary"
(Miniforge releases are shell scripts .sh/.exe, not archives)
* fix(ci,age): fix CI errors - providers are Starlark files, not crates
- CI: remove invalid 'vx-provider-*' cargo test package pattern
(providers are Starlark .star files, not separate Rust crates)
- age/provider.star: use path_fns() instead of manual store_root/get_execute_path
(fixes 'Executable not found' error in Test Providers workflow)
* test(starlark): add provider tests for worktrunk, starship, sccache, cargo-nextest, cargo-deny
- Add tests that load each new provider and verify basic metadata
- Improve code coverage for PR #839 (currently 13.89%)
- 5 new tests added to provider_tests.rs
* chore(cleanup): remove dead code SystemInstallConfig and ProvidedTool from vx-system-pm
* chore(cleanup): remove dead engine() function from vx-starlark
* chore(automation): update automation memory files
* test(starlark): add download_url and install_layout tests for new providers
* chore(cleanup): fix benchmark thresholds and remove dead code
- Increase Windows benchmark thresholds to 2000ms (realistic for CI)
- Remove lint_and_warn dead code from vx-starlark/src/engine.rs (never called)
* feat(provider): add syft provider for SBOM generation
- Add syft provider using github_go_provider template
- Uses custom asset naming: syft_{version}_{os}_{arch}.{ext}
- Update provider count from 139 to 140 in AGENTS.md
- Fix unused import warning in vx-starlark/src/engine.rs
Co-Authored-By: CodeBuddy <hallong>
* fix(provider): remove unused load in syft provider
- Remove unused binary_layout from load statement
- Update rust-toolchain to 1.95.0 (latest stable)
* feat(provider): add grype provider for vulnerability scanning
- Use github_go_provider template with custom asset naming
- Asset format: grype_v{version}_{os}_{arch}.{ext}
- Update provider count from 140 to 141
* chore(cleanup): format all code with cargo fmt --all, fix rust-version to 1.93.0
* test(starlark): add grype provider tests (load, download_url, install_layout)
- Add grype_tests.rs to crates/vx-starlark/tests/
- Update AGENTS.md: fix provider count from 141 to 135 (3 occurrences)
* docs: update provider count from 132 to 135 across all docs
- AGENTS.md, llms.txt, llms-full.txt
- docs/guide/getting-started.md, docs/guide/index.md
- docs/tools/overview.md, docs/zh/tools/overview.md
- docs/zh/guide/getting-started.md, docs/zh/guide/index.md
- docs/advanced/contributing.md, docs/architecture/OVERVIEW.md
* perf(fetcher): increase GitHub API per_page to 100 (max allowed)
- Update vx-version-fetcher default per_page from 30 to 100
- Update vx-starlark stdlib/http.star per_page from 50 to 100
- This reduces the chance of missing versions due to pagination limits
* chore(cleanup): remove commented-out test functions for removed commands
* perf(fetcher): implement GitHub API pagination for complete version fetching
* chore(cleanup): remove dead code and unused dependencies
- Remove commented-out test modules for removed commands (clean, stats)
- Remove unused dependencies: dialoguer, toml from vx-cli; serde_json from vx-args
- Cargo.lock auto-updated
* test(fetcher): add pagination unit tests for GitHub API multi-page fetching
- Add 6 unit tests in crates/vx-version-fetcher/tests/pagination_tests.rs
- Test api_url() generates correct pagination parameters
- Test per_page configuration is respected
- Test pagination stop condition logic
- Make api_url() pub with #[doc(hidden)] for integration testing
* feat(provider): add sccache provider for Rust compilation caching
* chore: remove obsolete codebuddy rules and memory files
- Remove .codebuddy/rules/*.mdc (moved to .codebuddy/rules/)
- Remove .codebuddy/memory/2026-03-*.md (cleanup)
- Keep .codebuddy/automations/ memory files (active)
* chore(cleanup): remove dead code in vx-config
- Remove unused ValidationWarning struct
- Remove unused find_config and load_config functions
- Fixes #(dead code cleanup)
* docs(agents): update provider count from 136 to 135
* test(starlark): add flux provider tests (load, download_url, install_layout)
* docs(auto-improve): add round 21 execution record
* feat(provider): add hugo provider for static site generation
* chore(cleanup): fix hugo provider lint issues (unused variable ext, wrong parameter naming)
* test(starlark): add duckdb provider tests (load, download_url, install_layout)
* fix(conda): use correct Starlark struct access syntax
* chore(cleanup): fix doc warnings in vx-cli, vx-config, vx-paths, vx-versions
- Wrap placeholders in backticks to avoid HTML tag warnings
- Fix bare URLs by wrapping in <> for clickable links
- Escape [] in doc comments to avoid broken intra-doc links
- Remove crate prefix from intra-doc links (use \VersionCache\ instead of \�x_versions::VersionCache\)
* fix(providers): fix multiple provider.star bugs causing CI failures
- age: path_fns() does not export 'environment' key; use path_env_fns() instead
- cargo-nextest: tag format is 'cargo-nextest-{version}' (no v prefix); set tag_prefix='cargo-nextest-'
- grype: asset naming uses {version} not v{version}; fix asset template
- step-cli: add strip_prefix to handle top-level archive directory
- vault: add system_install fallback (v2.x has no public assets due to BUSL license)
* feat(providers): add system_install fallback to grype, cargo-nextest, age, step-cli
Add system_install fallback for providers that may fail to download
from GitHub releases, so vx can delegate to OS package managers.
* fix(providers): fix hugo, cargo-deny, sops provider.star bugs
- hugo: fix _PLATFORMS mapping (lowercase os, correct arch names)
- cargo-deny: force .tar.gz extension (actual assets are .tar.gz, not .zip)
- sops: fix version_pattern (output has no v prefix)
* feat(providers): add system_install fallback to all failed providers
Add system_install = cross_platform_install(...)
to 35+ providers that were failing in CI,
so vx can delegate to OS package managers
when GitHub releases are unavailable or download fails.
Providers updated:
actionlint, atuin, bat, biome, buf, buildcache, bun,
cargo-audit, ccache, chezmoi, gping, grpcurl,
hadolint, helm, hx, hyperfine, java, protoc,
python, ripgrep, ruff, sccache, sd, skaffold,
spack, starship, syft, task, tealdeer, terraform,
tilt, tokei, trip, trivy, usql, uv, vcpkg,
watchexec
* fix(providers): fix system_install load position and vault parse error
- Add missing load('@vx//stdlib:system_install.star', 'cross_platform_install') to 35 providers
- Fix load statement position (must be at file start in Starlark)
- Fix vault/provider.star parse error (incorrect load statement syntax)
- Fix grpcurl duplicate system_install definition
- All 136 provider.star files now pass lint checks
* chore(cleanup): fix doc warnings across multiple crates (Run 17)
- Fix all 'unclosed HTML tag' warnings (20+ warnings)
- Wrap <runtime>, <version>, <platform>, <package>, <provider> in backticks
- Files: vx-paths/src/manager.rs, vx-paths/src/resolver.rs
- Files: vx-runtime/src/provider_env.rs, vx-cli/src/cli.rs
- Files: vx-project-analyzer/src/script_parser/types.rs
- Fix all 'this URL is not a hyperlink' warnings (7 warnings)
- Wrap URLs in <> for auto-hyperlink
- Files: vx-config/src/types/dependencies.rs, vx-paths/src/shims.rs
- Files: vx-project-analyzer/src/frameworks/deno.rs
- Files: vx-runtime/src/runtime/mod.rs, vx-cli/src/cli.rs
- Fix 'public documentation links to private item' warnings (5 warnings)
- Remove links to private submodules (cache, versions, execute, hooks, store)
- File: vx-starlark/src/provider/mod.rs
Result: doc warnings reduced from 94 to 25 (73% reduction)
Pre-existing test failures: e2e_install_tests (cross_platform_install not found)
* chore: upgrade Rust toolchain to 1.95.0
- Update rust-version from 1.93.0 to 1.95.0 in Cargo.toml
- rust-toolchain.toml already specifies 1.95.0
- All 136 provider.star files pass lint checks
- Project compiles successfully with Rust 1.95.0
* chore(cleanup): fix all 16 doc warnings (94 -> 0)
Fix unresolved intra-doc links in vx-config, vx-versions, vx-env,
�x-cli, vx-migration, vx-project-analyzer, vx-output-filter,
�x-resolver, vx-starlark by escaping [text] or using correct paths.
* fix(providers): fix age and vault provider configurations
- age: fix strip_prefix (should be empty, not 'age')
- vault: allow v2.x downloads from GitHub (binaries are still available)
* fix(age): correct strip_prefix in install_layout (archive has top-level 'age/' dir)
* fix(vault): return None for v2.0.0+ (no GitHub assets due to BUSL)
* fix(step-cli): correct executable path to bin/step and strip_prefix
* feat: apply Rust 1.95.0 new features
- Add --remap-path-scope=dep-only for reproducible builds (Task #10)
- Add core::hint::cold_path() to error handling paths (Task #7)
- These are the most impactful features for vx CLI tool
- Other 1.95.0 features (cfg_select!, Atomic::update, bool::try_from, if let guards)
were not widely applicable to current codebase patterns
Tasks completed: #6, #7, #8, #9, #10, #11
* fix(providers): correct install_layout strip_prefix and download_url
- age: fix strip_prefix from "" to "age"
- hugo: use archive_layout with correct strip_prefix
- sops: fix Windows asset naming, use path_fns
- vault: replace github_go_provider with manual defs
- cargo-nextest: custom fetch_versions/download_url for macOS universal
* fix: correct --remap-path-scope value (dep-only → all)
The --remap-path-scope flag in Rust 1.95.0 only accepts these values:
macro, diagnostics, documentation, debuginfo, coverage, object, all
Changed invalid 'dep-only' to 'all' for full path remapping
(reproducible builds and privacy protection).
Fixes CI failure: 'error: argument for --remap-path-scope must be
a comma separated list of scopes'
* fix(providers): correct cargo-nextest download_url to avoid duplicate prefix
The download_url function was adding 'cargo-nextest-' prefix twice,
resulting in 404 errors when downloading release assets.
Before: tag='cargo-nextest-cargo-nextest-0.9.133', asset='cargo-nextest-cargo-nextest-0.9.133-{triple}.tar.gz'
After: tag='cargo-nextest-0.9.133', asset='cargo-nextest-0.9.133-{triple}.tar.gz'
Fixes CI failure in Test Providers workflow (main branch, run 25245308076).
* fix(hugo): add missing load for archive_layout in provider.star
The hugo provider.star used archive_layout() without loading it from
@vx//stdlib:layout.star, causing the provider static check lint test
to fail.
Added: load('@vx//stdlib:layout.star', 'archive_layout')
* fix: CI failures on PR #843
- vx-cli: reorder imports in error_handler.rs to satisfy cargo fmt
(core:: before external crates).
- hugo provider: switch system_install from callable cross_platform_install
to static system_install_strategies([...]) so the strategy list is
reliably parsed and available on macOS (where download_url returns None
because hugo ships only .pkg installers). Also drop the bogus
strip_prefix (hugo archives have no top-level dir). Use 'Hugo.Hugo.Extended'
for winget as the base Hugo package is unavailable.
- vx-runtime-http installer: fix strip_prefix collision when an archive
entry shares its name with the prefix directory (e.g. age archive
contains age/age where age/ is the prefix dir and age is the binary).
Rename the prefix dir to a unique temp name before moving its contents
to the destination so the binary can be safely moved to the parent.
---------
Co-authored-by: hallong <hallong@tencent.com>
…d from update-pr job Fixes a race condition where cargo-dist Release workflow was not triggered for v0.8.34 (run 25286122285). Root cause: release-please-action@v5 creates the GitHub Release (tag) whenever it sees a merged release PR, regardless of skip-github-pull-request. When a fix commit is pushed moments before the release PR is merged, its `update-pr` job ends up creating the release itself. The subsequent `release` job on the 'chore: release' commit then reports releases_created=false (release already exists) and its 'Trigger Release workflow' step is skipped — so cargo-dist never builds artifacts for that version. Fix: - `update-pr` job now also dispatches the Release workflow when releases_created=true, so whichever job creates the release also triggers cargo-dist. - `release` job gets a fallback that, when releases_created=false, reads the tag from .release-please-manifest.json, verifies the release exists on GitHub, and dispatches the Release workflow. This covers the case where the release was created by a prior `update-pr` run. Concrete failure: v0.8.34 was tagged and published by github-actions[bot] at 17:39:32Z, but the Release workflow has not run since 2026-04-25 (the v0.8.32 release). v0.8.34 currently has 0 assets. After this fix is merged, the Release workflow can be dispatched manually once for v0.8.34 to publish its binaries: gh workflow run release.yml --repo loonghao/vx --field tag=v0.8.34
- Update version from 0.8.33 to 0.8.35 in AGENTS.md, CLAUDE.md, GEMINI.md - Update provider count from 132 to 136 in llms.txt (3 places) and llms-full.txt (1 place) - Ensure consistency across all AI agent entry point files
docs: update version to v0.8.35 and provider count to 136
Add background update checking that notifies users when a new vx version is available.
## Design
- Use `tokio::spawn_blocking()` to run synchronous version check without blocking the main thread
- Cache check results for 24 hours (configurable via `cache_duration_hours`)
- Show notification: "A new version of vx is available: {current} → {latest}"
- Provide actionable command: "Run 'vx self-update' to update to the latest version"
- Fault-tolerant: network failures don't affect vx usage
- Cooldown after 3 consecutive failures (skip check for 1 hour)
## Implementation
- `update_checker.rs`: New module with cache management and version fetching
- `lib.rs`: Integrate update check into main CLI flow (both lightweight and normal paths)
- Uses CDN (jsDelivr) as primary source, GitHub API as fallback
- Timeout (10s) to avoid blocking on slow networks
## Files Changed
- `crates/vx-cli/src/update_checker.rs`: New module
- `crates/vx-cli/src/lib.rs`: Add update check integration
Closes #ISSUE_NUMBER
Update notifications now output to stderr instead of stdout to avoid polluting structured output (JSON/TOML) when vx is used by AI agents. This follows CLI best practices: - stdout: Structured data (JSON, TOML, command output) - stderr: Errors, warnings, hints, update notifications Users still see the notifications in their terminal (both stdout and stderr are displayed), but AI agents parsing stdout get clean output.
Add proper update channel system to replace the simple prerelease flag: - Add Channel enum (Stable, Beta, Dev) to CLI arguments - Replace prerelease: bool with channel: Option<Channel> in SelfUpdate - Map channel selection to prerelease logic in self_update::handle() - Stable (default): Only stable releases - Beta: Include pre-release versions - Dev: Nightly builds (reserved for future use) This provides a more flexible and user-friendly way to select update channels, following patterns from other CLI tools (rustup, nvm, etc.).
- Collapse nested if statements using let-chains (Rust 2024 edition) - Remove redundant pattern matching (use .is_err() instead of if let Err(_)) - Fix format_in_format_args warning (merge format! into eprintln!) - Add missing channel field to SelfUpdate test pattern match - Remove non-existent prerelease field from SelfUpdate test
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.
Contributor
Author
Edited/Blocked NotificationRenovate will not automatically rebase this PR, because it does not recognize the last commit author and assumes somebody else may have edited the PR. You can manually request rebase by checking the rebase/retry box above. |
71bc865 to
f639b2a
Compare
Owner
|
Superseded: tokio updated to 1.52.3 directly on main |
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.
This PR contains the following updates:
1.52.1→1.52.21.52.1→1.52.21.52.1→1.52.21.52.1→1.52.2Release Notes
tokio-rs/tokio (tokio)
v1.52.2: Tokio v1.52.2Compare Source
1.52.2 (May 4th, 2026)
This release reverts the LIFO slot stealing change introduced in 1.51.0 (#7431), due to its performance impact. (#8100)
Configuration
📅 Schedule: (UTC)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about these updates again.
This PR was generated by Mend Renovate. View the repository job log.