Skip to content

release: v0.3.0: XDG install layout, tsup project migration, and bun 1.4 support - #2536

Open
voidzero-guard[bot] wants to merge 2 commits into
mainfrom
release/v0.3.0
Open

release: v0.3.0: XDG install layout, tsup project migration, and bun 1.4 support#2536
voidzero-guard[bot] wants to merge 2 commits into
mainfrom
release/v0.3.0

Conversation

@voidzero-guard

@voidzero-guard voidzero-guard Bot commented Aug 23, 2026

Copy link
Copy Markdown
Contributor

Release vite-plus v0.3.0: a new XDG install layout, tsup project migration, and bun 1.4 support.

Fresh Unix and Windows installs now use split XDG directories. They no longer use a single ~/.vite-plus root. vp migrate now converts tsup projects. vp now sends bun 1.4 package-manager commands to bun directly. This release also makes the published npm package about half its previous size. The upgrade check no longer delays each command.

Breaking Changes

  • Fresh installs now use a split XDG directory layout. Existing ~/.vite-plus installs keep their current layout, and Vite+ does not move their files. VP_HOME still selects the single-root layout (#2346), by @forehalo

    Category Unix default Windows default Single-root (VP_HOME)
    bin ~/.local/share/vite-plus/bin %LOCALAPPDATA%\vite-plus\bin <root>/bin
    data ~/.local/share/vite-plus %LOCALAPPDATA%\vite-plus\data <root>
    cache ~/.cache/vite-plus %LOCALAPPDATA%\vite-plus\cache <root>/cache
    config ~/.config/vite-plus %APPDATA%\vite-plus <root>
    state ~/.local/state/vite-plus %LOCALAPPDATA%\vite-plus\state <root>

    A fresh install is a new machine, a new container image, or a CI job that installs into a clean home. After a fresh install, change the new bin directory in each location that puts vp on PATH:

    • your shell profile
    • the PATH export of your CI job
    • your Dockerfile

    VP_BIN_DIR, VP_DATA_DIR, and VP_CACHE_DIR each replace one category. On Unix, Vite+ also reads the XDG_* variables. Vite+ ignores a relative value.

Highlights

  • vp migrate now converts tsup projects. It replaces the tsup dependency and script with vp pack. It also changes tsup.config.ts to a tsdown.config.ts that imports from vite-plus/pack (#2434), by @KTrain5169
  • vp now sends bun 1.4 package-manager commands to bun directly. It no longer uses a replacement for them. An earlier bun version keeps the previous behavior, and its message now gives the bun version that the command needs (#2513), by @jong-kyung
    • vp dedupe runs bun dedupe, including --check
    • vp pm prune runs bun prune
    • vp pm audit --fix runs bun audit fix
    • vp add, vp remove, and vp update send --filter to bun
    • vp add --save-catalog sends --catalog to bun
  • Shell integrations now accept the global -C flag. vp -C <dir> env use changes the environment of your current shell. The -C<dir> and -C=<dir> forms also work. In zsh, Fish, Nushell, and PowerShell, vpr completion keeps the working directory when it changes the command to vp run (#2508), by @simulacre7
  • The published vite-plus npm package is about half its previous size, 1.05 MB to 516 kB. The package now contains only Markdown documentation. It no longer contains the full VitePress workspace (#2480), by @liangmiQwQ
  • 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

Features

  • Upgrade the bundled toolchain: vite 8.2.1 -> 8.2.2, rolldown 1.2.3 -> 1.2.5, vitest 4.1.10 -> 4.1.11, oxlint 1.77.0 -> 1.79.0, oxfmt 0.62.0 -> 0.64.0, the oxc packages and crates 0.143.0 -> 0.146.0, and @vitejs/devtools 0.4.12 -> 0.5.2 (#2443, #2500, #2504, #2519, #2532), by @voidzero-guard[bot]. oxfmt and oxlint both changed version. They can report problems in code that passed before. Run vp fmt after you upgrade if your CI runs vp check
  • vp toolchain draws its tree with Unicode glyphs. It no longer uses ASCII connectors (#2442), by @liangmiQwQ

Fixes & Enhancements

  • Bare vp dev, vp build, vp preview, and vp pack now select their target in a workspace by these rules (#2530, #2533), by @fengmk2
    • An argument that you give is explicit intent. The command runs in the current directory.
    • A root intent signal selects the workspace root. The signals are a declared root, build, input, environments, or appType field, or a source index.html.
    • A workspace with no member packages runs in the root.
    • In all other conditions, the picker shows the root as . in the last row.
  • vp up no longer changes "vite": "catalog:" to a version alias under pnpm. Catalog references now stay unchanged during an update. Run vp migrate once 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, or implode (#2522), by @jong-kyung
  • vp up -g reads global package versions in the global mode of npm. A project-level setting no longer makes the lookup fail and hide an available update (#2438), by @jong-kyung
  • vp config does not look for the Git hook location when HUSKY=0, VP_GIT_HOOKS=0, or VITE_GIT_HOOKS=0 disables hooks. A container without Git now works (#2458), by @tarikermis
  • vp create vite:monorepo starts Git one time. It no longer asks two times and runs git init two times (#2417), by @jong-kyung
  • vp create does not ask about pre-commit hooks when you refuse Git initialization (#2477), by @liangmiQwQ
  • vp pack --no-config does not read the Vite config. A local vite.config.* file, its pack options, and its hooks no longer run (#2486), by @jong-kyung
  • vp pack --help shows the supported --no-config options (#2487), by @jong-kyung
  • vp staged --no-concurrent runs again. It no longer sets concurrency to 0. Vite+ now rejects an invalid concurrency value and an invalid negated string value (#2501), by @RSS1102
  • vp reads about 450 kB less JavaScript at start. It loads the --init and --migrate helpers only when a command needs them (#2490), by @jong-kyung
  • The standalone vp binary 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
  • vp env use in cmd keeps its failure status (#2496), by @fengmk2
  • vp exec resolves a relative PATH entry such as ./node_modules/.bin against the working directory of the command (#2350), by @RSS1102
  • Older GitLab setup-vp templates continue to work. The installer selects the legacy layout for them. A template can select the new layout with VP_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 current junction (#2505), by @fengmk2
  • install.sh does not show shell configuration warnings when CI=true (#2511), by @fengmk2
  • vp implode removes a long path and a locked path on Windows. A native helper does this work, and it retries the operation and records a failure (#2510), by @fengmk2
  • A Windows trampoline sidecar must have a vite-plus-shim-v1 header. Vite+ rejects a sidecar without that header. It no longer tries to identify the layout (#2526), by @fengmk2

Docs

  • Document the vite-plus/test import surface (#2413), by @jong-kyung
  • Add vp hooks to the README command list (#2446), by @lyzno1
  • Add vp_pm_cli_macros and vp_toolchain to the repo map (#2524), by @jong-kyung
  • Align the command-routing RFC with the current global CLI (#2528), by @jong-kyung
  • Fold v0.2.9 release learnings into the release-manager skill (#2429), by @fengmk2

Chore

Bundled Versions

Tool Version Source
vite 8.2.2 de1111a
rolldown 1.2.5 84c904b
tsdown 0.22.14 npm
vitest 4.1.11 npm
oxlint 1.79.0 npm
oxlint-tsgolint 7.0.2001 npm
oxfmt 0.64.0 npm

Upgrade

vp upgrade

New Contributors

@simulacre7

Full Changelog: v0.2.9...v0.3.0


Merging this PR will trigger the release workflow.

@netlify

netlify Bot commented Aug 23, 2026

Copy link
Copy Markdown

Deploy Preview for viteplus-preview canceled.

Name Link
🔨 Latest commit 7ebf81e
🔍 Latest deploy log https://app.netlify.com/projects/viteplus-preview/deploys/6a8aa3bcb577db00081b1c81

NAPI bakes the package.json version into binding/index.cjs version
checks. The prepare_release workflow bumps package.json but does not
regenerate this file, so the CI build's regeneration step produces a
diff that the post-build no-unexpected-changes guard rejects.
@fengmk2 fengmk2 changed the title release: v0.3.0 release: v0.3.0: XDG install layout, tsup migration, and bun 1.4 support Aug 23, 2026
@fengmk2 fengmk2 added the preview-build Publish this PR's commits to the registry bridge as preview builds label Aug 23, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Native binary sizes (7ebf81e)

Final release artifacts built by the canonical build-upstream and build-windows-cli actions.

Artifact Format Base PR Change
vp (Linux x64) Binary 10.74 MiB 10.74 MiB 0 B (0.00%)
vp (Linux x64) gzip -9 4.65 MiB 4.65 MiB +43 B (+0.00%)
NAPI (Linux x64) Binary 32.20 MiB 32.20 MiB 0 B (0.00%)
NAPI (Linux x64) gzip -9 12.69 MiB 12.69 MiB -666 B (-0.01%)
vp (macOS ARM64) Binary 8.03 MiB 8.03 MiB -16 B (-0.00%)
vp (macOS ARM64) gzip -9 4.05 MiB 4.05 MiB -3.03 KiB (-0.07%)
NAPI (macOS ARM64) Binary 39.80 MiB 39.80 MiB 0 B (0.00%)
NAPI (macOS ARM64) gzip -9 16.98 MiB 16.98 MiB +654 B (+0.00%)
vp (Windows x64) Binary 8.63 MiB 8.63 MiB 0 B (0.00%)
vp (Windows x64) gzip -9 3.77 MiB 3.77 MiB +1.24 KiB (+0.03%)
NAPI (Windows x64) Binary 27.03 MiB 27.03 MiB 0 B (0.00%)
NAPI (Windows x64) gzip -9 10.75 MiB 10.75 MiB -1.20 KiB (-0.01%)
Trampoline (Windows x64) Binary 214.00 KiB 214.00 KiB 0 B (0.00%)
Trampoline (Windows x64) gzip -9 103.20 KiB 103.20 KiB -1 B (-0.00%)
Installer (Windows x64) Binary 4.50 MiB 4.50 MiB 0 B (0.00%)
Installer (Windows x64) gzip -9 2.11 MiB 2.11 MiB +1 B (+0.00%)

@github-actions

Copy link
Copy Markdown
Contributor

Registry bridge build (7ebf81e)

This commit build is published to the registry bridge, which serves these as ordinary npm versions (every other package proxies to npmjs):

Package Version
vite-plus 0.0.0-commit.7ebf81e43af581194844e8fe18f65ed2eb544642
@voidzero-dev/vite-plus-core 0.0.0-commit.7ebf81e43af581194844e8fe18f65ed2eb544642

Install the Vite+ CLI built from this commit, then migrate a project:

# macOS / Linux
curl -fsSL https://raw.githubusercontent.com/voidzero-dev/vite-plus/7ebf81e43af581194844e8fe18f65ed2eb544642/packages/cli/install.sh | VP_PR_VERSION=2536 bash
# Windows (PowerShell)
$env:VP_PR_VERSION="2536"; irm https://raw.githubusercontent.com/voidzero-dev/vite-plus/7ebf81e43af581194844e8fe18f65ed2eb544642/packages/cli/install.ps1 | iex

Or 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.7ebf81e43af581194844e8fe18f65ed2eb544642" --registry "https://registry-bridge.viteplus.dev/"

After installing, upgrade the current project's vite-plus to this test build with:

vp migrate

Or 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.7ebf81e43af581194844e8fe18f65ed2eb544642",
    "vite": "npm:@voidzero-dev/vite-plus-core@0.0.0-commit.7ebf81e43af581194844e8fe18f65ed2eb544642"
  }
}

@github-actions

Copy link
Copy Markdown
Contributor

🐳 Docker preview image

Built from this PR's registry bridge build:

Image Compressed size
ghcr.io/voidzero-dev/vite-plus:pr-2536 236MB
# remove any stale local copy from a previous run, then pull fresh
docker rmi ghcr.io/voidzero-dev/vite-plus:pr-2536 2>/dev/null; docker pull ghcr.io/voidzero-dev/vite-plus:pr-2536

Quick check:

docker run --rm ghcr.io/voidzero-dev/vite-plus:pr-2536 vp --version

See docs/guide/docker.md for usage.

@fengmk2 fengmk2 changed the title release: v0.3.0: XDG install layout, tsup migration, and bun 1.4 support release: v0.3.0: XDG install layout, tsup project migration, and bun 1.4 support Aug 23, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

preview-build Publish this PR's commits to the registry bridge as preview builds

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant