fix(cli): handle Homebrew installs during first-run setup - #2729
Conversation
CLI artifact sizes (
|
| Artifact | Format | Base | PR | Change |
|---|---|---|---|---|
packages/cli/dist |
Directory total | 2.15 MiB | 2.15 MiB | 0 B (0.00%) |
packages/core/dist |
Directory total | 3.95 MiB | 3.95 MiB | 0 B (0.00%) |
| Combined package dist | Directory total | 6.09 MiB | 6.09 MiB | 0 B (0.00%) |
vp (Linux x64) |
Binary | 11.18 MiB | 11.22 MiB | +36.01 KiB (+0.31%) |
vp (Linux x64) |
gzip -9 | 4.84 MiB | 4.85 MiB | +14.37 KiB (+0.29%) |
| NAPI (Linux x64) | Binary | 32.01 MiB | 32.01 MiB | 0 B (0.00%) |
| NAPI (Linux x64) | gzip -9 | 12.69 MiB | 12.69 MiB | 0 B (0.00%) |
vp (macOS ARM64) |
Binary | 8.33 MiB | 8.36 MiB | +32.31 KiB (+0.38%) |
vp (macOS ARM64) |
gzip -9 | 4.22 MiB | 4.23 MiB | +13.99 KiB (+0.32%) |
| NAPI (macOS ARM64) | Binary | 39.64 MiB | 39.64 MiB | 0 B (0.00%) |
| NAPI (macOS ARM64) | gzip -9 | 17.01 MiB | 17.01 MiB | 0 B (0.00%) |
vp (Windows x64) |
Binary | 9.06 MiB | 9.10 MiB | +38.50 KiB (+0.41%) |
vp (Windows x64) |
gzip -9 | 3.96 MiB | 3.97 MiB | +15.62 KiB (+0.39%) |
| NAPI (Windows x64) | Binary | 26.98 MiB | 26.98 MiB | 0 B (0.00%) |
| NAPI (Windows x64) | gzip -9 | 10.80 MiB | 10.80 MiB | +8 B (+0.00%) |
| Trampoline (Windows x64) | Binary | 13.50 KiB | 13.50 KiB | 0 B (0.00%) |
| Trampoline (Windows x64) | gzip -9 | 7.03 KiB | 7.03 KiB | 0 B (0.00%) |
| Installer (Windows x64) | Binary | 4.53 MiB | 4.53 MiB | 0 B (0.00%) |
| Installer (Windows x64) | gzip -9 | 2.12 MiB | 2.12 MiB | -1 B (-0.00%) |
Registry bridge build (
|
| Package | Version |
|---|---|
vite-plus |
0.0.0-commit.2af8e925d1dfe311f05a45f153fa8c6e37fbe359 |
@voidzero-dev/vite-plus-core |
0.0.0-commit.2af8e925d1dfe311f05a45f153fa8c6e37fbe359 |
Install the Vite+ CLI built from this commit, then migrate a project:
# macOS / Linux
curl -fsSL https://raw.githubusercontent.com/voidzero-dev/vite-plus/2af8e925d1dfe311f05a45f153fa8c6e37fbe359/packages/cli/install.sh | VP_PR_VERSION=2729 VP_LEGACY_INSTALLER_URL=https://raw.githubusercontent.com/voidzero-dev/vite-plus/2af8e925d1dfe311f05a45f153fa8c6e37fbe359/packages/cli/install-legacy.sh bash# Windows (PowerShell)
$env:VP_PR_VERSION="2729"; $env:VP_LEGACY_INSTALLER_URL="https://raw.githubusercontent.com/voidzero-dev/vite-plus/2af8e925d1dfe311f05a45f153fa8c6e37fbe359/packages/cli/install-legacy.ps1"; irm https://raw.githubusercontent.com/voidzero-dev/vite-plus/2af8e925d1dfe311f05a45f153fa8c6e37fbe359/packages/cli/install.ps1 | iexOr download the standalone Windows installer built from this commit:
| Architecture | Installer |
|---|---|
| x64 | vp-setup-x86_64-pc-windows-msvc.exe |
| Arm64 | vp-setup-aarch64-pc-windows-msvc.exe |
GitHub requires you to sign in and downloads each installer as a ZIP artifact. Extract vp-setup.exe, then run it against this preview build:
.\vp-setup.exe --version "0.0.0-commit.2af8e925d1dfe311f05a45f153fa8c6e37fbe359" --registry "https://registry-bridge.viteplus.dev/"After installing, upgrade the current project's vite-plus to this test build with:
vp migrateOr point your package manager at the bridge registry https://registry-bridge.viteplus.dev/:
| Package manager | Registry config |
|---|---|
| npm / pnpm / Bun | .npmrc: registry=https://registry-bridge.viteplus.dev/ |
| Yarn (v2+) | .yarnrc.yml: npmRegistryServer: "https://registry-bridge.viteplus.dev/" |
Then pin the build (vite aliases to vite-plus-core; pnpm can use a catalog, npm an overrides entry):
{
"devDependencies": {
"vite-plus": "0.0.0-commit.2af8e925d1dfe311f05a45f153fa8c6e37fbe359",
"vite": "npm:@voidzero-dev/vite-plus-core@0.0.0-commit.2af8e925d1dfe311f05a45f153fa8c6e37fbe359"
}
}|
✅ Staging deployment successful! Preview: https://viteplus-staging.void.app/ |
🐳 Docker preview imageBuilt from this PR's registry bridge build:
# remove any stale local copy from a previous run, then pull fresh
docker rmi ghcr.io/voidzero-dev/vite-plus:pr-2729 2>/dev/null; docker pull ghcr.io/voidzero-dev/vite-plus:pr-2729Quick check: docker run --rm ghcr.io/voidzero-dev/vite-plus:pr-2729 vp --versionSee docs/guide/docker.md for usage. |
eab859e to
09aaab8
Compare
There was a problem hiding this comment.
When a user run Vite+ for the first time, it will run self-setup logic first and then continue running the original commands.
This is an intentional design in my previous PR, and I think we shouldn't do that for HomeBrew installation. Commands like vp env use doesn't work, shims like node / pnpm wouldn't be loaded at that time, either.
We'd better prompt users to restart the terminal after self-setup, and stop running users' commands like normal installation for HomeBrew. Adding a document section for that might also be good.
That said, we still need to keep commands running behavior by default to ensure the compatibility.
liangmiQwQ
left a comment
There was a problem hiding this comment.
The new self-setup mark file location and other ideas LGTM :)
This release fixes Homebrew setup, Windows installation, and workspace dependency commands. It also updates Rolldown, Oxlint, and Oxfmt. ### Fixes & Enhancements - Homebrew installations complete setup once, retain their bundled CLI, and direct upgrades to `brew upgrade vite-plus` ([#2729](#2729)), by @fengmk2. - Windows installations decode remote legacy PowerShell scripts correctly ([#2701](#2701)), by @james-elicx. - `vp migrate` removes the unsupported React Refresh `allowCompoundComponents` option and warns about possible lint errors ([#2702](#2702)), by @fengmk2. - New monorepo packages use the root lint configuration without a conflicting nested configuration ([#2667](#2667)), by @semimikoh. - Yarn Classic rejects filtered additions and removals instead of changing unintended dependencies ([#2705](#2705)), by @jong-kyung. - Yarn Berry rejects unsupported filtered updates and respects filters during recursive removal ([#2709](#2709), [#2712](#2712)), by @jong-kyung. - Yarn and Bun warn when a command does not support `--workspace-root`. Yarn Classic accepts root additions through `vp add` and `vp install <packages>` ([#2713](#2713)), by @jong-kyung. - `vp dedupe` warns about unsupported check options ([#2717](#2717)), by @jong-kyung. - Rust command output respects `NO_COLOR` ([#2716](#2716)), by @liangmiQwQ. - Windows commands find lowercase shims in directories with case-sensitive file names ([#2727](#2727)), by @fengmk2. ### Dependency Updates - Update `rolldown@1.2.8` to `rolldown@1.2.9`, `oxlint@1.82.0` to `oxlint@1.83.0`, and `oxfmt@0.67.0` to `oxfmt@0.68.0`. The new lint and format versions can flag code that passed before. Run `vp fmt` after upgrading if CI runs `vp check` ([#2725](#2725)), by @voidzero-guard[bot]. ### Docs - Reorganize the guide and expand the global CLI sections ([#2684](#2684), [#2715](#2715)), by @liangmiQwQ. - Explain Nushell startup requirements and recovery for XDG installations ([#2704](#2704)), by @naokihaba. ### Chore - Add documentation previews for fork PRs ([#2691](#2691)), by @fengmk2. - Publish `@voidzero-dev/vite-plus-prompts` with npm releases ([#2707](#2707)), by @fengmk2. - Reuse native preview installations and clarify release evidence and package checks ([#2693](#2693), [#2708](#2708)), by @fengmk2. - Stabilize dependency-removal snapshots and temporarily skip Socket Firewall tests on Windows ([#2711](#2711), [#2730](#2730)), by @fengmk2. - Clarify package-manager comments and update the preview workflow reference ([#2706](#2706), [#2714](#2714)), by @jong-kyung. - Run dependency upgrade automation with Kimi K3 ([#2723](#2723)), by @Brooooooklyn. ### Bundled Versions | Tool | Version | Source | | --- | --- | --- | | `vite` | `8.3.0` | [`434e8e9`](vitejs/vite@434e8e9) | | `rolldown` | `1.2.9` | [`5b4746e`](rolldown/rolldown@5b4746e) | | `tsdown` | `0.23.0` | [npm](https://npmx.dev/package/tsdown/v/0.23.0) | | `vitest` | `4.1.11` | [npm](https://npmx.dev/package/vitest/v/4.1.11) | | `oxlint` | `1.83.0` | [npm](https://npmx.dev/package/oxlint/v/1.83.0) | | `oxlint-tsgolint` | `7.0.2001` | [npm](https://npmx.dev/package/oxlint-tsgolint/v/7.0.2001) | | `oxfmt` | `0.68.0` | [npm](https://npmx.dev/package/oxfmt/v/0.68.0) | ### Upgrade ```bash vp upgrade ``` ### New Contributors @james-elicx **Full Changelog**: v0.3.2...v0.3.3 --- Merging this PR will trigger the release workflow. --------- Co-authored-by: voidzero-guard[bot] <278573678+voidzero-guard[bot]@users.noreply.github.com> Co-authored-by: MK <fengmk2@gmail.com>
Fixes #2719.
First-run setup checks
.vp-setup-completebesidevp, but writes it beside the managed copy. External installations therefore repeat setup and ignore their bundled JavaScript. A retry can also fail withEACCESwhen an interrupted setup leaves a read-only binary copy.External binaries now record completed setup under
<STATE>/self-setup. Complete Unix packages retain their binary and bundled JavaScript. Binaries without a bundled CLI reuse their completed managed installation. Setup replaces incomplete binary copies atomically.Unix shims follow a public
vpentrypoint that resolves to the running binary. This keeps them valid after package replacement. Setup preserves saved Node.js and package-manager preferences when the external binary changes.Homebrew installations direct
vp upgradetobrew upgrade vite-plusand disable npm update checks.vp imploderemoves user data and directs users tobrew uninstall vite-plusfor package removal.vp env doctorreports Homebrew ownership and checks the CLI path separately from the user shim directory.Explicit installer requests still run setup. Vite+-managed installations keep their existing upgrade and rollback behavior.