voidzero-dev / voidzero-dev/vite-plus

Vite Plus PATH shim can shadow external CLI upgrades (OpenCode example)

Offen
#2,181 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
Vorherrschende Sprache
Rust
Sterne
5.8k
Forks
262
Ø Merge
1 T. 34 Min.
Gemergte PRs (30 T.)
135

Beschreibung

## Summary

On Windows, a Vite Plus-owned executable in `~\.vite-plus\bin` can remain ahead of a newer version installed by that CLI's own updater. The shell command then continues to run the stale Vite Plus executable.

OpenCode is the confirmed example below. This may affect any externally updatable CLI for which Vite Plus installs an executable with the same command name, but this report does **not** claim other packages are currently affected.

## Environment

- Windows
- Vite Plus: `0.2.4`
- OpenCode before upgrade: `1.17.18`

## Reproduction

```powershell
opencode --version
# 1.17.18

opencode upgrade --print-logs
```

The updater reported:

```text
Using method: npm
From 1.17.18 → 1.18.1
Upgrade complete
```

But immediately afterwards:

```powershell
opencode --version
# 1.17.18
```

## Investigation

The command resolved to the Vite Plus-owned path:

```text
C:\Users\\.vite-plus\bin\opencode.exe
```

The updater had installed OpenCode `1.18.1` at:

```text
C:\Users\\.vite-plus\js_runtime\node\22.19.0\node_modules\opencode-ai\bin\opencode.exe
```

Running that executable directly returned `1.18.1`; the PATH executable remained at `1.17.18`.

## Scope checked

- **Confirmed:** `opencode` was shadowed by the stale Vite Plus executable.
- **Not implicated in this installation:** `npm`, `npx`, and `corepack` resolve to NVM rather than `~\.vite-plus\bin`.
- **Potentially affected pattern:** any CLI that manages its own upgrades while Vite Plus also places a same-named executable earlier on PATH.

## Expected behavior

After a CLI reports a successful self-upgrade, its normal shell command should run the upgraded version.

## Workaround

Replacing the stale Vite Plus executable with the newly installed OpenCode executable made `opencode --version` report `1.18.1`.

## Suggested direction

Vite Plus could avoid installing static, same-named binaries for externally self-updating CLIs, make them forwarding shims, or provide a way to refresh the Vite Plus bin entry after an external upgrade.

Beitragsleitfaden

Beitragsleitfaden öffnen

Rechercherichtung

Start by reproducing the Windows PowerShell case with `opencode --version` and `opencode upgrade --print-logs`, then inspect how Vite Plus places executables in `~/.vite-plus/bin` and how PATH resolves them. Done means a successful external upgrade causes the normal `opencode` command to run the newly installed version without manual replacement; preserve the stated scope around OpenCode unless other cases are confirmed.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
node.js, rust
Bereich
cli, operating-systems, tooling
Issue-Typ
Bug
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Ruhig
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
50/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.