Skip to content

v1.8.0 — UX fixes, partial-version resolve, auto-use, did-you-mean, uninstaller#14

Merged
devhardiyanto merged 2 commits into
mainfrom
feat/v1.8.0-ux-resolver-uninstall
Jun 18, 2026
Merged

v1.8.0 — UX fixes, partial-version resolve, auto-use, did-you-mean, uninstaller#14
devhardiyanto merged 2 commits into
mainfrom
feat/v1.8.0-ux-resolver-uninstall

Conversation

@devhardiyanto

Copy link
Copy Markdown
Owner

Cross-platform 1.8.0 release from user UX feedback.

Fixes

  • Linux color leak: helpers use printf (not echo -e); the trailing \ in the apt/dnf dependency block no longer merges with the \033[0m reset and leaks \033[0m into the output (point 1).
  • Noisy persist warning: phpvm use only nudges about sourcing in a shell rc when phpvm isn't already sourced there (point 2).
  • Indented version output: php --version / composer --version now match the 2-space style in use, current, composer.

Features

  • Partial-version resolve: phpvm install 8 → latest 8.x, phpvm install 8.3 → latest 8.3.x. Linux uses the php.net JSON API; Windows extends Resolve-LatestPatch to accept a bare major (point 3).
  • Auto-use after install: a successful install activates the version immediately (point 4).
  • Did-you-mean: unknown commands get a Levenshtein-based suggestion instead of dumping the full help (point 6).
  • Uninstaller: new linux/uninstall.sh + windows/uninstall.ps1 reverse the installers — remove ~/.phpvm, strip the rc source block (Linux) / User PATH entry (Windows). Flags: --keep-versions, --yes. Does not revert Windows ExecutionPolicy.

Housekeeping

  • .gitattributes pins *.sh / *.bats to LF (avoid bad interpreter on Linux).
  • Tests: bats coverage for resolver + did-you-mean + Levenshtein; Pester for bare-major resolve, Levenshtein, Invoke-Unknown. 47/47 Pester pass, PSScriptAnalyzer clean.
  • Version bumped to 1.8.0 across all 5 sources; README updated.

Follow-up

  • B4 (composer global, removes the per-version "re-run after phpvm use" note) queued for 1.8.1.

🤖 Generated with Claude Code

…ean, uninstaller

Cross-platform release addressing user UX feedback.

Fixes:
- Linux color helpers use printf instead of `echo -e`, so a trailing `\` in
  the apt/dnf dependency block no longer merges with the \033[0m reset and
  leaks `\033[0m` into the output.
- `phpvm use` only warns about persisting to a shell rc when phpvm is not
  already sourced there, instead of on every call.
- `php --version` / `composer --version` output is indented to match the
  surrounding 2-space style (use, current, composer).

Features:
- `phpvm install 8` resolves to the latest 8.x and `phpvm install 8.3` to the
  latest 8.3.x (Linux via php.net JSON; Windows bare-major added to
  Resolve-LatestPatch).
- A successful install now auto-activates the version (no separate `use`).
- Unknown commands get a Levenshtein-based "Did you mean ...?" suggestion
  instead of dumping the full help.
- New uninstall.sh / uninstall.ps1 reverse the installers (--keep-versions,
  --yes); does not revert Windows ExecutionPolicy.

Also: .gitattributes pins *.sh/*.bats to LF; bats + Pester coverage for the
new resolver, did-you-mean, and Levenshtein; README; version bump to 1.8.0.
Forcing `*.ps1 eol=crlf` made the Linux CI runner check PowerShell files out
with CRLF, so the version-consistency grep captured a trailing `\r`
(`1.8.0\r`) and failed. Pin only *.sh / *.bats to LF (the files that actually
break with CRLF) and leave PowerShell to git's default handling.
@devhardiyanto devhardiyanto merged commit d07e0cc into main Jun 18, 2026
3 checks passed
@devhardiyanto devhardiyanto deleted the feat/v1.8.0-ux-resolver-uninstall branch June 18, 2026 16:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant