Releases: jhonsferg/gvsn
Releases · jhonsferg/gvsn
Release list
gvsn v1.0.2
What's Changed in v1.0.2
Bug Fixes
- gvsn implode now cleans the registry path in Windows
Full changelog: v1.0.1...v1.0.2
Install or upgrade
# Windows
irm https://raw.githubusercontent.com/jhonsferg/gvsn/main/install/install.ps1 | iex
# Or upgrade in-place
gvsn upgrade# Linux / macOS
curl -fsSL https://raw.githubusercontent.com/jhonsferg/gvsn/main/install/install.sh | sh
# Or upgrade in-place
gvsn upgradeVirusTotal Scan Results
gvsn v1.0.1
What's Changed in v1.0.1
Maintenance
- chore(deps): bump clap_complete from 4.6.8 to 4.6.9
- chore(deps): bump ureq from 3.3.0 to 3.4.0
- chore(ci): bump actions/checkout from 5 to 7
- chore(ci): bump codeql-action init and analyze together to 4.37.8
- chore(ci): bump trufflesecurity/trufflehog from 3.95.9 to 3.97.0
- chore(ci): bump dorny/paths-filter from 3.0.3 to 4.0.3
- docs: explain why gvsn is written in Rust
Full changelog: v1.0.0...v1.0.1
Install or upgrade
# Windows
irm https://raw.githubusercontent.com/jhonsferg/gvsn/main/install/install.ps1 | iex
# Or upgrade in-place
gvsn upgrade# Linux / macOS
curl -fsSL https://raw.githubusercontent.com/jhonsferg/gvsn/main/install/install.sh | sh
# Or upgrade in-place
gvsn upgradeVirusTotal Scan Results
gvsn v1.0.0
What's Changed in v1.0.0
New Features
- benchmark the .tool-versions golang-line parser
- wire --json/--fix flags through the command dispatcher
- declare --json and --fix CLI flags
- add --fix to gvm doctor for auto-remediation
- add --json output to gvm outdated
- add --json output to gvm list-remote
- add --json output to gvm list
- cache the go.dev release index with a 1-hour TTL
- recognize .tool-versions in prune's reference scan
- resolve .tool-versions in active version lookup
- derive Serialize for Release/ReleaseFile
- support asdf .tool-versions files for local version pins
- add criterion benchmarks for hot parsing/hashing paths
- add criterion dev-dependency and local-only bench target
- add gvm_rs library crate exposing internal modules
- add behavior-based deep scan to clone-watch findings
- gate clone-watch on content-similarity to cut false positives
- notify when a newer gvm version is available (#62)
- add Refactoring section to generated release notes (#28)
- parallel chunk engine with resume and retry
- wire --connections and --retries into http globals
- add --connections/-j and --retries global flags
- add CONNECTIONS and RETRIES globals for download engine
- live spinner and verbose line streaming during compile
- log GitHub API request and response in verbose mode
- log HTTP request and response in verbose mode
- activate verbose mode from cli flag before dispatch
- add global --verbose / -v flag
- add VERBOSE flag, log_request/log_response helpers
- add gvm build - compile Go from source (#14)
- add aarch64-linux-android target for Termux
- compressed-only distribution and multi-arch support (#7)
- validate shell is installed before configuring, list available shells on error
- add binary_name, is_available, available_shells, find_binary for shell validation
- invoke gvm setup after binary placement to configure the environment
- invoke gvm setup after binary placement to configure the environment
- dispatch --reset flag to setup command
- rewrite to configure shell hook, login profile PATH, and Windows registry
- add --reset flag to gvm setup subcommand
- add login_profile_path, inject_login_profile, public remove_gvm_lines, strip_profile
- add winreg dependency for Windows registry PATH injection
- update ~/.gvm/current junction on every version switch
- add update_current_link to maintain the current junction
- add ~/.gvm/current/bin to Windows user PATH registry
- add set_version_link for cross-platform junction/symlink
- add current_dir path for junction/symlink support
- add PowerShell installer script for Windows
- add shell installer script for Linux and macOS
- add main entry point with command dispatch
- add CLI argument definitions with clap derive
- add use command to set the global default Go version
- add upgrade command for in-place self-update
- add uninstall command to remove an installed Go version
- add shell command for session-scoped version activation
- add setup command to inject the shell hook into the profile
- add prune command to remove unreferenced Go versions
- add path command to print the bin dir of a Go version
- add outdated command to detect installed patch updates
- add local command to pin a Go version per project
- add list-remote command to show available Go releases
- add list command to show locally installed Go versions
- add install command to download and install a Go version
- add implode command to fully remove gvm from the system
- add exec command to run a command with a specific Go version
- add doctor command to diagnose the gvm installation
- add default command as alias for use
- add current command to print the active Go version
- add completions command for shell tab-completion scripts
- add env command to emit shell activation exports
- add commands module declaration
- add PowerShell shell integration implementation
- add Fish shell integration implementation
- add Zsh shell integration implementation
- add Bash shell integration implementation
- add shell module with inject_profile and stale-update logic
- add archive extractor for tar.gz and zip formats
- add HTTPS downloader with progress bar and SHA-256 verification
- add archive module declaration
- add remote index for fetching go.dev release list
- add remote module declaration
- add toolchain helpers for installed version management
- add Release type for go.dev release JSON deserialization
- add VersionSpec for user-facing version input parsing
- add Config for resolving gvm runtime paths
- add fs helpers for atomic writes and directory utilities
- add GoVersion type with parsing and comparison
Bug Fixes
- separate 'nothing to fix' from 'fix attempt failed' in doctor --fix
- ensure gvm root exists and unify status logic in outdated
- ensure gvm root exists before caching the release index in list-remote
- check .tool-versions consistency alongside .go-version in doctor
- mention .tool-versions in the 'not installed' env hint
- propagate .go-version/.tool-versions read errors again
- stage upgrade binary same-volume before swap on Windows
- reject invalid semver segments instead of skipping them
- require exact marker match in shell profile parsing
- trigger workflow on docs-only changes so required checks post
- guard powershell init hook against blocked gvm binary
- route secrets through env before use in if: conditionals (#66)
- broadcast WM_SETTINGCHANGE after updating the registry PATH (#63)
- pass --allow-dirty to cargo publish (#52)
- make GitHub Release creation idempotent (#49)
- remove invalid 'day' field from monthly dependabot schedule (#29)
- enable steady tick on chunk bars for real-time updates
- clear parallel progress panel on completion
- stable MultiProgress rendering for parallel chunks
- handle x-identity-content-length and disable gzip on ranges
- use RangedU64ValueParser for --connections validation
- replace flatten() with map_while(Result::ok) for clippy
- real progress bar with speed and ETA, spinner for unknown size
- redirect Go build temp into .gvm/tmp, add AV hint on Windows failure
- use previous patch version as bootstrap, not highest installed
- update Cargo.lock perl patch for gvm-rs package name
- update repo URL to gvm-rs in PowerShell installer
- update repo URL to gvm-rs in shell installer
- update upgrade help URL to gvm-rs
- update repo slug to jhonsferg/gvm-rs
- update Build help text for cross-platform
- add Windows support via make.bat
- add all missing Unwind symbols to libunwind stub (#13)
- add all missing Unwind symbols to libunwind stub
- compile libunwind stub with aarch64-linux-android-clang (#12)
- compile libunwind stub with aarch64-linux-android-clang
- copy real libunwind.a from NDK clang dir (#11)
- copy real libunwind.a from NDK clang dir instead of empty stub
- stub libunwind.a for NDK r21 linker in cross image (#10)
- stub libunwind.a for NDK r21 linker in cross image
- use android archive name when self-updating on Termux
- detect Termux and download android/bionic binary
- use bundled Mozilla CA roots to fix Termux CA cert error
- fire fish hook at startup via fish_prompt event and track PWD changes
- warn when .go-version names an uninstalled Go version
- fire zsh hook at startup via precmd and track PWD changes
- fire bash hook at startup via PROMPT_COMMAND and track PWD changes
- shared client with timeout and full error chain display (#6)
- use TMPDIR env var for mktemp instead of hardcoded /tmp (#5)
- silence 'gvm: command not found' on SSH login (#4)
- move Context import inside cfg(windows) functions to fix unused import on Linux
- remove shell configuration from install.ps1 - delegate to gvm setup
- remove shell configuration from install.sh - delegate to gvm setup
- don't label gvm-managed paths as non-gvm shadowed installations
- add junction check and accept ~/.gvm/current/bin/go as gvm-managed
- handle CRLF in Cargo.lock version patch on Windows runner
- remove unused bail import on non-Windows targets
- restore version to 1.0.0 after spurious bot downgrade
Refactoring
- pass config root to fetch_releases in install
- pass config root to fetch_releases in build
- make main.rs a thin wrapper around gvm_rs::run
- implement Command trait dispatch, remove dead code, fix clippy warnings (#27)
- drop http::set_connections calls
- remove connection-count global
- remove -j/--connections flag
- replace parallel segment engine with single-stream fetch
- extract download args from per-command variants
- move --connections/-j and --retries to per-command flags
- adapt GitHub API call to ureq error-on-status model
- use ureq agent and body read_json
- adapt fetch() to ureq response body API
- rewrite agent() for ureq Agent API
- replace reqwest with ureq for lighter blocking HTTP
- remove local remove_gvm_lines, use shell::strip_profile, clean login profile
Security
- replace curl-pipe-sh syft install with anchore/sbom-action
- pin trivy-action and trufflehog to verified commit SHAs
Install or upgrade
# Windows
irm https://raw.githubusercontent.com/jhonsferg/gvsn/main/install/install.ps1 | iex
# Or upgrade in-place
gvsn upgrade# Linux / macOS
curl -fsSL https://raw.githubusercontent.com/jhonsferg/gvsn/main/install/install.sh | sh
# Or upgrade in-place
gvsn upgradeVirusTotal Scan Results
| File | Analysis |
|---|---|
gvsn_windows_x86_64.zip |
https://www.virustotal.com/gui/file-analysis/NjI1Y2YwNzFkMzI5M2VkOTE5OWE5NTU0NWQzMDc5Mjg6MTc4NzU1NjMwNQ==/detection |
gvsn_windows_arm64.zip |
https://www.virustotal.com/gui/file-analysis/MjA2NDY1ZTRmY2RjOWM5ODRlYTQ3OTIzODJiN2Q3ZDg6MTc4NzU1NjMwNg==/detection |
gvsn_linux_x86_64.tar.gz |
https://www.virustotal.com/gui/file-analysis/N2UxYzdlZjA5YzQxMDNiNDAwMGZkZmRjMzZhOGUzNjE6MTc4NzU1NjMwNg==/detection |
gvsn_linux_s390x.tar.gz |
https://www.virustotal.com/gui/file-analysis/MGMwOGJlM2VjMDE1MjNjODQ5ZDA1NDQ2M2JiZDVkNzQ6MTc4NzU1NjMwNw==/detection |
gvsn_linux_riscv64.tar.gz |
https://www.vi... |