Releases: devhardiyanto/phpvm
Releases · devhardiyanto/phpvm
v1.8.2
Changes
- Merge pull request #16 from devhardiyanto/feat/v1.8.2-env-broadcast
- feat: v1.8.2 - broadcast WM_SETTINGCHANGE on PATH change (B1)
Full Changelog: v1.8.1...v1.8.2
v1.8.1
Changes
- Merge pull request #15 from devhardiyanto/feat/v1.8.1-composer-global
- feat: v1.8.1 - global Composer that follows the active PHP version (B4)
Full Changelog: v1.8.0...v1.8.1
v1.8.0
Changes
- Merge pull request #14 from devhardiyanto/feat/v1.8.0-ux-resolver-uninstall
- fix(ci): don't force CRLF on *.ps1 in .gitattributes
- feat: v1.8.0 - UX fixes, partial-version resolve, auto-use, did-you-mean, uninstaller
- Merge pull request #13 from devhardiyanto/fix/ext-install-arg-shift
- fix(windows): pass version arg through to ext install (was using ext name as version)
- Merge pull request #12 from devhardiyanto/fix/sqlsrv-pecl-redirect
- fix(ci): replace non-ASCII em-dash to satisfy PSScriptAnalyzer
- fix(ext): resolve sqlsrv PECL install across Win/Linux/macOS
- Merge pull request #11 from devhardiyanto/dependabot/github_actions/actions/checkout-6.0.3
- ci: bump actions/checkout from 4.3.1 to 6.0.3
- Merge pull request #10 from devhardiyanto/feat/security-hardening
- Harden CI against malicious PRs
Full Changelog: v1.7.0...v1.8.0
v1.7.0
Changes
- Merge pull request #9 from devhardiyanto/feat/sprint-5-linux-parity
- Fix SC2015 in phpvm_ext_laravel — use if/else instead of A && B || C
- Sprint 5: Linux parity + auto-release (1.7.0)
Full Changelog: v1.6.5...v1.7.0
v1.6.5 - Linux .phpvmrc auto-switch parity
Highlights
Linux feature parity for .phpvmrc auto-switch — closing the gap with Windows (shipped in v1.6.0).
What's new
.phpvmrcdiscovery + parsing for bash/zsh (_phpvm_find_rc,_phpvm_read_rc,_phpvm_resolve_rc)phpvm auto— session-only PATH switch tracked via$PHPVM_AUTO_ACTIVE, never touches persistent shell config- Shell hook auto-registered on source:
chpwd_functionsfor zsh,PROMPT_COMMANDfor bash — auto-switches PHP version on everycd phpvm hookcommand for status/install/uninstall- 21 bats-core tests under
tests/linux/, wired into the CI ubuntu job - README — Linux Auto-Switch section mirrors the Windows one
Behavior
- Resolution is offline-only: a
cdnever triggers a ~25 MB silent download. Missing version → warn + skip. - Auto-switch only touches
$PATHfor the current shell session. - Set
PHPVM_AUTO_ACTIVE=0to disable per-session.
CI
- ShellCheck + bats now run on every PR alongside the Windows Pester suite
- 3 jobs total, all required: Windows lint+tests, Linux shellcheck+bats, Version consistency
Compatibility
- bash 4+ and zsh
- PowerShell 5.1 + 7 (unchanged from 1.6.0)
Full Changelog: v1.6.0...v1.6.5
phpvm 1.6.0
Highlights
.phpvmrc per-project version switching — the killer feature for multi-project workflows. Drop a .phpvmrc file in your project root with a PHP version; phpvm switches your shell to that version automatically.
New commands
phpvm auto # resolve .phpvmrc upstream and switch (session-only)
phpvm hook install # add a snippet to $PROFILE for per-prompt auto-switching
phpvm hook uninstall # remove the snippet
phpvm hook status # check whether the hook is installed.phpvmrc syntax
8.3.0 # full semver
8.3 # major.minor - picks highest installed patch
v8.3.0 # leading `v` accepted
# project: api # comments allowed
Innermost .phpvmrc wins when projects are nested.
How it works
phpvm autoprepends$VERSIONS_DIR\<ver>to$env:PATHfor the current session — does NOT touch the persistent User PATH thatphpvm usemanages. Your global default stays intact.- The hook composes with existing prompt functions (Starship, oh-my-posh) by wrapping, not replacing.
- Active version tracked in
$env:PHPVM_AUTO_ACTIVEso repeat calls are no-ops and leaving a project cleanly removes the prepend. - Resolution is offline-only —
phpvm autonever auto-installs missing versions, just warns with an install hint.
Other
- README expanded with an Auto-Switch section and documents three env vars (
PHPVM_SKIP_HASH,PHPVM_NO_UPDATE_CHECK,PHPVM_AUTO_ACTIVE). - Documents
phpvm install 8.3partial-version syntax (introduced in 1.4.6 but never written down). - 15 new Pester tests; 40 total.
Upgrade
phpvm upgradeFull diff: v1.5.0...v1.6.0
phpvm 1.5.0
Highlights
- SHA-256 verification on every download —
phpvm installandphpvm ext install xdebugnow check checksums against the upstream source and abort on mismatch. Falls back to warn-only for older archives that don't publish checksums. - CI on every push / PR — Windows lint + tests, Linux shellcheck, version consistency. No more silent regressions.
- 22 offline Pester tests covering compiler mapping, byte[] decoding, version-index parsing, checksum lookup, and the ini-extension regex.
- PHP 5.x and 7.0 / 7.1 installs work again —
Get-VSVersionnow maps 5.x → vc11, 7.0 / 7.1 → vc14 instead of silently 404'ing.
New
phpvm install <major.minor>was added in 1.4.6 and is now validated end-to-end across 5.6, 7.0, 7.3, 8.5.$env:PHPVM_SKIP_HASH=1to skip SHA-256 verification in environments with content-rewriting corporate proxies.
Bugfix
Resolve-LatestPatchwas case-sensitive and missed PHP 7.x archives (filenames useVC15uppercase). Now case-insensitive.Get-VSVersionfell through tovs17for PHP 5.x and usedvc15for PHP 7.0 / 7.1 — wrong on both counts.- Renamed shadowed
$matchesto$hitsinInstall-XDebugto silencePSAvoidAssignmentToAutomaticVariable.
Upgrade
phpvm upgradeFull diff: v1.4.6...v1.5.0
phpvm 1.4.6
Bugfix
phpvm composerno longer crashes on PowerShell 7 withMethod invocation failed because [System.Byte] does not contain a method named 'Trim'.Invoke-WebRequestreturnsbyte[]content when the response has notext/*Content-Type (e.g. composer'sinstaller.sig); we now decode to UTF-8 before calling string methods. Same fix routed through the update check, self-upgrade, PECL listing, and xdebug.org listing.
New
phpvm install 8.3(partial version) — auto-resolves to the latest patch published on windows.php.net. You no longer need to remember the exact patch number.
Improvements
- 5s timeout on PHP download URL probes — no more multi-minute hangs on slow mirrors.
- Skip the daily update check for
help,version,list,current,which,ini— local commands stay snappy. phpvm ext laravelsnapshotsphp -monce instead of re-shelling per extension.- Drop redundant
Unblock-Filecalls on already-extracted files.
Upgrade
phpvm upgradeFull diff: b403125...v1.4.6