Releases: voidzero-dev/vite-plus
Release list
vite-plus v0.3.1: manage package-manager versions with vp env
vp env now manages Node.js and package-manager versions together. This release also fixes TanStack Start routing and stale Vitest aliases.
Breaking Changes
Package-manager setup
Vite+ replaces Corepack with managed npm, pnpm, yarn, and bun commands. It removes the corepack shim and legacy global package-manager installations (#2391), by @liangmiQwQ.
Replace Corepack setup commands in shell profiles, CI jobs, and Dockerfiles:
| Previous setup | Replacement |
|---|---|
corepack enable |
vp env setup |
vp install -g pnpm@<version> |
vp env default pnpm@<version> |
vp install -g yarn@<version> |
vp env default yarn@<version> |
vp install -g bun@<version> |
vp env default bun@<version> |
vp install -g corepack |
Use the managed package-manager commands directly |
Use vp env pin <manager>@<version> to set a project version.
vp env command scope and JSON output
Unscoped vp env commands now operate on Node.js and package managers. Package managers support independent defaults, project pins, session overrides, and installation commands (#2398), by @liangmiQwQ.
Add node to limit an operation to Node.js, for example, vp env off node or vp env unpin node. Bare versions, such as vp env default 22.19.0, still select Node.js.
Update scripts that read JSON output:
| Command | New output structure |
|---|---|
vp env current --json |
node and package_manager objects |
vp env list --json, vp env list-remote --json |
node and package_managers groups |
See the environment guide.
vp pack migration to tsdown@0.23
vp pack now uses tsdown@0.23, which removes deprecated options and changes defaults (#2614), by @fengmk2.
- Run
vp migrateto update supported static configurations and package scripts, including projects that already use Vite+. - Check migration warnings in
vite.config.*,tsdown.config.*, andpackage.json. - Update dynamic configurations manually. Arrays built with
.map()require manual changes, even when migration reports no warning. - Run
vp packto check the result.
| Previous option | Replacement |
|---|---|
bundle: false |
unbundle: true |
outExtension |
outExtensions |
publicDir / --public-dir |
copy / --copy |
removeNodeProtocol: true |
nodeProtocol: 'strip' |
injectStyle |
css.inject |
inlineOnly / deps.onlyAllowBundle |
deps.onlyBundle |
noExternal |
deps.alwaysBundle |
skipNodeModulesBundle: true / deps.skipNodeModulesBundle: true |
deps.neverBundle: true |
dts.tsgo: true / dts.oxc: true |
dts.generator: 'tsgo' / dts.generator: 'oxc' |
Migration preserves the previous defaults for dependency resolution and ATTW.
tsdown no longer supports Node.js 25. Use Node.js ^22.18.0, ^24.11.0, or >=26.0.0. The programmatic build() API now returns { bundles, watch }.
See the complete migration guide for declaration and TypeScript module-resolution changes.
CLI argument validation
vp staged, vp config, vp hooks, vp migrate, and vp create now reject unsupported options and extra positional arguments (#2523), by @fengmk2.
Remove unsupported arguments from scripts. For example, replace vp config --hooks-only with vp config --no-agent.
Highlights
- Fix TanStack Start HTTP
404responses caused by separate Vite runtime copies (#2617), by @fengmk2. - Reduce the Windows
vp-shim.exesize from214 KiBto14 KiB(#2466), by @fengmk2. - Add
vp check --quietto hide lint warning diagnostics while retaining errors and summary counts (#2593), by @RSS1102.
Features
- Add
vp sync-versions --jsonso automation can request dependency alignment plans from manifest snapshots without changing project files (#2600), by @afonsojramos. - Make
vp create --gitsuggest an initial commit command after Git initialization (#2581), by @fengmk2. - Make
vp migratereplace frozenvoidzero-dev/setup-vp@v1workflow references with the supported version pin (#2540), by @fengmk2. - Upgrade
rolldownfrom1.2.5to1.2.7,tsdownfrom0.22.14to0.23.0, and Oxc from0.146.0to0.148.0. Upgradeoxlintfrom1.79.0to1.81.0andoxfmtfrom0.64.0to0.66.0. These versions can flag code that passed before. Runvp fmtafter upgrading if CI runsvp check(#2580, #2613), by @voidzero-guard[bot].
Fixes & Enhancements
- Resolve package-manager versions without rewriting
package.json. Usevp env pinorvp env unpinto change project declarations explicitly (#2399), by @liangmiQwQ. - Let
vp migraterepair stalevitestaliases that previously prevented the CLI from starting (#2605), by @fengmk2. - Keep Vite DevTools within the version ranges supported by the bundled Vite (#2559), by @fengmk2.
- Keep automatic Vitest upgrades on the supported
4.xmajor (#2612), by @fengmk2. - Remove a deprecated
tsdownoption from the prompts package build (#2597), by @jong-kyung.
Refactor
- Use the updated
whichdependency to resolve relativePATHentries (#2583), by @RSS1102. - Remove the unused
async-traitannotation fromJsRuntimeProvider(#2538), by @jong-kyung.
Docs
- Add Azure Pipelines setup instructions (#2553), by @naokihaba.
- Correct Zed Oxc formatter settings and include JSX and TSX (#2592), by @joschuba.
- Add Wrangler deployment configuration for the documentation site (#2596), by @mdong1909.
- Explain conflicts between pnpm and Vite+ runtime management, including the
runtimeOnFailsetting (#2620), by @liangmiQwQ.
Chore
- Run CLI snapshots without published release packages (#2625), by @fengmk2.
- Update the release-manager skill with package-install checks, changelog guidance, and announcement handling (#2548), by @fengmk2.
- Wait for npm dependencies to become available before publishing dependent release packages (#2601), by @fengmk2.
- Remove old Docker preview images (#2539), by @fengmk2.
- Stabilize external-tool snapshots and isolate npm network cases (#2577, #2604), by @fengmk2.
- Avoid unreliable Fish PPA setup in CI (#2560), by @fengmk2.
- Update the
vinextfixture to an upstream fix (#2571), by @jong-kyung. - Stabilize the pnpm snapshot and Nuxt build in CI (#2591), by @voidzero-guard[bot].
- Pin pnpm in project-creation build-approval fixtures (#2616), by @liangmiQwQ.
- Remove unused documentation components, assets, and the typewriter dependency (#2550, #2562), by @jong-kyung.
- Remove duplicate
tempfiledependencies, an unused runtime helper, and unused error variants. Update theunit_bindingslint name (#2555, #2558, #2566, #2567), by @jong-kyung. - Update GitHub Actions dependencies, including
actions/setup-nodev7(#2544, #2545, #2582, #2618), by @renovate[bot]. - Update
crate-ci/typosthroughv1.50.1(#2584, #2589, #2609), by @renovate[bot]. - Update repository pnpm to
11.24.0(#2590), by @renovate[bot]. - Update
voidzero-dev/setup-vptov1.19.0(#2619), by @renovate[bot].
Bundled Versions
| Tool | Version | Source |
|---|---|---|
vite |
8.2.2 |
de1111a ... |
vite-plus v0.3.0: XDG install layout, tsup project migration, and Bun 1.4 support
Fresh installs now use a split directory layout instead of a single ~/.vite-plus root. Unix follows the XDG base directory specification, and Windows uses the standard %LOCALAPPDATA% and %APPDATA% folders. Existing ~/.vite-plus installs keep their current directory layout. vp migrate also converts tsup projects, and vp now sends Bun 1.4 package-manager commands to bun directly. The published npm package shrank by about half, and the upgrade check no longer delays each command.
Breaking Changes
-
Fresh installs now use a split directory layout instead of a single root: XDG base directories on Unix, and the standard known folders on Windows. Existing
~/.vite-plusinstalls keep their current layout, and the installer does not move their files.VP_HOMEstill selects the single-root layout (#2346), by @forehaloCategory Unix default Windows default Single-root ( VP_HOME)bin ~/.local/share/vite-plus/bin%LOCALAPPDATA%\vite-plus\bin<root>/bindata ~/.local/share/vite-plus%LOCALAPPDATA%\vite-plus\data<root>cache ~/.cache/vite-plus%LOCALAPPDATA%\vite-plus\cache<root>/cacheconfig ~/.config/vite-plus%APPDATA%\vite-plus<root>state ~/.local/state/vite-plus%LOCALAPPDATA%\vite-plus\state<root>The installer configures your shell for the new location, and CI that installs through
setup-vpkeeps the single-root layout automatically. Update each hard-coded~/.vite-plus/binpath, such as a path in a Dockerfile.vp upgradeleaves an existing install where it is. To move one to the split layout, remove it and install again:vp implode unset VP_HOME VP_DATA_DIR VP_BIN_DIR VP_CACHE_DIR curl -fsSL https://vite.plus | bash
On Windows, run
vp implode, thenRemove-Item Env:\VP_HOME, Env:\VP_DATA_DIR, Env:\VP_BIN_DIR, Env:\VP_CACHE_DIR -ErrorAction SilentlyContinue, thenirm https://vite.plus/ps1 | iex. Also delete any persistentVP_HOMEorVP_*_DIRdefinition from your shell profile or system environment, because a fresh install still honors them andVP_HOMEselects the single-root layout.vp imploderemoves every Vite+ managed Node.js runtime, global package, configuration file, and cache. Stay on your current layout if you would rather not rebuild that state. See Move an existing install to the split directory layout.
Highlights
vp migratenow convertstsupprojects. It replaces thetsupdependency and script withvp pack. It also changestsup.config.tsto atsdown.config.tsthat imports fromvite-plus/pack(#2434), by @KTrain5169- Shell integrations now accept the global
-Cflag.vp -C <dir> env usechanges the environment of your current shell. The-C<dir>and-C=<dir>forms also work. In zsh, Fish, Nushell, and PowerShell,vprcompletion keeps the working directory when it changes the command tovp run(#2508), by @simulacre7 - The published
vite-plusnpm package shrank from 1.05 MB to 516 kB, a 51% reduction. It now includes only Markdown files from the documentation workspace. It no longer includes VitePress tooling, images, or deployment files (#2480), by @liangmiQwQ
Features
- With Bun
1.4or later, Vite+ forwards these commands and flags tobun. Earlier Bun versions keep their fallback or unsupported behavior and report the required Bun version (#2513), by @jong-kyungvp deduperunsbun dedupe, including--checkvp pm prunerunsbun prunevp pm audit --fixrunsbun audit fixvp add,vp remove, andvp updatesend--filtertobunvp add --save-catalogsends--catalogtobun
- The upgrade check no longer delays fast commands. It runs in a separate process. It reports an available update during a later command, and commands no longer wait for the registry (#2380), by @liangmiQwQ
- Upgrade the bundled toolchain (#2443, #2500, #2504, #2519, #2532), by @voidzero-guard[bot]:
vite:8.2.1to8.2.2rolldown:1.2.3to1.2.5vitest:4.1.10to4.1.11oxlint:1.77.0to1.79.0oxfmt:0.62.0to0.64.0- Oxc packages and crates:
0.143.0to0.146.0 - Vite+ now accepts
@vitejs/devtools0.5.x. The optional peer range is^0.4.0 || ^0.5.0. This repository uses0.5.2. oxfmtandoxlintcan report new issues after the upgrade. Runvp checklocally. Usevp fmtto fix formatting changes.
vp toolchaindraws its tree with Unicode glyphs. It no longer uses ASCII connectors (#2442), by @liangmiQwQ
Fixes & Enhancements
- At a workspace root, bare app commands now use
defaultPackageor detected root configuration before they select a member package. A workspace without member packages runs the command in the root (#2530, #2533), by @fengmk2 vp upno longer changes"vite": "catalog:"to a version alias underpnpm. Catalog references now stay unchanged during an update. Runvp migrateonce to correct an existing project (#2425), by @fengmk2- If the server accepts range requests, an interrupted runtime download continues from the bytes on disk. It does not start again (#2452), by @tarikermis
- The local CLI shows the install instructions when you run a global-only command such as
env,upgrade, orimplode(#2522), by @jong-kyung vp up -gasks npm for globally installed package versions. A project-level setting no longer makes the lookup fail and hide an available update (#2438), by @jong-kyung- When hooks are disabled through
HUSKY=0,VP_GIT_HOOKS=0, orVITE_GIT_HOOKS=0,vp configskips the Git lookup. This letsvp configrun in a container without Git (#2458), by @tarikermis vp create vite:monoreponow asks once about Git and runsgit initonce (#2417), by @jong-kyungvp createdoes not ask about pre-commit hooks when you choose not to initialize Git (#2477), by @liangmiQwQvp pack --no-configdoes not read the Vite config. A localvite.config.*file, itspackoptions, and its hooks no longer run (#2486), by @jong-kyungvp pack --helpshows the supported--no-configoptions (#2487), by @jong-kyungvp staged --no-concurrentworks again.--concurrentacceptstrue,false, or a number greater than0. It rejects other values. Vite+ also rejects--no-cwd,--no-diff, and--no-diff-filter(#2501), by @RSS1102vpreads about 450 kB less JavaScript at start. It loads the--initand--migratehelpers only when a command needs them (#2490), by @jong-kyung- The standalone
vpbinary is smaller. Vite+ no longer copies the package-manager command tree, and it disables unused tar and dialoguer features (#2507), by @liangmiQwQ - A generated Fish environment file escapes the special characters in a path (#2492), by @fengmk2
- A generated POSIX shell environment file escapes the special characters in a path. It also removes each duplicate Vite+ bin entry (#2494), by @fengmk2
- The generated
cmd.exewrapper preserves the exit status fromvp env use. It does not apply output after a failed command (#2496), by @fengmk2 vp execresolves a relativePATHentry such as./node_modules/.binagainst the working directory of the command (#2350), by @RSS1102- Older GitLab
setup-vptemplates continue to work. The installer selects the legacy layout for them. A template can select the new layout withVP_VPDIRS_AWARE=1(#2520), by @fengmk2 - The Windows installer checks the directory variables and the requested version before it downloads a payload. It also repairs a broken
currentjunction (#2505), by @fengmk2 install.shdoes not show shell configuration warnings whenCI=true(#2511), by @fengmk2- On Windows,
vp implodecan remove Vite+ roots that contain long or locked paths. A native helper does this work, and it retries cleanup and writes an error log if cleanup fails (#2510), by @fengmk2 - A Windows trampoline sidecar must have a `vite-plus-shim-...
vite-plus v0.2.9: add `vp toolchain` and `vp hooks`, and fix `vp run` inside Codex and Claude Code sandboxes
vp toolchain prints the tools, versions, and bundling relationships in the active release. vp hooks manages the Vite+ dispatcher for Git hooks, and removes the manual setup steps. vp run no longer fails in the default Codex CLI and Claude Code sandboxes. Those sandboxes deny Unix sockets and shared memory, which task IPC and file-access tracking used. The rest of the release makes the install path more reliable. It fixes npm 12 blocked install scripts, Yarn 2+ integrity pins, and baseline Bun builds for older CPUs. It also fixes downloads that stopped on slow connections.
Highlights
- New
vp toolchaincommand. It prints the tools, versions, and bundling relationships in the active Vite+ release as a tree. The tree shows vite-plus, core, vite, rolldown, oxc, oxc-resolver, and the compiled Vite Task with its build time and revision. Give a tool name to select part of the tree. Use--jsonfor machine-readable output. Use--globalfor the global release (#2111), by @fengmk2 - New
vp hookscommand. It manages the Vite+ dispatcher for Git hooks.enableinstalls or refreshes the dispatcher and setscore.hooksPath.disableremoves the dispatcher and keeps that preference, soprepareandvp configdo not install it again.statusshows the current state. Use--hooks-dirto set a custom directory. Vite+ keeps that directory for later commands. Vite+ does not change project-owned hooks,stagedconfig, orpackage.jsonlifecycle scripts (#2341), by @dennybiasiolli vp runnow works in the default Codex CLI and Claude Code sandboxes. Before this release, a cached task failed withFailed to set up task communication: Operation not permitted. The task code never started. Automatic file-access tracking also failed. Task caching and input tracking now work in both default profiles. You do not need extra sandbox permissions (vite-task#569, vite-task#576), by @wan9chi
Features
vp createnow shows the dependencies whose install scripts npm 12 blocked. Before this release, Vite+ left those dependencies unbuilt and gave no message. To approve them,vp createrunsvp pm approve-buildsand thenvp pm rebuild(#2336), by @fengmk2- Large downloads no longer stop on slow connections. Node.js tarballs and package-manager tarballs now use a 10 minute timeout. Before this release, they used the shared 2 minute per-request limit. That limit stopped healthy downloads below approximately 250 KB/s. It also made
vp env installandvp migrateimpossible to complete. SetVP_DOWNLOAD_TIMEOUTto a different number of seconds (#2386), by @tarikermis - Package-manager downloads now show a byte progress bar. The managed Node.js runtime already showed one. A slow download no longer looks stopped (#2369), by @semimikoh
- You can now select JetBrains editors (IntelliJ, WebStorm, and similar) in the editor setup question. Vite+ writes the Oxc plugin ID to
.idea/externalDependencies.xml. The docs now describe the gitignore strategy for.idea(#2204, #2378), by @KTrain5169 vpnow shows a warning when it falls back to the global CLI in a project that has no project-localvite-plus. If the project declares the dependency,vptells you to runvp install. If the project does not declare it,vppoints to the migration guide.vp migrateand commands outside a project stay silent (#2362), by @liangmiQwQ- Generated editor settings now disable nested Oxlint config resolution. The Vite+ config stays authoritative (#2331), by @liangmiQwQ
Note
Upstream toolchain upgrade: vite 8.2.0 -> 8.2.1, rolldown 1.2.2 -> 1.2.3, oxlint 1.76.0 -> 1.77.0, oxfmt 0.61.0 -> 0.62.0, and the oxc npm packages and Rust crates 0.142.0 -> 0.143.0. oxfmt and oxlint both changed. The new versions can report problems in code that passed before. If your CI runs vp check, run vp fmt after you upgrade (#2373), by @voidzero-guard[bot]
Fixes & Enhancements
- Yarn 2+ pins from
corepack usenow verify against the extracted CLI (bin/yarn.js), not the npm tarball.vp installno longer fails on a cold cache.vp runno longer downloads Yarn again on every run (#2227), by @leslieeilsel vp devno longer crashes at startup withENOENTwhenexperimental.bundledDevis enabled. The bundled dev client path now points to the packaged layout (#2384), by @lofczvp migratenow rejects a workspace member as its target. Before this release, it migrated the enclosing workspace instead. It now tells you to run the command from the workspace root (#2229), by @leslieeilselVP_NODE_VERSION=22and other partial versions now resolve to an exact Node.js release. This applies to shim-dispatched commands such asvp env exec node -v(#2411), by @jong-kyung- Managed
bunxshims now dispatch throughbun x.bunx <package>no longer starts a matching package script recursively. This applies to new Bun installations (#2151), by @liangmiQwQ - Managed Bun now selects the baseline build on x64 CPUs that do not have AVX2. Bun's standard builds require AVX2. Cached installations keep their current files (#2179), by @liangmiQwQ
- Generated Nushell env files now escape and normalize paths correctly. A
VP_HOMEpath that contains spaces or quotes now loads without an error (#2191), by @naokihaba vite-plus/test/browser-*type exports now add.jsextensions to relative shim specifiers. Those specifiers now resolve withNodeNextmodule resolution (#2360), by @eai04191- Tool-backed help is now consistent with upstream. An exact
vp <command> --helpshows the local themed help. A command with more arguments (vp test --help --coverage,vp test list --help) goes to the bundled tool. Deep help and subcommand help stay complete (#2345), by @liangmiQwQ - Vite Task diagnostics now print paths and working directories without Rust debug formatting. Vite+ no longer prints quoted paths or escaped Windows backslashes (vite-task#534), by @liangmiQwQ
- Broad workspace globs no longer find and run package scripts inside
node_modules(vite-task#539), by @jong-kyung
Refactor
- Rename the internal Rust crates from
vite_*tovp_*(#2335), by @fengmk2 - Move the shared CLI helpers into
utils(#2347), by @jong-kyung - Remove a redundant Vite reporter patch from core (#2355), by @jong-kyung
- Remove the duplicate export transformers in tools (#2358), by @jong-kyung
- Move the accent helpers into
crate::help(#2363), by @jong-kyung - Sort installed Node.js versions with node-semver (#2366), by @jong-kyung
- Remove the duplicate package-manager command resolution tests (#2393), by @jong-kyung
- Share the Vite config file order between the CLI code paths (#2409), by @jong-kyung
- Use the silent spinner again in the migrators (#2408), by @jong-kyung
Docs
- Document how to write custom Oxlint plugins in the lint guide (#2381), by @connorshea
- Document manual installation in the migrate guide (#2365), by @liangmiQwQ
- Add a View Prompt dialog for the setup prompt (#2400), by @dennybiasiolli
- Correct the documented
overridesbehavior to match Vite+ (#1942), by @liangmiQwQ - Explain
setup-vite-plus-actionversion pinning in the CI guide (#2359), by @fengmk2 - Correct the config and staged paths in the CLI
BUNDLING.md(#2334), by @dennybiasiolli - Remove unused performance data from the docs (#2392), by @jong-kyung
- Add the v0.2.8 release learnings to the release-manager skill (#2333), by @fengmk2
Chore
vite-plus v0.2.8: monorepo target resolution, breaking VP_* environment variable renames, and install fixes
Bare vp dev/build/preview/pack at a monorepo root now resolve a target package instead of silently running against the root, and three Vite+-specific environment variables move to the VP_* prefix without compatibility aliases. Two failures that broke Vite+ before it could run are also fixed: the crash on container images that ship no CA certificates, and the missing Rolldown binding under pnpm's global virtual store.
Breaking Changes
-
Rename three Vite+-specific environment variables to the
VP_*prefix, with no compatibility aliases, so the old names stop working (#2312), by @jong-kyung:Old New VITE_LOGVP_LOGVITE_GLOBAL_CLI_JS_SCRIPTS_DIRVP_GLOBAL_CLI_JS_SCRIPTS_DIRVITE_UPDATE_TASK_TYPESVP_UPDATE_TASK_TYPESUpdate any shell profile, CI job, or Dockerfile that sets the old names.
Highlights
- Resolve a target package for
vp dev,build,preview, andpackat a monorepo root: interactive shells get a fuzzy package picker, non-interactive runs list the candidates and exit 1 instead of building the root, and a new global-C <dir>flag or adefaultPackagesetting (a single directory, or an object mapping each of the four commands to its own directory) skips the prompt (#2031, #2305), by @fengmk2 - Stop aborting with exit 134 on container images that ship no CA certificates (Debian slim, distroless): the shared HTTP client now retries once with the bundled Mozilla root list, like Node's own bundled roots, and reports a real error instead of panicking when it still cannot be built (#2273, #2295), by @jbmusso and @fengmk2
- Resolve the bundled Rolldown binding through platform packages instead of an undeclared require back into
vite-plus, fixingCannot find module 'vite-plus/binding'under pnpmenable-global-virtual-storeand in standalone@voidzero-dev/vite-plus-coreinstalls (#2313), by @fengmk2 - Add
vp pm cifor reproducible frozen-lockfile installs, andvp pm patch/vp pm patch-commitfor editing dependencies in place on pnpm, bun, and Yarn Berry (npm and Yarn Classic warn and exit successfully) (#2082, #2308), by @forehalo and @jong-kyung
Features
- Upgrade the bundled toolchain: vite
8.1.5->8.2.0, rolldown1.2.0->1.2.2, oxlint1.75.0->1.76.0, oxfmt0.60.0->0.61.0, and Vite DevTools0.4.5->0.4.10(#2302, #2311), by @voidzero-guard[bot]. The new oxfmt and oxlint can flag code that passed before, so runvp fmtafter upgrading if your CI runsvp check. - Read the Node.js version from
.nvmrcwhen no other version source is present (#2244), by @BlankParticle - Support pnpm v12, which ships as a native binary: Vite+ now downloads the platform-specific
@pnpm/exe.*package and generates native shims, sopnpmandpnpxwork instead of failing to exec (#2289), by @jong-kyung - Verify the downloaded bun platform tarball against the registry
dist.integrityhash (#2310), by @jong-kyung
Fixes & Enhancements
- Let
vp configinstall the Git hook dispatcher without creating or modifying project hook scripts or staged-file configuration, so a custom.vite-hooks/pre-commitsurvives (#2280), by @TheAlexLichter - Nest immutable global package installs under
packages/<package>/<uuid>instead of using#in the path, which Node treated as a URL fragment and which broke dynamic imports inside installed packages (#2222), by @liangmiQwQ - Keep the recorded version spec on global installs, so
vp update -gfollows a dist tag or range instead of silently resolving back tolatest,vp outdated -greports Wanted versus Latest, andvp update -g --latestexplicitly moves packages back tolatest(#2249), by @TheAlexLichter - Stop deleting a managed Node.js runtime that another process is concurrently installing (#2248), by @shulaoda
- Preserve the real exit code when a spawned process is terminated by a signal on Unix (#2154), by @liangmiQwQ
- Honor an explicit
vp create --package-manageroutside monorepos instead of inheriting the manager from a non-monorepo ancestor directory (#2226), by @jong-kyung - Scaffold the
vite:librarytemplate into a directory that contains only.git, while still refusing to overwrite existing user files (#2287), by @RSS1102 - Render help for delegated commands from the local CLI, so
vp <command> --helpmatches the installed toolchain instead of drifting (#2184), by @liangmiQwQ - Resolve
typeAwareandtypeCheckoptions inherited through Oxlintextends, sovp check --no-lintruns and classifies type checking correctly (#2228), by @jong-kyung - Report
(no version)instead ofunknownwhen globally installing a local package that has noversionfield (#2232), by @liangmiQwQ
Refactor
- Rename the Git hooks environment variable to
VP_GIT_HOOKS, keepingVITE_GIT_HOOKSworking as a deprecated alias (#2195), by @dennybiasiolli - Consolidate the package manager infrastructure so typed command arguments are the source of truth for per-manager compatibility (#2140), by @forehalo
- Generate the Zed language settings from a language list instead of 17 near-identical blocks (#2294), by @jong-kyung
- Share the agent-file detect and write traversal helpers so both passes apply identical rules (#2296), by @jong-kyung
- Drop redundant clippy allow attributes in the global CLI (#2235), by @shulaoda
Docs
- Avoid a duplicate
vpinstallation step in the onboarding prompt (#2291), by @Arcadi4 - Recommend stacked pull requests for submitting changes (#2281), by @fengmk2
- Correct stale delegation comments in the global CLI (#2236), by @shulaoda
- Improve the release draft review guidance in the release-manager skill (#2285), by @wan9chi
Chore
- Stop emitting unmet peer warnings for the
vite-pluspeer of oxfmt and oxlint on every install (#2321), by @fengmk2 - Remove duplicate direct dependency declarations so each build dependency is owned by one workspace (#2318), by @jong-kyung
- Declare
@emnapipeers where@napi-rs/cliis used (#2319), by @jong-kyung - Exclude
rollup-testsfrom the workspace and updatebasic-ftp(#2322), by @fengmk2 - Remove unused
EnvConfigfields (#2320), by @jong-kyung - Remove the obsolete peer dependency merger tool (#2303), by @jong-kyung
- Stop the staging deploy from triggering on external pull requests (#2293), by @BlankParticle
- Kill the real
vpprocess, and kill it before its children, in theenv_install_interruptsnapshot test (#2299, #2316), by @fengmk2 - Suppress racy optimizer logs in the
vitest_browser_modesnapshot test (#2297), by @fengmk2 - Remove the obsolete auto-install environment from the snapshot tests (#2163), by @liangmiQwQ
Bundled Versions
| Tool | Version | Source |
|---|---|---|
| vite | 8.2.0 |
fa79f9a |
| rolldown | 1.2.2 |
872b98a |
| tsdown | 0.22.14 |
npm |
| vitest | 4.1.10 |
npm |
| oxlint | 1.76.0 |
npm ... |
vite-plus v0.2.7: Clearer guidance for built-in commands and scripts
This release points users to vpr <name> when a Vite+ built-in command and package script share a name, adds concurrency control to vp pack, and smooths migrations and package-manager setup.
Highlights
- Point users to
vpr <name>when a Vite+ built-in command andpackage.jsonscript share a name (#2259, #2262, #2265, vite-task#570), by @wan9chi - Add
--concurrencytovp packto limit parallel Rolldown builds, and update tsdown0.22.13->0.22.14and Vite DevTools0.4.2->0.4.5(#2233), by @voidzero-guard[bot] - Add read-only Svelte rune globals to migrated Oxlint overrides, preventing false
no-undeferrors (#2192), by @naokihaba - Install package managers from npm tarballs with nonstandard top-level directories, fixing Yarn 1.22.19 installation (#2264), by @TheAlexLichter
Fixes & Enhancements
- Prevent the Oxc language server from crashing when contributors open the Vite+ workspace in VS Code (#2245), by @jong-kyung
Docs
- Document the full procedure for removing Vite+ commit hooks (#2218), by @TheAlexLichter
- Document per-process and per-machine ways to disable Vite+ commit hooks without uninstalling them (#2230), by @TheAlexLichter
- Clarify when to use built-in
vpcommands versus package scripts throughvp runorvpr, including migration and agent guidance (#2255), by @wan9chi - Document GitLab CI/CD setup with the reusable
setup-vptemplate (#2258), by @naokihaba
Chore
- Run Semgrep security scans on pull requests and pushes to
main(#2223), by @Boshen - Re-enable Vitest browser-mode CLI snapshot coverage on every supported platform (#2275), by @wan9chi
- Stabilize Windows CLI snapshot tests for interrupted installs and browser port fallback (#2282), by @wan9chi
- Replace deprecated shared JavaScript and TypeScript VS Code settings with their current
js/ts.*names (#2246), by @jong-kyung
Bundled Versions
| Tool | Version | Source |
|---|---|---|
| vite | 8.1.5 |
5e7fe12 |
| rolldown | 1.2.0 |
03e1e34 |
| tsdown | 0.22.14 |
npm |
| vitest | 4.1.10 |
npm |
| oxlint | 1.75.0 |
npm |
| oxlint-tsgolint | 7.0.2001 |
npm |
| oxfmt | 0.60.0 |
npm |
Upgrade
vp upgradeFull Changelog: v0.2.6...v0.2.7
Published Packages
@voidzero-dev/vite-plus-core@0.2.7vite-plus@0.2.7
Installation
macOS/Linux:
curl -fsSL https://vite.plus | bashWindows:
irm https://vite.plus/ps1 | iexOr download and run vp-setup.exe from the assets below.
View the full commit: c17e1c3
Docker:
docker run --rm -it -v "$PWD:/app" -w /app ghcr.io/voidzero-dev/vite-plus:0.2.7 vp buildRun any vp command without installing it; see the Docker guide for more.
vite-plus v0.2.6: Stable type-aware linting and more reliable task caching
This release moves Vite+'s type-aware linting to the stable tsgolint 7 engine, updates the bundled build and formatting tools, strengthens vp run caching and workspace discovery, and removes the redundant vp build startup banner.
Highlights
- Move bundled type-aware linting to stable tsgolint 7, and update Vite
8.1.4->8.1.5, Rolldown1.1.5->1.2.0, tsdown0.22.7->0.22.13, Oxlint1.73.0->1.75.0, oxlint-tsgolint0.24.0->7.0.2001, and Oxfmt0.58.0->0.60.0(#2214), by @voidzero-guard[bot] - Improve
vp runreliability by caching much larger automatically tracked input sets, discovering npm workspaces whose patterns start with./, and providing more accurate error messages (vite-task#554, vite-task#547, vite-task#552, #2215), by @wan9chi and @liangmiQwQ - Remove the redundant Vite startup banner from
vp buildoutput and fail fast when upstream Vite changes invalidate Vite+ branding patches (#2200, #2205), by @liangmiQwQ
Refactor
- Deduplicate package-manager version gates in migration catalog handling (#2216), by @jong-kyung
- Unify static and generated CLI help under one document model and renderer (#2211), by @jong-kyung
- Reuse shared subprocess exit-status handling across global CLI command paths (#2196), by @jong-kyung
Docs
- Fix broken documentation anchors and add Migration Rules to the Migrate sidebar (#2203), by @charpeni
Chore
- Stabilize
vp createbuild-approval snapshots by removing package-age timing from those fixtures (#2224), by @wan9chi - Remove the temporary release workflow dispatch used for the previous release (#2193), by @wan9chi
- Share package-manager fixtures across CLI tests (#2197), by @jong-kyung
- Remove stale raw Oxlint and Oxfmt development dependencies that bypassed repository editor configuration (#2187), by @liangmiQwQ
Bundled Versions
| Tool | Version | Source |
|---|---|---|
| vite | 8.1.5 |
5e7fe12 |
| rolldown | 1.2.0 |
03e1e34 |
| tsdown | 0.22.13 |
npm |
| vitest | 4.1.10 |
npm |
| oxlint | 1.75.0 |
npm |
| oxlint-tsgolint | 7.0.2001 |
npm |
| oxfmt | 0.60.0 |
npm |
Upgrade
vp upgradeNew Contributors
Welcome @charpeni.
Full Changelog: v0.2.5...v0.2.6
Published Packages
@voidzero-dev/vite-plus-core@0.2.6vite-plus@0.2.6
Installation
macOS/Linux:
curl -fsSL https://vite.plus | bashWindows:
irm https://vite.plus/ps1 | iexOr download and run vp-setup.exe from the assets below.
View the full commit: cd064c6
Docker:
docker run --rm -it -v "$PWD:/app" -w /app ghcr.io/voidzero-dev/vite-plus:0.2.6 vp buildRun any vp command without installing it; see the Docker guide for more.
vite-plus v0.2.5: Cleaner environments and more reliable workflows
This release adds cleanup and package version commands, supports TypeScript 7 declaration generation, reduces the standalone binary size, and hardens task tracking, CLI output, package-manager routing, Docker workflows, and project scaffolding.
Highlights
- Add
vp env cleanto remove unused managed Node.js runtimes and package-manager caches (#2003), by @liangmiQwQ - Add
vp pm version, forwarding native version commands to npm, pnpm, Yarn, and Bun (#2127), by @jong-kyung - Add TypeScript 7 support to declaration generation and generated library projects with tsdown
0.22.7(#2104, #2168), by @wan9chi - Improve automatic task input tracking for Bun on macOS, Linux containers with constrained
/dev/shm, and Windows process images, reduce Windows backing-file allocation, and clarify task wait failures (vite-task#515, vite-task#518, vite-task#523, vite-task#524, vite-task#542, #2126, #2167), by @wan9chi - Prevent CLI diagnostics from truncating or panicking when inherited standard output or error is nonblocking (#2172, #2173), by @wan9chi
Fixes & Enhancements
- Reduce standalone
vpbinary sizes by about 5% on Linux and macOS and 19% on Windows (#2043), by @fengmk2 - Keep the Docker image non-root by default while allowing passwordless
sudofor Playwright browser dependencies and system packages (#2088), by @fengmk2 - Ignore
.envand.env.*in generated projects while keeping.env.exampletrackable (#2095), by @forehalo - Create
vp-use.cmdafter the Windows environment bin directory is ready and document its Command Prompt-only usage (#2128), by @liangmiQwQ - Render user-facing process statuses and paths without Rust debug wrappers (#2130), by @liangmiQwQ
- Make
vp dedupefall back toyarn installwith a warning on Yarn Classic (#2139), by @jong-kyung - Ensure package-manager child processes, including Bun, can always find the managed Node.js runtime (#2158), by @BlankParticle
Docs
- Update the release-manager post-release guidance (#2096), by @wan9chi
- Add Windows to the Namespace sponsor credit (#2108), by @fengmk2
- Document installer and runtime environment variables, registry settings, TLS options, and precedence rules (#2114), by @yukinoshi
- Mark shell examples in
CONTRIBUTING.mdas Bash code blocks (#2159), by @BlankParticle
Chore
- Assign prepared release PRs to the workflow actor (#2094), by @wan9chi
- Complete the PTY snapshot migration and harden the runner, fixtures, release-version redaction, registry teardown, timeouts, and Linux parallelism (#2071, #2080, #2084, #2099, #2102, #2103, #2107, #2109, #2115, #2117, #2118, #2119, #2120, #2121, #2131, #2132, #2134, #2137, #2138, #2141, #2143, #2145, #2182), by @fengmk2 and @wan9chi
- Expose Vite+ managed binaries consistently inside snapshot fixtures (#2110), by @liangmiQwQ
- Exclude PTY snapshot configuration from Vitest discovery and remove the legacy snapshot infrastructure (#2135, #2146), by @jong-kyung
- Modernize Windows runners, registry bridge publishing, native size reporting, merge-base comparisons, and package-manager installation CI (#2083, #2100, #2105, #2106, #2112, #2133), by @fengmk2
- Verify that created monorepo libraries emit declarations in CI (#2171), by @wan9chi
Bundled Versions
| Tool | Version | Source |
|---|---|---|
| vite | 8.1.4 |
a477454 |
| rolldown | 1.1.5 |
f09947a |
| tsdown | 0.22.7 |
npm |
| vitest | 4.1.10 |
npm |
| oxlint | 1.73.0 |
npm |
| oxlint-tsgolint | 0.24.0 |
npm |
| oxfmt | 0.58.0 |
npm |
Upgrade
vp upgradeNew Contributors
Welcome @yukinoshi and @BlankParticle.
Full Changelog: v0.2.4...v0.2.5
Published Packages
@voidzero-dev/vite-plus-core@0.2.5vite-plus@0.2.5
Installation
macOS/Linux:
curl -fsSL https://vite.plus | bashWindows:
irm https://vite.plus/ps1 | iexOr download and run vp-setup.exe from the assets below.
View the full commit: 93dc59a
Docker:
docker run --rm -it -v "$PWD:/app" -w /app ghcr.io/voidzero-dev/vite-plus:0.2.5 vp buildRun any vp command without installing it; see the Docker guide for more.
vite-plus v0.2.4: Vitest security hotfix
This hotfix updates the bundled Vitest Browser Mode packages to 4.1.10, which includes the fix for GHSA-p63j-vcc4-9vmv. The advisory is critical and affects @vitest/browser <=4.1.9.
Highlights
- Critical Vitest Browser Mode advisory fixed: bundled
vitestand@vitest/browser*move from4.1.9to4.1.10, addressing GHSA-p63j-vcc4-9vmv, where provider commands could bypass the file access permission gate (#2089), by @voidzero-guard[bot]
Chore
Bundled Versions
| Tool | Version | Source |
|---|---|---|
| vite | 8.1.3 |
578ffb8 |
| rolldown | 1.1.4 |
6cbd233 |
| tsdown | 0.22.3 |
npm |
| vitest | 4.1.10 |
npm |
| oxlint | 1.72.0 |
npm |
| oxlint-tsgolint | 0.24.0 |
npm |
| oxfmt | 0.57.0 |
npm |
Upgrade
vp upgradeNew Contributors
No new contributors in this release.
Full Changelog: v0.2.3...v0.2.4
Published Packages
@voidzero-dev/vite-plus-core@0.2.4vite-plus@0.2.4
Installation
macOS/Linux:
curl -fsSL https://vite.plus | bashWindows:
irm https://vite.plus/ps1 | iexOr download and run vp-setup.exe from the assets below.
Docker:
docker run --rm -it -v "$PWD:/app" -w /app ghcr.io/voidzero-dev/vite-plus:0.2.4 vp buildRun any vp command without installing it; see the Docker guide for more.
vite-plus v0.2.3: config extraction, create, and vp run reliability fixes
A patch release that fixes static config extraction for vite.config.ts files whose defineConfig comes from a preset or custom wrapper (no longer misread as Vite+'s own), fixes vp create for org templates on registries that strip custom package fields, cleans up terminal output after Ctrl-C during vp run, and updates bundled Vite to 8.1.3.
Highlights
- Custom
VP_HOMEis honored on every run: the globalvpnow respects a user-setVP_HOMEfor its home directory instead of falling back to~/.vite-plus, and persists it in the generated env files, so a custom install location no longer produces multiple instances or unusable packages (#2029), by @liangmiQwQ
Features
- Upgrade bundled Vite from
8.1.2to8.1.3(inlined CSS after the shebang line, CSS preload for nested dynamic imports, SSR stacktrace column fix) (#2042), by @voidzero-guard[bot]
Fixes & Enhancements
vp runno longer misreads avite.config.tswhen itsdefineConfigcomes from a preset or a custom wrapper instead ofvite-plusorvite. Such configs are now evaluated at runtime rather than assumed to be Vite+'s own, so projects that use them no longer wrongly reportTask "build" not found(#2060, #2075), by @liangmiQwQ and @fengmk2- Killing a
vp runtask with Ctrl-C no longer leaves odd OSC escape sequences in the terminal;vpdefers its own Ctrl-C handling until the child process exits (#2079), by @forehalo vp migrate: rewriting apackage.jsonprettier script now emits a single--check, so scripts that combined--checkwith--list-different/-l/-cno longer produce a duplicatedvp fmt --check --check(#2044), by @shulaodavp create @org:name: read the org template catalog (createConfig) from the published tarball when the registry (e.g. GitHub Packages) strips custom fields from packument metadata (#2063), by @hiro-daikinvp run: missing env vars requested through@voidzero-dev/vite-task-clientnow returnundefinedinstead ofnull, preserving Vite productionNODE_ENVsemantics when builds run throughvp run(vite-task#508, via #2076), by @wan9chi
Refactor
static_config: drop the unreachablevite.config.jsonbranch (#2045), and remove unused exported CLI helpers (#2046), by @shulaoda
Docs
- Update the announcement links and callout for the beta release (#2027), remove the stale
Dockerfile.alpinecomment (#2068), by @fengmk2 - Add the missing
pnpm-workspace.yamlto the docs Dockerfile (#2059), by @wan-kong - Refresh the root agent guide (#2072), by @jong-kyung
Chore
- Cross-compile Windows tests and CLI binaries on Linux with cargo-xwin (#1824), install local vite-plus builds through a local npm registry (#2021), fast docs format check for docs-only PRs (#2028), pack local dirs for the registry bridge instead of pkg.pr.new (#2038), remove the stale create workflow updater (#2061), and add PTY-based interactive CLI snapshot tests (#2052), by @fengmk2
- Cache
vp runoutput for docs builds (#2006), by @wan9chi - Remove legacy completion cleanup (#2050), by @nekomoyi
- Update the crate-ci/typos action (#2039) and GitHub Actions (#2055, #1905), by @renovate[bot]
- Refresh the Node.js release keyring (#2058) and the docs trusted-stack stats (#2064), by @voidzero-guard[bot]
Bundled Versions
| Tool | Version | Source |
|---|---|---|
| vite | 8.1.3 |
578ffb8 |
| rolldown | 1.1.4 |
6cbd233 |
| tsdown | 0.22.3 |
npm |
| vitest | 4.1.9 |
npm |
| oxlint | 1.72.0 |
npm |
| oxlint-tsgolint | 0.24.0 |
npm |
| oxfmt | 0.57.0 |
npm |
Upgrade
vp upgradeNew Contributors
@wan-kong and @hiro-daikin made their first contributions.
Full Changelog: v0.2.2...v0.2.3
Published Packages
@voidzero-dev/vite-plus-core@0.2.3vite-plus@0.2.3
Installation
macOS/Linux:
curl -fsSL https://vite.plus | bashWindows:
irm https://vite.plus/ps1 | iexOr download and run vp-setup.exe from the assets below.
Docker:
docker run --rm -it -v "$PWD:/app" -w /app ghcr.io/voidzero-dev/vite-plus:0.2.3 vp buildRun any vp command without installing it; see the Docker guide for more.
vite-plus v0.2.2: Vite+ Beta
Vite+ is now in Beta: stable and ready for production adoption, fully open source under MIT. Read the announcement to see what Vite+ is about and where it is headed: Announcing Vite+ Beta.
On top of the Beta milestone, this release brings cross-version upgrades via vp migrate, an official Docker toolchain image on GHCR, zero-config runner-aware vp build caching, and PGP-verified managed Node.js downloads.
Highlights
vp migrateupgrades existing Vite+ projects across versions: previous release notes told users not to runvp migratefor upgrades. It now runs from the global CLI when the local one is older, re-pinsvite-plusand thevite->@voidzero-dev/vite-plus-corealias across dependencies, overrides/resolutions, and catalogs in every workspace package, alignsvitest/@vitest/*by actual usage, and defaults to a version-only upgrade (pass--fullto also run the first-time setup bucket: hooks, editor, agent files, lint migration) (#1891), by @fengmk2- Official Vite+ Docker toolchain image:
ghcr.io/voidzero-dev/vite-plusbundlesvpplus a native build toolchain ondebian:bookworm-slim(amd64/arm64, non-root). Sincevpprovisions the exact Node.js from.node-version, one image builds any project, and a documented multi-stage build copies the resolved Node.js into a small vp-free runtime stage (#1944), by @fengmk2 - Zero-config
vp buildcaching via runner-aware Vite: Vite reports its inputs, outputs, and tracked env reads to thevprunner over the new@voidzero-dev/vite-task-clientIPC (vite#22453), sovp buildcaches correctly with no hand-written cache config: outputs are tracked and restored automatically, and a changedVITE_*env var invalidates the cache and is named in the cache-miss message (#1774), by @wan9chi - PGP-verified Node.js downloads: installing a managed Node.js now verifies the release's clearsigned
SHASUMS256.txt.ascagainst the vendored Node.js release keyring (pure Rust, nogpgrequired) before trusting any checksum, so a tampered archive is rejected before install; unsigned sources (musl builds, custom mirrors) fall back to checksum-only verification (#1848), by @fengmk2
Features
vp check: acheckblock invite.config.ts(check.fmt/check.lint) can make plainvp checkskip formatting or linting by default, mirroring--no-fmt/--no-lint; standalonevp fmt/vp lintand git hooks are unaffected, and anote:line keeps the config-based skip discoverable (#1981), by @fengmk2vp env list-remote: highlight installed versions (color, or a*prefix when piped) and label the project-resolvedcurrentand globaldefaultversions;--jsongainsinstalled/current/defaultfields (#1907), by @semimikohvprships as avite-pluspackage bin, so thevp runshorthand works on clean installs without global PATH shims (Vercel build image, generic CI runners) (#1988), by @kvnwolf- Vite Task:
dependsOncan select tasks from dependency packages, e.g.dependsOn: [{ "task": "build", "from": "dependencies" }](vite-task#479), by @wan9chi - Vite Task: a task's
env/untrackedEnvglob patterns support!negation (e.g.["VITE_*", "!VITE_SECRET"]) (vite-task#425), and an env-caused cache miss now names the variable inline, e.g.cache miss: env 'NODE_ENV' changed(vite-task#438), by @wan9chi - Upgrade upstream dependencies: vite
8.0.16 -> 8.1.2, rolldown1.1.1 -> 1.1.4, oxlint1.70.0 -> 1.72.0, oxfmt0.55.0 -> 0.57.0, oxlint-tsgolint0.23.0 -> 0.24.0, and the oxc toolchain0.136.0 -> 0.138.0(#1924, #1989, #2000, #2009), by @voidzero-guard[bot]
Fixes & Enhancements
- Windows:
vp runno longer hangs CI when anode_modules/.bin.cmdshim is routed through PowerShell; the npm/pnpm/yarn.ps1wrappers read stdin and block forever on a non-TTY pipe, so the PowerShell rewrite is now skipped when stdin is not an interactive terminal (vite-task#491, via #1973), by @fengmk2 - Vite Task: the task cache is stored in a per-schema-version directory (e.g.
node_modules/.vite/task-cache/v13/), so switching between branches that pin different Vite+ versions no longer fails withUnrecognized database version(vite-task#433), by @fengmk2 - Vite Task: env values in cache fingerprints are stored only as SHA-256 digests and env cache-miss details report names without values (vite-task#455); prefix env assignments like
PATH=... commandnow affect executable lookup during planning (vite-task#440);package.json/pnpm-workspace.yamlfiles with a UTF-8 BOM parse correctly (vite-task#424), by @wan9chi vp upgrade: run the pinned pnpm with a managed Node.js LTS directly instead of re-enteringvp install, so an incompatible session/project/system runtime can no longer make pnpm skip optional native binaries and leave the upgraded CLI broken (#1900), by @liangmiQwQ- Global package installs: each install writes to an immutable
packages/<name>#<uuid>prefix that is activated via metadata after npm succeeds, so an interrupted reinstall can no longer leave the active package unavailable (#1906), and stale interrupted-install directories are swept with file-lock protection for concurrent installs (#1945), by @liangmiQwQ lazyPlugins(): skip plugin factories only while config metadata is being resolved instead of keying offVP_COMMAND, so builds spawned undervp run/vp execkeep the user's plugins andvp formatno longer loads them (#1939), by @fengmk2vp migrate(pnpm): add a directvitedevDep aliased to the core override wherevervite-plusis depended on, so vitest'svitepeer binds to@voidzero-dev/vite-plus-coreinstead of pulling in a second upstream vite that broke thevp testcache (#1933), by @fengmk2vp pack: bundle@tsdown/exeand@tsdown/cssinto core so--exeand CSS bundling work without a resolvable top-leveltsdown; the nativelightningcssbecomes an optional peer loaded lazily with an actionable error (#1919), by @fengmk2vp env: invalidate stale shim resolve cache entries when the project's Node.js version source changes (#1951), by @jong-kyung- Node shim: when the project declares npm via
packageManager/devEngines.packageManager, child processes spawned fromnoderesolve the managed npm instead of the Node-bundled one (#1938);vp env whichreports bins linked by an interceptednpm install -g(e.g.tsc) instead of "not found" (#1968); bins with uppercase names (e.g.vitePlus) dispatch correctly (#1963), by @liangmiQwQ vp-setup: pass the configured npm registry to the inner pnpm install so setup works behind custom registries (#1795), by @daflyinbed- Native binding: declare the platform packages' true ABI floor
engines.node >=20.0.0so engine-strict package managers (pnpm) no longer skip the optional native dependency and fail withCannot find native bindingwhen a consumer's Node floor lands in a product-policy gap (#1993), by @fengmk2 vp create: rungit initwithout creating an initial commit, so commitlint-configured templates no longer reject the hardcoded message and template placeholders are not baked into history (#2008), by @forehalovp staged --debug: inline the bundled lint-staged version so debug logging no longer crashes reading apackage.jsonthat does not exist in the bundle (#1925), by @rokuosan- Installer: retry downloads truncated mid-body in
HttpClient::get_bytes(the platform-tarball path forvp upgradeand the standalone installer) (#1940), and clean up the temp dir when a package-manager install fails instead of leaking.tmpXXXXdirectories (#1949), by @shulaoda - Windows/msys: normalize backslashes in the
env.fishfallback path (#1954), by @Aalivexy install.ps1: detect the missing VC++ runtime (0xC0000135) and print VC++ Redistributable guid...