voidzero-dev / voidzero-dev/vite-plus

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

Đang mở
#2,181 0 bình luận 0 reaction 0 người được giao Xem trên GitHub
Ngôn ngữ chính
Rust
Star
5.8k
Fork
262
Merge trung bình
23 giờ 41 phút
Pull request đã merge (30 ngày)
138

Mô tả

## 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.

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Hướng nghiên cứu

Bắt đầu bằng cách tái hiện trường hợp Windows PowerShell với `opencode --version` và `opencode upgrade --print-logs`, sau đó kiểm tra cách Vite Plus đặt các tệp thực thi vào `~/.vite-plus/bin` và cách PATH phân giải chúng. Công việc được xem là hoàn tất khi một lần nâng cấp bên ngoài thành công khiến lệnh `opencode` thông thường chạy phiên bản mới được cài đặt mà không cần thay thế thủ công; hãy giữ nguyên phạm vi đã nêu quanh OpenCode, trừ khi các trường hợp khác được xác nhận.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Đánh giá

Công nghệ
node.js, rust
Lĩnh vực
cli, operating-systems, tooling
Loại issue
Lỗi
Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức độ hoạt động
Ít trao đổi
Độ rõ ràng
Khá rõ ràng
Mức phù hợp với người mới
50/100

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.